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

html {
  tab-size: 4;
  line-height: 1.15;
  -webkit-text-size-adjust: 100%;
}

body {
  margin: 0;
  font-family: system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji";
}

b {
  font-weight: bolder;
}

code,
pre {
  font-family: ui-monospace, SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace;
  font-size: 1em;
}

small {
  font-size: 80%;
}

table {
  text-indent: 0;
  border-color: inherit;
}

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

button {
  text-transform: none;
}

button,
[type=button],
[type=reset],
[type=submit] {
  -webkit-appearance: button;
}

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

:-moz-focusring {
  outline: 1px dotted ButtonText;
}

:-moz-ui-invalid {
  box-shadow: none;
}

progress {
  vertical-align: baseline;
}

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

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

::-webkit-search-decoration {
  -webkit-appearance: none;
}

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

h1,
h2,
h3,
h4,
p,
pre {
  margin: 0;
}

button {
  background-color: transparent;
  background-image: none;
}

ul {
  list-style: none;
  margin: 0;
  padding: 0;
}

html {
  font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
  line-height: 1.5;
}

body {
  font-family: inherit;
  line-height: inherit;
}

*,
::before,
::after {
  box-sizing: border-box;
  border-width: 0;
  border-style: solid;
  border-color: currentColor;
}

img {
  border-style: solid;
}

textarea {
  resize: vertical;
}

input::placeholder,
textarea::placeholder {
  opacity: 1;
  color: #9ca3af;
}

button,
[role=button] {
  cursor: pointer;
}

:-moz-focusring {
  outline: auto;
}

table {
  border-collapse: collapse;
}

h1,
h2,
h3,
h4 {
  font-size: inherit;
  font-weight: inherit;
}

a {
  color: inherit;
  text-decoration: inherit;
}

button,
input,
textarea {
  padding: 0;
  line-height: inherit;
  color: inherit;
}

pre,
code {
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
}

img,
svg,
video,
canvas,
audio,
object {
  display: block;
  vertical-align: middle;
}

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

[hidden] {
  display: none;
}

*, ::before, ::after {
  --tw-translate-x: 0;
  --tw-translate-y: 0;
  --tw-rotate: 0;
  --tw-skew-x: 0;
  --tw-skew-y: 0;
  --tw-scale-x: 1;
  --tw-scale-y: 1;
  --tw-transform: translateX(var(--tw-translate-x)) translateY(var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
  --tw-border-opacity: 1;
  border-color: rgba(229, 231, 235, var(--tw-border-opacity));
  --tw-ring-offset-shadow: 0 0 #0000;
  --tw-ring-shadow: 0 0 #0000;
  --tw-shadow: 0 0 #0000;
}

button:focus {
  outline: 2px solid transparent;
  outline-offset: 2px;
}

a {
  outline: 2px solid transparent;
  outline-offset: 2px;
}

.container {
  width: 100%;
}

@media (min-width: 640px) {
  .container {
    max-width: 640px;
  }
}

@media (min-width: 768px) {
  .container {
    max-width: 768px;
  }
}

@media (min-width: 1024px) {
  .container {
    max-width: 1024px;
  }
}

@media (min-width: 1280px) {
  .container {
    max-width: 1280px;
  }
}

@media (min-width: 1576px) {
  .container {
    max-width: 1576px;
  }
}

.absolute {
  position: absolute !important;
}

.relative {
  position: relative !important;
}

.bottom-4 {
  bottom: 1rem !important;
}

.top-4 {
  top: 1rem !important;
}

.left-4 {
  left: 1rem !important;
}

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

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

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

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

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

.z-10 {
  z-index: 10 !important;
}

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

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

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

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

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

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

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

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

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

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

.mx-10 {
  margin-left: 2.5rem !important;
  margin-right: 2.5rem !important;
}

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

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

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

.mt-48 {
  margin-top: 12rem !important;
}

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

.ml-4 {
  margin-left: 1rem !important;
}

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

.ml-16 {
  margin-left: 4rem !important;
}

.mt-64 {
  margin-top: 16rem !important;
}

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

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

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

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

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

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

.ml-3 {
  margin-left: 0.75rem !important;
}

.mr-3 {
  margin-right: 0.75rem !important;
}

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

.mr-4 {
  margin-right: 1rem !important;
}

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

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

.flex {
  display: flex !important;
}

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

.table {
  display: table !important;
}

.grid {
  display: grid !important;
}

.hidden {
  display: none !important;
}

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

.h-3 {
  height: 0.75rem !important;
}

.h-32 {
  height: 8rem !important;
}

.h-28 {
  height: 7rem !important;
}

.h-11 {
  height: 2.75rem !important;
}

.h-40 {
  height: 10rem !important;
}

.h-36 {
  height: 9rem !important;
}

.h-60 {
  height: 15rem !important;
}

.max-h-40 {
  max-height: 10rem !important;
}

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

.w-3\/4 {
  width: 75% !important;
}

.w-1\/4 {
  width: 25% !important;
}

.w-80 {
  width: 20rem !important;
}

.w-32 {
  width: 8rem !important;
}

.w-12 {
  width: 3rem !important;
}

.w-max {
  width: max-content !important;
}

.w-1\/2 {
  width: 50% !important;
}

.w-28 {
  width: 7rem !important;
}

.w-11 {
  width: 2.75rem !important;
}

.w-36 {
  width: 9rem !important;
}

.w-40 {
  width: 10rem !important;
}

.w-48 {
  width: 12rem !important;
}

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

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

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

.transform {
  transform: var(--tw-transform) !important;
}

.cursor-pointer {
  cursor: pointer !important;
}

.grid-cols-2 {
  grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

.rounded-full {
  border-radius: 9999px !important;
}

.rounded-3xl {
  border-radius: 1.5rem !important;
}

.rounded-2xl {
  border-radius: 1rem !important;
}

.rounded-lg {
  border-radius: 0.5rem !important;
}

.rounded-xl {
  border-radius: 0.75rem !important;
}

.rounded-md {
  border-radius: 0.375rem !important;
}

.border {
  border-width: 1px !important;
}

.border-2 {
  border-width: 2px !important;
}

.border-solid {
  border-style: solid !important;
}

.border-gray-200 {
  --tw-border-opacity: 1 !important;
  border-color: rgba(229, 231, 235, var(--tw-border-opacity)) !important;
}

.border-black {
  --tw-border-opacity: 1 !important;
  border-color: rgba(0, 0, 0, var(--tw-border-opacity)) !important;
}

.border-opacity-30 {
  --tw-border-opacity: 0.3 !important;
}

.bg-gray-300 {
  --tw-bg-opacity: 1 !important;
  background-color: rgba(209, 213, 219, var(--tw-bg-opacity)) !important;
}

.bg-opacity-20 {
  --tw-bg-opacity: 0.2 !important;
}

.object-cover {
  object-fit: cover !important;
}

.object-center {
  object-position: center !important;
}

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

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

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

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

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

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

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

.px-10 {
  padding-left: 2.5rem !important;
  padding-right: 2.5rem !important;
}

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

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

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

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

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

.px-7 {
  padding-left: 1.75rem !important;
  padding-right: 1.75rem !important;
}

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

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

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

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

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

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

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

.text-xl {
  font-size: 1.25rem !important;
  line-height: 1.75rem !important;
}

.text-lg {
  font-size: 1.125rem !important;
  line-height: 1.75rem !important;
}

.text-base {
  font-size: 1rem !important;
  line-height: 1.5rem !important;
}

.text-xs {
  font-size: 0.75rem !important;
  line-height: 1rem !important;
}

.text-2xl {
  font-size: 1.5rem !important;
  line-height: 2rem !important;
}

.text-3xl {
  font-size: 1.875rem !important;
  line-height: 2.25rem !important;
}

.text-sm {
  font-size: 0.875rem !important;
  line-height: 1.25rem !important;
}

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

.font-semibold {
  font-weight: 600 !important;
}

.tracking-widest {
  letter-spacing: 0.1em !important;
}

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

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

.text-gray-400 {
  --tw-text-opacity: 1 !important;
  color: rgba(156, 163, 175, var(--tw-text-opacity)) !important;
}

.text-green-500 {
  --tw-text-opacity: 1 !important;
  color: rgba(16, 185, 129, var(--tw-text-opacity)) !important;
}

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

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

.opacity-30 {
  opacity: 0.3 !important;
}

.shadow-md {
  --tw-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06) !important;
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow) !important;
}

.outline-none {
  outline: 2px solid transparent !important;
  outline-offset: 2px !important;
}

.hover\:text-green-300:hover {
  --tw-text-opacity: 1 !important;
  color: rgba(110, 231, 183, var(--tw-text-opacity)) !important;
}

.focus\:outline-none:focus {
  outline: 2px solid transparent !important;
  outline-offset: 2px !important;
}

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

@media (min-width: 768px) {
  .md\:ml-0 {
    margin-left: 0px !important;
  }
}

@media (min-width: 1024px) {
  .lg\:justify-between {
    justify-content: space-between !important;
  }
}

/* Colors for the ripple elements.*/

/* stylelint-disable-next-line material/theme-mixin-api */

/* stylelint-disable-next-line material/theme-mixin-api */

/* stylelint-disable material/no-prefixes */

/* stylelint-enable */

.mat-badge-content {
  font-weight: 600;
  font-size: 12px;
  font-family: Roboto, "Helvetica Neue", sans-serif;
}

.mat-badge-small .mat-badge-content {
  font-size: 9px;
}

.mat-badge-large .mat-badge-content {
  font-size: 24px;
}

.mat-h1, .mat-headline, .mat-typography h1 {
  font: 400 24px/32px Roboto, "Helvetica Neue", sans-serif;
  letter-spacing: normal;
  margin: 0 0 16px;
}

.mat-h2, .mat-title, .mat-typography h2 {
  font: 500 20px/32px Roboto, "Helvetica Neue", sans-serif;
  letter-spacing: normal;
  margin: 0 0 16px;
}

.mat-h3, .mat-subheading-2, .mat-typography h3 {
  font: 400 16px/28px Roboto, "Helvetica Neue", sans-serif;
  letter-spacing: normal;
  margin: 0 0 16px;
}

.mat-h4, .mat-subheading-1, .mat-typography h4 {
  font: 400 15px/24px Roboto, "Helvetica Neue", sans-serif;
  letter-spacing: normal;
  margin: 0 0 16px;
}

.mat-h5, .mat-typography h5 {
  font: 400 calc(14px * 0.83)/20px Roboto, "Helvetica Neue", sans-serif;
  margin: 0 0 12px;
}

.mat-h6, .mat-typography h6 {
  font: 400 calc(14px * 0.67)/20px Roboto, "Helvetica Neue", sans-serif;
  margin: 0 0 12px;
}

.mat-body-strong, .mat-body-2 {
  font: 500 14px/24px Roboto, "Helvetica Neue", sans-serif;
  letter-spacing: normal;
}

.mat-body, .mat-body-1, .mat-typography {
  font: 400 14px/20px Roboto, "Helvetica Neue", sans-serif;
  letter-spacing: normal;
}

.mat-body p, .mat-body-1 p, .mat-typography p {
  margin: 0 0 12px;
}

.mat-small, .mat-caption {
  font: 400 12px/20px Roboto, "Helvetica Neue", sans-serif;
  letter-spacing: normal;
}

.mat-display-4, .mat-typography .mat-display-4 {
  font: 300 112px/112px Roboto, "Helvetica Neue", sans-serif;
  letter-spacing: -0.05em;
  margin: 0 0 56px;
}

.mat-display-3, .mat-typography .mat-display-3 {
  font: 400 56px/56px Roboto, "Helvetica Neue", sans-serif;
  letter-spacing: -0.02em;
  margin: 0 0 64px;
}

.mat-display-2, .mat-typography .mat-display-2 {
  font: 400 45px/48px Roboto, "Helvetica Neue", sans-serif;
  letter-spacing: -0.005em;
  margin: 0 0 64px;
}

.mat-display-1, .mat-typography .mat-display-1 {
  font: 400 34px/40px Roboto, "Helvetica Neue", sans-serif;
  letter-spacing: normal;
  margin: 0 0 64px;
}

.mat-bottom-sheet-container {
  font: 400 14px/20px Roboto, "Helvetica Neue", sans-serif;
  letter-spacing: normal;
}

.mat-button, .mat-raised-button, .mat-icon-button, .mat-stroked-button,
.mat-flat-button, .mat-fab, .mat-mini-fab {
  font-family: Roboto, "Helvetica Neue", sans-serif;
  font-size: 14px;
  font-weight: 500;
}

.mat-button-toggle {
  font-family: Roboto, "Helvetica Neue", sans-serif;
}

.mat-card {
  font-family: Roboto, "Helvetica Neue", sans-serif;
}

.mat-card-title {
  font-size: 24px;
  font-weight: 500;
}

.mat-card-header .mat-card-title {
  font-size: 20px;
}

.mat-card-subtitle,
.mat-card-content {
  font-size: 14px;
}

.mat-checkbox {
  font-family: Roboto, "Helvetica Neue", sans-serif;
}

.mat-checkbox-layout .mat-checkbox-label {
  line-height: 24px;
}

.mat-chip {
  font-size: 14px;
  font-weight: 500;
}

.mat-chip .mat-chip-trailing-icon.mat-icon,
.mat-chip .mat-chip-remove.mat-icon {
  font-size: 18px;
}

.mat-table {
  font-family: Roboto, "Helvetica Neue", sans-serif;
}

.mat-header-cell {
  font-size: 12px;
  font-weight: 500;
}

.mat-cell, .mat-footer-cell {
  font-size: 14px;
}

.mat-calendar {
  font-family: Roboto, "Helvetica Neue", sans-serif;
}

.mat-calendar-body {
  font-size: 13px;
}

.mat-calendar-body-label,
.mat-calendar-period-button {
  font-size: 14px;
  font-weight: 500;
}

.mat-calendar-table-header th {
  font-size: 11px;
  font-weight: 400;
}

.mat-dialog-title {
  font: 500 20px/32px Roboto, "Helvetica Neue", sans-serif;
  letter-spacing: normal;
}

.mat-expansion-panel-header {
  font-family: Roboto, "Helvetica Neue", sans-serif;
  font-size: 15px;
  font-weight: 400;
}

.mat-expansion-panel-content {
  font: 400 14px/20px Roboto, "Helvetica Neue", sans-serif;
  letter-spacing: normal;
}

.mat-form-field {
  font-size: inherit;
  font-weight: 400;
  line-height: 1.125;
  font-family: Roboto, "Helvetica Neue", sans-serif;
  letter-spacing: normal;
}

.mat-form-field-wrapper {
  padding-bottom: 1.34375em;
}

.mat-form-field-prefix .mat-icon,
.mat-form-field-suffix .mat-icon {
  font-size: 150%;
  line-height: 1.125;
}

.mat-form-field-prefix .mat-icon-button,
.mat-form-field-suffix .mat-icon-button {
  height: 1.5em;
  width: 1.5em;
}

.mat-form-field-prefix .mat-icon-button .mat-icon,
.mat-form-field-suffix .mat-icon-button .mat-icon {
  height: 1.125em;
  line-height: 1.125;
}

.mat-form-field-infix {
  padding: 0.5em 0;
  border-top: 0.84375em solid transparent;
}

.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,
.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label {
  transform: translateY(-1.34375em) scale(0.75);
  width: 133.3333333333%;
}

.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper .mat-form-field-label {
  transform: translateY(-1.34374em) scale(0.75);
  width: 133.3333433333%;
}

.mat-form-field-label-wrapper {
  top: -0.84375em;
  padding-top: 0.84375em;
}

.mat-form-field-label {
  top: 1.34375em;
}

.mat-form-field-underline {
  bottom: 1.34375em;
}

.mat-form-field-subscript-wrapper {
  font-size: 75%;
  margin-top: 0.6666666667em;
  top: calc(100% - 1.7916666667em);
}

.mat-form-field-appearance-legacy .mat-form-field-wrapper {
  padding-bottom: 1.25em;
}

.mat-form-field-appearance-legacy .mat-form-field-infix {
  padding: 0.4375em 0;
}

.mat-form-field-appearance-legacy.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,
.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label {
  transform: translateY(-1.28125em) scale(0.75) perspective(100px) translateZ(0.001px);
  -ms-transform: translateY(-1.28125em) scale(0.75);
  width: 133.3333333333%;
}

.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-form-field-autofill-control:-webkit-autofill + .mat-form-field-label-wrapper .mat-form-field-label {
  transform: translateY(-1.28125em) scale(0.75) perspective(100px) translateZ(0.00101px);
  -ms-transform: translateY(-1.28124em) scale(0.75);
  width: 133.3333433333%;
}

.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper .mat-form-field-label {
  transform: translateY(-1.28125em) scale(0.75) perspective(100px) translateZ(0.00102px);
  -ms-transform: translateY(-1.28123em) scale(0.75);
  width: 133.3333533333%;
}

.mat-form-field-appearance-legacy .mat-form-field-label {
  top: 1.28125em;
}

.mat-form-field-appearance-legacy .mat-form-field-underline {
  bottom: 1.25em;
}

.mat-form-field-appearance-legacy .mat-form-field-subscript-wrapper {
  margin-top: 0.5416666667em;
  top: calc(100% - 1.6666666667em);
}

@media print {
  .mat-form-field-appearance-legacy.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,
.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label {
    transform: translateY(-1.28122em) scale(0.75);
  }
  .mat-form-field-appearance-legacy.mat-form-field-can-float .mat-form-field-autofill-control:-webkit-autofill + .mat-form-field-label-wrapper .mat-form-field-label {
    transform: translateY(-1.28121em) scale(0.75);
  }
  .mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper .mat-form-field-label {
    transform: translateY(-1.2812em) scale(0.75);
  }
}

.mat-form-field-appearance-fill .mat-form-field-infix {
  padding: 0.25em 0 0.75em 0;
}

.mat-form-field-appearance-fill .mat-form-field-label {
  top: 1.09375em;
  margin-top: -0.5em;
}

.mat-form-field-appearance-fill.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,
.mat-form-field-appearance-fill.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label {
  transform: translateY(-0.59375em) scale(0.75);
  width: 133.3333333333%;
}

.mat-form-field-appearance-fill.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper .mat-form-field-label {
  transform: translateY(-0.59374em) scale(0.75);
  width: 133.3333433333%;
}

.mat-form-field-appearance-outline .mat-form-field-infix {
  padding: 1em 0 1em 0;
}

.mat-form-field-appearance-outline .mat-form-field-label {
  top: 1.84375em;
  margin-top: -0.25em;
}

.mat-form-field-appearance-outline.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,
.mat-form-field-appearance-outline.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label {
  transform: translateY(-1.59375em) scale(0.75);
  width: 133.3333333333%;
}

.mat-form-field-appearance-outline.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper .mat-form-field-label {
  transform: translateY(-1.59374em) scale(0.75);
  width: 133.3333433333%;
}

.mat-grid-tile-header,
.mat-grid-tile-footer {
  font-size: 14px;
}

.mat-grid-tile-header .mat-line,
.mat-grid-tile-footer .mat-line {
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  display: block;
  box-sizing: border-box;
}

.mat-grid-tile-header .mat-line:nth-child(n+2),
.mat-grid-tile-footer .mat-line:nth-child(n+2) {
  font-size: 12px;
}

input.mat-input-element {
  margin-top: -0.0625em;
}

.mat-menu-item {
  font-family: Roboto, "Helvetica Neue", sans-serif;
  font-size: 14px;
  font-weight: 400;
}

.mat-paginator,
.mat-paginator-page-size .mat-select-trigger {
  font-family: Roboto, "Helvetica Neue", sans-serif;
  font-size: 12px;
}

.mat-radio-button {
  font-family: Roboto, "Helvetica Neue", sans-serif;
}

.mat-select {
  font-family: Roboto, "Helvetica Neue", sans-serif;
}

.mat-select-trigger {
  height: 1.125em;
}

.mat-slide-toggle-content {
  font-family: Roboto, "Helvetica Neue", sans-serif;
}

.mat-slider-thumb-label-text {
  font-family: Roboto, "Helvetica Neue", sans-serif;
  font-size: 12px;
  font-weight: 500;
}

.mat-stepper-vertical, .mat-stepper-horizontal {
  font-family: Roboto, "Helvetica Neue", sans-serif;
}

.mat-step-label {
  font-size: 14px;
  font-weight: 400;
}

.mat-step-sub-label-error {
  font-weight: normal;
}

.mat-step-label-error {
  font-size: 14px;
}

.mat-step-label-selected {
  font-size: 14px;
  font-weight: 500;
}

.mat-tab-group {
  font-family: Roboto, "Helvetica Neue", sans-serif;
}

.mat-tab-label, .mat-tab-link {
  font-family: Roboto, "Helvetica Neue", sans-serif;
  font-size: 14px;
  font-weight: 500;
}

.mat-toolbar,
.mat-toolbar h1,
.mat-toolbar h2,
.mat-toolbar h3,
.mat-toolbar h4,
.mat-toolbar h5,
.mat-toolbar h6 {
  font: 500 20px/32px Roboto, "Helvetica Neue", sans-serif;
  letter-spacing: normal;
  margin: 0;
}

.mat-tooltip {
  font-family: Roboto, "Helvetica Neue", sans-serif;
  font-size: 10px;
  padding-top: 6px;
  padding-bottom: 6px;
}

.mat-tooltip-handset {
  font-size: 14px;
  padding-top: 8px;
  padding-bottom: 8px;
}

.mat-list-item {
  font-family: Roboto, "Helvetica Neue", sans-serif;
}

.mat-list-option {
  font-family: Roboto, "Helvetica Neue", sans-serif;
}

.mat-list-base .mat-list-item {
  font-size: 16px;
}

.mat-list-base .mat-list-item .mat-line {
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  display: block;
  box-sizing: border-box;
}

.mat-list-base .mat-list-item .mat-line:nth-child(n+2) {
  font-size: 14px;
}

.mat-list-base .mat-list-option {
  font-size: 16px;
}

.mat-list-base .mat-list-option .mat-line {
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  display: block;
  box-sizing: border-box;
}

.mat-list-base .mat-list-option .mat-line:nth-child(n+2) {
  font-size: 14px;
}

.mat-list-base .mat-subheader {
  font-family: Roboto, "Helvetica Neue", sans-serif;
  font-size: 14px;
  font-weight: 500;
}

.mat-list-base[dense] .mat-list-item {
  font-size: 12px;
}

.mat-list-base[dense] .mat-list-item .mat-line {
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  display: block;
  box-sizing: border-box;
}

.mat-list-base[dense] .mat-list-item .mat-line:nth-child(n+2) {
  font-size: 12px;
}

.mat-list-base[dense] .mat-list-option {
  font-size: 12px;
}

.mat-list-base[dense] .mat-list-option .mat-line {
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  display: block;
  box-sizing: border-box;
}

.mat-list-base[dense] .mat-list-option .mat-line:nth-child(n+2) {
  font-size: 12px;
}

.mat-list-base[dense] .mat-subheader {
  font-family: Roboto, "Helvetica Neue", sans-serif;
  font-size: 12px;
  font-weight: 500;
}

.mat-option {
  font-family: Roboto, "Helvetica Neue", sans-serif;
  font-size: 16px;
}

.mat-optgroup-label {
  font: 500 14px/24px Roboto, "Helvetica Neue", sans-serif;
  letter-spacing: normal;
}

.mat-simple-snackbar {
  font-family: Roboto, "Helvetica Neue", sans-serif;
  font-size: 14px;
}

.mat-simple-snackbar-action {
  line-height: 1;
  font-family: inherit;
  font-size: inherit;
  font-weight: 500;
}

.mat-tree {
  font-family: Roboto, "Helvetica Neue", sans-serif;
}

.mat-tree-node,
.mat-nested-tree-node {
  font-weight: 400;
  font-size: 14px;
}

.mat-ripple {
  overflow: hidden;
  position: relative;
}

.mat-ripple:not(:empty) {
  transform: translateZ(0);
}

.mat-ripple.mat-ripple-unbounded {
  overflow: visible;
}

.mat-ripple-element {
  position: absolute;
  border-radius: 50%;
  pointer-events: none;
  transition: opacity, transform 0ms cubic-bezier(0, 0, 0.2, 1);
  transform: scale(0);
}

.cdk-high-contrast-active .mat-ripple-element {
  display: none;
}

.cdk-visually-hidden {
  border: 0;
  clip: rect(0 0 0 0);
  height: 1px;
  margin: -1px;
  overflow: hidden;
  padding: 0;
  position: absolute;
  width: 1px;
  white-space: nowrap;
  outline: 0;
  -webkit-appearance: none;
  -moz-appearance: none;
}

.cdk-overlay-container, .cdk-global-overlay-wrapper {
  pointer-events: none;
  top: 0;
  left: 0;
  height: 100%;
  width: 100%;
}

.cdk-overlay-container {
  position: fixed;
  z-index: 1000;
}

.cdk-overlay-container:empty {
  display: none;
}

.cdk-global-overlay-wrapper {
  display: flex;
  position: absolute;
  z-index: 1000;
}

.cdk-overlay-pane {
  position: absolute;
  pointer-events: auto;
  box-sizing: border-box;
  z-index: 1000;
  display: flex;
  max-width: 100%;
  max-height: 100%;
}

.cdk-overlay-backdrop {
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  right: 0;
  z-index: 1000;
  pointer-events: auto;
  -webkit-tap-highlight-color: transparent;
  transition: opacity 400ms cubic-bezier(0.25, 0.8, 0.25, 1);
  opacity: 0;
}

.cdk-overlay-backdrop.cdk-overlay-backdrop-showing {
  opacity: 1;
}

.cdk-high-contrast-active .cdk-overlay-backdrop.cdk-overlay-backdrop-showing {
  opacity: 0.6;
}

.cdk-overlay-dark-backdrop {
  background: rgba(0, 0, 0, 0.32);
}

.cdk-overlay-transparent-backdrop, .cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing {
  opacity: 0;
}

.cdk-overlay-connected-position-bounding-box {
  position: absolute;
  z-index: 1000;
  display: flex;
  flex-direction: column;
  min-width: 1px;
  min-height: 1px;
}

.cdk-global-scrollblock {
  position: fixed;
  width: 100%;
  overflow-y: scroll;
}

@keyframes cdk-text-field-autofill-start {
  /*!*/
}

@keyframes cdk-text-field-autofill-end {
  /*!*/
}

.cdk-text-field-autofill-monitored:-webkit-autofill {
  animation: cdk-text-field-autofill-start 0s 1ms;
}

.cdk-text-field-autofill-monitored:not(:-webkit-autofill) {
  animation: cdk-text-field-autofill-end 0s 1ms;
}

textarea.cdk-textarea-autosize {
  resize: none;
}

textarea.cdk-textarea-autosize-measuring {
  padding: 2px 0 !important;
  box-sizing: content-box !important;
  height: auto !important;
  overflow: hidden !important;
}

textarea.cdk-textarea-autosize-measuring-firefox {
  padding: 2px 0 !important;
  box-sizing: content-box !important;
  height: 0 !important;
}

.mat-focus-indicator {
  position: relative;
}

.mat-mdc-focus-indicator {
  position: relative;
}

.mat-badge-content {
  font-weight: 600;
  font-size: 12px;
  font-family: Arial, sans-serif;
}

.mat-badge-small .mat-badge-content {
  font-size: 9px;
}

.mat-badge-large .mat-badge-content {
  font-size: 24px;
}

.mat-h1, .mat-headline, .mat-typography h1 {
  font: 400 1.875rem/2.25rem Arial, sans-serif;
  letter-spacing: normal;
  margin: 0 0 16px;
}

.mat-h2, .mat-title, .mat-typography h2 {
  font: 500 1.5rem/2rem Arial, sans-serif;
  letter-spacing: normal;
  margin: 0 0 16px;
}

.mat-h3, .mat-subheading-2, .mat-typography h3 {
  font: 400 1.25rem/1.75rem Arial, sans-serif;
  letter-spacing: normal;
  margin: 0 0 16px;
}

.mat-h4, .mat-subheading-1, .mat-typography h4 {
  font: 400 1.125rem/1.75rem Arial, sans-serif;
  letter-spacing: normal;
  margin: 0 0 16px;
}

.mat-h5, .mat-typography h5 {
  font: 400 calc(1rem * 0.83)/1.5rem Arial, sans-serif;
  margin: 0 0 12px;
}

.mat-h6, .mat-typography h6 {
  font: 400 calc(1rem * 0.67)/1.5rem Arial, sans-serif;
  margin: 0 0 12px;
}

.mat-body-strong, .mat-body-2 {
  font: 500 1rem/1.5rem Arial, sans-serif;
  letter-spacing: normal;
}

.mat-body, .mat-body-1, .mat-typography {
  font: 400 1rem/1.5rem Arial, sans-serif;
  letter-spacing: normal;
}

.mat-body p, .mat-body-1 p, .mat-typography p {
  margin: 0 0 12px;
}

.mat-small, .mat-caption {
  font: 400 0.875rem/1.25rem Arial, sans-serif;
  letter-spacing: normal;
}

.mat-display-4, .mat-typography .mat-display-4 {
  font: 300 4.5rem/1 Arial, sans-serif;
  letter-spacing: normal;
  margin: 0 0 56px;
}

.mat-display-3, .mat-typography .mat-display-3 {
  font: 400 3.75rem/1 Arial, sans-serif;
  letter-spacing: normal;
  margin: 0 0 64px;
}

.mat-display-2, .mat-typography .mat-display-2 {
  font: 400 3rem/1 Arial, sans-serif;
  letter-spacing: normal;
  margin: 0 0 64px;
}

.mat-display-1, .mat-typography .mat-display-1 {
  font: 400 2.25rem/2.5rem Arial, sans-serif;
  letter-spacing: normal;
  margin: 0 0 64px;
}

.mat-bottom-sheet-container {
  font: 400 1rem/1.5rem Arial, sans-serif;
  letter-spacing: normal;
}

.mat-button, .mat-raised-button, .mat-icon-button, .mat-stroked-button,
.mat-flat-button, .mat-fab, .mat-mini-fab {
  font-family: Arial, sans-serif;
  font-size: 1rem;
  font-weight: 500;
}

.mat-button-toggle {
  font-family: Arial, sans-serif;
}

.mat-card {
  font-family: Arial, sans-serif;
}

.mat-card-title {
  font-size: 1.875rem;
  font-weight: 500;
}

.mat-card-header .mat-card-title {
  font-size: 1.5rem;
}

.mat-card-subtitle,
.mat-card-content {
  font-size: 1rem;
}

.mat-checkbox {
  font-family: Arial, sans-serif;
}

.mat-checkbox-layout .mat-checkbox-label {
  line-height: 1.5rem;
}

.mat-chip {
  font-size: 1rem;
  font-weight: 500;
}

.mat-chip .mat-chip-trailing-icon.mat-icon,
.mat-chip .mat-chip-remove.mat-icon {
  font-size: 18px;
}

.mat-table {
  font-family: Arial, sans-serif;
}

.mat-header-cell {
  font-size: 0.875rem;
  font-weight: 500;
}

.mat-cell, .mat-footer-cell {
  font-size: 1rem;
}

.mat-calendar {
  font-family: Arial, sans-serif;
}

.mat-calendar-body {
  font-size: 13px;
}

.mat-calendar-body-label,
.mat-calendar-period-button {
  font-size: 1rem;
  font-weight: 500;
}

.mat-calendar-table-header th {
  font-size: 11px;
  font-weight: 400;
}

.mat-dialog-title {
  font: 500 1.5rem/2rem Arial, sans-serif;
  letter-spacing: normal;
}

.mat-expansion-panel-header {
  font-family: Arial, sans-serif;
  font-size: 1.125rem;
  font-weight: 400;
}

.mat-expansion-panel-content {
  font: 400 1rem/1.5rem Arial, sans-serif;
  letter-spacing: normal;
}

.mat-form-field {
  font-size: inherit;
  font-weight: 400;
  line-height: 1.3;
  font-family: Arial, sans-serif;
  letter-spacing: normal;
}

.mat-form-field-wrapper {
  padding-bottom: 1.475em;
}

.mat-form-field-prefix .mat-icon,
.mat-form-field-suffix .mat-icon {
  font-size: 150%;
  line-height: 1.3;
}

.mat-form-field-prefix .mat-icon-button,
.mat-form-field-suffix .mat-icon-button {
  height: 1.5em;
  width: 1.5em;
}

.mat-form-field-prefix .mat-icon-button .mat-icon,
.mat-form-field-suffix .mat-icon-button .mat-icon {
  height: 1.3em;
  line-height: 1.3;
}

.mat-form-field-infix {
  padding: 0.5em 0;
  border-top: 0.975em solid transparent;
}

.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,
.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label {
  transform: translateY(-1.47498em) scale(0.75);
  width: 133.3333533333%;
}

.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper .mat-form-field-label {
  transform: translateY(-1.47497em) scale(0.75);
  width: 133.3333633333%;
}

.mat-form-field-label-wrapper {
  top: -0.975em;
  padding-top: 0.975em;
}

.mat-form-field-label {
  top: 1.475em;
}

.mat-form-field-underline {
  bottom: 1.475em;
}

.mat-form-field-subscript-wrapper {
  font-size: 75%;
  margin-top: 0.6666666667em;
  top: calc(100% - 1.9666666667em);
}

.mat-form-field-appearance-legacy .mat-form-field-wrapper {
  padding-bottom: 1.25em;
}

.mat-form-field-appearance-legacy .mat-form-field-infix {
  padding: 0.35em 0;
}

.mat-form-field-appearance-legacy.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,
.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label {
  transform: translateY(-1.325em) scale(0.75) perspective(100px) translateZ(0.00106px);
  -ms-transform: translateY(-1.32494em) scale(0.75);
  width: 133.3333933333%;
}

.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-form-field-autofill-control:-webkit-autofill + .mat-form-field-label-wrapper .mat-form-field-label {
  transform: translateY(-1.325em) scale(0.75) perspective(100px) translateZ(0.00107px);
  -ms-transform: translateY(-1.32493em) scale(0.75);
  width: 133.3334033333%;
}

.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper .mat-form-field-label {
  transform: translateY(-1.325em) scale(0.75) perspective(100px) translateZ(0.00108px);
  -ms-transform: translateY(-1.32492em) scale(0.75);
  width: 133.3334133333%;
}

.mat-form-field-appearance-legacy .mat-form-field-label {
  top: 1.325em;
}

.mat-form-field-appearance-legacy .mat-form-field-underline {
  bottom: 1.25em;
}

.mat-form-field-appearance-legacy .mat-form-field-subscript-wrapper {
  margin-top: 0.3666666667em;
  top: calc(100% - 1.6666666667em);
}

@media print {
  .mat-form-field-appearance-legacy.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,
.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label {
    transform: translateY(-1.32491em) scale(0.75);
  }
  .mat-form-field-appearance-legacy.mat-form-field-can-float .mat-form-field-autofill-control:-webkit-autofill + .mat-form-field-label-wrapper .mat-form-field-label {
    transform: translateY(-1.3249em) scale(0.75);
  }
  .mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper .mat-form-field-label {
    transform: translateY(-1.32489em) scale(0.75);
  }
}

.mat-form-field-appearance-fill .mat-form-field-infix {
  padding: 0.25em 0 0.75em 0;
}

.mat-form-field-appearance-fill .mat-form-field-label {
  top: 1.225em;
  margin-top: -0.5em;
}

.mat-form-field-appearance-fill.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,
.mat-form-field-appearance-fill.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label {
  transform: translateY(-0.72498em) scale(0.75);
  width: 133.3333533333%;
}

.mat-form-field-appearance-fill.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper .mat-form-field-label {
  transform: translateY(-0.72497em) scale(0.75);
  width: 133.3333633333%;
}

.mat-form-field-appearance-outline .mat-form-field-infix {
  padding: 1em 0 1em 0;
}

.mat-form-field-appearance-outline .mat-form-field-label {
  top: 1.975em;
  margin-top: -0.25em;
}

.mat-form-field-appearance-outline.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,
.mat-form-field-appearance-outline.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label {
  transform: translateY(-1.72498em) scale(0.75);
  width: 133.3333533333%;
}

.mat-form-field-appearance-outline.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper .mat-form-field-label {
  transform: translateY(-1.72497em) scale(0.75);
  width: 133.3333633333%;
}

.mat-grid-tile-header,
.mat-grid-tile-footer {
  font-size: 1rem;
}

.mat-grid-tile-header .mat-line,
.mat-grid-tile-footer .mat-line {
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  display: block;
  box-sizing: border-box;
}

.mat-grid-tile-header .mat-line:nth-child(n+2),
.mat-grid-tile-footer .mat-line:nth-child(n+2) {
  font-size: 0.875rem;
}

input.mat-input-element {
  margin-top: -0.15em;
}

.mat-menu-item {
  font-family: Arial, sans-serif;
  font-size: 1rem;
  font-weight: 400;
}

.mat-paginator,
.mat-paginator-page-size .mat-select-trigger {
  font-family: Arial, sans-serif;
  font-size: 0.875rem;
}

.mat-radio-button {
  font-family: Arial, sans-serif;
}

.mat-select {
  font-family: Arial, sans-serif;
}

.mat-select-trigger {
  height: 1.3em;
}

.mat-slide-toggle-content {
  font-family: Arial, sans-serif;
}

.mat-slider-thumb-label-text {
  font-family: Arial, sans-serif;
  font-size: 0.875rem;
  font-weight: 500;
}

.mat-stepper-vertical, .mat-stepper-horizontal {
  font-family: Arial, sans-serif;
}

.mat-step-label {
  font-size: 1rem;
  font-weight: 400;
}

.mat-step-sub-label-error {
  font-weight: normal;
}

.mat-step-label-error {
  font-size: 1rem;
}

.mat-step-label-selected {
  font-size: 1rem;
  font-weight: 500;
}

.mat-tab-group {
  font-family: Arial, sans-serif;
}

.mat-tab-label, .mat-tab-link {
  font-family: Arial, sans-serif;
  font-size: 1rem;
  font-weight: 500;
}

.mat-toolbar,
.mat-toolbar h1,
.mat-toolbar h2,
.mat-toolbar h3,
.mat-toolbar h4,
.mat-toolbar h5,
.mat-toolbar h6 {
  font: 500 1.5rem/2rem Arial, sans-serif;
  letter-spacing: normal;
  margin: 0;
}

.mat-tooltip {
  font-family: Arial, sans-serif;
  font-size: 10px;
  padding-top: 6px;
  padding-bottom: 6px;
}

.mat-tooltip-handset {
  font-size: 14px;
  padding-top: 8px;
  padding-bottom: 8px;
}

.mat-list-item {
  font-family: Arial, sans-serif;
}

.mat-list-option {
  font-family: Arial, sans-serif;
}

.mat-list-base .mat-list-item {
  font-size: 1.25rem;
}

.mat-list-base .mat-list-item .mat-line {
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  display: block;
  box-sizing: border-box;
}

.mat-list-base .mat-list-item .mat-line:nth-child(n+2) {
  font-size: 1rem;
}

.mat-list-base .mat-list-option {
  font-size: 1.25rem;
}

.mat-list-base .mat-list-option .mat-line {
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  display: block;
  box-sizing: border-box;
}

.mat-list-base .mat-list-option .mat-line:nth-child(n+2) {
  font-size: 1rem;
}

.mat-list-base .mat-subheader {
  font-family: Arial, sans-serif;
  font-size: 1rem;
  font-weight: 500;
}

.mat-list-base[dense] .mat-list-item {
  font-size: 0.875rem;
}

.mat-list-base[dense] .mat-list-item .mat-line {
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  display: block;
  box-sizing: border-box;
}

.mat-list-base[dense] .mat-list-item .mat-line:nth-child(n+2) {
  font-size: 0.875rem;
}

.mat-list-base[dense] .mat-list-option {
  font-size: 0.875rem;
}

.mat-list-base[dense] .mat-list-option .mat-line {
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  display: block;
  box-sizing: border-box;
}

.mat-list-base[dense] .mat-list-option .mat-line:nth-child(n+2) {
  font-size: 0.875rem;
}

.mat-list-base[dense] .mat-subheader {
  font-family: Arial, sans-serif;
  font-size: 0.875rem;
  font-weight: 500;
}

.mat-option {
  font-family: Arial, sans-serif;
  font-size: 1.25rem;
}

.mat-optgroup-label {
  font: 500 1rem/1.5rem Arial, sans-serif;
  letter-spacing: normal;
}

.mat-simple-snackbar {
  font-family: Arial, sans-serif;
  font-size: 1rem;
}

.mat-simple-snackbar-action {
  line-height: 1;
  font-family: inherit;
  font-size: inherit;
  font-weight: 500;
}

.mat-tree {
  font-family: Arial, sans-serif;
}

.mat-tree-node,
.mat-nested-tree-node {
  font-weight: 400;
  font-size: 1rem;
}

/* BASICS */

.CodeMirror {
  /* Set height, width, borders, and global font properties here */
  font-family: monospace;
  height: 300px;
  color: black;
  direction: ltr;
}

/* PADDING */

.CodeMirror-lines {
  padding: 4px 0;
  /* Vertical padding around content */
}

.CodeMirror pre.CodeMirror-line,
.CodeMirror pre.CodeMirror-line-like {
  padding: 0 4px;
  /* Horizontal padding of content */
}

.CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler {
  background-color: white;
  /* The little square between H and V scrollbars */
}

/* GUTTER */

.CodeMirror-gutters {
  border-right: 1px solid #ddd;
  background-color: #f7f7f7;
  white-space: nowrap;
}

.CodeMirror-linenumber {
  padding: 0 3px 0 5px;
  min-width: 20px;
  text-align: right;
  color: #999;
  white-space: nowrap;
}

.CodeMirror-guttermarker {
  color: black;
}

.CodeMirror-guttermarker-subtle {
  color: #999;
}

/* CURSOR */

.CodeMirror-cursor {
  border-left: 1px solid black;
  border-right: none;
  width: 0;
}

/* Shown when moving in bi-directional text */

.CodeMirror div.CodeMirror-secondarycursor {
  border-left: 1px solid silver;
}

.cm-fat-cursor .CodeMirror-cursor {
  width: auto;
  border: 0 !important;
  background: #7e7;
}

.cm-fat-cursor div.CodeMirror-cursors {
  z-index: 1;
}

.cm-fat-cursor .CodeMirror-line::selection,
.cm-fat-cursor .CodeMirror-line > span::selection,
.cm-fat-cursor .CodeMirror-line > span > span::selection {
  background: transparent;
}

.cm-fat-cursor .CodeMirror-line::-moz-selection,
.cm-fat-cursor .CodeMirror-line > span::-moz-selection,
.cm-fat-cursor .CodeMirror-line > span > span::-moz-selection {
  background: transparent;
}

.cm-fat-cursor {
  caret-color: transparent;
}

@keyframes blink {
  50% {
    background-color: transparent;
  }
}

/* Can style cursor different in overwrite (non-insert) mode */

.cm-tab {
  display: inline-block;
  text-decoration: inherit;
}

.CodeMirror-rulers {
  position: absolute;
  left: 0;
  right: 0;
  top: -50px;
  bottom: 0;
  overflow: hidden;
}

.CodeMirror-ruler {
  border-left: 1px solid #ccc;
  top: 0;
  bottom: 0;
  position: absolute;
}

/* DEFAULT THEME */

.cm-s-default .cm-header {
  color: blue;
}

.cm-s-default .cm-quote {
  color: #090;
}

.cm-negative {
  color: #d44;
}

.cm-positive {
  color: #292;
}

.cm-header, .cm-strong {
  font-weight: bold;
}

.cm-em {
  font-style: italic;
}

.cm-link {
  text-decoration: underline;
}

.cm-strikethrough {
  text-decoration: line-through;
}

.cm-s-default .cm-keyword {
  color: #708;
}

.cm-s-default .cm-atom {
  color: #219;
}

.cm-s-default .cm-number {
  color: #164;
}

.cm-s-default .cm-def {
  color: #00f;
}

.cm-s-default .cm-variable-2 {
  color: #05a;
}

.cm-s-default .cm-variable-3, .cm-s-default .cm-type {
  color: #085;
}

.cm-s-default .cm-comment {
  color: #a50;
}

.cm-s-default .cm-string {
  color: #a11;
}

.cm-s-default .cm-string-2 {
  color: #f50;
}

.cm-s-default .cm-meta {
  color: #555;
}

.cm-s-default .cm-qualifier {
  color: #555;
}

.cm-s-default .cm-builtin {
  color: #30a;
}

.cm-s-default .cm-bracket {
  color: #997;
}

.cm-s-default .cm-tag {
  color: #170;
}

.cm-s-default .cm-attribute {
  color: #00c;
}

.cm-s-default .cm-hr {
  color: #999;
}

.cm-s-default .cm-link {
  color: #00c;
}

.cm-s-default .cm-error {
  color: #f00;
}

.cm-invalidchar {
  color: #f00;
}

.CodeMirror-composing {
  border-bottom: 2px solid;
}

/* Default styles for common addons */

div.CodeMirror span.CodeMirror-matchingbracket {
  color: #0b0;
}

div.CodeMirror span.CodeMirror-nonmatchingbracket {
  color: #a22;
}

.CodeMirror-matchingtag {
  background: rgba(255, 150, 0, 0.3);
}

.CodeMirror-activeline-background {
  background: #e8f2ff;
}

/* STOP */

/* The rest of this file contains styles related to the mechanics of
   the editor. You probably shouldn't touch them. */

.CodeMirror {
  position: relative;
  overflow: hidden;
  background: white;
}

.CodeMirror-scroll {
  overflow: scroll !important;
  /* Things will break if this is overridden */
  /* 50px is the magic margin used to hide the element's real scrollbars */
  /* See overflow: hidden in .CodeMirror */
  margin-bottom: -50px;
  margin-right: -50px;
  padding-bottom: 50px;
  height: 100%;
  outline: none;
  /* Prevent dragging from highlighting the element */
  position: relative;
  z-index: 0;
}

.CodeMirror-sizer {
  position: relative;
  border-right: 50px solid transparent;
}

/* The fake, visible scrollbars. Used to force redraw during scrolling
   before actual scrolling happens, thus preventing shaking and
   flickering artifacts. */

.CodeMirror-vscrollbar, .CodeMirror-hscrollbar, .CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler {
  position: absolute;
  z-index: 6;
  display: none;
  outline: none;
}

.CodeMirror-vscrollbar {
  right: 0;
  top: 0;
  overflow-x: hidden;
  overflow-y: scroll;
}

.CodeMirror-hscrollbar {
  bottom: 0;
  left: 0;
  overflow-y: hidden;
  overflow-x: scroll;
}

.CodeMirror-scrollbar-filler {
  right: 0;
  bottom: 0;
}

.CodeMirror-gutter-filler {
  left: 0;
  bottom: 0;
}

.CodeMirror-gutters {
  position: absolute;
  left: 0;
  top: 0;
  min-height: 100%;
  z-index: 3;
}

.CodeMirror-gutter {
  white-space: normal;
  height: 100%;
  display: inline-block;
  vertical-align: top;
  margin-bottom: -50px;
}

.CodeMirror-gutter-wrapper {
  position: absolute;
  z-index: 4;
  background: none !important;
  border: none !important;
}

.CodeMirror-gutter-background {
  position: absolute;
  top: 0;
  bottom: 0;
  z-index: 4;
}

.CodeMirror-gutter-elt {
  position: absolute;
  cursor: default;
  z-index: 4;
}

.CodeMirror-gutter-wrapper ::selection {
  background-color: transparent;
}

.CodeMirror-gutter-wrapper ::-moz-selection {
  background-color: transparent;
}

.CodeMirror-lines {
  cursor: text;
  min-height: 1px;
  /* prevents collapsing before first draw */
}

.CodeMirror pre.CodeMirror-line,
.CodeMirror pre.CodeMirror-line-like {
  /* Reset some styles that the rest of the page might have set */
  border-radius: 0;
  border-width: 0;
  background: transparent;
  font-family: inherit;
  font-size: inherit;
  margin: 0;
  white-space: pre;
  word-wrap: normal;
  line-height: inherit;
  color: inherit;
  z-index: 2;
  position: relative;
  overflow: visible;
  -webkit-tap-highlight-color: transparent;
  font-variant-ligatures: contextual;
}

.CodeMirror-wrap pre.CodeMirror-line,
.CodeMirror-wrap pre.CodeMirror-line-like {
  word-wrap: break-word;
  white-space: pre-wrap;
  word-break: normal;
}

.CodeMirror-linebackground {
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
  bottom: 0;
  z-index: 0;
}

.CodeMirror-linewidget {
  position: relative;
  z-index: 2;
  padding: 0.1px;
  /* Force widget margins to stay inside of the container */
}

.CodeMirror-rtl pre {
  direction: rtl;
}

.CodeMirror-code {
  outline: none;
}

/* Force content-box sizing for the elements where we expect it */

.CodeMirror-scroll,
.CodeMirror-sizer,
.CodeMirror-gutter,
.CodeMirror-gutters,
.CodeMirror-linenumber {
  box-sizing: content-box;
}

.CodeMirror-measure {
  position: absolute;
  width: 100%;
  height: 0;
  overflow: hidden;
  visibility: hidden;
}

.CodeMirror-cursor {
  position: absolute;
  pointer-events: none;
}

.CodeMirror-measure pre {
  position: static;
}

div.CodeMirror-cursors {
  visibility: hidden;
  position: relative;
  z-index: 3;
}

div.CodeMirror-dragcursors {
  visibility: visible;
}

.CodeMirror-focused div.CodeMirror-cursors {
  visibility: visible;
}

.CodeMirror-selected {
  background: #d9d9d9;
}

.CodeMirror-focused .CodeMirror-selected {
  background: #d7d4f0;
}

.CodeMirror-crosshair {
  cursor: crosshair;
}

.CodeMirror-line::selection, .CodeMirror-line > span::selection, .CodeMirror-line > span > span::selection {
  background: #d7d4f0;
}

.CodeMirror-line::-moz-selection, .CodeMirror-line > span::-moz-selection, .CodeMirror-line > span > span::-moz-selection {
  background: #d7d4f0;
}

.cm-searching {
  background-color: #ffa;
  background-color: rgba(255, 255, 0, 0.4);
}

/* Used to force a border model for a node */

.cm-force-border {
  padding-right: 0.1px;
}

@media print {
  /* Hide the cursor when printing */
  .CodeMirror div.CodeMirror-cursors {
    visibility: hidden;
  }
}

/* See issue #2901 */

.cm-tab-wrap-hack:after {
  content: "";
}

/* Help users use markselection to safely style text background */

span.CodeMirror-selectedtext {
  background: none;
}

/*
  Name:       material
  Author:     Mattia Astorino (http://github.com/equinusocio)
  Website:    https://material-theme.site/
*/

.cm-s-material.CodeMirror {
  background-color: #263238;
  color: #EEFFFF;
}

.cm-s-material .CodeMirror-gutters {
  background: #263238;
  color: #546E7A;
  border: none;
}

.cm-s-material .CodeMirror-guttermarker,
.cm-s-material .CodeMirror-guttermarker-subtle,
.cm-s-material .CodeMirror-linenumber {
  color: #546E7A;
}

.cm-s-material .CodeMirror-cursor {
  border-left: 1px solid #FFCC00;
}

.cm-s-material.cm-fat-cursor .CodeMirror-cursor {
  background-color: #5d6d5c80 !important;
}

.cm-s-material .cm-animate-fat-cursor {
  background-color: #5d6d5c80 !important;
}

.cm-s-material div.CodeMirror-selected {
  background: rgba(128, 203, 196, 0.2);
}

.cm-s-material.CodeMirror-focused div.CodeMirror-selected {
  background: rgba(128, 203, 196, 0.2);
}

.cm-s-material .CodeMirror-line::selection,
.cm-s-material .CodeMirror-line > span::selection,
.cm-s-material .CodeMirror-line > span > span::selection {
  background: rgba(128, 203, 196, 0.2);
}

.cm-s-material .CodeMirror-line::-moz-selection,
.cm-s-material .CodeMirror-line > span::-moz-selection,
.cm-s-material .CodeMirror-line > span > span::-moz-selection {
  background: rgba(128, 203, 196, 0.2);
}

.cm-s-material .CodeMirror-activeline-background {
  background: rgba(0, 0, 0, 0.5);
}

.cm-s-material .cm-keyword {
  color: #C792EA;
}

.cm-s-material .cm-operator {
  color: #89DDFF;
}

.cm-s-material .cm-variable-2 {
  color: #EEFFFF;
}

.cm-s-material .cm-variable-3,
.cm-s-material .cm-type {
  color: #f07178;
}

.cm-s-material .cm-builtin {
  color: #FFCB6B;
}

.cm-s-material .cm-atom {
  color: #F78C6C;
}

.cm-s-material .cm-number {
  color: #FF5370;
}

.cm-s-material .cm-def {
  color: #82AAFF;
}

.cm-s-material .cm-string {
  color: #C3E88D;
}

.cm-s-material .cm-string-2 {
  color: #f07178;
}

.cm-s-material .cm-comment {
  color: #546E7A;
}

.cm-s-material .cm-variable {
  color: #f07178;
}

.cm-s-material .cm-tag {
  color: #FF5370;
}

.cm-s-material .cm-meta {
  color: #FFCB6B;
}

.cm-s-material .cm-attribute {
  color: #C792EA;
}

.cm-s-material .cm-property {
  color: #C792EA;
}

.cm-s-material .cm-qualifier {
  color: #DECB6B;
}

.cm-s-material .cm-variable-3,
.cm-s-material .cm-type {
  color: #DECB6B;
}

.cm-s-material .cm-error {
  color: rgba(255, 255, 255, 1);
  background-color: #FF5370;
}

.cm-s-material .CodeMirror-matchingbracket {
  text-decoration: underline;
  color: white !important;
}

.argo-theme .text-argo-warn {
  color: #ff4f3c !important;
}

.argo-theme .text-argo-success {
  color: #63f699 !important;
}

.argo-theme .text-argo-danger {
  color: #fcba52 !important;
}

.argo-theme .text-argo-primary {
  color: rgba(var(--dynamic-primary-500), 1) !important;
}

.argo-theme .text-argo-error {
  color: #ff7f6b !important;
}

.argo-theme snack-bar-container.argo-danger {
  background-color: #fdd582;
  color: black;
  overflow-wrap: anywhere;
}

.argo-theme snack-bar-container.argo-danger .mat-button {
  outline: none;
  background-color: black;
  color: #fdd582;
}

.argo-theme snack-bar-container.argo-danger .mat-button .mat-ripple-element {
  background-color: white;
}

.argo-theme snack-bar-container.argo-warn {
  background-color: #ff7f6b;
  color: black;
  overflow-wrap: anywhere;
}

.argo-theme snack-bar-container.argo-warn .mat-button {
  outline: none;
  background-color: black;
  color: #ff7f6b;
}

.argo-theme snack-bar-container.argo-warn .mat-button .mat-ripple-element {
  background-color: white;
}

.argo-theme snack-bar-container.argo-success {
  background-color: #92fabe;
  color: black;
  overflow-wrap: anywhere;
}

.argo-theme snack-bar-container.argo-success .mat-button {
  outline: none;
  background-color: black;
  color: #92fabe;
}

.argo-theme snack-bar-container.argo-success .mat-button .mat-ripple-element {
  background-color: white;
}

.argo-theme snack-bar-container.argo-error {
  background-color: #ff7f6b;
  color: black;
  overflow-wrap: anywhere;
}

.argo-theme snack-bar-container.argo-error .mat-button {
  outline: none;
  background-color: black;
  color: white;
}

.argo-theme snack-bar-container.argo-error .mat-button .mat-ripple-element {
  background-color: white;
}

.argo-theme .mat-sidenav.mat-drawer {
  background-color: rgba(var(--dynamic-primary-500), 1);
  color: rgba(var(--dynamic-primary-contrast-500), 1);
}

.argo-theme .mat-sidenav.mat-drawer .mat-form-field-appearance-outline .mat-form-field-outline,
.argo-theme .mat-sidenav.mat-drawer .mat-form-field-label,
.argo-theme .mat-sidenav.mat-drawer .mat-form-field.mat-focused .mat-form-field-label {
  color: inherit;
}

.argo-theme .mat-sidenav.mat-drawer .mat-input-element {
  caret-color: inherit;
}

.argo-theme .mat-sidenav.mat-drawer .mat-input-element::placeholder {
  color: rgba(var(--dynamic-primary-contrast-500),0.7);
}

.argo-theme .mat-sidenav.mat-drawer .mat-icon-button:hover, .argo-theme .mat-sidenav.mat-drawer .mat-icon-button:focus {
  background-color: rgba(var(--dynamic-primary-contrast-500),0.1);
}

.argo-theme .mat-sidenav.mat-drawer .mat-icon-button .mat-ripple-element {
  opacity: 1;
  background-color: rgba(var(--dynamic-primary-contrast-500),0.2);
}

.argo-theme .mat-sidenav.mat-drawer .mat-list-base .mat-subheader {
  color: rgba(var(--dynamic-primary-contrast-500),0.7);
}

.argo-theme .mat-sidenav.mat-drawer .mat-list-base .mat-list-item {
  color: inherit;
}

.argo-theme .mat-sidenav.mat-drawer .mat-list-base .mat-list-item:hover, .argo-theme .mat-sidenav.mat-drawer .mat-list-base .mat-list-item:focus {
  background-color: rgba(var(--dynamic-primary-contrast-500),0.1);
}

.argo-theme .mat-sidenav.mat-drawer .mat-list-base .mat-list-item .mat-ripple-element {
  background-color: rgba(var(--dynamic-primary-contrast-500),0.2);
}

.argo-theme .mat-sidenav.mat-drawer .mat-divider {
  border-top-color: rgba(var(--dynamic-primary-contrast-500),0.9);
}

.argo-theme .mat-button-toggle.mat-button-toggle-appearance-standard .mat-ripple-element {
  background-color: rgba(var(--dynamic-primary-500),0.2);
}

.argo-theme .mat-button-toggle.mat-button-toggle-appearance-standard:hover, .argo-theme .mat-button-toggle.mat-button-toggle-appearance-standard:focus {
  background-color: rgba(var(--dynamic-primary-500),0.1);
}

.argo-theme .mat-button-toggle.mat-button-toggle-appearance-standard.mat-button-toggle-checked {
  background-color: rgba(var(--dynamic-primary-500), 1);
  color: rgba(var(--dynamic-primary-contrast-500), 1);
}

.argo-theme .mat-button-toggle.mat-button-toggle-appearance-standard.mat-button-toggle-checked .mat-ripple-element {
  background-color: transparent;
}

.argo-theme .organization-tooltip {
  font-size: 1rem;
  color: rgba(var(--dynamic-primary-500), 1) !important;
  background-color: rgba(var(--dynamic-primary-contrast-500), 1) !important;
  max-width: unset !important;
}

.argo-theme .mat-progress-bar.argo-error .mat-progress-bar-buffer {
  background-color: #ffa597;
}

.argo-theme .mat-progress-bar.argo-error .mat-progress-bar-fill::after {
  background-color: #ff4f3c;
}

.argo-theme .mat-progress-bar.argo-warn .mat-progress-bar-buffer {
  background-color: #fee2a8;
}

.argo-theme .mat-progress-bar.argo-warn .mat-progress-bar-fill::after {
  background-color: #fcba52;
}

.argo-theme .mat-progress-bar.argo-success .mat-progress-bar-buffer {
  background-color: #b3fcd2;
}

.argo-theme .mat-progress-bar.argo-success .mat-progress-bar-fill::after {
  background-color: #63f699;
}

.argo-theme .argo-notification {
  border-radius: 0.5rem !important;
  overflow: hidden !important;
}

.argo-theme .login-side-panel {
  background-color: rgba(var(--dynamic-primary-500), 1);
}

.theme-light .mat-ripple-element {
  background-color: rgba(0, 0, 0, 0.1);
}

.theme-light .mat-option {
  color: rgba(0, 0, 0, 0.87);
}

.theme-light .mat-option:hover:not(.mat-option-disabled), .theme-light .mat-option:focus:not(.mat-option-disabled) {
  background: rgba(0, 0, 0, 0.04);
}

.theme-light .mat-option.mat-selected:not(.mat-option-multiple):not(.mat-option-disabled) {
  background: rgba(0, 0, 0, 0.04);
}

.theme-light .mat-option.mat-active {
  background: rgba(0, 0, 0, 0.04);
  color: rgba(0, 0, 0, 0.87);
}

.theme-light .mat-option.mat-option-disabled {
  color: rgba(0, 0, 0, 0.38);
}

.theme-light .mat-primary .mat-option.mat-selected:not(.mat-option-disabled) {
  color: rgba(var(--dynamic-primary-500), 1);
}

.theme-light .mat-accent .mat-option.mat-selected:not(.mat-option-disabled) {
  color: rgba(var(--dynamic-accent-500), 1);
}

.theme-light .mat-warn .mat-option.mat-selected:not(.mat-option-disabled) {
  color: #ff7f6b;
}

.theme-light .mat-optgroup-label {
  color: rgba(0, 0, 0, 0.54);
}

.theme-light .mat-optgroup-disabled .mat-optgroup-label {
  color: rgba(0, 0, 0, 0.38);
}

.theme-light .mat-pseudo-checkbox {
  color: rgba(0, 0, 0, 0.54);
}

.theme-light .mat-pseudo-checkbox::after {
  color: #fafafa;
}

.theme-light .mat-pseudo-checkbox-disabled {
  color: #b0b0b0;
}

.theme-light .mat-primary .mat-pseudo-checkbox-checked,
.theme-light .mat-primary .mat-pseudo-checkbox-indeterminate {
  background: rgba(var(--dynamic-primary-500), 1);
}

.theme-light .mat-pseudo-checkbox-checked,
.theme-light .mat-pseudo-checkbox-indeterminate,
.theme-light .mat-accent .mat-pseudo-checkbox-checked,
.theme-light .mat-accent .mat-pseudo-checkbox-indeterminate {
  background: rgba(var(--dynamic-accent-500), 1);
}

.theme-light .mat-warn .mat-pseudo-checkbox-checked,
.theme-light .mat-warn .mat-pseudo-checkbox-indeterminate {
  background: #ff7f6b;
}

.theme-light .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-disabled,
.theme-light .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-disabled {
  background: #b0b0b0;
}

.theme-light .mat-app-background, .theme-light.mat-app-background {
  background-color: #fafafa;
  color: rgba(0, 0, 0, 0.87);
}

.theme-light .mat-elevation-z0 {
  box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12);
}

.theme-light .mat-elevation-z1 {
  box-shadow: 0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12);
}

.theme-light .mat-elevation-z2 {
  box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12);
}

.theme-light .mat-elevation-z3 {
  box-shadow: 0px 3px 3px -2px rgba(0, 0, 0, 0.2), 0px 3px 4px 0px rgba(0, 0, 0, 0.14), 0px 1px 8px 0px rgba(0, 0, 0, 0.12);
}

.theme-light .mat-elevation-z4 {
  box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12);
}

.theme-light .mat-elevation-z5 {
  box-shadow: 0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 5px 8px 0px rgba(0, 0, 0, 0.14), 0px 1px 14px 0px rgba(0, 0, 0, 0.12);
}

.theme-light .mat-elevation-z6 {
  box-shadow: 0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12);
}

.theme-light .mat-elevation-z7 {
  box-shadow: 0px 4px 5px -2px rgba(0, 0, 0, 0.2), 0px 7px 10px 1px rgba(0, 0, 0, 0.14), 0px 2px 16px 1px rgba(0, 0, 0, 0.12);
}

.theme-light .mat-elevation-z8 {
  box-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.2), 0px 8px 10px 1px rgba(0, 0, 0, 0.14), 0px 3px 14px 2px rgba(0, 0, 0, 0.12);
}

.theme-light .mat-elevation-z9 {
  box-shadow: 0px 5px 6px -3px rgba(0, 0, 0, 0.2), 0px 9px 12px 1px rgba(0, 0, 0, 0.14), 0px 3px 16px 2px rgba(0, 0, 0, 0.12);
}

.theme-light .mat-elevation-z10 {
  box-shadow: 0px 6px 6px -3px rgba(0, 0, 0, 0.2), 0px 10px 14px 1px rgba(0, 0, 0, 0.14), 0px 4px 18px 3px rgba(0, 0, 0, 0.12);
}

.theme-light .mat-elevation-z11 {
  box-shadow: 0px 6px 7px -4px rgba(0, 0, 0, 0.2), 0px 11px 15px 1px rgba(0, 0, 0, 0.14), 0px 4px 20px 3px rgba(0, 0, 0, 0.12);
}

.theme-light .mat-elevation-z12 {
  box-shadow: 0px 7px 8px -4px rgba(0, 0, 0, 0.2), 0px 12px 17px 2px rgba(0, 0, 0, 0.14), 0px 5px 22px 4px rgba(0, 0, 0, 0.12);
}

.theme-light .mat-elevation-z13 {
  box-shadow: 0px 7px 8px -4px rgba(0, 0, 0, 0.2), 0px 13px 19px 2px rgba(0, 0, 0, 0.14), 0px 5px 24px 4px rgba(0, 0, 0, 0.12);
}

.theme-light .mat-elevation-z14 {
  box-shadow: 0px 7px 9px -4px rgba(0, 0, 0, 0.2), 0px 14px 21px 2px rgba(0, 0, 0, 0.14), 0px 5px 26px 4px rgba(0, 0, 0, 0.12);
}

.theme-light .mat-elevation-z15 {
  box-shadow: 0px 8px 9px -5px rgba(0, 0, 0, 0.2), 0px 15px 22px 2px rgba(0, 0, 0, 0.14), 0px 6px 28px 5px rgba(0, 0, 0, 0.12);
}

.theme-light .mat-elevation-z16 {
  box-shadow: 0px 8px 10px -5px rgba(0, 0, 0, 0.2), 0px 16px 24px 2px rgba(0, 0, 0, 0.14), 0px 6px 30px 5px rgba(0, 0, 0, 0.12);
}

.theme-light .mat-elevation-z17 {
  box-shadow: 0px 8px 11px -5px rgba(0, 0, 0, 0.2), 0px 17px 26px 2px rgba(0, 0, 0, 0.14), 0px 6px 32px 5px rgba(0, 0, 0, 0.12);
}

.theme-light .mat-elevation-z18 {
  box-shadow: 0px 9px 11px -5px rgba(0, 0, 0, 0.2), 0px 18px 28px 2px rgba(0, 0, 0, 0.14), 0px 7px 34px 6px rgba(0, 0, 0, 0.12);
}

.theme-light .mat-elevation-z19 {
  box-shadow: 0px 9px 12px -6px rgba(0, 0, 0, 0.2), 0px 19px 29px 2px rgba(0, 0, 0, 0.14), 0px 7px 36px 6px rgba(0, 0, 0, 0.12);
}

.theme-light .mat-elevation-z20 {
  box-shadow: 0px 10px 13px -6px rgba(0, 0, 0, 0.2), 0px 20px 31px 3px rgba(0, 0, 0, 0.14), 0px 8px 38px 7px rgba(0, 0, 0, 0.12);
}

.theme-light .mat-elevation-z21 {
  box-shadow: 0px 10px 13px -6px rgba(0, 0, 0, 0.2), 0px 21px 33px 3px rgba(0, 0, 0, 0.14), 0px 8px 40px 7px rgba(0, 0, 0, 0.12);
}

.theme-light .mat-elevation-z22 {
  box-shadow: 0px 10px 14px -6px rgba(0, 0, 0, 0.2), 0px 22px 35px 3px rgba(0, 0, 0, 0.14), 0px 8px 42px 7px rgba(0, 0, 0, 0.12);
}

.theme-light .mat-elevation-z23 {
  box-shadow: 0px 11px 14px -7px rgba(0, 0, 0, 0.2), 0px 23px 36px 3px rgba(0, 0, 0, 0.14), 0px 9px 44px 8px rgba(0, 0, 0, 0.12);
}

.theme-light .mat-elevation-z24 {
  box-shadow: 0px 11px 15px -7px rgba(0, 0, 0, 0.2), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 9px 46px 8px rgba(0, 0, 0, 0.12);
}

.mat-theme-loaded-marker {
  display: none;
}

.theme-light .mat-autocomplete-panel {
  background: white;
  color: rgba(0, 0, 0, 0.87);
}

.theme-light .mat-autocomplete-panel:not([class*=mat-elevation-z]) {
  box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12);
}

.theme-light .mat-autocomplete-panel .mat-option.mat-selected:not(.mat-active):not(:hover) {
  background: white;
}

.theme-light .mat-autocomplete-panel .mat-option.mat-selected:not(.mat-active):not(:hover):not(.mat-option-disabled) {
  color: rgba(0, 0, 0, 0.87);
}

.theme-light .mat-badge-content {
  color: rgba(var(--dynamic-primary-contrast-500), 1);
  background: rgba(var(--dynamic-primary-500), 1);
}

.cdk-high-contrast-active .theme-light .mat-badge-content {
  outline: solid 1px;
  border-radius: 0;
}

.theme-light .mat-badge-accent .mat-badge-content {
  background: rgba(var(--dynamic-accent-500), 1);
  color: rgba(var(--dynamic-accent-contrast-500), 1);
}

.theme-light .mat-badge-warn .mat-badge-content {
  color: black;
  background: #ff7f6b;
}

.theme-light .mat-badge {
  position: relative;
}

.theme-light .mat-badge-hidden .mat-badge-content {
  display: none;
}

.theme-light .mat-badge-disabled .mat-badge-content {
  background: #b9b9b9;
  color: rgba(0, 0, 0, 0.38);
}

.theme-light .mat-badge-content {
  position: absolute;
  text-align: center;
  display: inline-block;
  border-radius: 50%;
  transition: transform 200ms ease-in-out;
  transform: scale(0.6);
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
  pointer-events: none;
}

.theme-light .ng-animate-disabled .mat-badge-content,
.theme-light .mat-badge-content._mat-animation-noopable {
  transition: none;
}

.theme-light .mat-badge-content.mat-badge-active {
  transform: none;
}

.theme-light .mat-badge-small .mat-badge-content {
  width: 16px;
  height: 16px;
  line-height: 16px;
}

.theme-light .mat-badge-small.mat-badge-above .mat-badge-content {
  top: -8px;
}

.theme-light .mat-badge-small.mat-badge-below .mat-badge-content {
  bottom: -8px;
}

.theme-light .mat-badge-small.mat-badge-before .mat-badge-content {
  left: -16px;
}

[dir=rtl] .theme-light .mat-badge-small.mat-badge-before .mat-badge-content {
  left: auto;
  right: -16px;
}

.theme-light .mat-badge-small.mat-badge-after .mat-badge-content {
  right: -16px;
}

[dir=rtl] .theme-light .mat-badge-small.mat-badge-after .mat-badge-content {
  right: auto;
  left: -16px;
}

.theme-light .mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content {
  left: -8px;
}

[dir=rtl] .theme-light .mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content {
  left: auto;
  right: -8px;
}

.theme-light .mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content {
  right: -8px;
}

[dir=rtl] .theme-light .mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content {
  right: auto;
  left: -8px;
}

.theme-light .mat-badge-medium .mat-badge-content {
  width: 22px;
  height: 22px;
  line-height: 22px;
}

.theme-light .mat-badge-medium.mat-badge-above .mat-badge-content {
  top: -11px;
}

.theme-light .mat-badge-medium.mat-badge-below .mat-badge-content {
  bottom: -11px;
}

.theme-light .mat-badge-medium.mat-badge-before .mat-badge-content {
  left: -22px;
}

[dir=rtl] .theme-light .mat-badge-medium.mat-badge-before .mat-badge-content {
  left: auto;
  right: -22px;
}

.theme-light .mat-badge-medium.mat-badge-after .mat-badge-content {
  right: -22px;
}

[dir=rtl] .theme-light .mat-badge-medium.mat-badge-after .mat-badge-content {
  right: auto;
  left: -22px;
}

.theme-light .mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content {
  left: -11px;
}

[dir=rtl] .theme-light .mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content {
  left: auto;
  right: -11px;
}

.theme-light .mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content {
  right: -11px;
}

[dir=rtl] .theme-light .mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content {
  right: auto;
  left: -11px;
}

.theme-light .mat-badge-large .mat-badge-content {
  width: 28px;
  height: 28px;
  line-height: 28px;
}

.theme-light .mat-badge-large.mat-badge-above .mat-badge-content {
  top: -14px;
}

.theme-light .mat-badge-large.mat-badge-below .mat-badge-content {
  bottom: -14px;
}

.theme-light .mat-badge-large.mat-badge-before .mat-badge-content {
  left: -28px;
}

[dir=rtl] .theme-light .mat-badge-large.mat-badge-before .mat-badge-content {
  left: auto;
  right: -28px;
}

.theme-light .mat-badge-large.mat-badge-after .mat-badge-content {
  right: -28px;
}

[dir=rtl] .theme-light .mat-badge-large.mat-badge-after .mat-badge-content {
  right: auto;
  left: -28px;
}

.theme-light .mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content {
  left: -14px;
}

[dir=rtl] .theme-light .mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content {
  left: auto;
  right: -14px;
}

.theme-light .mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content {
  right: -14px;
}

[dir=rtl] .theme-light .mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content {
  right: auto;
  left: -14px;
}

.theme-light .mat-bottom-sheet-container {
  box-shadow: 0px 8px 10px -5px rgba(0, 0, 0, 0.2), 0px 16px 24px 2px rgba(0, 0, 0, 0.14), 0px 6px 30px 5px rgba(0, 0, 0, 0.12);
  background: white;
  color: rgba(0, 0, 0, 0.87);
}

.theme-light .mat-button, .theme-light .mat-icon-button, .theme-light .mat-stroked-button {
  color: inherit;
  background: transparent;
}

.theme-light .mat-button.mat-primary, .theme-light .mat-icon-button.mat-primary, .theme-light .mat-stroked-button.mat-primary {
  color: rgba(var(--dynamic-primary-500), 1);
}

.theme-light .mat-button.mat-accent, .theme-light .mat-icon-button.mat-accent, .theme-light .mat-stroked-button.mat-accent {
  color: rgba(var(--dynamic-accent-500), 1);
}

.theme-light .mat-button.mat-warn, .theme-light .mat-icon-button.mat-warn, .theme-light .mat-stroked-button.mat-warn {
  color: #ff7f6b;
}

.theme-light .mat-button.mat-primary.mat-button-disabled, .theme-light .mat-button.mat-accent.mat-button-disabled, .theme-light .mat-button.mat-warn.mat-button-disabled, .theme-light .mat-button.mat-button-disabled.mat-button-disabled, .theme-light .mat-icon-button.mat-primary.mat-button-disabled, .theme-light .mat-icon-button.mat-accent.mat-button-disabled, .theme-light .mat-icon-button.mat-warn.mat-button-disabled, .theme-light .mat-icon-button.mat-button-disabled.mat-button-disabled, .theme-light .mat-stroked-button.mat-primary.mat-button-disabled, .theme-light .mat-stroked-button.mat-accent.mat-button-disabled, .theme-light .mat-stroked-button.mat-warn.mat-button-disabled, .theme-light .mat-stroked-button.mat-button-disabled.mat-button-disabled {
  color: rgba(0, 0, 0, 0.26);
}

.theme-light .mat-button.mat-primary .mat-button-focus-overlay, .theme-light .mat-icon-button.mat-primary .mat-button-focus-overlay, .theme-light .mat-stroked-button.mat-primary .mat-button-focus-overlay {
  background-color: rgba(var(--dynamic-primary-500), 1);
}

.theme-light .mat-button.mat-accent .mat-button-focus-overlay, .theme-light .mat-icon-button.mat-accent .mat-button-focus-overlay, .theme-light .mat-stroked-button.mat-accent .mat-button-focus-overlay {
  background-color: rgba(var(--dynamic-accent-500), 1);
}

.theme-light .mat-button.mat-warn .mat-button-focus-overlay, .theme-light .mat-icon-button.mat-warn .mat-button-focus-overlay, .theme-light .mat-stroked-button.mat-warn .mat-button-focus-overlay {
  background-color: #ff7f6b;
}

.theme-light .mat-button.mat-button-disabled .mat-button-focus-overlay, .theme-light .mat-icon-button.mat-button-disabled .mat-button-focus-overlay, .theme-light .mat-stroked-button.mat-button-disabled .mat-button-focus-overlay {
  background-color: transparent;
}

.theme-light .mat-button .mat-ripple-element, .theme-light .mat-icon-button .mat-ripple-element, .theme-light .mat-stroked-button .mat-ripple-element {
  opacity: 0.1;
  background-color: currentColor;
}

.theme-light .mat-button-focus-overlay {
  background: black;
}

.theme-light .mat-stroked-button:not(.mat-button-disabled) {
  border-color: rgba(0, 0, 0, 0.12);
}

.theme-light .mat-flat-button, .theme-light .mat-raised-button, .theme-light .mat-fab, .theme-light .mat-mini-fab {
  color: rgba(0, 0, 0, 0.87);
  background-color: white;
}

.theme-light .mat-flat-button.mat-primary, .theme-light .mat-raised-button.mat-primary, .theme-light .mat-fab.mat-primary, .theme-light .mat-mini-fab.mat-primary {
  color: rgba(var(--dynamic-primary-contrast-500), 1);
}

.theme-light .mat-flat-button.mat-accent, .theme-light .mat-raised-button.mat-accent, .theme-light .mat-fab.mat-accent, .theme-light .mat-mini-fab.mat-accent {
  color: rgba(var(--dynamic-accent-contrast-500), 1);
}

.theme-light .mat-flat-button.mat-warn, .theme-light .mat-raised-button.mat-warn, .theme-light .mat-fab.mat-warn, .theme-light .mat-mini-fab.mat-warn {
  color: black;
}

.theme-light .mat-flat-button.mat-primary.mat-button-disabled, .theme-light .mat-flat-button.mat-accent.mat-button-disabled, .theme-light .mat-flat-button.mat-warn.mat-button-disabled, .theme-light .mat-flat-button.mat-button-disabled.mat-button-disabled, .theme-light .mat-raised-button.mat-primary.mat-button-disabled, .theme-light .mat-raised-button.mat-accent.mat-button-disabled, .theme-light .mat-raised-button.mat-warn.mat-button-disabled, .theme-light .mat-raised-button.mat-button-disabled.mat-button-disabled, .theme-light .mat-fab.mat-primary.mat-button-disabled, .theme-light .mat-fab.mat-accent.mat-button-disabled, .theme-light .mat-fab.mat-warn.mat-button-disabled, .theme-light .mat-fab.mat-button-disabled.mat-button-disabled, .theme-light .mat-mini-fab.mat-primary.mat-button-disabled, .theme-light .mat-mini-fab.mat-accent.mat-button-disabled, .theme-light .mat-mini-fab.mat-warn.mat-button-disabled, .theme-light .mat-mini-fab.mat-button-disabled.mat-button-disabled {
  color: rgba(0, 0, 0, 0.26);
}

.theme-light .mat-flat-button.mat-primary, .theme-light .mat-raised-button.mat-primary, .theme-light .mat-fab.mat-primary, .theme-light .mat-mini-fab.mat-primary {
  background-color: rgba(var(--dynamic-primary-500), 1);
}

.theme-light .mat-flat-button.mat-accent, .theme-light .mat-raised-button.mat-accent, .theme-light .mat-fab.mat-accent, .theme-light .mat-mini-fab.mat-accent {
  background-color: rgba(var(--dynamic-accent-500), 1);
}

.theme-light .mat-flat-button.mat-warn, .theme-light .mat-raised-button.mat-warn, .theme-light .mat-fab.mat-warn, .theme-light .mat-mini-fab.mat-warn {
  background-color: #ff7f6b;
}

.theme-light .mat-flat-button.mat-primary.mat-button-disabled, .theme-light .mat-flat-button.mat-accent.mat-button-disabled, .theme-light .mat-flat-button.mat-warn.mat-button-disabled, .theme-light .mat-flat-button.mat-button-disabled.mat-button-disabled, .theme-light .mat-raised-button.mat-primary.mat-button-disabled, .theme-light .mat-raised-button.mat-accent.mat-button-disabled, .theme-light .mat-raised-button.mat-warn.mat-button-disabled, .theme-light .mat-raised-button.mat-button-disabled.mat-button-disabled, .theme-light .mat-fab.mat-primary.mat-button-disabled, .theme-light .mat-fab.mat-accent.mat-button-disabled, .theme-light .mat-fab.mat-warn.mat-button-disabled, .theme-light .mat-fab.mat-button-disabled.mat-button-disabled, .theme-light .mat-mini-fab.mat-primary.mat-button-disabled, .theme-light .mat-mini-fab.mat-accent.mat-button-disabled, .theme-light .mat-mini-fab.mat-warn.mat-button-disabled, .theme-light .mat-mini-fab.mat-button-disabled.mat-button-disabled {
  background-color: rgba(0, 0, 0, 0.12);
}

.theme-light .mat-flat-button.mat-primary .mat-ripple-element, .theme-light .mat-raised-button.mat-primary .mat-ripple-element, .theme-light .mat-fab.mat-primary .mat-ripple-element, .theme-light .mat-mini-fab.mat-primary .mat-ripple-element {
  background-color: rgba(var(--dynamic-primary-contrast-500),0.1);
  opacity: 0.1;
}

.theme-light .mat-flat-button.mat-accent .mat-ripple-element, .theme-light .mat-raised-button.mat-accent .mat-ripple-element, .theme-light .mat-fab.mat-accent .mat-ripple-element, .theme-light .mat-mini-fab.mat-accent .mat-ripple-element {
  background-color: rgba(var(--dynamic-accent-contrast-500),0.1);
  opacity: 0.1;
}

.theme-light .mat-flat-button.mat-warn .mat-ripple-element, .theme-light .mat-raised-button.mat-warn .mat-ripple-element, .theme-light .mat-fab.mat-warn .mat-ripple-element, .theme-light .mat-mini-fab.mat-warn .mat-ripple-element {
  background-color: rgba(0, 0, 0, 0.1);
}

.theme-light .mat-stroked-button:not([class*=mat-elevation-z]), .theme-light .mat-flat-button:not([class*=mat-elevation-z]) {
  box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12);
}

.theme-light .mat-raised-button:not([class*=mat-elevation-z]) {
  box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12);
}

.theme-light .mat-raised-button:not(.mat-button-disabled):active:not([class*=mat-elevation-z]) {
  box-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.2), 0px 8px 10px 1px rgba(0, 0, 0, 0.14), 0px 3px 14px 2px rgba(0, 0, 0, 0.12);
}

.theme-light .mat-raised-button.mat-button-disabled:not([class*=mat-elevation-z]) {
  box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12);
}

.theme-light .mat-fab:not([class*=mat-elevation-z]), .theme-light .mat-mini-fab:not([class*=mat-elevation-z]) {
  box-shadow: 0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12);
}

.theme-light .mat-fab:not(.mat-button-disabled):active:not([class*=mat-elevation-z]), .theme-light .mat-mini-fab:not(.mat-button-disabled):active:not([class*=mat-elevation-z]) {
  box-shadow: 0px 7px 8px -4px rgba(0, 0, 0, 0.2), 0px 12px 17px 2px rgba(0, 0, 0, 0.14), 0px 5px 22px 4px rgba(0, 0, 0, 0.12);
}

.theme-light .mat-fab.mat-button-disabled:not([class*=mat-elevation-z]), .theme-light .mat-mini-fab.mat-button-disabled:not([class*=mat-elevation-z]) {
  box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12);
}

.theme-light .mat-button-toggle-standalone,
.theme-light .mat-button-toggle-group {
  box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12);
}

.theme-light .mat-button-toggle-standalone.mat-button-toggle-appearance-standard,
.theme-light .mat-button-toggle-group-appearance-standard {
  box-shadow: none;
}

.theme-light .mat-button-toggle {
  color: rgba(0, 0, 0, 0.38);
}

.theme-light .mat-button-toggle .mat-button-toggle-focus-overlay {
  background-color: rgba(0, 0, 0, 0.12);
}

.theme-light .mat-button-toggle-appearance-standard {
  color: rgba(0, 0, 0, 0.87);
  background: white;
}

.theme-light .mat-button-toggle-appearance-standard .mat-button-toggle-focus-overlay {
  background-color: black;
}

.theme-light .mat-button-toggle-group-appearance-standard .mat-button-toggle + .mat-button-toggle {
  border-left: solid 1px rgba(0, 0, 0, 0.12);
}

.theme-light [dir=rtl] .mat-button-toggle-group-appearance-standard .mat-button-toggle + .mat-button-toggle {
  border-left: none;
  border-right: solid 1px rgba(0, 0, 0, 0.12);
}

.theme-light .mat-button-toggle-group-appearance-standard.mat-button-toggle-vertical .mat-button-toggle + .mat-button-toggle {
  border-left: none;
  border-right: none;
  border-top: solid 1px rgba(0, 0, 0, 0.12);
}

.theme-light .mat-button-toggle-checked {
  background-color: #e0e0e0;
  color: rgba(0, 0, 0, 0.54);
}

.theme-light .mat-button-toggle-checked.mat-button-toggle-appearance-standard {
  color: rgba(0, 0, 0, 0.87);
}

.theme-light .mat-button-toggle-disabled {
  color: rgba(0, 0, 0, 0.26);
  background-color: #eeeeee;
}

.theme-light .mat-button-toggle-disabled.mat-button-toggle-appearance-standard {
  background: white;
}

.theme-light .mat-button-toggle-disabled.mat-button-toggle-checked {
  background-color: #bdbdbd;
}

.theme-light .mat-button-toggle-standalone.mat-button-toggle-appearance-standard,
.theme-light .mat-button-toggle-group-appearance-standard {
  border: solid 1px rgba(0, 0, 0, 0.12);
}

.theme-light .mat-button-toggle-appearance-standard .mat-button-toggle-label-content {
  line-height: 48px;
}

.theme-light .mat-card {
  background: white;
  color: rgba(0, 0, 0, 0.87);
}

.theme-light .mat-card:not([class*=mat-elevation-z]) {
  box-shadow: 0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12);
}

.theme-light .mat-card.mat-card-flat:not([class*=mat-elevation-z]) {
  box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12);
}

.theme-light .mat-card-subtitle {
  color: rgba(0, 0, 0, 0.54);
}

.theme-light .mat-checkbox-frame {
  border-color: rgba(0, 0, 0, 0.54);
}

.theme-light .mat-checkbox-checkmark {
  fill: #fafafa;
}

.theme-light .mat-checkbox-checkmark-path {
  stroke: #fafafa !important;
}

.theme-light .mat-checkbox-mixedmark {
  background-color: #fafafa;
}

.theme-light .mat-checkbox-indeterminate.mat-primary .mat-checkbox-background, .theme-light .mat-checkbox-checked.mat-primary .mat-checkbox-background {
  background-color: rgba(var(--dynamic-primary-500), 1);
}

.theme-light .mat-checkbox-indeterminate.mat-accent .mat-checkbox-background, .theme-light .mat-checkbox-checked.mat-accent .mat-checkbox-background {
  background-color: rgba(var(--dynamic-accent-500), 1);
}

.theme-light .mat-checkbox-indeterminate.mat-warn .mat-checkbox-background, .theme-light .mat-checkbox-checked.mat-warn .mat-checkbox-background {
  background-color: #ff7f6b;
}

.theme-light .mat-checkbox-disabled.mat-checkbox-checked .mat-checkbox-background, .theme-light .mat-checkbox-disabled.mat-checkbox-indeterminate .mat-checkbox-background {
  background-color: #b0b0b0;
}

.theme-light .mat-checkbox-disabled:not(.mat-checkbox-checked) .mat-checkbox-frame {
  border-color: #b0b0b0;
}

.theme-light .mat-checkbox-disabled .mat-checkbox-label {
  color: rgba(0, 0, 0, 0.54);
}

.theme-light .mat-checkbox .mat-ripple-element {
  background-color: black;
}

.theme-light .mat-checkbox-checked:not(.mat-checkbox-disabled).mat-primary .mat-ripple-element,
.theme-light .mat-checkbox:active:not(.mat-checkbox-disabled).mat-primary .mat-ripple-element {
  background: rgba(var(--dynamic-primary-500), 1);
}

.theme-light .mat-checkbox-checked:not(.mat-checkbox-disabled).mat-accent .mat-ripple-element,
.theme-light .mat-checkbox:active:not(.mat-checkbox-disabled).mat-accent .mat-ripple-element {
  background: rgba(var(--dynamic-accent-500), 1);
}

.theme-light .mat-checkbox-checked:not(.mat-checkbox-disabled).mat-warn .mat-ripple-element,
.theme-light .mat-checkbox:active:not(.mat-checkbox-disabled).mat-warn .mat-ripple-element {
  background: #ff7f6b;
}

.theme-light .mat-chip.mat-standard-chip {
  background-color: #e0e0e0;
  color: rgba(0, 0, 0, 0.87);
}

.theme-light .mat-chip.mat-standard-chip .mat-chip-remove {
  color: rgba(0, 0, 0, 0.87);
  opacity: 0.4;
}

.theme-light .mat-chip.mat-standard-chip:not(.mat-chip-disabled):active {
  box-shadow: 0px 3px 3px -2px rgba(0, 0, 0, 0.2), 0px 3px 4px 0px rgba(0, 0, 0, 0.14), 0px 1px 8px 0px rgba(0, 0, 0, 0.12);
}

.theme-light .mat-chip.mat-standard-chip:not(.mat-chip-disabled) .mat-chip-remove:hover {
  opacity: 0.54;
}

.theme-light .mat-chip.mat-standard-chip.mat-chip-disabled {
  opacity: 0.4;
}

.theme-light .mat-chip.mat-standard-chip::after {
  background: black;
}

.theme-light .mat-chip.mat-standard-chip.mat-chip-selected.mat-primary {
  background-color: rgba(var(--dynamic-primary-500), 1);
  color: rgba(var(--dynamic-primary-contrast-500), 1);
}

.theme-light .mat-chip.mat-standard-chip.mat-chip-selected.mat-primary .mat-chip-remove {
  color: rgba(var(--dynamic-primary-contrast-500), 1);
  opacity: 0.4;
}

.theme-light .mat-chip.mat-standard-chip.mat-chip-selected.mat-primary .mat-ripple-element {
  background-color: rgba(var(--dynamic-primary-contrast-500),0.1);
  opacity: 0.1;
}

.theme-light .mat-chip.mat-standard-chip.mat-chip-selected.mat-warn {
  background-color: #ff7f6b;
  color: black;
}

.theme-light .mat-chip.mat-standard-chip.mat-chip-selected.mat-warn .mat-chip-remove {
  color: black;
  opacity: 0.4;
}

.theme-light .mat-chip.mat-standard-chip.mat-chip-selected.mat-warn .mat-ripple-element {
  background-color: rgba(0, 0, 0, 0.1);
}

.theme-light .mat-chip.mat-standard-chip.mat-chip-selected.mat-accent {
  background-color: rgba(var(--dynamic-accent-500), 1);
  color: rgba(var(--dynamic-accent-contrast-500), 1);
}

.theme-light .mat-chip.mat-standard-chip.mat-chip-selected.mat-accent .mat-chip-remove {
  color: rgba(var(--dynamic-accent-contrast-500), 1);
  opacity: 0.4;
}

.theme-light .mat-chip.mat-standard-chip.mat-chip-selected.mat-accent .mat-ripple-element {
  background-color: rgba(var(--dynamic-accent-contrast-500),0.1);
  opacity: 0.1;
}

.theme-light .mat-table {
  background: white;
}

.theme-light .mat-table thead, .theme-light .mat-table tbody, .theme-light .mat-table tfoot,
.theme-light mat-header-row, .theme-light mat-row, .theme-light mat-footer-row,
.theme-light [mat-header-row], .theme-light [mat-row], .theme-light [mat-footer-row],
.theme-light .mat-table-sticky {
  background: inherit;
}

.theme-light mat-row, .theme-light mat-header-row, .theme-light mat-footer-row,
.theme-light th.mat-header-cell, .theme-light td.mat-cell, .theme-light td.mat-footer-cell {
  border-bottom-color: rgba(0, 0, 0, 0.12);
}

.theme-light .mat-header-cell {
  color: rgba(0, 0, 0, 0.54);
}

.theme-light .mat-cell, .theme-light .mat-footer-cell {
  color: rgba(0, 0, 0, 0.87);
}

.theme-light .mat-calendar-arrow {
  border-top-color: rgba(0, 0, 0, 0.54);
}

.theme-light .mat-datepicker-toggle,
.theme-light .mat-datepicker-content .mat-calendar-next-button,
.theme-light .mat-datepicker-content .mat-calendar-previous-button {
  color: rgba(0, 0, 0, 0.54);
}

.theme-light .mat-calendar-table-header {
  color: rgba(0, 0, 0, 0.38);
}

.theme-light .mat-calendar-table-header-divider::after {
  background: rgba(0, 0, 0, 0.12);
}

.theme-light .mat-calendar-body-label {
  color: rgba(0, 0, 0, 0.54);
}

.theme-light .mat-calendar-body-cell-content,
.theme-light .mat-date-range-input-separator {
  color: rgba(0, 0, 0, 0.87);
  border-color: transparent;
}

.theme-light .mat-calendar-body-disabled > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical) {
  color: rgba(0, 0, 0, 0.38);
}

.theme-light .mat-form-field-disabled .mat-date-range-input-separator {
  color: rgba(0, 0, 0, 0.38);
}

.theme-light .mat-calendar-body-in-preview {
  color: rgba(0, 0, 0, 0.24);
}

.theme-light .mat-calendar-body-today:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical) {
  border-color: rgba(0, 0, 0, 0.38);
}

.theme-light .mat-calendar-body-disabled > .mat-calendar-body-today:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical) {
  border-color: rgba(0, 0, 0, 0.18);
}

.theme-light .mat-calendar-body-in-range::before {
  background: rgba(var(--dynamic-primary-500),0.2);
}

.theme-light .mat-calendar-body-comparison-identical,
.theme-light .mat-calendar-body-in-comparison-range::before {
  background: rgba(249, 171, 0, 0.2);
}

.theme-light .mat-calendar-body-comparison-bridge-start::before,
.theme-light [dir=rtl] .mat-calendar-body-comparison-bridge-end::before {
  background: linear-gradient(to right, rgba(var(--dynamic-primary-500),0.2) 50%, rgba(249, 171, 0, 0.2) 50%);
}

.theme-light .mat-calendar-body-comparison-bridge-end::before,
.theme-light [dir=rtl] .mat-calendar-body-comparison-bridge-start::before {
  background: linear-gradient(to left, rgba(var(--dynamic-primary-500),0.2) 50%, rgba(249, 171, 0, 0.2) 50%);
}

.theme-light .mat-calendar-body-in-range > .mat-calendar-body-comparison-identical,
.theme-light .mat-calendar-body-in-comparison-range.mat-calendar-body-in-range::after {
  background: #a8dab5;
}

.theme-light .mat-calendar-body-comparison-identical.mat-calendar-body-selected,
.theme-light .mat-calendar-body-in-comparison-range > .mat-calendar-body-selected {
  background: #46a35e;
}

.theme-light .mat-calendar-body-selected {
  background-color: rgba(var(--dynamic-primary-500), 1);
  color: rgba(var(--dynamic-primary-contrast-500), 1);
}

.theme-light .mat-calendar-body-disabled > .mat-calendar-body-selected {
  opacity: 0.2;
}

.theme-light .mat-calendar-body-today.mat-calendar-body-selected {
  box-shadow: inset 0 0 0 1px rgba(var(--dynamic-primary-contrast-500), 1);
}

.theme-light .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),
.theme-light .cdk-keyboard-focused .mat-calendar-body-active > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),
.theme-light .cdk-program-focused .mat-calendar-body-active > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical) {
  background-color: rgba(var(--dynamic-primary-500),0.3);
}

.theme-light .mat-datepicker-content {
  box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12);
  background-color: white;
  color: rgba(0, 0, 0, 0.87);
}

.theme-light .mat-datepicker-content.mat-accent .mat-calendar-body-in-range::before {
  background: rgba(var(--dynamic-accent-500),0.2);
}

.theme-light .mat-datepicker-content.mat-accent .mat-calendar-body-comparison-identical,
.theme-light .mat-datepicker-content.mat-accent .mat-calendar-body-in-comparison-range::before {
  background: rgba(249, 171, 0, 0.2);
}

.theme-light .mat-datepicker-content.mat-accent .mat-calendar-body-comparison-bridge-start::before,
.theme-light .mat-datepicker-content.mat-accent [dir=rtl] .mat-calendar-body-comparison-bridge-end::before {
  background: linear-gradient(to right, rgba(var(--dynamic-accent-500),0.2) 50%, rgba(249, 171, 0, 0.2) 50%);
}

.theme-light .mat-datepicker-content.mat-accent .mat-calendar-body-comparison-bridge-end::before,
.theme-light .mat-datepicker-content.mat-accent [dir=rtl] .mat-calendar-body-comparison-bridge-start::before {
  background: linear-gradient(to left, rgba(var(--dynamic-accent-500),0.2) 50%, rgba(249, 171, 0, 0.2) 50%);
}

.theme-light .mat-datepicker-content.mat-accent .mat-calendar-body-in-range > .mat-calendar-body-comparison-identical,
.theme-light .mat-datepicker-content.mat-accent .mat-calendar-body-in-comparison-range.mat-calendar-body-in-range::after {
  background: #a8dab5;
}

.theme-light .mat-datepicker-content.mat-accent .mat-calendar-body-comparison-identical.mat-calendar-body-selected,
.theme-light .mat-datepicker-content.mat-accent .mat-calendar-body-in-comparison-range > .mat-calendar-body-selected {
  background: #46a35e;
}

.theme-light .mat-datepicker-content.mat-accent .mat-calendar-body-selected {
  background-color: rgba(var(--dynamic-accent-500), 1);
  color: rgba(var(--dynamic-accent-contrast-500), 1);
}

.theme-light .mat-datepicker-content.mat-accent .mat-calendar-body-disabled > .mat-calendar-body-selected {
  opacity: 0.2;
}

.theme-light .mat-datepicker-content.mat-accent .mat-calendar-body-today.mat-calendar-body-selected {
  box-shadow: inset 0 0 0 1px rgba(var(--dynamic-accent-contrast-500), 1);
}

.theme-light .mat-datepicker-content.mat-accent .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),
.theme-light .mat-datepicker-content.mat-accent .cdk-keyboard-focused .mat-calendar-body-active > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),
.theme-light .mat-datepicker-content.mat-accent .cdk-program-focused .mat-calendar-body-active > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical) {
  background-color: rgba(var(--dynamic-accent-500),0.3);
}

.theme-light .mat-datepicker-content.mat-warn .mat-calendar-body-in-range::before {
  background: rgba(255, 127, 107, 0.2);
}

.theme-light .mat-datepicker-content.mat-warn .mat-calendar-body-comparison-identical,
.theme-light .mat-datepicker-content.mat-warn .mat-calendar-body-in-comparison-range::before {
  background: rgba(249, 171, 0, 0.2);
}

.theme-light .mat-datepicker-content.mat-warn .mat-calendar-body-comparison-bridge-start::before,
.theme-light .mat-datepicker-content.mat-warn [dir=rtl] .mat-calendar-body-comparison-bridge-end::before {
  background: linear-gradient(to right, rgba(255, 127, 107, 0.2) 50%, rgba(249, 171, 0, 0.2) 50%);
}

.theme-light .mat-datepicker-content.mat-warn .mat-calendar-body-comparison-bridge-end::before,
.theme-light .mat-datepicker-content.mat-warn [dir=rtl] .mat-calendar-body-comparison-bridge-start::before {
  background: linear-gradient(to left, rgba(255, 127, 107, 0.2) 50%, rgba(249, 171, 0, 0.2) 50%);
}

.theme-light .mat-datepicker-content.mat-warn .mat-calendar-body-in-range > .mat-calendar-body-comparison-identical,
.theme-light .mat-datepicker-content.mat-warn .mat-calendar-body-in-comparison-range.mat-calendar-body-in-range::after {
  background: #a8dab5;
}

.theme-light .mat-datepicker-content.mat-warn .mat-calendar-body-comparison-identical.mat-calendar-body-selected,
.theme-light .mat-datepicker-content.mat-warn .mat-calendar-body-in-comparison-range > .mat-calendar-body-selected {
  background: #46a35e;
}

.theme-light .mat-datepicker-content.mat-warn .mat-calendar-body-selected {
  background-color: #ff7f6b;
  color: black;
}

.theme-light .mat-datepicker-content.mat-warn .mat-calendar-body-disabled > .mat-calendar-body-selected {
  background-color: rgba(255, 127, 107, 0.4);
}

.theme-light .mat-datepicker-content.mat-warn .mat-calendar-body-today.mat-calendar-body-selected {
  box-shadow: inset 0 0 0 1px black;
}

.theme-light .mat-datepicker-content.mat-warn .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),
.theme-light .mat-datepicker-content.mat-warn .cdk-keyboard-focused .mat-calendar-body-active > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),
.theme-light .mat-datepicker-content.mat-warn .cdk-program-focused .mat-calendar-body-active > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical) {
  background-color: rgba(255, 127, 107, 0.3);
}

.theme-light .mat-datepicker-content-touch {
  box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12);
}

.theme-light .mat-datepicker-toggle-active {
  color: rgba(var(--dynamic-primary-500), 1);
}

.theme-light .mat-datepicker-toggle-active.mat-accent {
  color: rgba(var(--dynamic-accent-500), 1);
}

.theme-light .mat-datepicker-toggle-active.mat-warn {
  color: #ff7f6b;
}

.theme-light .mat-date-range-input-inner[disabled] {
  color: rgba(0, 0, 0, 0.38);
}

.theme-light .mat-dialog-container {
  box-shadow: 0px 11px 15px -7px rgba(0, 0, 0, 0.2), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 9px 46px 8px rgba(0, 0, 0, 0.12);
  background: white;
  color: rgba(0, 0, 0, 0.87);
}

.theme-light .mat-divider {
  border-top-color: rgba(0, 0, 0, 0.12);
}

.theme-light .mat-divider-vertical {
  border-right-color: rgba(0, 0, 0, 0.12);
}

.theme-light .mat-expansion-panel {
  background: white;
  color: rgba(0, 0, 0, 0.87);
}

.theme-light .mat-expansion-panel:not([class*=mat-elevation-z]) {
  box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12);
}

.theme-light .mat-action-row {
  border-top-color: rgba(0, 0, 0, 0.12);
}

.theme-light .mat-expansion-panel .mat-expansion-panel-header.cdk-keyboard-focused:not([aria-disabled=true]), .theme-light .mat-expansion-panel .mat-expansion-panel-header.cdk-program-focused:not([aria-disabled=true]), .theme-light .mat-expansion-panel:not(.mat-expanded) .mat-expansion-panel-header:hover:not([aria-disabled=true]) {
  background: rgba(0, 0, 0, 0.04);
}

@media (hover: none) {
  .theme-light .mat-expansion-panel:not(.mat-expanded):not([aria-disabled=true]) .mat-expansion-panel-header:hover {
    background: white;
  }
}

.theme-light .mat-expansion-panel-header-title {
  color: rgba(0, 0, 0, 0.87);
}

.theme-light .mat-expansion-panel-header-description,
.theme-light .mat-expansion-indicator::after {
  color: rgba(0, 0, 0, 0.54);
}

.theme-light .mat-expansion-panel-header[aria-disabled=true] {
  color: rgba(0, 0, 0, 0.26);
}

.theme-light .mat-expansion-panel-header[aria-disabled=true] .mat-expansion-panel-header-title,
.theme-light .mat-expansion-panel-header[aria-disabled=true] .mat-expansion-panel-header-description {
  color: inherit;
}

.theme-light .mat-expansion-panel-header {
  height: 48px;
}

.theme-light .mat-expansion-panel-header.mat-expanded {
  height: 64px;
}

.theme-light .mat-form-field-label {
  color: rgba(0, 0, 0, 0.6);
}

.theme-light .mat-hint {
  color: rgba(0, 0, 0, 0.6);
}

.theme-light .mat-form-field.mat-focused .mat-form-field-label {
  color: rgba(var(--dynamic-primary-500), 1);
}

.theme-light .mat-form-field.mat-focused .mat-form-field-label.mat-accent {
  color: rgba(var(--dynamic-accent-500), 1);
}

.theme-light .mat-form-field.mat-focused .mat-form-field-label.mat-warn {
  color: #ff7f6b;
}

.theme-light .mat-focused .mat-form-field-required-marker {
  color: rgba(var(--dynamic-accent-500), 1);
}

.theme-light .mat-form-field-ripple {
  background-color: rgba(0, 0, 0, 0.87);
}

.theme-light .mat-form-field.mat-focused .mat-form-field-ripple {
  background-color: rgba(var(--dynamic-primary-500), 1);
}

.theme-light .mat-form-field.mat-focused .mat-form-field-ripple.mat-accent {
  background-color: rgba(var(--dynamic-accent-500), 1);
}

.theme-light .mat-form-field.mat-focused .mat-form-field-ripple.mat-warn {
  background-color: #ff7f6b;
}

.theme-light .mat-form-field-type-mat-native-select.mat-focused:not(.mat-form-field-invalid) .mat-form-field-infix::after {
  color: rgba(var(--dynamic-primary-500), 1);
}

.theme-light .mat-form-field-type-mat-native-select.mat-focused:not(.mat-form-field-invalid).mat-accent .mat-form-field-infix::after {
  color: rgba(var(--dynamic-accent-500), 1);
}

.theme-light .mat-form-field-type-mat-native-select.mat-focused:not(.mat-form-field-invalid).mat-warn .mat-form-field-infix::after {
  color: #ff7f6b;
}

.theme-light .mat-form-field.mat-form-field-invalid .mat-form-field-label {
  color: #ff7f6b;
}

.theme-light .mat-form-field.mat-form-field-invalid .mat-form-field-label.mat-accent,
.theme-light .mat-form-field.mat-form-field-invalid .mat-form-field-label .mat-form-field-required-marker {
  color: #ff7f6b;
}

.theme-light .mat-form-field.mat-form-field-invalid .mat-form-field-ripple,
.theme-light .mat-form-field.mat-form-field-invalid .mat-form-field-ripple.mat-accent {
  background-color: #ff7f6b;
}

.theme-light .mat-error {
  color: #ff7f6b;
}

.theme-light .mat-form-field-appearance-legacy .mat-form-field-label {
  color: rgba(0, 0, 0, 0.54);
}

.theme-light .mat-form-field-appearance-legacy .mat-hint {
  color: rgba(0, 0, 0, 0.54);
}

.theme-light .mat-form-field-appearance-legacy .mat-form-field-underline {
  background-color: rgba(0, 0, 0, 0.42);
}

.theme-light .mat-form-field-appearance-legacy.mat-form-field-disabled .mat-form-field-underline {
  background-image: linear-gradient(to right, rgba(0, 0, 0, 0.42) 0%, rgba(0, 0, 0, 0.42) 33%, transparent 0%);
  background-size: 4px 100%;
  background-repeat: repeat-x;
}

.theme-light .mat-form-field-appearance-standard .mat-form-field-underline {
  background-color: rgba(0, 0, 0, 0.42);
}

.theme-light .mat-form-field-appearance-standard.mat-form-field-disabled .mat-form-field-underline {
  background-image: linear-gradient(to right, rgba(0, 0, 0, 0.42) 0%, rgba(0, 0, 0, 0.42) 33%, transparent 0%);
  background-size: 4px 100%;
  background-repeat: repeat-x;
}

.theme-light .mat-form-field-appearance-fill .mat-form-field-flex {
  background-color: rgba(0, 0, 0, 0.04);
}

.theme-light .mat-form-field-appearance-fill.mat-form-field-disabled .mat-form-field-flex {
  background-color: rgba(0, 0, 0, 0.02);
}

.theme-light .mat-form-field-appearance-fill .mat-form-field-underline::before {
  background-color: rgba(0, 0, 0, 0.42);
}

.theme-light .mat-form-field-appearance-fill.mat-form-field-disabled .mat-form-field-label {
  color: rgba(0, 0, 0, 0.38);
}

.theme-light .mat-form-field-appearance-fill.mat-form-field-disabled .mat-form-field-underline::before {
  background-color: transparent;
}

.theme-light .mat-form-field-appearance-outline .mat-form-field-outline {
  color: rgba(0, 0, 0, 0.12);
}

.theme-light .mat-form-field-appearance-outline .mat-form-field-outline-thick {
  color: rgba(0, 0, 0, 0.87);
}

.theme-light .mat-form-field-appearance-outline.mat-focused .mat-form-field-outline-thick {
  color: rgba(var(--dynamic-primary-500), 1);
}

.theme-light .mat-form-field-appearance-outline.mat-focused.mat-accent .mat-form-field-outline-thick {
  color: rgba(var(--dynamic-accent-500), 1);
}

.theme-light .mat-form-field-appearance-outline.mat-focused.mat-warn .mat-form-field-outline-thick {
  color: #ff7f6b;
}

.theme-light .mat-form-field-appearance-outline.mat-form-field-invalid.mat-form-field-invalid .mat-form-field-outline-thick {
  color: #ff7f6b;
}

.theme-light .mat-form-field-appearance-outline.mat-form-field-disabled .mat-form-field-label {
  color: rgba(0, 0, 0, 0.38);
}

.theme-light .mat-form-field-appearance-outline.mat-form-field-disabled .mat-form-field-outline {
  color: rgba(0, 0, 0, 0.06);
}

.theme-light .mat-icon.mat-primary {
  color: rgba(var(--dynamic-primary-500), 1);
}

.theme-light .mat-icon.mat-accent {
  color: rgba(var(--dynamic-accent-500), 1);
}

.theme-light .mat-icon.mat-warn {
  color: #ff7f6b;
}

.theme-light .mat-form-field-type-mat-native-select .mat-form-field-infix::after {
  color: rgba(0, 0, 0, 0.54);
}

.theme-light .mat-input-element:disabled,
.theme-light .mat-form-field-type-mat-native-select.mat-form-field-disabled .mat-form-field-infix::after {
  color: rgba(0, 0, 0, 0.38);
}

.theme-light .mat-input-element {
  caret-color: rgba(var(--dynamic-primary-500), 1);
}

.theme-light .mat-input-element::placeholder {
  color: rgba(0, 0, 0, 0.42);
}

.theme-light .mat-input-element::-moz-placeholder {
  color: rgba(0, 0, 0, 0.42);
}

.theme-light .mat-input-element::-webkit-input-placeholder {
  color: rgba(0, 0, 0, 0.42);
}

.theme-light .mat-input-element:-ms-input-placeholder {
  color: rgba(0, 0, 0, 0.42);
}

.theme-light .mat-form-field.mat-accent .mat-input-element {
  caret-color: rgba(var(--dynamic-accent-500), 1);
}

.theme-light .mat-form-field.mat-warn .mat-input-element,
.theme-light .mat-form-field-invalid .mat-input-element {
  caret-color: #ff7f6b;
}

.theme-light .mat-form-field-type-mat-native-select.mat-form-field-invalid .mat-form-field-infix::after {
  color: #ff7f6b;
}

.theme-light .mat-list-base .mat-list-item {
  color: rgba(0, 0, 0, 0.87);
}

.theme-light .mat-list-base .mat-list-option {
  color: rgba(0, 0, 0, 0.87);
}

.theme-light .mat-list-base .mat-subheader {
  color: rgba(0, 0, 0, 0.54);
}

.theme-light .mat-list-item-disabled {
  background-color: #eeeeee;
}

.theme-light .mat-list-option:hover, .theme-light .mat-list-option:focus,
.theme-light .mat-nav-list .mat-list-item:hover,
.theme-light .mat-nav-list .mat-list-item:focus,
.theme-light .mat-action-list .mat-list-item:hover,
.theme-light .mat-action-list .mat-list-item:focus {
  background: rgba(0, 0, 0, 0.04);
}

.theme-light .mat-list-single-selected-option, .theme-light .mat-list-single-selected-option:hover, .theme-light .mat-list-single-selected-option:focus {
  background: rgba(0, 0, 0, 0.12);
}

.theme-light .mat-menu-panel {
  background: white;
}

.theme-light .mat-menu-panel:not([class*=mat-elevation-z]) {
  box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12);
}

.theme-light .mat-menu-item {
  background: transparent;
  color: rgba(0, 0, 0, 0.87);
}

.theme-light .mat-menu-item[disabled], .theme-light .mat-menu-item[disabled]::after,
.theme-light .mat-menu-item[disabled] .mat-icon-no-color {
  color: rgba(0, 0, 0, 0.38);
}

.theme-light .mat-menu-item .mat-icon-no-color,
.theme-light .mat-menu-item-submenu-trigger::after {
  color: rgba(0, 0, 0, 0.54);
}

.theme-light .mat-menu-item:hover:not([disabled]),
.theme-light .mat-menu-item.cdk-program-focused:not([disabled]),
.theme-light .mat-menu-item.cdk-keyboard-focused:not([disabled]),
.theme-light .mat-menu-item-highlighted:not([disabled]) {
  background: rgba(0, 0, 0, 0.04);
}

.theme-light .mat-paginator {
  background: white;
}

.theme-light .mat-paginator,
.theme-light .mat-paginator-page-size .mat-select-trigger {
  color: rgba(0, 0, 0, 0.54);
}

.theme-light .mat-paginator-decrement,
.theme-light .mat-paginator-increment {
  border-top: 2px solid rgba(0, 0, 0, 0.54);
  border-right: 2px solid rgba(0, 0, 0, 0.54);
}

.theme-light .mat-paginator-first,
.theme-light .mat-paginator-last {
  border-top: 2px solid rgba(0, 0, 0, 0.54);
}

.theme-light .mat-icon-button[disabled] .mat-paginator-decrement,
.theme-light .mat-icon-button[disabled] .mat-paginator-increment,
.theme-light .mat-icon-button[disabled] .mat-paginator-first,
.theme-light .mat-icon-button[disabled] .mat-paginator-last {
  border-color: rgba(0, 0, 0, 0.38);
}

.theme-light .mat-paginator-container {
  min-height: 56px;
}

.theme-light .mat-progress-bar-background {
  fill: rgba(var(--dynamic-primary-100), 1);
}

.theme-light .mat-progress-bar-buffer {
  background-color: rgba(var(--dynamic-primary-100), 1);
}

.theme-light .mat-progress-bar-fill::after {
  background-color: rgba(var(--dynamic-primary-500), 1);
}

.theme-light .mat-progress-bar.mat-accent .mat-progress-bar-background {
  fill: rgba(var(--dynamic-accent-100), 1);
}

.theme-light .mat-progress-bar.mat-accent .mat-progress-bar-buffer {
  background-color: rgba(var(--dynamic-accent-100), 1);
}

.theme-light .mat-progress-bar.mat-accent .mat-progress-bar-fill::after {
  background-color: rgba(var(--dynamic-accent-500), 1);
}

.theme-light .mat-progress-bar.mat-warn .mat-progress-bar-background {
  fill: #ffd9d3;
}

.theme-light .mat-progress-bar.mat-warn .mat-progress-bar-buffer {
  background-color: #ffd9d3;
}

.theme-light .mat-progress-bar.mat-warn .mat-progress-bar-fill::after {
  background-color: #ff7f6b;
}

.theme-light .mat-progress-spinner circle, .theme-light .mat-spinner circle {
  stroke: rgba(var(--dynamic-primary-500), 1);
}

.theme-light .mat-progress-spinner.mat-accent circle, .theme-light .mat-spinner.mat-accent circle {
  stroke: rgba(var(--dynamic-accent-500), 1);
}

.theme-light .mat-progress-spinner.mat-warn circle, .theme-light .mat-spinner.mat-warn circle {
  stroke: #ff7f6b;
}

.theme-light .mat-radio-outer-circle {
  border-color: rgba(0, 0, 0, 0.54);
}

.theme-light .mat-radio-button.mat-primary.mat-radio-checked .mat-radio-outer-circle {
  border-color: rgba(var(--dynamic-primary-500), 1);
}

.theme-light .mat-radio-button.mat-primary .mat-radio-inner-circle,
.theme-light .mat-radio-button.mat-primary .mat-radio-ripple .mat-ripple-element:not(.mat-radio-persistent-ripple), .theme-light .mat-radio-button.mat-primary.mat-radio-checked .mat-radio-persistent-ripple, .theme-light .mat-radio-button.mat-primary:active .mat-radio-persistent-ripple {
  background-color: rgba(var(--dynamic-primary-500), 1);
}

.theme-light .mat-radio-button.mat-accent.mat-radio-checked .mat-radio-outer-circle {
  border-color: rgba(var(--dynamic-accent-500), 1);
}

.theme-light .mat-radio-button.mat-accent .mat-radio-inner-circle,
.theme-light .mat-radio-button.mat-accent .mat-radio-ripple .mat-ripple-element:not(.mat-radio-persistent-ripple), .theme-light .mat-radio-button.mat-accent.mat-radio-checked .mat-radio-persistent-ripple, .theme-light .mat-radio-button.mat-accent:active .mat-radio-persistent-ripple {
  background-color: rgba(var(--dynamic-accent-500), 1);
}

.theme-light .mat-radio-button.mat-warn.mat-radio-checked .mat-radio-outer-circle {
  border-color: #ff7f6b;
}

.theme-light .mat-radio-button.mat-warn .mat-radio-inner-circle,
.theme-light .mat-radio-button.mat-warn .mat-radio-ripple .mat-ripple-element:not(.mat-radio-persistent-ripple), .theme-light .mat-radio-button.mat-warn.mat-radio-checked .mat-radio-persistent-ripple, .theme-light .mat-radio-button.mat-warn:active .mat-radio-persistent-ripple {
  background-color: #ff7f6b;
}

.theme-light .mat-radio-button.mat-radio-disabled.mat-radio-checked .mat-radio-outer-circle,
.theme-light .mat-radio-button.mat-radio-disabled .mat-radio-outer-circle {
  border-color: rgba(0, 0, 0, 0.38);
}

.theme-light .mat-radio-button.mat-radio-disabled .mat-radio-ripple .mat-ripple-element,
.theme-light .mat-radio-button.mat-radio-disabled .mat-radio-inner-circle {
  background-color: rgba(0, 0, 0, 0.38);
}

.theme-light .mat-radio-button.mat-radio-disabled .mat-radio-label-content {
  color: rgba(0, 0, 0, 0.38);
}

.theme-light .mat-radio-button .mat-ripple-element {
  background-color: black;
}

.theme-light .mat-select-value {
  color: rgba(0, 0, 0, 0.87);
}

.theme-light .mat-select-placeholder {
  color: rgba(0, 0, 0, 0.42);
}

.theme-light .mat-select-disabled .mat-select-value {
  color: rgba(0, 0, 0, 0.38);
}

.theme-light .mat-select-arrow {
  color: rgba(0, 0, 0, 0.54);
}

.theme-light .mat-select-panel {
  background: white;
}

.theme-light .mat-select-panel:not([class*=mat-elevation-z]) {
  box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12);
}

.theme-light .mat-select-panel .mat-option.mat-selected:not(.mat-option-multiple) {
  background: rgba(0, 0, 0, 0.12);
}

.theme-light .mat-form-field.mat-focused.mat-primary .mat-select-arrow {
  color: rgba(var(--dynamic-primary-500), 1);
}

.theme-light .mat-form-field.mat-focused.mat-accent .mat-select-arrow {
  color: rgba(var(--dynamic-accent-500), 1);
}

.theme-light .mat-form-field.mat-focused.mat-warn .mat-select-arrow {
  color: #ff7f6b;
}

.theme-light .mat-form-field .mat-select.mat-select-invalid .mat-select-arrow {
  color: #ff7f6b;
}

.theme-light .mat-form-field .mat-select.mat-select-disabled .mat-select-arrow {
  color: rgba(0, 0, 0, 0.38);
}

.theme-light .mat-drawer-container {
  background-color: #fafafa;
  color: rgba(0, 0, 0, 0.87);
}

.theme-light .mat-drawer {
  background-color: white;
  color: rgba(0, 0, 0, 0.87);
}

.theme-light .mat-drawer.mat-drawer-push {
  background-color: white;
}

.theme-light .mat-drawer:not(.mat-drawer-side) {
  box-shadow: 0px 8px 10px -5px rgba(0, 0, 0, 0.2), 0px 16px 24px 2px rgba(0, 0, 0, 0.14), 0px 6px 30px 5px rgba(0, 0, 0, 0.12);
}

.theme-light .mat-drawer-side {
  border-right: solid 1px rgba(0, 0, 0, 0.12);
}

.theme-light .mat-drawer-side.mat-drawer-end {
  border-left: solid 1px rgba(0, 0, 0, 0.12);
  border-right: none;
}

.theme-light [dir=rtl] .mat-drawer-side {
  border-left: solid 1px rgba(0, 0, 0, 0.12);
  border-right: none;
}

.theme-light [dir=rtl] .mat-drawer-side.mat-drawer-end {
  border-left: none;
  border-right: solid 1px rgba(0, 0, 0, 0.12);
}

.theme-light .mat-drawer-backdrop.mat-drawer-shown {
  background-color: rgba(0, 0, 0, 0.6);
}

.theme-light .mat-slide-toggle.mat-checked .mat-slide-toggle-thumb {
  background-color: rgba(var(--dynamic-accent-500), 1);
}

.theme-light .mat-slide-toggle.mat-checked .mat-slide-toggle-bar {
  background-color: rgba(var(--dynamic-accent-500),0.54);
}

.theme-light .mat-slide-toggle.mat-checked .mat-ripple-element {
  background-color: rgba(var(--dynamic-accent-500), 1);
}

.theme-light .mat-slide-toggle.mat-primary.mat-checked .mat-slide-toggle-thumb {
  background-color: rgba(var(--dynamic-primary-500), 1);
}

.theme-light .mat-slide-toggle.mat-primary.mat-checked .mat-slide-toggle-bar {
  background-color: rgba(var(--dynamic-primary-500),0.54);
}

.theme-light .mat-slide-toggle.mat-primary.mat-checked .mat-ripple-element {
  background-color: rgba(var(--dynamic-primary-500), 1);
}

.theme-light .mat-slide-toggle.mat-warn.mat-checked .mat-slide-toggle-thumb {
  background-color: #ff7f6b;
}

.theme-light .mat-slide-toggle.mat-warn.mat-checked .mat-slide-toggle-bar {
  background-color: rgba(255, 127, 107, 0.54);
}

.theme-light .mat-slide-toggle.mat-warn.mat-checked .mat-ripple-element {
  background-color: #ff7f6b;
}

.theme-light .mat-slide-toggle:not(.mat-checked) .mat-ripple-element {
  background-color: black;
}

.theme-light .mat-slide-toggle-thumb {
  box-shadow: 0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12);
  background-color: #fafafa;
}

.theme-light .mat-slide-toggle-bar {
  background-color: rgba(0, 0, 0, 0.38);
}

.theme-light .mat-slider-track-background {
  background-color: rgba(0, 0, 0, 0.26);
}

.theme-light .mat-primary .mat-slider-track-fill,
.theme-light .mat-primary .mat-slider-thumb,
.theme-light .mat-primary .mat-slider-thumb-label {
  background-color: rgba(var(--dynamic-primary-500), 1);
}

.theme-light .mat-primary .mat-slider-thumb-label-text {
  color: rgba(var(--dynamic-primary-contrast-500), 1);
}

.theme-light .mat-primary .mat-slider-focus-ring {
  background-color: rgba(var(--dynamic-primary-500),0.2);
  opacity: 0.2;
}

.theme-light .mat-accent .mat-slider-track-fill,
.theme-light .mat-accent .mat-slider-thumb,
.theme-light .mat-accent .mat-slider-thumb-label {
  background-color: rgba(var(--dynamic-accent-500), 1);
}

.theme-light .mat-accent .mat-slider-thumb-label-text {
  color: rgba(var(--dynamic-accent-contrast-500), 1);
}

.theme-light .mat-accent .mat-slider-focus-ring {
  background-color: rgba(var(--dynamic-accent-500),0.2);
  opacity: 0.2;
}

.theme-light .mat-warn .mat-slider-track-fill,
.theme-light .mat-warn .mat-slider-thumb,
.theme-light .mat-warn .mat-slider-thumb-label {
  background-color: #ff7f6b;
}

.theme-light .mat-warn .mat-slider-thumb-label-text {
  color: black;
}

.theme-light .mat-warn .mat-slider-focus-ring {
  background-color: rgba(255, 127, 107, 0.2);
}

.theme-light .mat-slider:hover .mat-slider-track-background,
.theme-light .cdk-focused .mat-slider-track-background {
  background-color: rgba(0, 0, 0, 0.38);
}

.theme-light .mat-slider-disabled .mat-slider-track-background,
.theme-light .mat-slider-disabled .mat-slider-track-fill,
.theme-light .mat-slider-disabled .mat-slider-thumb {
  background-color: rgba(0, 0, 0, 0.26);
}

.theme-light .mat-slider-disabled:hover .mat-slider-track-background {
  background-color: rgba(0, 0, 0, 0.26);
}

.theme-light .mat-slider-min-value .mat-slider-focus-ring {
  background-color: rgba(0, 0, 0, 0.12);
}

.theme-light .mat-slider-min-value.mat-slider-thumb-label-showing .mat-slider-thumb,
.theme-light .mat-slider-min-value.mat-slider-thumb-label-showing .mat-slider-thumb-label {
  background-color: rgba(0, 0, 0, 0.87);
}

.theme-light .mat-slider-min-value.mat-slider-thumb-label-showing.cdk-focused .mat-slider-thumb,
.theme-light .mat-slider-min-value.mat-slider-thumb-label-showing.cdk-focused .mat-slider-thumb-label {
  background-color: rgba(0, 0, 0, 0.26);
}

.theme-light .mat-slider-min-value:not(.mat-slider-thumb-label-showing) .mat-slider-thumb {
  border-color: rgba(0, 0, 0, 0.26);
  background-color: transparent;
}

.theme-light .mat-slider-min-value:not(.mat-slider-thumb-label-showing):hover .mat-slider-thumb, .theme-light .mat-slider-min-value:not(.mat-slider-thumb-label-showing).cdk-focused .mat-slider-thumb {
  border-color: rgba(0, 0, 0, 0.38);
}

.theme-light .mat-slider-min-value:not(.mat-slider-thumb-label-showing):hover.mat-slider-disabled .mat-slider-thumb, .theme-light .mat-slider-min-value:not(.mat-slider-thumb-label-showing).cdk-focused.mat-slider-disabled .mat-slider-thumb {
  border-color: rgba(0, 0, 0, 0.26);
}

.theme-light .mat-slider-has-ticks .mat-slider-wrapper::after {
  border-color: rgba(0, 0, 0, 0.7);
}

.theme-light .mat-slider-horizontal .mat-slider-ticks {
  background-image: repeating-linear-gradient(to right, rgba(0, 0, 0, 0.7), rgba(0, 0, 0, 0.7) 2px, transparent 0, transparent);
  background-image: -moz-repeating-linear-gradient(0.0001deg, rgba(0, 0, 0, 0.7), rgba(0, 0, 0, 0.7) 2px, transparent 0, transparent);
}

.theme-light .mat-slider-vertical .mat-slider-ticks {
  background-image: repeating-linear-gradient(to bottom, rgba(0, 0, 0, 0.7), rgba(0, 0, 0, 0.7) 2px, transparent 0, transparent);
}

.theme-light .mat-step-header.cdk-keyboard-focused, .theme-light .mat-step-header.cdk-program-focused, .theme-light .mat-step-header:hover {
  background-color: rgba(0, 0, 0, 0.04);
}

@media (hover: none) {
  .theme-light .mat-step-header:hover {
    background: none;
  }
}

.theme-light .mat-step-header .mat-step-label,
.theme-light .mat-step-header .mat-step-optional {
  color: rgba(0, 0, 0, 0.54);
}

.theme-light .mat-step-header .mat-step-icon {
  background-color: rgba(0, 0, 0, 0.54);
  color: rgba(var(--dynamic-primary-contrast-500), 1);
}

.theme-light .mat-step-header .mat-step-icon-selected,
.theme-light .mat-step-header .mat-step-icon-state-done,
.theme-light .mat-step-header .mat-step-icon-state-edit {
  background-color: rgba(var(--dynamic-primary-500), 1);
  color: rgba(var(--dynamic-primary-contrast-500), 1);
}

.theme-light .mat-step-header.mat-accent .mat-step-icon {
  color: rgba(var(--dynamic-accent-contrast-500), 1);
}

.theme-light .mat-step-header.mat-accent .mat-step-icon-selected,
.theme-light .mat-step-header.mat-accent .mat-step-icon-state-done,
.theme-light .mat-step-header.mat-accent .mat-step-icon-state-edit {
  background-color: rgba(var(--dynamic-accent-500), 1);
  color: rgba(var(--dynamic-accent-contrast-500), 1);
}

.theme-light .mat-step-header.mat-warn .mat-step-icon {
  color: black;
}

.theme-light .mat-step-header.mat-warn .mat-step-icon-selected,
.theme-light .mat-step-header.mat-warn .mat-step-icon-state-done,
.theme-light .mat-step-header.mat-warn .mat-step-icon-state-edit {
  background-color: #ff7f6b;
  color: black;
}

.theme-light .mat-step-header .mat-step-icon-state-error {
  background-color: transparent;
  color: #ff7f6b;
}

.theme-light .mat-step-header .mat-step-label.mat-step-label-active {
  color: rgba(0, 0, 0, 0.87);
}

.theme-light .mat-step-header .mat-step-label.mat-step-label-error {
  color: #ff7f6b;
}

.theme-light .mat-stepper-horizontal, .theme-light .mat-stepper-vertical {
  background-color: white;
}

.theme-light .mat-stepper-vertical-line::before {
  border-left-color: rgba(0, 0, 0, 0.12);
}

.theme-light .mat-horizontal-stepper-header::before,
.theme-light .mat-horizontal-stepper-header::after,
.theme-light .mat-stepper-horizontal-line {
  border-top-color: rgba(0, 0, 0, 0.12);
}

.theme-light .mat-horizontal-stepper-header {
  height: 72px;
}

.theme-light .mat-stepper-label-position-bottom .mat-horizontal-stepper-header,
.theme-light .mat-vertical-stepper-header {
  padding: 24px 24px;
}

.theme-light .mat-stepper-vertical-line::before {
  top: -16px;
  bottom: -16px;
}

.theme-light .mat-stepper-label-position-bottom .mat-horizontal-stepper-header::after, .theme-light .mat-stepper-label-position-bottom .mat-horizontal-stepper-header::before {
  top: 36px;
}

.theme-light .mat-stepper-label-position-bottom .mat-stepper-horizontal-line {
  top: 36px;
}

.theme-light .mat-sort-header-arrow {
  color: #757575;
}

.theme-light .mat-tab-nav-bar,
.theme-light .mat-tab-header {
  border-bottom: 1px solid rgba(0, 0, 0, 0.12);
}

.theme-light .mat-tab-group-inverted-header .mat-tab-nav-bar,
.theme-light .mat-tab-group-inverted-header .mat-tab-header {
  border-top: 1px solid rgba(0, 0, 0, 0.12);
  border-bottom: none;
}

.theme-light .mat-tab-label, .theme-light .mat-tab-link {
  color: rgba(0, 0, 0, 0.87);
}

.theme-light .mat-tab-label.mat-tab-disabled, .theme-light .mat-tab-link.mat-tab-disabled {
  color: rgba(0, 0, 0, 0.38);
}

.theme-light .mat-tab-header-pagination-chevron {
  border-color: rgba(0, 0, 0, 0.87);
}

.theme-light .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron {
  border-color: rgba(0, 0, 0, 0.38);
}

.theme-light .mat-tab-group[class*=mat-background-] .mat-tab-header,
.theme-light .mat-tab-nav-bar[class*=mat-background-] {
  border-bottom: none;
  border-top: none;
}

.theme-light .mat-tab-group.mat-primary .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .theme-light .mat-tab-group.mat-primary .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),
.theme-light .mat-tab-group.mat-primary .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),
.theme-light .mat-tab-group.mat-primary .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled), .theme-light .mat-tab-nav-bar.mat-primary .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .theme-light .mat-tab-nav-bar.mat-primary .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),
.theme-light .mat-tab-nav-bar.mat-primary .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),
.theme-light .mat-tab-nav-bar.mat-primary .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled) {
  background-color: rgba(var(--dynamic-primary-100),0.3);
}

.theme-light .mat-tab-group.mat-primary .mat-ink-bar, .theme-light .mat-tab-nav-bar.mat-primary .mat-ink-bar {
  background-color: rgba(var(--dynamic-primary-500), 1);
}

.theme-light .mat-tab-group.mat-primary.mat-background-primary > .mat-tab-header .mat-ink-bar, .theme-light .mat-tab-group.mat-primary.mat-background-primary > .mat-tab-link-container .mat-ink-bar, .theme-light .mat-tab-nav-bar.mat-primary.mat-background-primary > .mat-tab-header .mat-ink-bar, .theme-light .mat-tab-nav-bar.mat-primary.mat-background-primary > .mat-tab-link-container .mat-ink-bar {
  background-color: rgba(var(--dynamic-primary-contrast-500), 1);
}

.theme-light .mat-tab-group.mat-accent .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .theme-light .mat-tab-group.mat-accent .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),
.theme-light .mat-tab-group.mat-accent .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),
.theme-light .mat-tab-group.mat-accent .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled), .theme-light .mat-tab-nav-bar.mat-accent .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .theme-light .mat-tab-nav-bar.mat-accent .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),
.theme-light .mat-tab-nav-bar.mat-accent .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),
.theme-light .mat-tab-nav-bar.mat-accent .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled) {
  background-color: rgba(var(--dynamic-accent-100),0.3);
}

.theme-light .mat-tab-group.mat-accent .mat-ink-bar, .theme-light .mat-tab-nav-bar.mat-accent .mat-ink-bar {
  background-color: rgba(var(--dynamic-accent-500), 1);
}

.theme-light .mat-tab-group.mat-accent.mat-background-accent > .mat-tab-header .mat-ink-bar, .theme-light .mat-tab-group.mat-accent.mat-background-accent > .mat-tab-link-container .mat-ink-bar, .theme-light .mat-tab-nav-bar.mat-accent.mat-background-accent > .mat-tab-header .mat-ink-bar, .theme-light .mat-tab-nav-bar.mat-accent.mat-background-accent > .mat-tab-link-container .mat-ink-bar {
  background-color: rgba(var(--dynamic-accent-contrast-500), 1);
}

.theme-light .mat-tab-group.mat-warn .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .theme-light .mat-tab-group.mat-warn .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),
.theme-light .mat-tab-group.mat-warn .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),
.theme-light .mat-tab-group.mat-warn .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled), .theme-light .mat-tab-nav-bar.mat-warn .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .theme-light .mat-tab-nav-bar.mat-warn .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),
.theme-light .mat-tab-nav-bar.mat-warn .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),
.theme-light .mat-tab-nav-bar.mat-warn .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled) {
  background-color: rgba(255, 217, 211, 0.3);
}

.theme-light .mat-tab-group.mat-warn .mat-ink-bar, .theme-light .mat-tab-nav-bar.mat-warn .mat-ink-bar {
  background-color: #ff7f6b;
}

.theme-light .mat-tab-group.mat-warn.mat-background-warn > .mat-tab-header .mat-ink-bar, .theme-light .mat-tab-group.mat-warn.mat-background-warn > .mat-tab-link-container .mat-ink-bar, .theme-light .mat-tab-nav-bar.mat-warn.mat-background-warn > .mat-tab-header .mat-ink-bar, .theme-light .mat-tab-nav-bar.mat-warn.mat-background-warn > .mat-tab-link-container .mat-ink-bar {
  background-color: black;
}

.theme-light .mat-tab-group.mat-background-primary .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .theme-light .mat-tab-group.mat-background-primary .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),
.theme-light .mat-tab-group.mat-background-primary .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),
.theme-light .mat-tab-group.mat-background-primary .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled), .theme-light .mat-tab-nav-bar.mat-background-primary .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .theme-light .mat-tab-nav-bar.mat-background-primary .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),
.theme-light .mat-tab-nav-bar.mat-background-primary .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),
.theme-light .mat-tab-nav-bar.mat-background-primary .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled) {
  background-color: rgba(var(--dynamic-primary-100),0.3);
}

.theme-light .mat-tab-group.mat-background-primary > .mat-tab-header, .theme-light .mat-tab-group.mat-background-primary > .mat-tab-link-container, .theme-light .mat-tab-group.mat-background-primary > .mat-tab-header-pagination, .theme-light .mat-tab-nav-bar.mat-background-primary > .mat-tab-header, .theme-light .mat-tab-nav-bar.mat-background-primary > .mat-tab-link-container, .theme-light .mat-tab-nav-bar.mat-background-primary > .mat-tab-header-pagination {
  background-color: rgba(var(--dynamic-primary-500), 1);
}

.theme-light .mat-tab-group.mat-background-primary > .mat-tab-header .mat-tab-label, .theme-light .mat-tab-group.mat-background-primary > .mat-tab-link-container .mat-tab-link, .theme-light .mat-tab-nav-bar.mat-background-primary > .mat-tab-header .mat-tab-label, .theme-light .mat-tab-nav-bar.mat-background-primary > .mat-tab-link-container .mat-tab-link {
  color: rgba(var(--dynamic-primary-contrast-500), 1);
}

.theme-light .mat-tab-group.mat-background-primary > .mat-tab-header .mat-tab-label.mat-tab-disabled, .theme-light .mat-tab-group.mat-background-primary > .mat-tab-link-container .mat-tab-link.mat-tab-disabled, .theme-light .mat-tab-nav-bar.mat-background-primary > .mat-tab-header .mat-tab-label.mat-tab-disabled, .theme-light .mat-tab-nav-bar.mat-background-primary > .mat-tab-link-container .mat-tab-link.mat-tab-disabled {
  color: rgba(var(--dynamic-primary-contrast-500),0.4);
}

.theme-light .mat-tab-group.mat-background-primary > .mat-tab-header-pagination .mat-tab-header-pagination-chevron,
.theme-light .mat-tab-group.mat-background-primary > .mat-tab-links .mat-focus-indicator::before,
.theme-light .mat-tab-group.mat-background-primary > .mat-tab-header .mat-focus-indicator::before, .theme-light .mat-tab-nav-bar.mat-background-primary > .mat-tab-header-pagination .mat-tab-header-pagination-chevron,
.theme-light .mat-tab-nav-bar.mat-background-primary > .mat-tab-links .mat-focus-indicator::before,
.theme-light .mat-tab-nav-bar.mat-background-primary > .mat-tab-header .mat-focus-indicator::before {
  border-color: rgba(var(--dynamic-primary-contrast-500), 1);
}

.theme-light .mat-tab-group.mat-background-primary > .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron, .theme-light .mat-tab-nav-bar.mat-background-primary > .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron {
  border-color: rgba(var(--dynamic-primary-contrast-500),0.4);
}

.theme-light .mat-tab-group.mat-background-primary > .mat-tab-header .mat-ripple-element,
.theme-light .mat-tab-group.mat-background-primary > .mat-tab-link-container .mat-ripple-element, .theme-light .mat-tab-nav-bar.mat-background-primary > .mat-tab-header .mat-ripple-element,
.theme-light .mat-tab-nav-bar.mat-background-primary > .mat-tab-link-container .mat-ripple-element {
  background-color: rgba(var(--dynamic-primary-contrast-500),0.12);
}

.theme-light .mat-tab-group.mat-background-accent .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .theme-light .mat-tab-group.mat-background-accent .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),
.theme-light .mat-tab-group.mat-background-accent .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),
.theme-light .mat-tab-group.mat-background-accent .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled), .theme-light .mat-tab-nav-bar.mat-background-accent .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .theme-light .mat-tab-nav-bar.mat-background-accent .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),
.theme-light .mat-tab-nav-bar.mat-background-accent .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),
.theme-light .mat-tab-nav-bar.mat-background-accent .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled) {
  background-color: rgba(var(--dynamic-accent-100),0.3);
}

.theme-light .mat-tab-group.mat-background-accent > .mat-tab-header, .theme-light .mat-tab-group.mat-background-accent > .mat-tab-link-container, .theme-light .mat-tab-group.mat-background-accent > .mat-tab-header-pagination, .theme-light .mat-tab-nav-bar.mat-background-accent > .mat-tab-header, .theme-light .mat-tab-nav-bar.mat-background-accent > .mat-tab-link-container, .theme-light .mat-tab-nav-bar.mat-background-accent > .mat-tab-header-pagination {
  background-color: rgba(var(--dynamic-accent-500), 1);
}

.theme-light .mat-tab-group.mat-background-accent > .mat-tab-header .mat-tab-label, .theme-light .mat-tab-group.mat-background-accent > .mat-tab-link-container .mat-tab-link, .theme-light .mat-tab-nav-bar.mat-background-accent > .mat-tab-header .mat-tab-label, .theme-light .mat-tab-nav-bar.mat-background-accent > .mat-tab-link-container .mat-tab-link {
  color: rgba(var(--dynamic-accent-contrast-500), 1);
}

.theme-light .mat-tab-group.mat-background-accent > .mat-tab-header .mat-tab-label.mat-tab-disabled, .theme-light .mat-tab-group.mat-background-accent > .mat-tab-link-container .mat-tab-link.mat-tab-disabled, .theme-light .mat-tab-nav-bar.mat-background-accent > .mat-tab-header .mat-tab-label.mat-tab-disabled, .theme-light .mat-tab-nav-bar.mat-background-accent > .mat-tab-link-container .mat-tab-link.mat-tab-disabled {
  color: rgba(var(--dynamic-accent-contrast-500),0.4);
}

.theme-light .mat-tab-group.mat-background-accent > .mat-tab-header-pagination .mat-tab-header-pagination-chevron,
.theme-light .mat-tab-group.mat-background-accent > .mat-tab-links .mat-focus-indicator::before,
.theme-light .mat-tab-group.mat-background-accent > .mat-tab-header .mat-focus-indicator::before, .theme-light .mat-tab-nav-bar.mat-background-accent > .mat-tab-header-pagination .mat-tab-header-pagination-chevron,
.theme-light .mat-tab-nav-bar.mat-background-accent > .mat-tab-links .mat-focus-indicator::before,
.theme-light .mat-tab-nav-bar.mat-background-accent > .mat-tab-header .mat-focus-indicator::before {
  border-color: rgba(var(--dynamic-accent-contrast-500), 1);
}

.theme-light .mat-tab-group.mat-background-accent > .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron, .theme-light .mat-tab-nav-bar.mat-background-accent > .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron {
  border-color: rgba(var(--dynamic-accent-contrast-500),0.4);
}

.theme-light .mat-tab-group.mat-background-accent > .mat-tab-header .mat-ripple-element,
.theme-light .mat-tab-group.mat-background-accent > .mat-tab-link-container .mat-ripple-element, .theme-light .mat-tab-nav-bar.mat-background-accent > .mat-tab-header .mat-ripple-element,
.theme-light .mat-tab-nav-bar.mat-background-accent > .mat-tab-link-container .mat-ripple-element {
  background-color: rgba(var(--dynamic-accent-contrast-500),0.12);
}

.theme-light .mat-tab-group.mat-background-warn .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .theme-light .mat-tab-group.mat-background-warn .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),
.theme-light .mat-tab-group.mat-background-warn .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),
.theme-light .mat-tab-group.mat-background-warn .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled), .theme-light .mat-tab-nav-bar.mat-background-warn .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .theme-light .mat-tab-nav-bar.mat-background-warn .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),
.theme-light .mat-tab-nav-bar.mat-background-warn .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),
.theme-light .mat-tab-nav-bar.mat-background-warn .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled) {
  background-color: rgba(255, 217, 211, 0.3);
}

.theme-light .mat-tab-group.mat-background-warn > .mat-tab-header, .theme-light .mat-tab-group.mat-background-warn > .mat-tab-link-container, .theme-light .mat-tab-group.mat-background-warn > .mat-tab-header-pagination, .theme-light .mat-tab-nav-bar.mat-background-warn > .mat-tab-header, .theme-light .mat-tab-nav-bar.mat-background-warn > .mat-tab-link-container, .theme-light .mat-tab-nav-bar.mat-background-warn > .mat-tab-header-pagination {
  background-color: #ff7f6b;
}

.theme-light .mat-tab-group.mat-background-warn > .mat-tab-header .mat-tab-label, .theme-light .mat-tab-group.mat-background-warn > .mat-tab-link-container .mat-tab-link, .theme-light .mat-tab-nav-bar.mat-background-warn > .mat-tab-header .mat-tab-label, .theme-light .mat-tab-nav-bar.mat-background-warn > .mat-tab-link-container .mat-tab-link {
  color: black;
}

.theme-light .mat-tab-group.mat-background-warn > .mat-tab-header .mat-tab-label.mat-tab-disabled, .theme-light .mat-tab-group.mat-background-warn > .mat-tab-link-container .mat-tab-link.mat-tab-disabled, .theme-light .mat-tab-nav-bar.mat-background-warn > .mat-tab-header .mat-tab-label.mat-tab-disabled, .theme-light .mat-tab-nav-bar.mat-background-warn > .mat-tab-link-container .mat-tab-link.mat-tab-disabled {
  color: rgba(0, 0, 0, 0.4);
}

.theme-light .mat-tab-group.mat-background-warn > .mat-tab-header-pagination .mat-tab-header-pagination-chevron,
.theme-light .mat-tab-group.mat-background-warn > .mat-tab-links .mat-focus-indicator::before,
.theme-light .mat-tab-group.mat-background-warn > .mat-tab-header .mat-focus-indicator::before, .theme-light .mat-tab-nav-bar.mat-background-warn > .mat-tab-header-pagination .mat-tab-header-pagination-chevron,
.theme-light .mat-tab-nav-bar.mat-background-warn > .mat-tab-links .mat-focus-indicator::before,
.theme-light .mat-tab-nav-bar.mat-background-warn > .mat-tab-header .mat-focus-indicator::before {
  border-color: black;
}

.theme-light .mat-tab-group.mat-background-warn > .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron, .theme-light .mat-tab-nav-bar.mat-background-warn > .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron {
  border-color: rgba(0, 0, 0, 0.4);
}

.theme-light .mat-tab-group.mat-background-warn > .mat-tab-header .mat-ripple-element,
.theme-light .mat-tab-group.mat-background-warn > .mat-tab-link-container .mat-ripple-element, .theme-light .mat-tab-nav-bar.mat-background-warn > .mat-tab-header .mat-ripple-element,
.theme-light .mat-tab-nav-bar.mat-background-warn > .mat-tab-link-container .mat-ripple-element {
  background-color: rgba(0, 0, 0, 0.12);
}

.theme-light .mat-toolbar {
  background: whitesmoke;
  color: rgba(0, 0, 0, 0.87);
}

.theme-light .mat-toolbar.mat-primary {
  background: rgba(var(--dynamic-primary-500), 1);
  color: rgba(var(--dynamic-primary-contrast-500), 1);
}

.theme-light .mat-toolbar.mat-accent {
  background: rgba(var(--dynamic-accent-500), 1);
  color: rgba(var(--dynamic-accent-contrast-500), 1);
}

.theme-light .mat-toolbar.mat-warn {
  background: #ff7f6b;
  color: black;
}

.theme-light .mat-toolbar .mat-form-field-underline,
.theme-light .mat-toolbar .mat-form-field-ripple,
.theme-light .mat-toolbar .mat-focused .mat-form-field-ripple {
  background-color: currentColor;
}

.theme-light .mat-toolbar .mat-form-field-label,
.theme-light .mat-toolbar .mat-focused .mat-form-field-label,
.theme-light .mat-toolbar .mat-select-value,
.theme-light .mat-toolbar .mat-select-arrow,
.theme-light .mat-toolbar .mat-form-field.mat-focused .mat-select-arrow {
  color: inherit;
}

.theme-light .mat-toolbar .mat-input-element {
  caret-color: currentColor;
}

.theme-light .mat-toolbar-multiple-rows {
  min-height: 64px;
}

.theme-light .mat-toolbar-row, .theme-light .mat-toolbar-single-row {
  height: 64px;
}

@media (max-width: 599px) {
  .theme-light .mat-toolbar-multiple-rows {
    min-height: 56px;
  }
  .theme-light .mat-toolbar-row, .theme-light .mat-toolbar-single-row {
    height: 56px;
  }
}

.theme-light .mat-tooltip {
  background: rgba(97, 97, 97, 0.9);
}

.theme-light .mat-tree {
  background: white;
}

.theme-light .mat-tree-node,
.theme-light .mat-nested-tree-node {
  color: rgba(0, 0, 0, 0.87);
}

.theme-light .mat-tree-node {
  min-height: 48px;
}

.theme-light .mat-snack-bar-container {
  color: rgba(255, 255, 255, 0.7);
  background: #323232;
  box-shadow: 0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12);
}

.theme-light .mat-simple-snackbar-action {
  color: rgba(var(--dynamic-accent-500), 1);
}

.theme-light a {
  color: rgba(0, 0, 0, 0.54);
}

.theme-light a.link {
  color: #000;
}

.theme-light .mat-grid-list .mat-grid-tile .grid-tile-content {
  background-color: white;
}

.theme-light .mat-table.hover-table tbody tr:hover {
  background-color: rgba(0, 0, 0, 0.04);
}

.theme-light .mat-card.card-disabled {
  background-color: rgba(0, 0, 0, 0.12);
  color: rgba(0, 0, 0, 0.26);
}

.theme-light .mat-tab-list .mat-tab-link i {
  background-color: rgba(var(--dynamic-primary-500),0.1);
}

.theme-light .argo-notification {
  background-color: white !important;
}

.theme-light .default-back {
  background-color: #fafafa;
  color: black;
}

.theme-light .grey-back-bg {
  background-image: url("/assets/images/setting_button.svg");
  background-repeat: no-repeat;
  background-position: right;
  background-size: cover;
  background-color: #f5f5f5;
  color: black;
}

.theme-light .grey-back {
  background-color: #f5f5f5;
  color: black;
}

.theme-light .primary-back {
  background-color: rgba(var(--dynamic-primary-500), 1);
  color: rgba(var(--dynamic-primary-contrast-500), 1);
}

.theme-light .primary-light-back {
  background-color: rgba(var(--dynamic-primary-100),0.9);
  color: rgba(var(--dynamic-primary-contrast-100), 1);
}

.theme-light .accent-back {
  background-color: rgba(var(--dynamic-accent-500), 1);
  color: rgba(var(--dynamic-accent-contrast-500), 1);
}

.theme-light .pdf-light-back {
  background-color: rgba(var(--dynamic-primary-50),0.5);
  color: rgba(var(--dynamic-primary-contrast-100), 1);
}

.theme-light .pdf-font {
  color: rgba(var(--dynamic-primary-500), 1);
}

.theme-light .ar-back-bg {
  background-image: url("/assets/images/edit_button.svg");
  background-repeat: no-repeat;
  background-position: bottom;
  background-size: cover;
  background-color: #9f6af9;
  color: black;
}

.theme-light .ar-back-bg .mat-ripple-element {
  background-color: rgba(0, 0, 0, 0.1);
}

.theme-light .ar-back {
  background-color: #9f6af9;
  color: black;
}

.theme-light .ar-back .mat-ripple-element {
  background-color: rgba(0, 0, 0, 0.1);
}

.theme-light .ar-dark-back {
  background-color: #723cf5;
  color: white;
}

.theme-light .ar-font {
  color: #9f6af9;
}

.theme-light .mat-input-element {
  caret-color: rgba(var(--dynamic-primary-500), 1);
}

.theme-light .btn-arrow-bg {
  background-color: white;
}

.theme-light .btn-dynamic-color {
  color: rgba(var(--dynamic-primary-500), 1) !important;
}

.theme-light .pdf-tab i {
  background-color: rgba(var(--dynamic-primary-900), 1) !important;
}

.theme-light .pdf-tab.mat-tab-label-active {
  background-color: rgba(var(--dynamic-primary-100),0.9) !important;
  color: black;
}

.theme-light .ar-tab i {
  background-color: #723cf5 !important;
  color: white;
}

.theme-light .ar-tab.mat-tab-label-active {
  background-color: rgba(226, 210, 253, 0.9) !important;
}

.theme-light .mat-expansion-indicator::after {
  border-color: rgba(0, 0, 0, 0.54);
}

.theme-dark .mat-ripple-element {
  background-color: rgba(255, 255, 255, 0.1);
}

.theme-dark .mat-option {
  color: white;
}

.theme-dark .mat-option:hover:not(.mat-option-disabled), .theme-dark .mat-option:focus:not(.mat-option-disabled) {
  background: rgba(255, 255, 255, 0.04);
}

.theme-dark .mat-option.mat-selected:not(.mat-option-multiple):not(.mat-option-disabled) {
  background: rgba(255, 255, 255, 0.04);
}

.theme-dark .mat-option.mat-active {
  background: rgba(255, 255, 255, 0.04);
  color: white;
}

.theme-dark .mat-option.mat-option-disabled {
  color: rgba(255, 255, 255, 0.5);
}

.theme-dark .mat-primary .mat-option.mat-selected:not(.mat-option-disabled) {
  color: rgba(var(--dynamic-primary-500), 1);
}

.theme-dark .mat-accent .mat-option.mat-selected:not(.mat-option-disabled) {
  color: rgba(var(--dynamic-accent-500), 1);
}

.theme-dark .mat-warn .mat-option.mat-selected:not(.mat-option-disabled) {
  color: #ff7f6b;
}

.theme-dark .mat-optgroup-label {
  color: rgba(255, 255, 255, 0.7);
}

.theme-dark .mat-optgroup-disabled .mat-optgroup-label {
  color: rgba(255, 255, 255, 0.5);
}

.theme-dark .mat-pseudo-checkbox {
  color: rgba(255, 255, 255, 0.7);
}

.theme-dark .mat-pseudo-checkbox::after {
  color: #303030;
}

.theme-dark .mat-pseudo-checkbox-disabled {
  color: #686868;
}

.theme-dark .mat-primary .mat-pseudo-checkbox-checked,
.theme-dark .mat-primary .mat-pseudo-checkbox-indeterminate {
  background: rgba(var(--dynamic-primary-500), 1);
}

.theme-dark .mat-pseudo-checkbox-checked,
.theme-dark .mat-pseudo-checkbox-indeterminate,
.theme-dark .mat-accent .mat-pseudo-checkbox-checked,
.theme-dark .mat-accent .mat-pseudo-checkbox-indeterminate {
  background: rgba(var(--dynamic-accent-500), 1);
}

.theme-dark .mat-warn .mat-pseudo-checkbox-checked,
.theme-dark .mat-warn .mat-pseudo-checkbox-indeterminate {
  background: #ff7f6b;
}

.theme-dark .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-disabled,
.theme-dark .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-disabled {
  background: #686868;
}

.theme-dark .mat-app-background, .theme-dark.mat-app-background {
  background-color: #303030;
  color: white;
}

.theme-dark .mat-elevation-z0 {
  box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12);
}

.theme-dark .mat-elevation-z1 {
  box-shadow: 0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12);
}

.theme-dark .mat-elevation-z2 {
  box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12);
}

.theme-dark .mat-elevation-z3 {
  box-shadow: 0px 3px 3px -2px rgba(0, 0, 0, 0.2), 0px 3px 4px 0px rgba(0, 0, 0, 0.14), 0px 1px 8px 0px rgba(0, 0, 0, 0.12);
}

.theme-dark .mat-elevation-z4 {
  box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12);
}

.theme-dark .mat-elevation-z5 {
  box-shadow: 0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 5px 8px 0px rgba(0, 0, 0, 0.14), 0px 1px 14px 0px rgba(0, 0, 0, 0.12);
}

.theme-dark .mat-elevation-z6 {
  box-shadow: 0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12);
}

.theme-dark .mat-elevation-z7 {
  box-shadow: 0px 4px 5px -2px rgba(0, 0, 0, 0.2), 0px 7px 10px 1px rgba(0, 0, 0, 0.14), 0px 2px 16px 1px rgba(0, 0, 0, 0.12);
}

.theme-dark .mat-elevation-z8 {
  box-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.2), 0px 8px 10px 1px rgba(0, 0, 0, 0.14), 0px 3px 14px 2px rgba(0, 0, 0, 0.12);
}

.theme-dark .mat-elevation-z9 {
  box-shadow: 0px 5px 6px -3px rgba(0, 0, 0, 0.2), 0px 9px 12px 1px rgba(0, 0, 0, 0.14), 0px 3px 16px 2px rgba(0, 0, 0, 0.12);
}

.theme-dark .mat-elevation-z10 {
  box-shadow: 0px 6px 6px -3px rgba(0, 0, 0, 0.2), 0px 10px 14px 1px rgba(0, 0, 0, 0.14), 0px 4px 18px 3px rgba(0, 0, 0, 0.12);
}

.theme-dark .mat-elevation-z11 {
  box-shadow: 0px 6px 7px -4px rgba(0, 0, 0, 0.2), 0px 11px 15px 1px rgba(0, 0, 0, 0.14), 0px 4px 20px 3px rgba(0, 0, 0, 0.12);
}

.theme-dark .mat-elevation-z12 {
  box-shadow: 0px 7px 8px -4px rgba(0, 0, 0, 0.2), 0px 12px 17px 2px rgba(0, 0, 0, 0.14), 0px 5px 22px 4px rgba(0, 0, 0, 0.12);
}

.theme-dark .mat-elevation-z13 {
  box-shadow: 0px 7px 8px -4px rgba(0, 0, 0, 0.2), 0px 13px 19px 2px rgba(0, 0, 0, 0.14), 0px 5px 24px 4px rgba(0, 0, 0, 0.12);
}

.theme-dark .mat-elevation-z14 {
  box-shadow: 0px 7px 9px -4px rgba(0, 0, 0, 0.2), 0px 14px 21px 2px rgba(0, 0, 0, 0.14), 0px 5px 26px 4px rgba(0, 0, 0, 0.12);
}

.theme-dark .mat-elevation-z15 {
  box-shadow: 0px 8px 9px -5px rgba(0, 0, 0, 0.2), 0px 15px 22px 2px rgba(0, 0, 0, 0.14), 0px 6px 28px 5px rgba(0, 0, 0, 0.12);
}

.theme-dark .mat-elevation-z16 {
  box-shadow: 0px 8px 10px -5px rgba(0, 0, 0, 0.2), 0px 16px 24px 2px rgba(0, 0, 0, 0.14), 0px 6px 30px 5px rgba(0, 0, 0, 0.12);
}

.theme-dark .mat-elevation-z17 {
  box-shadow: 0px 8px 11px -5px rgba(0, 0, 0, 0.2), 0px 17px 26px 2px rgba(0, 0, 0, 0.14), 0px 6px 32px 5px rgba(0, 0, 0, 0.12);
}

.theme-dark .mat-elevation-z18 {
  box-shadow: 0px 9px 11px -5px rgba(0, 0, 0, 0.2), 0px 18px 28px 2px rgba(0, 0, 0, 0.14), 0px 7px 34px 6px rgba(0, 0, 0, 0.12);
}

.theme-dark .mat-elevation-z19 {
  box-shadow: 0px 9px 12px -6px rgba(0, 0, 0, 0.2), 0px 19px 29px 2px rgba(0, 0, 0, 0.14), 0px 7px 36px 6px rgba(0, 0, 0, 0.12);
}

.theme-dark .mat-elevation-z20 {
  box-shadow: 0px 10px 13px -6px rgba(0, 0, 0, 0.2), 0px 20px 31px 3px rgba(0, 0, 0, 0.14), 0px 8px 38px 7px rgba(0, 0, 0, 0.12);
}

.theme-dark .mat-elevation-z21 {
  box-shadow: 0px 10px 13px -6px rgba(0, 0, 0, 0.2), 0px 21px 33px 3px rgba(0, 0, 0, 0.14), 0px 8px 40px 7px rgba(0, 0, 0, 0.12);
}

.theme-dark .mat-elevation-z22 {
  box-shadow: 0px 10px 14px -6px rgba(0, 0, 0, 0.2), 0px 22px 35px 3px rgba(0, 0, 0, 0.14), 0px 8px 42px 7px rgba(0, 0, 0, 0.12);
}

.theme-dark .mat-elevation-z23 {
  box-shadow: 0px 11px 14px -7px rgba(0, 0, 0, 0.2), 0px 23px 36px 3px rgba(0, 0, 0, 0.14), 0px 9px 44px 8px rgba(0, 0, 0, 0.12);
}

.theme-dark .mat-elevation-z24 {
  box-shadow: 0px 11px 15px -7px rgba(0, 0, 0, 0.2), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 9px 46px 8px rgba(0, 0, 0, 0.12);
}

.mat-theme-loaded-marker {
  display: none;
}

.theme-dark .mat-autocomplete-panel {
  background: #424242;
  color: white;
}

.theme-dark .mat-autocomplete-panel:not([class*=mat-elevation-z]) {
  box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12);
}

.theme-dark .mat-autocomplete-panel .mat-option.mat-selected:not(.mat-active):not(:hover) {
  background: #424242;
}

.theme-dark .mat-autocomplete-panel .mat-option.mat-selected:not(.mat-active):not(:hover):not(.mat-option-disabled) {
  color: white;
}

.theme-dark .mat-badge-content {
  color: rgba(var(--dynamic-primary-contrast-500), 1);
  background: rgba(var(--dynamic-primary-500), 1);
}

.cdk-high-contrast-active .theme-dark .mat-badge-content {
  outline: solid 1px;
  border-radius: 0;
}

.theme-dark .mat-badge-accent .mat-badge-content {
  background: rgba(var(--dynamic-accent-500), 1);
  color: rgba(var(--dynamic-accent-contrast-500), 1);
}

.theme-dark .mat-badge-warn .mat-badge-content {
  color: black;
  background: #ff7f6b;
}

.theme-dark .mat-badge {
  position: relative;
}

.theme-dark .mat-badge-hidden .mat-badge-content {
  display: none;
}

.theme-dark .mat-badge-disabled .mat-badge-content {
  background: #6e6e6e;
  color: rgba(255, 255, 255, 0.5);
}

.theme-dark .mat-badge-content {
  position: absolute;
  text-align: center;
  display: inline-block;
  border-radius: 50%;
  transition: transform 200ms ease-in-out;
  transform: scale(0.6);
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
  pointer-events: none;
}

.theme-dark .ng-animate-disabled .mat-badge-content,
.theme-dark .mat-badge-content._mat-animation-noopable {
  transition: none;
}

.theme-dark .mat-badge-content.mat-badge-active {
  transform: none;
}

.theme-dark .mat-badge-small .mat-badge-content {
  width: 16px;
  height: 16px;
  line-height: 16px;
}

.theme-dark .mat-badge-small.mat-badge-above .mat-badge-content {
  top: -8px;
}

.theme-dark .mat-badge-small.mat-badge-below .mat-badge-content {
  bottom: -8px;
}

.theme-dark .mat-badge-small.mat-badge-before .mat-badge-content {
  left: -16px;
}

[dir=rtl] .theme-dark .mat-badge-small.mat-badge-before .mat-badge-content {
  left: auto;
  right: -16px;
}

.theme-dark .mat-badge-small.mat-badge-after .mat-badge-content {
  right: -16px;
}

[dir=rtl] .theme-dark .mat-badge-small.mat-badge-after .mat-badge-content {
  right: auto;
  left: -16px;
}

.theme-dark .mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content {
  left: -8px;
}

[dir=rtl] .theme-dark .mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content {
  left: auto;
  right: -8px;
}

.theme-dark .mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content {
  right: -8px;
}

[dir=rtl] .theme-dark .mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content {
  right: auto;
  left: -8px;
}

.theme-dark .mat-badge-medium .mat-badge-content {
  width: 22px;
  height: 22px;
  line-height: 22px;
}

.theme-dark .mat-badge-medium.mat-badge-above .mat-badge-content {
  top: -11px;
}

.theme-dark .mat-badge-medium.mat-badge-below .mat-badge-content {
  bottom: -11px;
}

.theme-dark .mat-badge-medium.mat-badge-before .mat-badge-content {
  left: -22px;
}

[dir=rtl] .theme-dark .mat-badge-medium.mat-badge-before .mat-badge-content {
  left: auto;
  right: -22px;
}

.theme-dark .mat-badge-medium.mat-badge-after .mat-badge-content {
  right: -22px;
}

[dir=rtl] .theme-dark .mat-badge-medium.mat-badge-after .mat-badge-content {
  right: auto;
  left: -22px;
}

.theme-dark .mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content {
  left: -11px;
}

[dir=rtl] .theme-dark .mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content {
  left: auto;
  right: -11px;
}

.theme-dark .mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content {
  right: -11px;
}

[dir=rtl] .theme-dark .mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content {
  right: auto;
  left: -11px;
}

.theme-dark .mat-badge-large .mat-badge-content {
  width: 28px;
  height: 28px;
  line-height: 28px;
}

.theme-dark .mat-badge-large.mat-badge-above .mat-badge-content {
  top: -14px;
}

.theme-dark .mat-badge-large.mat-badge-below .mat-badge-content {
  bottom: -14px;
}

.theme-dark .mat-badge-large.mat-badge-before .mat-badge-content {
  left: -28px;
}

[dir=rtl] .theme-dark .mat-badge-large.mat-badge-before .mat-badge-content {
  left: auto;
  right: -28px;
}

.theme-dark .mat-badge-large.mat-badge-after .mat-badge-content {
  right: -28px;
}

[dir=rtl] .theme-dark .mat-badge-large.mat-badge-after .mat-badge-content {
  right: auto;
  left: -28px;
}

.theme-dark .mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content {
  left: -14px;
}

[dir=rtl] .theme-dark .mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content {
  left: auto;
  right: -14px;
}

.theme-dark .mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content {
  right: -14px;
}

[dir=rtl] .theme-dark .mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content {
  right: auto;
  left: -14px;
}

.theme-dark .mat-bottom-sheet-container {
  box-shadow: 0px 8px 10px -5px rgba(0, 0, 0, 0.2), 0px 16px 24px 2px rgba(0, 0, 0, 0.14), 0px 6px 30px 5px rgba(0, 0, 0, 0.12);
  background: #424242;
  color: white;
}

.theme-dark .mat-button, .theme-dark .mat-icon-button, .theme-dark .mat-stroked-button {
  color: inherit;
  background: transparent;
}

.theme-dark .mat-button.mat-primary, .theme-dark .mat-icon-button.mat-primary, .theme-dark .mat-stroked-button.mat-primary {
  color: rgba(var(--dynamic-primary-500), 1);
}

.theme-dark .mat-button.mat-accent, .theme-dark .mat-icon-button.mat-accent, .theme-dark .mat-stroked-button.mat-accent {
  color: rgba(var(--dynamic-accent-500), 1);
}

.theme-dark .mat-button.mat-warn, .theme-dark .mat-icon-button.mat-warn, .theme-dark .mat-stroked-button.mat-warn {
  color: #ff7f6b;
}

.theme-dark .mat-button.mat-primary.mat-button-disabled, .theme-dark .mat-button.mat-accent.mat-button-disabled, .theme-dark .mat-button.mat-warn.mat-button-disabled, .theme-dark .mat-button.mat-button-disabled.mat-button-disabled, .theme-dark .mat-icon-button.mat-primary.mat-button-disabled, .theme-dark .mat-icon-button.mat-accent.mat-button-disabled, .theme-dark .mat-icon-button.mat-warn.mat-button-disabled, .theme-dark .mat-icon-button.mat-button-disabled.mat-button-disabled, .theme-dark .mat-stroked-button.mat-primary.mat-button-disabled, .theme-dark .mat-stroked-button.mat-accent.mat-button-disabled, .theme-dark .mat-stroked-button.mat-warn.mat-button-disabled, .theme-dark .mat-stroked-button.mat-button-disabled.mat-button-disabled {
  color: rgba(255, 255, 255, 0.3);
}

.theme-dark .mat-button.mat-primary .mat-button-focus-overlay, .theme-dark .mat-icon-button.mat-primary .mat-button-focus-overlay, .theme-dark .mat-stroked-button.mat-primary .mat-button-focus-overlay {
  background-color: rgba(var(--dynamic-primary-500), 1);
}

.theme-dark .mat-button.mat-accent .mat-button-focus-overlay, .theme-dark .mat-icon-button.mat-accent .mat-button-focus-overlay, .theme-dark .mat-stroked-button.mat-accent .mat-button-focus-overlay {
  background-color: rgba(var(--dynamic-accent-500), 1);
}

.theme-dark .mat-button.mat-warn .mat-button-focus-overlay, .theme-dark .mat-icon-button.mat-warn .mat-button-focus-overlay, .theme-dark .mat-stroked-button.mat-warn .mat-button-focus-overlay {
  background-color: #ff7f6b;
}

.theme-dark .mat-button.mat-button-disabled .mat-button-focus-overlay, .theme-dark .mat-icon-button.mat-button-disabled .mat-button-focus-overlay, .theme-dark .mat-stroked-button.mat-button-disabled .mat-button-focus-overlay {
  background-color: transparent;
}

.theme-dark .mat-button .mat-ripple-element, .theme-dark .mat-icon-button .mat-ripple-element, .theme-dark .mat-stroked-button .mat-ripple-element {
  opacity: 0.1;
  background-color: currentColor;
}

.theme-dark .mat-button-focus-overlay {
  background: white;
}

.theme-dark .mat-stroked-button:not(.mat-button-disabled) {
  border-color: rgba(255, 255, 255, 0.12);
}

.theme-dark .mat-flat-button, .theme-dark .mat-raised-button, .theme-dark .mat-fab, .theme-dark .mat-mini-fab {
  color: white;
  background-color: #424242;
}

.theme-dark .mat-flat-button.mat-primary, .theme-dark .mat-raised-button.mat-primary, .theme-dark .mat-fab.mat-primary, .theme-dark .mat-mini-fab.mat-primary {
  color: rgba(var(--dynamic-primary-contrast-500), 1);
}

.theme-dark .mat-flat-button.mat-accent, .theme-dark .mat-raised-button.mat-accent, .theme-dark .mat-fab.mat-accent, .theme-dark .mat-mini-fab.mat-accent {
  color: rgba(var(--dynamic-accent-contrast-500), 1);
}

.theme-dark .mat-flat-button.mat-warn, .theme-dark .mat-raised-button.mat-warn, .theme-dark .mat-fab.mat-warn, .theme-dark .mat-mini-fab.mat-warn {
  color: black;
}

.theme-dark .mat-flat-button.mat-primary.mat-button-disabled, .theme-dark .mat-flat-button.mat-accent.mat-button-disabled, .theme-dark .mat-flat-button.mat-warn.mat-button-disabled, .theme-dark .mat-flat-button.mat-button-disabled.mat-button-disabled, .theme-dark .mat-raised-button.mat-primary.mat-button-disabled, .theme-dark .mat-raised-button.mat-accent.mat-button-disabled, .theme-dark .mat-raised-button.mat-warn.mat-button-disabled, .theme-dark .mat-raised-button.mat-button-disabled.mat-button-disabled, .theme-dark .mat-fab.mat-primary.mat-button-disabled, .theme-dark .mat-fab.mat-accent.mat-button-disabled, .theme-dark .mat-fab.mat-warn.mat-button-disabled, .theme-dark .mat-fab.mat-button-disabled.mat-button-disabled, .theme-dark .mat-mini-fab.mat-primary.mat-button-disabled, .theme-dark .mat-mini-fab.mat-accent.mat-button-disabled, .theme-dark .mat-mini-fab.mat-warn.mat-button-disabled, .theme-dark .mat-mini-fab.mat-button-disabled.mat-button-disabled {
  color: rgba(255, 255, 255, 0.3);
}

.theme-dark .mat-flat-button.mat-primary, .theme-dark .mat-raised-button.mat-primary, .theme-dark .mat-fab.mat-primary, .theme-dark .mat-mini-fab.mat-primary {
  background-color: rgba(var(--dynamic-primary-500), 1);
}

.theme-dark .mat-flat-button.mat-accent, .theme-dark .mat-raised-button.mat-accent, .theme-dark .mat-fab.mat-accent, .theme-dark .mat-mini-fab.mat-accent {
  background-color: rgba(var(--dynamic-accent-500), 1);
}

.theme-dark .mat-flat-button.mat-warn, .theme-dark .mat-raised-button.mat-warn, .theme-dark .mat-fab.mat-warn, .theme-dark .mat-mini-fab.mat-warn {
  background-color: #ff7f6b;
}

.theme-dark .mat-flat-button.mat-primary.mat-button-disabled, .theme-dark .mat-flat-button.mat-accent.mat-button-disabled, .theme-dark .mat-flat-button.mat-warn.mat-button-disabled, .theme-dark .mat-flat-button.mat-button-disabled.mat-button-disabled, .theme-dark .mat-raised-button.mat-primary.mat-button-disabled, .theme-dark .mat-raised-button.mat-accent.mat-button-disabled, .theme-dark .mat-raised-button.mat-warn.mat-button-disabled, .theme-dark .mat-raised-button.mat-button-disabled.mat-button-disabled, .theme-dark .mat-fab.mat-primary.mat-button-disabled, .theme-dark .mat-fab.mat-accent.mat-button-disabled, .theme-dark .mat-fab.mat-warn.mat-button-disabled, .theme-dark .mat-fab.mat-button-disabled.mat-button-disabled, .theme-dark .mat-mini-fab.mat-primary.mat-button-disabled, .theme-dark .mat-mini-fab.mat-accent.mat-button-disabled, .theme-dark .mat-mini-fab.mat-warn.mat-button-disabled, .theme-dark .mat-mini-fab.mat-button-disabled.mat-button-disabled {
  background-color: rgba(255, 255, 255, 0.12);
}

.theme-dark .mat-flat-button.mat-primary .mat-ripple-element, .theme-dark .mat-raised-button.mat-primary .mat-ripple-element, .theme-dark .mat-fab.mat-primary .mat-ripple-element, .theme-dark .mat-mini-fab.mat-primary .mat-ripple-element {
  background-color: rgba(var(--dynamic-primary-contrast-500),0.1);
  opacity: 0.1;
}

.theme-dark .mat-flat-button.mat-accent .mat-ripple-element, .theme-dark .mat-raised-button.mat-accent .mat-ripple-element, .theme-dark .mat-fab.mat-accent .mat-ripple-element, .theme-dark .mat-mini-fab.mat-accent .mat-ripple-element {
  background-color: rgba(var(--dynamic-accent-contrast-500),0.1);
  opacity: 0.1;
}

.theme-dark .mat-flat-button.mat-warn .mat-ripple-element, .theme-dark .mat-raised-button.mat-warn .mat-ripple-element, .theme-dark .mat-fab.mat-warn .mat-ripple-element, .theme-dark .mat-mini-fab.mat-warn .mat-ripple-element {
  background-color: rgba(0, 0, 0, 0.1);
}

.theme-dark .mat-stroked-button:not([class*=mat-elevation-z]), .theme-dark .mat-flat-button:not([class*=mat-elevation-z]) {
  box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12);
}

.theme-dark .mat-raised-button:not([class*=mat-elevation-z]) {
  box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12);
}

.theme-dark .mat-raised-button:not(.mat-button-disabled):active:not([class*=mat-elevation-z]) {
  box-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.2), 0px 8px 10px 1px rgba(0, 0, 0, 0.14), 0px 3px 14px 2px rgba(0, 0, 0, 0.12);
}

.theme-dark .mat-raised-button.mat-button-disabled:not([class*=mat-elevation-z]) {
  box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12);
}

.theme-dark .mat-fab:not([class*=mat-elevation-z]), .theme-dark .mat-mini-fab:not([class*=mat-elevation-z]) {
  box-shadow: 0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12);
}

.theme-dark .mat-fab:not(.mat-button-disabled):active:not([class*=mat-elevation-z]), .theme-dark .mat-mini-fab:not(.mat-button-disabled):active:not([class*=mat-elevation-z]) {
  box-shadow: 0px 7px 8px -4px rgba(0, 0, 0, 0.2), 0px 12px 17px 2px rgba(0, 0, 0, 0.14), 0px 5px 22px 4px rgba(0, 0, 0, 0.12);
}

.theme-dark .mat-fab.mat-button-disabled:not([class*=mat-elevation-z]), .theme-dark .mat-mini-fab.mat-button-disabled:not([class*=mat-elevation-z]) {
  box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12);
}

.theme-dark .mat-button-toggle-standalone,
.theme-dark .mat-button-toggle-group {
  box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12);
}

.theme-dark .mat-button-toggle-standalone.mat-button-toggle-appearance-standard,
.theme-dark .mat-button-toggle-group-appearance-standard {
  box-shadow: none;
}

.theme-dark .mat-button-toggle {
  color: rgba(255, 255, 255, 0.5);
}

.theme-dark .mat-button-toggle .mat-button-toggle-focus-overlay {
  background-color: rgba(255, 255, 255, 0.12);
}

.theme-dark .mat-button-toggle-appearance-standard {
  color: white;
  background: #424242;
}

.theme-dark .mat-button-toggle-appearance-standard .mat-button-toggle-focus-overlay {
  background-color: white;
}

.theme-dark .mat-button-toggle-group-appearance-standard .mat-button-toggle + .mat-button-toggle {
  border-left: solid 1px rgba(255, 255, 255, 0.12);
}

.theme-dark [dir=rtl] .mat-button-toggle-group-appearance-standard .mat-button-toggle + .mat-button-toggle {
  border-left: none;
  border-right: solid 1px rgba(255, 255, 255, 0.12);
}

.theme-dark .mat-button-toggle-group-appearance-standard.mat-button-toggle-vertical .mat-button-toggle + .mat-button-toggle {
  border-left: none;
  border-right: none;
  border-top: solid 1px rgba(255, 255, 255, 0.12);
}

.theme-dark .mat-button-toggle-checked {
  background-color: #212121;
  color: rgba(255, 255, 255, 0.7);
}

.theme-dark .mat-button-toggle-checked.mat-button-toggle-appearance-standard {
  color: white;
}

.theme-dark .mat-button-toggle-disabled {
  color: rgba(255, 255, 255, 0.3);
  background-color: black;
}

.theme-dark .mat-button-toggle-disabled.mat-button-toggle-appearance-standard {
  background: #424242;
}

.theme-dark .mat-button-toggle-disabled.mat-button-toggle-checked {
  background-color: #424242;
}

.theme-dark .mat-button-toggle-standalone.mat-button-toggle-appearance-standard,
.theme-dark .mat-button-toggle-group-appearance-standard {
  border: solid 1px rgba(255, 255, 255, 0.12);
}

.theme-dark .mat-button-toggle-appearance-standard .mat-button-toggle-label-content {
  line-height: 48px;
}

.theme-dark .mat-card {
  background: #424242;
  color: white;
}

.theme-dark .mat-card:not([class*=mat-elevation-z]) {
  box-shadow: 0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12);
}

.theme-dark .mat-card.mat-card-flat:not([class*=mat-elevation-z]) {
  box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12);
}

.theme-dark .mat-card-subtitle {
  color: rgba(255, 255, 255, 0.7);
}

.theme-dark .mat-checkbox-frame {
  border-color: rgba(255, 255, 255, 0.7);
}

.theme-dark .mat-checkbox-checkmark {
  fill: #303030;
}

.theme-dark .mat-checkbox-checkmark-path {
  stroke: #303030 !important;
}

.theme-dark .mat-checkbox-mixedmark {
  background-color: #303030;
}

.theme-dark .mat-checkbox-indeterminate.mat-primary .mat-checkbox-background, .theme-dark .mat-checkbox-checked.mat-primary .mat-checkbox-background {
  background-color: rgba(var(--dynamic-primary-500), 1);
}

.theme-dark .mat-checkbox-indeterminate.mat-accent .mat-checkbox-background, .theme-dark .mat-checkbox-checked.mat-accent .mat-checkbox-background {
  background-color: rgba(var(--dynamic-accent-500), 1);
}

.theme-dark .mat-checkbox-indeterminate.mat-warn .mat-checkbox-background, .theme-dark .mat-checkbox-checked.mat-warn .mat-checkbox-background {
  background-color: #ff7f6b;
}

.theme-dark .mat-checkbox-disabled.mat-checkbox-checked .mat-checkbox-background, .theme-dark .mat-checkbox-disabled.mat-checkbox-indeterminate .mat-checkbox-background {
  background-color: #686868;
}

.theme-dark .mat-checkbox-disabled:not(.mat-checkbox-checked) .mat-checkbox-frame {
  border-color: #686868;
}

.theme-dark .mat-checkbox-disabled .mat-checkbox-label {
  color: rgba(255, 255, 255, 0.7);
}

.theme-dark .mat-checkbox .mat-ripple-element {
  background-color: white;
}

.theme-dark .mat-checkbox-checked:not(.mat-checkbox-disabled).mat-primary .mat-ripple-element,
.theme-dark .mat-checkbox:active:not(.mat-checkbox-disabled).mat-primary .mat-ripple-element {
  background: rgba(var(--dynamic-primary-500), 1);
}

.theme-dark .mat-checkbox-checked:not(.mat-checkbox-disabled).mat-accent .mat-ripple-element,
.theme-dark .mat-checkbox:active:not(.mat-checkbox-disabled).mat-accent .mat-ripple-element {
  background: rgba(var(--dynamic-accent-500), 1);
}

.theme-dark .mat-checkbox-checked:not(.mat-checkbox-disabled).mat-warn .mat-ripple-element,
.theme-dark .mat-checkbox:active:not(.mat-checkbox-disabled).mat-warn .mat-ripple-element {
  background: #ff7f6b;
}

.theme-dark .mat-chip.mat-standard-chip {
  background-color: #616161;
  color: white;
}

.theme-dark .mat-chip.mat-standard-chip .mat-chip-remove {
  color: white;
  opacity: 0.4;
}

.theme-dark .mat-chip.mat-standard-chip:not(.mat-chip-disabled):active {
  box-shadow: 0px 3px 3px -2px rgba(0, 0, 0, 0.2), 0px 3px 4px 0px rgba(0, 0, 0, 0.14), 0px 1px 8px 0px rgba(0, 0, 0, 0.12);
}

.theme-dark .mat-chip.mat-standard-chip:not(.mat-chip-disabled) .mat-chip-remove:hover {
  opacity: 0.54;
}

.theme-dark .mat-chip.mat-standard-chip.mat-chip-disabled {
  opacity: 0.4;
}

.theme-dark .mat-chip.mat-standard-chip::after {
  background: white;
}

.theme-dark .mat-chip.mat-standard-chip.mat-chip-selected.mat-primary {
  background-color: rgba(var(--dynamic-primary-500), 1);
  color: rgba(var(--dynamic-primary-contrast-500), 1);
}

.theme-dark .mat-chip.mat-standard-chip.mat-chip-selected.mat-primary .mat-chip-remove {
  color: rgba(var(--dynamic-primary-contrast-500), 1);
  opacity: 0.4;
}

.theme-dark .mat-chip.mat-standard-chip.mat-chip-selected.mat-primary .mat-ripple-element {
  background-color: rgba(var(--dynamic-primary-contrast-500),0.1);
  opacity: 0.1;
}

.theme-dark .mat-chip.mat-standard-chip.mat-chip-selected.mat-warn {
  background-color: #ff7f6b;
  color: black;
}

.theme-dark .mat-chip.mat-standard-chip.mat-chip-selected.mat-warn .mat-chip-remove {
  color: black;
  opacity: 0.4;
}

.theme-dark .mat-chip.mat-standard-chip.mat-chip-selected.mat-warn .mat-ripple-element {
  background-color: rgba(0, 0, 0, 0.1);
}

.theme-dark .mat-chip.mat-standard-chip.mat-chip-selected.mat-accent {
  background-color: rgba(var(--dynamic-accent-500), 1);
  color: rgba(var(--dynamic-accent-contrast-500), 1);
}

.theme-dark .mat-chip.mat-standard-chip.mat-chip-selected.mat-accent .mat-chip-remove {
  color: rgba(var(--dynamic-accent-contrast-500), 1);
  opacity: 0.4;
}

.theme-dark .mat-chip.mat-standard-chip.mat-chip-selected.mat-accent .mat-ripple-element {
  background-color: rgba(var(--dynamic-accent-contrast-500),0.1);
  opacity: 0.1;
}

.theme-dark .mat-table {
  background: #424242;
}

.theme-dark .mat-table thead, .theme-dark .mat-table tbody, .theme-dark .mat-table tfoot,
.theme-dark mat-header-row, .theme-dark mat-row, .theme-dark mat-footer-row,
.theme-dark [mat-header-row], .theme-dark [mat-row], .theme-dark [mat-footer-row],
.theme-dark .mat-table-sticky {
  background: inherit;
}

.theme-dark mat-row, .theme-dark mat-header-row, .theme-dark mat-footer-row,
.theme-dark th.mat-header-cell, .theme-dark td.mat-cell, .theme-dark td.mat-footer-cell {
  border-bottom-color: rgba(255, 255, 255, 0.12);
}

.theme-dark .mat-header-cell {
  color: rgba(255, 255, 255, 0.7);
}

.theme-dark .mat-cell, .theme-dark .mat-footer-cell {
  color: white;
}

.theme-dark .mat-calendar-arrow {
  border-top-color: white;
}

.theme-dark .mat-datepicker-toggle,
.theme-dark .mat-datepicker-content .mat-calendar-next-button,
.theme-dark .mat-datepicker-content .mat-calendar-previous-button {
  color: white;
}

.theme-dark .mat-calendar-table-header {
  color: rgba(255, 255, 255, 0.5);
}

.theme-dark .mat-calendar-table-header-divider::after {
  background: rgba(255, 255, 255, 0.12);
}

.theme-dark .mat-calendar-body-label {
  color: rgba(255, 255, 255, 0.7);
}

.theme-dark .mat-calendar-body-cell-content,
.theme-dark .mat-date-range-input-separator {
  color: white;
  border-color: transparent;
}

.theme-dark .mat-calendar-body-disabled > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical) {
  color: rgba(255, 255, 255, 0.5);
}

.theme-dark .mat-form-field-disabled .mat-date-range-input-separator {
  color: rgba(255, 255, 255, 0.5);
}

.theme-dark .mat-calendar-body-in-preview {
  color: rgba(255, 255, 255, 0.24);
}

.theme-dark .mat-calendar-body-today:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical) {
  border-color: rgba(255, 255, 255, 0.5);
}

.theme-dark .mat-calendar-body-disabled > .mat-calendar-body-today:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical) {
  border-color: rgba(255, 255, 255, 0.3);
}

.theme-dark .mat-calendar-body-in-range::before {
  background: rgba(var(--dynamic-primary-500),0.2);
}

.theme-dark .mat-calendar-body-comparison-identical,
.theme-dark .mat-calendar-body-in-comparison-range::before {
  background: rgba(249, 171, 0, 0.2);
}

.theme-dark .mat-calendar-body-comparison-bridge-start::before,
.theme-dark [dir=rtl] .mat-calendar-body-comparison-bridge-end::before {
  background: linear-gradient(to right, rgba(var(--dynamic-primary-500),0.2) 50%, rgba(249, 171, 0, 0.2) 50%);
}

.theme-dark .mat-calendar-body-comparison-bridge-end::before,
.theme-dark [dir=rtl] .mat-calendar-body-comparison-bridge-start::before {
  background: linear-gradient(to left, rgba(var(--dynamic-primary-500),0.2) 50%, rgba(249, 171, 0, 0.2) 50%);
}

.theme-dark .mat-calendar-body-in-range > .mat-calendar-body-comparison-identical,
.theme-dark .mat-calendar-body-in-comparison-range.mat-calendar-body-in-range::after {
  background: #a8dab5;
}

.theme-dark .mat-calendar-body-comparison-identical.mat-calendar-body-selected,
.theme-dark .mat-calendar-body-in-comparison-range > .mat-calendar-body-selected {
  background: #46a35e;
}

.theme-dark .mat-calendar-body-selected {
  background-color: rgba(var(--dynamic-primary-500), 1);
  color: rgba(var(--dynamic-primary-contrast-500), 1);
}

.theme-dark .mat-calendar-body-disabled > .mat-calendar-body-selected {
  opacity: 0.2;
}

.theme-dark .mat-calendar-body-today.mat-calendar-body-selected {
  box-shadow: inset 0 0 0 1px rgba(var(--dynamic-primary-contrast-500), 1);
}

.theme-dark .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),
.theme-dark .cdk-keyboard-focused .mat-calendar-body-active > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),
.theme-dark .cdk-program-focused .mat-calendar-body-active > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical) {
  background-color: rgba(var(--dynamic-primary-500),0.3);
}

.theme-dark .mat-datepicker-content {
  box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12);
  background-color: #424242;
  color: white;
}

.theme-dark .mat-datepicker-content.mat-accent .mat-calendar-body-in-range::before {
  background: rgba(var(--dynamic-accent-500),0.2);
}

.theme-dark .mat-datepicker-content.mat-accent .mat-calendar-body-comparison-identical,
.theme-dark .mat-datepicker-content.mat-accent .mat-calendar-body-in-comparison-range::before {
  background: rgba(249, 171, 0, 0.2);
}

.theme-dark .mat-datepicker-content.mat-accent .mat-calendar-body-comparison-bridge-start::before,
.theme-dark .mat-datepicker-content.mat-accent [dir=rtl] .mat-calendar-body-comparison-bridge-end::before {
  background: linear-gradient(to right, rgba(var(--dynamic-accent-500),0.2) 50%, rgba(249, 171, 0, 0.2) 50%);
}

.theme-dark .mat-datepicker-content.mat-accent .mat-calendar-body-comparison-bridge-end::before,
.theme-dark .mat-datepicker-content.mat-accent [dir=rtl] .mat-calendar-body-comparison-bridge-start::before {
  background: linear-gradient(to left, rgba(var(--dynamic-accent-500),0.2) 50%, rgba(249, 171, 0, 0.2) 50%);
}

.theme-dark .mat-datepicker-content.mat-accent .mat-calendar-body-in-range > .mat-calendar-body-comparison-identical,
.theme-dark .mat-datepicker-content.mat-accent .mat-calendar-body-in-comparison-range.mat-calendar-body-in-range::after {
  background: #a8dab5;
}

.theme-dark .mat-datepicker-content.mat-accent .mat-calendar-body-comparison-identical.mat-calendar-body-selected,
.theme-dark .mat-datepicker-content.mat-accent .mat-calendar-body-in-comparison-range > .mat-calendar-body-selected {
  background: #46a35e;
}

.theme-dark .mat-datepicker-content.mat-accent .mat-calendar-body-selected {
  background-color: rgba(var(--dynamic-accent-500), 1);
  color: rgba(var(--dynamic-accent-contrast-500), 1);
}

.theme-dark .mat-datepicker-content.mat-accent .mat-calendar-body-disabled > .mat-calendar-body-selected {
  opacity: 0.2;
}

.theme-dark .mat-datepicker-content.mat-accent .mat-calendar-body-today.mat-calendar-body-selected {
  box-shadow: inset 0 0 0 1px rgba(var(--dynamic-accent-contrast-500), 1);
}

.theme-dark .mat-datepicker-content.mat-accent .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),
.theme-dark .mat-datepicker-content.mat-accent .cdk-keyboard-focused .mat-calendar-body-active > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),
.theme-dark .mat-datepicker-content.mat-accent .cdk-program-focused .mat-calendar-body-active > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical) {
  background-color: rgba(var(--dynamic-accent-500),0.3);
}

.theme-dark .mat-datepicker-content.mat-warn .mat-calendar-body-in-range::before {
  background: rgba(255, 127, 107, 0.2);
}

.theme-dark .mat-datepicker-content.mat-warn .mat-calendar-body-comparison-identical,
.theme-dark .mat-datepicker-content.mat-warn .mat-calendar-body-in-comparison-range::before {
  background: rgba(249, 171, 0, 0.2);
}

.theme-dark .mat-datepicker-content.mat-warn .mat-calendar-body-comparison-bridge-start::before,
.theme-dark .mat-datepicker-content.mat-warn [dir=rtl] .mat-calendar-body-comparison-bridge-end::before {
  background: linear-gradient(to right, rgba(255, 127, 107, 0.2) 50%, rgba(249, 171, 0, 0.2) 50%);
}

.theme-dark .mat-datepicker-content.mat-warn .mat-calendar-body-comparison-bridge-end::before,
.theme-dark .mat-datepicker-content.mat-warn [dir=rtl] .mat-calendar-body-comparison-bridge-start::before {
  background: linear-gradient(to left, rgba(255, 127, 107, 0.2) 50%, rgba(249, 171, 0, 0.2) 50%);
}

.theme-dark .mat-datepicker-content.mat-warn .mat-calendar-body-in-range > .mat-calendar-body-comparison-identical,
.theme-dark .mat-datepicker-content.mat-warn .mat-calendar-body-in-comparison-range.mat-calendar-body-in-range::after {
  background: #a8dab5;
}

.theme-dark .mat-datepicker-content.mat-warn .mat-calendar-body-comparison-identical.mat-calendar-body-selected,
.theme-dark .mat-datepicker-content.mat-warn .mat-calendar-body-in-comparison-range > .mat-calendar-body-selected {
  background: #46a35e;
}

.theme-dark .mat-datepicker-content.mat-warn .mat-calendar-body-selected {
  background-color: #ff7f6b;
  color: black;
}

.theme-dark .mat-datepicker-content.mat-warn .mat-calendar-body-disabled > .mat-calendar-body-selected {
  background-color: rgba(255, 127, 107, 0.4);
}

.theme-dark .mat-datepicker-content.mat-warn .mat-calendar-body-today.mat-calendar-body-selected {
  box-shadow: inset 0 0 0 1px black;
}

.theme-dark .mat-datepicker-content.mat-warn .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),
.theme-dark .mat-datepicker-content.mat-warn .cdk-keyboard-focused .mat-calendar-body-active > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),
.theme-dark .mat-datepicker-content.mat-warn .cdk-program-focused .mat-calendar-body-active > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical) {
  background-color: rgba(255, 127, 107, 0.3);
}

.theme-dark .mat-datepicker-content-touch {
  box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12);
}

.theme-dark .mat-datepicker-toggle-active {
  color: rgba(var(--dynamic-primary-500), 1);
}

.theme-dark .mat-datepicker-toggle-active.mat-accent {
  color: rgba(var(--dynamic-accent-500), 1);
}

.theme-dark .mat-datepicker-toggle-active.mat-warn {
  color: #ff7f6b;
}

.theme-dark .mat-date-range-input-inner[disabled] {
  color: rgba(255, 255, 255, 0.5);
}

.theme-dark .mat-dialog-container {
  box-shadow: 0px 11px 15px -7px rgba(0, 0, 0, 0.2), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 9px 46px 8px rgba(0, 0, 0, 0.12);
  background: #424242;
  color: white;
}

.theme-dark .mat-divider {
  border-top-color: rgba(255, 255, 255, 0.12);
}

.theme-dark .mat-divider-vertical {
  border-right-color: rgba(255, 255, 255, 0.12);
}

.theme-dark .mat-expansion-panel {
  background: #424242;
  color: white;
}

.theme-dark .mat-expansion-panel:not([class*=mat-elevation-z]) {
  box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12);
}

.theme-dark .mat-action-row {
  border-top-color: rgba(255, 255, 255, 0.12);
}

.theme-dark .mat-expansion-panel .mat-expansion-panel-header.cdk-keyboard-focused:not([aria-disabled=true]), .theme-dark .mat-expansion-panel .mat-expansion-panel-header.cdk-program-focused:not([aria-disabled=true]), .theme-dark .mat-expansion-panel:not(.mat-expanded) .mat-expansion-panel-header:hover:not([aria-disabled=true]) {
  background: rgba(255, 255, 255, 0.04);
}

@media (hover: none) {
  .theme-dark .mat-expansion-panel:not(.mat-expanded):not([aria-disabled=true]) .mat-expansion-panel-header:hover {
    background: #424242;
  }
}

.theme-dark .mat-expansion-panel-header-title {
  color: white;
}

.theme-dark .mat-expansion-panel-header-description,
.theme-dark .mat-expansion-indicator::after {
  color: rgba(255, 255, 255, 0.7);
}

.theme-dark .mat-expansion-panel-header[aria-disabled=true] {
  color: rgba(255, 255, 255, 0.3);
}

.theme-dark .mat-expansion-panel-header[aria-disabled=true] .mat-expansion-panel-header-title,
.theme-dark .mat-expansion-panel-header[aria-disabled=true] .mat-expansion-panel-header-description {
  color: inherit;
}

.theme-dark .mat-expansion-panel-header {
  height: 48px;
}

.theme-dark .mat-expansion-panel-header.mat-expanded {
  height: 64px;
}

.theme-dark .mat-form-field-label {
  color: rgba(255, 255, 255, 0.7);
}

.theme-dark .mat-hint {
  color: rgba(255, 255, 255, 0.7);
}

.theme-dark .mat-form-field.mat-focused .mat-form-field-label {
  color: rgba(var(--dynamic-primary-500), 1);
}

.theme-dark .mat-form-field.mat-focused .mat-form-field-label.mat-accent {
  color: rgba(var(--dynamic-accent-500), 1);
}

.theme-dark .mat-form-field.mat-focused .mat-form-field-label.mat-warn {
  color: #ff7f6b;
}

.theme-dark .mat-focused .mat-form-field-required-marker {
  color: rgba(var(--dynamic-accent-500), 1);
}

.theme-dark .mat-form-field-ripple {
  background-color: white;
}

.theme-dark .mat-form-field.mat-focused .mat-form-field-ripple {
  background-color: rgba(var(--dynamic-primary-500), 1);
}

.theme-dark .mat-form-field.mat-focused .mat-form-field-ripple.mat-accent {
  background-color: rgba(var(--dynamic-accent-500), 1);
}

.theme-dark .mat-form-field.mat-focused .mat-form-field-ripple.mat-warn {
  background-color: #ff7f6b;
}

.theme-dark .mat-form-field-type-mat-native-select.mat-focused:not(.mat-form-field-invalid) .mat-form-field-infix::after {
  color: rgba(var(--dynamic-primary-500), 1);
}

.theme-dark .mat-form-field-type-mat-native-select.mat-focused:not(.mat-form-field-invalid).mat-accent .mat-form-field-infix::after {
  color: rgba(var(--dynamic-accent-500), 1);
}

.theme-dark .mat-form-field-type-mat-native-select.mat-focused:not(.mat-form-field-invalid).mat-warn .mat-form-field-infix::after {
  color: #ff7f6b;
}

.theme-dark .mat-form-field.mat-form-field-invalid .mat-form-field-label {
  color: #ff7f6b;
}

.theme-dark .mat-form-field.mat-form-field-invalid .mat-form-field-label.mat-accent,
.theme-dark .mat-form-field.mat-form-field-invalid .mat-form-field-label .mat-form-field-required-marker {
  color: #ff7f6b;
}

.theme-dark .mat-form-field.mat-form-field-invalid .mat-form-field-ripple,
.theme-dark .mat-form-field.mat-form-field-invalid .mat-form-field-ripple.mat-accent {
  background-color: #ff7f6b;
}

.theme-dark .mat-error {
  color: #ff7f6b;
}

.theme-dark .mat-form-field-appearance-legacy .mat-form-field-label {
  color: rgba(255, 255, 255, 0.7);
}

.theme-dark .mat-form-field-appearance-legacy .mat-hint {
  color: rgba(255, 255, 255, 0.7);
}

.theme-dark .mat-form-field-appearance-legacy .mat-form-field-underline {
  background-color: rgba(255, 255, 255, 0.7);
}

.theme-dark .mat-form-field-appearance-legacy.mat-form-field-disabled .mat-form-field-underline {
  background-image: linear-gradient(to right, rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0.7) 33%, transparent 0%);
  background-size: 4px 100%;
  background-repeat: repeat-x;
}

.theme-dark .mat-form-field-appearance-standard .mat-form-field-underline {
  background-color: rgba(255, 255, 255, 0.7);
}

.theme-dark .mat-form-field-appearance-standard.mat-form-field-disabled .mat-form-field-underline {
  background-image: linear-gradient(to right, rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0.7) 33%, transparent 0%);
  background-size: 4px 100%;
  background-repeat: repeat-x;
}

.theme-dark .mat-form-field-appearance-fill .mat-form-field-flex {
  background-color: rgba(255, 255, 255, 0.1);
}

.theme-dark .mat-form-field-appearance-fill.mat-form-field-disabled .mat-form-field-flex {
  background-color: rgba(255, 255, 255, 0.05);
}

.theme-dark .mat-form-field-appearance-fill .mat-form-field-underline::before {
  background-color: rgba(255, 255, 255, 0.5);
}

.theme-dark .mat-form-field-appearance-fill.mat-form-field-disabled .mat-form-field-label {
  color: rgba(255, 255, 255, 0.5);
}

.theme-dark .mat-form-field-appearance-fill.mat-form-field-disabled .mat-form-field-underline::before {
  background-color: transparent;
}

.theme-dark .mat-form-field-appearance-outline .mat-form-field-outline {
  color: rgba(255, 255, 255, 0.3);
}

.theme-dark .mat-form-field-appearance-outline .mat-form-field-outline-thick {
  color: white;
}

.theme-dark .mat-form-field-appearance-outline.mat-focused .mat-form-field-outline-thick {
  color: rgba(var(--dynamic-primary-500), 1);
}

.theme-dark .mat-form-field-appearance-outline.mat-focused.mat-accent .mat-form-field-outline-thick {
  color: rgba(var(--dynamic-accent-500), 1);
}

.theme-dark .mat-form-field-appearance-outline.mat-focused.mat-warn .mat-form-field-outline-thick {
  color: #ff7f6b;
}

.theme-dark .mat-form-field-appearance-outline.mat-form-field-invalid.mat-form-field-invalid .mat-form-field-outline-thick {
  color: #ff7f6b;
}

.theme-dark .mat-form-field-appearance-outline.mat-form-field-disabled .mat-form-field-label {
  color: rgba(255, 255, 255, 0.5);
}

.theme-dark .mat-form-field-appearance-outline.mat-form-field-disabled .mat-form-field-outline {
  color: rgba(255, 255, 255, 0.15);
}

.theme-dark .mat-icon.mat-primary {
  color: rgba(var(--dynamic-primary-500), 1);
}

.theme-dark .mat-icon.mat-accent {
  color: rgba(var(--dynamic-accent-500), 1);
}

.theme-dark .mat-icon.mat-warn {
  color: #ff7f6b;
}

.theme-dark .mat-form-field-type-mat-native-select .mat-form-field-infix::after {
  color: rgba(255, 255, 255, 0.7);
}

.theme-dark .mat-input-element:disabled,
.theme-dark .mat-form-field-type-mat-native-select.mat-form-field-disabled .mat-form-field-infix::after {
  color: rgba(255, 255, 255, 0.5);
}

.theme-dark .mat-input-element {
  caret-color: rgba(var(--dynamic-primary-500), 1);
}

.theme-dark .mat-input-element::placeholder {
  color: rgba(255, 255, 255, 0.5);
}

.theme-dark .mat-input-element::-moz-placeholder {
  color: rgba(255, 255, 255, 0.5);
}

.theme-dark .mat-input-element::-webkit-input-placeholder {
  color: rgba(255, 255, 255, 0.5);
}

.theme-dark .mat-input-element:-ms-input-placeholder {
  color: rgba(255, 255, 255, 0.5);
}

.theme-dark .mat-input-element option {
  color: rgba(0, 0, 0, 0.87);
}

.theme-dark .mat-input-element option:disabled {
  color: rgba(0, 0, 0, 0.38);
}

.theme-dark .mat-form-field.mat-accent .mat-input-element {
  caret-color: rgba(var(--dynamic-accent-500), 1);
}

.theme-dark .mat-form-field.mat-warn .mat-input-element,
.theme-dark .mat-form-field-invalid .mat-input-element {
  caret-color: #ff7f6b;
}

.theme-dark .mat-form-field-type-mat-native-select.mat-form-field-invalid .mat-form-field-infix::after {
  color: #ff7f6b;
}

.theme-dark .mat-list-base .mat-list-item {
  color: white;
}

.theme-dark .mat-list-base .mat-list-option {
  color: white;
}

.theme-dark .mat-list-base .mat-subheader {
  color: rgba(255, 255, 255, 0.7);
}

.theme-dark .mat-list-item-disabled {
  background-color: black;
}

.theme-dark .mat-list-option:hover, .theme-dark .mat-list-option:focus,
.theme-dark .mat-nav-list .mat-list-item:hover,
.theme-dark .mat-nav-list .mat-list-item:focus,
.theme-dark .mat-action-list .mat-list-item:hover,
.theme-dark .mat-action-list .mat-list-item:focus {
  background: rgba(255, 255, 255, 0.04);
}

.theme-dark .mat-list-single-selected-option, .theme-dark .mat-list-single-selected-option:hover, .theme-dark .mat-list-single-selected-option:focus {
  background: rgba(255, 255, 255, 0.12);
}

.theme-dark .mat-menu-panel {
  background: #424242;
}

.theme-dark .mat-menu-panel:not([class*=mat-elevation-z]) {
  box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12);
}

.theme-dark .mat-menu-item {
  background: transparent;
  color: white;
}

.theme-dark .mat-menu-item[disabled], .theme-dark .mat-menu-item[disabled]::after,
.theme-dark .mat-menu-item[disabled] .mat-icon-no-color {
  color: rgba(255, 255, 255, 0.5);
}

.theme-dark .mat-menu-item .mat-icon-no-color,
.theme-dark .mat-menu-item-submenu-trigger::after {
  color: white;
}

.theme-dark .mat-menu-item:hover:not([disabled]),
.theme-dark .mat-menu-item.cdk-program-focused:not([disabled]),
.theme-dark .mat-menu-item.cdk-keyboard-focused:not([disabled]),
.theme-dark .mat-menu-item-highlighted:not([disabled]) {
  background: rgba(255, 255, 255, 0.04);
}

.theme-dark .mat-paginator {
  background: #424242;
}

.theme-dark .mat-paginator,
.theme-dark .mat-paginator-page-size .mat-select-trigger {
  color: rgba(255, 255, 255, 0.7);
}

.theme-dark .mat-paginator-decrement,
.theme-dark .mat-paginator-increment {
  border-top: 2px solid white;
  border-right: 2px solid white;
}

.theme-dark .mat-paginator-first,
.theme-dark .mat-paginator-last {
  border-top: 2px solid white;
}

.theme-dark .mat-icon-button[disabled] .mat-paginator-decrement,
.theme-dark .mat-icon-button[disabled] .mat-paginator-increment,
.theme-dark .mat-icon-button[disabled] .mat-paginator-first,
.theme-dark .mat-icon-button[disabled] .mat-paginator-last {
  border-color: rgba(255, 255, 255, 0.5);
}

.theme-dark .mat-paginator-container {
  min-height: 56px;
}

.theme-dark .mat-progress-bar-background {
  fill: rgba(var(--dynamic-primary-100), 1);
}

.theme-dark .mat-progress-bar-buffer {
  background-color: rgba(var(--dynamic-primary-100), 1);
}

.theme-dark .mat-progress-bar-fill::after {
  background-color: rgba(var(--dynamic-primary-500), 1);
}

.theme-dark .mat-progress-bar.mat-accent .mat-progress-bar-background {
  fill: rgba(var(--dynamic-accent-100), 1);
}

.theme-dark .mat-progress-bar.mat-accent .mat-progress-bar-buffer {
  background-color: rgba(var(--dynamic-accent-100), 1);
}

.theme-dark .mat-progress-bar.mat-accent .mat-progress-bar-fill::after {
  background-color: rgba(var(--dynamic-accent-500), 1);
}

.theme-dark .mat-progress-bar.mat-warn .mat-progress-bar-background {
  fill: #ffd9d3;
}

.theme-dark .mat-progress-bar.mat-warn .mat-progress-bar-buffer {
  background-color: #ffd9d3;
}

.theme-dark .mat-progress-bar.mat-warn .mat-progress-bar-fill::after {
  background-color: #ff7f6b;
}

.theme-dark .mat-progress-spinner circle, .theme-dark .mat-spinner circle {
  stroke: rgba(var(--dynamic-primary-500), 1);
}

.theme-dark .mat-progress-spinner.mat-accent circle, .theme-dark .mat-spinner.mat-accent circle {
  stroke: rgba(var(--dynamic-accent-500), 1);
}

.theme-dark .mat-progress-spinner.mat-warn circle, .theme-dark .mat-spinner.mat-warn circle {
  stroke: #ff7f6b;
}

.theme-dark .mat-radio-outer-circle {
  border-color: rgba(255, 255, 255, 0.7);
}

.theme-dark .mat-radio-button.mat-primary.mat-radio-checked .mat-radio-outer-circle {
  border-color: rgba(var(--dynamic-primary-500), 1);
}

.theme-dark .mat-radio-button.mat-primary .mat-radio-inner-circle,
.theme-dark .mat-radio-button.mat-primary .mat-radio-ripple .mat-ripple-element:not(.mat-radio-persistent-ripple), .theme-dark .mat-radio-button.mat-primary.mat-radio-checked .mat-radio-persistent-ripple, .theme-dark .mat-radio-button.mat-primary:active .mat-radio-persistent-ripple {
  background-color: rgba(var(--dynamic-primary-500), 1);
}

.theme-dark .mat-radio-button.mat-accent.mat-radio-checked .mat-radio-outer-circle {
  border-color: rgba(var(--dynamic-accent-500), 1);
}

.theme-dark .mat-radio-button.mat-accent .mat-radio-inner-circle,
.theme-dark .mat-radio-button.mat-accent .mat-radio-ripple .mat-ripple-element:not(.mat-radio-persistent-ripple), .theme-dark .mat-radio-button.mat-accent.mat-radio-checked .mat-radio-persistent-ripple, .theme-dark .mat-radio-button.mat-accent:active .mat-radio-persistent-ripple {
  background-color: rgba(var(--dynamic-accent-500), 1);
}

.theme-dark .mat-radio-button.mat-warn.mat-radio-checked .mat-radio-outer-circle {
  border-color: #ff7f6b;
}

.theme-dark .mat-radio-button.mat-warn .mat-radio-inner-circle,
.theme-dark .mat-radio-button.mat-warn .mat-radio-ripple .mat-ripple-element:not(.mat-radio-persistent-ripple), .theme-dark .mat-radio-button.mat-warn.mat-radio-checked .mat-radio-persistent-ripple, .theme-dark .mat-radio-button.mat-warn:active .mat-radio-persistent-ripple {
  background-color: #ff7f6b;
}

.theme-dark .mat-radio-button.mat-radio-disabled.mat-radio-checked .mat-radio-outer-circle,
.theme-dark .mat-radio-button.mat-radio-disabled .mat-radio-outer-circle {
  border-color: rgba(255, 255, 255, 0.5);
}

.theme-dark .mat-radio-button.mat-radio-disabled .mat-radio-ripple .mat-ripple-element,
.theme-dark .mat-radio-button.mat-radio-disabled .mat-radio-inner-circle {
  background-color: rgba(255, 255, 255, 0.5);
}

.theme-dark .mat-radio-button.mat-radio-disabled .mat-radio-label-content {
  color: rgba(255, 255, 255, 0.5);
}

.theme-dark .mat-radio-button .mat-ripple-element {
  background-color: white;
}

.theme-dark .mat-select-value {
  color: white;
}

.theme-dark .mat-select-placeholder {
  color: rgba(255, 255, 255, 0.5);
}

.theme-dark .mat-select-disabled .mat-select-value {
  color: rgba(255, 255, 255, 0.5);
}

.theme-dark .mat-select-arrow {
  color: rgba(255, 255, 255, 0.7);
}

.theme-dark .mat-select-panel {
  background: #424242;
}

.theme-dark .mat-select-panel:not([class*=mat-elevation-z]) {
  box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12);
}

.theme-dark .mat-select-panel .mat-option.mat-selected:not(.mat-option-multiple) {
  background: rgba(255, 255, 255, 0.12);
}

.theme-dark .mat-form-field.mat-focused.mat-primary .mat-select-arrow {
  color: rgba(var(--dynamic-primary-500), 1);
}

.theme-dark .mat-form-field.mat-focused.mat-accent .mat-select-arrow {
  color: rgba(var(--dynamic-accent-500), 1);
}

.theme-dark .mat-form-field.mat-focused.mat-warn .mat-select-arrow {
  color: #ff7f6b;
}

.theme-dark .mat-form-field .mat-select.mat-select-invalid .mat-select-arrow {
  color: #ff7f6b;
}

.theme-dark .mat-form-field .mat-select.mat-select-disabled .mat-select-arrow {
  color: rgba(255, 255, 255, 0.5);
}

.theme-dark .mat-drawer-container {
  background-color: #303030;
  color: white;
}

.theme-dark .mat-drawer {
  background-color: #424242;
  color: white;
}

.theme-dark .mat-drawer.mat-drawer-push {
  background-color: #424242;
}

.theme-dark .mat-drawer:not(.mat-drawer-side) {
  box-shadow: 0px 8px 10px -5px rgba(0, 0, 0, 0.2), 0px 16px 24px 2px rgba(0, 0, 0, 0.14), 0px 6px 30px 5px rgba(0, 0, 0, 0.12);
}

.theme-dark .mat-drawer-side {
  border-right: solid 1px rgba(255, 255, 255, 0.12);
}

.theme-dark .mat-drawer-side.mat-drawer-end {
  border-left: solid 1px rgba(255, 255, 255, 0.12);
  border-right: none;
}

.theme-dark [dir=rtl] .mat-drawer-side {
  border-left: solid 1px rgba(255, 255, 255, 0.12);
  border-right: none;
}

.theme-dark [dir=rtl] .mat-drawer-side.mat-drawer-end {
  border-left: none;
  border-right: solid 1px rgba(255, 255, 255, 0.12);
}

.theme-dark .mat-drawer-backdrop.mat-drawer-shown {
  background-color: rgba(189, 189, 189, 0.6);
}

.theme-dark .mat-slide-toggle.mat-checked .mat-slide-toggle-thumb {
  background-color: rgba(var(--dynamic-accent-500), 1);
}

.theme-dark .mat-slide-toggle.mat-checked .mat-slide-toggle-bar {
  background-color: rgba(var(--dynamic-accent-500),0.54);
}

.theme-dark .mat-slide-toggle.mat-checked .mat-ripple-element {
  background-color: rgba(var(--dynamic-accent-500), 1);
}

.theme-dark .mat-slide-toggle.mat-primary.mat-checked .mat-slide-toggle-thumb {
  background-color: rgba(var(--dynamic-primary-500), 1);
}

.theme-dark .mat-slide-toggle.mat-primary.mat-checked .mat-slide-toggle-bar {
  background-color: rgba(var(--dynamic-primary-500),0.54);
}

.theme-dark .mat-slide-toggle.mat-primary.mat-checked .mat-ripple-element {
  background-color: rgba(var(--dynamic-primary-500), 1);
}

.theme-dark .mat-slide-toggle.mat-warn.mat-checked .mat-slide-toggle-thumb {
  background-color: #ff7f6b;
}

.theme-dark .mat-slide-toggle.mat-warn.mat-checked .mat-slide-toggle-bar {
  background-color: rgba(255, 127, 107, 0.54);
}

.theme-dark .mat-slide-toggle.mat-warn.mat-checked .mat-ripple-element {
  background-color: #ff7f6b;
}

.theme-dark .mat-slide-toggle:not(.mat-checked) .mat-ripple-element {
  background-color: white;
}

.theme-dark .mat-slide-toggle-thumb {
  box-shadow: 0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12);
  background-color: #bdbdbd;
}

.theme-dark .mat-slide-toggle-bar {
  background-color: rgba(255, 255, 255, 0.5);
}

.theme-dark .mat-slider-track-background {
  background-color: rgba(255, 255, 255, 0.3);
}

.theme-dark .mat-primary .mat-slider-track-fill,
.theme-dark .mat-primary .mat-slider-thumb,
.theme-dark .mat-primary .mat-slider-thumb-label {
  background-color: rgba(var(--dynamic-primary-500), 1);
}

.theme-dark .mat-primary .mat-slider-thumb-label-text {
  color: rgba(var(--dynamic-primary-contrast-500), 1);
}

.theme-dark .mat-primary .mat-slider-focus-ring {
  background-color: rgba(var(--dynamic-primary-500),0.2);
  opacity: 0.2;
}

.theme-dark .mat-accent .mat-slider-track-fill,
.theme-dark .mat-accent .mat-slider-thumb,
.theme-dark .mat-accent .mat-slider-thumb-label {
  background-color: rgba(var(--dynamic-accent-500), 1);
}

.theme-dark .mat-accent .mat-slider-thumb-label-text {
  color: rgba(var(--dynamic-accent-contrast-500), 1);
}

.theme-dark .mat-accent .mat-slider-focus-ring {
  background-color: rgba(var(--dynamic-accent-500),0.2);
  opacity: 0.2;
}

.theme-dark .mat-warn .mat-slider-track-fill,
.theme-dark .mat-warn .mat-slider-thumb,
.theme-dark .mat-warn .mat-slider-thumb-label {
  background-color: #ff7f6b;
}

.theme-dark .mat-warn .mat-slider-thumb-label-text {
  color: black;
}

.theme-dark .mat-warn .mat-slider-focus-ring {
  background-color: rgba(255, 127, 107, 0.2);
}

.theme-dark .mat-slider:hover .mat-slider-track-background,
.theme-dark .cdk-focused .mat-slider-track-background {
  background-color: rgba(255, 255, 255, 0.3);
}

.theme-dark .mat-slider-disabled .mat-slider-track-background,
.theme-dark .mat-slider-disabled .mat-slider-track-fill,
.theme-dark .mat-slider-disabled .mat-slider-thumb {
  background-color: rgba(255, 255, 255, 0.3);
}

.theme-dark .mat-slider-disabled:hover .mat-slider-track-background {
  background-color: rgba(255, 255, 255, 0.3);
}

.theme-dark .mat-slider-min-value .mat-slider-focus-ring {
  background-color: rgba(255, 255, 255, 0.12);
}

.theme-dark .mat-slider-min-value.mat-slider-thumb-label-showing .mat-slider-thumb,
.theme-dark .mat-slider-min-value.mat-slider-thumb-label-showing .mat-slider-thumb-label {
  background-color: white;
}

.theme-dark .mat-slider-min-value.mat-slider-thumb-label-showing.cdk-focused .mat-slider-thumb,
.theme-dark .mat-slider-min-value.mat-slider-thumb-label-showing.cdk-focused .mat-slider-thumb-label {
  background-color: rgba(255, 255, 255, 0.3);
}

.theme-dark .mat-slider-min-value:not(.mat-slider-thumb-label-showing) .mat-slider-thumb {
  border-color: rgba(255, 255, 255, 0.3);
  background-color: transparent;
}

.theme-dark .mat-slider-min-value:not(.mat-slider-thumb-label-showing):hover .mat-slider-thumb, .theme-dark .mat-slider-min-value:not(.mat-slider-thumb-label-showing).cdk-focused .mat-slider-thumb {
  border-color: rgba(255, 255, 255, 0.3);
}

.theme-dark .mat-slider-min-value:not(.mat-slider-thumb-label-showing):hover.mat-slider-disabled .mat-slider-thumb, .theme-dark .mat-slider-min-value:not(.mat-slider-thumb-label-showing).cdk-focused.mat-slider-disabled .mat-slider-thumb {
  border-color: rgba(255, 255, 255, 0.3);
}

.theme-dark .mat-slider-has-ticks .mat-slider-wrapper::after {
  border-color: rgba(255, 255, 255, 0.7);
}

.theme-dark .mat-slider-horizontal .mat-slider-ticks {
  background-image: repeating-linear-gradient(to right, rgba(255, 255, 255, 0.7), rgba(255, 255, 255, 0.7) 2px, transparent 0, transparent);
  background-image: -moz-repeating-linear-gradient(0.0001deg, rgba(255, 255, 255, 0.7), rgba(255, 255, 255, 0.7) 2px, transparent 0, transparent);
}

.theme-dark .mat-slider-vertical .mat-slider-ticks {
  background-image: repeating-linear-gradient(to bottom, rgba(255, 255, 255, 0.7), rgba(255, 255, 255, 0.7) 2px, transparent 0, transparent);
}

.theme-dark .mat-step-header.cdk-keyboard-focused, .theme-dark .mat-step-header.cdk-program-focused, .theme-dark .mat-step-header:hover {
  background-color: rgba(255, 255, 255, 0.04);
}

@media (hover: none) {
  .theme-dark .mat-step-header:hover {
    background: none;
  }
}

.theme-dark .mat-step-header .mat-step-label,
.theme-dark .mat-step-header .mat-step-optional {
  color: rgba(255, 255, 255, 0.7);
}

.theme-dark .mat-step-header .mat-step-icon {
  background-color: rgba(255, 255, 255, 0.7);
  color: rgba(var(--dynamic-primary-contrast-500), 1);
}

.theme-dark .mat-step-header .mat-step-icon-selected,
.theme-dark .mat-step-header .mat-step-icon-state-done,
.theme-dark .mat-step-header .mat-step-icon-state-edit {
  background-color: rgba(var(--dynamic-primary-500), 1);
  color: rgba(var(--dynamic-primary-contrast-500), 1);
}

.theme-dark .mat-step-header.mat-accent .mat-step-icon {
  color: rgba(var(--dynamic-accent-contrast-500), 1);
}

.theme-dark .mat-step-header.mat-accent .mat-step-icon-selected,
.theme-dark .mat-step-header.mat-accent .mat-step-icon-state-done,
.theme-dark .mat-step-header.mat-accent .mat-step-icon-state-edit {
  background-color: rgba(var(--dynamic-accent-500), 1);
  color: rgba(var(--dynamic-accent-contrast-500), 1);
}

.theme-dark .mat-step-header.mat-warn .mat-step-icon {
  color: black;
}

.theme-dark .mat-step-header.mat-warn .mat-step-icon-selected,
.theme-dark .mat-step-header.mat-warn .mat-step-icon-state-done,
.theme-dark .mat-step-header.mat-warn .mat-step-icon-state-edit {
  background-color: #ff7f6b;
  color: black;
}

.theme-dark .mat-step-header .mat-step-icon-state-error {
  background-color: transparent;
  color: #ff7f6b;
}

.theme-dark .mat-step-header .mat-step-label.mat-step-label-active {
  color: white;
}

.theme-dark .mat-step-header .mat-step-label.mat-step-label-error {
  color: #ff7f6b;
}

.theme-dark .mat-stepper-horizontal, .theme-dark .mat-stepper-vertical {
  background-color: #424242;
}

.theme-dark .mat-stepper-vertical-line::before {
  border-left-color: rgba(255, 255, 255, 0.12);
}

.theme-dark .mat-horizontal-stepper-header::before,
.theme-dark .mat-horizontal-stepper-header::after,
.theme-dark .mat-stepper-horizontal-line {
  border-top-color: rgba(255, 255, 255, 0.12);
}

.theme-dark .mat-horizontal-stepper-header {
  height: 72px;
}

.theme-dark .mat-stepper-label-position-bottom .mat-horizontal-stepper-header,
.theme-dark .mat-vertical-stepper-header {
  padding: 24px 24px;
}

.theme-dark .mat-stepper-vertical-line::before {
  top: -16px;
  bottom: -16px;
}

.theme-dark .mat-stepper-label-position-bottom .mat-horizontal-stepper-header::after, .theme-dark .mat-stepper-label-position-bottom .mat-horizontal-stepper-header::before {
  top: 36px;
}

.theme-dark .mat-stepper-label-position-bottom .mat-stepper-horizontal-line {
  top: 36px;
}

.theme-dark .mat-sort-header-arrow {
  color: #c6c6c6;
}

.theme-dark .mat-tab-nav-bar,
.theme-dark .mat-tab-header {
  border-bottom: 1px solid rgba(255, 255, 255, 0.12);
}

.theme-dark .mat-tab-group-inverted-header .mat-tab-nav-bar,
.theme-dark .mat-tab-group-inverted-header .mat-tab-header {
  border-top: 1px solid rgba(255, 255, 255, 0.12);
  border-bottom: none;
}

.theme-dark .mat-tab-label, .theme-dark .mat-tab-link {
  color: white;
}

.theme-dark .mat-tab-label.mat-tab-disabled, .theme-dark .mat-tab-link.mat-tab-disabled {
  color: rgba(255, 255, 255, 0.5);
}

.theme-dark .mat-tab-header-pagination-chevron {
  border-color: white;
}

.theme-dark .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron {
  border-color: rgba(255, 255, 255, 0.5);
}

.theme-dark .mat-tab-group[class*=mat-background-] .mat-tab-header,
.theme-dark .mat-tab-nav-bar[class*=mat-background-] {
  border-bottom: none;
  border-top: none;
}

.theme-dark .mat-tab-group.mat-primary .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .theme-dark .mat-tab-group.mat-primary .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),
.theme-dark .mat-tab-group.mat-primary .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),
.theme-dark .mat-tab-group.mat-primary .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled), .theme-dark .mat-tab-nav-bar.mat-primary .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .theme-dark .mat-tab-nav-bar.mat-primary .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),
.theme-dark .mat-tab-nav-bar.mat-primary .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),
.theme-dark .mat-tab-nav-bar.mat-primary .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled) {
  background-color: rgba(var(--dynamic-primary-100),0.3);
}

.theme-dark .mat-tab-group.mat-primary .mat-ink-bar, .theme-dark .mat-tab-nav-bar.mat-primary .mat-ink-bar {
  background-color: rgba(var(--dynamic-primary-500), 1);
}

.theme-dark .mat-tab-group.mat-primary.mat-background-primary > .mat-tab-header .mat-ink-bar, .theme-dark .mat-tab-group.mat-primary.mat-background-primary > .mat-tab-link-container .mat-ink-bar, .theme-dark .mat-tab-nav-bar.mat-primary.mat-background-primary > .mat-tab-header .mat-ink-bar, .theme-dark .mat-tab-nav-bar.mat-primary.mat-background-primary > .mat-tab-link-container .mat-ink-bar {
  background-color: rgba(var(--dynamic-primary-contrast-500), 1);
}

.theme-dark .mat-tab-group.mat-accent .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .theme-dark .mat-tab-group.mat-accent .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),
.theme-dark .mat-tab-group.mat-accent .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),
.theme-dark .mat-tab-group.mat-accent .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled), .theme-dark .mat-tab-nav-bar.mat-accent .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .theme-dark .mat-tab-nav-bar.mat-accent .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),
.theme-dark .mat-tab-nav-bar.mat-accent .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),
.theme-dark .mat-tab-nav-bar.mat-accent .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled) {
  background-color: rgba(var(--dynamic-accent-100),0.3);
}

.theme-dark .mat-tab-group.mat-accent .mat-ink-bar, .theme-dark .mat-tab-nav-bar.mat-accent .mat-ink-bar {
  background-color: rgba(var(--dynamic-accent-500), 1);
}

.theme-dark .mat-tab-group.mat-accent.mat-background-accent > .mat-tab-header .mat-ink-bar, .theme-dark .mat-tab-group.mat-accent.mat-background-accent > .mat-tab-link-container .mat-ink-bar, .theme-dark .mat-tab-nav-bar.mat-accent.mat-background-accent > .mat-tab-header .mat-ink-bar, .theme-dark .mat-tab-nav-bar.mat-accent.mat-background-accent > .mat-tab-link-container .mat-ink-bar {
  background-color: rgba(var(--dynamic-accent-contrast-500), 1);
}

.theme-dark .mat-tab-group.mat-warn .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .theme-dark .mat-tab-group.mat-warn .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),
.theme-dark .mat-tab-group.mat-warn .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),
.theme-dark .mat-tab-group.mat-warn .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled), .theme-dark .mat-tab-nav-bar.mat-warn .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .theme-dark .mat-tab-nav-bar.mat-warn .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),
.theme-dark .mat-tab-nav-bar.mat-warn .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),
.theme-dark .mat-tab-nav-bar.mat-warn .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled) {
  background-color: rgba(255, 217, 211, 0.3);
}

.theme-dark .mat-tab-group.mat-warn .mat-ink-bar, .theme-dark .mat-tab-nav-bar.mat-warn .mat-ink-bar {
  background-color: #ff7f6b;
}

.theme-dark .mat-tab-group.mat-warn.mat-background-warn > .mat-tab-header .mat-ink-bar, .theme-dark .mat-tab-group.mat-warn.mat-background-warn > .mat-tab-link-container .mat-ink-bar, .theme-dark .mat-tab-nav-bar.mat-warn.mat-background-warn > .mat-tab-header .mat-ink-bar, .theme-dark .mat-tab-nav-bar.mat-warn.mat-background-warn > .mat-tab-link-container .mat-ink-bar {
  background-color: black;
}

.theme-dark .mat-tab-group.mat-background-primary .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .theme-dark .mat-tab-group.mat-background-primary .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),
.theme-dark .mat-tab-group.mat-background-primary .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),
.theme-dark .mat-tab-group.mat-background-primary .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled), .theme-dark .mat-tab-nav-bar.mat-background-primary .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .theme-dark .mat-tab-nav-bar.mat-background-primary .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),
.theme-dark .mat-tab-nav-bar.mat-background-primary .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),
.theme-dark .mat-tab-nav-bar.mat-background-primary .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled) {
  background-color: rgba(var(--dynamic-primary-100),0.3);
}

.theme-dark .mat-tab-group.mat-background-primary > .mat-tab-header, .theme-dark .mat-tab-group.mat-background-primary > .mat-tab-link-container, .theme-dark .mat-tab-group.mat-background-primary > .mat-tab-header-pagination, .theme-dark .mat-tab-nav-bar.mat-background-primary > .mat-tab-header, .theme-dark .mat-tab-nav-bar.mat-background-primary > .mat-tab-link-container, .theme-dark .mat-tab-nav-bar.mat-background-primary > .mat-tab-header-pagination {
  background-color: rgba(var(--dynamic-primary-500), 1);
}

.theme-dark .mat-tab-group.mat-background-primary > .mat-tab-header .mat-tab-label, .theme-dark .mat-tab-group.mat-background-primary > .mat-tab-link-container .mat-tab-link, .theme-dark .mat-tab-nav-bar.mat-background-primary > .mat-tab-header .mat-tab-label, .theme-dark .mat-tab-nav-bar.mat-background-primary > .mat-tab-link-container .mat-tab-link {
  color: rgba(var(--dynamic-primary-contrast-500), 1);
}

.theme-dark .mat-tab-group.mat-background-primary > .mat-tab-header .mat-tab-label.mat-tab-disabled, .theme-dark .mat-tab-group.mat-background-primary > .mat-tab-link-container .mat-tab-link.mat-tab-disabled, .theme-dark .mat-tab-nav-bar.mat-background-primary > .mat-tab-header .mat-tab-label.mat-tab-disabled, .theme-dark .mat-tab-nav-bar.mat-background-primary > .mat-tab-link-container .mat-tab-link.mat-tab-disabled {
  color: rgba(var(--dynamic-primary-contrast-500),0.4);
}

.theme-dark .mat-tab-group.mat-background-primary > .mat-tab-header-pagination .mat-tab-header-pagination-chevron,
.theme-dark .mat-tab-group.mat-background-primary > .mat-tab-links .mat-focus-indicator::before,
.theme-dark .mat-tab-group.mat-background-primary > .mat-tab-header .mat-focus-indicator::before, .theme-dark .mat-tab-nav-bar.mat-background-primary > .mat-tab-header-pagination .mat-tab-header-pagination-chevron,
.theme-dark .mat-tab-nav-bar.mat-background-primary > .mat-tab-links .mat-focus-indicator::before,
.theme-dark .mat-tab-nav-bar.mat-background-primary > .mat-tab-header .mat-focus-indicator::before {
  border-color: rgba(var(--dynamic-primary-contrast-500), 1);
}

.theme-dark .mat-tab-group.mat-background-primary > .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron, .theme-dark .mat-tab-nav-bar.mat-background-primary > .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron {
  border-color: rgba(var(--dynamic-primary-contrast-500),0.4);
}

.theme-dark .mat-tab-group.mat-background-primary > .mat-tab-header .mat-ripple-element,
.theme-dark .mat-tab-group.mat-background-primary > .mat-tab-link-container .mat-ripple-element, .theme-dark .mat-tab-nav-bar.mat-background-primary > .mat-tab-header .mat-ripple-element,
.theme-dark .mat-tab-nav-bar.mat-background-primary > .mat-tab-link-container .mat-ripple-element {
  background-color: rgba(var(--dynamic-primary-contrast-500),0.12);
}

.theme-dark .mat-tab-group.mat-background-accent .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .theme-dark .mat-tab-group.mat-background-accent .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),
.theme-dark .mat-tab-group.mat-background-accent .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),
.theme-dark .mat-tab-group.mat-background-accent .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled), .theme-dark .mat-tab-nav-bar.mat-background-accent .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .theme-dark .mat-tab-nav-bar.mat-background-accent .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),
.theme-dark .mat-tab-nav-bar.mat-background-accent .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),
.theme-dark .mat-tab-nav-bar.mat-background-accent .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled) {
  background-color: rgba(var(--dynamic-accent-100),0.3);
}

.theme-dark .mat-tab-group.mat-background-accent > .mat-tab-header, .theme-dark .mat-tab-group.mat-background-accent > .mat-tab-link-container, .theme-dark .mat-tab-group.mat-background-accent > .mat-tab-header-pagination, .theme-dark .mat-tab-nav-bar.mat-background-accent > .mat-tab-header, .theme-dark .mat-tab-nav-bar.mat-background-accent > .mat-tab-link-container, .theme-dark .mat-tab-nav-bar.mat-background-accent > .mat-tab-header-pagination {
  background-color: rgba(var(--dynamic-accent-500), 1);
}

.theme-dark .mat-tab-group.mat-background-accent > .mat-tab-header .mat-tab-label, .theme-dark .mat-tab-group.mat-background-accent > .mat-tab-link-container .mat-tab-link, .theme-dark .mat-tab-nav-bar.mat-background-accent > .mat-tab-header .mat-tab-label, .theme-dark .mat-tab-nav-bar.mat-background-accent > .mat-tab-link-container .mat-tab-link {
  color: rgba(var(--dynamic-accent-contrast-500), 1);
}

.theme-dark .mat-tab-group.mat-background-accent > .mat-tab-header .mat-tab-label.mat-tab-disabled, .theme-dark .mat-tab-group.mat-background-accent > .mat-tab-link-container .mat-tab-link.mat-tab-disabled, .theme-dark .mat-tab-nav-bar.mat-background-accent > .mat-tab-header .mat-tab-label.mat-tab-disabled, .theme-dark .mat-tab-nav-bar.mat-background-accent > .mat-tab-link-container .mat-tab-link.mat-tab-disabled {
  color: rgba(var(--dynamic-accent-contrast-500),0.4);
}

.theme-dark .mat-tab-group.mat-background-accent > .mat-tab-header-pagination .mat-tab-header-pagination-chevron,
.theme-dark .mat-tab-group.mat-background-accent > .mat-tab-links .mat-focus-indicator::before,
.theme-dark .mat-tab-group.mat-background-accent > .mat-tab-header .mat-focus-indicator::before, .theme-dark .mat-tab-nav-bar.mat-background-accent > .mat-tab-header-pagination .mat-tab-header-pagination-chevron,
.theme-dark .mat-tab-nav-bar.mat-background-accent > .mat-tab-links .mat-focus-indicator::before,
.theme-dark .mat-tab-nav-bar.mat-background-accent > .mat-tab-header .mat-focus-indicator::before {
  border-color: rgba(var(--dynamic-accent-contrast-500), 1);
}

.theme-dark .mat-tab-group.mat-background-accent > .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron, .theme-dark .mat-tab-nav-bar.mat-background-accent > .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron {
  border-color: rgba(var(--dynamic-accent-contrast-500),0.4);
}

.theme-dark .mat-tab-group.mat-background-accent > .mat-tab-header .mat-ripple-element,
.theme-dark .mat-tab-group.mat-background-accent > .mat-tab-link-container .mat-ripple-element, .theme-dark .mat-tab-nav-bar.mat-background-accent > .mat-tab-header .mat-ripple-element,
.theme-dark .mat-tab-nav-bar.mat-background-accent > .mat-tab-link-container .mat-ripple-element {
  background-color: rgba(var(--dynamic-accent-contrast-500),0.12);
}

.theme-dark .mat-tab-group.mat-background-warn .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .theme-dark .mat-tab-group.mat-background-warn .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),
.theme-dark .mat-tab-group.mat-background-warn .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),
.theme-dark .mat-tab-group.mat-background-warn .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled), .theme-dark .mat-tab-nav-bar.mat-background-warn .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .theme-dark .mat-tab-nav-bar.mat-background-warn .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),
.theme-dark .mat-tab-nav-bar.mat-background-warn .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),
.theme-dark .mat-tab-nav-bar.mat-background-warn .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled) {
  background-color: rgba(255, 217, 211, 0.3);
}

.theme-dark .mat-tab-group.mat-background-warn > .mat-tab-header, .theme-dark .mat-tab-group.mat-background-warn > .mat-tab-link-container, .theme-dark .mat-tab-group.mat-background-warn > .mat-tab-header-pagination, .theme-dark .mat-tab-nav-bar.mat-background-warn > .mat-tab-header, .theme-dark .mat-tab-nav-bar.mat-background-warn > .mat-tab-link-container, .theme-dark .mat-tab-nav-bar.mat-background-warn > .mat-tab-header-pagination {
  background-color: #ff7f6b;
}

.theme-dark .mat-tab-group.mat-background-warn > .mat-tab-header .mat-tab-label, .theme-dark .mat-tab-group.mat-background-warn > .mat-tab-link-container .mat-tab-link, .theme-dark .mat-tab-nav-bar.mat-background-warn > .mat-tab-header .mat-tab-label, .theme-dark .mat-tab-nav-bar.mat-background-warn > .mat-tab-link-container .mat-tab-link {
  color: black;
}

.theme-dark .mat-tab-group.mat-background-warn > .mat-tab-header .mat-tab-label.mat-tab-disabled, .theme-dark .mat-tab-group.mat-background-warn > .mat-tab-link-container .mat-tab-link.mat-tab-disabled, .theme-dark .mat-tab-nav-bar.mat-background-warn > .mat-tab-header .mat-tab-label.mat-tab-disabled, .theme-dark .mat-tab-nav-bar.mat-background-warn > .mat-tab-link-container .mat-tab-link.mat-tab-disabled {
  color: rgba(0, 0, 0, 0.4);
}

.theme-dark .mat-tab-group.mat-background-warn > .mat-tab-header-pagination .mat-tab-header-pagination-chevron,
.theme-dark .mat-tab-group.mat-background-warn > .mat-tab-links .mat-focus-indicator::before,
.theme-dark .mat-tab-group.mat-background-warn > .mat-tab-header .mat-focus-indicator::before, .theme-dark .mat-tab-nav-bar.mat-background-warn > .mat-tab-header-pagination .mat-tab-header-pagination-chevron,
.theme-dark .mat-tab-nav-bar.mat-background-warn > .mat-tab-links .mat-focus-indicator::before,
.theme-dark .mat-tab-nav-bar.mat-background-warn > .mat-tab-header .mat-focus-indicator::before {
  border-color: black;
}

.theme-dark .mat-tab-group.mat-background-warn > .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron, .theme-dark .mat-tab-nav-bar.mat-background-warn > .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron {
  border-color: rgba(0, 0, 0, 0.4);
}

.theme-dark .mat-tab-group.mat-background-warn > .mat-tab-header .mat-ripple-element,
.theme-dark .mat-tab-group.mat-background-warn > .mat-tab-link-container .mat-ripple-element, .theme-dark .mat-tab-nav-bar.mat-background-warn > .mat-tab-header .mat-ripple-element,
.theme-dark .mat-tab-nav-bar.mat-background-warn > .mat-tab-link-container .mat-ripple-element {
  background-color: rgba(0, 0, 0, 0.12);
}

.theme-dark .mat-toolbar {
  background: #212121;
  color: white;
}

.theme-dark .mat-toolbar.mat-primary {
  background: rgba(var(--dynamic-primary-500), 1);
  color: rgba(var(--dynamic-primary-contrast-500), 1);
}

.theme-dark .mat-toolbar.mat-accent {
  background: rgba(var(--dynamic-accent-500), 1);
  color: rgba(var(--dynamic-accent-contrast-500), 1);
}

.theme-dark .mat-toolbar.mat-warn {
  background: #ff7f6b;
  color: black;
}

.theme-dark .mat-toolbar .mat-form-field-underline,
.theme-dark .mat-toolbar .mat-form-field-ripple,
.theme-dark .mat-toolbar .mat-focused .mat-form-field-ripple {
  background-color: currentColor;
}

.theme-dark .mat-toolbar .mat-form-field-label,
.theme-dark .mat-toolbar .mat-focused .mat-form-field-label,
.theme-dark .mat-toolbar .mat-select-value,
.theme-dark .mat-toolbar .mat-select-arrow,
.theme-dark .mat-toolbar .mat-form-field.mat-focused .mat-select-arrow {
  color: inherit;
}

.theme-dark .mat-toolbar .mat-input-element {
  caret-color: currentColor;
}

.theme-dark .mat-toolbar-multiple-rows {
  min-height: 64px;
}

.theme-dark .mat-toolbar-row, .theme-dark .mat-toolbar-single-row {
  height: 64px;
}

@media (max-width: 599px) {
  .theme-dark .mat-toolbar-multiple-rows {
    min-height: 56px;
  }
  .theme-dark .mat-toolbar-row, .theme-dark .mat-toolbar-single-row {
    height: 56px;
  }
}

.theme-dark .mat-tooltip {
  background: rgba(97, 97, 97, 0.9);
}

.theme-dark .mat-tree {
  background: #424242;
}

.theme-dark .mat-tree-node,
.theme-dark .mat-nested-tree-node {
  color: white;
}

.theme-dark .mat-tree-node {
  min-height: 48px;
}

.theme-dark .mat-snack-bar-container {
  color: rgba(0, 0, 0, 0.87);
  background: #fafafa;
  box-shadow: 0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12);
}

.theme-dark .mat-simple-snackbar-action {
  color: inherit;
}

.theme-dark a {
  color: rgba(255, 255, 255, 0.7);
}

.theme-dark a.link {
  color: #fff;
}

.theme-dark .mat-grid-list .mat-grid-tile .grid-tile-content {
  background-color: #424242;
}

.theme-dark .mat-table.hover-table tbody tr:hover {
  background-color: rgba(255, 255, 255, 0.04);
}

.theme-dark .mat-card.card-disabled {
  background-color: rgba(255, 255, 255, 0.12);
  color: rgba(255, 255, 255, 0.3);
}

.theme-dark .mat-card .mat-card {
  background-color: #303030;
}

.theme-dark .mat-tab-list .mat-tab-link i {
  background-color: rgba(var(--dynamic-primary-100),0.4);
}

.theme-dark .mat-form-field.mat-focused.mat-primary .mat-select-arrow {
  color: #fff;
}

.theme-dark .mat-form-field.mat-form-field-appearance-outline.mat-focused .mat-form-field-suffix button.mat-icon-button {
  color: #fff;
}

.theme-dark .mat-form-field.mat-form-field-appearance-outline.mat-focused .mat-form-field-outline {
  color: #fff;
}

.theme-dark .mat-form-field.mat-form-field-appearance-outline.mat-focused .mat-form-field-label {
  color: #fff;
}

.theme-dark .mat-form-field.mat-form-field-appearance-outline.mat-focused .cdk-focused {
  color: #fff;
}

.theme-dark .argo-notification {
  background-color: #424242 !important;
  color: white !important;
}

.theme-dark .default-back {
  background-color: #303030;
  color: white;
}

.theme-dark .grey-back-bg {
  background-image: url("/assets/images/setting_button.svg");
  background-repeat: no-repeat;
  background-position: right;
  background-size: cover;
  background-color: #212121;
  color: white;
}

.theme-dark .grey-back {
  background-color: #212121;
  color: white;
}

.theme-dark .primary-back {
  background-color: rgba(var(--dynamic-primary-500), 1);
  color: rgba(var(--dynamic-primary-contrast-500), 1);
}

.theme-dark .primary-light-back {
  background-color: rgba(var(--dynamic-primary-100),0.9);
  color: rgba(var(--dynamic-primary-contrast-100), 1);
}

.theme-dark .primary-dark-back {
  background-color: rgba(var(--dynamic-primary-900),0.9);
  color: rgba(var(--dynamic-primary-contrast-900), 1);
  background-color: rgba(var(--dynamic-primary-900),0.9);
  color: rgba(var(--dynamic-primary-contrast-900), 1);
}

.theme-dark .accent-back {
  background-color: rgba(var(--dynamic-accent-500), 1);
  color: rgba(var(--dynamic-accent-contrast-500), 1);
}

.theme-dark .pdf-light-back {
  background-color: rgba(var(--dynamic-primary-100),0.9);
  color: rgba(var(--dynamic-primary-contrast-100), 1);
}

.theme-dark .pdf-font {
  color: rgba(var(--dynamic-primary-500), 1);
}

.theme-dark .ar-back {
  background-color: rgba(159, 106, 249, 0.9);
  color: black;
}

.theme-dark .ar-back .mat-ripple-element {
  background-color: rgba(0, 0, 0, 0.1);
}

.theme-dark .ar-back-bg {
  background-image: url("/assets/images/edit_button.svg");
  background-repeat: no-repeat;
  background-position: bottom;
  background-size: cover;
  background-color: rgba(159, 106, 249, 0.9);
  color: black;
}

.theme-dark .ar-back-bg .mat-ripple-element {
  background-color: rgba(0, 0, 0, 0.1);
}

.theme-dark .ar-dark-back {
  background-color: rgba(114, 60, 245, 0.9);
  color: white;
}

.theme-dark .ar-font {
  color: #9f6af9;
}

.theme-dark .mat-input-element {
  caret-color: #fff;
}

.theme-dark .search-btn,
.theme-dark .delete-cross,
.theme-dark .caret-down,
.theme-dark .tag-icon,
.theme-dark .bars {
  color: #C7C7C7;
}

.theme-dark .btn-arrow-bg {
  background-color: #e0e0e0;
}

.theme-dark .btn-dynamic-color {
  color: white !important;
}

.theme-dark .pdf-tab i {
  background-color: rgba(var(--dynamic-primary-900), 1) !important;
}

.theme-dark .pdf-tab.mat-tab-label-active {
  background-color: rgba(var(--dynamic-primary-100),0.9) !important;
  color: black;
}

.theme-dark .ar-tab i {
  background-color: #723cf5 !important;
  color: white;
}

.theme-dark .ar-tab.mat-tab-label-active {
  background-color: rgba(226, 210, 253, 0.9) !important;
  color: black;
}

body div.ngxp__container {
  background: #ff6c58;
  color: white;
  border: 0;
  max-width: 350px;
  box-shadow: 0 3px 5px -1px rgba(0, 0, 0, 0.2), 0 5px 8px 0 rgba(0, 0, 0, 0.14), 0 1px 14px 0 rgba(0, 0, 0, 0.12);
  z-index: 999;
}

body div.ngxp__container > .ngxp__arrow:before {
  background-color: #ff6c58;
}

.custom-bg {
  background-color: #F4FcFB !important;
  box-shadow: 0 4px 4px 0px #00000040 !important;
  color: #0e46a3 !important;
}

html, body {
  height: 100%;
}

html {
  font-size: 10px;
}

@media (min-width: 640px) {
  html {
    font-size: 11px;
  }
}

@media (min-width: 768px) {
  html {
    font-size: 12px;
  }
}

@media (min-width: 1024px) {
  html {
    font-size: 13px;
  }
}

@media (min-width: 1280px) {
  html {
    font-size: 14px;
  }
}

@media (min-width: 1536px) {
  html {
    font-size: 16px;
  }
}

body {
  margin: 0;
}

mat-accordion.mat-accordion mat-expansion-panel.mat-expansion-panel,
mat-accordion.mat-accordion mat-expansion-panel.mat-expansion-panel:first-of-type,
mat-accordion.mat-accordion mat-expansion-panel.mat-expansion-panel:last-of-type,
mat-card.mat-card {
  border-radius: 1rem;
}

mat-accordion.mat-accordion mat-expansion-panel.mat-expansion-panel mat-card.mat-card:not([class*=mat-elevation-z]),
mat-accordion.mat-accordion mat-expansion-panel.mat-expansion-panel:first-of-type mat-card.mat-card:not([class*=mat-elevation-z]),
mat-accordion.mat-accordion mat-expansion-panel.mat-expansion-panel:last-of-type mat-card.mat-card:not([class*=mat-elevation-z]),
mat-card.mat-card mat-card.mat-card:not([class*=mat-elevation-z]) {
  box-shadow: none;
  border-width: 1px;
}

.scrollable-section .spinner-parent,
.table-container .spinner-parent,
.mat-grid-list .spinner-parent {
  position: relative;
}

.scrollable-section .spinner-container,
.table-container .spinner-container,
.mat-grid-list .spinner-container {
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  right: 0;
  background-color: rgba(0, 0, 0, 0.15);
  display: flex;
  justify-content: center;
  align-items: center;
  border-radius: 1rem;
}

.table-container {
  position: relative;
  --tw-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
  border-radius: 1rem;
  overflow: hidden;
}

.table-container table {
  width: 100%;
}

.table-container table.hover-table tbody tr {
  cursor: pointer;
}

.table-container table .mat-header-cell,
.table-container table .mat-cell {
  white-space: nowrap;
  padding-left: 1.5rem;
}

.table-container table .mat-header-cell.ellipsis-cell,
.table-container table .mat-cell.ellipsis-cell {
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 0;
  min-width: 0;
  width: 100%;
}

.mat-grid-list .mat-grid-tile {
  --tw-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
  border-radius: 1rem;
}

.mat-grid-list .mat-grid-tile .grid-tile-content {
  width: 100%;
  height: 100%;
  display: flex;
  flex-direction: column;
}

.mat-grid-list .mat-grid-tile .grid-tile-content .grid-tile-header {
  height: 10rem;
  position: relative;
  padding: 0.5rem;
  border-radius: 1rem;
}

.mat-grid-list .mat-grid-tile .grid-tile-content .grid-tile-header img {
  height: 100%;
  width: 100%;
  object-fit: contain;
}

.mat-grid-list .mat-grid-tile .grid-tile-content .grid-tile-footer {
  padding: 1rem 1.5rem;
  display: flex;
  flex-direction: column;
}

.mat-grid-list .mat-grid-tile .grid-tile-content .grid-tile-footer .grid-tile-title {
  font-size: 1.125rem;
  line-height: 1.75rem;
  margin: 0;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.mat-grid-list.slider-grid .mat-grid-tile .grid-tile-content .grid-tile-header {
  height: 8rem;
}

.mat-paginator {
  --tw-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
  border-radius: 1rem;
  margin-top: 2rem;
}

.mat-tab-labels .mat-tab-label {
  opacity: 1;
  min-width: auto;
}

.mat-tab-links .mat-tab-link {
  opacity: 1;
}

.mat-tab-links .mat-tab-link i {
  width: 1.75rem;
  height: 1.75rem;
  border-radius: 50%;
  display: flex;
  justify-content: center;
  align-items: center;
  font-size: 0.875rem;
  line-height: 1.25rem;
  margin-right: 0.5rem;
}

mat-tab-body .mat-tab-body-content {
  overflow: hidden;
}

.mat-form-field.width-auto .mat-form-field-infix {
  width: auto;
}

.mat-form-field.width-auto .mat-form-field-infix .mat-input-element {
  line-height: inherit;
}

.mat-form-field.no-padding .mat-form-field-wrapper {
  padding: 0;
}

* {
  box-sizing: border-box;
}

mat-dialog-container.mat-dialog-container {
  border-radius: 1rem;
}

mat-dialog-container.mat-dialog-container .mat-dialog-title {
  text-align: center;
  font-size: 1.25rem;
  line-height: 1.75rem;
  font-weight: 600;
}

.custom-modal > mat-dialog-container.mat-dialog-container {
  border-radius: 0px;
}

.mat-dialog-container-no-padding > mat-dialog-container {
  padding: 0px !important;
}

.mat-form-field-wrapper {
  padding: 0;
}

.line-clamp-2::after {
  right: 0;
  bottom: 0;
  width: 100%;
  position: absolute;
  height: 1.3rem;
}

.line-clamp-2:hover::after {
  content: none !important;
}

.mat-sidenav.collapsed .mat-list-base .mat-list-item .mat-list-item-content {
  display: flex;
  justify-content: center;
  padding: 0;
}

.mat-sidenav:not(.collapsed) .mat-list-base .mat-list-item .mat-list-item-content {
  transition: padding 0.5s;
  padding: 0 0.5rem;
}

.mat-sidenav .mat-drawer-inner-container {
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  overflow-x: hidden;
}

button.mat-icon-button {
  /* better fontawesome rendering */
  display: inline-flex;
  justify-content: center;
  align-items: center;
}

button.mat-icon-button .mat-button-wrapper > i {
  vertical-align: unset;
}

.mat-select-value {
  position: relative;
  bottom: 3px;
}

.mat-form-field.mat-form-field-appearance-outline .mat-form-field-prefix {
  top: -0.1em;
  margin-right: 0.5em;
}

.mat-form-field.mat-form-field-appearance-outline .mat-form-field-suffix {
  top: -0.25em;
}

.mat-form-field.mat-form-field-appearance-outline .mat-form-field-suffix button.mat-icon-button {
  display: inline-flex;
  justify-content: center;
  align-items: center;
}

.mat-form-field.mat-form-field-appearance-outline .mat-form-field-suffix button.mat-icon-button .mat-button-wrapper > i {
  vertical-align: unset;
}

.mat-form-field.mat-form-field-appearance-outline.mat-focused .mat-form-field-prefix button.mat-icon-button {
  color: rgba(var(--dynamic-primary-500), 1);
}

.mat-form-field.mat-form-field-appearance-outline.mat-focused .mat-form-field-suffix button.mat-icon-button {
  color: rgba(var(--dynamic-primary-500), 1);
}

.header-less-tabs :not(nav).mat-tab-header {
  display: none;
}

.header-tabs .mat-tab-header {
  display: block !important;
}

.h-fit-content {
  height: -moz-fit-content !important;
  height: fit-content !important;
}

.w-fit-content {
  width: -moz-fit-content !important;
  width: fit-content !important;
}

.mat-dialog-content {
  width: 100% !important;
  margin: 0 !important;
}

.views-progress-bar .mat-progress-bar-fill::after {
  background-color: rgba(var(--dynamic-primary-100), 1);
}

.views-progress-bar .mat-progress-bar-buffer {
  background-color: #eee;
}

.animation-show {
  animation: animShow 0.5s;
}

@keyframes animShow {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}
/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3RhaWx3aW5kT3V0cHV0LnNjc3MiLCIuLi9zdHlsZXMuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AYW5ndWxhci9tYXRlcmlhbC9fdGhlbWluZy5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2NvZGVtaXJyb3IvbGliL2NvZGVtaXJyb3IuY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2NvZGVtaXJyb3IvdGhlbWUvbWF0ZXJpYWwuY3NzIiwiLi4vdGhlbWVzL2R5bmFtaWMtdGhlbWUuc2NzcyIsIi4uL3RoZW1lcy9keW5hbWljLXRoZW1lLWxpZ2h0LnNjc3MiLCIuLi90aGVtZXMvZHluYW1pYy10aGVtZS1kYXJrLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvbmd4LXBvcHBlcmpzL3Njc3MvdGhlbWUuc2NzcyIsIjxubyBzb3VyY2U+Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7RUFHRSxzQkFBQTtBQ0NGOztBREVBO0VBQ0UsV0FBQTtFQUlBLGlCQUFBO0VBRUEsOEJBQUE7QUNMRjs7QURTQTtFQUNFLFNBQUE7RUFJQSw4SEFDQTtBQ05GOztBRGlCQTtFQUNFLG1CQUFBO0FDVkY7O0FEYUE7O0VBRUUsd0ZBQ0E7RUFPQSxjQUFBO0FDakJGOztBRHFCQTtFQUNFLGNBQUE7QUNsQkY7O0FEcUJBO0VBQ0UsY0FBQTtFQUVBLHFCQUFBO0FDbkJGOztBRHVCQTs7O0VBR0Usb0JBQUE7RUFFQSxlQUFBO0VBRUEsaUJBQUE7RUFFQSxTQUFBO0FDdkJGOztBRDJCQTtFQUVFLG9CQUFBO0FDekJGOztBRDRCQTs7OztFQUlFLDBCQUFBO0FDekJGOztBRDRCQTtFQUNFLGtCQUFBO0VBQ0EsVUFBQTtBQ3pCRjs7QUQ0QkE7RUFDRSw4QkFBQTtBQ3pCRjs7QUQ0QkE7RUFDRSxnQkFBQTtBQ3pCRjs7QUQ0QkE7RUFDRSx3QkFBQTtBQ3pCRjs7QUQ0QkE7O0VBRUUsWUFBQTtBQ3pCRjs7QUQ0QkE7RUFDRSw2QkFBQTtFQUVBLG9CQUFBO0FDMUJGOztB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O0FDMUNGOztBRDZDQTtFQUNFLDRCQUFBO0FDMUNGOztBRDZDQTtFQUNFLDhCQUFBO0FDMUNGOztBRDZDQTtFQUNFLDRCQUFBO0FDMUNGOztBRDZDQTtFQUNFLDJCQUFBO0FDMUNGOztBRDZDQTtFQUNFLDRCQUFBO0FDMUNGOztBRDZDQTtFQUNFLDRCQUFBO0FDMUNGOztBRDZDQTtFQUNFLDZCQUFBO0FDMUNGOztBRDZDQTtFQUNFLGdDQUFBO0FDMUNGOztBRDZDQTtFQUNFLDhCQUFBO0FDMUNGOztBRDZDQTtFQUNFLDJCQUFBO0FDMUNGOztBRDZDQTtFQUNFLDZCQUFBO0FDMUNGOztBRDZDQTtFQUNFLCtCQUFBO0FDMUNGOztBRDZDQTtFQUNFLCtCQUFBO0FDMUNGOztBRDZDQTtFQUNFLGdDQUFBO0FDMUNGOztBRDZDQTtFQUNFLDhCQUFBO0FDMUNGOztBRDZDQTtFQUNFLDZCQUFBO0FDMUNGOztBRDZDQTtFQUNFLDZCQUFBO0FDMUNGOztBRDZDQTtFQUNFLGdDQUFBO0FDMUNGOztBRDZDQTtFQUNFLHdCQUFBO0FDMUNGOztBRDZDQTtFQUNFLCtCQUFBO0FDMUNGOztBRDZDQTtFQUNFLHlCQUFBO0FDMUNGOztBRDZDQTtFQUNFLHdCQUFBO0FDMUNGOztBRDZDQTtFQUNFLHdCQUFBO0FDMUNGOztBRDZDQTtFQUNFLHVCQUFBO0FDMUNGOztBRDZDQTtFQUNFLDBCQUFBO0FDMUNGOztBRDZDQTtFQUNFLHVCQUFBO0FDMUNGOztBRDZDQTtFQUNFLHVCQUFBO0FDMUNGOztBRDZDQTtFQUNFLDBCQUFBO0FDMUNGOztBRDZDQTtFQUNFLHdCQUFBO0FDMUNGOztBRDZDQTtFQUNFLHVCQUFBO0FDMUNGOztBRDZDQTtFQUNFLHdCQUFBO0FDMUNGOztBRDZDQTtFQUNFLDRCQUFBO0FDMUNGOztBRDZDQTtFQUNFLHNCQUFBO0FDMUNGOztBRDZDQTtFQUNFLHFCQUFBO0FDMUNGOztBRDZDQTtFQUNFLHFCQUFBO0FDMUNGOztBRDZDQTtFQUNFLHVCQUFBO0FDMUNGOztBRDZDQTtFQUNFLHNCQUFBO0FDMUNGOztBRDZDQTtFQUNFLHNCQUFBO0FDMUNGOztBRDZDQTtFQUNFLDZCQUFBO0FDMUNGOztBRDZDQTtFQUNFLHFCQUFBO0FDMUNGOztBRDZDQTtFQUNFLHNCQUFBO0FDMUNGOztBRDZDQTtFQUNFLHlCQUFBO0FDMUNGOztBRDZDQTtFQUNFLHNCQUFBO0FDMUNGOztBRDZDQTtFQUNFLHVCQUFBO0FDMUNGOztBRDZDQTtFQUNFLHVCQUFBO0FDMUNGOztBRDZDQTtFQUNFLHlCQUFBO0FDMUNGOztBRDZDQTtFQUNFLHlCQUFBO0FDMUNGOztBRDZDQTtFQUNFLHVCQUFBO0FDMUNGOztBRDZDQTtFQUNFLHlDQUFBO0FDMUNGOztBRDZDQTtFQUNFLDBCQUFBO0FDMUNGOztBRDZDQTtFQUNFLDJEQUFBO0FDMUNGOztBRDZDQTtFQUNFLDhCQUFBO0FDMUNGOztBRDZDQTtFQUNFLHNDQUFBO0FDMUNGOztBRDZDQTtFQUNFLGlDQUFBO0FDMUNGOztBRDZDQTtFQUNFLDBCQUFBO0FDMUNGOztBRDZDQTtFQUNFLDRCQUFBO0FDMUNGOztBRDZDQTtFQUNFLGtDQUFBO0FDMUNGOztBRDZDQTtFQUNFLDhCQUFBO0FDMUNGOztBRDZDQTtFQUNFLHNDQUFBO0FDMUNGOztBRDZDQTtFQUNFLG9DQUFBO0FDMUNGOztBRDZDQTtFQUNFLGtDQUFBO0FDMUNGOztBRDZDQTtFQUNFLHlDQUFBO0FDMUNGOztBRDZDQTtFQUNFLHdDQUFBO0FDMUNGOztBRDZDQTtFQUNFLDZCQUFBO0FDMUNGOztBRDZDQTtFQUNFLDJCQUFBO0FDMUNGOztBRDZDQTtFQUNFLDZCQUFBO0FDMUNGOztBRDZDQTtFQUNFLDhCQUFBO0FDMUNGOztBRDZDQTtFQUNFLGdDQUFBO0FDMUNGOztBRDZDQTtFQUNFLGdDQUFBO0FDMUNGOztBRDZDQTtFQUNFLDhCQUFBO0FDMUNGOztBRDZDQTtFQUNFLGdDQUFBO0FDMUNGOztBRDZDQTtFQUNFLGlDQUFBO0FDMUNGOztBRDZDQTtFQUNFLGtDQUFBO0FDMUNGOztBRDZDQTtFQUNFLDRCQUFBO0FDMUNGOztBRDZDQTtFQUNFLDRCQUFBO0FDMUNGOztBRDZDQTtFQUNFLDhCQUFBO0FDMUNGOztBRDZDQTtFQUNFLGlDQUFBO0VBQ0Esc0VBQUE7QUMxQ0Y7O0FENkNBO0VBQ0UsaUNBQUE7RUFDQSxnRUFBQTtBQzFDRjs7QUQ2Q0E7RUFDRSxtQ0FBQTtBQzFDRjs7QUQ2Q0E7RUFDRSw2QkFBQTtFQUNBLHNFQUFBO0FDMUNGOztBRDZDQTtFQUNFLCtCQUFBO0FDMUNGOztBRDZDQTtFQUNFLDRCQUFBO0FDMUNGOztBRDZDQTtFQUNFLGtDQUFBO0FDMUNGOztBRDZDQTtFQUNFLDJCQUFBO0FDMUNGOztBRDZDQTtFQUNFLDBCQUFBO0FDMUNGOztBRDZDQTtFQUNFLHdCQUFBO0FDMUNGOztBRDZDQTtFQUNFLDJCQUFBO0FDMUNGOztBRDZDQTtFQUNFLDJCQUFBO0FDMUNGOztBRDZDQTtFQUNFLDZCQUFBO0VBQ0EsOEJBQUE7QUMxQ0Y7O0FENkNBO0VBQ0UsNEJBQUE7RUFDQSwrQkFBQTtBQzFDRjs7QUQ2Q0E7RUFDRSwrQkFBQTtFQUNBLGdDQUFBO0FDMUNGOztBRDZDQTtFQUNFLDZCQUFBO0VBQ0EsOEJBQUE7QUMxQ0Y7O0FENkNBO0VBQ0UsOEJBQUE7RUFDQSxpQ0FBQTtBQzFDRjs7QUQ2Q0E7RUFDRSwrQkFBQTtFQUNBLGdDQUFBO0FDMUNGOztBRDZDQTtFQUNFLCtCQUFBO0VBQ0Esa0NBQUE7QUMxQ0Y7O0FENkNBO0VBQ0UsZ0NBQUE7RUFDQSxpQ0FBQTtBQzFDRjs7QUQ2Q0E7RUFDRSxnQ0FBQTtFQUNBLGlDQUFBO0FDMUNGOztBRDZDQTtFQUNFLDZCQUFBO0VBQ0EsOEJBQUE7QUMxQ0Y7O0FENkNBO0VBQ0UsK0JBQUE7RUFDQSxnQ0FBQTtBQzFDRjs7QUQ2Q0E7RUFDRSxpQ0FBQTtBQzFDRjs7QUQ2Q0E7RUFDRSwrQkFBQTtBQzFDRjs7QUQ2Q0E7RUFDRSxrQ0FBQTtBQzFDRjs7QUQ2Q0E7RUFDRSw2QkFBQTtBQzFDRjs7QUQ2Q0E7RUFDRSxtQ0FBQTtBQzFDRjs7QUQ2Q0E7RUFDRSw2QkFBQTtFQUNBLCtCQUFBO0FDMUNGOztBRDZDQTtF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O0FBaXpNTDs7QUF6eU1JO0VBQ0Msd0JBQUE7RUFDQSxpQkFBQTtBQTJ5TUw7O0FBdHlNQztFQUNDLGFBQUE7RUFDQSxzQkFBQTtFQUNBLDhCQUFBO0VBQ0Esa0JBQUE7QUF3eU1GOztBQXB5TUE7RUFDQyxpQ0FBQTtFQUNBLG9CQUFBO0VBQ0EsdUJBQUE7RUFDQSxtQkFBQTtBQXV5TUQ7O0FBdHlNQztFQUNDLHFCQUFBO0FBd3lNRjs7QUFweU1BO0VBQ0Msa0JBQUE7RUFDRyxXQUFBO0FBdXlNSjs7QUFueU1DO0VBQ0MsV0FBQTtFQUNHLG1CQUFBO0FBc3lNTDs7QUFweU1DO0VBQ0MsWUFBQTtBQXN5TUY7O0FBcHlNRTtFQUNDLG9CQUFBO0VBQ0EsdUJBQUE7RUFDQSxtQkFBQTtBQXN5TUg7O0FBcHlNRztFQUNDLHFCQUFBO0FBc3lNSjs7QUE3eE1HO0VBQ0MsMENBQUE7QUEreE1KOztBQXp4TUc7RUFDQywwQ0FBQTtBQTJ4TUo7O0FBcnhNQTtFQUNDLGFBQUE7QUF3eE1EOztBQXJ4TUE7RUFDQyx5QkFBQTtBQXd4TUQ7O0FBcnhNQTtFQUNDLG1DQUFBO0VBQUEsOEJBQUE7QUF3eE1EOztBQXJ4TUE7RUFDQyxrQ0FBQTtFQUFBLDZCQUFBO0FBd3hNRDs7QUFyeE1BO0VBQ0Msc0JBQUE7RUFDQSxvQkFBQTtBQXd4TUQ7O0FBcHhNQztFQUNJLHFEQUFBO0FBdXhNTDs7QUFweE1FO0VBQ0Esc0JBQUE7QUFzeE1GOztBQWp4TUE7RUFDQyx3QkFBQTtBQW94TUQ7O0FBanhNQTtFQUVDO0lBQ0MsVUFBQTtFQW14TUE7RUFqeE1EO0lBQ0MsVUFBQTtFQW14TUE7QUFDRiIsImZpbGUiOiJzdHlsZXMuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIiosXG46OmJlZm9yZSxcbjo6YWZ0ZXIge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xufVxuXG5odG1sIHtcbiAgdGFiLXNpemU6IDQ7XG59XG5cbmh0bWwge1xuICBsaW5lLWhlaWdodDogMS4xNTtcbiAgXG4gIC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTtcbiAgXG59XG5cbmJvZHkge1xuICBtYXJnaW46IDA7XG59XG5cbmJvZHkge1xuICBmb250LWZhbWlseTpcblx0XHRzeXN0ZW0tdWksXG5cdFx0LWFwcGxlLXN5c3RlbSwgXG5cdFx0J1NlZ29lIFVJJyxcblx0XHRSb2JvdG8sXG5cdFx0SGVsdmV0aWNhLFxuXHRcdEFyaWFsLFxuXHRcdHNhbnMtc2VyaWYsXG5cdFx0J0FwcGxlIENvbG9yIEVtb2ppJyxcblx0XHQnU2Vnb2UgVUkgRW1vamknO1xufVxuXG5iIHtcbiAgZm9udC13ZWlnaHQ6IGJvbGRlcjtcbn1cblxuY29kZSxcbnByZSB7XG4gIGZvbnQtZmFtaWx5OlxuXHRcdHVpLW1vbm9zcGFjZSxcblx0XHRTRk1vbm8tUmVndWxhcixcblx0XHRDb25zb2xhcyxcblx0XHQnTGliZXJhdGlvbiBNb25vJyxcblx0XHRNZW5sbyxcblx0XHRtb25vc3BhY2U7XG4gIFxuICBmb250LXNpemU6IDFlbTtcbiAgXG59XG5cbnNtYWxsIHtcbiAgZm9udC1zaXplOiA4MCU7XG59XG5cbnRhYmxlIHtcbiAgdGV4dC1pbmRlbnQ6IDA7XG4gIFxuICBib3JkZXItY29sb3I6IGluaGVyaXQ7XG4gIFxufVxuXG5idXR0b24sXG5pbnB1dCxcbnRleHRhcmVhIHtcbiAgZm9udC1mYW1pbHk6IGluaGVyaXQ7XG4gIFxuICBmb250LXNpemU6IDEwMCU7XG4gIFxuICBsaW5lLWhlaWdodDogMS4xNTtcbiAgXG4gIG1hcmdpbjogMDtcbiAgXG59XG5cbmJ1dHRvbiB7XG4gIFxuICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbn1cblxuYnV0dG9uLFxuW3R5cGU9J2J1dHRvbiddLFxuW3R5cGU9J3Jlc2V0J10sXG5bdHlwZT0nc3VibWl0J10ge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IGJ1dHRvbjtcbn1cblxuOjotbW96LWZvY3VzLWlubmVyIHtcbiAgYm9yZGVyLXN0eWxlOiBub25lO1xuICBwYWRkaW5nOiAwO1xufVxuXG46LW1vei1mb2N1c3Jpbmcge1xuICBvdXRsaW5lOiAxcHggZG90dGVkIEJ1dHRvblRleHQ7XG59XG5cbjotbW96LXVpLWludmFsaWQge1xuICBib3gtc2hhZG93OiBub25lO1xufVxuXG5wcm9ncmVzcyB7XG4gIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcbn1cblxuOjotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uLFxuOjotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uIHtcbiAgaGVpZ2h0OiBhdXRvO1xufVxuXG5bdHlwZT0nc2VhcmNoJ10ge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IHRleHRmaWVsZDtcbiAgXG4gIG91dGxpbmUtb2Zmc2V0OiAtMnB4O1xuICBcbn1cblxuOjotd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uIHtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xufVxuXG46Oi13ZWJraXQtZmlsZS11cGxvYWQtYnV0dG9uIHtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBidXR0b247XG4gIFxuICBmb250OiBpbmhlcml0O1xuICBcbn1cblxuaDEsXG5oMixcbmgzLFxuaDQsXG5wLFxucHJlIHtcbiAgbWFyZ2luOiAwO1xufVxuXG5idXR0b24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTtcbn1cblxudWwge1xuICBsaXN0LXN0eWxlOiBub25lO1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG59XG5cbmh0bWwge1xuICBmb250LWZhbWlseTogdWktc2Fucy1zZXJpZiwgc3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsIFwiU2Vnb2UgVUlcIiwgUm9ib3RvLCBcIkhlbHZldGljYSBOZXVlXCIsIEFyaWFsLCBcIk5vdG8gU2Fuc1wiLCBzYW5zLXNlcmlmLCBcIkFwcGxlIENvbG9yIEVtb2ppXCIsIFwiU2Vnb2UgVUkgRW1vamlcIiwgXCJTZWdvZSBVSSBTeW1ib2xcIiwgXCJOb3RvIENvbG9yIEVtb2ppXCI7XG4gIFxuICBsaW5lLWhlaWdodDogMS41O1xuICBcbn1cblxuYm9keSB7XG4gIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xuICBsaW5lLWhlaWdodDogaW5oZXJpdDtcbn1cblxuKixcbjo6YmVmb3JlLFxuOjphZnRlciB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIFxuICBib3JkZXItd2lkdGg6IDA7XG4gIFxuICBib3JkZXItc3R5bGU6IHNvbGlkO1xuICBcbiAgYm9yZGVyLWNvbG9yOiBjdXJyZW50Q29sb3I7XG4gIFxufVxuXG5pbWcge1xuICBib3JkZXItc3R5bGU6IHNvbGlkO1xufVxuXG50ZXh0YXJlYSB7XG4gIHJlc2l6ZTogdmVydGljYWw7XG59XG5cbmlucHV0OjpwbGFjZWhvbGRlcixcbnRleHRhcmVhOjpwbGFjZWhvbGRlciB7XG4gIG9wYWNpdHk6IDE7XG4gIGNvbG9yOiAjOWNhM2FmO1xufVxuXG5idXR0b24sXG5bcm9sZT1cImJ1dHRvblwiXSB7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuOi1tb3otZm9jdXNyaW5nIHtcbiAgb3V0bGluZTogYXV0bztcbn1cblxudGFibGUge1xuICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xufVxuXG5oMSxcbmgyLFxuaDMsXG5oNCB7XG4gIGZvbnQtc2l6ZTogaW5oZXJpdDtcbiAgZm9udC13ZWlnaHQ6IGluaGVyaXQ7XG59XG5cbmEge1xuICBjb2xvcjogaW5oZXJpdDtcbiAgdGV4dC1kZWNvcmF0aW9uOiBpbmhlcml0O1xufVxuXG5idXR0b24sXG5pbnB1dCxcbnRleHRhcmVhIHtcbiAgcGFkZGluZzogMDtcbiAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XG4gIGNvbG9yOiBpbmhlcml0O1xufVxuXG5wcmUsXG5jb2RlIHtcbiAgZm9udC1mYW1pbHk6IHVpLW1vbm9zcGFjZSwgU0ZNb25vLVJlZ3VsYXIsIE1lbmxvLCBNb25hY28sIENvbnNvbGFzLCBcIkxpYmVyYXRpb24gTW9ub1wiLCBcIkNvdXJpZXIgTmV3XCIsIG1vbm9zcGFjZTtcbn1cblxuaW1nLFxuc3ZnLFxudmlkZW8sXG5jYW52YXMsXG5hdWRpbyxcbm9iamVjdCB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgXG59XG5cbmltZyxcbnZpZGVvIHtcbiAgbWF4LXdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IGF1dG87XG59XG5cbltoaWRkZW5dIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuKiwgOjpiZWZvcmUsIDo6YWZ0ZXIge1xuICAtLXR3LXRyYW5zbGF0ZS14OiAwO1xuICAtLXR3LXRyYW5zbGF0ZS15OiAwO1xuICAtLXR3LXJvdGF0ZTogMDtcbiAgLS10dy1za2V3LXg6IDA7XG4gIC0tdHctc2tldy15OiAwO1xuICAtLXR3LXNjYWxlLXg6IDE7XG4gIC0tdHctc2NhbGUteTogMTtcbiAgLS10dy10cmFuc2Zvcm06IHRyYW5zbGF0ZVgodmFyKC0tdHctdHJhbnNsYXRlLXgpKSB0cmFuc2xhdGVZKHZhcigtLXR3LXRyYW5zbGF0ZS15KSkgcm90YXRlKHZhcigtLXR3LXJvdGF0ZSkpIHNrZXdYKHZhcigtLXR3LXNrZXcteCkpIHNrZXdZKHZhcigtLXR3LXNrZXcteSkpIHNjYWxlWCh2YXIoLS10dy1zY2FsZS14KSkgc2NhbGVZKHZhcigtLXR3LXNjYWxlLXkpKTtcbiAgLS10dy1ib3JkZXItb3BhY2l0eTogMTtcbiAgYm9yZGVyLWNvbG9yOiByZ2JhKDIyOSwgMjMxLCAyMzUsIHZhcigtLXR3LWJvcmRlci1vcGFjaXR5KSk7XG4gIC0tdHctcmluZy1vZmZzZXQtc2hhZG93OiAwIDAgIzAwMDA7XG4gIC0tdHctcmluZy1zaGFkb3c6IDAgMCAjMDAwMDtcbiAgLS10dy1zaGFkb3c6IDAgMCAjMDAwMDtcbn1cblxuYnV0dG9uOmZvY3VzIHtcbiAgb3V0bGluZTogMnB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICBvdXRsaW5lLW9mZnNldDogMnB4O1xufVxuXG5hIHtcbiAgb3V0bGluZTogMnB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICBvdXRsaW5lLW9mZnNldDogMnB4O1xufVxuXG4uY29udGFpbmVyIHtcbiAgd2lkdGg6IDEwMCU7XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA2NDBweCkge1xuICAuY29udGFpbmVyIHtcbiAgICBtYXgtd2lkdGg6IDY0MHB4O1xuICB9XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAuY29udGFpbmVyIHtcbiAgICBtYXgtd2lkdGg6IDc2OHB4O1xuICB9XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiAxMDI0cHgpIHtcbiAgLmNvbnRhaW5lciB7XG4gICAgbWF4LXdpZHRoOiAxMDI0cHg7XG4gIH1cbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDEyODBweCkge1xuICAuY29udGFpbmVyIHtcbiAgICBtYXgtd2lkdGg6IDEyODBweDtcbiAgfVxufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogMTU3NnB4KSB7XG4gIC5jb250YWluZXIge1xuICAgIG1heC13aWR0aDogMTU3NnB4O1xuICB9XG59XG5cbi5hYnNvbHV0ZSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZSAhaW1wb3J0YW50O1xufVxuXG4ucmVsYXRpdmUge1xuICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDtcbn1cblxuLmJvdHRvbS00IHtcbiAgYm90dG9tOiAxcmVtICFpbXBvcnRhbnQ7XG59XG5cbi50b3AtNCB7XG4gIHRvcDogMXJlbSAhaW1wb3J0YW50O1xufVxuXG4ubGVmdC00IHtcbiAgbGVmdDogMXJlbSAhaW1wb3J0YW50O1xufVxuXG4udG9wLTAge1xuICB0b3A6IDBweCAhaW1wb3J0YW50O1xufVxuXG4ucmlnaHQtMCB7XG4gIHJpZ2h0OiAwcHggIWltcG9ydGFudDtcbn1cblxuLmxlZnQtMCB7XG4gIGxlZnQ6IDBweCAhaW1wb3J0YW50O1xufVxuXG4ubGVmdC0xIHtcbiAgbGVmdDogMC4yNXJlbSAhaW1wb3J0YW50O1xufVxuXG4ucmlnaHQtMSB7XG4gIHJpZ2h0OiAwLjI1cmVtICFpbXBvcnRhbnQ7XG59XG5cbi56LTEwIHtcbiAgei1pbmRleDogMTAgIWltcG9ydGFudDtcbn1cblxuLm0tMiB7XG4gIG1hcmdpbjogMC41cmVtICFpbXBvcnRhbnQ7XG59XG5cbi5tLTAge1xuICBtYXJnaW46IDBweCAhaW1wb3J0YW50O1xufVxuXG4ubXgtYXV0byB7XG4gIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7XG4gIG1hcmdpbi1yaWdodDogYXV0byAhaW1wb3J0YW50O1xufVxuXG4ubXgtNCB7XG4gIG1hcmdpbi1sZWZ0OiAxcmVtICFpbXBvcnRhbnQ7XG4gIG1hcmdpbi1yaWdodDogMXJlbSAhaW1wb3J0YW50O1xufVxuXG4ubXktNCB7XG4gIG1hcmdpbi10b3A6IDFyZW0gIWltcG9ydGFudDtcbiAgbWFyZ2luLWJvdHRvbTogMXJlbSAhaW1wb3J0YW50O1xufVxuXG4ubXktMiB7XG4gIG1hcmdpbi10b3A6IDAuNXJlbSAhaW1wb3J0YW50O1xuICBtYXJnaW4tYm90dG9tOiAwLjVyZW0gIWltcG9ydGFudDtcbn1cblxuLm15LTAge1xuICBtYXJnaW4tdG9wOiAwcHggIWltcG9ydGFudDtcbiAgbWFyZ2luLWJvdHRvbTogMHB4ICFpbXBvcnRhbnQ7XG59XG5cbi5teC0yIHtcbiAgbWFyZ2luLWxlZnQ6IDAuNXJlbSAhaW1wb3J0YW50O1xuICBtYXJnaW4tcmlnaHQ6IDAuNXJlbSAhaW1wb3J0YW50O1xufVxuXG4ubXktNSB7XG4gIG1hcmdpbi10b3A6IDEuMjVyZW0gIWltcG9ydGFudDtcbiAgbWFyZ2luLWJvdHRvbTogMS4yNXJlbSAhaW1wb3J0YW50O1xufVxuXG4ubXktMSB7XG4gIG1hcmdpbi10b3A6IDAuMjVyZW0gIWltcG9ydGFudDtcbiAgbWFyZ2luLWJvdHRvbTogMC4yNXJlbSAhaW1wb3J0YW50O1xufVxuXG4ubXgtMTAge1xuICBtYXJnaW4tbGVmdDogMi41cmVtICFpbXBvcnRhbnQ7XG4gIG1hcmdpbi1yaWdodDogMi41cmVtICFpbXBvcnRhbnQ7XG59XG5cbi5teC0xIHtcbiAgbWFyZ2luLWxlZnQ6IDAuMjVyZW0gIWltcG9ydGFudDtcbiAgbWFyZ2luLXJpZ2h0OiAwLjI1cmVtICFpbXBvcnRhbnQ7XG59XG5cbi5tdC0xMiB7XG4gIG1hcmdpbi10b3A6IDNyZW0gIWltcG9ydGFudDtcbn1cblxuLm10LTQge1xuICBtYXJnaW4tdG9wOiAxcmVtICFpbXBvcnRhbnQ7XG59XG5cbi5tdC00OCB7XG4gIG1hcmdpbi10b3A6IDEycmVtICFpbXBvcnRhbnQ7XG59XG5cbi5tYi00IHtcbiAgbWFyZ2luLWJvdHRvbTogMXJlbSAhaW1wb3J0YW50O1xufVxuXG4ubWwtNCB7XG4gIG1hcmdpbi1sZWZ0OiAxcmVtICFpbXBvcnRhbnQ7XG59XG5cbi5tdC04IHtcbiAgbWFyZ2luLXRvcDogMnJlbSAhaW1wb3J0YW50O1xufVxuXG4ubWwtMTYge1xuICBtYXJnaW4tbGVmdDogNHJlbSAhaW1wb3J0YW50O1xufVxuXG4ubXQtNjQge1xuICBtYXJnaW4tdG9wOiAxNnJlbSAhaW1wb3J0YW50O1xufVxuXG4ubWItMCB7XG4gIG1hcmdpbi1ib3R0b206IDBweCAhaW1wb3J0YW50O1xufVxuXG4ubWItMiB7XG4gIG1hcmdpbi1ib3R0b206IDAuNXJlbSAhaW1wb3J0YW50O1xufVxuXG4ubXQtMyB7XG4gIG1hcmdpbi10b3A6IDAuNzVyZW0gIWltcG9ydGFudDtcbn1cblxuLm10LWF1dG8ge1xuICBtYXJnaW4tdG9wOiBhdXRvICFpbXBvcnRhbnQ7XG59XG5cbi5tdC0yIHtcbiAgbWFyZ2luLXRvcDogMC41cmVtICFpbXBvcnRhbnQ7XG59XG5cbi5tci0yIHtcbiAgbWFyZ2luLXJpZ2h0OiAwLjVyZW0gIWltcG9ydGFudDtcbn1cblxuLm1sLTMge1xuICBtYXJnaW4tbGVmdDogMC43NXJlbSAhaW1wb3J0YW50O1xufVxuXG4ubXItMyB7XG4gIG1hcmdpbi1yaWdodDogMC43NXJlbSAhaW1wb3J0YW50O1xufVxuXG4ubWwtMiB7XG4gIG1hcmdpbi1sZWZ0OiAwLjVyZW0gIWltcG9ydGFudDtcbn1cblxuLm1yLTQge1xuICBtYXJnaW4tcmlnaHQ6IDFyZW0gIWltcG9ydGFudDtcbn1cblxuLm1yLWF1dG8ge1xuICBtYXJnaW4tcmlnaHQ6IGF1dG8gIWltcG9ydGFudDtcbn1cblxuLmlubGluZS1ibG9jayB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jayAhaW1wb3J0YW50O1xufVxuXG4uZmxleCB7XG4gIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDtcbn1cblxuLmlubGluZS1mbGV4IHtcbiAgZGlzcGxheTogaW5saW5lLWZsZXggIWltcG9ydGFudDtcbn1cblxuLnRhYmxlIHtcbiAgZGlzcGxheTogdGFibGUgIWltcG9ydGFudDtcbn1cblxuLmdyaWQge1xuICBkaXNwbGF5OiBncmlkICFpbXBvcnRhbnQ7XG59XG5cbi5oaWRkZW4ge1xuICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG59XG5cbi5oLWZ1bGwge1xuICBoZWlnaHQ6IDEwMCUgIWltcG9ydGFudDtcbn1cblxuLmgtMyB7XG4gIGhlaWdodDogMC43NXJlbSAhaW1wb3J0YW50O1xufVxuXG4uaC0zMiB7XG4gIGhlaWdodDogOHJlbSAhaW1wb3J0YW50O1xufVxuXG4uaC0yOCB7XG4gIGhlaWdodDogN3JlbSAhaW1wb3J0YW50O1xufVxuXG4uaC0xMSB7XG4gIGhlaWdodDogMi43NXJlbSAhaW1wb3J0YW50O1xufVxuXG4uaC00MCB7XG4gIGhlaWdodDogMTByZW0gIWltcG9ydGFudDtcbn1cblxuLmgtMzYge1xuICBoZWlnaHQ6IDlyZW0gIWltcG9ydGFudDtcbn1cblxuLmgtNjAge1xuICBoZWlnaHQ6IDE1cmVtICFpbXBvcnRhbnQ7XG59XG5cbi5tYXgtaC00MCB7XG4gIG1heC1oZWlnaHQ6IDEwcmVtICFpbXBvcnRhbnQ7XG59XG5cbi53LWZ1bGwge1xuICB3aWR0aDogMTAwJSAhaW1wb3J0YW50O1xufVxuXG4udy0zXFwvNCB7XG4gIHdpZHRoOiA3NSUgIWltcG9ydGFudDtcbn1cblxuLnctMVxcLzQge1xuICB3aWR0aDogMjUlICFpbXBvcnRhbnQ7XG59XG5cbi53LTgwIHtcbiAgd2lkdGg6IDIwcmVtICFpbXBvcnRhbnQ7XG59XG5cbi53LTMyIHtcbiAgd2lkdGg6IDhyZW0gIWltcG9ydGFudDtcbn1cblxuLnctMTIge1xuICB3aWR0aDogM3JlbSAhaW1wb3J0YW50O1xufVxuXG4udy1tYXgge1xuICB3aWR0aDogbWF4LWNvbnRlbnQgIWltcG9ydGFudDtcbn1cblxuLnctMVxcLzIge1xuICB3aWR0aDogNTAlICFpbXBvcnRhbnQ7XG59XG5cbi53LTI4IHtcbiAgd2lkdGg6IDdyZW0gIWltcG9ydGFudDtcbn1cblxuLnctMTEge1xuICB3aWR0aDogMi43NXJlbSAhaW1wb3J0YW50O1xufVxuXG4udy0zNiB7XG4gIHdpZHRoOiA5cmVtICFpbXBvcnRhbnQ7XG59XG5cbi53LTQwIHtcbiAgd2lkdGg6IDEwcmVtICFpbXBvcnRhbnQ7XG59XG5cbi53LTQ4IHtcbiAgd2lkdGg6IDEycmVtICFpbXBvcnRhbnQ7XG59XG5cbi5mbGV4LWF1dG8ge1xuICBmbGV4OiAxIDEgYXV0byAhaW1wb3J0YW50O1xufVxuXG4uZmxleC1zaHJpbmstMCB7XG4gIGZsZXgtc2hyaW5rOiAwICFpbXBvcnRhbnQ7XG59XG5cbi5mbGV4LWdyb3cge1xuICBmbGV4LWdyb3c6IDEgIWltcG9ydGFudDtcbn1cblxuLnRyYW5zZm9ybSB7XG4gIHRyYW5zZm9ybTogdmFyKC0tdHctdHJhbnNmb3JtKSAhaW1wb3J0YW50O1xufVxuXG4uY3Vyc29yLXBvaW50ZXIge1xuICBjdXJzb3I6IHBvaW50ZXIgIWltcG9ydGFudDtcbn1cblxuLmdyaWQtY29scy0yIHtcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgbWlubWF4KDAsIDFmcikpICFpbXBvcnRhbnQ7XG59XG5cbi5mbGV4LXJvdyB7XG4gIGZsZXgtZGlyZWN0aW9uOiByb3cgIWltcG9ydGFudDtcbn1cblxuLmZsZXgtcm93LXJldmVyc2Uge1xuICBmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2UgIWltcG9ydGFudDtcbn1cblxuLmZsZXgtY29sIHtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbiAhaW1wb3J0YW50O1xufVxuXG4uZmxleC13cmFwIHtcbiAgZmxleC13cmFwOiB3cmFwICFpbXBvcnRhbnQ7XG59XG5cbi5mbGV4LW5vd3JhcCB7XG4gIGZsZXgtd3JhcDogbm93cmFwICFpbXBvcnRhbnQ7XG59XG5cbi5pdGVtcy1zdGFydCB7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7XG59XG5cbi5pdGVtcy1jZW50ZXIge1xuICBhbGlnbi1pdGVtczogY2VudGVyICFpbXBvcnRhbnQ7XG59XG5cbi5qdXN0aWZ5LXN0YXJ0IHtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7XG59XG5cbi5qdXN0aWZ5LWVuZCB7XG4gIGp1c3RpZnktY29udGVudDogZmxleC1lbmQgIWltcG9ydGFudDtcbn1cblxuLmp1c3RpZnktY2VudGVyIHtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDtcbn1cblxuLmp1c3RpZnktYmV0d2VlbiB7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbiAhaW1wb3J0YW50O1xufVxuXG4uanVzdGlmeS1hcm91bmQge1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZCAhaW1wb3J0YW50O1xufVxuXG4uc2VsZi1jZW50ZXIge1xuICBhbGlnbi1zZWxmOiBjZW50ZXIgIWltcG9ydGFudDtcbn1cblxuLm92ZXJmbG93LWhpZGRlbiB7XG4gIG92ZXJmbG93OiBoaWRkZW4gIWltcG9ydGFudDtcbn1cblxuLm92ZXJmbG93LXgtaGlkZGVuIHtcbiAgb3ZlcmZsb3cteDogaGlkZGVuICFpbXBvcnRhbnQ7XG59XG5cbi53aGl0ZXNwYWNlLW5vd3JhcCB7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXAgIWltcG9ydGFudDtcbn1cblxuLnJvdW5kZWQtZnVsbCB7XG4gIGJvcmRlci1yYWRpdXM6IDk5OTlweCAhaW1wb3J0YW50O1xufVxuXG4ucm91bmRlZC0zeGwge1xuICBib3JkZXItcmFkaXVzOiAxLjVyZW0gIWltcG9ydGFudDtcbn1cblxuLnJvdW5kZWQtMnhsIHtcbiAgYm9yZGVyLXJhZGl1czogMXJlbSAhaW1wb3J0YW50O1xufVxuXG4ucm91bmRlZC1sZyB7XG4gIGJvcmRlci1yYWRpdXM6IDAuNXJlbSAhaW1wb3J0YW50O1xufVxuXG4ucm91bmRlZC14bCB7XG4gIGJvcmRlci1yYWRpdXM6IDAuNzVyZW0gIWltcG9ydGFudDtcbn1cblxuLnJvdW5kZWQtbWQge1xuICBib3JkZXItcmFkaXVzOiAwLjM3NXJlbSAhaW1wb3J0YW50O1xufVxuXG4uYm9yZGVyIHtcbiAgYm9yZGVyLXdpZHRoOiAxcHggIWltcG9ydGFudDtcbn1cblxuLmJvcmRlci0yIHtcbiAgYm9yZGVyLXdpZHRoOiAycHggIWltcG9ydGFudDtcbn1cblxuLmJvcmRlci1zb2xpZCB7XG4gIGJvcmRlci1zdHlsZTogc29saWQgIWltcG9ydGFudDtcbn1cblxuLmJvcmRlci1ncmF5LTIwMCB7XG4gIC0tdHctYm9yZGVyLW9wYWNpdHk6IDEgIWltcG9ydGFudDtcbiAgYm9yZGVyLWNvbG9yOiByZ2JhKDIyOSwgMjMxLCAyMzUsIHZhcigtLXR3LWJvcmRlci1vcGFjaXR5KSkgIWltcG9ydGFudDtcbn1cblxuLmJvcmRlci1ibGFjayB7XG4gIC0tdHctYm9yZGVyLW9wYWNpdHk6IDEgIWltcG9ydGFudDtcbiAgYm9yZGVyLWNvbG9yOiByZ2JhKDAsIDAsIDAsIHZhcigtLXR3LWJvcmRlci1vcGFjaXR5KSkgIWltcG9ydGFudDtcbn1cblxuLmJvcmRlci1vcGFjaXR5LTMwIHtcbiAgLS10dy1ib3JkZXItb3BhY2l0eTogMC4zICFpbXBvcnRhbnQ7XG59XG5cbi5iZy1ncmF5LTMwMCB7XG4gIC0tdHctYmctb3BhY2l0eTogMSAhaW1wb3J0YW50O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDIwOSwgMjEzLCAyMTksIHZhcigtLXR3LWJnLW9wYWNpdHkpKSAhaW1wb3J0YW50O1xufVxuXG4uYmctb3BhY2l0eS0yMCB7XG4gIC0tdHctYmctb3BhY2l0eTogMC4yICFpbXBvcnRhbnQ7XG59XG5cbi5vYmplY3QtY292ZXIge1xuICBvYmplY3QtZml0OiBjb3ZlciAhaW1wb3J0YW50O1xufVxuXG4ub2JqZWN0LWNlbnRlciB7XG4gIG9iamVjdC1wb3NpdGlvbjogY2VudGVyICFpbXBvcnRhbnQ7XG59XG5cbi5wLTMge1xuICBwYWRkaW5nOiAwLjc1cmVtICFpbXBvcnRhbnQ7XG59XG5cbi5wLTIge1xuICBwYWRkaW5nOiAwLjVyZW0gIWltcG9ydGFudDtcbn1cblxuLnAtNCB7XG4gIHBhZGRpbmc6IDFyZW0gIWltcG9ydGFudDtcbn1cblxuLnAtNSB7XG4gIHBhZGRpbmc6IDEuMjVyZW0gIWltcG9ydGFudDtcbn1cblxuLnAtMSB7XG4gIHBhZGRpbmc6IDAuMjVyZW0gIWltcG9ydGFudDtcbn1cblxuLnB4LTEyIHtcbiAgcGFkZGluZy1sZWZ0OiAzcmVtICFpbXBvcnRhbnQ7XG4gIHBhZGRpbmctcmlnaHQ6IDNyZW0gIWltcG9ydGFudDtcbn1cblxuLnB5LTQge1xuICBwYWRkaW5nLXRvcDogMXJlbSAhaW1wb3J0YW50O1xuICBwYWRkaW5nLWJvdHRvbTogMXJlbSAhaW1wb3J0YW50O1xufVxuXG4ucHgtMTAge1xuICBwYWRkaW5nLWxlZnQ6IDIuNXJlbSAhaW1wb3J0YW50O1xuICBwYWRkaW5nLXJpZ2h0OiAyLjVyZW0gIWltcG9ydGFudDtcbn1cblxuLnB4LTgge1xuICBwYWRkaW5nLWxlZnQ6IDJyZW0gIWltcG9ydGFudDtcbiAgcGFkZGluZy1yaWdodDogMnJlbSAhaW1wb3J0YW50O1xufVxuXG4ucHktMiB7XG4gIHBhZGRpbmctdG9wOiAwLjVyZW0gIWltcG9ydGFudDtcbiAgcGFkZGluZy1ib3R0b206IDAuNXJlbSAhaW1wb3J0YW50O1xufVxuXG4ucHgtNiB7XG4gIHBhZGRpbmctbGVmdDogMS41cmVtICFpbXBvcnRhbnQ7XG4gIHBhZGRpbmctcmlnaHQ6IDEuNXJlbSAhaW1wb3J0YW50O1xufVxuXG4ucHktMSB7XG4gIHBhZGRpbmctdG9wOiAwLjI1cmVtICFpbXBvcnRhbnQ7XG4gIHBhZGRpbmctYm90dG9tOiAwLjI1cmVtICFpbXBvcnRhbnQ7XG59XG5cbi5weC01IHtcbiAgcGFkZGluZy1sZWZ0OiAxLjI1cmVtICFpbXBvcnRhbnQ7XG4gIHBhZGRpbmctcmlnaHQ6IDEuMjVyZW0gIWltcG9ydGFudDtcbn1cblxuLnB4LTcge1xuICBwYWRkaW5nLWxlZnQ6IDEuNzVyZW0gIWltcG9ydGFudDtcbiAgcGFkZGluZy1yaWdodDogMS43NXJlbSAhaW1wb3J0YW50O1xufVxuXG4ucHgtNCB7XG4gIHBhZGRpbmctbGVmdDogMXJlbSAhaW1wb3J0YW50O1xuICBwYWRkaW5nLXJpZ2h0OiAxcmVtICFpbXBvcnRhbnQ7XG59XG5cbi5weC0yIHtcbiAgcGFkZGluZy1sZWZ0OiAwLjVyZW0gIWltcG9ydGFudDtcbiAgcGFkZGluZy1yaWdodDogMC41cmVtICFpbXBvcnRhbnQ7XG59XG5cbi5wYi0yIHtcbiAgcGFkZGluZy1ib3R0b206IDAuNXJlbSAhaW1wb3J0YW50O1xufVxuXG4ucHQtNSB7XG4gIHBhZGRpbmctdG9wOiAxLjI1cmVtICFpbXBvcnRhbnQ7XG59XG5cbi5wYi01IHtcbiAgcGFkZGluZy1ib3R0b206IDEuMjVyZW0gIWltcG9ydGFudDtcbn1cblxuLnRleHQtY2VudGVyIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7XG59XG5cbi5hbGlnbi1iYXNlbGluZSB7XG4gIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZSAhaW1wb3J0YW50O1xufVxuXG4udGV4dC14bCB7XG4gIGZvbnQtc2l6ZTogMS4yNXJlbSAhaW1wb3J0YW50O1xuICBsaW5lLWhlaWdodDogMS43NXJlbSAhaW1wb3J0YW50O1xufVxuXG4udGV4dC1sZyB7XG4gIGZvbnQtc2l6ZTogMS4xMjVyZW0gIWltcG9ydGFudDtcbiAgbGluZS1oZWlnaHQ6IDEuNzVyZW0gIWltcG9ydGFudDtcbn1cblxuLnRleHQtYmFzZSB7XG4gIGZvbnQtc2l6ZTogMXJlbSAhaW1wb3J0YW50O1xuICBsaW5lLWhlaWdodDogMS41cmVtICFpbXBvcnRhbnQ7XG59XG5cbi50ZXh0LXhzIHtcbiAgZm9udC1zaXplOiAwLjc1cmVtICFpbXBvcnRhbnQ7XG4gIGxpbmUtaGVpZ2h0OiAxcmVtICFpbXBvcnRhbnQ7XG59XG5cbi50ZXh0LTJ4bCB7XG4gIGZvbnQtc2l6ZTogMS41cmVtICFpbXBvcnRhbnQ7XG4gIGxpbmUtaGVpZ2h0OiAycmVtICFpbXBvcnRhbnQ7XG59XG5cbi50ZXh0LTN4bCB7XG4gIGZvbnQtc2l6ZTogMS44NzVyZW0gIWltcG9ydGFudDtcbiAgbGluZS1oZWlnaHQ6IDIuMjVyZW0gIWltcG9ydGFudDtcbn1cblxuLnRleHQtc20ge1xuICBmb250LXNpemU6IDAuODc1cmVtICFpbXBvcnRhbnQ7XG4gIGxpbmUtaGVpZ2h0OiAxLjI1cmVtICFpbXBvcnRhbnQ7XG59XG5cbi5mb250LWJvbGQge1xuICBmb250LXdlaWdodDogNzAwICFpbXBvcnRhbnQ7XG59XG5cbi5mb250LXNlbWlib2xkIHtcbiAgZm9udC13ZWlnaHQ6IDYwMCAhaW1wb3J0YW50O1xufVxuXG4udHJhY2tpbmctd2lkZXN0IHtcbiAgbGV0dGVyLXNwYWNpbmc6IDAuMWVtICFpbXBvcnRhbnQ7XG59XG5cbi50ZXh0LXdoaXRlIHtcbiAgLS10dy10ZXh0LW9wYWNpdHk6IDEgIWltcG9ydGFudDtcbiAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgdmFyKC0tdHctdGV4dC1vcGFjaXR5KSkgIWltcG9ydGFudDtcbn1cblxuLnRleHQtYmxhY2sge1xuICAtLXR3LXRleHQtb3BhY2l0eTogMSAhaW1wb3J0YW50O1xuICBjb2xvcjogcmdiYSgwLCAwLCAwLCB2YXIoLS10dy10ZXh0LW9wYWNpdHkpKSAhaW1wb3J0YW50O1xufVxuXG4udGV4dC1ncmF5LTQwMCB7XG4gIC0tdHctdGV4dC1vcGFjaXR5OiAxICFpbXBvcnRhbnQ7XG4gIGNvbG9yOiByZ2JhKDE1NiwgMTYzLCAxNzUsIHZhcigtLXR3LXRleHQtb3BhY2l0eSkpICFpbXBvcnRhbnQ7XG59XG5cbi50ZXh0LWdyZWVuLTUwMCB7XG4gIC0tdHctdGV4dC1vcGFjaXR5OiAxICFpbXBvcnRhbnQ7XG4gIGNvbG9yOiByZ2JhKDE2LCAxODUsIDEyOSwgdmFyKC0tdHctdGV4dC1vcGFjaXR5KSkgIWltcG9ydGFudDtcbn1cblxuLnVuZGVybGluZSB7XG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lICFpbXBvcnRhbnQ7XG59XG5cbi5vcGFjaXR5LTAge1xuICBvcGFjaXR5OiAwICFpbXBvcnRhbnQ7XG59XG5cbi5vcGFjaXR5LTMwIHtcbiAgb3BhY2l0eTogMC4zICFpbXBvcnRhbnQ7XG59XG5cbi5zaGFkb3ctbWQge1xuICAtLXR3LXNoYWRvdzogMCA0cHggNnB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjEpLCAwIDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMDYpICFpbXBvcnRhbnQ7XG4gIGJveC1zaGFkb3c6IHZhcigtLXR3LXJpbmctb2Zmc2V0LXNoYWRvdywgMCAwICMwMDAwKSwgdmFyKC0tdHctcmluZy1zaGFkb3csIDAgMCAjMDAwMCksIHZhcigtLXR3LXNoYWRvdykgIWltcG9ydGFudDtcbn1cblxuLm91dGxpbmUtbm9uZSB7XG4gIG91dGxpbmU6IDJweCBzb2xpZCB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xuICBvdXRsaW5lLW9mZnNldDogMnB4ICFpbXBvcnRhbnQ7XG59XG5cbi5ob3ZlclxcOnRleHQtZ3JlZW4tMzAwOmhvdmVyIHtcbiAgLS10dy10ZXh0LW9wYWNpdHk6IDEgIWltcG9ydGFudDtcbiAgY29sb3I6IHJnYmEoMTEwLCAyMzEsIDE4MywgdmFyKC0tdHctdGV4dC1vcGFjaXR5KSkgIWltcG9ydGFudDtcbn1cblxuLmZvY3VzXFw6b3V0bGluZS1ub25lOmZvY3VzIHtcbiAgb3V0bGluZTogMnB4IHNvbGlkIHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XG4gIG91dGxpbmUtb2Zmc2V0OiAycHggIWltcG9ydGFudDtcbn1cblxuLmRpc2FibGVkXFw6b3BhY2l0eS01MDpkaXNhYmxlZCB7XG4gIG9wYWNpdHk6IDAuNSAhaW1wb3J0YW50O1xufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgLm1kXFw6bWwtMCB7XG4gICAgbWFyZ2luLWxlZnQ6IDBweCAhaW1wb3J0YW50O1xuICB9XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiAxMDI0cHgpIHtcbiAgLmxnXFw6anVzdGlmeS1iZXR3ZWVuIHtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW4gIWltcG9ydGFudDtcbiAgfVxufSIsIkBpbXBvcnQgJ3NyYy90YWlsd2luZE91dHB1dC5zY3NzJztcblxuQGltcG9ydCAnfkBhbmd1bGFyL21hdGVyaWFsL3RoZW1pbmcnO1xuXG4vLyBCZSBzdXJlIHRoYXQgeW91IG9ubHkgZXZlciBpbmNsdWRlIHRoaXMgbWl4aW4gb25jZSFcbkBpbmNsdWRlIG1hdC1jb3JlKCk7XG5cbi8vIERlZmluZSBhIGN1c3RvbSB0eXBvZ3JhcGh5IGNvbmZpZyB0aGF0IG92ZXJyaWRlcyB0aGUgZm9udC1mYW1pbHkuXG4kY3VzdG9tLXR5cG9ncmFwaHk6IG1hdC10eXBvZ3JhcGh5LWNvbmZpZyhcblx0JGZvbnQtZmFtaWx5OiAnQXJpYWwsIHNhbnMtc2VyaWYnLFxuXHQkZGlzcGxheS00OiBtYXQtdHlwb2dyYXBoeS1sZXZlbCg0LjVyZW0sIDEsIDMwMCksXG5cdCRkaXNwbGF5LTM6IG1hdC10eXBvZ3JhcGh5LWxldmVsKDMuNzVyZW0sIDEsIDQwMCksXG5cdCRkaXNwbGF5LTI6IG1hdC10eXBvZ3JhcGh5LWxldmVsKDNyZW0sIDEsIDQwMCksXG5cdCRkaXNwbGF5LTE6IG1hdC10eXBvZ3JhcGh5LWxldmVsKDIuMjVyZW0sIDIuNXJlbSwgNDAwKSxcblx0JGhlYWRsaW5lOiBtYXQtdHlwb2dyYXBoeS1sZXZlbCgxLjg3NXJlbSwgMi4yNXJlbSwgNDAwKSxcblx0JHRpdGxlOiBtYXQtdHlwb2dyYXBoeS1sZXZlbCgxLjVyZW0sIDJyZW0sIDUwMCksXG5cdCRzdWJoZWFkaW5nLTI6IG1hdC10eXBvZ3JhcGh5LWxldmVsKDEuMjVyZW0sIDEuNzVyZW0pLFxuXHQkc3ViaGVhZGluZy0xOiBtYXQtdHlwb2dyYXBoeS1sZXZlbCgxLjEyNXJlbSwgMS43NXJlbSksXG5cdCRib2R5LTI6IG1hdC10eXBvZ3JhcGh5LWxldmVsKDFyZW0sIDEuNXJlbSwgNTAwKSxcblx0JGJvZHktMTogbWF0LXR5cG9ncmFwaHktbGV2ZWwoMXJlbSwgMS41cmVtLCA0MDApLFxuXHQkYnV0dG9uOiBtYXQtdHlwb2dyYXBoeS1sZXZlbCgxcmVtLCAxLjVyZW0sIDUwMCksXG5cdCRjYXB0aW9uOiBtYXQtdHlwb2dyYXBoeS1sZXZlbCguODc1cmVtLCAxLjI1cmVtLCA0MDApLFxuXHQkaW5wdXQ6IG1hdC10eXBvZ3JhcGh5LWxldmVsKGluaGVyaXQsIDEuMywgNDAwKSxcbik7XG5AaW5jbHVkZSBhbmd1bGFyLW1hdGVyaWFsLXR5cG9ncmFwaHkoJGN1c3RvbS10eXBvZ3JhcGh5KTtcblxuLy8gaW1wb3J0IG91ciBjdXN0b20gdGhlbWVcbkBpbXBvcnQgJy4vdGhlbWVzL2R5bmFtaWMtdGhlbWUuc2Nzcyc7XG5AaW1wb3J0ICcuL3RoZW1lcy9keW5hbWljLXRoZW1lLWxpZ2h0LnNjc3MnO1xuQGltcG9ydCAnLi90aGVtZXMvZHluYW1pYy10aGVtZS1kYXJrLnNjc3MnO1xuXG5cbi8vIHRoZW1lIGZvciBwb3BwZXIgKGFyLXRlYXNpbmcgdG9vbHRpcClcbkBpbXBvcnQgJ35uZ3gtcG9wcGVyanMvc2Nzcy90aGVtZSc7XG5ib2R5IHtcblx0QGluY2x1ZGUgbmd4LXBvcHBlcmpzLXRoZW1lKG1hdC1jb2xvcigkYXJnby1yZWQsIDcwMCksIHdoaXRlLCAzNTBweCk7XG59XG5cbi5jdXN0b20tYmd7XG5cdGJhY2tncm91bmQtY29sb3I6ICNGNEZjRkIhaW1wb3J0YW50O1xuXHRib3gtc2hhZG93OiAwIDRweCA0cHggMHB4ICMwMDAwMDA0MCFpbXBvcnRhbnQ7XG5cdGNvbG9yOiAjMGU0NmEzICFpbXBvcnRhbnQ7XG59XG5cbi8vIGdsb2JhbCBzdHlsZXNcbmh0bWwsIGJvZHkge1xuXHRoZWlnaHQ6IDEwMCU7XG59XG5odG1sIHtcblx0Zm9udC1zaXplOiAxMHB4O1xufVxuQG1lZGlhIChtaW4td2lkdGg6IDY0MHB4KSB7XG5cdGh0bWwgeyBmb250LXNpemU6IDExcHg7IH1cbn1cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuXHRodG1sIHsgZm9udC1zaXplOiAxMnB4OyB9XG59XG5AbWVkaWEgKG1pbi13aWR0aDogMTAyNHB4KSB7XG5cdGh0bWwgeyBmb250LXNpemU6IDEzcHg7IH1cbn1cbkBtZWRpYSAobWluLXdpZHRoOiAxMjgwcHgpIHtcblx0aHRtbCB7IGZvbnQtc2l6ZTogMTRweDsgfVxufVxuQG1lZGlhIChtaW4td2lkdGg6IDE1MzZweCkge1xuXHRodG1sIHsgZm9udC1zaXplOiAxNnB4OyB9XG59XG5ib2R5IHtcblx0bWFyZ2luOiAwO1xufVxubWF0LWFjY29yZGlvbi5tYXQtYWNjb3JkaW9uIG1hdC1leHBhbnNpb24tcGFuZWwubWF0LWV4cGFuc2lvbi1wYW5lbCxcbm1hdC1hY2NvcmRpb24ubWF0LWFjY29yZGlvbiBtYXQtZXhwYW5zaW9uLXBhbmVsLm1hdC1leHBhbnNpb24tcGFuZWw6Zmlyc3Qtb2YtdHlwZSxcbm1hdC1hY2NvcmRpb24ubWF0LWFjY29yZGlvbiBtYXQtZXhwYW5zaW9uLXBhbmVsLm1hdC1leHBhbnNpb24tcGFuZWw6bGFzdC1vZi10eXBlLFxubWF0LWNhcmQubWF0LWNhcmQge1xuXHRib3JkZXItcmFkaXVzOiAxcmVtO1xuXHRtYXQtY2FyZC5tYXQtY2FyZDpub3QoW2NsYXNzKj1cIm1hdC1lbGV2YXRpb24telwiXSkge1xuXHRcdGJveC1zaGFkb3c6IG5vbmU7XG5cdFx0Ym9yZGVyLXdpZHRoOiAxcHg7XG5cdH1cbn1cblxuLnNjcm9sbGFibGUtc2VjdGlvbixcbi50YWJsZS1jb250YWluZXIsXG4ubWF0LWdyaWQtbGlzdCB7XG5cdC5zcGlubmVyLXBhcmVudCB7XG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHR9XG5cdC5zcGlubmVyLWNvbnRhaW5lciB7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdHRvcDogMDtcblx0XHRib3R0b206IDA7XG5cdFx0bGVmdDogMDtcblx0XHRyaWdodDogMDtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIC4xNSk7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdEBhcHBseSByb3VuZGVkLTJ4bDtcblx0fVxufVxuLnRhYmxlLWNvbnRhaW5lciB7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0QGFwcGx5IHNoYWRvdy1tZDtcblx0QGFwcGx5IHJvdW5kZWQtMnhsO1xuXHRvdmVyZmxvdzogaGlkZGVuO1xuXHR0YWJsZSB7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdFx0Ji5ob3Zlci10YWJsZSB7XG5cdFx0XHR0Ym9keSB0ciB7XG5cdFx0XHRcdGN1cnNvcjogcG9pbnRlcjtcblx0XHRcdH1cblx0XHR9XG5cdFx0Lm1hdC1oZWFkZXItY2VsbCxcblx0XHQubWF0LWNlbGwge1xuXHRcdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0XHRcdHBhZGRpbmctbGVmdDogMS41cmVtO1xuXHRcdFx0Ji5lbGxpcHNpcy1jZWxsIHtcblx0XHRcdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0XHRcdFx0dGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG5cdFx0XHRcdG1heC13aWR0aDogMDtcblx0XHRcdFx0bWluLXdpZHRoOiAwO1xuXHRcdFx0XHR3aWR0aDogMTAwJTtcblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cbi5tYXQtZ3JpZC1saXN0IHtcblx0Lm1hdC1ncmlkLXRpbGUge1xuXHRcdEBhcHBseSBzaGFkb3ctbWQ7XG5cdFx0QGFwcGx5IHJvdW5kZWQtMnhsO1xuXHRcdC5ncmlkLXRpbGUtY29udGVudCB7XG5cdFx0XHR3aWR0aDogMTAwJTtcblx0XHRcdGhlaWdodDogMTAwJTtcblx0XHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdFx0LmdyaWQtdGlsZS1oZWFkZXIge1xuXHRcdFx0XHRoZWlnaHQ6IDEwcmVtO1xuXHRcdFx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0XHRcdHBhZGRpbmc6IC41cmVtO1xuXHRcdFx0XHRAYXBwbHkgcm91bmRlZC0yeGw7XG5cdFx0XHRcdGltZyB7XG5cdFx0XHRcdFx0aGVpZ2h0OiAxMDAlO1xuXHRcdFx0XHRcdHdpZHRoOiAxMDAlO1xuXHRcdFx0XHRcdG9iamVjdC1maXQ6IGNvbnRhaW47XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdC5ncmlkLXRpbGUtZm9vdGVyIHtcblx0XHRcdFx0cGFkZGluZzogMXJlbSAxLjVyZW07XG5cdFx0XHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0XHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdFx0XHRcdC5ncmlkLXRpbGUtdGl0bGUge1xuXHRcdFx0XHRcdEBhcHBseSB0ZXh0LWxnO1xuXHRcdFx0XHRcdG1hcmdpbjogMDtcblx0XHRcdFx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHRcdFx0XHRcdG92ZXJmbG93OiBoaWRkZW47XG5cdFx0XHRcdFx0dGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cblxuLm1hdC1ncmlkLWxpc3Quc2xpZGVyLWdyaWQgLm1hdC1ncmlkLXRpbGUgLmdyaWQtdGlsZS1jb250ZW50IC5ncmlkLXRpbGUtaGVhZGVyIHtcbiAgICBoZWlnaHQ6IDhyZW07XG59XG5cbi5tYXQtcGFnaW5hdG9yIHtcblx0QGFwcGx5IHNoYWRvdy1tZDtcblx0QGFwcGx5IHJvdW5kZWQtMnhsO1xuXHRtYXJnaW4tdG9wOiAycmVtO1xufVxuXG4ubWF0LXRhYi1sYWJlbHMgLm1hdC10YWItbGFiZWwge1xuXHRvcGFjaXR5OiAxO1xuXHRtaW4td2lkdGg6IGF1dG87XG59XG4ubWF0LXRhYi1saW5rcyAubWF0LXRhYi1saW5rIHtcblx0b3BhY2l0eTogMTtcblx0aSB7XG5cdFx0d2lkdGg6IDEuNzVyZW07XG5cdFx0aGVpZ2h0OiAxLjc1cmVtO1xuXHRcdGJvcmRlci1yYWRpdXM6IDUwJTtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0QGFwcGx5IHRleHQtc207XG5cdFx0bWFyZ2luLXJpZ2h0OiAuNXJlbTtcblx0fVxufVxubWF0LXRhYi1ib2R5IC5tYXQtdGFiLWJvZHktY29udGVudCB7XG5cdG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi5tYXQtZm9ybS1maWVsZCB7XG5cdCYud2lkdGgtYXV0byB7XG5cdFx0Lm1hdC1mb3JtLWZpZWxkLWluZml4IHtcblx0XHRcdHdpZHRoOiBhdXRvO1xuXHRcdFx0Lm1hdC1pbnB1dC1lbGVtZW50IHtcblx0XHRcdFx0bGluZS1oZWlnaHQ6IGluaGVyaXQ7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cdCYubm8tcGFkZGluZyB7XG5cdFx0Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXIge1xuXHRcdFx0cGFkZGluZzogMDtcblx0XHR9XG5cdH1cbn1cbioge1xuXHRib3gtc2l6aW5nOiBib3JkZXItYm94O1xufVxuXG5tYXQtZGlhbG9nLWNvbnRhaW5lci5tYXQtZGlhbG9nLWNvbnRhaW5lciB7XG5cdEBhcHBseSByb3VuZGVkLTJ4bDtcblxuXHQubWF0LWRpYWxvZy10aXRsZSB7XG5cdFx0QGFwcGx5IHRleHQteGwgdGV4dC1jZW50ZXIgZm9udC1zZW1pYm9sZDtcblx0fVxufVxuXG4uY3VzdG9tLW1vZGFsID4gbWF0LWRpYWxvZy1jb250YWluZXIubWF0LWRpYWxvZy1jb250YWluZXIge1xuXHRAYXBwbHkgcm91bmRlZC1ub25lO1xufVxuXG4ubWF0LWRpYWxvZy1jb250YWluZXItbm8tcGFkZGluZz5tYXQtZGlhbG9nLWNvbnRhaW5lcntcblx0cGFkZGluZyA6IDBweCAhaW1wb3J0YW50O1xufVxuLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXIge1xuXHRwYWRkaW5nOiAwO1xufVxuXG4ubGluZS1jbGFtcC0yOjphZnRlcntcblx0cmlnaHQ6IDA7XG5cdGJvdHRvbTogMDtcblx0d2lkdGg6IDEwMCU7XG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0aGVpZ2h0OiAxLjNyZW07XG59XG4ubGluZS1jbGFtcC0yOmhvdmVyOjphZnRlcntcblx0XHRjb250ZW50OiBub25lICFpbXBvcnRhbnQ7XG59XG4vLyB0aGVzZSBzdHlsZXMgc2hvdWxkIGJlIGluIGhvbWUuY29tcG9uZW50LnNjc3Ncbi8vIGJ1dCB0aGV5IGRvbid0IHdvcmsgdGhlcmUgd2l0aG91dCB1c2luZyAnOjpuZy1kZWVwJyB3aGljaCBpcyBkZXBlcmVjYXRlZFxuLm1hdC1zaWRlbmF2IHtcblx0Ji5jb2xsYXBzZWQge1xuXHRcdC5tYXQtbGlzdC1iYXNlIHtcblx0XHRcdC5tYXQtbGlzdC1pdGVtIHtcblx0XHRcdFx0Lm1hdC1saXN0LWl0ZW0tY29udGVudCB7XG5cdFx0XHRcdFx0ZGlzcGxheTogZmxleDtcblx0XHRcdFx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0XHRcdFx0XHRwYWRkaW5nOiAwO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cdCY6bm90KC5jb2xsYXBzZWQpIHtcblx0XHQubWF0LWxpc3QtYmFzZSB7XG5cdFx0XHQubWF0LWxpc3QtaXRlbSB7XG5cdFx0XHRcdC5tYXQtbGlzdC1pdGVtLWNvbnRlbnQge1xuXHRcdFx0XHRcdHRyYW5zaXRpb246IHBhZGRpbmcgLjVzO1xuXHRcdFx0XHRcdHBhZGRpbmc6IDAgMC41cmVtO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cdC5tYXQtZHJhd2VyLWlubmVyLWNvbnRhaW5lciB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjtcblx0XHRvdmVyZmxvdy14OiBoaWRkZW47XG5cdH1cbn1cblxuYnV0dG9uLm1hdC1pY29uLWJ1dHRvbiB7XG5cdC8qIGJldHRlciBmb250YXdlc29tZSByZW5kZXJpbmcgKi9cblx0ZGlzcGxheTogaW5saW5lLWZsZXg7XG5cdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHQubWF0LWJ1dHRvbi13cmFwcGVyID4gaSB7XG5cdFx0dmVydGljYWwtYWxpZ246IHVuc2V0O1xuXHR9XG59XG5cbi5tYXQtc2VsZWN0LXZhbHVlIHtcblx0cG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGJvdHRvbTogM3B4O1xufVxuXG4ubWF0LWZvcm0tZmllbGQubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIHtcblx0Lm1hdC1mb3JtLWZpZWxkLXByZWZpeCB7XG5cdFx0dG9wOiAtMC4xZW07XG4gICAgXHRtYXJnaW4tcmlnaHQ6IDAuNWVtO1xuXHR9XG5cdC5tYXQtZm9ybS1maWVsZC1zdWZmaXgge1xuXHRcdHRvcDogLS4yNWVtO1xuXG5cdFx0YnV0dG9uLm1hdC1pY29uLWJ1dHRvbiB7XG5cdFx0XHRkaXNwbGF5OiBpbmxpbmUtZmxleDtcblx0XHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXHRcdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblxuXHRcdFx0Lm1hdC1idXR0b24td3JhcHBlciA+IGkge1xuXHRcdFx0XHR2ZXJ0aWNhbC1hbGlnbjogdW5zZXQ7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Ji5tYXQtZm9jdXNlZCB7XG5cblx0XHQubWF0LWZvcm0tZmllbGQtcHJlZml4IHtcblxuXHRcdFx0YnV0dG9uLm1hdC1pY29uLWJ1dHRvbiB7XG5cdFx0XHRcdGNvbG9yOiBtYXQtY29sb3IoJGR5bmFtaWMtcHJpbWFyeSwgNTAwKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQubWF0LWZvcm0tZmllbGQtc3VmZml4IHtcblxuXHRcdFx0YnV0dG9uLm1hdC1pY29uLWJ1dHRvbiB7XG5cdFx0XHRcdGNvbG9yOiBtYXQtY29sb3IoJGR5bmFtaWMtcHJpbWFyeSwgNTAwKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cblxuLmhlYWRlci1sZXNzLXRhYnMgOm5vdChuYXYpLm1hdC10YWItaGVhZGVyIHtcblx0ZGlzcGxheTogbm9uZTtcbn1cblxuLmhlYWRlci10YWJzIC5tYXQtdGFiLWhlYWRlciB7XG5cdGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XG59XG5cbi5oLWZpdC1jb250ZW50IHtcblx0aGVpZ2h0OiBmaXQtY29udGVudCAhaW1wb3J0YW50O1xufVxuXG4udy1maXQtY29udGVudCB7XG5cdHdpZHRoOiBmaXQtY29udGVudCAhaW1wb3J0YW50O1xufVxuXG4ubWF0LWRpYWxvZy1jb250ZW50IHtcblx0d2lkdGg6IDEwMCUhaW1wb3J0YW50O1xuXHRtYXJnaW46IDAhaW1wb3J0YW50O1xufVxuXG4udmlld3MtcHJvZ3Jlc3MtYmFyIHtcblx0Lm1hdC1wcm9ncmVzcy1iYXItZmlsbDo6YWZ0ZXIge1xuICAgIFx0YmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS1keW5hbWljLXByaW1hcnktMTAwKSwgMSk7XG5cdH1cblxuIFx0Lm1hdC1wcm9ncmVzcy1iYXItYnVmZmVyIHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlO1xuXHQgfVxufVxuXG4vLy8vLyBBbmltYXRpb25zIC8vLy8vL1xuLmFuaW1hdGlvbi1zaG93IHtcblx0YW5pbWF0aW9uOiBhbmltU2hvdyAuNXM7XG59XG5cbkBrZXlmcmFtZXMgYW5pbVNob3cge1xuXG5cdGZyb20ge1xuXHRcdG9wYWNpdHk6IDA7XG5cdH1cblx0dG8ge1xuXHRcdG9wYWNpdHk6IDE7XG5cdH1cbn1cbiIsIi8vIEZpbGUgZm9yIHdoaWNoIGFsbCBpbXBvcnRzIGFyZSByZXNvbHZlZCBhbmQgYnVuZGxlZC4gVGhpcyBpcyB0aGUgZW50cnktcG9pbnQgZm9yXG4vLyB0aGUgYEBhbmd1bGFyL21hdGVyaWFsYCB0aGVtaW5nIFNhc3MgYnVuZGxlLiBTZWUgYC8vc3JjL21hdGVyaWFsOnRoZW1pbmdfYnVuZGxlYC5cblxuLy8gSW1wb3J0IGFsbCB0aGUgdGhlbWluZyBmdW5jdGlvbmFsaXR5LlxuLy8gV2Ugd2FudCBvdmVybGF5cyB0byBhbHdheXMgYXBwZWFyIG92ZXIgdXNlciBjb250ZW50LCBzbyBzZXQgYSBiYXNlbGluZVxuLy8gdmVyeSBoaWdoIHotaW5kZXggZm9yIHRoZSBvdmVybGF5IGNvbnRhaW5lciwgd2hpY2ggaXMgd2hlcmUgd2UgY3JlYXRlIHRoZSBuZXdcbi8vIHN0YWNraW5nIGNvbnRleHQgZm9yIGFsbCBvdmVybGF5cy5cbiRjZGstei1pbmRleC1vdmVybGF5LWNvbnRhaW5lcjogMTAwMCAhZGVmYXVsdDtcbiRjZGstei1pbmRleC1vdmVybGF5OiAxMDAwICFkZWZhdWx0O1xuJGNkay16LWluZGV4LW92ZXJsYXktYmFja2Ryb3A6IDEwMDAgIWRlZmF1bHQ7XG5cbi8vIEJhY2tncm91bmQgY29sb3IgZm9yIGFsbCBvZiB0aGUgYmFja2Ryb3BzXG4kY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcC1iYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuMzIpICFkZWZhdWx0O1xuXG4vLyBEZWZhdWx0IGJhY2tkcm9wIGFuaW1hdGlvbiBpcyBiYXNlZCBvbiB0aGUgTWF0ZXJpYWwgRGVzaWduIHN3aWZ0LWVhc2Utb3V0LlxuJGJhY2tkcm9wLWFuaW1hdGlvbi1kdXJhdGlvbjogNDAwbXMgIWRlZmF1bHQ7XG4kYmFja2Ryb3AtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSkgIWRlZmF1bHQ7XG5cblxuQG1peGluIGNkay1vdmVybGF5KCkge1xuICAuY2RrLW92ZXJsYXktY29udGFpbmVyLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXIge1xuICAgIC8vIERpc2FibGUgZXZlbnRzIGZyb20gYmVpbmcgY2FwdHVyZWQgb24gdGhlIG92ZXJsYXkgY29udGFpbmVyLlxuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuXG4gICAgLy8gVGhlIGNvbnRhaW5lciBzaG91bGQgYmUgdGhlIHNpemUgb2YgdGhlIHZpZXdwb3J0LlxuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICB3aWR0aDogMTAwJTtcbiAgfVxuXG4gIC8vIFRoZSBvdmVybGF5LWNvbnRhaW5lciBpcyBhbiBpbnZpc2libGUgZWxlbWVudCB3aGljaCBjb250YWlucyBhbGwgaW5kaXZpZHVhbCBvdmVybGF5cy5cbiAgLmNkay1vdmVybGF5LWNvbnRhaW5lciB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIHotaW5kZXg6ICRjZGstei1pbmRleC1vdmVybGF5LWNvbnRhaW5lcjtcblxuICAgICY6ZW1wdHkge1xuICAgICAgLy8gSGlkZSB0aGUgZWxlbWVudCB3aGVuIGl0IGRvZXNuJ3QgaGF2ZSBhbnkgY2hpbGQgbm9kZXMuIFRoaXMgZG9lc24ndFxuICAgICAgLy8gaW5jbHVkZSBvdmVybGF5cyB0aGF0IGhhdmUgYmVlbiBkZXRhY2hlZCwgcmF0aGVyIHRoYW4gZGlzcG9zZWQuXG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbiAgfVxuXG4gIC8vIFdlIHVzZSBhbiBleHRyYSB3cmFwcGVyIGVsZW1lbnQgaW4gb3JkZXIgdG8gdXNlIG1ha2UgdGhlIG92ZXJsYXkgaXRzZWxmIGEgZmxleCBpdGVtLlxuICAvLyBUaGlzIG1ha2VzIGNlbnRlcmluZyB0aGUgb3ZlcmxheSBlYXN5IHdpdGhvdXQgcnVubmluZyBpbnRvIHRoZSBzdWJwaXhlbCByZW5kZXJpbmdcbiAgLy8gcHJvYmxlbXMgdGllZCB0byB1c2luZyBgdHJhbnNmb3JtYCBhbmQgd2l0aG91dCBpbnRlcmZlcmluZyB3aXRoIHRoZSBvdGhlciBwb3NpdGlvblxuICAvLyBzdHJhdGVnaWVzLlxuICAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHotaW5kZXg6ICRjZGstei1pbmRleC1vdmVybGF5O1xuICB9XG5cbiAgLy8gQSBzaW5nbGUgb3ZlcmxheSBwYW5lLlxuICAuY2RrLW92ZXJsYXktcGFuZSB7XG4gICAgLy8gTm90ZTogaXQncyBpbXBvcnRhbnQgZm9yIHRoaXMgb25lIHRvIHN0YXJ0IG9mZiBgYWJzb2x1dGVgLFxuICAgIC8vIGluIG9yZGVyIGZvciB1cyB0byBiZSBhYmxlIHRvIG1lYXN1cmUgaXQgY29ycmVjdGx5LlxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBwb2ludGVyLWV2ZW50czogYXV0bztcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIHotaW5kZXg6ICRjZGstei1pbmRleC1vdmVybGF5O1xuXG4gICAgLy8gRm9yIGNvbm5lY3RlZC1wb3NpdGlvbiBvdmVybGF5cywgd2Ugc2V0IGBkaXNwbGF5OiBmbGV4YCBpblxuICAgIC8vIG9yZGVyIHRvIGZvcmNlIGBtYXgtd2lkdGhgIGFuZCBgbWF4LWhlaWdodGAgdG8gdGFrZSBlZmZlY3QuXG4gICAgZGlzcGxheTogZmxleDtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgbWF4LWhlaWdodDogMTAwJTtcbiAgfVxuXG4gIC5jZGstb3ZlcmxheS1iYWNrZHJvcCB7XG4gICAgLy8gVE9ETyhqZWxib3Vybik6IHJldXNlIHNpZGVuYXYgZnVsbHNjcmVlbiBtaXhpbi5cbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGJvdHRvbTogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHJpZ2h0OiAwO1xuXG4gICAgei1pbmRleDogJGNkay16LWluZGV4LW92ZXJsYXktYmFja2Ryb3A7XG4gICAgcG9pbnRlci1ldmVudHM6IGF1dG87XG4gICAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5ICRiYWNrZHJvcC1hbmltYXRpb24tZHVyYXRpb24gJGJhY2tkcm9wLWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb247XG4gICAgb3BhY2l0eTogMDtcblxuICAgICYuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZyB7XG4gICAgICBvcGFjaXR5OiAxO1xuXG4gICAgICAvLyBOb3RlIHRoYXQgd2UgY2FuJ3QgaW1wb3J0IGFuZCB1c2UgdGhlIGBoaWdoLWNvbnRyYXN0YCBtaXhpbiBmcm9tIGBfYTExeS5zY3NzYCwgYmVjYXVzZVxuICAgICAgLy8gdGhpcyBmaWxlIHdpbGwgYmUgY29waWVkIHRvIHRoZSB0b3AtbGV2ZWwgYGNka2AgcGFja2FnZSB3aGVuIHB1dHRpbmcgdG9nZXRoZXIgdGhlIGZpbGVzXG4gICAgICAvLyBmb3IgbnBtLiBBbnkgcmVsYXRpdmUgaW1wb3J0IHBhdGhzIHdlIHVzZSBoZXJlIHdpbGwgYmVjb21lIGludmFsaWQgb25jZSB0aGUgZmlsZSBpcyBjb3BpZWQuXG4gICAgICAuY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlICYge1xuICAgICAgICAvLyBJbiBoaWdoIGNvbnRyYXN0IG1vZGUgdGhlIHJnYmEgYmFja2dyb3VuZCB3aWxsIGJlY29tZSBzb2xpZFxuICAgICAgICAvLyBzbyB3ZSBuZWVkIHRvIGZhbGwgYmFjayB0byBtYWtpbmcgaXQgb3BhcXVlIHVzaW5nIGBvcGFjaXR5YC5cbiAgICAgICAgb3BhY2l0eTogMC42O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wIHtcbiAgICBiYWNrZ3JvdW5kOiAkY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcC1iYWNrZ3JvdW5kO1xuICB9XG5cbiAgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wIHtcbiAgICAvLyBOb3RlOiBhcyBvZiBGaXJlZm94IDU3LCBoYXZpbmcgdGhlIGJhY2tkcm9wIGJlIGBiYWNrZ3JvdW5kOiBub25lYCB3aWxsIHByZXZlbnQgaXQgZnJvbVxuICAgIC8vIGNhcHR1cmluZyB0aGUgdXNlcidzIG1vdXNlIHNjcm9sbCBldmVudHMuIFNpbmNlIHdlIGFsc28gY2FuJ3QgdXNlIHNvbWV0aGluZyBsaWtlXG4gICAgLy8gYHJnYmEoMCwgMCwgMCwgMClgLCB3ZSB3b3JrIGFyb3VuZCB0aGUgaW5jb25zaXN0ZW5jeSBieSBub3Qgc2V0dGluZyB0aGUgYmFja2dyb3VuZCBhdFxuICAgIC8vIGFsbCBhbmQgdXNpbmcgYG9wYWNpdHlgIHRvIG1ha2UgdGhlIGVsZW1lbnQgdHJhbnNwYXJlbnQuXG4gICAgJiwgJi5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nIHtcbiAgICAgIG9wYWNpdHk6IDA7XG4gICAgfVxuICB9XG5cbiAgLy8gT3ZlcmxheSBwYXJlbnQgZWxlbWVudCB1c2VkIHdpdGggdGhlIGNvbm5lY3RlZCBwb3NpdGlvbiBzdHJhdGVneS4gVXNlZCB0byBjb25zdHJhaW4gdGhlXG4gIC8vIG92ZXJsYXkgZWxlbWVudCdzIHNpemUgdG8gZml0IHdpdGhpbiB0aGUgdmlld3BvcnQuXG4gIC5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgei1pbmRleDogJGNkay16LWluZGV4LW92ZXJsYXk7XG5cbiAgICAvLyBXZSB1c2UgYGRpc3BsYXk6IGZsZXhgIG9uIHRoaXMgZWxlbWVudCBleGNsdXNpdmVseSBmb3IgY2VudGVyaW5nIGNvbm5lY3RlZCBvdmVybGF5cy5cbiAgICAvLyBXaGVuICpub3QqIGNlbnRlcmluZywgYSB0b3AvbGVmdC9ib3R0b20vcmlnaHQgd2lsbCBiZSBzZXQgd2hpY2ggb3ZlcnJpZGVzIHRoZSBub3JtYWxcbiAgICAvLyBmbGV4IGxheW91dC5cbiAgICBkaXNwbGF5OiBmbGV4O1xuXG4gICAgLy8gV2UgdXNlIHRoZSBgY29sdW1uYCBkaXJlY3Rpb24gaGVyZSB0byBhdm9pZCBzb21lIGZsZXhib3ggaXNzdWVzIGluIEVkZ2VcbiAgICAvLyB3aGVuIHVzaW5nIHRoZSBcImdyb3cgYWZ0ZXIgb3BlblwiIG9wdGlvbnMuXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblxuICAgIC8vIEFkZCBzb21lIGRpbWVuc2lvbnMgc28gdGhlIGVsZW1lbnQgaGFzIGFuIGBpbm5lclRleHRgIHdoaWNoIHNvbWUgcGVvcGxlIGRlcGVuZCBvbiBpbiB0ZXN0cy5cbiAgICBtaW4td2lkdGg6IDFweDtcbiAgICBtaW4taGVpZ2h0OiAxcHg7XG4gIH1cblxuICAvLyBVc2VkIHdoZW4gZGlzYWJsaW5nIGdsb2JhbCBzY3JvbGxpbmcuXG4gIC5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG5cbiAgICAvLyBOZWNlc3NhcnkgZm9yIHRoZSBjb250ZW50IG5vdCB0byBsb3NlIGl0cyB3aWR0aC4gTm90ZSB0aGF0IHdlJ3JlIHVzaW5nIDEwMCUsIGluc3RlYWQgb2ZcbiAgICAvLyAxMDB2dywgYmVjYXVzZSAxMDB2dyBpbmNsdWRlcyB0aGUgd2lkdGggcGx1cyB0aGUgc2Nyb2xsYmFyLCB3aGVyZWFzIDEwMCUgaXMgdGhlIHdpZHRoXG4gICAgLy8gdGhhdCB0aGUgZWxlbWVudCBoYWQgYmVmb3JlIHdlIG1hZGUgaXQgYGZpeGVkYC5cbiAgICB3aWR0aDogMTAwJTtcblxuICAgIC8vIE5vdGU6IHRoaXMgd2lsbCBhbHdheXMgYWRkIGEgc2Nyb2xsYmFyIHRvIHdoYXRldmVyIGVsZW1lbnQgaXQgaXMgb24sIHdoaWNoIGNhblxuICAgIC8vIHBvdGVudGlhbGx5IHJlc3VsdCBpbiBkb3VibGUgc2Nyb2xsYmFycy4gSXQgc2hvdWxkbid0IGJlIGFuIGlzc3VlLCBiZWNhdXNlIHdlIHdvbid0XG4gICAgLy8gYmxvY2sgc2Nyb2xsaW5nIG9uIGEgcGFnZSB0aGF0IGRvZXNuJ3QgaGF2ZSBhIHNjcm9sbGJhciBpbiB0aGUgZmlyc3QgcGxhY2UuXG4gICAgb3ZlcmZsb3cteTogc2Nyb2xsO1xuICB9XG59XG5cbkBtaXhpbiBjZGstYTExeSB7XG4gIC5jZGstdmlzdWFsbHktaGlkZGVuIHtcbiAgICBib3JkZXI6IDA7XG4gICAgY2xpcDogcmVjdCgwIDAgMCAwKTtcbiAgICBoZWlnaHQ6IDFweDtcbiAgICBtYXJnaW46IC0xcHg7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBwYWRkaW5nOiAwO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB3aWR0aDogMXB4O1xuXG4gICAgLy8gVGhpcyB3b3JrcyBhcm91bmQgYSBDaHJvbWUgYnVnIHRoYXQgY2FuIGNhdXNlIHRoZSB0YWIgdG8gY3Jhc2ggd2hlbiBsYXJnZSBhbW91bnRzIG9mXG4gICAgLy8gbm9uLUVuZ2xpc2ggdGV4dCBnZXQgd3JhcHBlZDogaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9MTIwMTQ0NFxuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cbiAgICAvLyBBdm9pZCBicm93c2VycyByZW5kZXJpbmcgdGhlIGZvY3VzIHJpbmcgaW4gc29tZSBjYXNlcy5cbiAgICBvdXRsaW5lOiAwO1xuXG4gICAgLy8gQXZvaWQgc29tZSBjYXNlcyB3aGVyZSB0aGUgYnJvd3NlciB3aWxsIHN0aWxsIHJlbmRlciB0aGUgbmF0aXZlIGNvbnRyb2xzIChzZWUgIzkwNDkpLlxuICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbiAgICAtbW96LWFwcGVhcmFuY2U6IG5vbmU7XG4gIH1cbn1cblxuLy8vIEVtaXRzIHRoZSBtaXhpbidzIGNvbnRlbnQgbmVzdGVkIHVuZGVyIGAkc2VsZWN0b3ItY29udGV4dGAgaWYgYCRzZWxlY3Rvci1jb250ZXh0YFxuLy8vIGlzIG5vbi1lbXB0eS5cbi8vLyBAcGFyYW0gc2VsZWN0b3ItY29udGV4dCBUaGUgc2VsZWN0b3IgdW5kZXIgd2hpY2ggdG8gbmVzdCB0aGUgbWl4aW4ncyBjb250ZW50LlxuQG1peGluIF9jZGstb3B0aW9uYWxseS1uZXN0LWNvbnRlbnQoJHNlbGVjdG9yLWNvbnRleHQpIHtcbiAgQGlmICgkc2VsZWN0b3ItY29udGV4dCA9PSAnJykge1xuICAgIEBjb250ZW50O1xuICB9XG4gIEBlbHNlIHtcbiAgICAjeyRzZWxlY3Rvci1jb250ZXh0fSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cblxuLy8vIEFwcGxpZXMgc3R5bGVzIGZvciB1c2VycyBpbiBoaWdoIGNvbnRyYXN0IG1vZGUuIE5vdGUgdGhhdCB0aGlzIG9ubHkgYXBwbGllc1xuLy8vIHRvIE1pY3Jvc29mdCBicm93c2Vycy4gQ2hyb21lIGNhbiBiZSBpbmNsdWRlZCBieSBjaGVja2luZyBmb3IgdGhlIGBodG1sW2hjXWBcbi8vLyBhdHRyaWJ1dGUsIGhvd2V2ZXIgQ2hyb21lIGhhbmRsZXMgaGlnaCBjb250cmFzdCBkaWZmZXJlbnRseS5cbi8vL1xuLy8vIEBwYXJhbSB0YXJnZXQgV2hpY2gga2luZCBvZiBoaWdoIGNvbnRyYXN0IHNldHRpbmcgdG8gdGFyZ2V0LiBEZWZhdWx0cyB0byBgYWN0aXZlYCwgY2FuIGJlXG4vLy8gICAgYHdoaXRlLW9uLWJsYWNrYCBvciBgYmxhY2stb24td2hpdGVgLlxuLy8vIEBwYXJhbSBlbmNhcHN1bGF0aW9uIFdoZXRoZXIgdG8gZW1pdCBzdHlsZXMgZm9yIHZpZXcgZW5jYXBzdWxhdGlvbi4gVmFsdWVzIGFyZTpcbi8vLyAgICAgKiBgb25gIC0gd29ya3MgZm9yIGBFbXVsYXRlZGAsIGBOYXRpdmVgLCBhbmQgYFNoYWRvd0RvbWBcbi8vLyAgICAgKiBgb2ZmYCAtIHdvcmtzIGZvciBgTm9uZWBcbi8vLyAgICAgKiBgYW55YCAtIHdvcmtzIGZvciBhbGwgZW5jYXBzdWxhdGlvbiBtb2RlcyBieSBlbWl0dGluZyB0aGUgQ1NTIHR3aWNlIChkZWZhdWx0KS5cbkBtaXhpbiBjZGstaGlnaC1jb250cmFzdCgkdGFyZ2V0OiBhY3RpdmUsICRlbmNhcHN1bGF0aW9uOiAnYW55Jykge1xuICBAaWYgKCR0YXJnZXQgIT0gJ2FjdGl2ZScgYW5kICR0YXJnZXQgIT0gJ2JsYWNrLW9uLXdoaXRlJyBhbmQgJHRhcmdldCAhPSAnd2hpdGUtb24tYmxhY2snKSB7XG4gICAgQGVycm9yICdVbmtub3duIGNkay1oaWdoLWNvbnRyYXN0IHZhbHVlIFwiI3skdGFyZ2V0fVwiIHByb3ZpZGVkLiAnICtcbiAgICAgICAgICAgJ0FsbG93ZWQgdmFsdWVzIGFyZSBcImFjdGl2ZVwiLCBcImJsYWNrLW9uLXdoaXRlXCIsIGFuZCBcIndoaXRlLW9uLWJsYWNrXCInO1xuICB9XG5cbiAgQGlmICgkZW5jYXBzdWxhdGlvbiAhPSAnb24nIGFuZCAkZW5jYXBzdWxhdGlvbiAhPSAnb2ZmJyBhbmQgJGVuY2Fwc3VsYXRpb24gIT0gJ2FueScpIHtcbiAgICBAZXJyb3IgJ1Vua25vd24gY2RrLWhpZ2gtY29udHJhc3QgZW5jYXBzdWxhdGlvbiBcIiN7JGVuY2Fwc3VsYXRpb259XCIgcHJvdmlkZWQuICcgK1xuICAgICAgICAgICAnQWxsb3dlZCB2YWx1ZXMgYXJlIFwib25cIiwgXCJvZmZcIiwgYW5kIFwiYW55XCInO1xuICB9XG5cbiAgLy8gSWYgdGhlIHNlbGVjdG9yIGNvbnRleHQgaGFzIG11bHRpcGxlIHBhcnRzLCBzdWNoIGFzIGAuc2VjdGlvbiwgLnJlZ2lvbmAsIGp1c3QgZG9pbmdcbiAgLy8gYC5jZGstaGlnaC1jb250cmFzdC14eHggI3smfWAgd2lsbCBvbmx5IGFwcGx5IHRoZSBwYXJlbnQgc2VsZWN0b3IgdG8gdGhlIGZpcnN0IHBhcnQgb2YgdGhlXG4gIC8vIGNvbnRleHQuIFdlIGFkZHJlc3MgdGhpcyBieSBuZXN0aW5nIHRoZSBzZWxlY3RvciBjb250ZXh0IHVuZGVyIC5jZGstaGlnaC1jb250cmFzdC5cbiAgQGF0LXJvb3Qge1xuICAgICRzZWxlY3Rvci1jb250ZXh0OiAjeyZ9O1xuXG4gICAgQGlmICgkZW5jYXBzdWxhdGlvbiAhPSAnb24nKSB7XG4gICAgICAvLyBOb3RlIHRoYXQgaWYgdGhpcyBzZWxlY3RvciBpcyB1cGRhdGVkLCB0aGUgc2FtZSBjaGFuZ2UgaGFzIHRvIGJlIG1hZGUgaW5zaWRlXG4gICAgICAvLyBgX292ZXJsYXkuc2Nzc2Agd2hpY2ggY2FuJ3QgZGVwZW5kIG9uIHRoaXMgbWl4aW4gZHVlIHRvIHNvbWUgaW5mcmFzdHJ1Y3R1cmUgbGltaXRhdGlvbnMuXG4gICAgICAuY2RrLWhpZ2gtY29udHJhc3QtI3skdGFyZ2V0fSB7XG4gICAgICAgIEBpbmNsdWRlIF9jZGstb3B0aW9uYWxseS1uZXN0LWNvbnRlbnQoJHNlbGVjdG9yLWNvbnRleHQpIHtcbiAgICAgICAgICBAY29udGVudDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIEBpZiAoJGVuY2Fwc3VsYXRpb24gIT0gJ29mZicpIHtcbiAgICAgIC5jZGstaGlnaC1jb250cmFzdC0jeyR0YXJnZXR9IDpob3N0IHtcbiAgICAgICAgQGluY2x1ZGUgX2Nkay1vcHRpb25hbGx5LW5lc3QtY29udGVudCgkc2VsZWN0b3ItY29udGV4dCkge1xuICAgICAgICAgIEBjb250ZW50O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vIENvcmUgc3R5bGVzIHRoYXQgZW5hYmxlIG1vbml0b3JpbmcgYXV0b2ZpbGwgc3RhdGUgb2YgdGV4dCBmaWVsZHMuXG5AbWl4aW4gY2RrLXRleHQtZmllbGQge1xuICAvLyBLZXlmcmFtZXMgdGhhdCBhcHBseSBubyBzdHlsZXMsIGJ1dCBhbGxvdyB1cyB0byBtb25pdG9yIHdoZW4gYW4gdGV4dCBmaWVsZCBiZWNvbWVzIGF1dG9maWxsZWRcbiAgLy8gYnkgd2F0Y2hpbmcgZm9yIHRoZSBhbmltYXRpb24gZXZlbnRzIHRoYXQgYXJlIGZpcmVkIHdoZW4gdGhleSBzdGFydC4gTm90ZTogdGhlIC8qISovIGNvbW1lbnQgaXNcbiAgLy8gbmVlZGVkIHRvIHByZXZlbnQgTGliU2FzcyBmcm9tIHN0cmlwcGluZyB0aGUga2V5ZnJhbWVzIG91dC5cbiAgLy8gQmFzZWQgb246IGh0dHBzOi8vbWVkaXVtLmNvbS9AYnJ1bm4vZGV0ZWN0aW5nLWF1dG9maWxsZWQtZmllbGRzLWluLWphdmFzY3JpcHQtYWVkNTk4ZDI1ZGE3XG4gIEBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgey8qISovfVxuICBAa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCB7LyohKi99XG5cbiAgLmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZDotd2Via2l0LWF1dG9maWxsIHtcbiAgICAvLyBTaW5jZSBDaHJvbWUgODAgd2UgbmVlZCBhIDFtcyBkZWxheSwgb3IgdGhlIGFuaW1hdGlvbnN0YXJ0IGV2ZW50IHdvbid0IGZpcmUuXG4gICAgYW5pbWF0aW9uOiBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXM7XG4gIH1cblxuICAuY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCkge1xuICAgIC8vIFNpbmNlIENocm9tZSA4MCB3ZSBuZWVkIGEgMW1zIGRlbGF5LCBvciB0aGUgYW5pbWF0aW9uc3RhcnQgZXZlbnQgd29uJ3QgZmlyZS5cbiAgICBhbmltYXRpb246IGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXM7XG4gIH1cblxuICAvLyBSZW1vdmUgdGhlIHJlc2l6ZSBoYW5kbGUgb24gYXV0b3NpemluZyB0ZXh0YXJlYXMsIGJlY2F1c2Ugd2hhdGV2ZXIgaGVpZ2h0XG4gIC8vIHRoZSB1c2VyIHJlc2l6ZWQgdG8gd2lsbCBiZSBvdmVyd3JpdHRlbiBvbmNlIHRoZXkgc3RhcnQgdHlwaW5nIGFnYWluLlxuICB0ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUge1xuICAgIHJlc2l6ZTogbm9uZTtcbiAgfVxuXG4gIC8vIFRoaXMgY2xhc3MgaXMgdGVtcG9yYXJpbHkgYXBwbGllZCB0byB0aGUgdGV4dGFyZWEgd2hlbiBpdCBpcyBiZWluZyBtZWFzdXJlZC4gSXQgaXMgaW1tZWRpYXRlbHlcbiAgLy8gcmVtb3ZlZCB3aGVuIG1lYXN1cmluZyBpcyBjb21wbGV0ZS4gV2UgdXNlIGAhaW1wb3J0YW50YCBydWxlcyBoZXJlIHRvIG1ha2Ugc3VyZSB1c2VyLXNwZWNpZmllZFxuICAvLyBydWxlcyBkbyBub3QgaW50ZXJmZXJlIHdpdGggdGhlIG1lYXN1cmVtZW50LlxuICB0ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nIHtcbiAgICBAaW5jbHVkZSBfY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1iYXNlO1xuICAgIGhlaWdodDogYXV0byAhaW1wb3J0YW50O1xuICAgIG92ZXJmbG93OiBoaWRkZW4gIWltcG9ydGFudDtcbiAgfVxuXG4gIC8vIFNpbWlsYXIgdG8gdGhlIGBjZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nYCBjbGFzcywgYnV0IG9ubHkgYXBwbGllZCBvbiBGaXJlZm94LiBXZSBuZWVkXG4gIC8vIHRvIHVzZSB0aGlzIGNsYXNzLCBiZWNhdXNlIEZpcmVmb3ggaGFzIGEgYnVnIHdoZXJlIGNoYW5naW5nIHRoZSBgb3ZlcmZsb3dgIGJyZWFrcyB0aGUgdXNlcidzXG4gIC8vIGFiaWxpdHkgdG8gdW5kby9yZWRvIHdoYXQgdGhleSB3ZXJlIHR5cGluZyAoc2VlICMxNjYyOSkuIFRoaXMgY2xhc3MgaXMgb25seSBzY29wZWQgdG8gRmlyZWZveCxcbiAgLy8gYmVjYXVzZSB0aGUgbWVhc3VyZW1lbnRzIHRoZXJlIGRvbid0IHNlZW0gdG8gYmUgYWZmZWN0ZWQgYnkgdGhlIGBoZWlnaHQ6IDBgLCB3aGVyZWFzIG9uIG90aGVyXG4gIC8vIGJyb3dzZXJzIHRoZXkgYXJlLCBlLmcuIENocm9tZSBkZXRlY3RzIGxvbmdlciB0ZXh0IGFuZCBJRSBkb2VzJ3QgcmVzaXplIGJhY2sgdG8gbm9ybWFsLlxuICAvLyBJZGVudGljYWwgaXNzdWUgcmVwb3J0OiBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD00NDg3ODRcbiAgdGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94IHtcbiAgICBAaW5jbHVkZSBfY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1iYXNlO1xuICAgIGhlaWdodDogMCAhaW1wb3J0YW50O1xuICB9XG59XG5cbkBtaXhpbiBfY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1iYXNlIHtcbiAgLy8gSGF2aW5nIDJweCB0b3AgYW5kIGJvdHRvbSBwYWRkaW5nIHNlZW1zIHRvIGZpeCBhIGJ1ZyB3aGVyZSBDaHJvbWUgZ2V0cyBhbiBpbmNvcnJlY3RcbiAgLy8gbWVhc3VyZW1lbnQuIFdlIGp1c3QgaGF2ZSB0byBhY2NvdW50IGZvciBpdCBsYXRlciBhbmQgc3VidHJhY3QgaXQgb2ZmIHRoZSBmaW5hbCByZXN1bHQuXG4gIHBhZGRpbmc6IDJweCAwICFpbXBvcnRhbnQ7XG4gIGJveC1zaXppbmc6IGNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7XG59XG5cbi8vIFVzZWQgdG8gZ2VuZXJhdGUgVUlEcyBmb3Iga2V5ZnJhbWVzIHVzZWQgdG8gY2hhbmdlIHRoZSB0ZXh0IGZpZWxkIGF1dG9maWxsIHN0eWxlcy5cbiRjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1jb2xvci1mcmFtZS1jb3VudDogMDtcblxuLy8gTWl4aW4gdXNlZCB0byBhcHBseSBjdXN0b20gYmFja2dyb3VuZCBhbmQgZm9yZWdyb3VuZCBjb2xvcnMgdG8gYW4gYXV0b2ZpbGxlZCB0ZXh0IGZpZWxkLlxuLy8gQmFzZWQgb246IGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzI3ODE1NDkvXG4vLyByZW1vdmluZy1pbnB1dC1iYWNrZ3JvdW5kLWNvbG91ci1mb3ItY2hyb21lLWF1dG9jb21wbGV0ZSNhbnN3ZXItMzc0MzIyNjBcbkBtaXhpbiBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1jb2xvcigkYmFja2dyb3VuZCwgJGZvcmVncm91bmQ6JycpIHtcbiAgQGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1jb2xvci0jeyRjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1jb2xvci1mcmFtZS1jb3VudH0ge1xuICAgIHRvIHtcbiAgICAgIGJhY2tncm91bmQ6ICRiYWNrZ3JvdW5kO1xuICAgICAgQGlmICRmb3JlZ3JvdW5kICE9ICcnIHsgY29sb3I6ICRmb3JlZ3JvdW5kOyB9XG4gICAgfVxuICB9XG5cbiAgJjotd2Via2l0LWF1dG9maWxsIHtcbiAgICBhbmltYXRpb246IGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWNvbG9yLSN7JGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWNvbG9yLWZyYW1lLWNvdW50fSBib3RoO1xuICB9XG5cbiAgJi5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWQ6LXdlYmtpdC1hdXRvZmlsbCB7XG4gICAgLy8gU2luY2UgQ2hyb21lIDgwIHdlIG5lZWQgYSAxbXMgZGVsYXkgZm9yIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0LCBvciB0aGUgYW5pbWF0aW9uc3RhcnRcbiAgICAvLyBldmVudCB3b24ndCBmaXJlLlxuICAgIGFuaW1hdGlvbjogY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zLFxuICAgICAgICAgICAgICAgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtY29sb3ItI3skY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtY29sb3ItZnJhbWUtY291bnR9IGJvdGg7XG4gIH1cblxuICAkY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtY29sb3ItZnJhbWUtY291bnQ6XG4gICAgICAkY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtY29sb3ItZnJhbWUtY291bnQgKyAxICFnbG9iYWw7XG59XG5cblxuLy8gQ29yZSBzdHlsZXMgdGhhdCBjYW4gYmUgdXNlZCB0byBhcHBseSBtYXRlcmlhbCBkZXNpZ24gdHJlYXRtZW50cyB0byBhbnkgZWxlbWVudC5cbi8vIE1lZGlhIHF1ZXJpZXNcbi8vIFRPRE8oam9zZXBocGVycm90dCk6IENoYW5nZSAkbWF0LXhzbWFsbCBhbmQgJG1hdC1zbWFsbCB1c2FnZXMgdG8gcmVseSBvbiBCcmVha3BvaW50T2JzZXJ2ZXIsXG4kbWF0LXhzbWFsbDogJ21heC13aWR0aDogNTk5cHgnO1xuJG1hdC1zbWFsbDogJ21heC13aWR0aDogOTU5cHgnO1xuXG4vLyBUT0RPOiBSZXZpc2l0IGFsbCB6LWluZGljZXMgYmVmb3JlIGJldGFcbi8vIHotaW5kZXggbWFzdGVyIGxpc3RcblxuJHotaW5kZXgtZmFiOiAyMCAhZGVmYXVsdDtcbiR6LWluZGV4LWRyYXdlcjogMTAwICFkZWZhdWx0O1xuXG4vLyBHbG9iYWwgY29uc3RhbnRzXG4kcGk6IDMuMTQxNTkyNjU7XG5cbi8vIFBhZGRpbmcgYmV0d2VlbiBpbnB1dCB0b2dnbGVzIGFuZCB0aGVpciBsYWJlbHNcbiRtYXQtdG9nZ2xlLXBhZGRpbmc6IDhweCAhZGVmYXVsdDtcbi8vIFdpZHRoIGFuZCBoZWlnaHQgb2YgaW5wdXQgdG9nZ2xlc1xuJG1hdC10b2dnbGUtc2l6ZTogMjBweCAhZGVmYXVsdDtcblxuLy8gRWFzaW5nIEN1cnZlc1xuLy8gVE9ETyhqZWxib3Vybik6IGFsbCBvZiB0aGVzZSBuZWVkIHRvIGJlIHJldmlzaXRlZFxuXG4vLyBUaGUgZGVmYXVsdCBhbmltYXRpb24gY3VydmVzIHVzZWQgYnkgbWF0ZXJpYWwgZGVzaWduLlxuJG1hdC1saW5lYXItb3V0LXNsb3ctaW4tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAwLjEpICFkZWZhdWx0O1xuJG1hdC1mYXN0LW91dC1zbG93LWluLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKSAhZGVmYXVsdDtcbiRtYXQtZmFzdC1vdXQtbGluZWFyLWluLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNCwgMCwgMSwgMSkgIWRlZmF1bHQ7XG5cbiRlYXNlLWluLW91dC1jdXJ2ZS1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMzUsIDAsIDAuMjUsIDEpICFkZWZhdWx0O1xuXG4kc3dpZnQtZWFzZS1vdXQtZHVyYXRpb246IDQwMG1zICFkZWZhdWx0O1xuJHN3aWZ0LWVhc2Utb3V0LXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSkgIWRlZmF1bHQ7XG4kc3dpZnQtZWFzZS1vdXQ6IGFsbCAkc3dpZnQtZWFzZS1vdXQtZHVyYXRpb24gJHN3aWZ0LWVhc2Utb3V0LXRpbWluZy1mdW5jdGlvbiAhZGVmYXVsdDtcblxuJHN3aWZ0LWVhc2UtaW4tZHVyYXRpb246IDMwMG1zICFkZWZhdWx0O1xuJHN3aWZ0LWVhc2UtaW4tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC41NSwgMCwgMC41NSwgMC4yKSAhZGVmYXVsdDtcbiRzd2lmdC1lYXNlLWluOiBhbGwgJHN3aWZ0LWVhc2UtaW4tZHVyYXRpb24gJHN3aWZ0LWVhc2UtaW4tdGltaW5nLWZ1bmN0aW9uICFkZWZhdWx0O1xuXG4kc3dpZnQtZWFzZS1pbi1vdXQtZHVyYXRpb246IDUwMG1zICFkZWZhdWx0O1xuJHN3aWZ0LWVhc2UtaW4tb3V0LXRpbWluZy1mdW5jdGlvbjogJGVhc2UtaW4tb3V0LWN1cnZlLWZ1bmN0aW9uICFkZWZhdWx0O1xuJHN3aWZ0LWVhc2UtaW4tb3V0OiBhbGwgJHN3aWZ0LWVhc2UtaW4tb3V0LWR1cmF0aW9uICRzd2lmdC1lYXNlLWluLW91dC10aW1pbmctZnVuY3Rpb24gIWRlZmF1bHQ7XG5cbiRzd2lmdC1saW5lYXItZHVyYXRpb246IDgwbXMgIWRlZmF1bHQ7XG4kc3dpZnQtbGluZWFyLXRpbWluZy1mdW5jdGlvbjogbGluZWFyICFkZWZhdWx0O1xuJHN3aWZ0LWxpbmVhcjogYWxsICRzd2lmdC1saW5lYXItZHVyYXRpb24gJHN3aWZ0LWxpbmVhci10aW1pbmctZnVuY3Rpb24gIWRlZmF1bHQ7XG5cblxuXG4vLyBBIGNvbGxlY3Rpb24gb2YgbWl4aW5zIGFuZCBDU1MgY2xhc3NlcyB0aGF0IGNhbiBiZSB1c2VkIHRvIGFwcGx5IGVsZXZhdGlvbiB0byBhIG1hdGVyaWFsXG4vLyBlbGVtZW50LlxuLy8gU2VlOiBodHRwczovL21hdGVyaWFsLmlvL2Rlc2lnbi9lbnZpcm9ubWVudC9lbGV2YXRpb24uaHRtbFxuLy8gRXhhbXBsZXM6XG4vL1xuLy9cbi8vIC5tYXQtZm9vIHtcbi8vICAgQGluY2x1ZGUgJG1hdC1lbGV2YXRpb24oMik7XG4vL1xuLy8gICAmOmFjdGl2ZSB7XG4vLyAgICAgQGluY2x1ZGUgJG1hdC1lbGV2YXRpb24oOCk7XG4vLyAgIH1cbi8vIH1cbi8vXG4vLyA8ZGl2IGlkPVwiZXh0ZXJuYWwtY2FyZFwiIGNsYXNzPVwibWF0LWVsZXZhdGlvbi16MlwiPjxwPlNvbWUgY29udGVudDwvcD48L2Rpdj5cbi8vXG4vLyBGb3IgYW4gZXhwbGFuYXRpb24gb2YgdGhlIGRlc2lnbiBiZWhpbmQgaG93IGVsZXZhdGlvbiBpcyBpbXBsZW1lbnRlZCwgc2VlIHRoZSBkZXNpZ24gZG9jIGF0XG4vLyBodHRwczovL2dvby5nbC9LcTBrOVouXG5cbi8vIENvbG9ycyBmb3IgdW1icmEsIHBlbnVtYnJhLCBhbmQgYW1iaWVudCBzaGFkb3dzLiBBcyBkZXNjcmliZWQgaW4gdGhlIGRlc2lnbiBkb2MsIGVhY2ggZWxldmF0aW9uXG4vLyBsZXZlbCBpcyBjcmVhdGVkIHVzaW5nIGEgc2V0IG9mIDMgc2hhZG93IHZhbHVlcywgb25lIGZvciB1bWJyYSAodGhlIHNoYWRvdyByZXByZXNlbnRpbmcgdGhlXG4vLyBzcGFjZSBjb21wbGV0ZWx5IG9ic2N1cmVkIGJ5IGFuIG9iamVjdCByZWxhdGl2ZSB0byBpdHMgbGlnaHQgc291cmNlKSwgb25lIGZvciBwZW51bWJyYSAodGhlXG4vLyBzcGFjZSBwYXJ0aWFsbHkgb2JzY3VyZWQgYnkgYW4gb2JqZWN0KSwgYW5kIG9uZSBmb3IgYW1iaWVudCAodGhlIHNwYWNlIHdoaWNoIGNvbnRhaW5zIHRoZSBvYmplY3Rcbi8vIGl0c2VsZikuIEZvciBhIGZ1cnRoZXIgZXhwbGFuYXRpb24gb2YgdGhlc2UgdGVybXMgYW5kIHRoZWlyIG1lYW5pbmdzLCBzZWVcbi8vIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1VtYnJhLF9wZW51bWJyYV9hbmRfYW50dW1icmEuXG5cbi8vIE1hcHMgZm9yIHRoZSBkaWZmZXJlbnQgc2hhZG93IHNldHMgYW5kIHRoZWlyIHZhbHVlcyB3aXRoaW4gZWFjaCB6LXNwYWNlLiBUaGVzZSB2YWx1ZXMgd2VyZVxuLy8gY3JlYXRlZCBieSB0YWtpbmcgYSBmZXcgcmVmZXJlbmNlIHNoYWRvdyBzZXRzIGNyZWF0ZWQgYnkgR29vZ2xlJ3MgRGVzaWduZXJzIGFuZCBpbnRlcnBvbGF0aW5nXG4vLyBhbGwgb2YgdGhlIHZhbHVlcyBiZXR3ZWVuIHRoZW0uXG5cbkBmdW5jdGlvbiBfZ2V0LXVtYnJhLW1hcCgkY29sb3IsICRvcGFjaXR5KSB7XG4gICRzaGFkb3ctY29sb3I6IGlmKHR5cGUtb2YoJGNvbG9yKSA9PSBjb2xvciwgcmdiYSgkY29sb3IsICRvcGFjaXR5ICogMC4yKSwgJGNvbG9yKTtcblxuICBAcmV0dXJuIChcbiAgICAwOiAnMHB4IDBweCAwcHggMHB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDE6ICcwcHggMnB4IDFweCAtMXB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDI6ICcwcHggM3B4IDFweCAtMnB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDM6ICcwcHggM3B4IDNweCAtMnB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDQ6ICcwcHggMnB4IDRweCAtMXB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDU6ICcwcHggM3B4IDVweCAtMXB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDY6ICcwcHggM3B4IDVweCAtMXB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDc6ICcwcHggNHB4IDVweCAtMnB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDg6ICcwcHggNXB4IDVweCAtM3B4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDk6ICcwcHggNXB4IDZweCAtM3B4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDEwOiAnMHB4IDZweCA2cHggLTNweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAxMTogJzBweCA2cHggN3B4IC00cHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMTI6ICcwcHggN3B4IDhweCAtNHB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDEzOiAnMHB4IDdweCA4cHggLTRweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAxNDogJzBweCA3cHggOXB4IC00cHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMTU6ICcwcHggOHB4IDlweCAtNXB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDE2OiAnMHB4IDhweCAxMHB4IC01cHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMTc6ICcwcHggOHB4IDExcHggLTVweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAxODogJzBweCA5cHggMTFweCAtNXB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDE5OiAnMHB4IDlweCAxMnB4IC02cHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMjA6ICcwcHggMTBweCAxM3B4IC02cHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMjE6ICcwcHggMTBweCAxM3B4IC02cHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMjI6ICcwcHggMTBweCAxNHB4IC02cHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMjM6ICcwcHggMTFweCAxNHB4IC03cHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMjQ6ICcwcHggMTFweCAxNXB4IC03cHggI3skc2hhZG93LWNvbG9yfSdcbiAgKTtcbn1cblxuQGZ1bmN0aW9uIF9nZXQtcGVudW1icmEtbWFwKCRjb2xvciwgJG9wYWNpdHkpIHtcbiAgJHNoYWRvdy1jb2xvcjogaWYodHlwZS1vZigkY29sb3IpID09IGNvbG9yLCByZ2JhKCRjb2xvciwgJG9wYWNpdHkgKiAwLjE0KSwgJGNvbG9yKTtcblxuICBAcmV0dXJuIChcbiAgICAwOiAnMHB4IDBweCAwcHggMHB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDE6ICcwcHggMXB4IDFweCAwcHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMjogJzBweCAycHggMnB4IDBweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAzOiAnMHB4IDNweCA0cHggMHB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDQ6ICcwcHggNHB4IDVweCAwcHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgNTogJzBweCA1cHggOHB4IDBweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICA2OiAnMHB4IDZweCAxMHB4IDBweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICA3OiAnMHB4IDdweCAxMHB4IDFweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICA4OiAnMHB4IDhweCAxMHB4IDFweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICA5OiAnMHB4IDlweCAxMnB4IDFweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAxMDogJzBweCAxMHB4IDE0cHggMXB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDExOiAnMHB4IDExcHggMTVweCAxcHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMTI6ICcwcHggMTJweCAxN3B4IDJweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAxMzogJzBweCAxM3B4IDE5cHggMnB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDE0OiAnMHB4IDE0cHggMjFweCAycHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMTU6ICcwcHggMTVweCAyMnB4IDJweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAxNjogJzBweCAxNnB4IDI0cHggMnB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDE3OiAnMHB4IDE3cHggMjZweCAycHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMTg6ICcwcHggMThweCAyOHB4IDJweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAxOTogJzBweCAxOXB4IDI5cHggMnB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDIwOiAnMHB4IDIwcHggMzFweCAzcHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMjE6ICcwcHggMjFweCAzM3B4IDNweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAyMjogJzBweCAyMnB4IDM1cHggM3B4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDIzOiAnMHB4IDIzcHggMzZweCAzcHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMjQ6ICcwcHggMjRweCAzOHB4IDNweCAjeyRzaGFkb3ctY29sb3J9J1xuICApO1xufVxuXG5AZnVuY3Rpb24gX2dldC1hbWJpZW50LW1hcCgkY29sb3IsICRvcGFjaXR5KSB7XG4gICRzaGFkb3ctY29sb3I6IGlmKHR5cGUtb2YoJGNvbG9yKSA9PSBjb2xvciwgcmdiYSgkY29sb3IsICRvcGFjaXR5ICogMC4xMiksICRjb2xvcik7XG5cbiAgQHJldHVybiAoXG4gICAgMDogJzBweCAwcHggMHB4IDBweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAxOiAnMHB4IDFweCAzcHggMHB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDI6ICcwcHggMXB4IDVweCAwcHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMzogJzBweCAxcHggOHB4IDBweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICA0OiAnMHB4IDFweCAxMHB4IDBweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICA1OiAnMHB4IDFweCAxNHB4IDBweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICA2OiAnMHB4IDFweCAxOHB4IDBweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICA3OiAnMHB4IDJweCAxNnB4IDFweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICA4OiAnMHB4IDNweCAxNHB4IDJweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICA5OiAnMHB4IDNweCAxNnB4IDJweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAxMDogJzBweCA0cHggMThweCAzcHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMTE6ICcwcHggNHB4IDIwcHggM3B4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDEyOiAnMHB4IDVweCAyMnB4IDRweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAxMzogJzBweCA1cHggMjRweCA0cHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMTQ6ICcwcHggNXB4IDI2cHggNHB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDE1OiAnMHB4IDZweCAyOHB4IDVweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAxNjogJzBweCA2cHggMzBweCA1cHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMTc6ICcwcHggNnB4IDMycHggNXB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDE4OiAnMHB4IDdweCAzNHB4IDZweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAxOTogJzBweCA3cHggMzZweCA2cHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMjA6ICcwcHggOHB4IDM4cHggN3B4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDIxOiAnMHB4IDhweCA0MHB4IDdweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAyMjogJzBweCA4cHggNDJweCA3cHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMjM6ICcwcHggOXB4IDQ0cHggOHB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDI0OiAnMHB4IDlweCA0NnB4IDhweCAjeyRzaGFkb3ctY29sb3J9J1xuICApO1xufVxuXG4vLyBUaGUgZGVmYXVsdCBkdXJhdGlvbiB2YWx1ZSBmb3IgZWxldmF0aW9uIHRyYW5zaXRpb25zLlxuJG1hdC1lbGV2YXRpb24tdHJhbnNpdGlvbi1kdXJhdGlvbjogMjgwbXMgIWRlZmF1bHQ7XG5cbi8vIFRoZSBkZWZhdWx0IGVhc2luZyB2YWx1ZSBmb3IgZWxldmF0aW9uIHRyYW5zaXRpb25zLlxuJG1hdC1lbGV2YXRpb24tdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246ICRtYXQtZmFzdC1vdXQtc2xvdy1pbi10aW1pbmctZnVuY3Rpb247XG5cbi8vIFRoZSBkZWZhdWx0IGNvbG9yIGZvciBlbGV2YXRpb24gc2hhZG93cy5cbiRtYXQtZWxldmF0aW9uLWNvbG9yOiBibGFjayAhZGVmYXVsdDtcblxuLy8gVGhlIGRlZmF1bHQgb3BhY2l0eSBzY2FsaW5nIHZhbHVlIGZvciBlbGV2YXRpb24gc2hhZG93cy5cbiRtYXQtZWxldmF0aW9uLW9wYWNpdHk6IDEgIWRlZmF1bHQ7XG5cbi8vIFByZWZpeCBmb3IgZWxldmF0aW9uLXJlbGF0ZWQgc2VsZWN0b3JzLlxuJG1hdC1lbGV2YXRpb24tcHJlZml4OiAnbWF0LWVsZXZhdGlvbi16JztcblxuLy8gQXBwbGllcyB0aGUgY29ycmVjdCBjc3MgcnVsZXMgdG8gYW4gZWxlbWVudCB0byBnaXZlIGl0IHRoZSBlbGV2YXRpb24gc3BlY2lmaWVkIGJ5ICR6VmFsdWUuXG4vLyBUaGUgJHpWYWx1ZSBtdXN0IGJlIGJldHdlZW4gMCBhbmQgMjQuXG5AbWl4aW4gbWF0LWVsZXZhdGlvbigkelZhbHVlLCAkY29sb3I6ICRtYXQtZWxldmF0aW9uLWNvbG9yLCAkb3BhY2l0eTogJG1hdC1lbGV2YXRpb24tb3BhY2l0eSkge1xuICBAaWYgdHlwZS1vZigkelZhbHVlKSAhPSBudW1iZXIgb3Igbm90IHVuaXRsZXNzKCR6VmFsdWUpIHtcbiAgICBAZXJyb3IgJyR6VmFsdWUgbXVzdCBiZSBhIHVuaXRsZXNzIG51bWJlcic7XG4gIH1cbiAgQGlmICR6VmFsdWUgPCAwIG9yICR6VmFsdWUgPiAyNCB7XG4gICAgQGVycm9yICckelZhbHVlIG11c3QgYmUgYmV0d2VlbiAwIGFuZCAyNCc7XG4gIH1cblxuICBib3gtc2hhZG93OiAje21hcC1nZXQoX2dldC11bWJyYS1tYXAoJGNvbG9yLCAkb3BhY2l0eSksICR6VmFsdWUpfSxcbiAgICAgICAgICAgICAgI3ttYXAtZ2V0KF9nZXQtcGVudW1icmEtbWFwKCRjb2xvciwgJG9wYWNpdHkpLCAkelZhbHVlKX0sXG4gICAgICAgICAgICAgICN7bWFwLWdldChfZ2V0LWFtYmllbnQtbWFwKCRjb2xvciwgJG9wYWNpdHkpLCAkelZhbHVlKX07XG59XG5cbi8vIEFwcGxpZXMgdGhlIGVsZXZhdGlvbiB0byBhbiBlbGVtZW50IGluIGEgbWFubmVyIHRoYXQgYWxsb3dzXG4vLyBjb25zdW1lcnMgdG8gb3ZlcnJpZGUgaXQgdmlhIHRoZSBNYXRlcmlhbCBlbGV2YXRpb24gY2xhc3Nlcy5cbkBtaXhpbiBtYXQtb3ZlcnJpZGFibGUtZWxldmF0aW9uKFxuICAgICR6VmFsdWUsXG4gICAgJGNvbG9yOiAkbWF0LWVsZXZhdGlvbi1jb2xvcixcbiAgICAkb3BhY2l0eTogJG1hdC1lbGV2YXRpb24tb3BhY2l0eSkge1xuICAmOm5vdChbY2xhc3MqPScjeyRtYXQtZWxldmF0aW9uLXByZWZpeH0nXSkge1xuICAgIEBpbmNsdWRlIG1hdC1lbGV2YXRpb24oJHpWYWx1ZSwgJGNvbG9yLCAkb3BhY2l0eSk7XG4gIH1cbn1cblxuLy8gUmV0dXJucyBhIHN0cmluZyB0aGF0IGNhbiBiZSB1c2VkIGFzIHRoZSB2YWx1ZSBmb3IgYSB0cmFuc2l0aW9uIHByb3BlcnR5IGZvciBlbGV2YXRpb24uXG4vLyBDYWxsaW5nIHRoaXMgZnVuY3Rpb24gZGlyZWN0bHkgaXMgdXNlZnVsIGluIHNpdHVhdGlvbnMgd2hlcmUgYSBjb21wb25lbnQgbmVlZHMgdG8gdHJhbnNpdGlvblxuLy8gbW9yZSB0aGFuIG9uZSBwcm9wZXJ0eS5cbi8vXG4vLyAuZm9vIHtcbi8vICAgdHJhbnNpdGlvbjogbWF0LWVsZXZhdGlvbi10cmFuc2l0aW9uLXByb3BlcnR5LXZhbHVlKCksIG9wYWNpdHkgMTAwbXMgZWFzZTtcbi8vIH1cbkBmdW5jdGlvbiBtYXQtZWxldmF0aW9uLXRyYW5zaXRpb24tcHJvcGVydHktdmFsdWUoXG4gICAgJGR1cmF0aW9uOiAkbWF0LWVsZXZhdGlvbi10cmFuc2l0aW9uLWR1cmF0aW9uLFxuICAgICRlYXNpbmc6ICRtYXQtZWxldmF0aW9uLXRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uKSB7XG4gIEByZXR1cm4gYm94LXNoYWRvdyAjeyRkdXJhdGlvbn0gI3skZWFzaW5nfTtcbn1cblxuLy8gQXBwbGllcyB0aGUgY29ycmVjdCBjc3MgcnVsZXMgbmVlZGVkIHRvIGhhdmUgYW4gZWxlbWVudCB0cmFuc2l0aW9uIGJldHdlZW4gZWxldmF0aW9ucy5cbi8vIFRoaXMgbWl4aW4gc2hvdWxkIGJlIGFwcGxpZWQgdG8gZWxlbWVudHMgd2hvc2UgZWxldmF0aW9uIHZhbHVlcyB3aWxsIGNoYW5nZSBkZXBlbmRpbmcgb24gdGhlaXJcbi8vIGNvbnRleHQgKGUuZy4gd2hlbiBhY3RpdmUgb3IgZGlzYWJsZWQpLlxuLy9cbi8vIE5PVEUodHJhdmlza2F1Zm1hbik6IEJvdGggdGhpcyBtaXhpbiBhbmQgdGhlIGFib3ZlIGZ1bmN0aW9uIHVzZSBkZWZhdWx0IHBhcmFtZXRlcnMgc28gdGhleSBjYW5cbi8vIGJlIHVzZWQgaW4gdGhlIHNhbWUgd2F5IGJ5IGNsaWVudHMuXG5AbWl4aW4gbWF0LWVsZXZhdGlvbi10cmFuc2l0aW9uKFxuICAgICRkdXJhdGlvbjogJG1hdC1lbGV2YXRpb24tdHJhbnNpdGlvbi1kdXJhdGlvbixcbiAgICAkZWFzaW5nOiAkbWF0LWVsZXZhdGlvbi10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbikge1xuICB0cmFuc2l0aW9uOiBtYXQtZWxldmF0aW9uLXRyYW5zaXRpb24tcHJvcGVydHktdmFsdWUoJGR1cmF0aW9uLCAkZWFzaW5nKTtcbn1cblxuXG5AbWl4aW4gbWF0LXByaXZhdGUtdGhlbWUtZWxldmF0aW9uKCR6VmFsdWUsICRjb25maWcsICRvcGFjaXR5OiAkbWF0LWVsZXZhdGlvbi1vcGFjaXR5KSB7XG4gICRmb3JlZ3JvdW5kOiBtYXAtZ2V0KCRjb25maWcsIGZvcmVncm91bmQpO1xuICAkZWxldmF0aW9uLWNvbG9yOiBtYXAtZ2V0KCRmb3JlZ3JvdW5kLCBlbGV2YXRpb24pO1xuICAkZWxldmF0aW9uLWNvbG9yLW9yLWRlZmF1bHQ6IGlmKCRlbGV2YXRpb24tY29sb3IgPT0gbnVsbCwgJG1hdC1lbGV2YXRpb24tY29sb3IsICRlbGV2YXRpb24tY29sb3IpO1xuXG4gIEBpbmNsdWRlIG1hdC1lbGV2YXRpb24oJHpWYWx1ZSwgJGVsZXZhdGlvbi1jb2xvci1vci1kZWZhdWx0LCAkb3BhY2l0eSk7XG59XG5cbkBtaXhpbiBtYXQtcHJpdmF0ZS10aGVtZS1vdmVycmlkYWJsZS1lbGV2YXRpb24oJHpWYWx1ZSwgJGNvbmZpZywgJG9wYWNpdHk6ICRtYXQtZWxldmF0aW9uLW9wYWNpdHkpIHtcbiAgJGZvcmVncm91bmQ6IG1hcC1nZXQoJGNvbmZpZywgZm9yZWdyb3VuZCk7XG4gICRlbGV2YXRpb24tY29sb3I6IG1hcC1nZXQoJGZvcmVncm91bmQsIGVsZXZhdGlvbik7XG4gICRlbGV2YXRpb24tY29sb3Itb3ItZGVmYXVsdDogaWYoJGVsZXZhdGlvbi1jb2xvciA9PSBudWxsLCAkbWF0LWVsZXZhdGlvbi1jb2xvciwgJGVsZXZhdGlvbi1jb2xvcik7XG5cbiAgQGluY2x1ZGUgbWF0LW92ZXJyaWRhYmxlLWVsZXZhdGlvbigkelZhbHVlLCAkZWxldmF0aW9uLWNvbG9yLW9yLWRlZmF1bHQsICRvcGFjaXR5KTtcbn1cblxuLy8gSWYgdGhlIG1hdC1hbmltYXRpb24tbm9vcCBjbGFzcyBpcyBwcmVzZW50IG9uIHRoZSBjb21wb25lbnRzIHJvb3QgZWxlbWVudCxcbi8vIHByZXZlbnQgbm9uIGNzcyBhbmltYXRpb25zIGZyb20gcnVubmluZy5cbi8vIE5PVEU6IEN1cnJlbnRseSB0aGlzIG1peGluIHNob3VsZCBvbmx5IGJlIHVzZWQgd2l0aCBjb21wb25lbnRzIHRoYXQgZG8gbm90XG4vLyBoYXZlIGFueSBwcm9qZWN0ZWQgY29udGVudC5cbkBtaXhpbiBtYXQtcHJpdmF0ZS1hbmltYXRpb24tbm9vcCgpIHtcbiAgLy8gQGF0LXJvb3QgaXMgdXNlZCB0byBzdGVwcyBvdXRzaWRlIG9mIHRoZSBoaWVyYXJjaHkgb2YgdGhlIHNjc3MgcnVsZXMuIFRoaXMgaXNcbiAgLy8gZG9uZSB0byBhbGxvdyBhIGNsYXNzIHRvIGJlIGFkZGVkIHRvIGJlIGFkZGVkIHRvIGJhc2Ugb2YgdGhlIHNjc3MgbmVzdGluZ1xuICAvLyBjb250ZXh0LlxuICAvLyBGb3IgZXhhbXBsZTpcbiAgLy8gLm15LXJvb3Qge1xuICAvLyAgIC5teS1zdWJjbGFzcyB7XG4gIC8vICAgICAgQGluY2x1ZGUgbWF0LXByaXZhdGUtYW5pbWF0aW9uLW5vb3AoKTtcbiAgLy8gICAgfVxuICAvLyB9XG4gIC8vIHJlc3VsdHMgaW46XG4gIC8vIC5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZS5teS1yb290IC5teS1zdWJjbGFzcyB7IC4uLiB9XG4gIEBhdC1yb290IC5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZSN7Jn0ge1xuICAgIHRyYW5zaXRpb246IG5vbmU7XG4gICAgYW5pbWF0aW9uOiBub25lO1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vIENvbG9yIHBhbGV0dGVzIGZyb20gdGhlIE1hdGVyaWFsIERlc2lnbiBzcGVjLlxuLy8gU2VlIGh0dHBzOi8vbWF0ZXJpYWwuaW8vZGVzaWduL2NvbG9yL1xuLy9cbi8vIENvbnRyYXN0IGNvbG9ycyBhcmUgaGFyZC1jb2RlZCBiZWNhdXNlIGl0IGlzIHRvbyBkaWZmaWN1bHQgKHByb2JhYmx5IGltcG9zc2libGUpIHRvXG4vLyBjYWxjdWxhdGUgdGhlbS4gVGhlc2UgY29udHJhc3QgY29sb3JzIGFyZSBwdWxsZWQgZnJvbSB0aGUgcHVibGljIE1hdGVyaWFsIERlc2lnbiBzcGVjIHN3YXRjaGVzLlxuLy8gV2hpbGUgdGhlIGNvbnRyYXN0IGNvbG9ycyBpbiB0aGUgc3BlYyBhcmUgbm90IHByZXNjcmlwdGl2ZSwgd2UgdXNlIHRoZW0gZm9yIGNvbnZlbmllbmNlLlxuXG5cbi8vIEBkZXByZWNhdGVkIHJlbmFtZWQgdG8gJGRhcmstcHJpbWFyeS10ZXh0LlxuLy8gQGJyZWFraW5nLWNoYW5nZSA4LjAuMFxuJGJsYWNrLTg3LW9wYWNpdHk6IHJnYmEoYmxhY2ssIDAuODcpO1xuLy8gQGRlcHJlY2F0ZWQgcmVuYW1lZCB0byAkbGlnaHQtcHJpbWFyeS10ZXh0LlxuLy8gQGJyZWFraW5nLWNoYW5nZSA4LjAuMFxuJHdoaXRlLTg3LW9wYWNpdHk6IHJnYmEod2hpdGUsIDAuODcpO1xuLy8gQGRlcHJlY2F0ZWQgdXNlICRkYXJrLVtzZWNvbmRhcnktdGV4dCxkaXNhYmxlZC10ZXh0LGRpdmlkZXJzLGZvY3VzZWRdIGluc3RlYWQuXG4vLyBAYnJlYWtpbmctY2hhbmdlIDguMC4wXG4kYmxhY2stMTItb3BhY2l0eTogcmdiYShibGFjaywgMC4xMik7XG4vLyBAZGVwcmVjYXRlZCB1c2UgJGxpZ2h0LVtzZWNvbmRhcnktdGV4dCxkaXNhYmxlZC10ZXh0LGRpdmlkZXJzLGZvY3VzZWRdIGluc3RlYWQuXG4vLyBAYnJlYWtpbmctY2hhbmdlIDguMC4wXG4kd2hpdGUtMTItb3BhY2l0eTogcmdiYSh3aGl0ZSwgMC4xMik7XG4vLyBAZGVwcmVjYXRlZCB1c2UgJGRhcmstW3NlY29uZGFyeS10ZXh0LGRpc2FibGVkLXRleHQsZGl2aWRlcnMsZm9jdXNlZF0gaW5zdGVhZC5cbi8vIEBicmVha2luZy1jaGFuZ2UgOC4wLjBcbiRibGFjay02LW9wYWNpdHk6IHJnYmEoYmxhY2ssIDAuMDYpO1xuLy8gQGRlcHJlY2F0ZWQgdXNlICRsaWdodC1bc2Vjb25kYXJ5LXRleHQsZGlzYWJsZWQtdGV4dCxkaXZpZGVycyxmb2N1c2VkXSBpbnN0ZWFkLlxuLy8gQGJyZWFraW5nLWNoYW5nZSA4LjAuMFxuJHdoaXRlLTYtb3BhY2l0eTogcmdiYSh3aGl0ZSwgMC4wNik7XG5cbiRkYXJrLXByaW1hcnktdGV4dDogcmdiYShibGFjaywgMC44Nyk7XG4kZGFyay1zZWNvbmRhcnktdGV4dDogcmdiYShibGFjaywgMC41NCk7XG4kZGFyay1kaXNhYmxlZC10ZXh0OiByZ2JhKGJsYWNrLCAwLjM4KTtcbiRkYXJrLWRpdmlkZXJzOiByZ2JhKGJsYWNrLCAwLjEyKTtcbiRkYXJrLWZvY3VzZWQ6IHJnYmEoYmxhY2ssIDAuMTIpO1xuJGxpZ2h0LXByaW1hcnktdGV4dDogd2hpdGU7XG4kbGlnaHQtc2Vjb25kYXJ5LXRleHQ6IHJnYmEod2hpdGUsIDAuNyk7XG4kbGlnaHQtZGlzYWJsZWQtdGV4dDogcmdiYSh3aGl0ZSwgMC41KTtcbiRsaWdodC1kaXZpZGVyczogcmdiYSh3aGl0ZSwgMC4xMik7XG4kbGlnaHQtZm9jdXNlZDogcmdiYSh3aGl0ZSwgMC4xMik7XG5cbiRtYXQtcmVkOiAoXG4gIDUwOiAjZmZlYmVlLFxuICAxMDA6ICNmZmNkZDIsXG4gIDIwMDogI2VmOWE5YSxcbiAgMzAwOiAjZTU3MzczLFxuICA0MDA6ICNlZjUzNTAsXG4gIDUwMDogI2Y0NDMzNixcbiAgNjAwOiAjZTUzOTM1LFxuICA3MDA6ICNkMzJmMmYsXG4gIDgwMDogI2M2MjgyOCxcbiAgOTAwOiAjYjcxYzFjLFxuICBBMTAwOiAjZmY4YTgwLFxuICBBMjAwOiAjZmY1MjUyLFxuICBBNDAwOiAjZmYxNzQ0LFxuICBBNzAwOiAjZDUwMDAwLFxuICBjb250cmFzdDogKFxuICAgIDUwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMTAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMjAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMzAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgNDAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgNTAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDYwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA3MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgODAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDkwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICBBMTAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgQTIwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICBBNDAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIEE3MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gIClcbik7XG5cbiRtYXQtcGluazogKFxuICA1MDogI2ZjZTRlYyxcbiAgMTAwOiAjZjhiYmQwLFxuICAyMDA6ICNmNDhmYjEsXG4gIDMwMDogI2YwNjI5MixcbiAgNDAwOiAjZWM0MDdhLFxuICA1MDA6ICNlOTFlNjMsXG4gIDYwMDogI2Q4MWI2MCxcbiAgNzAwOiAjYzIxODViLFxuICA4MDA6ICNhZDE0NTcsXG4gIDkwMDogIzg4MGU0ZixcbiAgQTEwMDogI2ZmODBhYixcbiAgQTIwMDogI2ZmNDA4MSxcbiAgQTQwMDogI2Y1MDA1NyxcbiAgQTcwMDogI2M1MTE2MixcbiAgY29udHJhc3Q6IChcbiAgICA1MDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDEwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDIwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDMwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDQwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDUwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA2MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgNzAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDgwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA5MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgQTEwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIEEyMDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgQTQwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICBBNzAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICApXG4pO1xuXG4kbWF0LXB1cnBsZTogKFxuICA1MDogI2YzZTVmNSxcbiAgMTAwOiAjZTFiZWU3LFxuICAyMDA6ICNjZTkzZDgsXG4gIDMwMDogI2JhNjhjOCxcbiAgNDAwOiAjYWI0N2JjLFxuICA1MDA6ICM5YzI3YjAsXG4gIDYwMDogIzhlMjRhYSxcbiAgNzAwOiAjN2IxZmEyLFxuICA4MDA6ICM2YTFiOWEsXG4gIDkwMDogIzRhMTQ4YyxcbiAgQTEwMDogI2VhODBmYyxcbiAgQTIwMDogI2UwNDBmYixcbiAgQTQwMDogI2Q1MDBmOSxcbiAgQTcwMDogI2FhMDBmZixcbiAgY29udHJhc3Q6IChcbiAgICA1MDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDEwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDIwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDMwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA0MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgNTAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDYwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA3MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgODAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDkwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICBBMTAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgQTIwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICBBNDAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIEE3MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gIClcbik7XG5cbiRtYXQtZGVlcC1wdXJwbGU6IChcbiAgNTA6ICNlZGU3ZjYsXG4gIDEwMDogI2QxYzRlOSxcbiAgMjAwOiAjYjM5ZGRiLFxuICAzMDA6ICM5NTc1Y2QsXG4gIDQwMDogIzdlNTdjMixcbiAgNTAwOiAjNjczYWI3LFxuICA2MDA6ICM1ZTM1YjEsXG4gIDcwMDogIzUxMmRhOCxcbiAgODAwOiAjNDUyN2EwLFxuICA5MDA6ICMzMTFiOTIsXG4gIEExMDA6ICNiMzg4ZmYsXG4gIEEyMDA6ICM3YzRkZmYsXG4gIEE0MDA6ICM2NTFmZmYsXG4gIEE3MDA6ICM2MjAwZWEsXG4gIGNvbnRyYXN0OiAoXG4gICAgNTA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAxMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAyMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAzMDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgNDAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDUwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA2MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgNzAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDgwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA5MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgQTEwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIEEyMDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgQTQwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICBBNzAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICApXG4pO1xuXG4kbWF0LWluZGlnbzogKFxuICA1MDogI2U4ZWFmNixcbiAgMTAwOiAjYzVjYWU5LFxuICAyMDA6ICM5ZmE4ZGEsXG4gIDMwMDogIzc5ODZjYixcbiAgNDAwOiAjNWM2YmMwLFxuICA1MDA6ICMzZjUxYjUsXG4gIDYwMDogIzM5NDlhYixcbiAgNzAwOiAjMzAzZjlmLFxuICA4MDA6ICMyODM1OTMsXG4gIDkwMDogIzFhMjM3ZSxcbiAgQTEwMDogIzhjOWVmZixcbiAgQTIwMDogIzUzNmRmZSxcbiAgQTQwMDogIzNkNWFmZSxcbiAgQTcwMDogIzMwNGZmZSxcbiAgY29udHJhc3Q6IChcbiAgICA1MDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDEwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDIwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDMwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA0MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgNTAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDYwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA3MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgODAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDkwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICBBMTAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgQTIwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICBBNDAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIEE3MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gIClcbik7XG5cbiRtYXQtYmx1ZTogKFxuICA1MDogI2UzZjJmZCxcbiAgMTAwOiAjYmJkZWZiLFxuICAyMDA6ICM5MGNhZjksXG4gIDMwMDogIzY0YjVmNixcbiAgNDAwOiAjNDJhNWY1LFxuICA1MDA6ICMyMTk2ZjMsXG4gIDYwMDogIzFlODhlNSxcbiAgNzAwOiAjMTk3NmQyLFxuICA4MDA6ICMxNTY1YzAsXG4gIDkwMDogIzBkNDdhMSxcbiAgQTEwMDogIzgyYjFmZixcbiAgQTIwMDogIzQ0OGFmZixcbiAgQTQwMDogIzI5NzlmZixcbiAgQTcwMDogIzI5NjJmZixcbiAgY29udHJhc3Q6IChcbiAgICA1MDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDEwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDIwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDMwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDQwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDUwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA2MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgNzAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDgwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA5MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgQTEwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIEEyMDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgQTQwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICBBNzAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICApXG4pO1xuXG4kbWF0LWxpZ2h0LWJsdWU6IChcbiAgNTA6ICNlMWY1ZmUsXG4gIDEwMDogI2IzZTVmYyxcbiAgMjAwOiAjODFkNGZhLFxuICAzMDA6ICM0ZmMzZjcsXG4gIDQwMDogIzI5YjZmNixcbiAgNTAwOiAjMDNhOWY0LFxuICA2MDA6ICMwMzliZTUsXG4gIDcwMDogIzAyODhkMSxcbiAgODAwOiAjMDI3N2JkLFxuICA5MDA6ICMwMTU3OWIsXG4gIEExMDA6ICM4MGQ4ZmYsXG4gIEEyMDA6ICM0MGM0ZmYsXG4gIEE0MDA6ICMwMGIwZmYsXG4gIEE3MDA6ICMwMDkxZWEsXG4gIGNvbnRyYXN0OiAoXG4gICAgNTA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAxMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAyMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAzMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA0MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA1MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgNjAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDcwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA4MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgOTAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIEExMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICBBMjAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgQTQwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIEE3MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gIClcbik7XG5cbiRtYXQtY3lhbjogKFxuICA1MDogI2UwZjdmYSxcbiAgMTAwOiAjYjJlYmYyLFxuICAyMDA6ICM4MGRlZWEsXG4gIDMwMDogIzRkZDBlMSxcbiAgNDAwOiAjMjZjNmRhLFxuICA1MDA6ICMwMGJjZDQsXG4gIDYwMDogIzAwYWNjMSxcbiAgNzAwOiAjMDA5N2E3LFxuICA4MDA6ICMwMDgzOGYsXG4gIDkwMDogIzAwNjA2NCxcbiAgQTEwMDogIzg0ZmZmZixcbiAgQTIwMDogIzE4ZmZmZixcbiAgQTQwMDogIzAwZTVmZixcbiAgQTcwMDogIzAwYjhkNCxcbiAgY29udHJhc3Q6IChcbiAgICA1MDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDEwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDIwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDMwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDQwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDUwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA2MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgNzAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDgwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA5MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgQTEwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIEEyMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICBBNDAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgQTcwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICApXG4pO1xuXG4kbWF0LXRlYWw6IChcbiAgNTA6ICNlMGYyZjEsXG4gIDEwMDogI2IyZGZkYixcbiAgMjAwOiAjODBjYmM0LFxuICAzMDA6ICM0ZGI2YWMsXG4gIDQwMDogIzI2YTY5YSxcbiAgNTAwOiAjMDA5Njg4LFxuICA2MDA6ICMwMDg5N2IsXG4gIDcwMDogIzAwNzk2YixcbiAgODAwOiAjMDA2OTVjLFxuICA5MDA6ICMwMDRkNDAsXG4gIEExMDA6ICNhN2ZmZWIsXG4gIEEyMDA6ICM2NGZmZGEsXG4gIEE0MDA6ICMxZGU5YjYsXG4gIEE3MDA6ICMwMGJmYTUsXG4gIGNvbnRyYXN0OiAoXG4gICAgNTA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAxMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAyMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAzMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA0MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA1MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgNjAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDcwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA4MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgOTAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIEExMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICBBMjAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgQTQwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIEE3MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgKVxuKTtcblxuJG1hdC1ncmVlbjogKFxuICA1MDogI2U4ZjVlOSxcbiAgMTAwOiAjYzhlNmM5LFxuICAyMDA6ICNhNWQ2YTcsXG4gIDMwMDogIzgxYzc4NCxcbiAgNDAwOiAjNjZiYjZhLFxuICA1MDA6ICM0Y2FmNTAsXG4gIDYwMDogIzQzYTA0NyxcbiAgNzAwOiAjMzg4ZTNjLFxuICA4MDA6ICMyZTdkMzIsXG4gIDkwMDogIzFiNWUyMCxcbiAgQTEwMDogI2I5ZjZjYSxcbiAgQTIwMDogIzY5ZjBhZSxcbiAgQTQwMDogIzAwZTY3NixcbiAgQTcwMDogIzAwYzg1MyxcbiAgY29udHJhc3Q6IChcbiAgICA1MDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDEwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDIwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDMwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDQwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDUwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDYwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA3MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgODAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDkwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICBBMTAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgQTIwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIEE0MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICBBNzAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gIClcbik7XG5cbiRtYXQtbGlnaHQtZ3JlZW46IChcbiAgNTA6ICNmMWY4ZTksXG4gIDEwMDogI2RjZWRjOCxcbiAgMjAwOiAjYzVlMWE1LFxuICAzMDA6ICNhZWQ1ODEsXG4gIDQwMDogIzljY2M2NSxcbiAgNTAwOiAjOGJjMzRhLFxuICA2MDA6ICM3Y2IzNDIsXG4gIDcwMDogIzY4OWYzOCxcbiAgODAwOiAjNTU4YjJmLFxuICA5MDA6ICMzMzY5MWUsXG4gIEExMDA6ICNjY2ZmOTAsXG4gIEEyMDA6ICNiMmZmNTksXG4gIEE0MDA6ICM3NmZmMDMsXG4gIEE3MDA6ICM2NGRkMTcsXG4gIGNvbnRyYXN0OiAoXG4gICAgNTA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAxMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAyMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAzMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA0MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA1MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA2MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA3MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgODAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDkwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICBBMTAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgQTIwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIEE0MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICBBNzAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gIClcbik7XG5cbiRtYXQtbGltZTogKFxuICA1MDogI2Y5ZmJlNyxcbiAgMTAwOiAjZjBmNGMzLFxuICAyMDA6ICNlNmVlOWMsXG4gIDMwMDogI2RjZTc3NSxcbiAgNDAwOiAjZDRlMTU3LFxuICA1MDA6ICNjZGRjMzksXG4gIDYwMDogI2MwY2EzMyxcbiAgNzAwOiAjYWZiNDJiLFxuICA4MDA6ICM5ZTlkMjQsXG4gIDkwMDogIzgyNzcxNyxcbiAgQTEwMDogI2Y0ZmY4MSxcbiAgQTIwMDogI2VlZmY0MSxcbiAgQTQwMDogI2M2ZmYwMCxcbiAgQTcwMDogI2FlZWEwMCxcbiAgY29udHJhc3Q6IChcbiAgICA1MDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDEwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDIwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDMwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDQwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDUwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDYwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDcwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDgwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDkwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICBBMTAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgQTIwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIEE0MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICBBNzAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gIClcbik7XG5cbiRtYXQteWVsbG93OiAoXG4gIDUwOiAjZmZmZGU3LFxuICAxMDA6ICNmZmY5YzQsXG4gIDIwMDogI2ZmZjU5ZCxcbiAgMzAwOiAjZmZmMTc2LFxuICA0MDA6ICNmZmVlNTgsXG4gIDUwMDogI2ZmZWIzYixcbiAgNjAwOiAjZmRkODM1LFxuICA3MDA6ICNmYmMwMmQsXG4gIDgwMDogI2Y5YTgyNSxcbiAgOTAwOiAjZjU3ZjE3LFxuICBBMTAwOiAjZmZmZjhkLFxuICBBMjAwOiAjZmZmZjAwLFxuICBBNDAwOiAjZmZlYTAwLFxuICBBNzAwOiAjZmZkNjAwLFxuICBjb250cmFzdDogKFxuICAgIDUwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMTAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMjAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMzAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgNDAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgNTAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgNjAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgNzAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgODAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgOTAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgQTEwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIEEyMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICBBNDAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgQTcwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICApXG4pO1xuXG4kbWF0LWFtYmVyOiAoXG4gIDUwOiAjZmZmOGUxLFxuICAxMDA6ICNmZmVjYjMsXG4gIDIwMDogI2ZmZTA4MixcbiAgMzAwOiAjZmZkNTRmLFxuICA0MDA6ICNmZmNhMjgsXG4gIDUwMDogI2ZmYzEwNyxcbiAgNjAwOiAjZmZiMzAwLFxuICA3MDA6ICNmZmEwMDAsXG4gIDgwMDogI2ZmOGYwMCxcbiAgOTAwOiAjZmY2ZjAwLFxuICBBMTAwOiAjZmZlNTdmLFxuICBBMjAwOiAjZmZkNzQwLFxuICBBNDAwOiAjZmZjNDAwLFxuICBBNzAwOiAjZmZhYjAwLFxuICBjb250cmFzdDogKFxuICAgIDUwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMTAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMjAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMzAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgNDAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgNTAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgNjAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgNzAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgODAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgOTAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgQTEwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIEEyMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICBBNDAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgQTcwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICApXG4pO1xuXG4kbWF0LW9yYW5nZTogKFxuICA1MDogI2ZmZjNlMCxcbiAgMTAwOiAjZmZlMGIyLFxuICAyMDA6ICNmZmNjODAsXG4gIDMwMDogI2ZmYjc0ZCxcbiAgNDAwOiAjZmZhNzI2LFxuICA1MDA6ICNmZjk4MDAsXG4gIDYwMDogI2ZiOGMwMCxcbiAgNzAwOiAjZjU3YzAwLFxuICA4MDA6ICNlZjZjMDAsXG4gIDkwMDogI2U2NTEwMCxcbiAgQTEwMDogI2ZmZDE4MCxcbiAgQTIwMDogI2ZmYWI0MCxcbiAgQTQwMDogI2ZmOTEwMCxcbiAgQTcwMDogI2ZmNmQwMCxcbiAgY29udHJhc3Q6IChcbiAgICA1MDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDEwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDIwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDMwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDQwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDUwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDYwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDcwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDgwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA5MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgQTEwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIEEyMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICBBNDAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgQTcwMDogYmxhY2ssXG4gIClcbik7XG5cbiRtYXQtZGVlcC1vcmFuZ2U6IChcbiAgNTA6ICNmYmU5ZTcsXG4gIDEwMDogI2ZmY2NiYyxcbiAgMjAwOiAjZmZhYjkxLFxuICAzMDA6ICNmZjhhNjUsXG4gIDQwMDogI2ZmNzA0MyxcbiAgNTAwOiAjZmY1NzIyLFxuICA2MDA6ICNmNDUxMWUsXG4gIDcwMDogI2U2NGExOSxcbiAgODAwOiAjZDg0MzE1LFxuICA5MDA6ICNiZjM2MGMsXG4gIEExMDA6ICNmZjllODAsXG4gIEEyMDA6ICNmZjZlNDAsXG4gIEE0MDA6ICNmZjNkMDAsXG4gIEE3MDA6ICNkZDJjMDAsXG4gIGNvbnRyYXN0OiAoXG4gICAgNTA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAxMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAyMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAzMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA0MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA1MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgNjAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDcwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA4MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgOTAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIEExMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICBBMjAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgQTQwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICBBNzAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICApXG4pO1xuXG4kbWF0LWJyb3duOiAoXG4gIDUwOiAjZWZlYmU5LFxuICAxMDA6ICNkN2NjYzgsXG4gIDIwMDogI2JjYWFhNCxcbiAgMzAwOiAjYTE4ODdmLFxuICA0MDA6ICM4ZDZlNjMsXG4gIDUwMDogIzc5NTU0OCxcbiAgNjAwOiAjNmQ0YzQxLFxuICA3MDA6ICM1ZDQwMzcsXG4gIDgwMDogIzRlMzQyZSxcbiAgOTAwOiAjM2UyNzIzLFxuICBBMTAwOiAjZDdjY2M4LFxuICBBMjAwOiAjYmNhYWE0LFxuICBBNDAwOiAjOGQ2ZTYzLFxuICBBNzAwOiAjNWQ0MDM3LFxuICBjb250cmFzdDogKFxuICAgIDUwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMTAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMjAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMzAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDQwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA1MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgNjAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDcwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA4MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgOTAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIEExMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICBBMjAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgQTQwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICBBNzAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICApXG4pO1xuXG4kbWF0LWdyZXk6IChcbiAgNTA6ICNmYWZhZmEsXG4gIDEwMDogI2Y1ZjVmNSxcbiAgMjAwOiAjZWVlZWVlLFxuICAzMDA6ICNlMGUwZTAsXG4gIDQwMDogI2JkYmRiZCxcbiAgNTAwOiAjOWU5ZTllLFxuICA2MDA6ICM3NTc1NzUsXG4gIDcwMDogIzYxNjE2MSxcbiAgODAwOiAjNDI0MjQyLFxuICA5MDA6ICMyMTIxMjEsXG4gIEExMDA6ICNmZmZmZmYsXG4gIEEyMDA6ICNlZWVlZWUsXG4gIEE0MDA6ICNiZGJkYmQsXG4gIEE3MDA6ICM2MTYxNjEsXG4gIGNvbnRyYXN0OiAoXG4gICAgNTA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAxMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAyMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAzMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA0MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA1MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA2MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgNzAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDgwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA5MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgQTEwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIEEyMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICBBNDAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgQTcwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgKVxuKTtcblxuLy8gQWxpYXMgZm9yIGFsdGVybmF0ZSBzcGVsbGluZy5cbiRtYXQtZ3JheTogJG1hdC1ncmV5O1xuXG4kbWF0LWJsdWUtZ3JleTogKFxuICA1MDogI2VjZWZmMSxcbiAgMTAwOiAjY2ZkOGRjLFxuICAyMDA6ICNiMGJlYzUsXG4gIDMwMDogIzkwYTRhZSxcbiAgNDAwOiAjNzg5MDljLFxuICA1MDA6ICM2MDdkOGIsXG4gIDYwMDogIzU0NmU3YSxcbiAgNzAwOiAjNDU1YTY0LFxuICA4MDA6ICMzNzQ3NGYsXG4gIDkwMDogIzI2MzIzOCxcbiAgQTEwMDogI2NmZDhkYyxcbiAgQTIwMDogI2IwYmVjNSxcbiAgQTQwMDogIzc4OTA5YyxcbiAgQTcwMDogIzQ1NWE2NCxcbiAgY29udHJhc3Q6IChcbiAgICA1MDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDEwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDIwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDMwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDQwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA1MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgNjAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDcwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA4MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgOTAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIEExMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICBBMjAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgQTQwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICBBNzAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICApXG4pO1xuXG4vLyBBbGlhcyBmb3IgYWx0ZXJuYXRlIHNwZWxsaW5nLlxuJG1hdC1ibHVlLWdyYXk6ICRtYXQtYmx1ZS1ncmV5O1xuXG5cbi8vIEJhY2tncm91bmQgcGFsZXR0ZSBmb3IgbGlnaHQgdGhlbWVzLlxuJG1hdC1saWdodC10aGVtZS1iYWNrZ3JvdW5kOiAoXG4gIHN0YXR1cy1iYXI6IG1hcC1nZXQoJG1hdC1ncmV5LCAzMDApLFxuICBhcHAtYmFyOiAgICBtYXAtZ2V0KCRtYXQtZ3JleSwgMTAwKSxcbiAgYmFja2dyb3VuZDogbWFwLWdldCgkbWF0LWdyZXksIDUwKSxcbiAgaG92ZXI6ICAgICAgcmdiYShibGFjaywgMC4wNCksIC8vIFRPRE8oa2FyYSk6IGNoZWNrIHN0eWxlIHdpdGggTWF0ZXJpYWwgRGVzaWduIFVYXG4gIGNhcmQ6ICAgICAgIHdoaXRlLFxuICBkaWFsb2c6ICAgICB3aGl0ZSxcbiAgZGlzYWJsZWQtYnV0dG9uOiByZ2JhKGJsYWNrLCAwLjEyKSxcbiAgcmFpc2VkLWJ1dHRvbjogd2hpdGUsXG4gIGZvY3VzZWQtYnV0dG9uOiAkZGFyay1mb2N1c2VkLFxuICBzZWxlY3RlZC1idXR0b246IG1hcC1nZXQoJG1hdC1ncmV5LCAzMDApLFxuICBzZWxlY3RlZC1kaXNhYmxlZC1idXR0b246IG1hcC1nZXQoJG1hdC1ncmV5LCA0MDApLFxuICBkaXNhYmxlZC1idXR0b24tdG9nZ2xlOiBtYXAtZ2V0KCRtYXQtZ3JleSwgMjAwKSxcbiAgdW5zZWxlY3RlZC1jaGlwOiBtYXAtZ2V0KCRtYXQtZ3JleSwgMzAwKSxcbiAgZGlzYWJsZWQtbGlzdC1vcHRpb246IG1hcC1nZXQoJG1hdC1ncmV5LCAyMDApLFxuICB0b29sdGlwOiBtYXAtZ2V0KCRtYXQtZ3JleSwgNzAwKSxcbik7XG5cbi8vIEJhY2tncm91bmQgcGFsZXR0ZSBmb3IgZGFyayB0aGVtZXMuXG4kbWF0LWRhcmstdGhlbWUtYmFja2dyb3VuZDogKFxuICBzdGF0dXMtYmFyOiBibGFjayxcbiAgYXBwLWJhcjogICAgbWFwLWdldCgkbWF0LWdyZXksIDkwMCksXG4gIGJhY2tncm91bmQ6ICMzMDMwMzAsXG4gIGhvdmVyOiAgICAgIHJnYmEod2hpdGUsIDAuMDQpLCAvLyBUT0RPKGthcmEpOiBjaGVjayBzdHlsZSB3aXRoIE1hdGVyaWFsIERlc2lnbiBVWFxuICBjYXJkOiAgICAgICBtYXAtZ2V0KCRtYXQtZ3JleSwgODAwKSxcbiAgZGlhbG9nOiAgICAgbWFwLWdldCgkbWF0LWdyZXksIDgwMCksXG4gIGRpc2FibGVkLWJ1dHRvbjogcmdiYSh3aGl0ZSwgMC4xMiksXG4gIHJhaXNlZC1idXR0b246IG1hcC1nZXQoJG1hdC1ncmV5LCA4MDApLFxuICBmb2N1c2VkLWJ1dHRvbjogJGxpZ2h0LWZvY3VzZWQsXG4gIHNlbGVjdGVkLWJ1dHRvbjogbWFwLWdldCgkbWF0LWdyZXksIDkwMCksXG4gIHNlbGVjdGVkLWRpc2FibGVkLWJ1dHRvbjogbWFwLWdldCgkbWF0LWdyZXksIDgwMCksXG4gIGRpc2FibGVkLWJ1dHRvbi10b2dnbGU6IGJsYWNrLFxuICB1bnNlbGVjdGVkLWNoaXA6IG1hcC1nZXQoJG1hdC1ncmV5LCA3MDApLFxuICBkaXNhYmxlZC1saXN0LW9wdGlvbjogYmxhY2ssXG4gIHRvb2x0aXA6IG1hcC1nZXQoJG1hdC1ncmV5LCA3MDApLFxuKTtcblxuLy8gRm9yZWdyb3VuZCBwYWxldHRlIGZvciBsaWdodCB0aGVtZXMuXG4kbWF0LWxpZ2h0LXRoZW1lLWZvcmVncm91bmQ6IChcbiAgYmFzZTogICAgICAgICAgICAgIGJsYWNrLFxuICBkaXZpZGVyOiAgICAgICAgICAgJGRhcmstZGl2aWRlcnMsXG4gIGRpdmlkZXJzOiAgICAgICAgICAkZGFyay1kaXZpZGVycyxcbiAgZGlzYWJsZWQ6ICAgICAgICAgICRkYXJrLWRpc2FibGVkLXRleHQsXG4gIGRpc2FibGVkLWJ1dHRvbjogICByZ2JhKGJsYWNrLCAwLjI2KSxcbiAgZGlzYWJsZWQtdGV4dDogICAgICRkYXJrLWRpc2FibGVkLXRleHQsXG4gIGVsZXZhdGlvbjogICAgICAgICBibGFjayxcbiAgaGludC10ZXh0OiAgICAgICAgICRkYXJrLWRpc2FibGVkLXRleHQsXG4gIHNlY29uZGFyeS10ZXh0OiAgICAkZGFyay1zZWNvbmRhcnktdGV4dCxcbiAgaWNvbjogICAgICAgICAgICAgIHJnYmEoYmxhY2ssIDAuNTQpLFxuICBpY29uczogICAgICAgICAgICAgcmdiYShibGFjaywgMC41NCksXG4gIHRleHQ6ICAgICAgICAgICAgICByZ2JhKGJsYWNrLCAwLjg3KSxcbiAgc2xpZGVyLW1pbjogICAgICAgIHJnYmEoYmxhY2ssIDAuODcpLFxuICBzbGlkZXItb2ZmOiAgICAgICAgcmdiYShibGFjaywgMC4yNiksXG4gIHNsaWRlci1vZmYtYWN0aXZlOiByZ2JhKGJsYWNrLCAwLjM4KSxcbik7XG5cbi8vIEZvcmVncm91bmQgcGFsZXR0ZSBmb3IgZGFyayB0aGVtZXMuXG4kbWF0LWRhcmstdGhlbWUtZm9yZWdyb3VuZDogKFxuICBiYXNlOiAgICAgICAgICAgICAgd2hpdGUsXG4gIGRpdmlkZXI6ICAgICAgICAgICAkbGlnaHQtZGl2aWRlcnMsXG4gIGRpdmlkZXJzOiAgICAgICAgICAkbGlnaHQtZGl2aWRlcnMsXG4gIGRpc2FibGVkOiAgICAgICAgICAkbGlnaHQtZGlzYWJsZWQtdGV4dCxcbiAgZGlzYWJsZWQtYnV0dG9uOiAgIHJnYmEod2hpdGUsIDAuMyksXG4gIGRpc2FibGVkLXRleHQ6ICAgICAkbGlnaHQtZGlzYWJsZWQtdGV4dCxcbiAgZWxldmF0aW9uOiAgICAgICAgIGJsYWNrLFxuICBoaW50LXRleHQ6ICAgICAgICAgJGxpZ2h0LWRpc2FibGVkLXRleHQsXG4gIHNlY29uZGFyeS10ZXh0OiAgICAkbGlnaHQtc2Vjb25kYXJ5LXRleHQsXG4gIGljb246ICAgICAgICAgICAgICB3aGl0ZSxcbiAgaWNvbnM6ICAgICAgICAgICAgIHdoaXRlLFxuICB0ZXh0OiAgICAgICAgICAgICAgd2hpdGUsXG4gIHNsaWRlci1taW46ICAgICAgICB3aGl0ZSxcbiAgc2xpZGVyLW9mZjogICAgICAgIHJnYmEod2hpdGUsIDAuMyksXG4gIHNsaWRlci1vZmYtYWN0aXZlOiByZ2JhKHdoaXRlLCAwLjMpLFxuKTtcblxuLy8gTm90ZSB0aGF0IHRoaXMgZmlsZSBpcyBjYWxsZWQgYHByaXZhdGVgLCBiZWNhdXNlIHRoZSBBUElzIGluIGl0IGFyZW4ndCBwdWJsaWMgeWV0LlxuLy8gT25jZSB0aGV5J3JlIG1hZGUgYXZhaWxhYmxlLCB0aGUgY29kZSBzaG91bGQgYmUgbW92ZWQgb3V0IGludG8gYW4gYGluZGV4LnNjc3NgLlxuXG4vLyBUYWtlbiBmcm9tIG1hdC1kZW5zaXR5IHdpdGggc21hbGwgbW9kaWZpY2F0aW9ucyB0byBub3QgcmVseSBvbiB0aGUgbmV3IFNhc3MgbW9kdWxlXG4vLyBzeXN0ZW0sIGFuZCB0byBzdXBwb3J0IGFyYml0cmFyeSBwcm9wZXJ0aWVzIGluIGEgZGVuc2l0eSBjb25maWd1cmF0aW9uLlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL21hdGVyaWFsLWNvbXBvbmVudHMvbWF0ZXJpYWwtY29tcG9uZW50cy13ZWIvYmxvYi9tYXN0ZXIvcGFja2FnZXMvbWRjLWRlbnNpdHlcblxuJF9tYXQtZGVuc2l0eS1pbnRlcnZhbDogNHB4ICFkZWZhdWx0O1xuJF9tYXQtZGVuc2l0eS1taW5pbXVtLXNjYWxlOiBtaW5pbXVtICFkZWZhdWx0O1xuJF9tYXQtZGVuc2l0eS1tYXhpbXVtLXNjYWxlOiBtYXhpbXVtICFkZWZhdWx0O1xuJF9tYXQtZGVuc2l0eS1zdXBwb3J0ZWQtc2NhbGVzOiAoZGVmYXVsdCwgbWluaW11bSwgbWF4aW11bSkgIWRlZmF1bHQ7XG4kX21hdC1kZW5zaXR5LWRlZmF1bHQtc2NhbGU6IDAgIWRlZmF1bHQ7XG5cbi8vIFdoZXRoZXIgZGVuc2l0eSBzaG91bGQgYmUgZ2VuZXJhdGVkIGF0IHJvb3QuIFRoaXMgd2lsbCBiZSB0ZW1wb3JhcmlseSBzZXQgdG8gYHRydWVgXG4vLyB3aGVuZXZlciBkZW5zaXR5IHN0eWxlcyBmb3IgbGVnYWN5IHRoZW1lcyBhcmUgZ2VuZXJhdGVkLlxuJG1hdC1wcml2YXRlLWRlbnNpdHktZ2VuZXJhdGUtYXQtcm9vdDogZmFsc2U7XG4vLyBXaGV0aGVyIGRlbnNpdHkgc3R5bGVzIHNob3VsZCBiZSBnZW5lcmF0ZWQuIFRoaXMgd2lsbCBiZSB0ZW1wb3JhcmlseSBzZXQgdG8gYGZhbHNlYCBpZlxuLy8gZHVwbGljYXRlIGRlbnNpdHkgc3R5bGVzIGZvciBhIGxlZ2FjeSB0aGVtZSB3b3VsZCBiZSBnZW5lcmF0ZWQuIEZvciBsZWdhY3kgdGhlbWVzLFxuLy8gd2UgYWx3YXlzIGdlbmVyYXRlIHRoZSBkZWZhdWx0IGRlbnNpdHkgKipvbmx5IG9uY2UqKiBhdCByb290LlxuJG1hdC1wcml2YXRlLWRlbnNpdHktZ2VuZXJhdGUtc3R5bGVzOiB0cnVlO1xuXG4vLyBNaXhpbiB0aGF0IGNhbiBiZSB1c2VkIHRvIHdyYXAgZGVuc2l0eSBzdHlsZXMgb2YgZ2l2ZW4gY29tcG9uZW50cy4gVGhlIG1peGluIHdpbGxcbi8vIG1vdmUgdGhlIGRlbnNpdHkgc3R5bGVzIHRvIHJvb3QgaWYgdGhlIGAkbWF0LXByaXZhdGUtZGVuc2l0eS1nZW5lcmF0ZS1hdC1yb290YCBnbG9iYWwgdmFyaWFibGVcbi8vIGlzIHNldC4gSWYgYCRtYXQtcHJpdmF0ZS1kZW5zaXR5LWdlbmVyYXRlLXN0eWxlc2AgaXMgc2V0IHRvIGBmYWxzZWAsIGdlbmVyYXRpb24gb2YgZGVuc2l0eVxuLy8gc3R5bGVzIHdyYXBwZWQgaW4gdGhpcyBtaXhpbiBpcyBza2lwcGVkLiBUaGlzIG1peGluIGV4aXN0cyB0byBpbXByb3ZlIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5XG4vLyBvZiB0aGUgbmV3IHRoZW1pbmcgQVBJIHdoZXJlIGRlbnNpdHkgc3R5bGVzIGFyZSBpbmNsdWRlZCBhcyBwYXJ0IG9mIHRoZW1lcy4gUHJldmlvdXNseSxcbi8vIGRlbnNpdHkgc3R5bGVzIG9mIGNvbXBvbmVudHMgd2VyZSBwYXJ0IG9mIHRoZWlyIGJhc2Ugc3R5bGVzLiBXaXRoIHRoZSBuZXcgQVBJLCB0aGV5IGFyZVxuLy8gcGFydCBvZiB0aGUgdGhlbWluZyBzeXN0ZW0uIFRoZSBgPC4uPi10aGVtZWAgbWl4aW5zIGdlbmVyYXRlIGRlbnNpdHkgYnkgZGVmYXVsdCB1bmxlc3Ncbi8vIHRoZSBkZW5zaXR5IGNvbmZpZ3VyYXRpb24gaXMgZXhwbGljaXRseSBzcGVjaWZpZWQgYXMgcGVyIG5ldyBBUEkuIFRoaXMgbWVhbnMsIHRoYXQgcHJvamVjdHNcbi8vIHVzaW5nIGA8Li4+LXRoZW1lYCBtaXhpbnMgZm9yIHNlcGFyYXRlIHRoZW1lcyAobGlrZSBgLmRhcmstdGhlbWVgKSB3aWxsIGNhdXNlIGR1cGxpY2F0ZVxuLy8gZGVuc2l0eSBzdHlsZXMuIFRoaXMgaXMgYnJlYWtpbmcgYXMgaXQgaW5jcmVhc2VzIHNwZWNpZmljaXR5IG9mIGRlbnNpdHkgc3R5bGVzLiBUaGlzIG1peGluXG4vLyBwcm92aWRlcyBhbiBBUEkgdG8gY29udHJvbCBnZW5lcmF0aW9uIG9mIGRlbnNpdHkgc3R5bGVzIHNvIHRoYXQgd2UgY2FuIGVuc3VyZSB0aGV5IGFyZSBvbmx5XG4vLyBjcmVhdGVkICpvbmNlKiBhbmQgYXQgcm9vdC5cbkBtaXhpbiBtYXQtcHJpdmF0ZS1kZW5zaXR5LWxlZ2FjeS1jb21wYXRpYmlsaXR5KCkge1xuICBAaWYgJG1hdC1wcml2YXRlLWRlbnNpdHktZ2VuZXJhdGUtc3R5bGVzIGFuZCAkbWF0LXByaXZhdGUtZGVuc2l0eS1nZW5lcmF0ZS1hdC1yb290IHtcbiAgICBAYXQtcm9vdCB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbiAgQGVsc2UgaWYgJG1hdC1wcml2YXRlLWRlbnNpdHktZ2VuZXJhdGUtc3R5bGVzIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG5AZnVuY3Rpb24gbWF0LXByaXZhdGUtZGVuc2l0eS1wcm9wLXZhbHVlKCRkZW5zaXR5LWNvbmZpZywgJGRlbnNpdHktc2NhbGUsICRwcm9wZXJ0eS1uYW1lKSB7XG4gIEBpZiAodHlwZS1vZigkZGVuc2l0eS1zY2FsZSkgPT0gJ3N0cmluZycgYW5kXG4gICAgICBpbmRleCgkbGlzdDogJF9tYXQtZGVuc2l0eS1zdXBwb3J0ZWQtc2NhbGVzLCAkdmFsdWU6ICRkZW5zaXR5LXNjYWxlKSA9PSBudWxsKSB7XG4gICAgQGVycm9yICdtYXQtZGVuc2l0eTogU3VwcG9ydGVkIGRlbnNpdHkgc2NhbGVzICN7JF9tYXQtZGVuc2l0eS1zdXBwb3J0ZWQtc2NhbGVzfSwgJyAgK1xuICAgICAgJ2J1dCByZWNlaXZlZCAjeyRkZW5zaXR5LXNjYWxlfS4nO1xuICB9XG5cbiAgJHZhbHVlOiBudWxsO1xuICAkcHJvcGVydHktc2NhbGUtbWFwOiBtYXAtZ2V0KCRkZW5zaXR5LWNvbmZpZywgJHByb3BlcnR5LW5hbWUpO1xuXG4gIEBpZiBtYXAtaGFzLWtleSgkcHJvcGVydHktc2NhbGUtbWFwLCAkZGVuc2l0eS1zY2FsZSkge1xuICAgICR2YWx1ZTogbWFwLWdldCgkcHJvcGVydHktc2NhbGUtbWFwLCAkZGVuc2l0eS1zY2FsZSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgICR2YWx1ZTogbWFwLWdldCgkcHJvcGVydHktc2NhbGUtbWFwLCBkZWZhdWx0KSArICRkZW5zaXR5LXNjYWxlICogJF9tYXQtZGVuc2l0eS1pbnRlcnZhbDtcbiAgfVxuXG4gICRtaW4tdmFsdWU6IG1hcC1nZXQoJHByb3BlcnR5LXNjYWxlLW1hcCwgJF9tYXQtZGVuc2l0eS1taW5pbXVtLXNjYWxlKTtcbiAgJG1heC12YWx1ZTogbWFwLWdldCgkcHJvcGVydHktc2NhbGUtbWFwLCAkX21hdC1kZW5zaXR5LW1heGltdW0tc2NhbGUpO1xuXG4gIEBpZiAoJHZhbHVlIDwgJG1pbi12YWx1ZSBvciAkdmFsdWUgPiAkbWF4LXZhbHVlKSB7XG4gICAgQGVycm9yICdtYXQtZGVuc2l0eTogI3skcHJvcGVydHktbmFtZX0gbXVzdCBiZSBiZXR3ZWVuICN7JG1pbi12YWx1ZX0gYW5kICcgK1xuICAgICAgJyN7JG1heC12YWx1ZX0gKGluY2x1c2l2ZSksIGJ1dCByZWNlaXZlZCAjeyR2YWx1ZX0uJztcbiAgfVxuXG4gIEByZXR1cm4gJHZhbHVlO1xufVxuXG5cbi8vIFdoZXRoZXIgZHVwbGljYXRpb24gd2FybmluZ3Mgc2hvdWxkIGJlIGRpc2FibGVkLiBXYXJuaW5ncyBlbmFibGVkIGJ5IGRlZmF1bHQuXG4kbWF0LXRoZW1lLWlnbm9yZS1kdXBsaWNhdGlvbi13YXJuaW5nczogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFdoZXRoZXIgZGVuc2l0eSBzaG91bGQgYmUgZ2VuZXJhdGVkIGJ5IGRlZmF1bHQuXG4kX21hdC10aGVtZS1nZW5lcmF0ZS1kZWZhdWx0LWRlbnNpdHk6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFdhcm5pbmcgdGhhdCB3aWxsIGJlIHByaW50ZWQgaWYgZHVwbGljYXRlZCBzdHlsZXMgYXJlIGdlbmVyYXRlZCBieSBhIHRoZW1lLlxuJF9tYXQtdGhlbWUtZHVwbGljYXRlLXdhcm5pbmc6ICdSZWFkIG1vcmUgYWJvdXQgaG93IHN0eWxlIGR1cGxpY2F0aW9uIGNhbiBiZSBhdm9pZGVkIGluIGEgJyArXG4gICdkZWRpY2F0ZWQgZ3VpZGUuIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2NvbXBvbmVudHMvYmxvYi9tYXN0ZXIvZ3VpZGVzL2R1cGxpY2F0ZS10aGVtaW5nLXN0eWxlcy5tZCc7XG5cbi8vIFRoZXNlIHZhcmlhYmxlIGFyZSBub3QgaW50ZW5kZWQgdG8gYmUgb3ZlcnJpZGRlbiBleHRlcm5hbGx5LiBUaGV5IHVzZSBgIWRlZmF1bHRgIHRvXG4vLyBhdm9pZCBiZWluZyByZXNldCBldmVyeSB0aW1lIHRoaXMgZmlsZSBpcyBpbXBvcnRlZC5cbiRfbWF0LXRoZW1lLWVtaXR0ZWQtY29sb3I6ICgpICFkZWZhdWx0O1xuJF9tYXQtdGhlbWUtZW1pdHRlZC10eXBvZ3JhcGh5OiAoKSAhZGVmYXVsdDtcbiRfbWF0LXRoZW1lLWVtaXR0ZWQtZGVuc2l0eTogKCkgIWRlZmF1bHQ7XG5cbi8vIEZvciBhIGdpdmVuIGh1ZSBpbiBhIHBhbGV0dGUsIHJldHVybiB0aGUgY29udHJhc3QgY29sb3IgZnJvbSB0aGUgbWFwIG9mIGNvbnRyYXN0IHBhbGV0dGVzLlxuLy8gQHBhcmFtICRwYWxldHRlXG4vLyBAcGFyYW0gJGh1ZVxuQGZ1bmN0aW9uIG1hdC1jb250cmFzdCgkcGFsZXR0ZSwgJGh1ZSkge1xuICBAcmV0dXJuIG1hcC1nZXQobWFwLWdldCgkcGFsZXR0ZSwgY29udHJhc3QpLCAkaHVlKTtcbn1cblxuXG4vLyBDcmVhdGVzIGEgbWFwIG9mIGh1ZXMgdG8gY29sb3JzIGZvciBhIHRoZW1lLiBUaGlzIGlzIHVzZWQgdG8gZGVmaW5lIGEgdGhlbWUgcGFsZXR0ZSBpbiB0ZXJtc1xuLy8gb2YgdGhlIE1hdGVyaWFsIERlc2lnbiBodWVzLlxuLy8gQHBhcmFtICRiYXNlLXBhbGV0dGVcbi8vIEBwYXJhbSAkZGVmYXVsdFxuLy8gQHBhcmFtICRsaWdodGVyXG4vLyBAcGFyYW0gJGRhcmtlclxuLy8gQHBhcmFtICR0ZXh0XG5AZnVuY3Rpb24gbWF0LXBhbGV0dGUoJGJhc2UtcGFsZXR0ZSwgJGRlZmF1bHQ6IDUwMCwgJGxpZ2h0ZXI6IDEwMCwgJGRhcmtlcjogNzAwLCAkdGV4dDogJGRlZmF1bHQpIHtcbiAgJHJlc3VsdDogbWFwLW1lcmdlKCRiYXNlLXBhbGV0dGUsIChcbiAgICBkZWZhdWx0OiBtYXAtZ2V0KCRiYXNlLXBhbGV0dGUsICRkZWZhdWx0KSxcbiAgICBsaWdodGVyOiBtYXAtZ2V0KCRiYXNlLXBhbGV0dGUsICRsaWdodGVyKSxcbiAgICBkYXJrZXI6IG1hcC1nZXQoJGJhc2UtcGFsZXR0ZSwgJGRhcmtlciksXG4gICAgdGV4dDogbWFwLWdldCgkYmFzZS1wYWxldHRlLCAkdGV4dCksXG5cbiAgICBkZWZhdWx0LWNvbnRyYXN0OiBtYXQtY29udHJhc3QoJGJhc2UtcGFsZXR0ZSwgJGRlZmF1bHQpLFxuICAgIGxpZ2h0ZXItY29udHJhc3Q6IG1hdC1jb250cmFzdCgkYmFzZS1wYWxldHRlLCAkbGlnaHRlciksXG4gICAgZGFya2VyLWNvbnRyYXN0OiBtYXQtY29udHJhc3QoJGJhc2UtcGFsZXR0ZSwgJGRhcmtlcilcbiAgKSk7XG5cbiAgLy8gRm9yIGVhY2ggaHVlIGluIHRoZSBwYWxldHRlLCBhZGQgYSBcIi1jb250cmFzdFwiIGNvbG9yIHRvIHRoZSBtYXAuXG4gIEBlYWNoICRodWUsICRjb2xvciBpbiAkYmFzZS1wYWxldHRlIHtcbiAgICAkcmVzdWx0OiBtYXAtbWVyZ2UoJHJlc3VsdCwgKFxuICAgICAgJyN7JGh1ZX0tY29udHJhc3QnOiBtYXQtY29udHJhc3QoJGJhc2UtcGFsZXR0ZSwgJGh1ZSlcbiAgICApKTtcbiAgfVxuXG4gIEByZXR1cm4gJHJlc3VsdDtcbn1cblxuXG4vLyBHZXRzIGEgY29sb3IgZnJvbSBhIHRoZW1lIHBhbGV0dGUgKHRoZSBvdXRwdXQgb2YgbWF0LXBhbGV0dGUpLlxuLy8gVGhlIGh1ZSBjYW4gYmUgb25lIG9mIHRoZSBzdGFuZGFyZCB2YWx1ZXMgKDUwMCwgQTQwMCwgZXRjLiksIG9uZSBvZiB0aGUgdGhyZWUgcHJlY29uZmlndXJlZFxuLy8gaHVlcyAoZGVmYXVsdCwgbGlnaHRlciwgZGFya2VyKSwgb3IgYW55IG9mIHRoZSBhZm9yZW1lbnRpb25lZCBwcmVmaXhlZCB3aXRoIFwiLWNvbnRyYXN0XCIuXG4vL1xuLy8gQHBhcmFtICRwYWxldHRlIFRoZSB0aGVtZSBwYWxldHRlIChvdXRwdXQgb2YgbWF0LXBhbGV0dGUpLlxuLy8gQHBhcmFtICRodWUgVGhlIGh1ZSBmcm9tIHRoZSBwYWxldHRlIHRvIHVzZS4gSWYgdGhpcyBpcyBhIHZhbHVlIGJldHdlZW4gMCBhbmQgMSwgaXQgd2lsbFxuLy8gICAgIGJlIHRyZWF0ZWQgYXMgb3BhY2l0eS5cbi8vIEBwYXJhbSAkb3BhY2l0eSBUaGUgYWxwaGEgY2hhbm5lbCB2YWx1ZSBmb3IgdGhlIGNvbG9yLlxuQGZ1bmN0aW9uIG1hdC1jb2xvcigkcGFsZXR0ZSwgJGh1ZTogZGVmYXVsdCwgJG9wYWNpdHk6IG51bGwpIHtcbiAgLy8gSWYgaHVlS2V5IGlzIGEgbnVtYmVyIGJldHdlZW4gemVybyBhbmQgb25lLCB0aGVuIGl0IGFjdHVhbGx5IGNvbnRhaW5zIGFuXG4gIC8vIG9wYWNpdHkgdmFsdWUsIHNvIHJlY2FsbCB0aGlzIGZ1bmN0aW9uIHdpdGggdGhlIGRlZmF1bHQgaHVlIGFuZCB0aGF0IGdpdmVuIG9wYWNpdHkuXG4gIEBpZiB0eXBlLW9mKCRodWUpID09IG51bWJlciBhbmQgJGh1ZSA+PSAwIGFuZCAkaHVlIDw9IDEge1xuICAgIEByZXR1cm4gbWF0LWNvbG9yKCRwYWxldHRlLCBkZWZhdWx0LCAkaHVlKTtcbiAgfVxuXG4gICRjb2xvcjogbWFwLWdldCgkcGFsZXR0ZSwgJGh1ZSk7XG5cbiAgQGlmICh0eXBlLW9mKCRjb2xvcikgIT0gY29sb3IpIHtcbiAgICAvLyBJZiB0aGUgJGNvbG9yIHJlc29sdmVkIHRvIHNvbWV0aGluZyBkaWZmZXJlbnQgZnJvbSBhIGNvbG9yIChlLmcuIGEgQ1NTIHZhcmlhYmxlKSxcbiAgICAvLyB3ZSBjYW4ndCBhcHBseSB0aGUgb3BhY2l0eSBhbnl3YXkgc28gd2UgcmV0dXJuIHRoZSB2YWx1ZSBhcyBpcywgb3RoZXJ3aXNlIFNhc3MgY2FuXG4gICAgLy8gdGhyb3cgYW4gZXJyb3Igb3Igb3V0cHV0IHNvbWV0aGluZyBpbnZhbGlkLlxuICAgIEByZXR1cm4gJGNvbG9yO1xuICB9XG5cbiAgQHJldHVybiByZ2JhKCRjb2xvciwgaWYoJG9wYWNpdHkgPT0gbnVsbCwgb3BhY2l0eSgkY29sb3IpLCAkb3BhY2l0eSkpO1xufVxuXG4vLyBWYWxpZGF0ZXMgdGhlIHNwZWNpZmllZCB0aGVtZSBieSBlbnN1cmluZyB0aGF0IHRoZSBvcHRpb25hbCBjb2xvciBjb25maWcgZGVmaW5lc1xuLy8gYSBwcmltYXJ5LCBhY2NlbnQgYW5kIHdhcm4gcGFsZXR0ZS4gUmV0dXJucyB0aGUgdGhlbWUgaWYgbm8gZmFpbHVyZXMgd2VyZSBmb3VuZC5cbkBmdW5jdGlvbiBfbWF0LXZhbGlkYXRlLXRoZW1lKCR0aGVtZSkge1xuICBAaWYgbWFwLWdldCgkdGhlbWUsIGNvbG9yKSB7XG4gICAgJGNvbG9yOiBtYXAtZ2V0KCR0aGVtZSwgY29sb3IpO1xuICAgIEBpZiBub3QgbWFwLWdldCgkY29sb3IsIHByaW1hcnkpIHtcbiAgICAgIEBlcnJvciAnVGhlbWUgZG9lcyBub3QgZGVmaW5lIGEgdmFsaWQgXCJwcmltYXJ5XCIgcGFsZXR0ZS4nO1xuICAgIH1cbiAgICBAZWxzZSBpZiBub3QgbWFwLWdldCgkY29sb3IsIGFjY2VudCkge1xuICAgICAgQGVycm9yICdUaGVtZSBkb2VzIG5vdCBkZWZpbmUgYSB2YWxpZCBcImFjY2VudFwiIHBhbGV0dGUuJztcbiAgICB9XG4gICAgQGVsc2UgaWYgbm90IG1hcC1nZXQoJGNvbG9yLCB3YXJuKSB7XG4gICAgICBAZXJyb3IgJ1RoZW1lIGRvZXMgbm90IGRlZmluZSBhIHZhbGlkIFwid2FyblwiIHBhbGV0dGUuJztcbiAgICB9XG4gIH1cbiAgQHJldHVybiAkdGhlbWU7XG59XG5cbi8vIENyZWF0ZXMgYSBsaWdodC10aGVtZWQgY29sb3IgY29uZmlndXJhdGlvbiBmcm9tIHRoZSBzcGVjaWZpZWRcbi8vIHByaW1hcnksIGFjY2VudCBhbmQgd2FybiBwYWxldHRlcy5cbkBmdW5jdGlvbiBfbWF0LWNyZWF0ZS1saWdodC1jb2xvci1jb25maWcoJHByaW1hcnksICRhY2NlbnQsICR3YXJuOiBudWxsKSB7XG4gIEByZXR1cm4gKFxuICAgIHByaW1hcnk6ICRwcmltYXJ5LFxuICAgIGFjY2VudDogJGFjY2VudCxcbiAgICB3YXJuOiBpZigkd2FybiAhPSBudWxsLCAkd2FybiwgbWF0LXBhbGV0dGUoJG1hdC1yZWQpKSxcbiAgICBpcy1kYXJrOiBmYWxzZSxcbiAgICBmb3JlZ3JvdW5kOiAkbWF0LWxpZ2h0LXRoZW1lLWZvcmVncm91bmQsXG4gICAgYmFja2dyb3VuZDogJG1hdC1saWdodC10aGVtZS1iYWNrZ3JvdW5kLFxuICApO1xufVxuXG4vLyBDcmVhdGVzIGEgZGFyay10aGVtZWQgY29sb3IgY29uZmlndXJhdGlvbiBmcm9tIHRoZSBzcGVjaWZpZWRcbi8vIHByaW1hcnksIGFjY2VudCBhbmQgd2FybiBwYWxldHRlcy5cbkBmdW5jdGlvbiBfbWF0LWNyZWF0ZS1kYXJrLWNvbG9yLWNvbmZpZygkcHJpbWFyeSwgJGFjY2VudCwgJHdhcm46IG51bGwpIHtcbiAgQHJldHVybiAoXG4gICAgcHJpbWFyeTogJHByaW1hcnksXG4gICAgYWNjZW50OiAkYWNjZW50LFxuICAgIHdhcm46IGlmKCR3YXJuICE9IG51bGwsICR3YXJuLCBtYXQtcGFsZXR0ZSgkbWF0LXJlZCkpLFxuICAgIGlzLWRhcms6IHRydWUsXG4gICAgZm9yZWdyb3VuZDogJG1hdC1kYXJrLXRoZW1lLWZvcmVncm91bmQsXG4gICAgYmFja2dyb3VuZDogJG1hdC1kYXJrLXRoZW1lLWJhY2tncm91bmQsXG4gICk7XG59XG5cbi8vIENyZWF0ZXMgYSBjb250YWluZXIgb2JqZWN0IGZvciBhIGxpZ2h0IHRoZW1lIHRvIGJlIGdpdmVuIHRvIGluZGl2aWR1YWwgY29tcG9uZW50IHRoZW1lIG1peGlucy5cbi8vIFRPRE86IFJlbW92ZSBsZWdhY3kgQVBJIGFuZCByZW5hbWUgYCRwcmltYXJ5YCB0byBgJGNvbmZpZ2AuIEN1cnJlbnRseSBpdCBjYW5ub3QgYmUgcmVuYW1lZFxuLy8gYXMgaXQgd291bGQgYnJlYWsgZXhpc3RpbmcgYXBwcyB0aGF0IHNldCB0aGUgcGFyYW1ldGVyIGJ5IG5hbWUuXG5AZnVuY3Rpb24gbWF0LWxpZ2h0LXRoZW1lKCRwcmltYXJ5LCAkYWNjZW50OiBudWxsLCAkd2FybjogbWF0LXBhbGV0dGUoJG1hdC1yZWQpKSB7XG4gIC8vIFRoaXMgZnVuY3Rpb24gY3JlYXRlcyBhIGNvbnRhaW5lciBvYmplY3QgZm9yIHRoZSBpbmRpdmlkdWFsIGNvbXBvbmVudCB0aGVtZSBtaXhpbnMuIENvbnN1bWVyc1xuICAvLyBjYW4gY29uc3RydWN0IHN1Y2ggYW4gb2JqZWN0IGJ5IGNhbGxpbmcgdGhpcyBmdW5jdGlvbiwgb3IgYnkgYnVpbGRpbmcgdGhlIG9iamVjdCBtYW51YWxseS5cbiAgLy8gVGhlcmUgYXJlIHR3byBwb3NzaWJsZSB3YXlzIHRvIGludm9rZSB0aGlzIGZ1bmN0aW9uIGluIG9yZGVyIHRvIGNyZWF0ZSBzdWNoIGFuIG9iamVjdDpcbiAgLy9cbiAgLy8gICAgKDEpIFBhc3NpbmcgaW4gYSBtYXAgdGhhdCBob2xkcyBvcHRpb25hbCBjb25maWd1cmF0aW9ucyBmb3IgaW5kaXZpZHVhbCBwYXJ0cyBvZiB0aGVcbiAgLy8gICAgICAgIHRoZW1pbmcgc3lzdGVtLiBGb3IgYGNvbG9yYCBjb25maWd1cmF0aW9ucywgdGhlIGZ1bmN0aW9uIG9ubHkgZXhwZWN0cyB0aGUgcGFsZXR0ZXNcbiAgLy8gICAgICAgIGZvciBgcHJpbWFyeWAgYW5kIGBhY2NlbnRgIChhbmQgb3B0aW9uYWxseSBgd2FybmApLiBUaGUgZnVuY3Rpb24gd2lsbCBleHBhbmQgdGhlXG4gIC8vICAgICAgICBzaG9ydGhhbmQgaW50byBhbiBhY3R1YWwgY29uZmlndXJhdGlvbiB0aGF0IGNhbiBiZSBjb25zdW1lZCBpbiBgLWNvbG9yYCBtaXhpbnMuXG4gIC8vICAgICgyKSBMZWdhY3kgcGF0dGVybjogUGFzc2luZyBpbiB0aGUgcGFsZXR0ZXMgYXMgcGFyYW1ldGVycy4gVGhpcyBpcyBub3QgYXMgZmxleGlibGVcbiAgLy8gICAgICAgIGFzIHBhc3NpbmcgaW4gYSBjb25maWd1cmF0aW9uIG1hcCBiZWNhdXNlIG9ubHkgdGhlIGBjb2xvcmAgc3lzdGVtIGNhbiBiZSBjb25maWd1cmVkLlxuICAvL1xuICAvLyBJZiB0aGUgbGVnYWN5IHBhdHRlcm4gaXMgdXNlZCwgd2UgZ2VuZXJhdGUgYSBjb250YWluZXIgb2JqZWN0IG9ubHkgd2l0aCBhIGxpZ2h0LXRoZW1lZFxuICAvLyBjb25maWd1cmF0aW9uIGZvciB0aGUgYGNvbG9yYCB0aGVtaW5nIHBhcnQuXG4gIEBpZiAkYWNjZW50ICE9IG51bGwge1xuICAgIEByZXR1cm4gbWF0LXByaXZhdGUtY3JlYXRlLWJhY2t3YXJkcy1jb21wYXRpYmlsaXR5LXRoZW1lKF9tYXQtdmFsaWRhdGUtdGhlbWUoKFxuICAgICAgX2lzLWxlZ2FjeS10aGVtZTogdHJ1ZSxcbiAgICAgIGNvbG9yOiBfbWF0LWNyZWF0ZS1saWdodC1jb2xvci1jb25maWcoJHByaW1hcnksICRhY2NlbnQsICR3YXJuKSxcbiAgICApKSk7XG4gIH1cbiAgLy8gSWYgdGhlIG1hcCBwYXR0ZXJuIGlzIHVzZWQgKDEpLCB3ZSBqdXN0IHBhc3MtdGhyb3VnaCB0aGUgY29uZmlndXJhdGlvbnMgZm9yIGluZGl2aWR1YWxcbiAgLy8gcGFydHMgb2YgdGhlIHRoZW1pbmcgc3lzdGVtLCBidXQgdXBkYXRlIHRoZSBgY29sb3JgIGNvbmZpZ3VyYXRpb24gaWYgc2V0LiBBcyBleHBsYWluZWRcbiAgLy8gYWJvdmUsIHRoZSBjb2xvciBzaG9ydGhhbmQgd2lsbCBiZSBleHBhbmRlZCB0byBhbiBhY3R1YWwgbGlnaHQtdGhlbWVkIGNvbG9yIGNvbmZpZ3VyYXRpb24uXG4gICRyZXN1bHQ6ICRwcmltYXJ5O1xuICBAaWYgbWFwLWdldCgkcHJpbWFyeSwgY29sb3IpIHtcbiAgICAkY29sb3Itc2V0dGluZ3M6IG1hcC1nZXQoJHByaW1hcnksIGNvbG9yKTtcbiAgICAkcHJpbWFyeTogbWFwLWdldCgkY29sb3Itc2V0dGluZ3MsIHByaW1hcnkpO1xuICAgICRhY2NlbnQ6IG1hcC1nZXQoJGNvbG9yLXNldHRpbmdzLCBhY2NlbnQpO1xuICAgICR3YXJuOiBtYXAtZ2V0KCRjb2xvci1zZXR0aW5ncywgd2Fybik7XG4gICAgJHJlc3VsdDogbWFwLW1lcmdlKCRyZXN1bHQsIChjb2xvcjogX21hdC1jcmVhdGUtbGlnaHQtY29sb3ItY29uZmlnKCRwcmltYXJ5LCAkYWNjZW50LCAkd2FybikpKTtcbiAgfVxuICBAcmV0dXJuIG1hdC1wcml2YXRlLWNyZWF0ZS1iYWNrd2FyZHMtY29tcGF0aWJpbGl0eS10aGVtZShfbWF0LXZhbGlkYXRlLXRoZW1lKCRyZXN1bHQpKTtcbn1cblxuLy8gQ3JlYXRlcyBhIGNvbnRhaW5lciBvYmplY3QgZm9yIGEgZGFyayB0aGVtZSB0byBiZSBnaXZlbiB0byBpbmRpdmlkdWFsIGNvbXBvbmVudCB0aGVtZSBtaXhpbnMuXG4vLyBUT0RPOiBSZW1vdmUgbGVnYWN5IEFQSSBhbmQgcmVuYW1lIGAkcHJpbWFyeWAgdG8gYCRjb25maWdgLiBDdXJyZW50bHkgaXQgY2Fubm90IGJlIHJlbmFtZWRcbi8vIGFzIGl0IHdvdWxkIGJyZWFrIGV4aXN0aW5nIGFwcHMgdGhhdCBzZXQgdGhlIHBhcmFtZXRlciBieSBuYW1lLlxuQGZ1bmN0aW9uIG1hdC1kYXJrLXRoZW1lKCRwcmltYXJ5LCAkYWNjZW50OiBudWxsLCAkd2FybjogbWF0LXBhbGV0dGUoJG1hdC1yZWQpKSB7XG4gIC8vIFRoaXMgZnVuY3Rpb24gY3JlYXRlcyBhIGNvbnRhaW5lciBvYmplY3QgZm9yIHRoZSBpbmRpdmlkdWFsIGNvbXBvbmVudCB0aGVtZSBtaXhpbnMuIENvbnN1bWVyc1xuICAvLyBjYW4gY29uc3RydWN0IHN1Y2ggYW4gb2JqZWN0IGJ5IGNhbGxpbmcgdGhpcyBmdW5jdGlvbiwgb3IgYnkgYnVpbGRpbmcgdGhlIG9iamVjdCBtYW51YWxseS5cbiAgLy8gVGhlcmUgYXJlIHR3byBwb3NzaWJsZSB3YXlzIHRvIGludm9rZSB0aGlzIGZ1bmN0aW9uIGluIG9yZGVyIHRvIGNyZWF0ZSBzdWNoIGFuIG9iamVjdDpcbiAgLy9cbiAgLy8gICAgKDEpIFBhc3NpbmcgaW4gYSBtYXAgdGhhdCBob2xkcyBvcHRpb25hbCBjb25maWd1cmF0aW9ucyBmb3IgaW5kaXZpZHVhbCBwYXJ0cyBvZiB0aGVcbiAgLy8gICAgICAgIHRoZW1pbmcgc3lzdGVtLiBGb3IgYGNvbG9yYCBjb25maWd1cmF0aW9ucywgdGhlIGZ1bmN0aW9uIG9ubHkgZXhwZWN0cyB0aGUgcGFsZXR0ZXNcbiAgLy8gICAgICAgIGZvciBgcHJpbWFyeWAgYW5kIGBhY2NlbnRgIChhbmQgb3B0aW9uYWxseSBgd2FybmApLiBUaGUgZnVuY3Rpb24gd2lsbCBleHBhbmQgdGhlXG4gIC8vICAgICAgICBzaG9ydGhhbmQgaW50byBhbiBhY3R1YWwgY29uZmlndXJhdGlvbiB0aGF0IGNhbiBiZSBjb25zdW1lZCBpbiBgLWNvbG9yYCBtaXhpbnMuXG4gIC8vICAgICgyKSBMZWdhY3kgcGF0dGVybjogUGFzc2luZyBpbiB0aGUgcGFsZXR0ZXMgYXMgcGFyYW1ldGVycy4gVGhpcyBpcyBub3QgYXMgZmxleGlibGVcbiAgLy8gICAgICAgIGFzIHBhc3NpbmcgaW4gYSBjb25maWd1cmF0aW9uIG1hcCBiZWNhdXNlIG9ubHkgdGhlIGBjb2xvcmAgc3lzdGVtIGNhbiBiZSBjb25maWd1cmVkLlxuICAvL1xuICAvLyBJZiB0aGUgbGVnYWN5IHBhdHRlcm4gaXMgdXNlZCwgd2UgZ2VuZXJhdGUgYSBjb250YWluZXIgb2JqZWN0IG9ubHkgd2l0aCBhIGRhcmstdGhlbWVkXG4gIC8vIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBgY29sb3JgIHRoZW1pbmcgcGFydC5cbiAgQGlmICRhY2NlbnQgIT0gbnVsbCB7XG4gICAgQHJldHVybiBtYXQtcHJpdmF0ZS1jcmVhdGUtYmFja3dhcmRzLWNvbXBhdGliaWxpdHktdGhlbWUoX21hdC12YWxpZGF0ZS10aGVtZSgoXG4gICAgICBfaXMtbGVnYWN5LXRoZW1lOiB0cnVlLFxuICAgICAgY29sb3I6IF9tYXQtY3JlYXRlLWRhcmstY29sb3ItY29uZmlnKCRwcmltYXJ5LCAkYWNjZW50LCAkd2FybiksXG4gICAgKSkpO1xuICB9XG4gIC8vIElmIHRoZSBtYXAgcGF0dGVybiBpcyB1c2VkICgxKSwgd2UganVzdCBwYXNzLXRocm91Z2ggdGhlIGNvbmZpZ3VyYXRpb25zIGZvciBpbmRpdmlkdWFsXG4gIC8vIHBhcnRzIG9mIHRoZSB0aGVtaW5nIHN5c3RlbSwgYnV0IHVwZGF0ZSB0aGUgYGNvbG9yYCBjb25maWd1cmF0aW9uIGlmIHNldC4gQXMgZXhwbGFpbmVkXG4gIC8vIGFib3ZlLCB0aGUgY29sb3Igc2hvcnRoYW5kIHdpbGwgYmUgZXhwYW5kZWQgdG8gYW4gYWN0dWFsIGRhcmstdGhlbWVkIGNvbG9yIGNvbmZpZ3VyYXRpb24uXG4gICRyZXN1bHQ6ICRwcmltYXJ5O1xuICBAaWYgbWFwLWdldCgkcHJpbWFyeSwgY29sb3IpIHtcbiAgICAkY29sb3Itc2V0dGluZ3M6IG1hcC1nZXQoJHByaW1hcnksIGNvbG9yKTtcbiAgICAkcHJpbWFyeTogbWFwLWdldCgkY29sb3Itc2V0dGluZ3MsIHByaW1hcnkpO1xuICAgICRhY2NlbnQ6IG1hcC1nZXQoJGNvbG9yLXNldHRpbmdzLCBhY2NlbnQpO1xuICAgICR3YXJuOiBtYXAtZ2V0KCRjb2xvci1zZXR0aW5ncywgd2Fybik7XG4gICAgJHJlc3VsdDogbWFwLW1lcmdlKCRyZXN1bHQsIChjb2xvcjogX21hdC1jcmVhdGUtZGFyay1jb2xvci1jb25maWcoJHByaW1hcnksICRhY2NlbnQsICR3YXJuKSkpO1xuICB9XG4gIEByZXR1cm4gbWF0LXByaXZhdGUtY3JlYXRlLWJhY2t3YXJkcy1jb21wYXRpYmlsaXR5LXRoZW1lKF9tYXQtdmFsaWRhdGUtdGhlbWUoJHJlc3VsdCkpO1xufVxuXG4vLy8gR2V0cyB0aGUgY29sb3IgY29uZmlndXJhdGlvbiBmcm9tIHRoZSBnaXZlbiB0aGVtZSBvciBjb25maWd1cmF0aW9uLlxuQGZ1bmN0aW9uIG1hdC1nZXQtY29sb3ItY29uZmlnKCR0aGVtZSwgJGRlZmF1bHQ6IG51bGwpIHtcbiAgLy8gSWYgYSBjb25maWd1cmF0aW9uIGhhcyBiZWVuIHBhc3NlZCwgcmV0dXJuIHRoZSBjb25maWcgZGlyZWN0bHkuXG4gIEBpZiBub3QgbWF0LXByaXZhdGUtaXMtdGhlbWUtb2JqZWN0KCR0aGVtZSkge1xuICAgIEByZXR1cm4gJHRoZW1lO1xuICB9XG4gIC8vIElmIHRoZSB0aGVtZSBoYXMgYmVlbiBjb25zdHJ1Y3RlZCB0aHJvdWdoIHRoZSBsZWdhY3kgdGhlbWluZyBBUEksIHdlIHVzZSB0aGUgdGhlbWUgb2JqZWN0XG4gIC8vIGFzIGNvbG9yIGNvbmZpZ3VyYXRpb24gaW5zdGVhZCBvZiB0aGUgZGVkaWNhdGVkIGBjb2xvcmAgcHJvcGVydHkuIFdlIGRvIHRoaXMgYmVjYXVzZSBmb3JcbiAgLy8gYmFja3dhcmRzIGNvbXBhdGliaWxpdHksIHdlIGNvcGllZCB0aGUgY29sb3IgY29uZmlndXJhdGlvbiBmcm9tIGAkdGhlbWUuY29sb3JgIHRvIGAkdGhlbWVgLlxuICAvLyBIZW5jZSBkZXZlbG9wZXJzIGNvdWxkIGN1c3RvbWl6ZSB0aGUgY29sb3JzIGF0IHRvcC1sZXZlbCBhbmQgd2FudCB0byByZXNwZWN0IHRoZXNlIGNoYW5nZXNcbiAgLy8gVE9ETzogUmVtb3ZlIHdoZW4gbGVnYWN5IHRoZW1pbmcgQVBJIGlzIHJlbW92ZWQuXG4gIEBpZiBtYXQtcHJpdmF0ZS1pcy1sZWdhY3ktY29uc3RydWN0ZWQtdGhlbWUoJHRoZW1lKSB7XG4gICAgQHJldHVybiAkdGhlbWU7XG4gIH1cbiAgQGlmIG1hcC1oYXMta2V5KCR0aGVtZSwgY29sb3IpIHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoJHRoZW1lLCBjb2xvcik7XG4gIH1cbiAgQHJldHVybiAkZGVmYXVsdDtcbn1cblxuLy8vIEdldHMgdGhlIGRlbnNpdHkgY29uZmlndXJhdGlvbiBmcm9tIHRoZSBnaXZlbiB0aGVtZSBvciBjb25maWd1cmF0aW9uLlxuQGZ1bmN0aW9uIG1hdC1nZXQtZGVuc2l0eS1jb25maWcoJHRoZW1lLW9yLWNvbmZpZywgJGRlZmF1bHQ6IDApIHtcbiAgLy8gSWYgYSBjb25maWd1cmF0aW9uIGhhcyBiZWVuIHBhc3NlZCwgcmV0dXJuIHRoZSBjb25maWcgZGlyZWN0bHkuXG4gIEBpZiBub3QgbWF0LXByaXZhdGUtaXMtdGhlbWUtb2JqZWN0KCR0aGVtZS1vci1jb25maWcpIHtcbiAgICBAcmV0dXJuICR0aGVtZS1vci1jb25maWc7XG4gIH1cbiAgLy8gSW4gY2FzZSBhIHRoZW1lIGhhcyBiZWVuIHBhc3NlZCwgZXh0cmFjdCB0aGUgY29uZmlndXJhdGlvbiBpZiBwcmVzZW50LFxuICAvLyBvciBmYWxsIGJhY2sgdG8gdGhlIGRlZmF1bHQgZGVuc2l0eSBjb25maWcuXG4gIEBpZiBtYXAtaGFzLWtleSgkdGhlbWUtb3ItY29uZmlnLCBkZW5zaXR5KSB7XG4gICAgQHJldHVybiBtYXAtZ2V0KCR0aGVtZS1vci1jb25maWcsIGRlbnNpdHkpO1xuICB9XG4gIEByZXR1cm4gJGRlZmF1bHQ7XG59XG5cbi8vLyBHZXRzIHRoZSB0eXBvZ3JhcGh5IGNvbmZpZ3VyYXRpb24gZnJvbSB0aGUgZ2l2ZW4gdGhlbWUgb3IgY29uZmlndXJhdGlvbi5cbi8vLyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHksIHR5cG9ncmFwaHkgaXMgbm90IGluY2x1ZGVkIGJ5IGRlZmF1bHQuXG5AZnVuY3Rpb24gbWF0LWdldC10eXBvZ3JhcGh5LWNvbmZpZygkdGhlbWUtb3ItY29uZmlnLCAkZGVmYXVsdDogbnVsbCkge1xuICAvLyBJZiBhIGNvbmZpZ3VyYXRpb24gaGFzIGJlZW4gcGFzc2VkLCByZXR1cm4gdGhlIGNvbmZpZyBkaXJlY3RseS5cbiAgQGlmIG5vdCBtYXQtcHJpdmF0ZS1pcy10aGVtZS1vYmplY3QoJHRoZW1lLW9yLWNvbmZpZykge1xuICAgIEByZXR1cm4gJHRoZW1lLW9yLWNvbmZpZztcbiAgfVxuICAvLyBJbiBjYXNlIGEgdGhlbWUgaGFzIGJlZW4gcGFzc2VkLCBleHRyYWN0IHRoZSBjb25maWd1cmF0aW9uIGlmIHByZXNlbnQsXG4gIC8vIG9yIGZhbGwgYmFjayB0byB0aGUgZGVmYXVsdCB0eXBvZ3JhcGh5IGNvbmZpZy5cbiAgQGlmIChtYXAtaGFzLWtleSgkdGhlbWUtb3ItY29uZmlnLCB0eXBvZ3JhcGh5KSkge1xuICAgIEByZXR1cm4gbWFwLWdldCgkdGhlbWUtb3ItY29uZmlnLCB0eXBvZ3JhcGh5KTtcbiAgfVxuICBAcmV0dXJuICRkZWZhdWx0O1xufVxuXG5cbi8vXG4vLyBQcml2YXRlIEFQSXNcbi8vXG5cbi8vIENoZWNrcyBpZiBjb25maWd1cmF0aW9ucyB0aGF0IGhhdmUgYmVlbiBkZWNsYXJlZCBpbiB0aGUgZ2l2ZW4gdGhlbWUgaGF2ZSBiZWVuIGdlbmVyYXRlZFxuLy8gYmVmb3JlLiBJZiBzbywgd2FybmluZ3Mgd2lsbCBiZSByZXBvcnRlZC4gVGhpcyBzaG91bGQgbm90aWZ5IGRldmVsb3BlcnMgaW4gY2FzZSBkdXBsaWNhdGVcbi8vIHN0eWxlcyBhcmUgYWNjaWRlbnRhbGx5IGdlbmVyYXRlZCBkdWUgdG8gd3JvbmcgdXNhZ2Ugb2YgdGhlIGFsbC10aGVtZSBtaXhpbnMuXG4vL1xuLy8gQWRkaXRpb25hbGx5LCB0aGlzIG1peGluIGNvbnRyb2xzIHRoZSBkZWZhdWx0IHZhbHVlIGZvciB0aGUgZGVuc2l0eSBjb25maWd1cmF0aW9uLiBCeVxuLy8gZGVmYXVsdCwgZGVuc2l0eSBzdHlsZXMgYXJlIGdlbmVyYXRlZCBhdCBzY2FsZSB6ZXJvLiBJZiB0aGUgc2FtZSBkZW5zaXR5IHN0eWxlcyB3b3VsZCBiZVxuLy8gZ2VuZXJhdGVkIGEgc2Vjb25kIHRpbWUgdGhvdWdoLCB0aGUgZGVmYXVsdCB2YWx1ZSB3aWxsIGNoYW5nZSB0byBhdm9pZCBkdXBsaWNhdGUgc3R5bGVzLlxuLy9cbi8vIFRoZSBtaXhpbiBrZWVwcyB0cmFjayBvZiBhbGwgY29uZmlndXJhdGlvbnMgaW4gYSBsaXN0IHRoYXQgaXMgc2NvcGVkIHRvIHRoZSBzcGVjaWZpZWRcbi8vIGlkLiBUaGlzIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIGEgZ2l2ZW4gdGhlbWUgY2FuIGJlIHBhc3NlZCB0byBtdWx0aXBsZSBkaXNqb2ludCB0aGVtZSBtaXhpbnNcbi8vIChlLmcuIGBhbmd1bGFyLW1hdGVyaWFsLXRoZW1lYCBhbmQgYGFuZ3VsYXItbWF0ZXJpYWwtbWRjLXRoZW1lYCkgd2l0aG91dCBjYXVzaW5nIGFueVxuLy8gc3R5bGUgZHVwbGljYXRpb24uXG5AbWl4aW4gbWF0LXByaXZhdGUtY2hlY2stZHVwbGljYXRlLXRoZW1lLXN0eWxlcygkdGhlbWUtb3ItY29sb3ItY29uZmlnLCAkaWQpIHtcbiAgJHRoZW1lOiBtYXQtcHJpdmF0ZS1sZWdhY3ktZ2V0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICAkY29sb3ItY29uZmlnOiBtYXQtZ2V0LWNvbG9yLWNvbmZpZygkdGhlbWUpO1xuICAkZGVuc2l0eS1jb25maWc6IG1hdC1nZXQtZGVuc2l0eS1jb25maWcoJHRoZW1lKTtcbiAgJHR5cG9ncmFwaHktY29uZmlnOiBtYXQtZ2V0LXR5cG9ncmFwaHktY29uZmlnKCR0aGVtZSk7XG4gIC8vIExpc3RzIG9mIHByZXZpb3VzIGBjb2xvcmAsIGBkZW5zaXR5YCBhbmQgYHR5cG9ncmFwaHlgIGNvbmZpZ3VyYXRpb25zLlxuICAkcHJldmlvdXMtY29sb3I6IG1hcC1nZXQoJF9tYXQtdGhlbWUtZW1pdHRlZC1jb2xvciwgJGlkKSBvciAoKTtcbiAgJHByZXZpb3VzLXR5cG9ncmFwaHk6IG1hcC1nZXQoJF9tYXQtdGhlbWUtZW1pdHRlZC10eXBvZ3JhcGh5LCAkaWQpIG9yICgpO1xuICAkcHJldmlvdXMtZGVuc2l0eTogbWFwLWdldCgkX21hdC10aGVtZS1lbWl0dGVkLWRlbnNpdHksICRpZCkgb3IgKCk7XG4gIC8vIFdoZXRoZXIgZHVwbGljYXRlIGxlZ2FjeSBkZW5zaXR5IHN0eWxlcyB3b3VsZCBiZSBnZW5lcmF0ZWQuXG4gICRkdXBsaWNhdGUtbGVnYWN5LWRlbnNpdHk6IGZhbHNlO1xuXG4gIC8vIENoZWNrIGlmIHRoZSBjb2xvciBjb25maWd1cmF0aW9uIGhhcyBiZWVuIGdlbmVyYXRlZCBiZWZvcmUuXG4gIEBpZiAkY29sb3ItY29uZmlnICE9IG51bGwge1xuICAgIEBpZiBpbmRleCgkcHJldmlvdXMtY29sb3IsICRjb2xvci1jb25maWcpICE9IG51bGwgYW5kXG4gICAgICAgIG5vdCAkbWF0LXRoZW1lLWlnbm9yZS1kdXBsaWNhdGlvbi13YXJuaW5ncyB7XG4gICAgICBAd2FybiAnVGhlIHNhbWUgY29sb3Igc3R5bGVzIGFyZSBnZW5lcmF0ZWQgbXVsdGlwbGUgdGltZXMuICcgK1xuICAgICAgICAgICRfbWF0LXRoZW1lLWR1cGxpY2F0ZS13YXJuaW5nO1xuICAgIH1cbiAgICAkcHJldmlvdXMtY29sb3I6IGFwcGVuZCgkcHJldmlvdXMtY29sb3IsICRjb2xvci1jb25maWcpO1xuICB9XG5cbiAgLy8gQ2hlY2sgaWYgdGhlIHR5cG9ncmFwaHkgY29uZmlndXJhdGlvbiBoYXMgYmVlbiBnZW5lcmF0ZWQgYmVmb3JlLlxuICBAaWYgJHR5cG9ncmFwaHktY29uZmlnICE9IG51bGwge1xuICAgIEBpZiBpbmRleCgkcHJldmlvdXMtdHlwb2dyYXBoeSwgJHR5cG9ncmFwaHktY29uZmlnKSAhPSBudWxsIGFuZFxuICAgICAgICBub3QgJG1hdC10aGVtZS1pZ25vcmUtZHVwbGljYXRpb24td2FybmluZ3Mge1xuICAgICAgQHdhcm4gJ1RoZSBzYW1lIHR5cG9ncmFwaHkgc3R5bGVzIGFyZSBnZW5lcmF0ZWQgbXVsdGlwbGUgdGltZXMuICcgK1xuICAgICAgICAgICRfbWF0LXRoZW1lLWR1cGxpY2F0ZS13YXJuaW5nO1xuICAgIH1cbiAgICAkcHJldmlvdXMtdHlwb2dyYXBoeTogYXBwZW5kKCRwcmV2aW91cy10eXBvZ3JhcGh5LCAkdHlwb2dyYXBoeS1jb25maWcpO1xuICB9XG5cbiAgLy8gQ2hlY2sgaWYgdGhlIGRlbnNpdHkgY29uZmlndXJhdGlvbiBoYXMgYmVlbiBnZW5lcmF0ZWQgYmVmb3JlLlxuICBAaWYgJGRlbnNpdHktY29uZmlnICE9IG51bGwge1xuICAgIEBpZiBpbmRleCgkcHJldmlvdXMtZGVuc2l0eSwgJGRlbnNpdHktY29uZmlnKSAhPSBudWxsIHtcbiAgICAgIC8vIE9ubHkgcmVwb3J0IGEgd2FybmluZyBpZiBkZW5zaXR5IHN0eWxlcyB3b3VsZCBiZSBkdXBsaWNhdGVkIGZvciBub24tbGVnYWN5IHRoZW1lXG4gICAgICAvLyBkZWZpbml0aW9ucy4gRm9yIGxlZ2FjeSB0aGVtZXMsIHdlIGhhdmUgY29tcGF0aWJpbGl0eSBsb2dpYyB0aGF0IGF2b2lkcyBkdXBsaWNhdGlvblxuICAgICAgLy8gb2YgZGVmYXVsdCBkZW5zaXR5IHN0eWxlcy4gV2UgZG9uJ3Qgd2FudCB0byByZXBvcnQgYSB3YXJuaW5nIGluIHRob3NlIGNhc2VzLlxuICAgICAgQGlmIG1hdC1wcml2YXRlLWlzLWxlZ2FjeS1jb25zdHJ1Y3RlZC10aGVtZSgkdGhlbWUpIHtcbiAgICAgICAgJGR1cGxpY2F0ZS1sZWdhY3ktZGVuc2l0eTogdHJ1ZTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIGlmIG5vdCAkbWF0LXRoZW1lLWlnbm9yZS1kdXBsaWNhdGlvbi13YXJuaW5ncyB7XG4gICAgICAgIEB3YXJuICdUaGUgc2FtZSBkZW5zaXR5IHN0eWxlcyBhcmUgZ2VuZXJhdGVkIG11bHRpcGxlIHRpbWVzLiAnICtcbiAgICAgICAgICAgJF9tYXQtdGhlbWUtZHVwbGljYXRlLXdhcm5pbmc7XG4gICAgICB9XG4gICAgfVxuICAgICRwcmV2aW91cy1kZW5zaXR5OiBhcHBlbmQoJHByZXZpb3VzLWRlbnNpdHksICRkZW5zaXR5LWNvbmZpZyk7XG4gIH1cblxuICAkX21hdC10aGVtZS1lbWl0dGVkLWNvbG9yOiBtYXAtbWVyZ2UoXG4gICAgICAkX21hdC10aGVtZS1lbWl0dGVkLWNvbG9yLCAoJGlkOiAkcHJldmlvdXMtY29sb3IpKSAhZ2xvYmFsO1xuICAkX21hdC10aGVtZS1lbWl0dGVkLWRlbnNpdHk6IG1hcC1tZXJnZShcbiAgICAgICRfbWF0LXRoZW1lLWVtaXR0ZWQtZGVuc2l0eSwgKCRpZDogJHByZXZpb3VzLWRlbnNpdHkpKSAhZ2xvYmFsO1xuICAkX21hdC10aGVtZS1lbWl0dGVkLXR5cG9ncmFwaHk6IG1hcC1tZXJnZShcbiAgICAgICRfbWF0LXRoZW1lLWVtaXR0ZWQtdHlwb2dyYXBoeSwgKCRpZDogJHByZXZpb3VzLXR5cG9ncmFwaHkpKSAhZ2xvYmFsO1xuXG4gIC8vIE9wdGlvbmFsbHksIGNvbnN1bWVycyBvZiB0aGlzIG1peGluIGNhbiB3cmFwIGNvbnRlbnRzIGluc2lkZSBzbyB0aGF0IG5lc3RlZFxuICAvLyBkdXBsaWNhdGUgc3R5bGUgY2hlY2tzIGRvIG5vdCByZXBvcnQgYW5vdGhlciB3YXJuaW5nLiBlLmcuIGlmIGRldmVsb3BlcnMgaW5jbHVkZVxuICAvLyB0aGUgYGFuZ3VsYXItbWF0ZXJpYWwtdGhlbWVgIG1peGluIHR3aWNlLCBvbmx5IHRoZSB0b3AtbGV2ZWwgZHVwbGljYXRlIHN0eWxlcyBjaGVja1xuICAvLyBzaG91bGQgcmVwb3J0IGEgd2FybmluZy4gTm90IGFsbCBpbmRpdmlkdWFsIGNvbXBvbmVudHMgc2hvdWxkIHJlcG9ydCBhIHdhcm5pbmcgdG9vLlxuICAkb3JpZy1tYXQtdGhlbWUtaWdub3JlLWR1cGxpY2F0aW9uLXdhcm5pbmdzOiAkbWF0LXRoZW1lLWlnbm9yZS1kdXBsaWNhdGlvbi13YXJuaW5ncztcbiAgJG1hdC10aGVtZS1pZ25vcmUtZHVwbGljYXRpb24td2FybmluZ3M6IHRydWUgIWdsb2JhbDtcblxuICAvLyBJZiBkdXBsaWNhdGUgZGVmYXVsdCBkZW5zaXR5IHN0eWxlcyB3b3VsZCBiZSBnZW5lcmF0ZWQgZm9yIGEgbGVnYWN5IGNvbnN0cnVjdGVkIHRoZW1lLFxuICAvLyB3ZSBhZGp1c3QgdGhlIGRlbnNpdHkgZ2VuZXJhdGlvbiBzbyB0aGF0IG5vIGRlbnNpdHkgc3R5bGVzIGFyZSBnZW5lcmF0ZWQgYnkgZGVmYXVsdC5cbiAgLy8gSWYgbm8gZGVmYXVsdCBkZW5zaXR5IHN0eWxlcyBoYXZlIGJlZW4gZ2VuZXJhdGVkIHlldCwgd2UgZW5zdXJlIHRoYXQgdGhlIHN0eWxlc1xuICAvLyBhcmUgZ2VuZXJhdGVkIGF0IHJvb3QuIEZvciBsZWdhY3kgdGhlbWVzIG91ciBnb2FsIGlzIHRvIGdlbmVyYXRlIGRlZmF1bHQgZGVuc2l0eVxuICAvLyBzdHlsZXMgKipvbmNlKiogYW5kIGF0IHJvb3QuIFRoaXMgbWF0Y2hlcyB0aGUgb2xkIGJlaGF2aW9yIHdoZXJlIGRlbnNpdHkgc3R5bGVzIHdlcmVcbiAgLy8gcGFydCBvZiB0aGUgYmFzZSBjb21wb25lbnQgc3R5bGVzICh0aGF0IGRpZCBub3QgdXNlIHZpZXcgZW5jYXBzdWxhdGlvbikuXG4gIC8vIFRPRE86IFJlbW92ZSB0aGlzIGNvbXBhdGliaWxpdHkgbG9naWMgd2hlbiB0aGUgbGVnYWN5IHRoZW1pbmcgQVBJIGlzIHJlbW92ZWQuXG4gICRtYXQtcHJpdmF0ZS1kZW5zaXR5LWdlbmVyYXRlLWF0LXJvb3Q6IG1hdC1wcml2YXRlLWlzLWxlZ2FjeS1jb25zdHJ1Y3RlZC10aGVtZSgkdGhlbWUpICFnbG9iYWw7XG4gICRtYXQtcHJpdmF0ZS1kZW5zaXR5LWdlbmVyYXRlLXN0eWxlczogbm90ICRkdXBsaWNhdGUtbGVnYWN5LWRlbnNpdHkgIWdsb2JhbDtcblxuICBAY29udGVudDtcbiAgJG1hdC10aGVtZS1pZ25vcmUtZHVwbGljYXRpb24td2FybmluZ3M6ICRvcmlnLW1hdC10aGVtZS1pZ25vcmUtZHVwbGljYXRpb24td2FybmluZ3MgIWdsb2JhbDtcblxuICAkbWF0LXByaXZhdGUtZGVuc2l0eS1nZW5lcmF0ZS1hdC1yb290OiBmYWxzZSAhZ2xvYmFsO1xuICAkbWF0LXByaXZhdGUtZGVuc2l0eS1nZW5lcmF0ZS1zdHlsZXM6IHRydWUgIWdsb2JhbDtcbn1cblxuLy8gQ2hlY2tzIHdoZXRoZXIgdGhlIGdpdmVuIHZhbHVlIHJlc29sdmVzIHRvIGEgdGhlbWUgb2JqZWN0LiBUaGVtZSBvYmplY3RzIGFyZSBhbHdheXNcbi8vIG9mIHR5cGUgYG1hcGAgYW5kIGNhbiBvcHRpb25hbGx5IG9ubHkgc3BlY2lmeSBgY29sb3JgLCBgZGVuc2l0eWAgb3IgYHR5cG9ncmFwaHlgLlxuQGZ1bmN0aW9uIG1hdC1wcml2YXRlLWlzLXRoZW1lLW9iamVjdCgkdmFsdWUpIHtcbiAgQHJldHVybiB0eXBlLW9mKCR2YWx1ZSkgPT0gJ21hcCcgYW5kIChcbiAgICBtYXAtaGFzLWtleSgkdmFsdWUsIGNvbG9yKSBvclxuICAgIG1hcC1oYXMta2V5KCR2YWx1ZSwgZGVuc2l0eSkgb3JcbiAgICBtYXAtaGFzLWtleSgkdmFsdWUsIHR5cG9ncmFwaHkpIG9yXG4gICAgbGVuZ3RoKCR2YWx1ZSkgPT0gMFxuICApO1xufVxuXG4vLyBDaGVja3Mgd2hldGhlciBhIGdpdmVuIHZhbHVlIGNvcnJlc3BvbmRzIHRvIGEgbGVnYWN5IGNvbnN0cnVjdGVkIHRoZW1lLlxuQGZ1bmN0aW9uIG1hdC1wcml2YXRlLWlzLWxlZ2FjeS1jb25zdHJ1Y3RlZC10aGVtZSgkdmFsdWUpIHtcbiAgQHJldHVybiB0eXBlLW9mKCR2YWx1ZSkgPT0gJ21hcCcgYW5kIG1hcC1nZXQoJHZhbHVlLCAnX2lzLWxlZ2FjeS10aGVtZScpO1xufVxuXG4vLyBDcmVhdGVzIGEgYmFja3dhcmRzIGNvbXBhdGlibGUgdGhlbWUuIFByZXZpb3VzbHkgaW4gQW5ndWxhciBNYXRlcmlhbCwgdGhlbWUgb2JqZWN0c1xuLy8gY29udGFpbmVkIHRoZSBjb2xvciBjb25maWd1cmF0aW9uIGRpcmVjdGx5LiBXaXRoIHRoZSByZWNlbnQgcmVmYWN0b3Jpbmcgb2YgdGhlIHRoZW1pbmdcbi8vIHN5c3RlbSB0byBhbGxvdyBmb3IgZGVuc2l0eSBhbmQgdHlwb2dyYXBoeSBjb25maWd1cmF0aW9ucywgdGhpcyBpcyBubyBsb25nZXIgdGhlIGNhc2UuXG4vLyBUbyBlbnN1cmUgdGhhdCBjb25zdHJ1Y3RlZCB0aGVtZXMgd2hpY2ggd2lsbCBiZSBwYXNzZWQgdG8gY3VzdG9tIHRoZW1lIG1peGlucyBkbyBub3QgYnJlYWssXG4vLyB3ZSBjb3B5IHRoZSBjb2xvciBjb25maWd1cmF0aW9uIGFuZCBwdXQgaXRzIHByb3BlcnRpZXMgYXQgdGhlIHRvcC1sZXZlbCBvZiB0aGUgdGhlbWUgb2JqZWN0LlxuLy8gSGVyZSBpcyBhbiBleGFtcGxlIG9mIGEgcGF0dGVybiB0aGF0IHNob3VsZCBzdGlsbCB3b3JrIHVudGlsIGl0J3Mgb2ZmaWNpYWxseSBtYXJrZWQgYXMgYVxuLy8gYnJlYWtpbmcgY2hhbmdlOlxuLy9cbi8vICAgIEBtaXhpbiBteS1jdXN0b20tY29tcG9uZW50LXRoZW1lKCR0aGVtZSkge1xuLy8gICAgICAubXktY29tcCB7XG4vLyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogbWF0LWNvbG9yKG1hcC1nZXQoJHRoZW1lLCBwcmltYXJ5KSk7XG4vLyAgICAgIH1cbi8vICAgIH1cbi8vXG4vLyBOb3RlIHRoYXQgdGhlIGAkdGhlbWUucHJpbWFyeWAga2V5IGRvZXMgdXN1YWxseSBub3QgZXhpc3Qgc2luY2UgdGhlIGNvbG9yIGNvbmZpZ3VyYXRpb25cbi8vIGlzIHN0b3JlZCBpbiBgJHRoZW1lLmNvbG9yYCB3aGljaCBjb250YWlucyBhIHByb3BlcnR5IGZvciBgcHJpbWFyeWAuIFRoaXMgbWV0aG9kIGNvcGllc1xuLy8gdGhlIG1hcCBmcm9tIGAkdGhlbWUuY29sb3JgIHRvIGAkdGhlbWVgIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS5cbkBmdW5jdGlvbiBtYXQtcHJpdmF0ZS1jcmVhdGUtYmFja3dhcmRzLWNvbXBhdGliaWxpdHktdGhlbWUoJHRoZW1lKSB7XG4gIEBpZiBub3QgbWFwLWdldCgkdGhlbWUsIGNvbG9yKSB7XG4gICAgQHJldHVybiAkdGhlbWU7XG4gIH1cbiAgJGNvbG9yOiBtYXAtZ2V0KCR0aGVtZSwgY29sb3IpO1xuICBAcmV0dXJuIG1hcC1tZXJnZSgkdGhlbWUsICRjb2xvcik7XG59XG5cbi8vIEdldHMgdGhlIHRoZW1lIGZyb20gdGhlIGdpdmVuIHZhbHVlIHRoYXQgaXMgZWl0aGVyIGFscmVhZHkgYSB0aGVtZSwgb3IgYSBjb2xvciBjb25maWd1cmF0aW9uLlxuLy8gVGhpcyBoYW5kbGVzIHRoZSBsZWdhY3kgY2FzZSB3aGVyZSBkZXZlbG9wZXJzIHBhc3MgYSBjb2xvciBjb25maWd1cmF0aW9uIGRpcmVjdGx5IHRvIHRoZVxuLy8gdGhlbWUgbWl4aW4uIEJlZm9yZSB3ZSBpbnRyb2R1Y2VkIHRoZSBuZXcgcGF0dGVybiBmb3IgY29uc3RydWN0aW5nIGEgdGhlbWUsIGRldmVsb3BlcnMgcGFzc2VkXG4vLyB0aGUgY29sb3IgY29uZmlndXJhdGlvbiBkaXJlY3RseSB0byB0aGUgdGhlbWUgbWl4aW5zLiBUaGlzIGNhbiBiZSBzdGlsbCB0aGUgY2FzZSBpZiBkZXZlbG9wZXJzXG4vLyBjb25zdHJ1Y3QgYSB0aGVtZSBtYW51YWxseSBhbmQgcGFzcyBpdCB0byBhIHRoZW1lLiBXZSBzdXBwb3J0IHRoaXMgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LlxuLy8gVE9ETyhkZXZ2ZXJzaW9uKTogcmVtb3ZlIHRoaXMgaW4gdGhlIGZ1dHVyZS4gQ29uc3RydWN0aW5nIHRoZW1lcyBtYW51YWxseSBpcyByYXJlLFxuLy8gYW5kIHRoZSBjb2RlIGNhbiBiZSBlYXNpbHkgdXBkYXRlZCB0byB0aGUgbmV3IEFQSS5cbkBmdW5jdGlvbiBtYXQtcHJpdmF0ZS1sZWdhY3ktZ2V0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgQGlmIG1hdC1wcml2YXRlLWlzLXRoZW1lLW9iamVjdCgkdGhlbWUtb3ItY29sb3ItY29uZmlnKSB7XG4gICAgQHJldHVybiAkdGhlbWUtb3ItY29sb3ItY29uZmlnO1xuICB9XG4gIEByZXR1cm4gbWF0LXByaXZhdGUtY3JlYXRlLWJhY2t3YXJkcy1jb21wYXRpYmlsaXR5LXRoZW1lKChcbiAgICBfaXMtbGVnYWN5LXRoZW1lOiB0cnVlLFxuICAgIGNvbG9yOiAkdGhlbWUtb3ItY29sb3ItY29uZmlnXG4gICkpO1xufVxuXG5cblxuJG1hdC1yaXBwbGUtY29sb3Itb3BhY2l0eTogMC4xO1xuXG5AbWl4aW4gbWF0LXJpcHBsZSgpIHtcblxuICAvLyBUaGUgaG9zdCBlbGVtZW50IG9mIGFuIG1hdC1yaXBwbGUgZGlyZWN0aXZlIHNob3VsZCBhbHdheXMgaGF2ZSBhIHBvc2l0aW9uIG9mIFwiYWJzb2x1dGVcIiBvclxuICAvLyBcInJlbGF0aXZlXCIgc28gdGhhdCB0aGUgcmlwcGxlcyBpbnNpZGUgYXJlIGNvcnJlY3RseSBwb3NpdGlvbmVkIHJlbGF0aXZlbHkgdG8gdGhlIGNvbnRhaW5lci5cbiAgLm1hdC1yaXBwbGUge1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgICAvLyBCeSBkZWZhdWx0LCBldmVyeSByaXBwbGUgY29udGFpbmVyIHNob3VsZCBoYXZlIHBvc2l0aW9uOiByZWxhdGl2ZSBpbiBmYXZvciBvZiBjcmVhdGluZyBhblxuICAgIC8vIGVhc3kgQVBJIGZvciBkZXZlbG9wZXJzIHVzaW5nIHRoZSBNYXRSaXBwbGUgZGlyZWN0aXZlLlxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgIC8vIFByb21vdGUgY29udGFpbmVycyB0aGF0IGhhdmUgcmlwcGxlcyB0byBhIG5ldyBsYXllci4gV2Ugd2FudCB0byB0YXJnZXQgYDpub3QoOmVtcHR5KWAsXG4gICAgLy8gYmVjYXVzZSB3ZSBkb24ndCB3YW50IGFsbCByaXBwbGUgY29udGFpbmVycyB0byBoYXZlIHRoZWlyIG93biBsYXllciBzaW5jZSB0aGV5J3JlIHVzZWQgaW4gYVxuICAgIC8vIGxvdCBvZiBwbGFjZXMgYW5kIHRoZSBsYXllciBpcyBvbmx5IHJlbGV2YW50IHdoaWxlIGFuaW1hdGluZy4gTm90ZSB0aGF0IGlkZWFsbHkgd2UnZCB1c2VcbiAgICAvLyB0aGUgYGNvbnRhaW5gIHByb3BlcnR5IGhlcmUgKHNlZSAjMTMxNzUpLCBiZWNhdXNlIGA6ZW1wdHlgIGNhbiBiZSBicm9rZW4gYnkgaGF2aW5nIGV4dHJhXG4gICAgLy8gdGV4dCBpbnNpZGUgdGhlIGVsZW1lbnQsIGJ1dCBpdCBpc24ndCB2ZXJ5IHdlbGwgc3VwcG9ydGVkIHlldC5cbiAgICAmOm5vdCg6ZW1wdHkpIHtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWigwKTtcbiAgICB9XG4gIH1cblxuICAubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZCB7XG4gICAgb3ZlcmZsb3c6IHZpc2libGU7XG4gIH1cblxuICAubWF0LXJpcHBsZS1lbGVtZW50IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuXG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSwgdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDApO1xuXG4gICAgLy8gSW4gaGlnaCBjb250cmFzdCBtb2RlIHRoZSByaXBwbGUgaXMgb3BhcXVlLCBjYXVzaW5nIGl0IHRvIG9ic3RydWN0IHRoZSBjb250ZW50LlxuICAgIEBpbmNsdWRlIGNkay1oaWdoLWNvbnRyYXN0KGFjdGl2ZSwgb2ZmKSB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbiAgfVxufVxuXG4vKiBDb2xvcnMgZm9yIHRoZSByaXBwbGUgZWxlbWVudHMuKi9cbkBtaXhpbiBtYXQtcmlwcGxlLWNvbG9yKCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogbWF0LWdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRmb3JlZ3JvdW5kOiBtYXAtZ2V0KCRjb25maWcsIGZvcmVncm91bmQpO1xuICAkZm9yZWdyb3VuZC1iYXNlOiBtYXAtZ2V0KCRmb3JlZ3JvdW5kLCBiYXNlKTtcblxuICAubWF0LXJpcHBsZS1lbGVtZW50IHtcbiAgICAvLyBJZiB0aGUgcmlwcGxlIGNvbG9yIGlzIHJlc29sdmVzIHRvIGEgY29sb3IgKnR5cGUqLCB3ZSBjYW4gdXNlIGl0IGRpcmVjdGx5LCBvdGhlcndpc2VcbiAgICAvLyAoZS5nLiBpdCByZXNvbHZlcyB0byBhIENTUyB2YXJpYWJsZSkgd2UgZmFsbCBiYWNrIHRvIHVzaW5nIHRoZSBjb2xvciBhbmQgc2V0dGluZyBhbiBvcGFjaXR5LlxuICAgIEBpZiAodHlwZS1vZigkZm9yZWdyb3VuZC1iYXNlKSA9PSBjb2xvcikge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgkZm9yZWdyb3VuZC1iYXNlLCAkbWF0LXJpcHBsZS1jb2xvci1vcGFjaXR5KTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGZvcmVncm91bmQtYmFzZTtcbiAgICAgIG9wYWNpdHk6ICRtYXQtcmlwcGxlLWNvbG9yLW9wYWNpdHk7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBtYXQtcmlwcGxlLXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiBtYXQtcHJpdmF0ZS1sZWdhY3ktZ2V0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICBAaW5jbHVkZSBtYXQtcHJpdmF0ZS1jaGVjay1kdXBsaWNhdGUtdGhlbWUtc3R5bGVzKCR0aGVtZSwgJ21hdC1yaXBwbGUnKSB7XG4gICAgJGNvbG9yOiBtYXQtZ2V0LWNvbG9yLWNvbmZpZygkdGhlbWUpO1xuICAgIEBpZiAkY29sb3IgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBtYXQtcmlwcGxlLWNvbG9yKCRjb2xvcik7XG4gICAgfVxuICB9XG59XG5cblxuLy8gVGhpcyBtaXhpbiBlbnN1cmVzIGFuIGVsZW1lbnQgc3BhbnMgdG8gZmlsbCB0aGUgbmVhcmVzdCBhbmNlc3RvciB3aXRoIGRlZmluZWQgcG9zaXRpb25pbmcuXG5AbWl4aW4gbWF0LWZpbGwge1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHJpZ2h0OiAwO1xuICBib3R0b206IDA7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbn1cblxuXG4vLy8gTWl4aW4gdGhhdCB0dXJucyBvbiBzdHJvbmcgZm9jdXMgaW5kaWNhdG9ycy5cbi8vL1xuLy8vIEBleGFtcGxlXG4vLy8gICAubXktYXBwIHtcbi8vLyAgICAgQGluY2x1ZGUgbWF0LXN0cm9uZy1mb2N1cy1pbmRpY2F0b3JzKCRjb25maWcpO1xuLy8vICAgfVxuQG1peGluIG1hdC1zdHJvbmctZm9jdXMtaW5kaWNhdG9ycygkY29uZmlnOiAoKSkge1xuICAvLyBEZWZhdWx0IGZvY3VzIGluZGljYXRvciBjb25maWcuXG4gICRkZWZhdWx0LWNvbmZpZzogKFxuICAgIGJvcmRlci1zdHlsZTogc29saWQsXG4gICAgYm9yZGVyLXdpZHRoOiAzcHgsXG4gICAgYm9yZGVyLXJhZGl1czogNHB4LFxuICApO1xuXG4gIC8vIE1lcmdlIGRlZmF1bHQgY29uZmlnIHdpdGggdXNlciBjb25maWcuXG4gICRjb25maWc6IG1hcC1tZXJnZSgkZGVmYXVsdC1jb25maWcsICRjb25maWcpO1xuICAkYm9yZGVyLXN0eWxlOiBtYXAtZ2V0KCRjb25maWcsIGJvcmRlci1zdHlsZSk7XG4gICRib3JkZXItd2lkdGg6IG1hcC1nZXQoJGNvbmZpZywgYm9yZGVyLXdpZHRoKTtcbiAgJGJvcmRlci1yYWRpdXM6IG1hcC1nZXQoJGNvbmZpZywgYm9yZGVyLXJhZGl1cyk7XG5cbiAgLy8gQmFzZSBzdHlsZXMgZm9yIGZvY3VzIGluZGljYXRvcnMuXG4gIC5tYXQtZm9jdXMtaW5kaWNhdG9yOjpiZWZvcmUge1xuICAgIEBpbmNsdWRlIG1hdC1maWxsKCk7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICBib3JkZXI6ICRib3JkZXItd2lkdGggJGJvcmRlci1zdHlsZSB0cmFuc3BhcmVudDtcbiAgICBib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cztcbiAgfVxuXG4gIC8vIEJ5IGRlZmF1bHQsIGFsbCBmb2N1cyBpbmRpY2F0b3JzIGFyZSBmbHVzaCB3aXRoIHRoZSBib3VuZGluZyBib3ggb2YgdGhlaXJcbiAgLy8gaG9zdCBlbGVtZW50LiBGb3IgcGFydGljdWxhciBlbGVtZW50cyAobGlzdGVkIGJlbG93KSwgZGVmYXVsdCBpbnNldC9vZmZzZXRcbiAgLy8gdmFsdWVzIGFyZSBuZWNlc3NhcnkgdG8gZW5zdXJlIHRoYXQgdGhlIGZvY3VzIGluZGljYXRvciBpcyBzdWZmaWNpZW50bHlcbiAgLy8gY29udHJhc3RpdmUgYW5kIHJlbmRlcnMgYXBwcm9wcmlhdGVseS5cblxuICAubWF0LWZvY3VzLWluZGljYXRvci5tYXQtZmxhdC1idXR0b246OmJlZm9yZSxcbiAgLm1hdC1mb2N1cy1pbmRpY2F0b3IubWF0LXJhaXNlZC1idXR0b246OmJlZm9yZSxcbiAgLm1hdC1mb2N1cy1pbmRpY2F0b3IubWF0LWZhYjo6YmVmb3JlLFxuICAubWF0LWZvY3VzLWluZGljYXRvci5tYXQtbWluaS1mYWI6OmJlZm9yZSxcbiAgLm1hdC1mb2N1cy1pbmRpY2F0b3IubWF0LWNoaXA6OmJlZm9yZSxcbiAgLm1hdC1mb2N1cy1pbmRpY2F0b3IubWF0LXNvcnQtaGVhZGVyLWNvbnRhaW5lcjo6YmVmb3JlIHtcbiAgICBtYXJnaW46IC0oJGJvcmRlci13aWR0aCArIDJweCk7XG4gIH1cblxuICAubWF0LWZvY3VzLWluZGljYXRvci5tYXQtc3Ryb2tlZC1idXR0b246OmJlZm9yZSxcbiAgLm1hdC1mb2N1cy1pbmRpY2F0b3IubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50OjpiZWZvcmUge1xuICAgIG1hcmdpbjogLSgkYm9yZGVyLXdpZHRoICsgM3B4KTtcbiAgfVxuXG4gIC5tYXQtZm9jdXMtaW5kaWNhdG9yLm1hdC10YWItbGluazo6YmVmb3JlLFxuICAubWF0LWZvY3VzLWluZGljYXRvci5tYXQtdGFiLWxhYmVsOjpiZWZvcmUge1xuICAgIG1hcmdpbjogNXB4O1xuICB9XG5cbiAgLy8gUmVuZGVyIHRoZSBmb2N1cyBpbmRpY2F0b3Igb24gZm9jdXMuIERlZmluaW5nIGEgcHNldWRvIGVsZW1lbnQnc1xuICAvLyBjb250ZW50IHdpbGwgY2F1c2UgaXQgdG8gcmVuZGVyLlxuXG4gIC8vIENoZWNrYm94ZXMsIHJhZGlvcywgYW5kIHNsaWRlIHRvZ2dsZXMgcmVuZGVyIGZvY3VzIGluZGljYXRvcnMgd2hlbiB0aGVcbiAgLy8gYXNzb2NpYXRlZCB2aXN1YWxseS1oaWRkZW4gaW5wdXQgaXMgZm9jdXNlZC5cbiAgLm1hdC1jaGVja2JveC1pbnB1dDpmb2N1cyB+IC5tYXQtZm9jdXMtaW5kaWNhdG9yOjpiZWZvcmUsXG4gIC5tYXQtcmFkaW8taW5wdXQ6Zm9jdXMgfiAubWF0LWZvY3VzLWluZGljYXRvcjo6YmVmb3JlLFxuICAubWF0LXNsaWRlLXRvZ2dsZS1pbnB1dDpmb2N1cyB+IC5tYXQtc2xpZGUtdG9nZ2xlLXRodW1iLWNvbnRhaW5lciAubWF0LWZvY3VzLWluZGljYXRvcjo6YmVmb3JlLFxuXG4gIC8vIEZvciBvcHRpb25zLCByZW5kZXIgdGhlIGZvY3VzIGluZGljYXRvciB3aGVuIHRoZSBjbGFzcyAubWF0LWFjdGl2ZVxuICAvLyBpcyBwcmVzZW50LlxuICAubWF0LWZvY3VzLWluZGljYXRvci5tYXQtb3B0aW9uLm1hdC1hY3RpdmU6OmJlZm9yZSxcblxuICAvLyBGb3IgY2FsZW5kYXIgY2VsbHMsIHJlbmRlciB0aGUgZm9jdXMgaW5kaWNhdG9yIHdoZW4gdGhlIHBhcmVudCBjZWxsIGlzXG4gIC8vIGZvY3VzZWQuXG4gIC5tYXQtY2FsZW5kYXItYm9keS1jZWxsOmZvY3VzIC5tYXQtZm9jdXMtaW5kaWNhdG9yOjpiZWZvcmUsXG5cbiAgLy8gRm9yIGFsbCBvdGhlciBjb21wb25lbnRzLCByZW5kZXIgdGhlIGZvY3VzIGluZGljYXRvciBvbiBmb2N1cy5cbiAgLm1hdC1mb2N1cy1pbmRpY2F0b3I6Zm9jdXM6OmJlZm9yZSB7XG4gICAgY29udGVudDogJyc7XG4gIH1cbn1cblxuLy8gTWl4aW4gdGhhdCBhcHBsaWVzIHRoZSBib3JkZXIgY29sb3IgZm9yIHRoZSBmb2N1cyBpbmRpY2F0b3JzLlxuQG1peGluIF9tYXQtc3Ryb25nLWZvY3VzLWluZGljYXRvcnMtYm9yZGVyLWNvbG9yKCRjb2xvcikge1xuICAubWF0LWZvY3VzLWluZGljYXRvcjo6YmVmb3JlIHtcbiAgICBib3JkZXItY29sb3I6ICRjb2xvcjtcbiAgfVxufVxuXG5AbWl4aW4gbWF0LXN0cm9uZy1mb2N1cy1pbmRpY2F0b3JzLWNvbG9yKCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogbWF0LWdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gIEBpbmNsdWRlIF9tYXQtc3Ryb25nLWZvY3VzLWluZGljYXRvcnMtYm9yZGVyLWNvbG9yKG1hdC1jb2xvcihtYXAtZ2V0KCRjb25maWcsIHByaW1hcnkpKSk7XG59XG5cbi8vLyBNaXhpbiB0aGF0IHNldHMgdGhlIGNvbG9yIG9mIHRoZSBmb2N1cyBpbmRpY2F0b3JzLlxuLy8vXG4vLy8gQHBhcmFtIHtjb2xvcnxtYXB9ICR0aGVtZS1vci1jb2xvclxuLy8vICAgSWYgdGhlbWUsIGZvY3VzIGluZGljYXRvcnMgYXJlIHNldCB0byB0aGUgcHJpbWFyeSBjb2xvciBvZiB0aGUgdGhlbWUuIElmXG4vLy8gICBjb2xvciwgZm9jdXMgaW5kaWNhdG9ycyBhcmUgc2V0IHRvIHRoYXQgY29sb3IuXG4vLy9cbi8vLyBAZXhhbXBsZVxuLy8vICAgLmRlbW8tZGFyay10aGVtZSB7XG4vLy8gICAgIEBpbmNsdWRlIG1hdC1zdHJvbmctZm9jdXMtaW5kaWNhdG9ycy10aGVtZSgkZGFyay10aGVtZS1tYXApO1xuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGVcbi8vLyAgIC5kZW1vLXJlZC10aGVtZSB7XG4vLy8gICAgIEBpbmNsdWRlIG1hdC1zdHJvbmctZm9jdXMtaW5kaWNhdG9ycy10aGVtZSgjZjAwKTtcbi8vLyAgIH1cbi8qIHN0eWxlbGludC1kaXNhYmxlLW5leHQtbGluZSBtYXRlcmlhbC90aGVtZS1taXhpbi1hcGkgKi9cbkBtaXhpbiBtYXQtc3Ryb25nLWZvY3VzLWluZGljYXRvcnMtdGhlbWUoJHRoZW1lLW9yLWNvbG9yKSB7XG4gIEBpZiB0eXBlLW9mKCR0aGVtZS1vci1jb2xvcikgIT0gJ21hcCcge1xuICAgIEBpbmNsdWRlIF9tYXQtc3Ryb25nLWZvY3VzLWluZGljYXRvcnMtYm9yZGVyLWNvbG9yKCR0aGVtZS1vci1jb2xvcik7XG4gIH1cbiAgQGVsc2Uge1xuICAgICR0aGVtZTogbWF0LXByaXZhdGUtbGVnYWN5LWdldC10aGVtZSgkdGhlbWUtb3ItY29sb3IpO1xuICAgIEBpbmNsdWRlIG1hdC1wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LXN0cm9uZy1mb2N1cy1pbmRpY2F0b3JzJykge1xuICAgICAgJGNvbG9yOiBtYXQtZ2V0LWNvbG9yLWNvbmZpZygkdGhlbWUpO1xuICAgICAgQGlmICRjb2xvciAhPSBudWxsIHtcbiAgICAgICAgQGluY2x1ZGUgbWF0LXN0cm9uZy1mb2N1cy1pbmRpY2F0b3JzLWNvbG9yKCRjb2xvcik7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vIE1peGluIHRoYXQgZW5zdXJlcyBmb2N1cyBpbmRpY2F0b3IgaG9zdCBlbGVtZW50cyBhcmUgcG9zaXRpb25lZCBzbyB0aGF0IHRoZSBmb2N1cyBpbmRpY2F0b3Jcbi8vIHBzZXVkbyBlbGVtZW50IHdpdGhpbiBpcyBwb3NpdGlvbmVkIHJlbGF0aXZlIHRvIHRoZSBob3N0LiBQcml2YXRlIG1peGluIGluY2x1ZGVkIHdpdGhpblxuLy8gYG1hdC1jb3JlYC5cbkBtaXhpbiBtYXQtcHJpdmF0ZS1zdHJvbmctZm9jdXMtaW5kaWNhdG9ycy1wb3NpdGlvbmluZygpIHtcbiAgLm1hdC1mb2N1cy1pbmRpY2F0b3Ige1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgfVxufVxuXG5cblxuLy8gVXRpbGl0eSBmb3IgZmV0Y2hpbmcgYSBuZXN0ZWQgdmFsdWUgZnJvbSBhIHR5cG9ncmFwaHkgY29uZmlnLlxuQGZ1bmN0aW9uIF9tYXQtZ2V0LXR5cGUtdmFsdWUoJGNvbmZpZywgJGxldmVsLCAkbmFtZSkge1xuICBAcmV0dXJuIG1hcC1nZXQobWFwLWdldCgkY29uZmlnLCAkbGV2ZWwpLCAkbmFtZSk7XG59XG5cbi8vIEdldHMgdGhlIGZvbnQgc2l6ZSBmb3IgYSBsZXZlbCBpbnNpZGUgYSB0eXBvZ3JhcGh5IGNvbmZpZy5cbkBmdW5jdGlvbiBtYXQtZm9udC1zaXplKCRjb25maWcsICRsZXZlbCkge1xuICBAcmV0dXJuIF9tYXQtZ2V0LXR5cGUtdmFsdWUoJGNvbmZpZywgJGxldmVsLCBmb250LXNpemUpO1xufVxuXG4vLyBHZXRzIHRoZSBsaW5lIGhlaWdodCBmb3IgYSBsZXZlbCBpbnNpZGUgYSB0eXBvZ3JhcGh5IGNvbmZpZy5cbkBmdW5jdGlvbiBtYXQtbGluZS1oZWlnaHQoJGNvbmZpZywgJGxldmVsKSB7XG4gIEByZXR1cm4gX21hdC1nZXQtdHlwZS12YWx1ZSgkY29uZmlnLCAkbGV2ZWwsIGxpbmUtaGVpZ2h0KTtcbn1cblxuLy8gR2V0cyB0aGUgZm9udCB3ZWlnaHQgZm9yIGEgbGV2ZWwgaW5zaWRlIGEgdHlwb2dyYXBoeSBjb25maWcuXG5AZnVuY3Rpb24gbWF0LWZvbnQtd2VpZ2h0KCRjb25maWcsICRsZXZlbCkge1xuICBAcmV0dXJuIF9tYXQtZ2V0LXR5cGUtdmFsdWUoJGNvbmZpZywgJGxldmVsLCBmb250LXdlaWdodCk7XG59XG5cbi8vIEdldHMgdGhlIGxldHRlciBzcGFjaW5nIGZvciBhIGxldmVsIGluc2lkZSBhIHR5cG9ncmFwaHkgY29uZmlnLlxuQGZ1bmN0aW9uIG1hdC1sZXR0ZXItc3BhY2luZygkY29uZmlnLCAkbGV2ZWwpIHtcbiAgQHJldHVybiBfbWF0LWdldC10eXBlLXZhbHVlKCRjb25maWcsICRsZXZlbCwgbGV0dGVyLXNwYWNpbmcpO1xufVxuXG4vLyBHZXRzIHRoZSBmb250LWZhbWlseSBmcm9tIGEgdHlwb2dyYXBoeSBjb25maWcgYW5kIHJlbW92ZXMgdGhlIHF1b3RlcyBhcm91bmQgaXQuXG5AZnVuY3Rpb24gbWF0LWZvbnQtZmFtaWx5KCRjb25maWcsICRsZXZlbDogbnVsbCkge1xuICAkZm9udC1mYW1pbHk6IG1hcC1nZXQoJGNvbmZpZywgZm9udC1mYW1pbHkpO1xuXG4gIEBpZiAkbGV2ZWwgIT0gbnVsbCB7XG4gICAgJGZvbnQtZmFtaWx5OiBfbWF0LWdldC10eXBlLXZhbHVlKCRjb25maWcsICRsZXZlbCwgZm9udC1mYW1pbHkpO1xuICB9XG5cbiAgLy8gR3VhcmQgYWdhaW5zdCB1bnF1b3Rpbmcgbm9uLXN0cmluZyB2YWx1ZXMsIGJlY2F1c2UgaXQncyBkZXByZWNhdGVkLlxuICBAcmV0dXJuIGlmKHR5cGUtb2YoJGZvbnQtZmFtaWx5KSA9PSBzdHJpbmcsIHVucXVvdGUoJGZvbnQtZmFtaWx5KSwgJGZvbnQtZmFtaWx5KTtcbn1cblxuLy8gT3V0cHV0cyB0aGUgc2hvcnRoYW5kIGBmb250YCBDU1MgcHJvcGVydHksIGJhc2VkIG9uIGEgc2V0IG9mIHR5cG9ncmFwaHkgdmFsdWVzLiBGYWxscyBiYWNrIHRvXG4vLyB0aGUgaW5kaXZpZHVhbCBwcm9wZXJ0aWVzIGlmIGEgdmFsdWUgdGhhdCBpc24ndCBhbGxvd2VkIGluIHRoZSBzaG9ydGhhbmQgaXMgcGFzc2VkIGluLlxuQG1peGluIG1hdC10eXBvZ3JhcGh5LWZvbnQtc2hvcnRoYW5kKCRmb250LXNpemUsICRmb250LXdlaWdodCwgJGxpbmUtaGVpZ2h0LCAkZm9udC1mYW1pbHkpIHtcbiAgLy8gSWYgYW55IG9mIHRoZSB2YWx1ZXMgYXJlIHNldCB0byBgaW5oZXJpdGAsIHdlIGNhbid0IHVzZSB0aGUgc2hvcnRoYW5kXG4gIC8vIHNvIHdlIGZhbGwgYmFjayB0byBwYXNzaW5nIGluIHRoZSBpbmRpdmlkdWFsIHByb3BlcnRpZXMuXG4gIEBpZiAoJGZvbnQtc2l6ZSA9PSBpbmhlcml0IG9yXG4gICAgICAgJGZvbnQtd2VpZ2h0ID09IGluaGVyaXQgb3JcbiAgICAgICAkbGluZS1oZWlnaHQgPT0gaW5oZXJpdCBvclxuICAgICAgICRmb250LWZhbWlseSA9PSBpbmhlcml0IG9yXG4gICAgICAgJGZvbnQtc2l6ZSA9PSBudWxsIG9yXG4gICAgICAgJGZvbnQtd2VpZ2h0ID09IG51bGwgb3JcbiAgICAgICAkbGluZS1oZWlnaHQgPT0gbnVsbCBvclxuICAgICAgICRmb250LWZhbWlseSA9PSBudWxsKSB7XG5cbiAgICBmb250LXNpemU6ICRmb250LXNpemU7XG4gICAgZm9udC13ZWlnaHQ6ICRmb250LXdlaWdodDtcbiAgICBsaW5lLWhlaWdodDogJGxpbmUtaGVpZ2h0O1xuICAgIGZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIC8vIE90aGVyd2lzZSB1c2UgdGhlIHNob3J0aGFuZCBgZm9udGAsIGJlY2F1c2UgaXQncyB0aGUgbGVhc3QgYW1vdW50IG9mIGJ5dGVzLiBOb3RlXG4gICAgLy8gdGhhdCB3ZSBuZWVkIHRvIHVzZSBpbnRlcnBvbGF0aW9uIGZvciBgZm9udC1zaXplL2xpbmUtaGVpZ2h0YCBpbiBvcmRlciB0byBwcmV2ZW50XG4gICAgLy8gU2FzcyBmcm9tIGRpdmlkaW5nIHRoZSB0d28gdmFsdWVzLlxuICAgIGZvbnQ6ICRmb250LXdlaWdodCAjeyRmb250LXNpemV9LyN7JGxpbmUtaGVpZ2h0fSAkZm9udC1mYW1pbHk7XG4gIH1cbn1cblxuLy8gQ29udmVydHMgYSB0eXBvZ3JhcGh5IGxldmVsIGludG8gQ1NTIHN0eWxlcy5cbkBtaXhpbiBtYXQtdHlwb2dyYXBoeS1sZXZlbC10by1zdHlsZXMoJGNvbmZpZywgJGxldmVsKSB7XG4gICRmb250LXNpemU6IG1hdC1mb250LXNpemUoJGNvbmZpZywgJGxldmVsKTtcbiAgJGZvbnQtd2VpZ2h0OiBtYXQtZm9udC13ZWlnaHQoJGNvbmZpZywgJGxldmVsKTtcbiAgJGxpbmUtaGVpZ2h0OiBtYXQtbGluZS1oZWlnaHQoJGNvbmZpZywgJGxldmVsKTtcbiAgJGZvbnQtZmFtaWx5OiBtYXQtZm9udC1mYW1pbHkoJGNvbmZpZywgJGxldmVsKTtcblxuICBAaW5jbHVkZSBtYXQtdHlwb2dyYXBoeS1mb250LXNob3J0aGFuZCgkZm9udC1zaXplLCAkZm9udC13ZWlnaHQsICRsaW5lLWhlaWdodCwgJGZvbnQtZmFtaWx5KTtcbiAgbGV0dGVyLXNwYWNpbmc6IG1hdC1sZXR0ZXItc3BhY2luZygkY29uZmlnLCAkbGV2ZWwpO1xufVxuXG5cbkBtaXhpbiBtYXQtb3B0aW9uLWNvbG9yKCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogbWF0LWdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRmb3JlZ3JvdW5kOiBtYXAtZ2V0KCRjb25maWcsIGZvcmVncm91bmQpO1xuICAkYmFja2dyb3VuZDogbWFwLWdldCgkY29uZmlnLCBiYWNrZ3JvdW5kKTtcbiAgJHByaW1hcnk6IG1hcC1nZXQoJGNvbmZpZywgcHJpbWFyeSk7XG4gICRhY2NlbnQ6IG1hcC1nZXQoJGNvbmZpZywgYWNjZW50KTtcbiAgJHdhcm46IG1hcC1nZXQoJGNvbmZpZywgd2Fybik7XG5cbiAgLm1hdC1vcHRpb24ge1xuICAgIGNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIHRleHQpO1xuXG4gICAgJjpob3Zlcjpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpLFxuICAgICY6Zm9jdXM6bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKSB7XG4gICAgICBiYWNrZ3JvdW5kOiBtYXQtY29sb3IoJGJhY2tncm91bmQsIGhvdmVyKTtcbiAgICB9XG5cbiAgICAvLyBJbiBtdWx0aXBsZSBtb2RlIHRoZXJlIGlzIGEgY2hlY2tib3ggdG8gc2hvdyB0aGF0IHRoZSBvcHRpb24gaXMgc2VsZWN0ZWQuXG4gICAgJi5tYXQtc2VsZWN0ZWQ6bm90KC5tYXQtb3B0aW9uLW11bHRpcGxlKTpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpIHtcbiAgICAgIGJhY2tncm91bmQ6IG1hdC1jb2xvcigkYmFja2dyb3VuZCwgaG92ZXIpO1xuICAgIH1cblxuICAgICYubWF0LWFjdGl2ZSB7XG4gICAgICBiYWNrZ3JvdW5kOiBtYXQtY29sb3IoJGJhY2tncm91bmQsIGhvdmVyKTtcbiAgICAgIGNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIHRleHQpO1xuICAgIH1cblxuICAgICYubWF0LW9wdGlvbi1kaXNhYmxlZCB7XG4gICAgICBjb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBoaW50LXRleHQpO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtcHJpbWFyeSAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWQ6bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKSB7XG4gICAgY29sb3I6IG1hdC1jb2xvcigkcHJpbWFyeSwgdGV4dCk7XG4gIH1cblxuICAubWF0LWFjY2VudCAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWQ6bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKSB7XG4gICAgY29sb3I6IG1hdC1jb2xvcigkYWNjZW50LCB0ZXh0KTtcbiAgfVxuXG4gIC5tYXQtd2FybiAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWQ6bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKSB7XG4gICAgY29sb3I6IG1hdC1jb2xvcigkd2FybiwgdGV4dCk7XG4gIH1cbn1cblxuQG1peGluIG1hdC1vcHRpb24tdHlwb2dyYXBoeSgkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IG1hdC1nZXQtdHlwb2dyYXBoeS1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gIC5tYXQtb3B0aW9uIHtcbiAgICBmb250OiB7XG4gICAgICBmYW1pbHk6IG1hdC1mb250LWZhbWlseSgkY29uZmlnKTtcbiAgICAgIHNpemU6IG1hdC1mb250LXNpemUoJGNvbmZpZywgc3ViaGVhZGluZy0yKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIF9tYXQtb3B0aW9uLWRlbnNpdHkoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIG1hdC1vcHRpb24tdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZykge1xuICAkdGhlbWU6IG1hdC1wcml2YXRlLWxlZ2FjeS1nZXQtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZyk7XG4gIEBpbmNsdWRlIG1hdC1wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LW9wdGlvbicpIHtcbiAgICAkY29sb3I6IG1hdC1nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgJGRlbnNpdHk6IG1hdC1nZXQtZGVuc2l0eS1jb25maWcoJHRoZW1lKTtcbiAgICAkdHlwb2dyYXBoeTogbWF0LWdldC10eXBvZ3JhcGh5LWNvbmZpZygkdGhlbWUpO1xuXG4gICAgQGlmICRjb2xvciAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIG1hdC1vcHRpb24tY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gICAgQGlmICRkZW5zaXR5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgX21hdC1vcHRpb24tZGVuc2l0eSgkZGVuc2l0eSk7XG4gICAgfVxuICAgIEBpZiAkdHlwb2dyYXBoeSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIG1hdC1vcHRpb24tdHlwb2dyYXBoeSgkdHlwb2dyYXBoeSk7XG4gICAgfVxuICB9XG59XG5cblxuXG5cblxuQG1peGluIG1hdC1vcHRncm91cC1jb2xvcigkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IG1hdC1nZXQtY29sb3ItY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAkZm9yZWdyb3VuZDogbWFwLWdldCgkY29uZmlnLCBmb3JlZ3JvdW5kKTtcblxuICAubWF0LW9wdGdyb3VwLWxhYmVsIHtcbiAgICBjb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBzZWNvbmRhcnktdGV4dCk7XG4gIH1cblxuICAubWF0LW9wdGdyb3VwLWRpc2FibGVkIC5tYXQtb3B0Z3JvdXAtbGFiZWwge1xuICAgIGNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIGhpbnQtdGV4dCk7XG4gIH1cbn1cblxuQG1peGluIG1hdC1vcHRncm91cC10eXBvZ3JhcGh5KCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogbWF0LWdldC10eXBvZ3JhcGh5LWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgLm1hdC1vcHRncm91cC1sYWJlbCB7XG4gICAgQGluY2x1ZGUgbWF0LXR5cG9ncmFwaHktbGV2ZWwtdG8tc3R5bGVzKCRjb25maWcsIGJvZHktMik7XG4gIH1cbn1cblxuQG1peGluIF9tYXQtb3B0Z3JvdXAtZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gbWF0LW9wdGdyb3VwLXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiBtYXQtcHJpdmF0ZS1sZWdhY3ktZ2V0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICBAaW5jbHVkZSBtYXQtcHJpdmF0ZS1jaGVjay1kdXBsaWNhdGUtdGhlbWUtc3R5bGVzKCR0aGVtZSwgJ21hdC1vcHRncm91cCcpIHtcbiAgICAkY29sb3I6IG1hdC1nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgJGRlbnNpdHk6IG1hdC1nZXQtZGVuc2l0eS1jb25maWcoJHRoZW1lKTtcbiAgICAkdHlwb2dyYXBoeTogbWF0LWdldC10eXBvZ3JhcGh5LWNvbmZpZygkdGhlbWUpO1xuXG4gICAgQGlmICRjb2xvciAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIG1hdC1vcHRncm91cC1jb2xvcigkY29sb3IpO1xuICAgIH1cbiAgICBAaWYgJGRlbnNpdHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBfbWF0LW9wdGdyb3VwLWRlbnNpdHkoJGRlbnNpdHkpO1xuICAgIH1cbiAgICBAaWYgJHR5cG9ncmFwaHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBtYXQtb3B0Z3JvdXAtdHlwb2dyYXBoeSgkdHlwb2dyYXBoeSk7XG4gICAgfVxuICB9XG59XG5cblxuXG5AbWl4aW4gbWF0LXBzZXVkby1jaGVja2JveC1jb2xvcigkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IG1hdC1nZXQtY29sb3ItY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAkaXMtZGFyay10aGVtZTogbWFwLWdldCgkY29uZmlnLCBpcy1kYXJrKTtcbiAgJHByaW1hcnk6IG1hcC1nZXQoJGNvbmZpZywgcHJpbWFyeSk7XG4gICRhY2NlbnQ6IG1hcC1nZXQoJGNvbmZpZywgYWNjZW50KTtcbiAgJHdhcm46IG1hcC1nZXQoJGNvbmZpZywgd2Fybik7XG4gICRiYWNrZ3JvdW5kOiBtYXAtZ2V0KCRjb25maWcsIGJhY2tncm91bmQpO1xuXG4gIC8vIE5PVEUodHJhdmlza2F1Zm1hbik6IFdoaWxlIHRoZSBzcGVjIGNhbGxzIGZvciB0cmFuc2x1Y2VudCBibGFja3Mvd2hpdGVzIGZvciBkaXNhYmxlZCBjb2xvcnMsXG4gIC8vIHRoaXMgZG9lcyBub3Qgd29yayB3ZWxsIHdpdGggZWxlbWVudHMgbGF5ZXJlZCBvbiB0b3Agb2Ygb25lIGFub3RoZXIuIFRvIGdldCBhcm91bmQgdGhpcyB3ZVxuICAvLyBibGVuZCB0aGUgY29sb3JzIHRvZ2V0aGVyIGJhc2VkIG9uIHRoZSBiYXNlIGNvbG9yIGFuZCB0aGUgdGhlbWUgYmFja2dyb3VuZC5cbiAgJHdoaXRlLTMwcGN0LW9wYWNpdHktb24tZGFyazogIzY4Njg2ODtcbiAgJGJsYWNrLTI2cGN0LW9wYWNpdHktb24tbGlnaHQ6ICNiMGIwYjA7XG4gICRkaXNhYmxlZC1jb2xvcjogaWYoJGlzLWRhcmstdGhlbWUsICR3aGl0ZS0zMHBjdC1vcGFjaXR5LW9uLWRhcmssICRibGFjay0yNnBjdC1vcGFjaXR5LW9uLWxpZ2h0KTtcbiAgJGNvbG9yZWQtYm94LXNlbGVjdG9yOiAnLm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZCwgLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZSc7XG5cbiAgLm1hdC1wc2V1ZG8tY2hlY2tib3gge1xuICAgIGNvbG9yOiBtYXQtY29sb3IobWFwLWdldCgkY29uZmlnLCBmb3JlZ3JvdW5kKSwgc2Vjb25kYXJ5LXRleHQpO1xuXG4gICAgJjo6YWZ0ZXIge1xuICAgICAgY29sb3I6IG1hdC1jb2xvcigkYmFja2dyb3VuZCwgYmFja2dyb3VuZCk7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1wc2V1ZG8tY2hlY2tib3gtZGlzYWJsZWQge1xuICAgIGNvbG9yOiAkZGlzYWJsZWQtY29sb3I7XG4gIH1cblxuICAubWF0LXByaW1hcnkgLm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZCxcbiAgLm1hdC1wcmltYXJ5IC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGUge1xuICAgIGJhY2tncm91bmQ6IG1hdC1jb2xvcihtYXAtZ2V0KCRjb25maWcsIHByaW1hcnkpKTtcbiAgfVxuXG4gIC8vIERlZmF1bHQgdG8gdGhlIGFjY2VudCBjb2xvci4gTm90ZSB0aGF0IHRoZSBwc2V1ZG8gY2hlY2tib3hlcyBhcmUgbWVhbnQgdG8gaW5oZXJpdCB0aGVcbiAgLy8gdGhlbWUgZnJvbSB0aGVpciBwYXJlbnQsIHJhdGhlciB0aGFuIGltcGxlbWVudGluZyB0aGVpciBvd24gdGhlbWluZywgd2hpY2ggaXMgd2h5IHdlXG4gIC8vIGRvbid0IGF0dGFjaCB0byB0aGUgYG1hdC0qYCBjbGFzc2VzLiBBbHNvIG5vdGUgdGhhdCB0aGlzIG5lZWRzIHRvIGJlIGJlbG93IGAubWF0LXByaW1hcnlgXG4gIC8vIGluIG9yZGVyIHRvIGFsbG93IGZvciB0aGUgY29sb3IgdG8gYmUgb3ZlcndyaXR0ZW4gaWYgdGhlIGNoZWNrYm94IGlzIGluc2lkZSBhIHBhcmVudCB0aGF0XG4gIC8vIGhhcyBgbWF0LWFjY2VudGAgYW5kIGlzIHBsYWNlZCBpbnNpZGUgYW5vdGhlciBwYXJlbnQgdGhhdCBoYXMgYG1hdC1wcmltYXJ5YC5cbiAgLm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZCxcbiAgLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZSxcbiAgLm1hdC1hY2NlbnQgLm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZCxcbiAgLm1hdC1hY2NlbnQgLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZSB7XG4gICAgYmFja2dyb3VuZDogbWF0LWNvbG9yKG1hcC1nZXQoJGNvbmZpZywgYWNjZW50KSk7XG4gIH1cblxuICAubWF0LXdhcm4gLm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZCxcbiAgLm1hdC13YXJuIC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGUge1xuICAgIGJhY2tncm91bmQ6IG1hdC1jb2xvcihtYXAtZ2V0KCRjb25maWcsIHdhcm4pKTtcbiAgfVxuXG4gIC5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWQsXG4gIC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGUge1xuICAgICYubWF0LXBzZXVkby1jaGVja2JveC1kaXNhYmxlZCB7XG4gICAgICBiYWNrZ3JvdW5kOiAkZGlzYWJsZWQtY29sb3I7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBtYXQtcHNldWRvLWNoZWNrYm94LXR5cG9ncmFwaHkoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIF9tYXQtcHNldWRvLWNoZWNrYm94LWRlbnNpdHkoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIG1hdC1wc2V1ZG8tY2hlY2tib3gtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZykge1xuICAkdGhlbWU6IG1hdC1wcml2YXRlLWxlZ2FjeS1nZXQtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZyk7XG4gIEBpbmNsdWRlIG1hdC1wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LXBzZXVkby1jaGVja2JveCcpIHtcbiAgICAkY29sb3I6IG1hdC1nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgJGRlbnNpdHk6IG1hdC1nZXQtZGVuc2l0eS1jb25maWcoJHRoZW1lKTtcbiAgICAkdHlwb2dyYXBoeTogbWF0LWdldC10eXBvZ3JhcGh5LWNvbmZpZygkdGhlbWUpO1xuXG4gICAgQGlmICRjb2xvciAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIG1hdC1wc2V1ZG8tY2hlY2tib3gtY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gICAgQGlmICRkZW5zaXR5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgX21hdC1wc2V1ZG8tY2hlY2tib3gtZGVuc2l0eSgkZGVuc2l0eSk7XG4gICAgfVxuICAgIEBpZiAkdHlwb2dyYXBoeSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIG1hdC1wc2V1ZG8tY2hlY2tib3gtdHlwb2dyYXBoeSgkdHlwb2dyYXBoeSk7XG4gICAgfVxuICB9XG59XG5cblxuXG4vLyBSZXByZXNlbnRzIGEgdHlwb2dyYXBoeSBsZXZlbCBmcm9tIHRoZSBNYXRlcmlhbCBkZXNpZ24gc3BlYy5cbkBmdW5jdGlvbiBtYXQtdHlwb2dyYXBoeS1sZXZlbChcbiAgJGZvbnQtc2l6ZSxcbiAgJGxpbmUtaGVpZ2h0OiAkZm9udC1zaXplLFxuICAkZm9udC13ZWlnaHQ6IDQwMCxcbiAgJGZvbnQtZmFtaWx5OiBudWxsLFxuICAkbGV0dGVyLXNwYWNpbmc6IG5vcm1hbCkge1xuXG4gIEByZXR1cm4gKFxuICAgIGZvbnQtc2l6ZTogJGZvbnQtc2l6ZSxcbiAgICBsaW5lLWhlaWdodDogJGxpbmUtaGVpZ2h0LFxuICAgIGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQsXG4gICAgZm9udC1mYW1pbHk6ICRmb250LWZhbWlseSxcbiAgICBsZXR0ZXItc3BhY2luZzogJGxldHRlci1zcGFjaW5nXG4gICk7XG59XG5cbi8vIFJlcHJlc2VudHMgYSBjb2xsZWN0aW9uIG9mIHR5cG9ncmFwaHkgbGV2ZWxzLlxuLy8gRGVmYXVsdHMgY29tZSBmcm9tIGh0dHBzOi8vbWF0ZXJpYWwuaW8vZ3VpZGVsaW5lcy9zdHlsZS90eXBvZ3JhcGh5Lmh0bWxcbi8vIE5vdGU6IFRoZSBzcGVjIGRvZXNuJ3QgbWVudGlvbiBsZXR0ZXIgc3BhY2luZy4gVGhlIHZhbHVlcyBoZXJlIGNvbWUgZnJvbVxuLy8gZXllYmFsbGluZyBpdCB1bnRpbCBpdCBsb29rZWQgZXhhY3RseSBsaWtlIHRoZSBzcGVjIGV4YW1wbGVzLlxuQGZ1bmN0aW9uIG1hdC10eXBvZ3JhcGh5LWNvbmZpZyhcbiAgJGZvbnQtZmFtaWx5OiAgICdSb2JvdG8sIFwiSGVsdmV0aWNhIE5ldWVcIiwgc2Fucy1zZXJpZicsXG4gICRkaXNwbGF5LTQ6ICAgICBtYXQtdHlwb2dyYXBoeS1sZXZlbCgxMTJweCwgMTEycHgsIDMwMCwgJGxldHRlci1zcGFjaW5nOiAtMC4wNWVtKSxcbiAgJGRpc3BsYXktMzogICAgIG1hdC10eXBvZ3JhcGh5LWxldmVsKDU2cHgsIDU2cHgsIDQwMCwgJGxldHRlci1zcGFjaW5nOiAtMC4wMmVtKSxcbiAgJGRpc3BsYXktMjogICAgIG1hdC10eXBvZ3JhcGh5LWxldmVsKDQ1cHgsIDQ4cHgsIDQwMCwgJGxldHRlci1zcGFjaW5nOiAtMC4wMDVlbSksXG4gICRkaXNwbGF5LTE6ICAgICBtYXQtdHlwb2dyYXBoeS1sZXZlbCgzNHB4LCA0MHB4LCA0MDApLFxuICAkaGVhZGxpbmU6ICAgICAgbWF0LXR5cG9ncmFwaHktbGV2ZWwoMjRweCwgMzJweCwgNDAwKSxcbiAgJHRpdGxlOiAgICAgICAgIG1hdC10eXBvZ3JhcGh5LWxldmVsKDIwcHgsIDMycHgsIDUwMCksXG4gICRzdWJoZWFkaW5nLTI6ICBtYXQtdHlwb2dyYXBoeS1sZXZlbCgxNnB4LCAyOHB4LCA0MDApLFxuICAkc3ViaGVhZGluZy0xOiAgbWF0LXR5cG9ncmFwaHktbGV2ZWwoMTVweCwgMjRweCwgNDAwKSxcbiAgJGJvZHktMjogICAgICAgIG1hdC10eXBvZ3JhcGh5LWxldmVsKDE0cHgsIDI0cHgsIDUwMCksXG4gICRib2R5LTE6ICAgICAgICBtYXQtdHlwb2dyYXBoeS1sZXZlbCgxNHB4LCAyMHB4LCA0MDApLFxuICAkY2FwdGlvbjogICAgICAgbWF0LXR5cG9ncmFwaHktbGV2ZWwoMTJweCwgMjBweCwgNDAwKSxcbiAgJGJ1dHRvbjogICAgICAgIG1hdC10eXBvZ3JhcGh5LWxldmVsKDE0cHgsIDE0cHgsIDUwMCksXG4gIC8vIExpbmUtaGVpZ2h0IG11c3QgYmUgdW5pdC1sZXNzIGZyYWN0aW9uIG9mIHRoZSBmb250LXNpemUuXG4gICRpbnB1dDogICAgICAgICBtYXQtdHlwb2dyYXBoeS1sZXZlbChpbmhlcml0LCAxLjEyNSwgNDAwKVxuKSB7XG5cbiAgLy8gRGVjbGFyZSBhbiBpbml0aWFsIG1hcCB3aXRoIGFsbCBvZiB0aGUgbGV2ZWxzLlxuICAkY29uZmlnOiAoXG4gICAgZGlzcGxheS00OiAgICAgICRkaXNwbGF5LTQsXG4gICAgZGlzcGxheS0zOiAgICAgICRkaXNwbGF5LTMsXG4gICAgZGlzcGxheS0yOiAgICAgICRkaXNwbGF5LTIsXG4gICAgZGlzcGxheS0xOiAgICAgICRkaXNwbGF5LTEsXG4gICAgaGVhZGxpbmU6ICAgICAgICRoZWFkbGluZSxcbiAgICB0aXRsZTogICAgICAgICAgJHRpdGxlLFxuICAgIHN1YmhlYWRpbmctMjogICAkc3ViaGVhZGluZy0yLFxuICAgIHN1YmhlYWRpbmctMTogICAkc3ViaGVhZGluZy0xLFxuICAgIGJvZHktMjogICAgICAgICAkYm9keS0yLFxuICAgIGJvZHktMTogICAgICAgICAkYm9keS0xLFxuICAgIGNhcHRpb246ICAgICAgICAkY2FwdGlvbixcbiAgICBidXR0b246ICAgICAgICAgJGJ1dHRvbixcbiAgICBpbnB1dDogICAgICAgICAgJGlucHV0LFxuICApO1xuXG4gIC8vIExvb3AgdGhyb3VnaCB0aGUgbGV2ZWxzIGFuZCBzZXQgdGhlIGBmb250LWZhbWlseWAgb2YgdGhlIG9uZXMgdGhhdCBkb24ndCBoYXZlIG9uZSB0byB0aGUgYmFzZS5cbiAgLy8gTm90ZSB0aGF0IFNhc3MgY2FuJ3QgbW9kaWZ5IG1hcHMgaW4gcGxhY2UsIHdoaWNoIG1lYW5zIHRoYXQgd2UgbmVlZCB0byBtZXJnZSBhbmQgcmUtYXNzaWduLlxuICBAZWFjaCAka2V5LCAkbGV2ZWwgaW4gJGNvbmZpZyB7XG4gICAgQGlmIG1hcC1nZXQoJGxldmVsLCBmb250LWZhbWlseSkgPT0gbnVsbCB7XG4gICAgICAkbmV3LWxldmVsOiBtYXAtbWVyZ2UoJGxldmVsLCAoZm9udC1mYW1pbHk6ICRmb250LWZhbWlseSkpO1xuICAgICAgJGNvbmZpZzogbWFwLW1lcmdlKCRjb25maWcsICgka2V5OiAkbmV3LWxldmVsKSk7XG4gICAgfVxuICB9XG5cbiAgLy8gQWRkIHRoZSBiYXNlIGZvbnQgZmFtaWx5IHRvIHRoZSBjb25maWcuXG4gIEByZXR1cm4gbWFwLW1lcmdlKCRjb25maWcsIChmb250LWZhbWlseTogJGZvbnQtZmFtaWx5KSk7XG59XG5cbi8vIFdoZXRoZXIgYSBjb25maWcgaXMgZm9yIHRoZSBNYXRlcmlhbCBEZXNpZ24gMjAxOCB0eXBvZ3JhcGh5IHN5c3RlbS5cbkBmdW5jdGlvbiBtYXQtcHJpdmF0ZS10eXBvZ3JhcGh5LWlzLTIwMTgtY29uZmlnKCRjb25maWcpIHtcbiAgQHJldHVybiBtYXAtZ2V0KCRjb25maWcsIGhlYWRsaW5lLTEpICE9IG51bGw7XG59XG5cbi8vIFdoZXRoZXIgYSBjb25maWcgaXMgZm9yIHRoZSBNYXRlcmlhbCBEZXNpZ24gMjAxNCB0eXBvZ3JhcGh5IHN5c3RlbS5cbkBmdW5jdGlvbiBtYXQtcHJpdmF0ZS10eXBvZ3JhcGh5LWlzLTIwMTQtY29uZmlnKCRjb25maWcpIHtcbiAgQHJldHVybiBtYXAtZ2V0KCRjb25maWcsIGhlYWRsaW5lKSAhPSBudWxsO1xufVxuXG4vLyBHaXZlbiBhIGNvbmZpZyBmb3IgZWl0aGVyIHRoZSAyMDE0IG9yIDIwMTggTWF0ZXJpYWwgRGVzaWduIHR5cG9ncmFwaHkgc3lzdGVtLFxuLy8gcHJvZHVjZXMgYSBub3JtYWxpemVkIHR5cG9ncmFwaHkgY29uZmlnIGZvciB0aGUgMjAxNCBNYXRlcmlhbCBEZXNpZ24gdHlwb2dyYXBoeSBzeXN0ZW0uXG4vLyAyMDE0IC0gaHR0cHM6Ly9tYXRlcmlhbC5pby9hcmNoaXZlL2d1aWRlbGluZXMvc3R5bGUvdHlwb2dyYXBoeS5odG1sI3R5cG9ncmFwaHktc3R5bGVzXG4vLyAyMDE4IC0gaHR0cHM6Ly9tYXRlcmlhbC5pby9kZXNpZ24vdHlwb2dyYXBoeS90aGUtdHlwZS1zeXN0ZW0uaHRtbCN0eXBlLXNjYWxlXG5AZnVuY3Rpb24gbWF0LXByaXZhdGUtdHlwb2dyYXBoeS10by0yMDE0LWNvbmZpZygkY29uZmlnKSB7XG4gIEBpZiBtYXQtcHJpdmF0ZS10eXBvZ3JhcGh5LWlzLTIwMTgtY29uZmlnKCRjb25maWcpIHtcbiAgICBAcmV0dXJuIG1hdC10eXBvZ3JhcGh5LWNvbmZpZyhcbiAgICAgICAgJGRpc3BsYXktNDogbWFwLWdldCgkY29uZmlnLCBoZWFkbGluZS0xKSxcbiAgICAgICAgJGRpc3BsYXktMzogbWFwLWdldCgkY29uZmlnLCBoZWFkbGluZS0yKSxcbiAgICAgICAgJGRpc3BsYXktMjogbWFwLWdldCgkY29uZmlnLCBoZWFkbGluZS0zKSxcbiAgICAgICAgJGRpc3BsYXktMTogbWFwLWdldCgkY29uZmlnLCBoZWFkbGluZS00KSxcbiAgICAgICAgJGhlYWRsaW5lOiBtYXAtZ2V0KCRjb25maWcsIGhlYWRsaW5lLTUpLFxuICAgICAgICAkdGl0bGU6IG1hcC1nZXQoJGNvbmZpZywgaGVhZGxpbmUtNiksXG4gICAgICAgICRzdWJoZWFkaW5nLTI6IG1hcC1nZXQoJGNvbmZpZywgc3VidGl0bGUtMSksXG4gICAgICAgICRzdWJoZWFkaW5nLTE6IG1hcC1nZXQoJGNvbmZpZywgc3VidGl0bGUtMiksXG4gICAgICAgICRib2R5LTI6IG1hcC1nZXQoJGNvbmZpZywgYm9keS0xKSxcbiAgICAgICAgJGJvZHktMTogbWFwLWdldCgkY29uZmlnLCBib2R5LTIpLFxuICAgICAgICAkYnV0dG9uOiBtYXAtZ2V0KCRjb25maWcsIGJ1dHRvbiksXG4gICAgICAgICRjYXB0aW9uOiBtYXAtZ2V0KCRjb25maWcsIGNhcHRpb24pLFxuICAgICk7XG4gIH1cbiAgQHJldHVybiAkY29uZmlnO1xufVxuXG4vLyBHaXZlbiBhIGNvbmZpZyBmb3IgZWl0aGVyIHRoZSAyMDE0IG9yIDIwMTggTWF0ZXJpYWwgRGVzaWduIHR5cG9ncmFwaHkgc3lzdGVtLFxuLy8gcHJvZHVjZXMgYSBub3JtYWxpemVkIHR5cG9ncmFwaHkgY29uZmlnIGZvciB0aGUgMjAxOCBNYXRlcmlhbCBEZXNpZ24gdHlwb2dyYXBoeSBzeXN0ZW0uXG4vLyAyMDE0IC0gaHR0cHM6Ly9tYXRlcmlhbC5pby9hcmNoaXZlL2d1aWRlbGluZXMvc3R5bGUvdHlwb2dyYXBoeS5odG1sI3R5cG9ncmFwaHktc3R5bGVzXG4vLyAyMDE4IC0gaHR0cHM6Ly9tYXRlcmlhbC5pby9kZXNpZ24vdHlwb2dyYXBoeS90aGUtdHlwZS1zeXN0ZW0uaHRtbCN0eXBlLXNjYWxlXG5AZnVuY3Rpb24gbWF0LXByaXZhdGUtdHlwb2dyYXBoeS10by0yMDE4LWNvbmZpZygkY29uZmlnKSB7XG4gIEBpZiBtYXQtcHJpdmF0ZS10eXBvZ3JhcGh5LWlzLTIwMTQtY29uZmlnKCRjb25maWcpIHtcbiAgICBAcmV0dXJuIChcbiAgICAgICAgaGVhZGxpbmUtMTogbWFwLWdldCgkY29uZmlnLCBkaXNwbGF5LTQpLFxuICAgICAgICBoZWFkbGluZS0yOiBtYXAtZ2V0KCRjb25maWcsIGRpc3BsYXktMyksXG4gICAgICAgIGhlYWRsaW5lLTM6IG1hcC1nZXQoJGNvbmZpZywgZGlzcGxheS0yKSxcbiAgICAgICAgaGVhZGxpbmUtNDogbWFwLWdldCgkY29uZmlnLCBkaXNwbGF5LTEpLFxuICAgICAgICBoZWFkbGluZS01OiBtYXAtZ2V0KCRjb25maWcsIGhlYWRsaW5lKSxcbiAgICAgICAgaGVhZGxpbmUtNjogbWFwLWdldCgkY29uZmlnLCB0aXRsZSksXG4gICAgICAgIHN1YnRpdGxlLTE6IG1hcC1nZXQoJGNvbmZpZywgc3ViaGVhZGluZy0yKSxcbiAgICAgICAgc3VidGl0bGUtMjogbWFwLWdldCgkY29uZmlnLCBzdWJoZWFkaW5nLTEpLFxuICAgICAgICBib2R5LTE6IG1hcC1nZXQoJGNvbmZpZywgYm9keS0yKSxcbiAgICAgICAgYm9keS0yOiBtYXAtZ2V0KCRjb25maWcsIGJvZHktMSksXG4gICAgICAgIGJ1dHRvbjogbWFwLWdldCgkY29uZmlnLCBidXR0b24pLFxuICAgICAgICBjYXB0aW9uOiBtYXAtZ2V0KCRjb25maWcsIGNhcHRpb24pLFxuICAgICk7XG4gIH1cbiAgQHJldHVybiAkY29uZmlnO1xufVxuXG4vLyBBZGRzIHRoZSBiYXNlIHR5cG9ncmFwaHkgc3R5bGVzLCBiYXNlZCBvbiBhIGNvbmZpZy5cbi8qIHN0eWxlbGludC1kaXNhYmxlLW5leHQtbGluZSBtYXRlcmlhbC90aGVtZS1taXhpbi1hcGkgKi9cbkBtaXhpbiBtYXQtYmFzZS10eXBvZ3JhcGh5KCRjb25maWcsICRzZWxlY3RvcjogJy5tYXQtdHlwb2dyYXBoeScpIHtcbiAgLm1hdC1oMSwgLm1hdC1oZWFkbGluZSwgI3skc2VsZWN0b3J9IGgxIHtcbiAgICBAaW5jbHVkZSBtYXQtdHlwb2dyYXBoeS1sZXZlbC10by1zdHlsZXMoJGNvbmZpZywgaGVhZGxpbmUpO1xuICAgIG1hcmdpbjogMCAwIDE2cHg7XG4gIH1cblxuICAubWF0LWgyLCAubWF0LXRpdGxlLCAjeyRzZWxlY3Rvcn0gaDIge1xuICAgIEBpbmNsdWRlIG1hdC10eXBvZ3JhcGh5LWxldmVsLXRvLXN0eWxlcygkY29uZmlnLCB0aXRsZSk7XG4gICAgbWFyZ2luOiAwIDAgMTZweDtcbiAgfVxuXG4gIC5tYXQtaDMsIC5tYXQtc3ViaGVhZGluZy0yLCAjeyRzZWxlY3Rvcn0gaDMge1xuICAgIEBpbmNsdWRlIG1hdC10eXBvZ3JhcGh5LWxldmVsLXRvLXN0eWxlcygkY29uZmlnLCBzdWJoZWFkaW5nLTIpO1xuICAgIG1hcmdpbjogMCAwIDE2cHg7XG4gIH1cblxuICAubWF0LWg0LCAubWF0LXN1YmhlYWRpbmctMSwgI3skc2VsZWN0b3J9IGg0IHtcbiAgICBAaW5jbHVkZSBtYXQtdHlwb2dyYXBoeS1sZXZlbC10by1zdHlsZXMoJGNvbmZpZywgc3ViaGVhZGluZy0xKTtcbiAgICBtYXJnaW46IDAgMCAxNnB4O1xuICB9XG5cbiAgLy8gTm90ZTogdGhlIHNwZWMgZG9lc24ndCBoYXZlIGFueXRoaW5nIHRoYXQgd291bGQgY29ycmVzcG9uZCB0byBoNSBhbmQgaDYsIGJ1dCB3ZSBhZGQgdGhlc2UgZm9yXG4gIC8vIGNvbnNpc3RlbmN5LiBUaGUgZm9udCBzaXplcyBjb21lIGZyb20gdGhlIENocm9tZSB1c2VyIGFnZW50IHN0eWxlcyB3aGljaCBoYXZlIGg1IGF0IDAuODNlbVxuICAvLyBhbmQgaDYgYXQgMC42N2VtLlxuICAubWF0LWg1LCAjeyRzZWxlY3Rvcn0gaDUge1xuICAgIEBpbmNsdWRlIG1hdC10eXBvZ3JhcGh5LWZvbnQtc2hvcnRoYW5kKFxuICAgICAgIC8vIGNhbGMgaXMgdXNlZCBoZXJlIHRvIHN1cHBvcnQgY3NzIHZhcmlhYmxlc1xuICAgICAgY2FsYygje21hdC1mb250LXNpemUoJGNvbmZpZywgYm9keS0xKX0gKiAwLjgzKSxcbiAgICAgIG1hdC1mb250LXdlaWdodCgkY29uZmlnLCBib2R5LTEpLFxuICAgICAgbWF0LWxpbmUtaGVpZ2h0KCRjb25maWcsIGJvZHktMSksXG4gICAgICBtYXQtZm9udC1mYW1pbHkoJGNvbmZpZywgYm9keS0xKVxuICAgICk7XG5cbiAgICBtYXJnaW46IDAgMCAxMnB4O1xuICB9XG5cbiAgLm1hdC1oNiwgI3skc2VsZWN0b3J9IGg2IHtcbiAgICBAaW5jbHVkZSBtYXQtdHlwb2dyYXBoeS1mb250LXNob3J0aGFuZChcbiAgICAgICAvLyBjYWxjIGlzIHVzZWQgaGVyZSB0byBzdXBwb3J0IGNzcyB2YXJpYWJsZXNcbiAgICAgIGNhbGMoI3ttYXQtZm9udC1zaXplKCRjb25maWcsIGJvZHktMSl9ICogMC42NyksXG4gICAgICBtYXQtZm9udC13ZWlnaHQoJGNvbmZpZywgYm9keS0xKSxcbiAgICAgIG1hdC1saW5lLWhlaWdodCgkY29uZmlnLCBib2R5LTEpLFxuICAgICAgbWF0LWZvbnQtZmFtaWx5KCRjb25maWcsIGJvZHktMSlcbiAgICApO1xuXG4gICAgbWFyZ2luOiAwIDAgMTJweDtcbiAgfVxuXG4gIC5tYXQtYm9keS1zdHJvbmcsIC5tYXQtYm9keS0yIHtcbiAgICBAaW5jbHVkZSBtYXQtdHlwb2dyYXBoeS1sZXZlbC10by1zdHlsZXMoJGNvbmZpZywgYm9keS0yKTtcbiAgfVxuXG4gIC5tYXQtYm9keSwgLm1hdC1ib2R5LTEsICN7JHNlbGVjdG9yfSB7XG4gICAgQGluY2x1ZGUgbWF0LXR5cG9ncmFwaHktbGV2ZWwtdG8tc3R5bGVzKCRjb25maWcsIGJvZHktMSk7XG5cbiAgICBwIHtcbiAgICAgIG1hcmdpbjogMCAwIDEycHg7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1zbWFsbCwgLm1hdC1jYXB0aW9uIHtcbiAgICBAaW5jbHVkZSBtYXQtdHlwb2dyYXBoeS1sZXZlbC10by1zdHlsZXMoJGNvbmZpZywgY2FwdGlvbik7XG4gIH1cblxuICAubWF0LWRpc3BsYXktNCwgI3skc2VsZWN0b3J9IC5tYXQtZGlzcGxheS00IHtcbiAgICBAaW5jbHVkZSBtYXQtdHlwb2dyYXBoeS1sZXZlbC10by1zdHlsZXMoJGNvbmZpZywgZGlzcGxheS00KTtcbiAgICBtYXJnaW46IDAgMCA1NnB4O1xuICB9XG5cbiAgLm1hdC1kaXNwbGF5LTMsICN7JHNlbGVjdG9yfSAubWF0LWRpc3BsYXktMyB7XG4gICAgQGluY2x1ZGUgbWF0LXR5cG9ncmFwaHktbGV2ZWwtdG8tc3R5bGVzKCRjb25maWcsIGRpc3BsYXktMyk7XG4gICAgbWFyZ2luOiAwIDAgNjRweDtcbiAgfVxuXG4gIC5tYXQtZGlzcGxheS0yLCAjeyRzZWxlY3Rvcn0gLm1hdC1kaXNwbGF5LTIge1xuICAgIEBpbmNsdWRlIG1hdC10eXBvZ3JhcGh5LWxldmVsLXRvLXN0eWxlcygkY29uZmlnLCBkaXNwbGF5LTIpO1xuICAgIG1hcmdpbjogMCAwIDY0cHg7XG4gIH1cblxuICAubWF0LWRpc3BsYXktMSwgI3skc2VsZWN0b3J9IC5tYXQtZGlzcGxheS0xIHtcbiAgICBAaW5jbHVkZSBtYXQtdHlwb2dyYXBoeS1sZXZlbC10by1zdHlsZXMoJGNvbmZpZywgZGlzcGxheS0xKTtcbiAgICBtYXJnaW46IDAgMCA2NHB4O1xuICB9XG59XG5cblxuXG5cbkBtaXhpbiBtYXQtYXV0b2NvbXBsZXRlLWNvbG9yKCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogbWF0LWdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRmb3JlZ3JvdW5kOiBtYXAtZ2V0KCRjb25maWcsIGZvcmVncm91bmQpO1xuICAkYmFja2dyb3VuZDogbWFwLWdldCgkY29uZmlnLCBiYWNrZ3JvdW5kKTtcblxuICAubWF0LWF1dG9jb21wbGV0ZS1wYW5lbCB7XG4gICAgQGluY2x1ZGUgbWF0LXByaXZhdGUtdGhlbWUtb3ZlcnJpZGFibGUtZWxldmF0aW9uKDQsICRjb25maWcpO1xuICAgIGJhY2tncm91bmQ6IG1hdC1jb2xvcigkYmFja2dyb3VuZCwgY2FyZCk7XG4gICAgY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgdGV4dCk7XG5cbiAgICAvLyBTZWxlY3RlZCBvcHRpb25zIGluIGF1dG9jb21wbGV0ZXMgc2hvdWxkIG5vdCBiZSBncmF5LCBidXQgd2VcbiAgICAvLyBvbmx5IHdhbnQgdG8gb3ZlcnJpZGUgdGhlIGJhY2tncm91bmQgZm9yIHNlbGVjdGVkIG9wdGlvbnMgaWZcbiAgICAvLyB0aGV5IGFyZSAqbm90KiBpbiBob3ZlciBvciBmb2N1cyBzdGF0ZS4gVGhpcyBjaGFuZ2UgaGFzIHRvIGJlXG4gICAgLy8gbWFkZSBoZXJlIGJlY2F1c2UgYmFzZSBvcHRpb24gc3R5bGVzIGFyZSBzaGFyZWQgYmV0d2VlbiB0aGVcbiAgICAvLyBhdXRvY29tcGxldGUgYW5kIHRoZSBzZWxlY3QuXG4gICAgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkOm5vdCgubWF0LWFjdGl2ZSk6bm90KDpob3Zlcikge1xuICAgICAgYmFja2dyb3VuZDogbWF0LWNvbG9yKCRiYWNrZ3JvdW5kLCBjYXJkKTtcblxuICAgICAgJjpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpIHtcbiAgICAgICAgY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgdGV4dCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBtYXQtYXV0b2NvbXBsZXRlLXR5cG9ncmFwaHkoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIF9tYXQtYXV0b2NvbXBsZXRlLWRlbnNpdHkoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIG1hdC1hdXRvY29tcGxldGUtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZykge1xuICAkdGhlbWU6IG1hdC1wcml2YXRlLWxlZ2FjeS1nZXQtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZyk7XG4gIEBpbmNsdWRlIG1hdC1wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LWF1dG9jb21wbGV0ZScpIHtcbiAgICAkY29sb3I6IG1hdC1nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgJGRlbnNpdHk6IG1hdC1nZXQtZGVuc2l0eS1jb25maWcoJHRoZW1lKTtcbiAgICAkdHlwb2dyYXBoeTogbWF0LWdldC10eXBvZ3JhcGh5LWNvbmZpZygkdGhlbWUpO1xuXG4gICAgQGlmICRjb2xvciAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIG1hdC1hdXRvY29tcGxldGUtY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gICAgQGlmICRkZW5zaXR5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgX21hdC1hdXRvY29tcGxldGUtZGVuc2l0eSgkZGVuc2l0eSk7XG4gICAgfVxuICAgIEBpZiAkdHlwb2dyYXBoeSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIG1hdC1hdXRvY29tcGxldGUtdHlwb2dyYXBoeSgkdHlwb2dyYXBoeSk7XG4gICAgfVxuICB9XG59XG5cbi8vIFRoaXMgY29udGFpbnMgYWxsIG9mIHRoZSBzdHlsZXMgZm9yIHRoZSBiYWRnZVxuLy8gcmF0aGVyIHRoYW4ganVzdCB0aGUgY29sb3IvdGhlbWUgYmVjYXVzZSBvZlxuLy8gbm8gc3R5bGUgc2hlZXQgc3VwcG9ydCBmb3IgZGlyZWN0aXZlcy5cblxuXG5cblxuXG4kbWF0LWJhZGdlLWZvbnQtc2l6ZTogMTJweDtcbiRtYXQtYmFkZ2UtZm9udC13ZWlnaHQ6IDYwMDtcbiRtYXQtYmFkZ2UtZGVmYXVsdC1zaXplOiAyMnB4ICFkZWZhdWx0O1xuJG1hdC1iYWRnZS1zbWFsbC1zaXplOiAkbWF0LWJhZGdlLWRlZmF1bHQtc2l6ZSAtIDY7XG4kbWF0LWJhZGdlLWxhcmdlLXNpemU6ICRtYXQtYmFkZ2UtZGVmYXVsdC1zaXplICsgNjtcblxuLy8gTWl4aW4gZm9yIGJ1aWxkaW5nIG9mZnNldCBnaXZlbiBkaWZmZXJlbnQgc2l6ZXNcbkBtaXhpbiBfbWF0LWJhZGdlLXNpemUoJHNpemUpIHtcbiAgLm1hdC1iYWRnZS1jb250ZW50IHtcbiAgICB3aWR0aDogJHNpemU7XG4gICAgaGVpZ2h0OiAkc2l6ZTtcbiAgICBsaW5lLWhlaWdodDogJHNpemU7XG4gIH1cblxuICAmLm1hdC1iYWRnZS1hYm92ZSB7XG4gICAgLm1hdC1iYWRnZS1jb250ZW50IHtcbiAgICAgIHRvcDogLSRzaXplIC8gMjtcbiAgICB9XG4gIH1cblxuICAmLm1hdC1iYWRnZS1iZWxvdyB7XG4gICAgLm1hdC1iYWRnZS1jb250ZW50IHtcbiAgICAgIGJvdHRvbTogLSRzaXplIC8gMjtcbiAgICB9XG4gIH1cblxuICAmLm1hdC1iYWRnZS1iZWZvcmUge1xuICAgIC5tYXQtYmFkZ2UtY29udGVudCB7XG4gICAgICBsZWZ0OiAtJHNpemU7XG4gICAgfVxuICB9XG5cbiAgW2Rpcj0ncnRsJ10gJi5tYXQtYmFkZ2UtYmVmb3JlIHtcbiAgICAubWF0LWJhZGdlLWNvbnRlbnQge1xuICAgICAgbGVmdDogYXV0bztcbiAgICAgIHJpZ2h0OiAtJHNpemU7XG4gICAgfVxuICB9XG5cbiAgJi5tYXQtYmFkZ2UtYWZ0ZXIge1xuICAgIC5tYXQtYmFkZ2UtY29udGVudCB7XG4gICAgICByaWdodDogLSRzaXplO1xuICAgIH1cbiAgfVxuXG4gIFtkaXI9J3J0bCddICYubWF0LWJhZGdlLWFmdGVyIHtcbiAgICAubWF0LWJhZGdlLWNvbnRlbnQge1xuICAgICAgcmlnaHQ6IGF1dG87XG4gICAgICBsZWZ0OiAtJHNpemU7XG4gICAgfVxuICB9XG5cbiAgJi5tYXQtYmFkZ2Utb3ZlcmxhcCB7XG4gICAgJi5tYXQtYmFkZ2UtYmVmb3JlIHtcbiAgICAgIC5tYXQtYmFkZ2UtY29udGVudCB7XG4gICAgICAgIGxlZnQ6IC0kc2l6ZSAvIDI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgW2Rpcj0ncnRsJ10gJi5tYXQtYmFkZ2UtYmVmb3JlIHtcbiAgICAgIC5tYXQtYmFkZ2UtY29udGVudCB7XG4gICAgICAgIGxlZnQ6IGF1dG87XG4gICAgICAgIHJpZ2h0OiAtJHNpemUgLyAyO1xuICAgICAgfVxuICAgIH1cblxuICAgICYubWF0LWJhZGdlLWFmdGVyIHtcbiAgICAgIC5tYXQtYmFkZ2UtY29udGVudCB7XG4gICAgICAgIHJpZ2h0OiAtJHNpemUgLyAyO1xuICAgICAgfVxuICAgIH1cblxuICAgIFtkaXI9J3J0bCddICYubWF0LWJhZGdlLWFmdGVyIHtcbiAgICAgIC5tYXQtYmFkZ2UtY29udGVudCB7XG4gICAgICAgIHJpZ2h0OiBhdXRvO1xuICAgICAgICBsZWZ0OiAtJHNpemUgLyAyO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gbWF0LWJhZGdlLWNvbG9yKCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogbWF0LWdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRhY2NlbnQ6IG1hcC1nZXQoJGNvbmZpZywgYWNjZW50KTtcbiAgJHdhcm46IG1hcC1nZXQoJGNvbmZpZywgd2Fybik7XG4gICRwcmltYXJ5OiBtYXAtZ2V0KCRjb25maWcsIHByaW1hcnkpO1xuICAkYmFja2dyb3VuZDogbWFwLWdldCgkY29uZmlnLCBiYWNrZ3JvdW5kKTtcbiAgJGZvcmVncm91bmQ6IG1hcC1nZXQoJGNvbmZpZywgZm9yZWdyb3VuZCk7XG5cbiAgLm1hdC1iYWRnZS1jb250ZW50IHtcbiAgICBjb2xvcjogbWF0LWNvbG9yKCRwcmltYXJ5LCBkZWZhdWx0LWNvbnRyYXN0KTtcbiAgICBiYWNrZ3JvdW5kOiBtYXQtY29sb3IoJHByaW1hcnkpO1xuXG4gICAgQGluY2x1ZGUgY2RrLWhpZ2gtY29udHJhc3QoYWN0aXZlLCBvZmYpIHtcbiAgICAgIG91dGxpbmU6IHNvbGlkIDFweDtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDA7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1iYWRnZS1hY2NlbnQge1xuICAgIC5tYXQtYmFkZ2UtY29udGVudCB7XG4gICAgICBiYWNrZ3JvdW5kOiBtYXQtY29sb3IoJGFjY2VudCk7XG4gICAgICBjb2xvcjogbWF0LWNvbG9yKCRhY2NlbnQsIGRlZmF1bHQtY29udHJhc3QpO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtYmFkZ2Utd2FybiB7XG4gICAgLm1hdC1iYWRnZS1jb250ZW50IHtcbiAgICAgIGNvbG9yOiBtYXQtY29sb3IoJHdhcm4sIGRlZmF1bHQtY29udHJhc3QpO1xuICAgICAgYmFja2dyb3VuZDogbWF0LWNvbG9yKCR3YXJuKTtcbiAgICB9XG4gIH1cblxuICAubWF0LWJhZGdlIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIH1cblxuICAubWF0LWJhZGdlLWhpZGRlbiB7XG4gICAgLm1hdC1iYWRnZS1jb250ZW50IHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1iYWRnZS1kaXNhYmxlZCB7XG4gICAgLm1hdC1iYWRnZS1jb250ZW50IHtcbiAgICAgICRhcHAtYmFja2dyb3VuZDogbWF0LWNvbG9yKCRiYWNrZ3JvdW5kLCAnYmFja2dyb3VuZCcpO1xuICAgICAgJGJhZGdlLWNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIGRpc2FibGVkLWJ1dHRvbik7XG5cbiAgICAgIC8vIFRoZSBkaXNhYmxlZCBjb2xvciB1c3VhbGx5IGhhcyBzb21lIGtpbmQgb2Ygb3BhY2l0eSwgYnV0IGJlY2F1c2UgdGhlIGJhZGdlIGlzIG92ZXJsYXllZFxuICAgICAgLy8gb24gdG9wIG9mIHNvbWV0aGluZyBlbHNlLCBpdCB3b24ndCBsb29rIGdvb2QgaWYgaXQncyBvcGFxdWUuIElmIGl0IGlzIGEgY29sb3IgKnR5cGUqLFxuICAgICAgLy8gd2UgY29udmVydCBpdCBpbnRvIGEgc29saWQgY29sb3IgYnkgdGFraW5nIHRoZSBvcGFjaXR5IGZyb20gdGhlIHJnYmEgdmFsdWUgYW5kIHVzaW5nXG4gICAgICAvLyB0aGUgdmFsdWUgdG8gZGV0ZXJtaW5lIHRoZSBwZXJjZW50YWdlIG9mIHRoZSBiYWNrZ3JvdW5kIHRvIHB1dCBpbnRvIGZvcmVncm91bmQgd2hlblxuICAgICAgLy8gbWl4aW5nIHRoZSBjb2xvcnMgdG9nZXRoZXIuXG4gICAgICBAaWYgKHR5cGUtb2YoJGJhZGdlLWNvbG9yKSA9PSBjb2xvciBhbmQgdHlwZS1vZigkYXBwLWJhY2tncm91bmQpID09IGNvbG9yKSB7XG4gICAgICAgICRiYWRnZS1vcGFjaXR5OiBvcGFjaXR5KCRiYWRnZS1jb2xvcik7XG4gICAgICAgIGJhY2tncm91bmQ6IG1peCgkYXBwLWJhY2tncm91bmQsIHJnYmEoJGJhZGdlLWNvbG9yLCAxKSwgKDEgLSAkYmFkZ2Utb3BhY2l0eSkgKiAxMDAlKTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgYmFja2dyb3VuZDogJGJhZGdlLWNvbG9yO1xuICAgICAgfVxuXG4gICAgICBjb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBkaXNhYmxlZC10ZXh0KTtcbiAgICB9XG4gIH1cblxuICAubWF0LWJhZGdlLWNvbnRlbnQge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMjAwbXMgZWFzZS1pbi1vdXQ7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgwLjYpO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgfVxuXG4gIC5uZy1hbmltYXRlLWRpc2FibGVkIC5tYXQtYmFkZ2UtY29udGVudCxcbiAgLm1hdC1iYWRnZS1jb250ZW50Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIHtcbiAgICB0cmFuc2l0aW9uOiBub25lO1xuICB9XG5cbiAgLy8gVGhlIGFjdGl2ZSBjbGFzcyBpcyBhZGRlZCBhZnRlciB0aGUgZWxlbWVudCBpcyBhZGRlZFxuICAvLyBzbyBpdCBjYW4gYW5pbWF0ZSBzY2FsZSB0byBkZWZhdWx0XG4gIC5tYXQtYmFkZ2UtY29udGVudC5tYXQtYmFkZ2UtYWN0aXZlIHtcbiAgICAvLyBTY2FsZSB0byBgbm9uZWAgaW5zdGVhZCBvZiBgMWAgdG8gYXZvaWQgYmx1cnJ5IHRleHQgaW4gc29tZSBicm93c2Vycy5cbiAgICB0cmFuc2Zvcm06IG5vbmU7XG4gIH1cblxuICAubWF0LWJhZGdlLXNtYWxsIHtcbiAgICBAaW5jbHVkZSBfbWF0LWJhZGdlLXNpemUoJG1hdC1iYWRnZS1zbWFsbC1zaXplKTtcbiAgfVxuICAubWF0LWJhZGdlLW1lZGl1bSB7XG4gICAgQGluY2x1ZGUgX21hdC1iYWRnZS1zaXplKCRtYXQtYmFkZ2UtZGVmYXVsdC1zaXplKTtcbiAgfVxuICAubWF0LWJhZGdlLWxhcmdlIHtcbiAgICBAaW5jbHVkZSBfbWF0LWJhZGdlLXNpemUoJG1hdC1iYWRnZS1sYXJnZS1zaXplKTtcbiAgfVxufVxuXG5AbWl4aW4gbWF0LWJhZGdlLXR5cG9ncmFwaHkoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiBtYXQtZ2V0LXR5cG9ncmFwaHktY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAubWF0LWJhZGdlLWNvbnRlbnQge1xuICAgIGZvbnQtd2VpZ2h0OiAkbWF0LWJhZGdlLWZvbnQtd2VpZ2h0O1xuICAgIGZvbnQtc2l6ZTogJG1hdC1iYWRnZS1mb250LXNpemU7XG4gICAgZm9udC1mYW1pbHk6IG1hdC1mb250LWZhbWlseSgkY29uZmlnKTtcbiAgfVxuXG4gIC5tYXQtYmFkZ2Utc21hbGwgLm1hdC1iYWRnZS1jb250ZW50IHtcbiAgICAvLyBTZXQgdGhlIGZvbnQgc2l6ZSB0byA3NSUgb2YgdGhlIG9yaWdpbmFsLlxuICAgIGZvbnQtc2l6ZTogJG1hdC1iYWRnZS1mb250LXNpemUgKiAwLjc1O1xuICB9XG5cbiAgLm1hdC1iYWRnZS1sYXJnZSAubWF0LWJhZGdlLWNvbnRlbnQge1xuICAgIGZvbnQtc2l6ZTogJG1hdC1iYWRnZS1mb250LXNpemUgKiAyO1xuICB9XG59XG5cbkBtaXhpbiBfbWF0LWJhZGdlLWRlbnNpdHkoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIG1hdC1iYWRnZS10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKSB7XG4gICR0aGVtZTogbWF0LXByaXZhdGUtbGVnYWN5LWdldC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgQGluY2x1ZGUgbWF0LXByaXZhdGUtY2hlY2stZHVwbGljYXRlLXRoZW1lLXN0eWxlcygkdGhlbWUsICdtYXQtYmFkZ2UnKSB7XG4gICAgJGNvbG9yOiBtYXQtZ2V0LWNvbG9yLWNvbmZpZygkdGhlbWUpO1xuICAgICRkZW5zaXR5OiBtYXQtZ2V0LWRlbnNpdHktY29uZmlnKCR0aGVtZSk7XG4gICAgJHR5cG9ncmFwaHk6IG1hdC1nZXQtdHlwb2dyYXBoeS1jb25maWcoJHRoZW1lKTtcblxuICAgIEBpZiAkY29sb3IgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBtYXQtYmFkZ2UtY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gICAgQGlmICRkZW5zaXR5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgX21hdC1iYWRnZS1kZW5zaXR5KCRkZW5zaXR5KTtcbiAgICB9XG4gICAgQGlmICR0eXBvZ3JhcGh5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgbWF0LWJhZGdlLXR5cG9ncmFwaHkoJHR5cG9ncmFwaHkpO1xuICAgIH1cbiAgfVxufVxuXG5cblxuXG5cblxuQG1peGluIG1hdC1ib3R0b20tc2hlZXQtY29sb3IoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiBtYXQtZ2V0LWNvbG9yLWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgJGJhY2tncm91bmQ6IG1hcC1nZXQoJGNvbmZpZywgYmFja2dyb3VuZCk7XG4gICRmb3JlZ3JvdW5kOiBtYXAtZ2V0KCRjb25maWcsIGZvcmVncm91bmQpO1xuXG4gIC5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lciB7XG4gICAgQGluY2x1ZGUgbWF0LXByaXZhdGUtdGhlbWUtZWxldmF0aW9uKDE2LCAkY29uZmlnKTtcbiAgICBiYWNrZ3JvdW5kOiBtYXQtY29sb3IoJGJhY2tncm91bmQsIGRpYWxvZyk7XG4gICAgY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgdGV4dCk7XG4gIH1cbn1cblxuQG1peGluIG1hdC1ib3R0b20tc2hlZXQtdHlwb2dyYXBoeSgkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IG1hdC1nZXQtdHlwb2dyYXBoeS1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gIC5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lciB7XG4gICAgQGluY2x1ZGUgbWF0LXR5cG9ncmFwaHktbGV2ZWwtdG8tc3R5bGVzKCRjb25maWcsIGJvZHktMSk7XG4gIH1cbn1cblxuQG1peGluIF9tYXQtYm90dG9tLXNoZWV0LWRlbnNpdHkoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIG1hdC1ib3R0b20tc2hlZXQtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZykge1xuICAkdGhlbWU6IG1hdC1wcml2YXRlLWxlZ2FjeS1nZXQtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZyk7XG4gIEBpbmNsdWRlIG1hdC1wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LWJvdHRvbS1zaGVldCcpIHtcbiAgICAkY29sb3I6IG1hdC1nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgJGRlbnNpdHk6IG1hdC1nZXQtZGVuc2l0eS1jb25maWcoJHRoZW1lKTtcbiAgICAkdHlwb2dyYXBoeTogbWF0LWdldC10eXBvZ3JhcGh5LWNvbmZpZygkdGhlbWUpO1xuXG4gICAgQGlmICRjb2xvciAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIG1hdC1ib3R0b20tc2hlZXQtY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gICAgQGlmICRkZW5zaXR5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgX21hdC1ib3R0b20tc2hlZXQtZGVuc2l0eSgkZGVuc2l0eSk7XG4gICAgfVxuICAgIEBpZiAkdHlwb2dyYXBoeSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIG1hdC1ib3R0b20tc2hlZXQtdHlwb2dyYXBoeSgkdHlwb2dyYXBoeSk7XG4gICAgfVxuICB9XG59XG5cblxuXG5cblxuJF9tYXQtYnV0dG9uLXJpcHBsZS1vcGFjaXR5OiAwLjE7XG5cbi8vIEFwcGxpZXMgYSBmb2N1cyBzdHlsZSB0byBhbiBtYXQtYnV0dG9uIGVsZW1lbnQgZm9yIGVhY2ggb2YgdGhlIHN1cHBvcnRlZCBwYWxldHRlcy5cbkBtaXhpbiBfbWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LWNvbG9yKCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogbWF0LWdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRwcmltYXJ5OiBtYXAtZ2V0KCRjb25maWcsIHByaW1hcnkpO1xuICAkYWNjZW50OiBtYXAtZ2V0KCRjb25maWcsIGFjY2VudCk7XG4gICR3YXJuOiBtYXAtZ2V0KCRjb25maWcsIHdhcm4pO1xuXG4gICYubWF0LXByaW1hcnkgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogbWF0LWNvbG9yKCRwcmltYXJ5KTtcbiAgfVxuXG4gICYubWF0LWFjY2VudCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5IHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBtYXQtY29sb3IoJGFjY2VudCk7XG4gIH1cblxuICAmLm1hdC13YXJuIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXkge1xuICAgIGJhY2tncm91bmQtY29sb3I6IG1hdC1jb2xvcigkd2Fybik7XG4gIH1cblxuICAmLm1hdC1idXR0b24tZGlzYWJsZWQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIH1cbn1cblxuLy8gQXBwbGllcyB0aGUgYmFja2dyb3VuZCBjb2xvciBmb3IgYSByaXBwbGUuIElmIHRoZSB2YWx1ZSBwcm92aWRlZCBpcyBub3QgYSBTYXNzIGNvbG9yLFxuLy8gd2UgYXNzdW1lIHRoYXQgd2UndmUgYmVlbiBnaXZlbiBhIENTUyB2YXJpYWJsZS4gU2luY2Ugd2UgY2FuJ3QgcGVyZm9ybSBhbHBoYS1ibGVuZGluZ1xuLy8gb24gYSBDU1MgdmFyaWFibGUsIHdlIGluc3RlYWQgYWRkIHRoZSBvcGFjaXR5IGRpcmVjdGx5IHRvIHRoZSByaXBwbGUgZWxlbWVudC5cbkBtaXhpbiBfbWF0LWJ1dHRvbi1yaXBwbGUtYmFja2dyb3VuZCgkcGFsZXR0ZSwgJGh1ZSwgJG9wYWNpdHkpIHtcbiAgJGJhY2tncm91bmQtY29sb3I6IG1hdC1jb2xvcigkcGFsZXR0ZSwgJGh1ZSwgJG9wYWNpdHkpO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFja2dyb3VuZC1jb2xvcjtcbiAgQGlmICh0eXBlLW9mKCRiYWNrZ3JvdW5kLWNvbG9yKSAhPSBjb2xvcikge1xuICAgIG9wYWNpdHk6ICRvcGFjaXR5O1xuICB9XG59XG5cbkBtaXhpbiBfbWF0LWJ1dHRvbi1yaXBwbGUtY29sb3IoJHRoZW1lLCAkaHVlLCAkb3BhY2l0eTogJF9tYXQtYnV0dG9uLXJpcHBsZS1vcGFjaXR5KSB7XG4gICRwcmltYXJ5OiBtYXAtZ2V0KCR0aGVtZSwgcHJpbWFyeSk7XG4gICRhY2NlbnQ6IG1hcC1nZXQoJHRoZW1lLCBhY2NlbnQpO1xuICAkd2FybjogbWFwLWdldCgkdGhlbWUsIHdhcm4pO1xuXG4gICYubWF0LXByaW1hcnkgLm1hdC1yaXBwbGUtZWxlbWVudCB7XG4gICAgQGluY2x1ZGUgX21hdC1idXR0b24tcmlwcGxlLWJhY2tncm91bmQoJHByaW1hcnksICRodWUsICRvcGFjaXR5KTtcbiAgfVxuXG4gICYubWF0LWFjY2VudCAubWF0LXJpcHBsZS1lbGVtZW50IHtcbiAgICBAaW5jbHVkZSBfbWF0LWJ1dHRvbi1yaXBwbGUtYmFja2dyb3VuZCgkYWNjZW50LCAkaHVlLCAkb3BhY2l0eSk7XG4gIH1cblxuICAmLm1hdC13YXJuIC5tYXQtcmlwcGxlLWVsZW1lbnQge1xuICAgIEBpbmNsdWRlIF9tYXQtYnV0dG9uLXJpcHBsZS1iYWNrZ3JvdW5kKCR3YXJuLCAkaHVlLCAkb3BhY2l0eSk7XG4gIH1cbn1cblxuLy8gQXBwbGllcyBhIHByb3BlcnR5IHRvIGFuIG1hdC1idXR0b24gZWxlbWVudCBmb3IgZWFjaCBvZiB0aGUgc3VwcG9ydGVkIHBhbGV0dGVzLlxuQG1peGluIF9tYXQtYnV0dG9uLXRoZW1lLXByb3BlcnR5KCR0aGVtZSwgJHByb3BlcnR5LCAkaHVlKSB7XG4gICRwcmltYXJ5OiBtYXAtZ2V0KCR0aGVtZSwgcHJpbWFyeSk7XG4gICRhY2NlbnQ6IG1hcC1nZXQoJHRoZW1lLCBhY2NlbnQpO1xuICAkd2FybjogbWFwLWdldCgkdGhlbWUsIHdhcm4pO1xuICAkYmFja2dyb3VuZDogbWFwLWdldCgkdGhlbWUsIGJhY2tncm91bmQpO1xuICAkZm9yZWdyb3VuZDogbWFwLWdldCgkdGhlbWUsIGZvcmVncm91bmQpO1xuXG4gICYubWF0LXByaW1hcnkge1xuICAgICN7JHByb3BlcnR5fTogbWF0LWNvbG9yKCRwcmltYXJ5LCAkaHVlKTtcbiAgfVxuICAmLm1hdC1hY2NlbnQge1xuICAgICN7JHByb3BlcnR5fTogbWF0LWNvbG9yKCRhY2NlbnQsICRodWUpO1xuICB9XG4gICYubWF0LXdhcm4ge1xuICAgICN7JHByb3BlcnR5fTogbWF0LWNvbG9yKCR3YXJuLCAkaHVlKTtcbiAgfVxuXG4gICYubWF0LXByaW1hcnksICYubWF0LWFjY2VudCwgJi5tYXQtd2FybiwgJi5tYXQtYnV0dG9uLWRpc2FibGVkIHtcbiAgICAmLm1hdC1idXR0b24tZGlzYWJsZWQge1xuICAgICAgJHBhbGV0dGU6IGlmKCRwcm9wZXJ0eSA9PSAnY29sb3InLCAkZm9yZWdyb3VuZCwgJGJhY2tncm91bmQpO1xuICAgICAgI3skcHJvcGVydHl9OiBtYXQtY29sb3IoJHBhbGV0dGUsIGRpc2FibGVkLWJ1dHRvbik7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBtYXQtYnV0dG9uLWNvbG9yKCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogbWF0LWdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRwcmltYXJ5OiBtYXAtZ2V0KCRjb25maWcsIHByaW1hcnkpO1xuICAkYWNjZW50OiBtYXAtZ2V0KCRjb25maWcsIGFjY2VudCk7XG4gICR3YXJuOiBtYXAtZ2V0KCRjb25maWcsIHdhcm4pO1xuICAkYmFja2dyb3VuZDogbWFwLWdldCgkY29uZmlnLCBiYWNrZ3JvdW5kKTtcbiAgJGZvcmVncm91bmQ6IG1hcC1nZXQoJGNvbmZpZywgZm9yZWdyb3VuZCk7XG5cbiAgLm1hdC1idXR0b24sIC5tYXQtaWNvbi1idXR0b24sIC5tYXQtc3Ryb2tlZC1idXR0b24ge1xuICAgIC8vIEJ1dHRvbnMgd2l0aG91dCBhIGJhY2tncm91bmQgY29sb3Igc2hvdWxkIGluaGVyaXQgdGhlIGZvbnQgY29sb3IuIFRoaXMgaXMgbmVjZXNzYXJ5IHRvXG4gICAgLy8gZW5zdXJlIHRoYXQgdGhlIGJ1dHRvbiBpcyByZWFkYWJsZSBvbiBjdXN0b20gYmFja2dyb3VuZCBjb2xvcnMuIEl0J3Mgd3JvbmcgdG8gYWx3YXlzIGFzc3VtZVxuICAgIC8vIHRoYXQgdGhvc2UgYnV0dG9ucyBhcmUgYWx3YXlzIHBsYWNlZCBpbnNpZGUgb2YgY29udGFpbmVycyB3aXRoIHRoZSBkZWZhdWx0IGJhY2tncm91bmRcbiAgICAvLyBjb2xvciBvZiB0aGUgdGhlbWUgKGUuZy4gdGhlbWVkIHRvb2xiYXJzKS5cbiAgICBjb2xvcjogaW5oZXJpdDtcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcblxuICAgIEBpbmNsdWRlIF9tYXQtYnV0dG9uLXRoZW1lLXByb3BlcnR5KCRjb25maWcsICdjb2xvcicsIHRleHQpO1xuICAgIEBpbmNsdWRlIF9tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXktY29sb3IoJGNvbmZpZyk7XG5cbiAgICAvLyBTZXR1cCB0aGUgcmlwcGxlIGNvbG9yIHRvIGJlIGJhc2VkIG9uIHRoZSB0ZXh0IGNvbG9yLiBUaGlzIGVuc3VyZXMgdGhhdCB0aGUgcmlwcGxlc1xuICAgIC8vIGFyZSBtYXRjaGluZyB3aXRoIHRoZSBjdXJyZW50IHRoZW1lIHBhbGV0dGUgYW5kIGFyZSBpbiBjb250cmFzdCB0byB0aGUgYmFja2dyb3VuZCBjb2xvclxuICAgIC8vIChlLmcgaW4gdGhlbWVkIHRvb2xiYXJzKS5cbiAgICAubWF0LXJpcHBsZS1lbGVtZW50IHtcbiAgICAgIG9wYWNpdHk6ICRfbWF0LWJ1dHRvbi1yaXBwbGUtb3BhY2l0eTtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IGN1cnJlbnRDb2xvcjtcbiAgICB9XG4gIH1cblxuICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5IHtcbiAgICBiYWNrZ3JvdW5kOiBtYXAtZ2V0KCRmb3JlZ3JvdW5kLCBiYXNlKTtcbiAgfVxuXG4gIC8vIE5vdGU6IHRoaXMgbmVlZHMgYSBiaXQgZXh0cmEgc3BlY2lmaWNpdHksIGJlY2F1c2Ugd2UncmUgbm90IGd1YXJhbnRlZWQgdGhlIGluY2x1c2lvblxuICAvLyBvcmRlciBvZiB0aGUgdGhlbWUgc3R5bGVzIGFuZCB0aGUgYnV0dG9uIHJlc2V0IG1heSBlbmQgdXAgcmVzZXR0aW5nIHRoaXMgYXMgd2VsbC5cbiAgLm1hdC1zdHJva2VkLWJ1dHRvbjpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpIHtcbiAgICBib3JkZXItY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgZGl2aWRlcik7XG4gIH1cblxuICAubWF0LWZsYXQtYnV0dG9uLCAubWF0LXJhaXNlZC1idXR0b24sIC5tYXQtZmFiLCAubWF0LW1pbmktZmFiIHtcbiAgICAvLyBEZWZhdWx0IGZvbnQgYW5kIGJhY2tncm91bmQgY29sb3Igd2hlbiBub3QgdXNpbmcgYW55IGNvbG9yIHBhbGV0dGUuXG4gICAgY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgdGV4dCk7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogbWF0LWNvbG9yKCRiYWNrZ3JvdW5kLCByYWlzZWQtYnV0dG9uKTtcblxuICAgIEBpbmNsdWRlIF9tYXQtYnV0dG9uLXRoZW1lLXByb3BlcnR5KCRjb25maWcsICdjb2xvcicsIGRlZmF1bHQtY29udHJhc3QpO1xuICAgIEBpbmNsdWRlIF9tYXQtYnV0dG9uLXRoZW1lLXByb3BlcnR5KCRjb25maWcsICdiYWNrZ3JvdW5kLWNvbG9yJywgZGVmYXVsdCk7XG4gICAgQGluY2x1ZGUgX21hdC1idXR0b24tcmlwcGxlLWNvbG9yKCRjb25maWcsIGRlZmF1bHQtY29udHJhc3QpO1xuICB9XG5cbiAgLm1hdC1zdHJva2VkLWJ1dHRvbiwgLm1hdC1mbGF0LWJ1dHRvbiB7XG4gICAgQGluY2x1ZGUgbWF0LXByaXZhdGUtdGhlbWUtb3ZlcnJpZGFibGUtZWxldmF0aW9uKDAsICRjb25maWcpO1xuICB9XG5cbiAgLm1hdC1yYWlzZWQtYnV0dG9uIHtcbiAgICBAaW5jbHVkZSBtYXQtcHJpdmF0ZS10aGVtZS1vdmVycmlkYWJsZS1lbGV2YXRpb24oMiwgJGNvbmZpZyk7XG5cbiAgICAmOm5vdCgubWF0LWJ1dHRvbi1kaXNhYmxlZCk6YWN0aXZlIHtcbiAgICAgIEBpbmNsdWRlIG1hdC1wcml2YXRlLXRoZW1lLW92ZXJyaWRhYmxlLWVsZXZhdGlvbig4LCAkY29uZmlnKTtcbiAgICB9XG5cbiAgICAmLm1hdC1idXR0b24tZGlzYWJsZWQge1xuICAgICAgQGluY2x1ZGUgbWF0LXByaXZhdGUtdGhlbWUtb3ZlcnJpZGFibGUtZWxldmF0aW9uKDAsICRjb25maWcpO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtZmFiLCAubWF0LW1pbmktZmFiIHtcbiAgICBAaW5jbHVkZSBtYXQtcHJpdmF0ZS10aGVtZS1vdmVycmlkYWJsZS1lbGV2YXRpb24oNiwgJGNvbmZpZyk7XG5cbiAgICAmOm5vdCgubWF0LWJ1dHRvbi1kaXNhYmxlZCk6YWN0aXZlIHtcbiAgICAgIEBpbmNsdWRlIG1hdC1wcml2YXRlLXRoZW1lLW92ZXJyaWRhYmxlLWVsZXZhdGlvbigxMiwgJGNvbmZpZyk7XG4gICAgfVxuXG4gICAgJi5tYXQtYnV0dG9uLWRpc2FibGVkIHtcbiAgICAgIEBpbmNsdWRlIG1hdC1wcml2YXRlLXRoZW1lLW92ZXJyaWRhYmxlLWVsZXZhdGlvbigwLCAkY29uZmlnKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIG1hdC1idXR0b24tdHlwb2dyYXBoeSgkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IG1hdC1nZXQtdHlwb2dyYXBoeS1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gIC5tYXQtYnV0dG9uLCAubWF0LXJhaXNlZC1idXR0b24sIC5tYXQtaWNvbi1idXR0b24sIC5tYXQtc3Ryb2tlZC1idXR0b24sXG4gIC5tYXQtZmxhdC1idXR0b24sIC5tYXQtZmFiLCAubWF0LW1pbmktZmFiIHtcbiAgICBmb250OiB7XG4gICAgICBmYW1pbHk6IG1hdC1mb250LWZhbWlseSgkY29uZmlnLCBidXR0b24pO1xuICAgICAgc2l6ZTogbWF0LWZvbnQtc2l6ZSgkY29uZmlnLCBidXR0b24pO1xuICAgICAgd2VpZ2h0OiBtYXQtZm9udC13ZWlnaHQoJGNvbmZpZywgYnV0dG9uKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIF9tYXQtYnV0dG9uLWRlbnNpdHkoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIG1hdC1idXR0b24tdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZykge1xuICAkdGhlbWU6IG1hdC1wcml2YXRlLWxlZ2FjeS1nZXQtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZyk7XG4gIEBpbmNsdWRlIG1hdC1wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LWJ1dHRvbicpIHtcbiAgICAkY29sb3I6IG1hdC1nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgJGRlbnNpdHk6IG1hdC1nZXQtZGVuc2l0eS1jb25maWcoJHRoZW1lKTtcbiAgICAkdHlwb2dyYXBoeTogbWF0LWdldC10eXBvZ3JhcGh5LWNvbmZpZygkdGhlbWUpO1xuXG4gICAgQGlmICRjb2xvciAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIG1hdC1idXR0b24tY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gICAgQGlmICRkZW5zaXR5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgX21hdC1idXR0b24tZGVuc2l0eSgkZGVuc2l0eSk7XG4gICAgfVxuICAgIEBpZiAkdHlwb2dyYXBoeSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIG1hdC1idXR0b24tdHlwb2dyYXBoeSgkdHlwb2dyYXBoeSk7XG4gICAgfVxuICB9XG59XG5cblxuXG5cblxuXG5cbiRtYXQtYnV0dG9uLXRvZ2dsZS1zdGFuZGFyZC1oZWlnaHQ6IDQ4cHggIWRlZmF1bHQ7XG4vLyBNaW5pbXVtIGhlaWdodCBmb3IgaGlnaGVzdCBkZW5zaXR5IGNhbiB2YXJ5IGJhc2VkIG9uIHRoZSBjb250ZW50IHRoYXQgZGV2ZWxvcGVyc1xuLy8gcHJvamVjdCBpbnRvIGJ1dHRvbi10b2dnbGUncy4gV2UgdXNlIGEgbWluaW11bSBvZiBgMjRweGAgdGhvdWdoIGJlY2F1c2UgY29tbW9ubHlcbi8vIGljb25zIG9yIHRleHQgYXJlIGRpc3BsYXllZC4gSWNvbnMgYnkgZGVmYXVsdCBoYXZlIGEgc2l6ZSBvZiBgMjRweGAuXG4kbWF0LWJ1dHRvbi10b2dnbGUtc3RhbmRhcmQtbWluaW11bS1oZWlnaHQ6IDI0cHggIWRlZmF1bHQ7XG4kbWF0LWJ1dHRvbi10b2dnbGUtc3RhbmRhcmQtbWF4aW11bS1oZWlnaHQ6ICRtYXQtYnV0dG9uLXRvZ2dsZS1zdGFuZGFyZC1oZWlnaHQgIWRlZmF1bHQ7XG5cbiRtYXQtYnV0dG9uLXRvZ2dsZS1zdGFuZGFyZC1kZW5zaXR5LWNvbmZpZzogKFxuICBoZWlnaHQ6IChcbiAgICBkZWZhdWx0OiAkbWF0LWJ1dHRvbi10b2dnbGUtc3RhbmRhcmQtaGVpZ2h0LFxuICAgIG1heGltdW06ICRtYXQtYnV0dG9uLXRvZ2dsZS1zdGFuZGFyZC1tYXhpbXVtLWhlaWdodCxcbiAgICBtaW5pbXVtOiAkbWF0LWJ1dHRvbi10b2dnbGUtc3RhbmRhcmQtbWluaW11bS1oZWlnaHQsXG4gIClcbikgIWRlZmF1bHQ7XG5cblxuQG1peGluIG1hdC1idXR0b24tdG9nZ2xlLWNvbG9yKCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogbWF0LWdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRmb3JlZ3JvdW5kOiBtYXAtZ2V0KCRjb25maWcsIGZvcmVncm91bmQpO1xuICAkYmFja2dyb3VuZDogbWFwLWdldCgkY29uZmlnLCBiYWNrZ3JvdW5kKTtcbiAgJGRpdmlkZXItY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgZGl2aWRlcik7XG5cbiAgLm1hdC1idXR0b24tdG9nZ2xlLXN0YW5kYWxvbmUsXG4gIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cCB7XG4gICAgQGluY2x1ZGUgbWF0LXByaXZhdGUtdGhlbWUtZWxldmF0aW9uKDIsICRjb25maWcpO1xuICB9XG5cbiAgLm1hdC1idXR0b24tdG9nZ2xlLXN0YW5kYWxvbmUubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZCxcbiAgLm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmQge1xuICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gIH1cblxuICAubWF0LWJ1dHRvbi10b2dnbGUge1xuICAgIGNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIGhpbnQtdGV4dCk7XG5cbiAgICAubWF0LWJ1dHRvbi10b2dnbGUtZm9jdXMtb3ZlcmxheSB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBtYXQtY29sb3IoJGJhY2tncm91bmQsIGZvY3VzZWQtYnV0dG9uKTtcbiAgICB9XG4gIH1cblxuICAubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZCB7XG4gICAgY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgdGV4dCk7XG4gICAgYmFja2dyb3VuZDogbWF0LWNvbG9yKCRiYWNrZ3JvdW5kLCBjYXJkKTtcblxuICAgIC5tYXQtYnV0dG9uLXRvZ2dsZS1mb2N1cy1vdmVybGF5IHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IG1hdC1jb2xvcigkYmFja2dyb3VuZCwgZm9jdXNlZC1idXR0b24sIDEpO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkIC5tYXQtYnV0dG9uLXRvZ2dsZSArIC5tYXQtYnV0dG9uLXRvZ2dsZSB7XG4gICAgYm9yZGVyLWxlZnQ6IHNvbGlkIDFweCAkZGl2aWRlci1jb2xvcjtcbiAgfVxuXG4gIFtkaXI9J3J0bCddIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkIC5tYXQtYnV0dG9uLXRvZ2dsZSArIC5tYXQtYnV0dG9uLXRvZ2dsZSB7XG4gICAgYm9yZGVyLWxlZnQ6IG5vbmU7XG4gICAgYm9yZGVyLXJpZ2h0OiBzb2xpZCAxcHggJGRpdmlkZXItY29sb3I7XG4gIH1cblxuICAubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAtYXBwZWFyYW5jZS1zdGFuZGFyZC5tYXQtYnV0dG9uLXRvZ2dsZS12ZXJ0aWNhbCB7XG4gICAgLm1hdC1idXR0b24tdG9nZ2xlICsgLm1hdC1idXR0b24tdG9nZ2xlIHtcbiAgICAgIGJvcmRlci1sZWZ0OiBub25lO1xuICAgICAgYm9yZGVyLXJpZ2h0OiBub25lO1xuICAgICAgYm9yZGVyLXRvcDogc29saWQgMXB4ICRkaXZpZGVyLWNvbG9yO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtYnV0dG9uLXRvZ2dsZS1jaGVja2VkIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBtYXQtY29sb3IoJGJhY2tncm91bmQsIHNlbGVjdGVkLWJ1dHRvbik7XG4gICAgY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgc2Vjb25kYXJ5LXRleHQpO1xuXG4gICAgJi5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkIHtcbiAgICAgIGNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIHRleHQpO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtYnV0dG9uLXRvZ2dsZS1kaXNhYmxlZCB7XG4gICAgY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgZGlzYWJsZWQtYnV0dG9uKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBtYXQtY29sb3IoJGJhY2tncm91bmQsIGRpc2FibGVkLWJ1dHRvbi10b2dnbGUpO1xuXG4gICAgJi5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkIHtcbiAgICAgIGJhY2tncm91bmQ6IG1hdC1jb2xvcigkYmFja2dyb3VuZCwgY2FyZCk7XG4gICAgfVxuXG4gICAgJi5tYXQtYnV0dG9uLXRvZ2dsZS1jaGVja2VkIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IG1hdC1jb2xvcigkYmFja2dyb3VuZCwgc2VsZWN0ZWQtZGlzYWJsZWQtYnV0dG9uKTtcbiAgICB9XG4gIH1cblxuICAubWF0LWJ1dHRvbi10b2dnbGUtc3RhbmRhbG9uZS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkLFxuICAubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAtYXBwZWFyYW5jZS1zdGFuZGFyZCB7XG4gICAgYm9yZGVyOiBzb2xpZCAxcHggJGRpdmlkZXItY29sb3I7XG4gIH1cbn1cblxuQG1peGluIG1hdC1idXR0b24tdG9nZ2xlLXR5cG9ncmFwaHkoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiBtYXQtZ2V0LXR5cG9ncmFwaHktY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAubWF0LWJ1dHRvbi10b2dnbGUge1xuICAgIGZvbnQtZmFtaWx5OiBtYXQtZm9udC1mYW1pbHkoJGNvbmZpZyk7XG4gIH1cbn1cblxuQG1peGluIG1hdC1idXR0b24tdG9nZ2xlLWRlbnNpdHkoJGNvbmZpZy1vci10aGVtZSkge1xuICAkZGVuc2l0eS1zY2FsZTogbWF0LWdldC1kZW5zaXR5LWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgJHN0YW5kYXJkLWhlaWdodDogbWF0LXByaXZhdGUtZGVuc2l0eS1wcm9wLXZhbHVlKFxuICAgICAgJG1hdC1idXR0b24tdG9nZ2xlLXN0YW5kYXJkLWRlbnNpdHktY29uZmlnLCAkZGVuc2l0eS1zY2FsZSwgaGVpZ2h0KTtcblxuICBAaW5jbHVkZSBtYXQtcHJpdmF0ZS1kZW5zaXR5LWxlZ2FjeS1jb21wYXRpYmlsaXR5KCkge1xuICAgIC5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkIC5tYXQtYnV0dG9uLXRvZ2dsZS1sYWJlbC1jb250ZW50IHtcbiAgICAgIGxpbmUtaGVpZ2h0OiAkc3RhbmRhcmQtaGVpZ2h0O1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gbWF0LWJ1dHRvbi10b2dnbGUtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZykge1xuICAkdGhlbWU6IG1hdC1wcml2YXRlLWxlZ2FjeS1nZXQtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZyk7XG4gIEBpbmNsdWRlIG1hdC1wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LWJ1dHRvbi10b2dnbGUnKSB7XG4gICAgJGNvbG9yOiBtYXQtZ2V0LWNvbG9yLWNvbmZpZygkdGhlbWUpO1xuICAgICRkZW5zaXR5OiBtYXQtZ2V0LWRlbnNpdHktY29uZmlnKCR0aGVtZSk7XG4gICAgJHR5cG9ncmFwaHk6IG1hdC1nZXQtdHlwb2dyYXBoeS1jb25maWcoJHRoZW1lKTtcblxuICAgIEBpZiAkY29sb3IgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBtYXQtYnV0dG9uLXRvZ2dsZS1jb2xvcigkY29sb3IpO1xuICAgIH1cbiAgICBAaWYgJGRlbnNpdHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBtYXQtYnV0dG9uLXRvZ2dsZS1kZW5zaXR5KCRkZW5zaXR5KTtcbiAgICB9XG4gICAgQGlmICR0eXBvZ3JhcGh5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgbWF0LWJ1dHRvbi10b2dnbGUtdHlwb2dyYXBoeSgkdHlwb2dyYXBoeSk7XG4gICAgfVxuICB9XG59XG5cblxuXG5cblxuXG5cbkBtaXhpbiBtYXQtY2FyZC1jb2xvcigkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IG1hdC1nZXQtY29sb3ItY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAkYmFja2dyb3VuZDogbWFwLWdldCgkY29uZmlnLCBiYWNrZ3JvdW5kKTtcbiAgJGZvcmVncm91bmQ6IG1hcC1nZXQoJGNvbmZpZywgZm9yZWdyb3VuZCk7XG5cbiAgLm1hdC1jYXJkIHtcbiAgICBAaW5jbHVkZSBtYXQtcHJpdmF0ZS10aGVtZS1vdmVycmlkYWJsZS1lbGV2YXRpb24oMSwgJGNvbmZpZyk7XG4gICAgYmFja2dyb3VuZDogbWF0LWNvbG9yKCRiYWNrZ3JvdW5kLCBjYXJkKTtcbiAgICBjb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCB0ZXh0KTtcblxuICAgIC8vIE5lZWRzIGV4dHJhIHNwZWNpZmljaXR5IHRvIGJlIGFibGUgdG8gb3ZlcnJpZGUgdGhlIGVsZXZhdGlvbiBzZWxlY3RvcnMuXG4gICAgJi5tYXQtY2FyZC1mbGF0IHtcbiAgICAgIEBpbmNsdWRlIG1hdC1wcml2YXRlLXRoZW1lLW92ZXJyaWRhYmxlLWVsZXZhdGlvbigwLCAkY29uZmlnKTtcbiAgICB9XG4gIH1cblxuICAubWF0LWNhcmQtc3VidGl0bGUge1xuICAgIGNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIHNlY29uZGFyeS10ZXh0KTtcbiAgfVxufVxuXG5AbWl4aW4gbWF0LWNhcmQtdHlwb2dyYXBoeSgkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IG1hdC1nZXQtdHlwb2dyYXBoeS1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gIC5tYXQtY2FyZCB7XG4gICAgZm9udC1mYW1pbHk6IG1hdC1mb250LWZhbWlseSgkY29uZmlnKTtcbiAgfVxuXG4gIC5tYXQtY2FyZC10aXRsZSB7XG4gICAgZm9udDoge1xuICAgICAgc2l6ZTogbWF0LWZvbnQtc2l6ZSgkY29uZmlnLCBoZWFkbGluZSk7XG4gICAgICB3ZWlnaHQ6IG1hdC1mb250LXdlaWdodCgkY29uZmlnLCB0aXRsZSk7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1jYXJkLWhlYWRlciAubWF0LWNhcmQtdGl0bGUge1xuICAgIGZvbnQtc2l6ZTogbWF0LWZvbnQtc2l6ZSgkY29uZmlnLCB0aXRsZSk7XG4gIH1cblxuICAubWF0LWNhcmQtc3VidGl0bGUsXG4gIC5tYXQtY2FyZC1jb250ZW50IHtcbiAgICBmb250LXNpemU6IG1hdC1mb250LXNpemUoJGNvbmZpZywgYm9keS0xKTtcbiAgfVxufVxuXG5AbWl4aW4gX21hdC1jYXJkLWRlbnNpdHkoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIG1hdC1jYXJkLXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiBtYXQtcHJpdmF0ZS1sZWdhY3ktZ2V0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICBAaW5jbHVkZSBtYXQtcHJpdmF0ZS1jaGVjay1kdXBsaWNhdGUtdGhlbWUtc3R5bGVzKCR0aGVtZSwgJ21hdC1jYXJkJykge1xuICAgICRjb2xvcjogbWF0LWdldC1jb2xvci1jb25maWcoJHRoZW1lKTtcbiAgICAkZGVuc2l0eTogbWF0LWdldC1kZW5zaXR5LWNvbmZpZygkdGhlbWUpO1xuICAgICR0eXBvZ3JhcGh5OiBtYXQtZ2V0LXR5cG9ncmFwaHktY29uZmlnKCR0aGVtZSk7XG5cbiAgICBAaWYgJGNvbG9yICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgbWF0LWNhcmQtY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gICAgQGlmICRkZW5zaXR5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgX21hdC1jYXJkLWRlbnNpdHkoJGRlbnNpdHkpO1xuICAgIH1cbiAgICBAaWYgJHR5cG9ncmFwaHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBtYXQtY2FyZC10eXBvZ3JhcGh5KCR0eXBvZ3JhcGh5KTtcbiAgICB9XG4gIH1cbn1cblxuXG5cblxuXG5AbWl4aW4gbWF0LWNoZWNrYm94LWNvbG9yKCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogbWF0LWdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRpcy1kYXJrLXRoZW1lOiBtYXAtZ2V0KCRjb25maWcsIGlzLWRhcmspO1xuICAkcHJpbWFyeTogbWFwLWdldCgkY29uZmlnLCBwcmltYXJ5KTtcbiAgJGFjY2VudDogbWFwLWdldCgkY29uZmlnLCBhY2NlbnQpO1xuICAkd2FybjogbWFwLWdldCgkY29uZmlnLCB3YXJuKTtcbiAgJGJhY2tncm91bmQ6IG1hcC1nZXQoJGNvbmZpZywgYmFja2dyb3VuZCk7XG4gICRmb3JlZ3JvdW5kOiBtYXAtZ2V0KCRjb25maWcsIGZvcmVncm91bmQpO1xuXG5cbiAgLy8gVGhlIGNvbG9yIG9mIHRoZSBjaGVja2JveCdzIGNoZWNrbWFyayAvIG1peGVkbWFyay5cbiAgJGNoZWNrYm94LW1hcmstY29sb3I6IG1hdC1jb2xvcigkYmFja2dyb3VuZCwgYmFja2dyb3VuZCk7XG5cbiAgLy8gTk9URSh0cmF2aXNrYXVmbWFuKTogV2hpbGUgdGhlIHNwZWMgY2FsbHMgZm9yIHRyYW5zbHVjZW50IGJsYWNrcy93aGl0ZXMgZm9yIGRpc2FibGVkIGNvbG9ycyxcbiAgLy8gdGhpcyBkb2VzIG5vdCB3b3JrIHdlbGwgd2l0aCBlbGVtZW50cyBsYXllcmVkIG9uIHRvcCBvZiBvbmUgYW5vdGhlci4gVG8gZ2V0IGFyb3VuZCB0aGlzIHdlXG4gIC8vIGJsZW5kIHRoZSBjb2xvcnMgdG9nZXRoZXIgYmFzZWQgb24gdGhlIGJhc2UgY29sb3IgYW5kIHRoZSB0aGVtZSBiYWNrZ3JvdW5kLlxuICAkd2hpdGUtMzBwY3Qtb3BhY2l0eS1vbi1kYXJrOiAjNjg2ODY4O1xuICAkYmxhY2stMjZwY3Qtb3BhY2l0eS1vbi1saWdodDogI2IwYjBiMDtcbiAgJGRpc2FibGVkLWNvbG9yOiBpZigkaXMtZGFyay10aGVtZSwgJHdoaXRlLTMwcGN0LW9wYWNpdHktb24tZGFyaywgJGJsYWNrLTI2cGN0LW9wYWNpdHktb24tbGlnaHQpO1xuXG4gIC5tYXQtY2hlY2tib3gtZnJhbWUge1xuICAgIGJvcmRlci1jb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBzZWNvbmRhcnktdGV4dCk7XG4gIH1cblxuICAubWF0LWNoZWNrYm94LWNoZWNrbWFyayB7XG4gICAgZmlsbDogJGNoZWNrYm94LW1hcmstY29sb3I7XG4gIH1cblxuICAubWF0LWNoZWNrYm94LWNoZWNrbWFyay1wYXRoIHtcbiAgICAvLyAhaW1wb3J0YW50IGlzIG5lZWRlZCBoZXJlIGJlY2F1c2UgYSBzdHJva2UgbXVzdCBiZSBzZXQgYXMgYW5cbiAgICAvLyBhdHRyaWJ1dGUgb24gdGhlIFNWRyBpbiBvcmRlciBmb3IgbGluZSBhbmltYXRpb24gdG8gd29yayBwcm9wZXJseS5cbiAgICBzdHJva2U6ICRjaGVja2JveC1tYXJrLWNvbG9yICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWF0LWNoZWNrYm94LW1peGVkbWFyayB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNoZWNrYm94LW1hcmstY29sb3I7XG4gIH1cblxuICAubWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUsIC5tYXQtY2hlY2tib3gtY2hlY2tlZCB7XG4gICAgJi5tYXQtcHJpbWFyeSAubWF0LWNoZWNrYm94LWJhY2tncm91bmQge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogbWF0LWNvbG9yKCRwcmltYXJ5KTtcbiAgICB9XG5cbiAgICAmLm1hdC1hY2NlbnQgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IG1hdC1jb2xvcigkYWNjZW50KTtcbiAgICB9XG5cbiAgICAmLm1hdC13YXJuIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBtYXQtY29sb3IoJHdhcm4pO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtY2hlY2tib3gtZGlzYWJsZWQge1xuICAgICYubWF0LWNoZWNrYm94LWNoZWNrZWQsXG4gICAgJi5tYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZSB7XG4gICAgICAubWF0LWNoZWNrYm94LWJhY2tncm91bmQge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZGlzYWJsZWQtY29sb3I7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJjpub3QoLm1hdC1jaGVja2JveC1jaGVja2VkKSB7XG4gICAgICAubWF0LWNoZWNrYm94LWZyYW1lIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAkZGlzYWJsZWQtY29sb3I7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLm1hdC1jaGVja2JveC1sYWJlbCB7XG4gICAgICBjb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBzZWNvbmRhcnktdGV4dCk7XG4gICAgfVxuICB9XG5cbiAgLy8gU3dpdGNoIHRoaXMgdG8gYSBzb2xpZCBjb2xvciBzaW5jZSB3ZSdyZSB1c2luZyBgb3BhY2l0eWBcbiAgLy8gdG8gY29udHJvbCBob3cgb3BhcXVlIHRoZSByaXBwbGUgc2hvdWxkIGJlLlxuICAubWF0LWNoZWNrYm94IC5tYXQtcmlwcGxlLWVsZW1lbnQge1xuICAgIGJhY2tncm91bmQtY29sb3I6IG1hcC1nZXQobWFwLWdldCgkY29uZmlnLCBmb3JlZ3JvdW5kKSwgYmFzZSk7XG4gIH1cblxuICAubWF0LWNoZWNrYm94LWNoZWNrZWQ6bm90KC5tYXQtY2hlY2tib3gtZGlzYWJsZWQpLFxuICAubWF0LWNoZWNrYm94OmFjdGl2ZTpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkge1xuICAgICYubWF0LXByaW1hcnkgLm1hdC1yaXBwbGUtZWxlbWVudCB7XG4gICAgICBiYWNrZ3JvdW5kOiBtYXQtY29sb3IoJHByaW1hcnkpO1xuICAgIH1cblxuICAgICYubWF0LWFjY2VudCAubWF0LXJpcHBsZS1lbGVtZW50IHtcbiAgICAgIGJhY2tncm91bmQ6IG1hdC1jb2xvcigkYWNjZW50KTtcbiAgICB9XG5cbiAgICAmLm1hdC13YXJuIC5tYXQtcmlwcGxlLWVsZW1lbnQge1xuICAgICAgYmFja2dyb3VuZDogbWF0LWNvbG9yKCR3YXJuKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIG1hdC1jaGVja2JveC10eXBvZ3JhcGh5KCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogbWF0LWdldC10eXBvZ3JhcGh5LWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgLm1hdC1jaGVja2JveCB7XG4gICAgZm9udC1mYW1pbHk6IG1hdC1mb250LWZhbWlseSgkY29uZmlnKTtcbiAgfVxuXG4gIC8vIFRPRE8oa2FyYSk6IFJlbW92ZSB0aGlzIHN0eWxlIHdoZW4gZml4aW5nIHZlcnRpY2FsIGJhc2VsaW5lXG4gIC5tYXQtY2hlY2tib3gtbGF5b3V0IC5tYXQtY2hlY2tib3gtbGFiZWwge1xuICAgIGxpbmUtaGVpZ2h0OiBtYXQtbGluZS1oZWlnaHQoJGNvbmZpZywgYm9keS0yKTtcbiAgfVxufVxuXG5AbWl4aW4gX21hdC1jaGVja2JveC1kZW5zaXR5KCRjb25maWctb3ItdGhlbWUpIHt9XG5cbkBtaXhpbiBtYXQtY2hlY2tib3gtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZykge1xuICAkdGhlbWU6IG1hdC1wcml2YXRlLWxlZ2FjeS1nZXQtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZyk7XG4gIEBpbmNsdWRlIG1hdC1wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LWNoZWNrYm94Jykge1xuICAgICRjb2xvcjogbWF0LWdldC1jb2xvci1jb25maWcoJHRoZW1lKTtcbiAgICAkZGVuc2l0eTogbWF0LWdldC1kZW5zaXR5LWNvbmZpZygkdGhlbWUpO1xuICAgICR0eXBvZ3JhcGh5OiBtYXQtZ2V0LXR5cG9ncmFwaHktY29uZmlnKCR0aGVtZSk7XG5cbiAgICBAaWYgJGNvbG9yICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgbWF0LWNoZWNrYm94LWNvbG9yKCRjb2xvcik7XG4gICAgfVxuICAgIEBpZiAkZGVuc2l0eSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIF9tYXQtY2hlY2tib3gtZGVuc2l0eSgkZGVuc2l0eSk7XG4gICAgfVxuICAgIEBpZiAkdHlwb2dyYXBoeSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIG1hdC1jaGVja2JveC10eXBvZ3JhcGh5KCR0eXBvZ3JhcGh5KTtcbiAgICB9XG4gIH1cbn1cblxuXG5cblxuXG5cbiRtYXQtY2hpcC1yZW1vdmUtZm9udC1zaXplOiAxOHB4O1xuXG5AbWl4aW4gX21hdC1jaGlwLWVsZW1lbnQtY29sb3IoJGZvcmVncm91bmQsICRiYWNrZ3JvdW5kKSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICRiYWNrZ3JvdW5kO1xuICBjb2xvcjogJGZvcmVncm91bmQ7XG5cbiAgLm1hdC1jaGlwLXJlbW92ZSB7XG4gICAgY29sb3I6ICRmb3JlZ3JvdW5kO1xuICAgIG9wYWNpdHk6IDAuNDtcbiAgfVxufVxuXG5cbi8vIEFwcGxpZXMgdGhlIGJhY2tncm91bmQgY29sb3IgZm9yIGEgcmlwcGxlIGVsZW1lbnQuXG4vLyBJZiB0aGUgY29sb3IgdmFsdWUgcHJvdmlkZWQgaXMgbm90IGEgU2FzcyBjb2xvcixcbi8vIHdlIGFzc3VtZSB0aGF0IHdlJ3ZlIGJlZW4gZ2l2ZW4gYSBDU1MgdmFyaWFibGUuXG4vLyBTaW5jZSB3ZSBjYW4ndCBwZXJmb3JtIGFscGhhLWJsZW5kaW5nIG9uIGEgQ1NTIHZhcmlhYmxlLFxuLy8gd2UgaW5zdGVhZCBhZGQgdGhlIG9wYWNpdHkgZGlyZWN0bHkgdG8gdGhlIHJpcHBsZSBlbGVtZW50LlxuQG1peGluIF9tYXQtY2hpcHMtcmlwcGxlLWJhY2tncm91bmQoJHBhbGV0dGUsICRkZWZhdWx0LWNvbnRyYXN0LCAkb3BhY2l0eSkge1xuICAkYmFja2dyb3VuZC1jb2xvcjogbWF0LWNvbG9yKCRwYWxldHRlLCAkZGVmYXVsdC1jb250cmFzdCwgJG9wYWNpdHkpO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFja2dyb3VuZC1jb2xvcjtcbiAgQGlmICh0eXBlLW9mKCRiYWNrZ3JvdW5kLWNvbG9yKSAhPSBjb2xvcikge1xuICAgIG9wYWNpdHk6ICRvcGFjaXR5O1xuICB9XG59XG5cbkBtaXhpbiBfbWF0LWNoaXAtdGhlbWUtY29sb3IoJHBhbGV0dGUpIHtcbiAgQGluY2x1ZGUgX21hdC1jaGlwLWVsZW1lbnQtY29sb3IobWF0LWNvbG9yKCRwYWxldHRlLCBkZWZhdWx0LWNvbnRyYXN0KSwgbWF0LWNvbG9yKCRwYWxldHRlKSk7XG5cbiAgLm1hdC1yaXBwbGUtZWxlbWVudCB7XG4gICAgQGluY2x1ZGUgX21hdC1jaGlwcy1yaXBwbGUtYmFja2dyb3VuZCgkcGFsZXR0ZSwgZGVmYXVsdC1jb250cmFzdCwgMC4xKTtcbiAgfVxufVxuXG5AbWl4aW4gbWF0LWNoaXBzLWNvbG9yKCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogbWF0LWdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRpcy1kYXJrLXRoZW1lOiBtYXAtZ2V0KCRjb25maWcsIGlzLWRhcmspO1xuICAkcHJpbWFyeTogbWFwLWdldCgkY29uZmlnLCBwcmltYXJ5KTtcbiAgJGFjY2VudDogbWFwLWdldCgkY29uZmlnLCBhY2NlbnQpO1xuICAkd2FybjogbWFwLWdldCgkY29uZmlnLCB3YXJuKTtcbiAgJGJhY2tncm91bmQ6IG1hcC1nZXQoJGNvbmZpZywgYmFja2dyb3VuZCk7XG4gICRmb3JlZ3JvdW5kOiBtYXAtZ2V0KCRjb25maWcsIGZvcmVncm91bmQpO1xuXG4gICR1bnNlbGVjdGVkLWJhY2tncm91bmQ6IG1hdC1jb2xvcigkYmFja2dyb3VuZCwgdW5zZWxlY3RlZC1jaGlwKTtcbiAgJHVuc2VsZWN0ZWQtZm9yZWdyb3VuZDogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCB0ZXh0KTtcblxuICAubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAge1xuICAgIEBpbmNsdWRlIF9tYXQtY2hpcC1lbGVtZW50LWNvbG9yKCR1bnNlbGVjdGVkLWZvcmVncm91bmQsICR1bnNlbGVjdGVkLWJhY2tncm91bmQpO1xuXG4gICAgJjpub3QoLm1hdC1jaGlwLWRpc2FibGVkKSB7XG4gICAgICAmOmFjdGl2ZSB7XG4gICAgICAgIEBpbmNsdWRlIG1hdC1wcml2YXRlLXRoZW1lLWVsZXZhdGlvbigzLCAkY29uZmlnKTtcbiAgICAgIH1cblxuICAgICAgLm1hdC1jaGlwLXJlbW92ZTpob3ZlciB7XG4gICAgICAgIG9wYWNpdHk6IDAuNTQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJi5tYXQtY2hpcC1kaXNhYmxlZCB7XG4gICAgICBvcGFjaXR5OiAwLjQ7XG4gICAgfVxuXG4gICAgJjo6YWZ0ZXIge1xuICAgICAgYmFja2dyb3VuZDogbWFwLWdldCgkZm9yZWdyb3VuZCwgYmFzZSk7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkIHtcbiAgICAmLm1hdC1wcmltYXJ5IHtcbiAgICAgIEBpbmNsdWRlIF9tYXQtY2hpcC10aGVtZS1jb2xvcigkcHJpbWFyeSk7XG4gICAgfVxuXG4gICAgJi5tYXQtd2FybiB7XG4gICAgICBAaW5jbHVkZSBfbWF0LWNoaXAtdGhlbWUtY29sb3IoJHdhcm4pO1xuICAgIH1cblxuICAgICYubWF0LWFjY2VudCB7XG4gICAgICBAaW5jbHVkZSBfbWF0LWNoaXAtdGhlbWUtY29sb3IoJGFjY2VudCk7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBtYXQtY2hpcHMtdHlwb2dyYXBoeSgkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IG1hdC1nZXQtdHlwb2dyYXBoeS1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gIC5tYXQtY2hpcCB7XG4gICAgZm9udC1zaXplOiBtYXQtZm9udC1zaXplKCRjb25maWcsIGJvZHktMik7XG4gICAgZm9udC13ZWlnaHQ6IG1hdC1mb250LXdlaWdodCgkY29uZmlnLCBib2R5LTIpO1xuXG4gICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb24sXG4gICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbiB7XG4gICAgICBmb250LXNpemU6ICRtYXQtY2hpcC1yZW1vdmUtZm9udC1zaXplO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gX21hdC1jaGlwcy1kZW5zaXR5KCRjb25maWctb3ItdGhlbWUpIHt9XG5cbkBtaXhpbiBtYXQtY2hpcHMtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZykge1xuICAkdGhlbWU6IG1hdC1wcml2YXRlLWxlZ2FjeS1nZXQtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZyk7XG4gIEBpbmNsdWRlIG1hdC1wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LWNoaXBzJykge1xuICAgICRjb2xvcjogbWF0LWdldC1jb2xvci1jb25maWcoJHRoZW1lKTtcbiAgICAkZGVuc2l0eTogbWF0LWdldC1kZW5zaXR5LWNvbmZpZygkdGhlbWUpO1xuICAgICR0eXBvZ3JhcGh5OiBtYXQtZ2V0LXR5cG9ncmFwaHktY29uZmlnKCR0aGVtZSk7XG5cbiAgICBAaWYgJGNvbG9yICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgbWF0LWNoaXBzLWNvbG9yKCRjb2xvcik7XG4gICAgfVxuICAgIEBpZiAkZGVuc2l0eSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIF9tYXQtY2hpcHMtZGVuc2l0eSgkZGVuc2l0eSk7XG4gICAgfVxuICAgIEBpZiAkdHlwb2dyYXBoeSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIG1hdC1jaGlwcy10eXBvZ3JhcGh5KCR0eXBvZ3JhcGh5KTtcbiAgICB9XG4gIH1cbn1cblxuXG5cblxuXG5cbkBtaXhpbiBtYXQtZGl2aWRlci1jb2xvcigkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IG1hdC1nZXQtY29sb3ItY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAkZm9yZWdyb3VuZDogbWFwLWdldCgkY29uZmlnLCBmb3JlZ3JvdW5kKTtcblxuICAubWF0LWRpdmlkZXIge1xuICAgIGJvcmRlci10b3AtY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgZGl2aWRlcik7XG4gIH1cblxuICAubWF0LWRpdmlkZXItdmVydGljYWwge1xuICAgIGJvcmRlci1yaWdodC1jb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBkaXZpZGVyKTtcbiAgfVxufVxuXG5AbWl4aW4gbWF0LWRpdmlkZXItdHlwb2dyYXBoeSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gX21hdC1kaXZpZGVyLWRlbnNpdHkoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIG1hdC1kaXZpZGVyLXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiBtYXQtcHJpdmF0ZS1sZWdhY3ktZ2V0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICBAaW5jbHVkZSBtYXQtcHJpdmF0ZS1jaGVjay1kdXBsaWNhdGUtdGhlbWUtc3R5bGVzKCR0aGVtZSwgJ21hdC1kaXZpZGVyJykge1xuICAgICRjb2xvcjogbWF0LWdldC1jb2xvci1jb25maWcoJHRoZW1lKTtcbiAgICAkZGVuc2l0eTogbWF0LWdldC1kZW5zaXR5LWNvbmZpZygkdGhlbWUpO1xuICAgICR0eXBvZ3JhcGh5OiBtYXQtZ2V0LXR5cG9ncmFwaHktY29uZmlnKCR0aGVtZSk7XG5cbiAgICBAaWYgJGNvbG9yICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgbWF0LWRpdmlkZXItY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gICAgQGlmICRkZW5zaXR5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgX21hdC1kaXZpZGVyLWRlbnNpdHkoJGRlbnNpdHkpO1xuICAgIH1cbiAgICBAaWYgJHR5cG9ncmFwaHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBtYXQtZGl2aWRlci10eXBvZ3JhcGh5KCR0eXBvZ3JhcGh5KTtcbiAgICB9XG4gIH1cbn1cblxuXG5cblxuXG5AbWl4aW4gbWF0LXRhYmxlLWNvbG9yKCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogbWF0LWdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRiYWNrZ3JvdW5kOiBtYXAtZ2V0KCRjb25maWcsIGJhY2tncm91bmQpO1xuICAkZm9yZWdyb3VuZDogbWFwLWdldCgkY29uZmlnLCBmb3JlZ3JvdW5kKTtcblxuICAubWF0LXRhYmxlIHtcbiAgICBiYWNrZ3JvdW5kOiBtYXQtY29sb3IoJGJhY2tncm91bmQsICdjYXJkJyk7XG4gIH1cblxuICAubWF0LXRhYmxlIHRoZWFkLCAubWF0LXRhYmxlIHRib2R5LCAubWF0LXRhYmxlIHRmb290LFxuICBtYXQtaGVhZGVyLXJvdywgbWF0LXJvdywgbWF0LWZvb3Rlci1yb3csXG4gIFttYXQtaGVhZGVyLXJvd10sIFttYXQtcm93XSwgW21hdC1mb290ZXItcm93XSxcbiAgLm1hdC10YWJsZS1zdGlja3kge1xuICAgIGJhY2tncm91bmQ6IGluaGVyaXQ7XG4gIH1cblxuICBtYXQtcm93LCBtYXQtaGVhZGVyLXJvdywgbWF0LWZvb3Rlci1yb3csXG4gIHRoLm1hdC1oZWFkZXItY2VsbCwgdGQubWF0LWNlbGwsIHRkLm1hdC1mb290ZXItY2VsbCB7XG4gICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBkaXZpZGVyKTtcbiAgfVxuXG4gIC5tYXQtaGVhZGVyLWNlbGwge1xuICAgIGNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIHNlY29uZGFyeS10ZXh0KTtcbiAgfVxuXG4gIC5tYXQtY2VsbCwgLm1hdC1mb290ZXItY2VsbCB7XG4gICAgY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgdGV4dCk7XG4gIH1cbn1cblxuQG1peGluIG1hdC10YWJsZS10eXBvZ3JhcGh5KCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogbWF0LWdldC10eXBvZ3JhcGh5LWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgLm1hdC10YWJsZSB7XG4gICAgZm9udC1mYW1pbHk6IG1hdC1mb250LWZhbWlseSgkY29uZmlnKTtcbiAgfVxuXG4gIC5tYXQtaGVhZGVyLWNlbGwge1xuICAgIGZvbnQtc2l6ZTogbWF0LWZvbnQtc2l6ZSgkY29uZmlnLCBjYXB0aW9uKTtcbiAgICBmb250LXdlaWdodDogbWF0LWZvbnQtd2VpZ2h0KCRjb25maWcsIGJvZHktMik7XG4gIH1cblxuICAubWF0LWNlbGwsIC5tYXQtZm9vdGVyLWNlbGwge1xuICAgIGZvbnQtc2l6ZTogbWF0LWZvbnQtc2l6ZSgkY29uZmlnLCBib2R5LTEpO1xuICB9XG59XG5cbkBtaXhpbiBfbWF0LXRhYmxlLWRlbnNpdHkoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIG1hdC10YWJsZS10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKSB7XG4gICR0aGVtZTogbWF0LXByaXZhdGUtbGVnYWN5LWdldC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgQGluY2x1ZGUgbWF0LXByaXZhdGUtY2hlY2stZHVwbGljYXRlLXRoZW1lLXN0eWxlcygkdGhlbWUsICdtYXQtdGFibGUnKSB7XG4gICAgJGNvbG9yOiBtYXQtZ2V0LWNvbG9yLWNvbmZpZygkdGhlbWUpO1xuICAgICRkZW5zaXR5OiBtYXQtZ2V0LWRlbnNpdHktY29uZmlnKCR0aGVtZSk7XG4gICAgJHR5cG9ncmFwaHk6IG1hdC1nZXQtdHlwb2dyYXBoeS1jb25maWcoJHRoZW1lKTtcblxuICAgIEBpZiAkY29sb3IgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBtYXQtdGFibGUtY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gICAgQGlmICRkZW5zaXR5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgX21hdC10YWJsZS1kZW5zaXR5KCRkZW5zaXR5KTtcbiAgICB9XG4gICAgQGlmICR0eXBvZ3JhcGh5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgbWF0LXRhYmxlLXR5cG9ncmFwaHkoJHR5cG9ncmFwaHkpO1xuICAgIH1cbiAgfVxufVxuXG5cblxuXG5cblxuXG4kbWF0LWRhdGVwaWNrZXItc2VsZWN0ZWQtdG9kYXktYm94LXNoYWRvdy13aWR0aDogMXB4O1xuJG1hdC1kYXRlcGlja2VyLXNlbGVjdGVkLWZhZGUtYW1vdW50OiAwLjY7XG4kbWF0LWRhdGVwaWNrZXItcmFuZ2UtZmFkZS1hbW91bnQ6IDAuMjtcbiRtYXQtZGF0ZXBpY2tlci10b2RheS1mYWRlLWFtb3VudDogMC4yO1xuJG1hdC1jYWxlbmRhci1ib2R5LWZvbnQtc2l6ZTogMTNweCAhZGVmYXVsdDtcbiRtYXQtY2FsZW5kYXItd2Vla2RheS10YWJsZS1mb250LXNpemU6IDExcHggIWRlZmF1bHQ7XG5cbkBtaXhpbiBfbWF0LWRhdGVwaWNrZXItY29sb3IoJHBhbGV0dGUpIHtcbiAgQGluY2x1ZGUgbWF0LWRhdGUtcmFuZ2UtY29sb3JzKFxuICAgIG1hdC1jb2xvcigkcGFsZXR0ZSwgZGVmYXVsdCwgJG1hdC1kYXRlcGlja2VyLXJhbmdlLWZhZGUtYW1vdW50KSk7XG5cbiAgLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBtYXQtY29sb3IoJHBhbGV0dGUpO1xuICAgIGNvbG9yOiBtYXQtY29sb3IoJHBhbGV0dGUsIGRlZmF1bHQtY29udHJhc3QpO1xuICB9XG5cbiAgLm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkID4gLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkIHtcbiAgICAkYmFja2dyb3VuZDogbWF0LWNvbG9yKCRwYWxldHRlKTtcblxuICAgIEBpZiAodHlwZS1vZigkYmFja2dyb3VuZCkgPT0gY29sb3IpIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IGZhZGUtb3V0KCRiYWNrZ3JvdW5kLCAkbWF0LWRhdGVwaWNrZXItc2VsZWN0ZWQtZmFkZS1hbW91bnQpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAvLyBJZiB3ZSBjb3VsZG4ndCByZXNvbHZlIHRvIGJhY2tncm91bmQgdG8gYSBjb2xvciAoZS5nLiBpdCdzIGEgQ1NTIHZhcmlhYmxlKSxcbiAgICAgIC8vIGZhbGwgYmFjayB0byBmYWRpbmcgdGhlIGNvbnRlbnQgb3V0IHZpYSBgb3BhY2l0eWAuXG4gICAgICBvcGFjaXR5OiAkbWF0LWRhdGVwaWNrZXItdG9kYXktZmFkZS1hbW91bnQ7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1jYWxlbmRhci1ib2R5LXRvZGF5Lm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkIHtcbiAgICBib3gtc2hhZG93OiBpbnNldCAwIDAgMCAkbWF0LWRhdGVwaWNrZXItc2VsZWN0ZWQtdG9kYXktYm94LXNoYWRvdy13aWR0aFxuICAgICAgICAgICAgICAgIG1hdC1jb2xvcigkcGFsZXR0ZSwgZGVmYXVsdC1jb250cmFzdCk7XG4gIH1cblxuICAubWF0LWNhbGVuZGFyLWJvZHktY2VsbDpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkKTpob3ZlcixcbiAgLmNkay1rZXlib2FyZC1mb2N1c2VkIC5tYXQtY2FsZW5kYXItYm9keS1hY3RpdmUsXG4gIC5jZGstcHJvZ3JhbS1mb2N1c2VkIC5tYXQtY2FsZW5kYXItYm9keS1hY3RpdmUge1xuICAgICYgPiAubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50IHtcbiAgICAgIEBpbmNsdWRlIF9tYXQtZGF0ZXBpY2tlci11bnNlbGVjdGVkLWNlbGwge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBtYXQtY29sb3IoJHBhbGV0dGUsIDAuMyk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vIFV0aWxpdHkgbWl4aW4gdG8gdGFyZ2V0IGNlbGxzIHRoYXQgYXJlbid0IHNlbGVjdGVkLiBVc2VkIHRvIG1ha2Ugc2VsZWN0b3IgZWFzaWVyIHRvIGZvbGxvdy5cbkBtaXhpbiBfbWF0LWRhdGVwaWNrZXItdW5zZWxlY3RlZC1jZWxsIHtcbiAgJjpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuQG1peGluIG1hdC1kYXRlcGlja2VyLWNvbG9yKCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogbWF0LWdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRmb3JlZ3JvdW5kOiBtYXAtZ2V0KCRjb25maWcsIGZvcmVncm91bmQpO1xuICAkYmFja2dyb3VuZDogbWFwLWdldCgkY29uZmlnLCBiYWNrZ3JvdW5kKTtcbiAgJGRpc2FibGVkLWNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIGRpc2FibGVkLXRleHQpO1xuXG4gIC5tYXQtY2FsZW5kYXItYXJyb3cge1xuICAgIGJvcmRlci10b3AtY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgaWNvbik7XG4gIH1cblxuICAvLyBUaGUgcHJldi9uZXh0IGJ1dHRvbnMgbmVlZCBhIGJpdCBtb3JlIHNwZWNpZmljaXR5IHRvXG4gIC8vIGF2b2lkIGJlaW5nIG92ZXJ3cml0dGVuIGJ5IHRoZSAubWF0LWljb24tYnV0dG9uLlxuICAubWF0LWRhdGVwaWNrZXItdG9nZ2xlLFxuICAubWF0LWRhdGVwaWNrZXItY29udGVudCAubWF0LWNhbGVuZGFyLW5leHQtYnV0dG9uLFxuICAubWF0LWRhdGVwaWNrZXItY29udGVudCAubWF0LWNhbGVuZGFyLXByZXZpb3VzLWJ1dHRvbiB7XG4gICAgY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgaWNvbik7XG4gIH1cblxuICAubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlciB7XG4gICAgY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgaGludC10ZXh0KTtcbiAgfVxuXG4gIC5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyLWRpdmlkZXI6OmFmdGVyIHtcbiAgICBiYWNrZ3JvdW5kOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIGRpdmlkZXIpO1xuICB9XG5cbiAgLm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsIHtcbiAgICBjb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBzZWNvbmRhcnktdGV4dCk7XG4gIH1cblxuICAubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50LFxuICAubWF0LWRhdGUtcmFuZ2UtaW5wdXQtc2VwYXJhdG9yIHtcbiAgICBjb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCB0ZXh0KTtcbiAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xuICB9XG5cbiAgLm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkID4gLm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudCB7XG4gICAgQGluY2x1ZGUgX21hdC1kYXRlcGlja2VyLXVuc2VsZWN0ZWQtY2VsbCB7XG4gICAgICBjb2xvcjogJGRpc2FibGVkLWNvbG9yO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZCAubWF0LWRhdGUtcmFuZ2UtaW5wdXQtc2VwYXJhdG9yIHtcbiAgICBjb2xvcjogJGRpc2FibGVkLWNvbG9yO1xuICB9XG5cbiAgLm1hdC1jYWxlbmRhci1ib2R5LWluLXByZXZpZXcge1xuICAgICRkaXZpZGVyLWNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIGRpdmlkZXIpO1xuXG4gICAgQGlmIHR5cGUtb2YoJGRpdmlkZXItY29sb3IpID09IGNvbG9yIHtcbiAgICAgIC8vIFRoZSBkaXZpZGVyIGNvbG9yIGlzIHNldCB1bmRlciB0aGUgYXNzdW1wdGlvbiB0aGF0IGl0J2xsIGJlIHVzZWRcbiAgICAgIC8vIGZvciBhIHNvbGlkIGJvcmRlciwgYnV0IGJlY2F1c2Ugd2UncmUgdXNpbmcgYSBkYXNoZWQgYm9yZGVyIGZvciB0aGVcbiAgICAgIC8vIHByZXZpZXcgcmFuZ2UsIHdlIG5lZWQgdG8gYnVtcCBpdHMgb3BhY2l0eSB0byBlbnN1cmUgdGhhdCBpdCdzIHZpc2libGUuXG4gICAgICBjb2xvcjogcmdiYSgkZGl2aWRlci1jb2xvciwgbWluKG9wYWNpdHkoJGRpdmlkZXItY29sb3IpICogMiwgMSkpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBjb2xvcjogJGRpdmlkZXItY29sb3I7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1jYWxlbmRhci1ib2R5LXRvZGF5IHtcbiAgICBAaW5jbHVkZSBfbWF0LWRhdGVwaWNrZXItdW5zZWxlY3RlZC1jZWxsIHtcbiAgICAgIC8vIE5vdGU6IHRob3VnaCBpdCdzIG5vdCB0ZXh0LCB0aGUgYm9yZGVyIGlzIGEgaGludCBhYm91dCB0aGUgZmFjdCB0aGF0IHRoaXMgaXMgdG9kYXkncyBkYXRlLFxuICAgICAgLy8gc28gd2UgdXNlIHRoZSBoaW50IGNvbG9yLlxuICAgICAgYm9yZGVyLWNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIGhpbnQtdGV4dCk7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkID4gLm1hdC1jYWxlbmRhci1ib2R5LXRvZGF5IHtcbiAgICBAaW5jbHVkZSBfbWF0LWRhdGVwaWNrZXItdW5zZWxlY3RlZC1jZWxsIHtcbiAgICAgICRjb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBoaW50LXRleHQpO1xuXG4gICAgICBAaWYgKHR5cGUtb2YoJGNvbG9yKSA9PSBjb2xvcikge1xuICAgICAgICBib3JkZXItY29sb3I6IGZhZGUtb3V0KCRjb2xvciwgJG1hdC1kYXRlcGlja2VyLXRvZGF5LWZhZGUtYW1vdW50KTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgLy8gSWYgdGhlIGNvbG9yIGRpZG4ndCByZXNvbHZlIHRvIGEgY29sb3IgdmFsdWUsIGJ1dCBzb21ldGhpbmcgbGlrZSBhIENTUyB2YXJpYWJsZSwgd2UgY2FuJ3RcbiAgICAgICAgLy8gZmFkZSBpdCBvdXQgc28gd2UgZmFsbCBiYWNrIHRvIHJlZHVjaW5nIHRoZSBlbGVtZW50IG9wYWNpdHkuIE5vdGUgdGhhdCB3ZSBkb24ndCB1c2UgdGhlXG4gICAgICAgIC8vICRtYXQtZGF0ZXBpY2tlci10b2RheS1mYWRlLWFtb3VudCwgYmVjYXVzZSBoaW50IHRleHQgdXN1YWxseSBoYXMgc29tZSBvcGFjaXR5IGFwcGxpZWRcbiAgICAgICAgLy8gdG8gaXQgYWxyZWFkeSBhbmQgd2UgZG9uJ3Qgd2FudCB0aGVtIHRvIHN0YWNrIG9uIHRvcCBvZiBlYWNoIG90aGVyLlxuICAgICAgICBvcGFjaXR5OiAwLjU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgX21hdC1kYXRlcGlja2VyLWNvbG9yKG1hcC1nZXQoJGNvbmZpZywgcHJpbWFyeSkpO1xuXG4gIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50IHtcbiAgICBAaW5jbHVkZSBtYXQtcHJpdmF0ZS10aGVtZS1lbGV2YXRpb24oNCwgJGNvbmZpZyk7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogbWF0LWNvbG9yKCRiYWNrZ3JvdW5kLCBjYXJkKTtcbiAgICBjb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCB0ZXh0KTtcblxuICAgICYubWF0LWFjY2VudCB7XG4gICAgICBAaW5jbHVkZSBfbWF0LWRhdGVwaWNrZXItY29sb3IobWFwLWdldCgkY29uZmlnLCBhY2NlbnQpKTtcbiAgICB9XG5cbiAgICAmLm1hdC13YXJuIHtcbiAgICAgIEBpbmNsdWRlIF9tYXQtZGF0ZXBpY2tlci1jb2xvcihtYXAtZ2V0KCRjb25maWcsIHdhcm4pKTtcbiAgICB9XG4gIH1cblxuICAubWF0LWRhdGVwaWNrZXItY29udGVudC10b3VjaCB7XG4gICAgQGluY2x1ZGUgbWF0LXByaXZhdGUtdGhlbWUtZWxldmF0aW9uKDAsICRjb25maWcpO1xuICB9XG5cbiAgLm1hdC1kYXRlcGlja2VyLXRvZ2dsZS1hY3RpdmUge1xuICAgIGNvbG9yOiBtYXQtY29sb3IobWFwLWdldCgkY29uZmlnLCBwcmltYXJ5KSwgdGV4dCk7XG5cbiAgICAmLm1hdC1hY2NlbnQge1xuICAgICAgY29sb3I6IG1hdC1jb2xvcihtYXAtZ2V0KCRjb25maWcsIGFjY2VudCksIHRleHQpO1xuICAgIH1cblxuICAgICYubWF0LXdhcm4ge1xuICAgICAgY29sb3I6IG1hdC1jb2xvcihtYXAtZ2V0KCRjb25maWcsIHdhcm4pLCB0ZXh0KTtcbiAgICB9XG4gIH1cblxuICAubWF0LWRhdGUtcmFuZ2UtaW5wdXQtaW5uZXJbZGlzYWJsZWRdIHtcbiAgICBjb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBkaXNhYmxlZC10ZXh0KTtcbiAgfVxufVxuXG5AbWl4aW4gbWF0LWRhdGVwaWNrZXItdHlwb2dyYXBoeSgkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IG1hdC1nZXQtdHlwb2dyYXBoeS1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gIC5tYXQtY2FsZW5kYXIge1xuICAgIGZvbnQtZmFtaWx5OiBtYXQtZm9udC1mYW1pbHkoJGNvbmZpZyk7XG4gIH1cblxuICAubWF0LWNhbGVuZGFyLWJvZHkge1xuICAgIGZvbnQtc2l6ZTogJG1hdC1jYWxlbmRhci1ib2R5LWZvbnQtc2l6ZTtcbiAgfVxuXG4gIC5tYXQtY2FsZW5kYXItYm9keS1sYWJlbCxcbiAgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uIHtcbiAgICBmb250OiB7XG4gICAgICBzaXplOiBtYXQtZm9udC1zaXplKCRjb25maWcsIGJ1dHRvbik7XG4gICAgICB3ZWlnaHQ6IG1hdC1mb250LXdlaWdodCgkY29uZmlnLCBidXR0b24pO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyIHRoIHtcbiAgICBmb250OiB7XG4gICAgICBzaXplOiAkbWF0LWNhbGVuZGFyLXdlZWtkYXktdGFibGUtZm9udC1zaXplO1xuICAgICAgd2VpZ2h0OiBtYXQtZm9udC13ZWlnaHQoJGNvbmZpZywgYm9keS0xKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIG1hdC1kYXRlLXJhbmdlLWNvbG9ycyhcbiAgJHJhbmdlLWNvbG9yLFxuICAkY29tcGFyaXNvbi1jb2xvcjogcmdiYSgjZjlhYjAwLCAkbWF0LWRhdGVwaWNrZXItcmFuZ2UtZmFkZS1hbW91bnQpLFxuICAkb3ZlcmxhcC1jb2xvcjogI2E4ZGFiNSxcbiAgJG92ZXJsYXAtc2VsZWN0ZWQtY29sb3I6IGRhcmtlbigkb3ZlcmxhcC1jb2xvciwgMzAlKSkge1xuXG4gIC5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZTo6YmVmb3JlIHtcbiAgICBiYWNrZ3JvdW5kOiAkcmFuZ2UtY29sb3I7XG4gIH1cblxuICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwsXG4gIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlOjpiZWZvcmUge1xuICAgIGJhY2tncm91bmQ6ICRjb21wYXJpc29uLWNvbG9yO1xuICB9XG5cbiAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLXN0YXJ0OjpiZWZvcmUsXG4gIFtkaXI9J3J0bCddIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1lbmQ6OmJlZm9yZSB7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCAkcmFuZ2UtY29sb3IgNTAlLCAkY29tcGFyaXNvbi1jb2xvciA1MCUpO1xuICB9XG5cbiAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZDo6YmVmb3JlLFxuICBbZGlyPSdydGwnXSAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnQ6OmJlZm9yZSB7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIGxlZnQsICRyYW5nZS1jb2xvciA1MCUsICRjb21wYXJpc29uLWNvbG9yIDUwJSk7XG4gIH1cblxuICAubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2UgPiAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwsXG4gIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlOjphZnRlciB7XG4gICAgYmFja2dyb3VuZDogJG92ZXJsYXAtY29sb3I7XG4gIH1cblxuICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQsXG4gIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlID4gLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkIHtcbiAgICBiYWNrZ3JvdW5kOiAkb3ZlcmxhcC1zZWxlY3RlZC1jb2xvcjtcbiAgfVxufVxuXG5AbWl4aW4gX21hdC1kYXRlcGlja2VyLWRlbnNpdHkoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIG1hdC1kYXRlcGlja2VyLXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiBtYXQtcHJpdmF0ZS1sZWdhY3ktZ2V0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICBAaW5jbHVkZSBtYXQtcHJpdmF0ZS1jaGVjay1kdXBsaWNhdGUtdGhlbWUtc3R5bGVzKCR0aGVtZSwgJ21hdC1kYXRlcGlja2VyJykge1xuICAgICRjb2xvcjogbWF0LWdldC1jb2xvci1jb25maWcoJHRoZW1lKTtcbiAgICAkZGVuc2l0eTogbWF0LWdldC1kZW5zaXR5LWNvbmZpZygkdGhlbWUpO1xuICAgICR0eXBvZ3JhcGh5OiBtYXQtZ2V0LXR5cG9ncmFwaHktY29uZmlnKCR0aGVtZSk7XG5cbiAgICBAaWYgJGNvbG9yICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgbWF0LWRhdGVwaWNrZXItY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gICAgQGlmICRkZW5zaXR5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgX21hdC1kYXRlcGlja2VyLWRlbnNpdHkoJGRlbnNpdHkpO1xuICAgIH1cbiAgICBAaWYgJHR5cG9ncmFwaHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBtYXQtZGF0ZXBpY2tlci10eXBvZ3JhcGh5KCR0eXBvZ3JhcGh5KTtcbiAgICB9XG4gIH1cbn1cblxuXG5cblxuXG5cblxuQG1peGluIG1hdC1kaWFsb2ctY29sb3IoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiBtYXQtZ2V0LWNvbG9yLWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgJGJhY2tncm91bmQ6IG1hcC1nZXQoJGNvbmZpZywgYmFja2dyb3VuZCk7XG4gICRmb3JlZ3JvdW5kOiBtYXAtZ2V0KCRjb25maWcsIGZvcmVncm91bmQpO1xuXG4gIC5tYXQtZGlhbG9nLWNvbnRhaW5lciB7XG4gICAgQGluY2x1ZGUgbWF0LXByaXZhdGUtdGhlbWUtZWxldmF0aW9uKDI0LCAkY29uZmlnKTtcbiAgICBiYWNrZ3JvdW5kOiBtYXQtY29sb3IoJGJhY2tncm91bmQsIGRpYWxvZyk7XG4gICAgY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgdGV4dCk7XG4gIH1cbn1cblxuQG1peGluIG1hdC1kaWFsb2ctdHlwb2dyYXBoeSgkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IG1hdC1nZXQtdHlwb2dyYXBoeS1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gIC5tYXQtZGlhbG9nLXRpdGxlIHtcbiAgICBAaW5jbHVkZSBtYXQtdHlwb2dyYXBoeS1sZXZlbC10by1zdHlsZXMoJGNvbmZpZywgdGl0bGUpO1xuICB9XG59XG5cbkBtaXhpbiBfbWF0LWRpYWxvZy1kZW5zaXR5KCRjb25maWctb3ItdGhlbWUpIHt9XG5cbkBtaXhpbiBtYXQtZGlhbG9nLXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiBtYXQtcHJpdmF0ZS1sZWdhY3ktZ2V0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICBAaW5jbHVkZSBtYXQtcHJpdmF0ZS1jaGVjay1kdXBsaWNhdGUtdGhlbWUtc3R5bGVzKCR0aGVtZSwgJ21hdC1kaWFsb2cnKSB7XG4gICAgJGNvbG9yOiBtYXQtZ2V0LWNvbG9yLWNvbmZpZygkdGhlbWUpO1xuICAgICRkZW5zaXR5OiBtYXQtZ2V0LWRlbnNpdHktY29uZmlnKCR0aGVtZSk7XG4gICAgJHR5cG9ncmFwaHk6IG1hdC1nZXQtdHlwb2dyYXBoeS1jb25maWcoJHRoZW1lKTtcblxuICAgIEBpZiAkY29sb3IgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBtYXQtZGlhbG9nLWNvbG9yKCRjb2xvcik7XG4gICAgfVxuICAgIEBpZiAkZGVuc2l0eSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIF9tYXQtZGlhbG9nLWRlbnNpdHkoJGRlbnNpdHkpO1xuICAgIH1cbiAgICBAaWYgJHR5cG9ncmFwaHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBtYXQtZGlhbG9nLXR5cG9ncmFwaHkoJHR5cG9ncmFwaHkpO1xuICAgIH1cbiAgfVxufVxuXG5cblxuXG5cblxuLy8gRGVmYXVsdCBtaW5pbXVtIGFuZCBtYXhpbXVtIGhlaWdodCBmb3IgY29sbGFwc2VkIHBhbmVsIGhlYWRlcnMuXG4kbWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXItY29sbGFwc2VkLWhlaWdodDogNDhweCAhZGVmYXVsdDtcbiRtYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci1jb2xsYXBzZWQtbWluaW11bS1oZWlnaHQ6IDM2cHggIWRlZmF1bHQ7XG4kbWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXItY29sbGFwc2VkLW1heGltdW0taGVpZ2h0OlxuICAgICRtYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci1jb2xsYXBzZWQtaGVpZ2h0ICFkZWZhdWx0O1xuXG4vLyBEZWZhdWx0IG1pbmltdW0gYW5kIG1heGltdW0gaGVpZ2h0IGZvciBleHBhbmRlZCBwYW5lbCBoZWFkZXJzLlxuJG1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLWV4cGFuZGVkLWhlaWdodDogNjRweCAhZGVmYXVsdDtcbiRtYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci1leHBhbmRlZC1taW5pbXVtLWhlaWdodDogNDhweCAhZGVmYXVsdDtcbiRtYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci1leHBhbmRlZC1tYXhpbXVtLWhlaWdodDpcbiAgICAkbWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXItZXhwYW5kZWQtaGVpZ2h0ICFkZWZhdWx0O1xuXG4vLyBEZW5zaXR5IGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBleHBhbnNpb24gcGFuZWwuIENhcHR1cmVzIHRoZVxuLy8gaGVpZ2h0IGZvciBib3RoIGV4cGFuZGVkIGFuZCBjb2xsYXBzZWQgcGFuZWwgaGVhZGVycy5cbiRtYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci1kZW5zaXR5LWNvbmZpZzogKFxuICBjb2xsYXBzZWQtaGVpZ2h0OiAoXG4gICAgZGVmYXVsdDogJG1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLWNvbGxhcHNlZC1oZWlnaHQsXG4gICAgbWF4aW11bTogJG1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLWNvbGxhcHNlZC1tYXhpbXVtLWhlaWdodCxcbiAgICBtaW5pbXVtOiAkbWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXItY29sbGFwc2VkLW1pbmltdW0taGVpZ2h0LFxuICApLFxuICBleHBhbmRlZC1oZWlnaHQ6IChcbiAgICBkZWZhdWx0OiAkbWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXItZXhwYW5kZWQtaGVpZ2h0LFxuICAgIG1heGltdW06ICRtYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci1leHBhbmRlZC1tYXhpbXVtLWhlaWdodCxcbiAgICBtaW5pbXVtOiAkbWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXItZXhwYW5kZWQtbWluaW11bS1oZWlnaHQsXG4gIClcbikgIWRlZmF1bHQ7XG5cbi8vIE5vdGU6IEtlZXAgdGhpcyBpbiBzeW5jIHdpdGggdGhlIGFuaW1hdGlvbiB0aW1pbmcgZm9yIHRoZSB0b2dnbGUgaW5kaWNhdG9yXG4vLyBhbmQgYm9keSBleHBhbnNpb24uIFRoZXNlIGFyZSBhbmltYXRlZCB1c2luZyBBbmd1bGFyIGFuaW1hdGlvbnMuXG4kbWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXItdHJhbnNpdGlvbjogMjI1bXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTtcblxuQG1peGluIG1hdC1wcml2YXRlLWV4cGFuc2lvbi1mb2N1cyB7XG4gIC5tYXQtZXhwYW5zaW9uLXBhbmVsIHtcbiAgICAmIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci5jZGsta2V5Ym9hcmQtZm9jdXNlZCxcbiAgICAmIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci5jZGstcHJvZ3JhbS1mb2N1c2VkLFxuICAgICY6bm90KC5tYXQtZXhwYW5kZWQpIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcjpob3ZlciB7XG4gICAgICAmOm5vdChbYXJpYS1kaXNhYmxlZD0ndHJ1ZSddKSB7XG4gICAgICAgIEBjb250ZW50O1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5cbkBtaXhpbiBtYXQtZXhwYW5zaW9uLXBhbmVsLWNvbG9yKCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogbWF0LWdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRiYWNrZ3JvdW5kOiBtYXAtZ2V0KCRjb25maWcsIGJhY2tncm91bmQpO1xuICAkZm9yZWdyb3VuZDogbWFwLWdldCgkY29uZmlnLCBmb3JlZ3JvdW5kKTtcblxuICAubWF0LWV4cGFuc2lvbi1wYW5lbCB7XG4gICAgQGluY2x1ZGUgbWF0LXByaXZhdGUtdGhlbWUtb3ZlcnJpZGFibGUtZWxldmF0aW9uKDIsICRjb25maWcpO1xuICAgIGJhY2tncm91bmQ6IG1hdC1jb2xvcigkYmFja2dyb3VuZCwgY2FyZCk7XG4gICAgY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgdGV4dCk7XG4gIH1cblxuICAubWF0LWFjdGlvbi1yb3cge1xuICAgIGJvcmRlci10b3AtY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgZGl2aWRlcik7XG4gIH1cblxuICBAaW5jbHVkZSBtYXQtcHJpdmF0ZS1leHBhbnNpb24tZm9jdXMge1xuICAgIGJhY2tncm91bmQ6IG1hdC1jb2xvcigkYmFja2dyb3VuZCwgaG92ZXIpO1xuICB9XG5cbiAgLy8gRGlzYWJsZSB0aGUgaG92ZXIgb24gdG91Y2ggZGV2aWNlcyBzaW5jZSBpdCBjYW4gYXBwZWFyIGxpa2UgaXQgaXMgc3R1Y2suIFdlIGNhbid0IHVzZVxuICAvLyBgQG1lZGlhIChob3ZlcilgIGFib3ZlLCBiZWNhdXNlIHRoZSBkZXNrdG9wIHN1cHBvcnQgYnJvd3NlciBzdXBwb3J0IGlzbid0IGdyZWF0LlxuICBAbWVkaWEgKGhvdmVyOiBub25lKSB7XG4gICAgLm1hdC1leHBhbnNpb24tcGFuZWw6bm90KC5tYXQtZXhwYW5kZWQpOm5vdChbYXJpYS1kaXNhYmxlZD0ndHJ1ZSddKVxuICAgICAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyOmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQ6IG1hdC1jb2xvcigkYmFja2dyb3VuZCwgY2FyZCk7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLXRpdGxlIHtcbiAgICBjb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCB0ZXh0KTtcbiAgfVxuXG4gIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci1kZXNjcmlwdGlvbixcbiAgLm1hdC1leHBhbnNpb24taW5kaWNhdG9yOjphZnRlciB7XG4gICAgY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgc2Vjb25kYXJ5LXRleHQpO1xuICB9XG5cbiAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW2FyaWEtZGlzYWJsZWQ9J3RydWUnXSB7XG4gICAgY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgZGlzYWJsZWQtYnV0dG9uKTtcblxuICAgIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci10aXRsZSxcbiAgICAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXItZGVzY3JpcHRpb24ge1xuICAgICAgY29sb3I6IGluaGVyaXQ7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBtYXQtZXhwYW5zaW9uLXBhbmVsLXR5cG9ncmFwaHkoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiBtYXQtZ2V0LXR5cG9ncmFwaHktY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXIge1xuICAgIGZvbnQ6IHtcbiAgICAgIGZhbWlseTogbWF0LWZvbnQtZmFtaWx5KCRjb25maWcsIHN1YmhlYWRpbmctMSk7XG4gICAgICBzaXplOiBtYXQtZm9udC1zaXplKCRjb25maWcsIHN1YmhlYWRpbmctMSk7XG4gICAgICB3ZWlnaHQ6IG1hdC1mb250LXdlaWdodCgkY29uZmlnLCBzdWJoZWFkaW5nLTEpO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnQge1xuICAgIEBpbmNsdWRlIG1hdC10eXBvZ3JhcGh5LWxldmVsLXRvLXN0eWxlcygkY29uZmlnLCBib2R5LTEpO1xuICB9XG59XG5cbkBtaXhpbiBtYXQtZXhwYW5zaW9uLXBhbmVsLWRlbnNpdHkoJGNvbmZpZy1vci10aGVtZSkge1xuICAkZGVuc2l0eS1zY2FsZTogbWF0LWdldC1kZW5zaXR5LWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgJGV4cGFuZGVkLWhlaWdodDogbWF0LXByaXZhdGUtZGVuc2l0eS1wcm9wLXZhbHVlKFxuICAgICAgICAkbWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXItZGVuc2l0eS1jb25maWcsICRkZW5zaXR5LXNjYWxlLCBleHBhbmRlZC1oZWlnaHQpO1xuICAkY29sbGFwc2VkLWhlaWdodDogbWF0LXByaXZhdGUtZGVuc2l0eS1wcm9wLXZhbHVlKFxuICAgICAgJG1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLWRlbnNpdHktY29uZmlnLCAkZGVuc2l0eS1zY2FsZSwgY29sbGFwc2VkLWhlaWdodCk7XG5cbiAgQGluY2x1ZGUgbWF0LXByaXZhdGUtZGVuc2l0eS1sZWdhY3ktY29tcGF0aWJpbGl0eSgpIHtcbiAgICAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXIge1xuICAgICAgaGVpZ2h0OiAkY29sbGFwc2VkLWhlaWdodDtcblxuICAgICAgJi5tYXQtZXhwYW5kZWQge1xuICAgICAgICBoZWlnaHQ6ICRleHBhbmRlZC1oZWlnaHQ7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBtYXQtZXhwYW5zaW9uLXBhbmVsLXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiBtYXQtcHJpdmF0ZS1sZWdhY3ktZ2V0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICBAaW5jbHVkZSBtYXQtcHJpdmF0ZS1jaGVjay1kdXBsaWNhdGUtdGhlbWUtc3R5bGVzKCR0aGVtZSwgJ21hdC1leHBhbnNpb24tcGFuZWwnKSB7XG4gICAgJGNvbG9yOiBtYXQtZ2V0LWNvbG9yLWNvbmZpZygkdGhlbWUpO1xuICAgICRkZW5zaXR5OiBtYXQtZ2V0LWRlbnNpdHktY29uZmlnKCR0aGVtZSk7XG4gICAgJHR5cG9ncmFwaHk6IG1hdC1nZXQtdHlwb2dyYXBoeS1jb25maWcoJHRoZW1lKTtcblxuICAgIEBpZiAkY29sb3IgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBtYXQtZXhwYW5zaW9uLXBhbmVsLWNvbG9yKCRjb2xvcik7XG4gICAgfVxuICAgIEBpZiAkZGVuc2l0eSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIG1hdC1leHBhbnNpb24tcGFuZWwtZGVuc2l0eSgkZGVuc2l0eSk7XG4gICAgfVxuICAgIEBpZiAkdHlwb2dyYXBoeSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIG1hdC1leHBhbnNpb24tcGFuZWwtdHlwb2dyYXBoeSgkdHlwb2dyYXBoeSk7XG4gICAgfVxuICB9XG59XG5cblxuXG5cbi8vIFRoaXMgbWl4aW4gd2lsbCBlbnN1cmUgdGhhdCBsaW5lcyB0aGF0IG92ZXJmbG93IHRoZSBjb250YWluZXIgd2lsbCBoaWRlIHRoZSBvdmVyZmxvdyBhbmRcbi8vIHRydW5jYXRlIG5lYXRseSB3aXRoIGFuIGVsbGlwc2lzLlxuQG1peGluIG1hdC10cnVuY2F0ZS1saW5lKCkge1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbn1cblxuLy8gTWl4aW4gdG8gcHJvdmlkZSBhbGwgbWF0LWxpbmUgc3R5bGVzLCBjaGFuZ2luZyBzZWNvbmRhcnkgZm9udCBzaXplIGJhc2VkIG9uIHdoZXRoZXIgdGhlIGxpc3Rcbi8vIGlzIGluIGRlbnNlIG1vZGUuXG5AbWl4aW4gbWF0LWxpbmUtYmFzZSgkc2Vjb25kYXJ5LWZvbnQtc2l6ZSkge1xuICAubWF0LWxpbmUge1xuICAgIEBpbmNsdWRlIG1hdC10cnVuY2F0ZS1saW5lKCk7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcblxuICAgIC8vIGFsbCBsaW5lcyBidXQgdGhlIHRvcCBsaW5lIHNob3VsZCBoYXZlIHNtYWxsZXIgdGV4dFxuICAgICY6bnRoLWNoaWxkKG4rMikge1xuICAgICAgZm9udC1zaXplOiAkc2Vjb25kYXJ5LWZvbnQtc2l6ZTtcbiAgICB9XG4gIH1cbn1cblxuLy8gVGhpcyBtaXhpbiBub3JtYWxpemVzIGRlZmF1bHQgZWxlbWVudCBzdHlsZXMsIGUuZy4gZm9udCB3ZWlnaHQgZm9yIGhlYWRpbmcgdGV4dC5cbkBtaXhpbiBtYXQtbm9ybWFsaXplLXRleHQoKSB7XG4gICYgPiAqIHtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgIGZvbnQtc2l6ZTogaW5oZXJpdDtcbiAgfVxufVxuXG4vLyBUaGlzIG1peGluIHByb3ZpZGVzIGJhc2Ugc3R5bGVzIGZvciB0aGUgd3JhcHBlciBhcm91bmQgbWF0LWxpbmUgZWxlbWVudHMgaW4gYSBsaXN0LlxuQG1peGluIG1hdC1saW5lLXdyYXBwZXItYmFzZSgpIHtcbiAgQGluY2x1ZGUgbWF0LW5vcm1hbGl6ZS10ZXh0KCk7XG5cbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgZmxleDogYXV0bztcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAvLyBNdXN0IHJlbW92ZSB3cmFwcGVyIHdoZW4gbGluZXMgYXJlIGVtcHR5IG9yIGl0IHRha2VzIHVwIGhvcml6b250YWxcbiAgLy8gc3BhY2UgYW5kIHB1c2hlcyBvdGhlciBlbGVtZW50cyB0byB0aGUgcmlnaHQuXG4gICY6ZW1wdHkge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cblxuXG5cbi8vIEluY2x1ZGUgdGhpcyBlbXB0eSBtaXhpbiBmb3IgY29uc2lzdGVuY3kgd2l0aCB0aGUgb3RoZXIgY29tcG9uZW50cy5cbkBtaXhpbiBtYXQtZ3JpZC1saXN0LWNvbG9yKCRjb25maWctb3ItdGhlbWUpIHt9XG5cbkBtaXhpbiBtYXQtZ3JpZC1saXN0LXR5cG9ncmFwaHkoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiBtYXQtZ2V0LXR5cG9ncmFwaHktY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAubWF0LWdyaWQtdGlsZS1oZWFkZXIsXG4gIC5tYXQtZ3JpZC10aWxlLWZvb3RlciB7XG4gICAgQGluY2x1ZGUgbWF0LWxpbmUtYmFzZShtYXQtZm9udC1zaXplKCRjb25maWcsIGNhcHRpb24pKTtcbiAgICBmb250LXNpemU6IG1hdC1mb250LXNpemUoJGNvbmZpZywgYm9keS0xKTtcbiAgfVxufVxuXG5AbWl4aW4gX21hdC1ncmlkLWxpc3QtZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gbWF0LWdyaWQtbGlzdC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKSB7XG4gICR0aGVtZTogbWF0LXByaXZhdGUtbGVnYWN5LWdldC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgQGluY2x1ZGUgbWF0LXByaXZhdGUtY2hlY2stZHVwbGljYXRlLXRoZW1lLXN0eWxlcygkdGhlbWUsICdtYXQtZ3JpZC1saXN0Jykge1xuICAgICRjb2xvcjogbWF0LWdldC1jb2xvci1jb25maWcoJHRoZW1lKTtcbiAgICAkZGVuc2l0eTogbWF0LWdldC1kZW5zaXR5LWNvbmZpZygkdGhlbWUpO1xuICAgICR0eXBvZ3JhcGh5OiBtYXQtZ2V0LXR5cG9ncmFwaHktY29uZmlnKCR0aGVtZSk7XG5cbiAgICBAaWYgJGNvbG9yICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgbWF0LWdyaWQtbGlzdC1jb2xvcigkY29sb3IpO1xuICAgIH1cbiAgICBAaWYgJGRlbnNpdHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBfbWF0LWdyaWQtbGlzdC1kZW5zaXR5KCRkZW5zaXR5KTtcbiAgICB9XG4gICAgQGlmICR0eXBvZ3JhcGh5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgbWF0LWdyaWQtbGlzdC10eXBvZ3JhcGh5KCR0eXBvZ3JhcGh5KTtcbiAgICB9XG4gIH1cbn1cblxuXG5cbkBtaXhpbiBtYXQtaWNvbi1jb2xvcigkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IG1hdC1nZXQtY29sb3ItY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAkcHJpbWFyeTogbWFwLWdldCgkY29uZmlnLCBwcmltYXJ5KTtcbiAgJGFjY2VudDogbWFwLWdldCgkY29uZmlnLCBhY2NlbnQpO1xuICAkd2FybjogbWFwLWdldCgkY29uZmlnLCB3YXJuKTtcbiAgJGJhY2tncm91bmQ6IG1hcC1nZXQoJGNvbmZpZywgYmFja2dyb3VuZCk7XG4gICRmb3JlZ3JvdW5kOiBtYXAtZ2V0KCRjb25maWcsIGZvcmVncm91bmQpO1xuXG4gIC5tYXQtaWNvbiB7XG4gICAgJi5tYXQtcHJpbWFyeSB7XG4gICAgICBjb2xvcjogbWF0LWNvbG9yKCRwcmltYXJ5LCB0ZXh0KTtcbiAgICB9XG5cbiAgICAmLm1hdC1hY2NlbnQge1xuICAgICAgY29sb3I6IG1hdC1jb2xvcigkYWNjZW50LCB0ZXh0KTtcbiAgICB9XG5cbiAgICAmLm1hdC13YXJuIHtcbiAgICAgIGNvbG9yOiBtYXQtY29sb3IoJHdhcm4sIHRleHQpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gbWF0LWljb24tdHlwb2dyYXBoeSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gX21hdC1pY29uLWRlbnNpdHkoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIG1hdC1pY29uLXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiBtYXQtcHJpdmF0ZS1sZWdhY3ktZ2V0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICBAaW5jbHVkZSBtYXQtcHJpdmF0ZS1jaGVjay1kdXBsaWNhdGUtdGhlbWUtc3R5bGVzKCR0aGVtZSwgJ21hdC1pY29uJykge1xuICAgICRjb2xvcjogbWF0LWdldC1jb2xvci1jb25maWcoJHRoZW1lKTtcbiAgICAkZGVuc2l0eTogbWF0LWdldC1kZW5zaXR5LWNvbmZpZygkdGhlbWUpO1xuICAgICR0eXBvZ3JhcGh5OiBtYXQtZ2V0LXR5cG9ncmFwaHktY29uZmlnKCR0aGVtZSk7XG5cbiAgICBAaWYgJGNvbG9yICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgbWF0LWljb24tY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gICAgQGlmICRkZW5zaXR5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgX21hdC1pY29uLWRlbnNpdHkoJGRlbnNpdHkpO1xuICAgIH1cbiAgICBAaWYgJHR5cG9ncmFwaHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBtYXQtaWNvbi10eXBvZ3JhcGh5KCR0eXBvZ3JhcGh5KTtcbiAgICB9XG4gIH1cbn1cblxuXG5cblxuXG5cbi8vIFJlbmRlcnMgYSBncmFkaWVudCBmb3Igc2hvd2luZyB0aGUgZGFzaGVkIGxpbmUgd2hlbiB0aGUgaW5wdXQgaXMgZGlzYWJsZWQuXG4vLyBVbmxpa2UgdXNpbmcgYSBib3JkZXIsIGEgZ3JhZGllbnQgYWxsb3dzIHVzIHRvIGFkanVzdCB0aGUgc3BhY2luZyBvZiB0aGUgZG90dGVkIGxpbmVcbi8vIHRvIG1hdGNoIHRoZSBNYXRlcmlhbCBEZXNpZ24gc3BlYy5cbkBtaXhpbiBtYXQtcHJpdmF0ZS1jb250cm9sLWRpc2FibGVkLXVuZGVybGluZSgkY29sb3IpIHtcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCAkY29sb3IgMCUsICRjb2xvciAzMyUsIHRyYW5zcGFyZW50IDAlKTtcbiAgYmFja2dyb3VuZC1zaXplOiA0cHggMTAwJTtcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC14O1xufVxuXG4vLyBGaWd1cmVzIG91dCB0aGUgY29sb3Igb2YgdGhlIHBsYWNlaG9sZGVyIGZvciBhIGZvcm0gY29udHJvbC5cbi8vIFVzZWQgcHJpbWFyaWx5IHRvIHByZXZlbnQgdGhlIHZhcmlvdXMgZm9ybSBjb250cm9scyBmcm9tXG4vLyBiZWNvbWluZyBvdXQgb2Ygc3luYyBzaW5jZSB0aGVzZSBjb2xvcnMgYXJlbid0IGluIGEgcGFsZXR0ZS5cbkBmdW5jdGlvbiBtYXQtcHJpdmF0ZS1jb250cm9sLXBsYWNlaG9sZGVyLWNvbG9yKCRjb25maWcpIHtcbiAgJGZvcmVncm91bmQ6IG1hcC1nZXQoJGNvbmZpZywgZm9yZWdyb3VuZCk7XG4gICRpcy1kYXJrLXRoZW1lOiBtYXAtZ2V0KCRjb25maWcsIGlzLWRhcmspO1xuICBAcmV0dXJuIG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgc2Vjb25kYXJ5LXRleHQsIGlmKCRpcy1kYXJrLXRoZW1lLCAwLjUsIDAuNDIpKTtcbn1cblxuXG4vKiBzdHlsZWxpbnQtZGlzYWJsZSBtYXRlcmlhbC9uby1wcmVmaXhlcyAqL1xuQG1peGluIHVzZXItc2VsZWN0KCR2YWx1ZSkge1xuICAtd2Via2l0LXVzZXItc2VsZWN0OiAkdmFsdWU7XG4gIC1tb3otdXNlci1zZWxlY3Q6ICR2YWx1ZTtcbiAgLW1zLXVzZXItc2VsZWN0OiAkdmFsdWU7XG4gIHVzZXItc2VsZWN0OiAkdmFsdWU7XG59XG5cbkBtaXhpbiBpbnB1dC1wbGFjZWhvbGRlciB7XG4gICY6OnBsYWNlaG9sZGVyIHtcbiAgICBAY29udGVudDtcbiAgfVxuXG4gICY6Oi1tb3otcGxhY2Vob2xkZXIge1xuICAgIEBjb250ZW50O1xuICB9XG5cbiAgJjo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cblxuICAmOi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuQG1peGluIGN1cnNvci1ncmFiIHtcbiAgY3Vyc29yOiAtd2Via2l0LWdyYWI7XG4gIGN1cnNvcjogZ3JhYjtcbn1cblxuQG1peGluIGN1cnNvci1ncmFiYmluZyB7XG4gIGN1cnNvcjogLXdlYmtpdC1ncmFiYmluZztcbiAgY3Vyc29yOiBncmFiYmluZztcbn1cblxuQG1peGluIGJhY2tmYWNlLXZpc2liaWxpdHkoJHZhbHVlKSB7XG4gIC13ZWJraXQtYmFja2ZhY2UtdmlzaWJpbGl0eTogJHZhbHVlO1xuICBiYWNrZmFjZS12aXNpYmlsaXR5OiAkdmFsdWU7XG59XG5cbkBtaXhpbiBwb3NpdGlvbi1zdGlja3koJGltcG9ydGFudDogZmFsc2UpIHtcbiAgcG9zaXRpb246IC13ZWJraXQtc3RpY2t5ICN7aWYoJGltcG9ydGFudCwgJyFpbXBvcnRhbnQnLCAnJyl9O1xuICBwb3NpdGlvbjogc3RpY2t5ICN7aWYoJGltcG9ydGFudCwgJyFpbXBvcnRhbnQnLCAnJyl9O1xufVxuLyogc3R5bGVsaW50LWVuYWJsZSAqL1xuXG5cblxuQG1peGluIG1hdC1pbnB1dC1jb2xvcigkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IG1hdC1nZXQtY29sb3ItY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAkcHJpbWFyeTogbWFwLWdldCgkY29uZmlnLCBwcmltYXJ5KTtcbiAgJGFjY2VudDogbWFwLWdldCgkY29uZmlnLCBhY2NlbnQpO1xuICAkd2FybjogbWFwLWdldCgkY29uZmlnLCB3YXJuKTtcbiAgJGZvcmVncm91bmQ6IG1hcC1nZXQoJGNvbmZpZywgZm9yZWdyb3VuZCk7XG5cbiAgLm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QgLm1hdC1mb3JtLWZpZWxkLWluZml4OjphZnRlciB7XG4gICAgY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgc2Vjb25kYXJ5LXRleHQpO1xuICB9XG5cbiAgLm1hdC1pbnB1dC1lbGVtZW50OmRpc2FibGVkLFxuICAubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZCAubWF0LWZvcm0tZmllbGQtaW5maXg6OmFmdGVyIHtcbiAgICBjb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBkaXNhYmxlZC10ZXh0KTtcbiAgfVxuXG4gIC5tYXQtaW5wdXQtZWxlbWVudCB7XG4gICAgY2FyZXQtY29sb3I6IG1hdC1jb2xvcigkcHJpbWFyeSwgdGV4dCk7XG5cbiAgICBAaW5jbHVkZSBpbnB1dC1wbGFjZWhvbGRlciB7XG4gICAgICBjb2xvcjogbWF0LXByaXZhdGUtY29udHJvbC1wbGFjZWhvbGRlci1jb2xvcigkY29uZmlnKTtcbiAgICB9XG5cbiAgICAvLyBPbiBkYXJrIHRoZW1lcyB3ZSBzZXQgdGhlIG5hdGl2ZSBgc2VsZWN0YCBjb2xvciB0byBzb21lIHNoYWRlIG9mIHdoaXRlLFxuICAgIC8vIGhvd2V2ZXIgdGhlIGNvbG9yIHByb3BhZ2F0ZXMgdG8gYWxsIG9mIHRoZSBgb3B0aW9uYCBlbGVtZW50cywgd2hpY2ggYXJlXG4gICAgLy8gYWx3YXlzIG9uIGEgd2hpdGUgYmFja2dyb3VuZCBpbnNpZGUgdGhlIGRyb3Bkb3duLCBjYXVzaW5nIHRoZW0gdG8gYmxlbmQgaW4uXG4gICAgLy8gU2luY2Ugd2UgY2FuJ3QgY2hhbmdlIGJhY2tncm91bmQgb2YgdGhlIGRyb3Bkb3duLCB3ZSBuZWVkIHRvIGV4cGxpY2l0bHlcbiAgICAvLyByZXNldCB0aGUgY29sb3Igb2YgdGhlIG9wdGlvbnMgdG8gc29tZXRoaW5nIGRhcmsuXG4gICAgQGlmIChtYXAtZ2V0KCRjb25maWcsIGlzLWRhcmspKSB7XG4gICAgICBvcHRpb24ge1xuICAgICAgICBjb2xvcjogJGRhcmstcHJpbWFyeS10ZXh0O1xuICAgICAgfVxuXG4gICAgICBvcHRpb246ZGlzYWJsZWQge1xuICAgICAgICBjb2xvcjogJGRhcmstZGlzYWJsZWQtdGV4dDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAubWF0LWZvcm0tZmllbGQubWF0LWFjY2VudCAubWF0LWlucHV0LWVsZW1lbnQge1xuICAgIGNhcmV0LWNvbG9yOiBtYXQtY29sb3IoJGFjY2VudCwgdGV4dCk7XG4gIH1cblxuICAubWF0LWZvcm0tZmllbGQubWF0LXdhcm4gLm1hdC1pbnB1dC1lbGVtZW50LFxuICAubWF0LWZvcm0tZmllbGQtaW52YWxpZCAubWF0LWlucHV0LWVsZW1lbnQge1xuICAgIGNhcmV0LWNvbG9yOiBtYXQtY29sb3IoJHdhcm4sIHRleHQpO1xuICB9XG5cbiAgLm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QubWF0LWZvcm0tZmllbGQtaW52YWxpZCAubWF0LWZvcm0tZmllbGQtaW5maXg6OmFmdGVyIHtcbiAgICBjb2xvcjogbWF0LWNvbG9yKCR3YXJuLCB0ZXh0KTtcbiAgfVxufVxuXG5AbWl4aW4gbWF0LWlucHV0LXR5cG9ncmFwaHkoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiBtYXQtZ2V0LXR5cG9ncmFwaHktY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAvLyBUaGUgdW5pdC1sZXNzIGxpbmUtaGVpZ2h0IGZyb20gdGhlIGZvbnQgY29uZmlnLlxuICAkbGluZS1oZWlnaHQ6IG1hdC1saW5lLWhlaWdodCgkY29uZmlnLCBpbnB1dCk7XG5cbiAgLy8gVGhlIGFtb3VudCBvZiBzcGFjZSBiZXR3ZWVuIHRoZSB0b3Agb2YgdGhlIGxpbmUgYW5kIHRoZSB0b3Agb2YgdGhlIGFjdHVhbCB0ZXh0XG4gIC8vIChhcyBhIGZyYWN0aW9uIG9mIHRoZSBmb250LXNpemUpLlxuICAkbGluZS1zcGFjaW5nOiAoJGxpbmUtaGVpZ2h0IC0gMSkgLyAyO1xuXG4gIC8vIDxpbnB1dD4gZWxlbWVudHMgc2VlbSB0byBoYXZlIHRoZWlyIGhlaWdodCBzZXQgc2xpZ2h0bHkgdG9vIGxhcmdlIG9uIFNhZmFyaSBjYXVzaW5nIHRoZSB0ZXh0IHRvXG4gIC8vIGJlIG1pc2FsaWduZWQgdy5yLnQuIHRoZSBwbGFjZWhvbGRlci4gQWRkaW5nIHRoaXMgbWFyZ2luIGNvcnJlY3RzIGl0LlxuICBpbnB1dC5tYXQtaW5wdXQtZWxlbWVudCB7XG4gICAgbWFyZ2luLXRvcDogLSRsaW5lLXNwYWNpbmcgKiAxZW07XG4gIH1cbn1cblxuQG1peGluIF9tYXQtaW5wdXQtZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gbWF0LWlucHV0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiBtYXQtcHJpdmF0ZS1sZWdhY3ktZ2V0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICBAaW5jbHVkZSBtYXQtcHJpdmF0ZS1jaGVjay1kdXBsaWNhdGUtdGhlbWUtc3R5bGVzKCR0aGVtZSwgJ21hdC1pbnB1dCcpIHtcbiAgICAkY29sb3I6IG1hdC1nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgJGRlbnNpdHk6IG1hdC1nZXQtZGVuc2l0eS1jb25maWcoJHRoZW1lKTtcbiAgICAkdHlwb2dyYXBoeTogbWF0LWdldC10eXBvZ3JhcGh5LWNvbmZpZygkdGhlbWUpO1xuXG4gICAgQGlmICRjb2xvciAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIG1hdC1pbnB1dC1jb2xvcigkY29sb3IpO1xuICAgIH1cbiAgICBAaWYgJGRlbnNpdHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBfbWF0LWlucHV0LWRlbnNpdHkoJGRlbnNpdHkpO1xuICAgIH1cbiAgICBAaWYgJHR5cG9ncmFwaHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBtYXQtaW5wdXQtdHlwb2dyYXBoeSgkdHlwb2dyYXBoeSk7XG4gICAgfVxuICB9XG59XG5cblxuXG5cblxuXG5cbkBtaXhpbiBtYXQtbGlzdC1jb2xvcigkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IG1hdC1nZXQtY29sb3ItY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAkYmFja2dyb3VuZDogbWFwLWdldCgkY29uZmlnLCBiYWNrZ3JvdW5kKTtcbiAgJGZvcmVncm91bmQ6IG1hcC1nZXQoJGNvbmZpZywgZm9yZWdyb3VuZCk7XG5cbiAgLm1hdC1saXN0LWJhc2Uge1xuICAgIC5tYXQtbGlzdC1pdGVtIHtcbiAgICAgIGNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIHRleHQpO1xuICAgIH1cblxuICAgIC5tYXQtbGlzdC1vcHRpb24ge1xuICAgICAgY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgdGV4dCk7XG4gICAgfVxuXG4gICAgLm1hdC1zdWJoZWFkZXIge1xuICAgICAgY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgc2Vjb25kYXJ5LXRleHQpO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtbGlzdC1pdGVtLWRpc2FibGVkIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBtYXQtY29sb3IoJGJhY2tncm91bmQsIGRpc2FibGVkLWxpc3Qtb3B0aW9uKTtcbiAgfVxuXG4gIC5tYXQtbGlzdC1vcHRpb24sXG4gIC5tYXQtbmF2LWxpc3QgLm1hdC1saXN0LWl0ZW0sXG4gIC5tYXQtYWN0aW9uLWxpc3QgLm1hdC1saXN0LWl0ZW0ge1xuICAgICY6aG92ZXIsICY6Zm9jdXMge1xuICAgICAgYmFja2dyb3VuZDogbWF0LWNvbG9yKCRiYWNrZ3JvdW5kLCAnaG92ZXInKTtcbiAgICB9XG4gIH1cblxuICAubWF0LWxpc3Qtc2luZ2xlLXNlbGVjdGVkLW9wdGlvbiB7XG4gICAgJiwgJjpob3ZlciwgJjpmb2N1cyB7XG4gICAgICBiYWNrZ3JvdW5kOiBtYXQtY29sb3IoJGJhY2tncm91bmQsIGhvdmVyLCAwLjEyKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIG1hdC1saXN0LXR5cG9ncmFwaHkoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiBtYXQtZ2V0LXR5cG9ncmFwaHktY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAkZm9udC1mYW1pbHk6IG1hdC1mb250LWZhbWlseSgkY29uZmlnKTtcblxuICAubWF0LWxpc3QtaXRlbSB7XG4gICAgZm9udC1mYW1pbHk6ICRmb250LWZhbWlseTtcbiAgfVxuXG4gIC5tYXQtbGlzdC1vcHRpb24ge1xuICAgIGZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHk7XG4gIH1cblxuICAvLyBEZWZhdWx0IGxpc3RcbiAgLm1hdC1saXN0LWJhc2Uge1xuICAgIC5tYXQtbGlzdC1pdGVtIHtcbiAgICAgIGZvbnQtc2l6ZTogbWF0LWZvbnQtc2l6ZSgkY29uZmlnLCBzdWJoZWFkaW5nLTIpO1xuICAgICAgQGluY2x1ZGUgbWF0LWxpbmUtYmFzZShtYXQtZm9udC1zaXplKCRjb25maWcsIGJvZHktMSkpO1xuICAgIH1cblxuICAgIC5tYXQtbGlzdC1vcHRpb24ge1xuICAgICAgZm9udC1zaXplOiBtYXQtZm9udC1zaXplKCRjb25maWcsIHN1YmhlYWRpbmctMik7XG4gICAgICBAaW5jbHVkZSBtYXQtbGluZS1iYXNlKG1hdC1mb250LXNpemUoJGNvbmZpZywgYm9keS0xKSk7XG4gICAgfVxuXG4gICAgLm1hdC1zdWJoZWFkZXIge1xuICAgICAgZm9udC1mYW1pbHk6IG1hdC1mb250LWZhbWlseSgkY29uZmlnLCBib2R5LTIpO1xuICAgICAgZm9udC1zaXplOiBtYXQtZm9udC1zaXplKCRjb25maWcsIGJvZHktMik7XG4gICAgICBmb250LXdlaWdodDogbWF0LWZvbnQtd2VpZ2h0KCRjb25maWcsIGJvZHktMik7XG4gICAgfVxuICB9XG5cbiAgLy8gRGVuc2UgbGlzdFxuICAubWF0LWxpc3QtYmFzZVtkZW5zZV0ge1xuICAgIC5tYXQtbGlzdC1pdGVtIHtcbiAgICAgIGZvbnQtc2l6ZTogbWF0LWZvbnQtc2l6ZSgkY29uZmlnLCBjYXB0aW9uKTtcbiAgICAgIEBpbmNsdWRlIG1hdC1saW5lLWJhc2UobWF0LWZvbnQtc2l6ZSgkY29uZmlnLCBjYXB0aW9uKSk7XG4gICAgfVxuXG4gICAgLm1hdC1saXN0LW9wdGlvbiB7XG4gICAgICBmb250LXNpemU6IG1hdC1mb250LXNpemUoJGNvbmZpZywgY2FwdGlvbik7XG4gICAgICBAaW5jbHVkZSBtYXQtbGluZS1iYXNlKG1hdC1mb250LXNpemUoJGNvbmZpZywgY2FwdGlvbikpO1xuICAgIH1cblxuICAgIC5tYXQtc3ViaGVhZGVyIHtcbiAgICAgIGZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHk7XG4gICAgICBmb250LXNpemU6IG1hdC1mb250LXNpemUoJGNvbmZpZywgY2FwdGlvbik7XG4gICAgICBmb250LXdlaWdodDogbWF0LWZvbnQtd2VpZ2h0KCRjb25maWcsIGJvZHktMik7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBfbWF0LWxpc3QtZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gbWF0LWxpc3QtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZykge1xuICAkdGhlbWU6IG1hdC1wcml2YXRlLWxlZ2FjeS1nZXQtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZyk7XG4gIEBpbmNsdWRlIG1hdC1wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LWxpc3QnKSB7XG4gICAgJGNvbG9yOiBtYXQtZ2V0LWNvbG9yLWNvbmZpZygkdGhlbWUpO1xuICAgICRkZW5zaXR5OiBtYXQtZ2V0LWRlbnNpdHktY29uZmlnKCR0aGVtZSk7XG4gICAgJHR5cG9ncmFwaHk6IG1hdC1nZXQtdHlwb2dyYXBoeS1jb25maWcoJHRoZW1lKTtcblxuICAgIEBpZiAkY29sb3IgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBtYXQtbGlzdC1jb2xvcigkY29sb3IpO1xuICAgIH1cbiAgICBAaWYgJGRlbnNpdHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBfbWF0LWxpc3QtZGVuc2l0eSgkZGVuc2l0eSk7XG4gICAgfVxuICAgIEBpZiAkdHlwb2dyYXBoeSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIG1hdC1saXN0LXR5cG9ncmFwaHkoJHR5cG9ncmFwaHkpO1xuICAgIH1cbiAgfVxufVxuXG5cblxuXG5cblxuXG5AbWl4aW4gbWF0LW1lbnUtY29sb3IoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiBtYXQtZ2V0LWNvbG9yLWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgJGJhY2tncm91bmQ6IG1hcC1nZXQoJGNvbmZpZywgYmFja2dyb3VuZCk7XG4gICRmb3JlZ3JvdW5kOiBtYXAtZ2V0KCRjb25maWcsIGZvcmVncm91bmQpO1xuXG4gIC5tYXQtbWVudS1wYW5lbCB7XG4gICAgQGluY2x1ZGUgbWF0LXByaXZhdGUtdGhlbWUtb3ZlcnJpZGFibGUtZWxldmF0aW9uKDQsICRjb25maWcpO1xuICAgIGJhY2tncm91bmQ6IG1hdC1jb2xvcigkYmFja2dyb3VuZCwgJ2NhcmQnKTtcbiAgfVxuXG4gIC5tYXQtbWVudS1pdGVtIHtcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICBjb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCAndGV4dCcpO1xuXG4gICAgJltkaXNhYmxlZF0ge1xuICAgICAgJixcbiAgICAgICY6OmFmdGVyLFxuICAgICAgLm1hdC1pY29uLW5vLWNvbG9yIHtcbiAgICAgICAgY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgJ2Rpc2FibGVkJyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLm1hdC1tZW51LWl0ZW0gLm1hdC1pY29uLW5vLWNvbG9yLFxuICAubWF0LW1lbnUtaXRlbS1zdWJtZW51LXRyaWdnZXI6OmFmdGVyIHtcbiAgICBjb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCAnaWNvbicpO1xuICB9XG5cbiAgLm1hdC1tZW51LWl0ZW06aG92ZXIsXG4gIC5tYXQtbWVudS1pdGVtLmNkay1wcm9ncmFtLWZvY3VzZWQsXG4gIC5tYXQtbWVudS1pdGVtLmNkay1rZXlib2FyZC1mb2N1c2VkLFxuICAubWF0LW1lbnUtaXRlbS1oaWdobGlnaHRlZCB7XG4gICAgJjpub3QoW2Rpc2FibGVkXSkge1xuICAgICAgYmFja2dyb3VuZDogbWF0LWNvbG9yKCRiYWNrZ3JvdW5kLCAnaG92ZXInKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIG1hdC1tZW51LXR5cG9ncmFwaHkoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiBtYXQtZ2V0LXR5cG9ncmFwaHktY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAubWF0LW1lbnUtaXRlbSB7XG4gICAgZm9udDoge1xuICAgICAgZmFtaWx5OiBtYXQtZm9udC1mYW1pbHkoJGNvbmZpZywgYm9keS0xKTtcbiAgICAgIHNpemU6IG1hdC1mb250LXNpemUoJGNvbmZpZywgYm9keS0xKTtcbiAgICAgIHdlaWdodDogbWF0LWZvbnQtd2VpZ2h0KCRjb25maWcsIGJvZHktMSk7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBfbWF0LW1lbnUtZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gbWF0LW1lbnUtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZykge1xuICAkdGhlbWU6IG1hdC1wcml2YXRlLWxlZ2FjeS1nZXQtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZyk7XG4gIEBpbmNsdWRlIG1hdC1wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LW1lbnUnKSB7XG4gICAgJGNvbG9yOiBtYXQtZ2V0LWNvbG9yLWNvbmZpZygkdGhlbWUpO1xuICAgICRkZW5zaXR5OiBtYXQtZ2V0LWRlbnNpdHktY29uZmlnKCR0aGVtZSk7XG4gICAgJHR5cG9ncmFwaHk6IG1hdC1nZXQtdHlwb2dyYXBoeS1jb25maWcoJHRoZW1lKTtcblxuICAgIEBpZiAkY29sb3IgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBtYXQtbWVudS1jb2xvcigkY29sb3IpO1xuICAgIH1cbiAgICBAaWYgJGRlbnNpdHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBfbWF0LW1lbnUtZGVuc2l0eSgkZGVuc2l0eSk7XG4gICAgfVxuICAgIEBpZiAkdHlwb2dyYXBoeSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIG1hdC1tZW51LXR5cG9ncmFwaHkoJHR5cG9ncmFwaHkpO1xuICAgIH1cbiAgfVxufVxuXG5cblxuXG5cblxuJG1hdC1wYWdpbmF0b3ItaGVpZ2h0OiA1NnB4ICFkZWZhdWx0O1xuLy8gTWluaW11bSBoZWlnaHQgZm9yIHBhZ2luYXRvcidzIGluIHRoZSBoaWdoZXN0IGRlbnNpdHkgaXMgZGV0ZXJtaW5lZCBiYXNlZCBvbiBob3dcbi8vIG11Y2ggdGhlIHBhZ2luYXRvciBjYW4gc2hyaW5rIHVudGlsIHRoZSBjb250ZW50IGV4Y2VlZHMgKGkuZS4gbmF2aWdhdGlvbiBidXR0b25zKS5cbiRtYXQtcGFnaW5hdG9yLW1pbmltdW0taGVpZ2h0OiA0MHB4ICFkZWZhdWx0O1xuJG1hdC1wYWdpbmF0b3ItbWF4aW11bS1oZWlnaHQ6ICRtYXQtcGFnaW5hdG9yLWhlaWdodCAhZGVmYXVsdDtcblxuJG1hdC1wYWdpbmF0b3ItZGVuc2l0eS1jb25maWc6IChcbiAgaGVpZ2h0OiAoXG4gICAgZGVmYXVsdDogJG1hdC1wYWdpbmF0b3ItaGVpZ2h0LFxuICAgIG1heGltdW06ICRtYXQtcGFnaW5hdG9yLW1heGltdW0taGVpZ2h0LFxuICAgIG1pbmltdW06ICRtYXQtcGFnaW5hdG9yLW1pbmltdW0taGVpZ2h0LFxuICApXG4pICFkZWZhdWx0O1xuXG5cbkBtaXhpbiBtYXQtcGFnaW5hdG9yLWNvbG9yKCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogbWF0LWdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRmb3JlZ3JvdW5kOiBtYXAtZ2V0KCRjb25maWcsIGZvcmVncm91bmQpO1xuICAkYmFja2dyb3VuZDogbWFwLWdldCgkY29uZmlnLCBiYWNrZ3JvdW5kKTtcblxuICAubWF0LXBhZ2luYXRvciB7XG4gICAgYmFja2dyb3VuZDogbWF0LWNvbG9yKCRiYWNrZ3JvdW5kLCAnY2FyZCcpO1xuICB9XG5cbiAgLm1hdC1wYWdpbmF0b3IsXG4gIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZSAubWF0LXNlbGVjdC10cmlnZ2VyIHtcbiAgICBjb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBzZWNvbmRhcnktdGV4dCk7XG4gIH1cblxuICAubWF0LXBhZ2luYXRvci1kZWNyZW1lbnQsXG4gIC5tYXQtcGFnaW5hdG9yLWluY3JlbWVudCB7XG4gICAgYm9yZGVyLXRvcDogMnB4IHNvbGlkIG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgJ2ljb24nKTtcbiAgICBib3JkZXItcmlnaHQ6IDJweCBzb2xpZCBtYXQtY29sb3IoJGZvcmVncm91bmQsICdpY29uJyk7XG4gIH1cblxuICAubWF0LXBhZ2luYXRvci1maXJzdCxcbiAgLm1hdC1wYWdpbmF0b3ItbGFzdCB7XG4gICAgYm9yZGVyLXRvcDogMnB4IHNvbGlkIG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgJ2ljb24nKTtcbiAgfVxuXG4gIC5tYXQtaWNvbi1idXR0b25bZGlzYWJsZWRdIHtcbiAgICAubWF0LXBhZ2luYXRvci1kZWNyZW1lbnQsXG4gICAgLm1hdC1wYWdpbmF0b3ItaW5jcmVtZW50LFxuICAgIC5tYXQtcGFnaW5hdG9yLWZpcnN0LFxuICAgIC5tYXQtcGFnaW5hdG9yLWxhc3Qge1xuICAgICAgYm9yZGVyLWNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsICdkaXNhYmxlZCcpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gbWF0LXBhZ2luYXRvci10eXBvZ3JhcGh5KCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogbWF0LWdldC10eXBvZ3JhcGh5LWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgLm1hdC1wYWdpbmF0b3IsXG4gIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZSAubWF0LXNlbGVjdC10cmlnZ2VyIHtcbiAgICBmb250OiB7XG4gICAgICBmYW1pbHk6IG1hdC1mb250LWZhbWlseSgkY29uZmlnLCBjYXB0aW9uKTtcbiAgICAgIHNpemU6IG1hdC1mb250LXNpemUoJGNvbmZpZywgY2FwdGlvbik7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBtYXQtcGFnaW5hdG9yLWRlbnNpdHkoJGNvbmZpZy1vci10aGVtZSkge1xuICAkZGVuc2l0eS1zY2FsZTogbWF0LWdldC1kZW5zaXR5LWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgJGhlaWdodDogbWF0LXByaXZhdGUtZGVuc2l0eS1wcm9wLXZhbHVlKCRtYXQtcGFnaW5hdG9yLWRlbnNpdHktY29uZmlnLCAkZGVuc2l0eS1zY2FsZSwgaGVpZ2h0KTtcblxuICBAaW5jbHVkZSBtYXQtcHJpdmF0ZS1kZW5zaXR5LWxlZ2FjeS1jb21wYXRpYmlsaXR5KCkge1xuICAgIC5tYXQtcGFnaW5hdG9yLWNvbnRhaW5lciB7XG4gICAgICBtaW4taGVpZ2h0OiAkaGVpZ2h0O1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gbWF0LXBhZ2luYXRvci10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKSB7XG4gICR0aGVtZTogbWF0LXByaXZhdGUtbGVnYWN5LWdldC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgQGluY2x1ZGUgbWF0LXByaXZhdGUtY2hlY2stZHVwbGljYXRlLXRoZW1lLXN0eWxlcygkdGhlbWUsICdtYXQtcGFnaW5hdG9yJykge1xuICAgICRjb2xvcjogbWF0LWdldC1jb2xvci1jb25maWcoJHRoZW1lKTtcbiAgICAkZGVuc2l0eTogbWF0LWdldC1kZW5zaXR5LWNvbmZpZygkdGhlbWUpO1xuICAgICR0eXBvZ3JhcGh5OiBtYXQtZ2V0LXR5cG9ncmFwaHktY29uZmlnKCR0aGVtZSk7XG5cbiAgICBAaWYgJGNvbG9yICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgbWF0LXBhZ2luYXRvci1jb2xvcigkY29sb3IpO1xuICAgIH1cbiAgICBAaWYgJGRlbnNpdHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBtYXQtcGFnaW5hdG9yLWRlbnNpdHkoJGRlbnNpdHkpO1xuICAgIH1cbiAgICBAaWYgJHR5cG9ncmFwaHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBtYXQtcGFnaW5hdG9yLXR5cG9ncmFwaHkoJHR5cG9ncmFwaHkpO1xuICAgIH1cbiAgfVxufVxuXG5cblxuXG5AbWl4aW4gbWF0LXByb2dyZXNzLWJhci1jb2xvcigkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IG1hdC1nZXQtY29sb3ItY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAkcHJpbWFyeTogbWFwLWdldCgkY29uZmlnLCBwcmltYXJ5KTtcbiAgJGFjY2VudDogbWFwLWdldCgkY29uZmlnLCBhY2NlbnQpO1xuICAkd2FybjogbWFwLWdldCgkY29uZmlnLCB3YXJuKTtcblxuICAubWF0LXByb2dyZXNzLWJhci1iYWNrZ3JvdW5kIHtcbiAgICBmaWxsOiBtYXQtY29sb3IoJHByaW1hcnksIGxpZ2h0ZXIpO1xuICB9XG5cbiAgLm1hdC1wcm9ncmVzcy1iYXItYnVmZmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBtYXQtY29sb3IoJHByaW1hcnksIGxpZ2h0ZXIpO1xuICB9XG5cbiAgLm1hdC1wcm9ncmVzcy1iYXItZmlsbDo6YWZ0ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6IG1hdC1jb2xvcigkcHJpbWFyeSk7XG4gIH1cblxuICAubWF0LXByb2dyZXNzLWJhci5tYXQtYWNjZW50IHtcbiAgICAubWF0LXByb2dyZXNzLWJhci1iYWNrZ3JvdW5kIHtcbiAgICAgIGZpbGw6IG1hdC1jb2xvcigkYWNjZW50LCBsaWdodGVyKTtcbiAgICB9XG5cbiAgICAubWF0LXByb2dyZXNzLWJhci1idWZmZXIge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogbWF0LWNvbG9yKCRhY2NlbnQsIGxpZ2h0ZXIpO1xuICAgIH1cblxuICAgIC5tYXQtcHJvZ3Jlc3MtYmFyLWZpbGw6OmFmdGVyIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IG1hdC1jb2xvcigkYWNjZW50KTtcbiAgICB9XG4gIH1cblxuICAubWF0LXByb2dyZXNzLWJhci5tYXQtd2FybiB7XG4gICAgLm1hdC1wcm9ncmVzcy1iYXItYmFja2dyb3VuZCB7XG4gICAgICBmaWxsOiBtYXQtY29sb3IoJHdhcm4sIGxpZ2h0ZXIpO1xuICAgIH1cblxuICAgIC5tYXQtcHJvZ3Jlc3MtYmFyLWJ1ZmZlciB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBtYXQtY29sb3IoJHdhcm4sIGxpZ2h0ZXIpO1xuICAgIH1cblxuICAgIC5tYXQtcHJvZ3Jlc3MtYmFyLWZpbGw6OmFmdGVyIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IG1hdC1jb2xvcigkd2Fybik7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBtYXQtcHJvZ3Jlc3MtYmFyLXR5cG9ncmFwaHkoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIF9tYXQtcHJvZ3Jlc3MtYmFyLWRlbnNpdHkoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIG1hdC1wcm9ncmVzcy1iYXItdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZykge1xuICAkdGhlbWU6IG1hdC1wcml2YXRlLWxlZ2FjeS1nZXQtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZyk7XG4gIEBpbmNsdWRlIG1hdC1wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LXByb2dyZXNzLWJhcicpIHtcbiAgICAkY29sb3I6IG1hdC1nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgJGRlbnNpdHk6IG1hdC1nZXQtZGVuc2l0eS1jb25maWcoJHRoZW1lKTtcbiAgICAkdHlwb2dyYXBoeTogbWF0LWdldC10eXBvZ3JhcGh5LWNvbmZpZygkdGhlbWUpO1xuXG4gICAgQGlmICRjb2xvciAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIG1hdC1wcm9ncmVzcy1iYXItY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gICAgQGlmICRkZW5zaXR5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgX21hdC1wcm9ncmVzcy1iYXItZGVuc2l0eSgkZGVuc2l0eSk7XG4gICAgfVxuICAgIEBpZiAkdHlwb2dyYXBoeSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIG1hdC1wcm9ncmVzcy1iYXItdHlwb2dyYXBoeSgkdHlwb2dyYXBoeSk7XG4gICAgfVxuICB9XG59XG5cblxuXG5cblxuQG1peGluIG1hdC1wcm9ncmVzcy1zcGlubmVyLWNvbG9yKCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogbWF0LWdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRwcmltYXJ5OiBtYXAtZ2V0KCRjb25maWcsIHByaW1hcnkpO1xuICAkYWNjZW50OiBtYXAtZ2V0KCRjb25maWcsIGFjY2VudCk7XG4gICR3YXJuOiBtYXAtZ2V0KCRjb25maWcsIHdhcm4pO1xuXG4gIC5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lciwgLm1hdC1zcGlubmVyIHtcbiAgICBjaXJjbGUge1xuICAgICAgc3Ryb2tlOiBtYXQtY29sb3IoJHByaW1hcnkpO1xuICAgIH1cblxuICAgICYubWF0LWFjY2VudCBjaXJjbGUge1xuICAgICAgc3Ryb2tlOiBtYXQtY29sb3IoJGFjY2VudCk7XG4gICAgfVxuXG4gICAgJi5tYXQtd2FybiBjaXJjbGUge1xuICAgICAgc3Ryb2tlOiBtYXQtY29sb3IoJHdhcm4pO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gbWF0LXByb2dyZXNzLXNwaW5uZXItdHlwb2dyYXBoeSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gX21hdC1wcm9ncmVzcy1zcGlubmVyLWRlbnNpdHkoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIG1hdC1wcm9ncmVzcy1zcGlubmVyLXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiBtYXQtcHJpdmF0ZS1sZWdhY3ktZ2V0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICBAaW5jbHVkZSBtYXQtcHJpdmF0ZS1jaGVjay1kdXBsaWNhdGUtdGhlbWUtc3R5bGVzKCR0aGVtZSwgJ21hdC1wcm9ncmVzcy1zcGlubmVyJykge1xuICAgICRjb2xvcjogbWF0LWdldC1jb2xvci1jb25maWcoJHRoZW1lKTtcbiAgICAkZGVuc2l0eTogbWF0LWdldC1kZW5zaXR5LWNvbmZpZygkdGhlbWUpO1xuICAgICR0eXBvZ3JhcGh5OiBtYXQtZ2V0LXR5cG9ncmFwaHktY29uZmlnKCR0aGVtZSk7XG5cbiAgICBAaWYgJGNvbG9yICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgbWF0LXByb2dyZXNzLXNwaW5uZXItY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gICAgQGlmICRkZW5zaXR5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgX21hdC1wcm9ncmVzcy1zcGlubmVyLWRlbnNpdHkoJGRlbnNpdHkpO1xuICAgIH1cbiAgICBAaWYgJHR5cG9ncmFwaHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBtYXQtcHJvZ3Jlc3Mtc3Bpbm5lci10eXBvZ3JhcGh5KCR0eXBvZ3JhcGh5KTtcbiAgICB9XG4gIH1cbn1cblxuXG5cblxuXG5AbWl4aW4gX21hdC1yYWRpby1jb2xvcigkcGFsZXR0ZSkge1xuICAmLm1hdC1yYWRpby1jaGVja2VkIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xlIHtcbiAgICBib3JkZXItY29sb3I6IG1hdC1jb2xvcigkcGFsZXR0ZSk7XG4gIH1cblxuICAubWF0LXJhZGlvLWlubmVyLWNpcmNsZSxcbiAgLm1hdC1yYWRpby1yaXBwbGUgLm1hdC1yaXBwbGUtZWxlbWVudDpub3QoLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZSksXG4gICYubWF0LXJhZGlvLWNoZWNrZWQgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZSxcbiAgJjphY3RpdmUgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogbWF0LWNvbG9yKCRwYWxldHRlKTtcbiAgfVxufVxuXG5AbWl4aW4gbWF0LXJhZGlvLWNvbG9yKCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogbWF0LWdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRwcmltYXJ5OiBtYXAtZ2V0KCRjb25maWcsIHByaW1hcnkpO1xuICAkYWNjZW50OiBtYXAtZ2V0KCRjb25maWcsIGFjY2VudCk7XG4gICR3YXJuOiBtYXAtZ2V0KCRjb25maWcsIHdhcm4pO1xuICAkYmFja2dyb3VuZDogbWFwLWdldCgkY29uZmlnLCBiYWNrZ3JvdW5kKTtcbiAgJGZvcmVncm91bmQ6IG1hcC1nZXQoJGNvbmZpZywgZm9yZWdyb3VuZCk7XG5cbiAgLm1hdC1yYWRpby1vdXRlci1jaXJjbGUge1xuICAgIGJvcmRlci1jb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBzZWNvbmRhcnktdGV4dCk7XG4gIH1cblxuICAubWF0LXJhZGlvLWJ1dHRvbiB7XG4gICAgJi5tYXQtcHJpbWFyeSB7XG4gICAgICBAaW5jbHVkZSBfbWF0LXJhZGlvLWNvbG9yKCRwcmltYXJ5KTtcbiAgICB9XG5cbiAgICAmLm1hdC1hY2NlbnQge1xuICAgICAgQGluY2x1ZGUgX21hdC1yYWRpby1jb2xvcigkYWNjZW50KTtcbiAgICB9XG5cbiAgICAmLm1hdC13YXJuIHtcbiAgICAgIEBpbmNsdWRlIF9tYXQtcmFkaW8tY29sb3IoJHdhcm4pO1xuICAgIH1cblxuICAgIC8vIFRoaXMgbmVlZHMgZXh0cmEgc3BlY2lmaWNpdHksIGJlY2F1c2UgdGhlIGNsYXNzZXMgYWJvdmUgYXJlIGNvbWJpbmVkXG4gICAgLy8gKGUuZy4gYC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1hY2NlbnRgKSB3aGljaCBpbmNyZWFzZXMgdGhlaXIgc3BlY2lmaWNpdHkgYSBsb3QuXG4gICAgLy8gVE9ETzogY29uc2lkZXIgbWFraW5nIHRoZSBzZWxlY3RvcnMgaW50byBkZXNjZW5kYW50cyAoYC5tYXQtcHJpbWFyeSAubWF0LXJhZGlvLWJ1dHRvbmApLlxuICAgICYubWF0LXJhZGlvLWRpc2FibGVkIHtcbiAgICAgICYubWF0LXJhZGlvLWNoZWNrZWQgLm1hdC1yYWRpby1vdXRlci1jaXJjbGUsXG4gICAgICAubWF0LXJhZGlvLW91dGVyLWNpcmNsZSB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBkaXNhYmxlZCk7XG4gICAgICB9XG5cbiAgICAgIC5tYXQtcmFkaW8tcmlwcGxlIC5tYXQtcmlwcGxlLWVsZW1lbnQsXG4gICAgICAubWF0LXJhZGlvLWlubmVyLWNpcmNsZSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgZGlzYWJsZWQpO1xuICAgICAgfVxuXG4gICAgICAubWF0LXJhZGlvLWxhYmVsLWNvbnRlbnQge1xuICAgICAgICBjb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBkaXNhYmxlZCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gU3dpdGNoIHRoaXMgdG8gYSBzb2xpZCBjb2xvciBzaW5jZSB3ZSdyZSB1c2luZyBgb3BhY2l0eWBcbiAgICAvLyB0byBjb250cm9sIGhvdyBvcGFxdWUgdGhlIHJpcHBsZSBzaG91bGQgYmUuXG4gICAgLm1hdC1yaXBwbGUtZWxlbWVudCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBtYXAtZ2V0KCRmb3JlZ3JvdW5kLCBiYXNlKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIG1hdC1yYWRpby10eXBvZ3JhcGh5KCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogbWF0LWdldC10eXBvZ3JhcGh5LWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgLm1hdC1yYWRpby1idXR0b24ge1xuICAgIGZvbnQtZmFtaWx5OiBtYXQtZm9udC1mYW1pbHkoJGNvbmZpZyk7XG4gIH1cbn1cblxuQG1peGluIF9tYXQtcmFkaW8tZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gbWF0LXJhZGlvLXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiBtYXQtcHJpdmF0ZS1sZWdhY3ktZ2V0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICBAaW5jbHVkZSBtYXQtcHJpdmF0ZS1jaGVjay1kdXBsaWNhdGUtdGhlbWUtc3R5bGVzKCR0aGVtZSwgJ21hdC1yYWRpbycpIHtcbiAgICAkY29sb3I6IG1hdC1nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgJGRlbnNpdHk6IG1hdC1nZXQtZGVuc2l0eS1jb25maWcoJHRoZW1lKTtcbiAgICAkdHlwb2dyYXBoeTogbWF0LWdldC10eXBvZ3JhcGh5LWNvbmZpZygkdGhlbWUpO1xuXG4gICAgQGlmICRjb2xvciAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIG1hdC1yYWRpby1jb2xvcigkY29sb3IpO1xuICAgIH1cbiAgICBAaWYgJGRlbnNpdHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBfbWF0LXJhZGlvLWRlbnNpdHkoJGRlbnNpdHkpO1xuICAgIH1cbiAgICBAaWYgJHR5cG9ncmFwaHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBtYXQtcmFkaW8tdHlwb2dyYXBoeSgkdHlwb2dyYXBoeSk7XG4gICAgfVxuICB9XG59XG5cblxuXG5cblxuXG5cblxuQG1peGluIG1hdC1zZWxlY3QtY29sb3IoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiBtYXQtZ2V0LWNvbG9yLWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgJGZvcmVncm91bmQ6IG1hcC1nZXQoJGNvbmZpZywgZm9yZWdyb3VuZCk7XG4gICRiYWNrZ3JvdW5kOiBtYXAtZ2V0KCRjb25maWcsIGJhY2tncm91bmQpO1xuICAkcHJpbWFyeTogbWFwLWdldCgkY29uZmlnLCBwcmltYXJ5KTtcbiAgJGFjY2VudDogbWFwLWdldCgkY29uZmlnLCBhY2NlbnQpO1xuICAkd2FybjogbWFwLWdldCgkY29uZmlnLCB3YXJuKTtcblxuICAubWF0LXNlbGVjdC12YWx1ZSB7XG4gICAgY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgdGV4dCk7XG4gIH1cblxuICAubWF0LXNlbGVjdC1wbGFjZWhvbGRlciB7XG4gICAgY29sb3I6IG1hdC1wcml2YXRlLWNvbnRyb2wtcGxhY2Vob2xkZXItY29sb3IoJGNvbmZpZyk7XG4gIH1cblxuICAubWF0LXNlbGVjdC1kaXNhYmxlZCAubWF0LXNlbGVjdC12YWx1ZSB7XG4gICAgY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgZGlzYWJsZWQtdGV4dCk7XG4gIH1cblxuICAubWF0LXNlbGVjdC1hcnJvdyB7XG4gICAgY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgc2Vjb25kYXJ5LXRleHQpO1xuICB9XG5cbiAgLm1hdC1zZWxlY3QtcGFuZWwge1xuICAgIGJhY2tncm91bmQ6IG1hdC1jb2xvcigkYmFja2dyb3VuZCwgY2FyZCk7XG4gICAgQGluY2x1ZGUgbWF0LXByaXZhdGUtdGhlbWUtb3ZlcnJpZGFibGUtZWxldmF0aW9uKDQsICRjb25maWcpO1xuXG4gICAgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkOm5vdCgubWF0LW9wdGlvbi1tdWx0aXBsZSkge1xuICAgICAgYmFja2dyb3VuZDogbWF0LWNvbG9yKCRiYWNrZ3JvdW5kLCBob3ZlciwgMC4xMik7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1mb3JtLWZpZWxkIHtcbiAgICAmLm1hdC1mb2N1c2VkIHtcbiAgICAgICYubWF0LXByaW1hcnkgLm1hdC1zZWxlY3QtYXJyb3cge1xuICAgICAgICBjb2xvcjogbWF0LWNvbG9yKCRwcmltYXJ5LCB0ZXh0KTtcbiAgICAgIH1cblxuICAgICAgJi5tYXQtYWNjZW50IC5tYXQtc2VsZWN0LWFycm93IHtcbiAgICAgICAgY29sb3I6IG1hdC1jb2xvcigkYWNjZW50LCB0ZXh0KTtcbiAgICAgIH1cblxuICAgICAgJi5tYXQtd2FybiAubWF0LXNlbGVjdC1hcnJvdyB7XG4gICAgICAgIGNvbG9yOiBtYXQtY29sb3IoJHdhcm4sIHRleHQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC5tYXQtc2VsZWN0Lm1hdC1zZWxlY3QtaW52YWxpZCAubWF0LXNlbGVjdC1hcnJvdyB7XG4gICAgICBjb2xvcjogbWF0LWNvbG9yKCR3YXJuLCB0ZXh0KTtcbiAgICB9XG5cbiAgICAubWF0LXNlbGVjdC5tYXQtc2VsZWN0LWRpc2FibGVkIC5tYXQtc2VsZWN0LWFycm93IHtcbiAgICAgIGNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIGRpc2FibGVkLXRleHQpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gbWF0LXNlbGVjdC10eXBvZ3JhcGh5KCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogbWF0LWdldC10eXBvZ3JhcGh5LWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgLy8gVGhlIHVuaXQtbGVzcyBsaW5lLWhlaWdodCBmcm9tIHRoZSBmb250IGNvbmZpZy5cbiAgJGxpbmUtaGVpZ2h0OiBtYXQtbGluZS1oZWlnaHQoJGNvbmZpZywgaW5wdXQpO1xuXG4gIC5tYXQtc2VsZWN0IHtcbiAgICBmb250LWZhbWlseTogbWF0LWZvbnQtZmFtaWx5KCRjb25maWcpO1xuICB9XG5cbiAgLm1hdC1zZWxlY3QtdHJpZ2dlciB7XG4gICAgaGVpZ2h0OiAkbGluZS1oZWlnaHQgKiAxZW07XG4gIH1cbn1cblxuQG1peGluIF9tYXQtc2VsZWN0LWRlbnNpdHkoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIG1hdC1zZWxlY3QtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZykge1xuICAkdGhlbWU6IG1hdC1wcml2YXRlLWxlZ2FjeS1nZXQtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZyk7XG4gIEBpbmNsdWRlIG1hdC1wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LXNlbGVjdCcpIHtcbiAgICAkY29sb3I6IG1hdC1nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgJGRlbnNpdHk6IG1hdC1nZXQtZGVuc2l0eS1jb25maWcoJHRoZW1lKTtcbiAgICAkdHlwb2dyYXBoeTogbWF0LWdldC10eXBvZ3JhcGh5LWNvbmZpZygkdGhlbWUpO1xuXG4gICAgQGlmICRjb2xvciAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIG1hdC1zZWxlY3QtY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gICAgQGlmICRkZW5zaXR5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgX21hdC1zZWxlY3QtZGVuc2l0eSgkZGVuc2l0eSk7XG4gICAgfVxuICAgIEBpZiAkdHlwb2dyYXBoeSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIG1hdC1zZWxlY3QtdHlwb2dyYXBoeSgkdHlwb2dyYXBoeSk7XG4gICAgfVxuICB9XG59XG5cblxuXG5cblxuQG1peGluIG1hdC1zaWRlbmF2LWNvbG9yKCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogbWF0LWdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRwcmltYXJ5OiBtYXAtZ2V0KCRjb25maWcsIHByaW1hcnkpO1xuICAkYWNjZW50OiBtYXAtZ2V0KCRjb25maWcsIGFjY2VudCk7XG4gICR3YXJuOiBtYXAtZ2V0KCRjb25maWcsIHdhcm4pO1xuICAkYmFja2dyb3VuZDogbWFwLWdldCgkY29uZmlnLCBiYWNrZ3JvdW5kKTtcbiAgJGZvcmVncm91bmQ6IG1hcC1nZXQoJGNvbmZpZywgZm9yZWdyb3VuZCk7XG5cbiAgJGRyYXdlci1iYWNrZ3JvdW5kLWNvbG9yOiBtYXQtY29sb3IoJGJhY2tncm91bmQsIGRpYWxvZyk7XG4gICRkcmF3ZXItY29udGFpbmVyLWJhY2tncm91bmQtY29sb3I6ICBtYXQtY29sb3IoJGJhY2tncm91bmQsIGJhY2tncm91bmQpO1xuICAkZHJhd2VyLXB1c2gtYmFja2dyb3VuZC1jb2xvcjogbWF0LWNvbG9yKCRiYWNrZ3JvdW5kLCBkaWFsb2cpO1xuICAkZHJhd2VyLXNpZGUtYm9yZGVyOiBzb2xpZCAxcHggbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBkaXZpZGVyKTtcblxuICAubWF0LWRyYXdlci1jb250YWluZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRkcmF3ZXItY29udGFpbmVyLWJhY2tncm91bmQtY29sb3I7XG4gICAgY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgdGV4dCk7XG4gIH1cblxuICAubWF0LWRyYXdlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGRyYXdlci1iYWNrZ3JvdW5kLWNvbG9yO1xuICAgIGNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIHRleHQpO1xuXG4gICAgJi5tYXQtZHJhd2VyLXB1c2gge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGRyYXdlci1wdXNoLWJhY2tncm91bmQtY29sb3I7XG4gICAgfVxuXG4gICAgJjpub3QoLm1hdC1kcmF3ZXItc2lkZSkge1xuICAgICAgLy8gVGhlIGVsZXZhdGlvbiBvZiB6LTE2IGlzIG5vdGVkIGluIHRoZSBkZXNpZ24gc3BlY2lmaWNhdGlvbnMuXG4gICAgICAvLyBTZWUgaHR0cHM6Ly9tYXRlcmlhbC5pby9kZXNpZ24vY29tcG9uZW50cy9uYXZpZ2F0aW9uLWRyYXdlci5odG1sXG4gICAgICBAaW5jbHVkZSBtYXQtcHJpdmF0ZS10aGVtZS1lbGV2YXRpb24oMTYsICRjb25maWcpO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtZHJhd2VyLXNpZGUge1xuICAgIGJvcmRlci1yaWdodDogJGRyYXdlci1zaWRlLWJvcmRlcjtcblxuICAgICYubWF0LWRyYXdlci1lbmQge1xuICAgICAgYm9yZGVyLWxlZnQ6ICRkcmF3ZXItc2lkZS1ib3JkZXI7XG4gICAgICBib3JkZXItcmlnaHQ6IG5vbmU7XG4gICAgfVxuICB9XG5cbiAgW2Rpcj0ncnRsJ10gLm1hdC1kcmF3ZXItc2lkZSB7XG4gICAgYm9yZGVyLWxlZnQ6ICRkcmF3ZXItc2lkZS1ib3JkZXI7XG4gICAgYm9yZGVyLXJpZ2h0OiBub25lO1xuXG4gICAgJi5tYXQtZHJhd2VyLWVuZCB7XG4gICAgICBib3JkZXItbGVmdDogbm9uZTtcbiAgICAgIGJvcmRlci1yaWdodDogJGRyYXdlci1zaWRlLWJvcmRlcjtcbiAgICB9XG4gIH1cblxuICAubWF0LWRyYXdlci1iYWNrZHJvcC5tYXQtZHJhd2VyLXNob3duIHtcbiAgICAkb3BhY2l0eTogMC42O1xuICAgICRiYWNrZHJvcC1jb2xvcjogbWF0LWNvbG9yKCRiYWNrZ3JvdW5kLCBjYXJkLCAkb3BhY2l0eSk7XG5cbiAgICBAaWYgKHR5cGUtb2YoJGJhY2tkcm9wLWNvbG9yKSA9PSBjb2xvcikge1xuICAgICAgLy8gV2UgdXNlIGludmVydCgpIGhlcmUgdG8gaGF2ZSB0aGUgZGFya2VuIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIGV4cGVjdGVkIHRvIGJlIHVzZWQuIElmIHRoZVxuICAgICAgLy8gYmFja2dyb3VuZCBpcyBsaWdodCwgd2UgdXNlIGEgZGFyayBiYWNrZHJvcC4gSWYgdGhlIGJhY2tncm91bmQgaXMgZGFyayxcbiAgICAgIC8vIHdlIHVzZSBhIGxpZ2h0IGJhY2tkcm9wLlxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogaW52ZXJ0KCRiYWNrZHJvcC1jb2xvcik7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIC8vIElmIHdlIGNvdWxkbid0IHJlc29sdmUgdGhlIGJhY2tkcm9wIGNvbG9yIHRvIGEgY29sb3IgdmFsdWUsIGZhbGwgYmFjayB0byB1c2luZ1xuICAgICAgLy8gYG9wYWNpdHlgIHRvIG1ha2UgaXQgb3BhcXVlIHNpbmNlIGl0cyBlbmQgdmFsdWUgY291bGQgYmUgYSBzb2xpZCBjb2xvci5cbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRiYWNrZHJvcC1jb2xvcjtcbiAgICAgIG9wYWNpdHk6ICRvcGFjaXR5O1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gbWF0LXNpZGVuYXYtdHlwb2dyYXBoeSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gX21hdC1zaWRlbmF2LWRlbnNpdHkoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIG1hdC1zaWRlbmF2LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiBtYXQtcHJpdmF0ZS1sZWdhY3ktZ2V0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICBAaW5jbHVkZSBtYXQtcHJpdmF0ZS1jaGVjay1kdXBsaWNhdGUtdGhlbWUtc3R5bGVzKCR0aGVtZSwgJ21hdC1zaWRlbmF2Jykge1xuICAgICRjb2xvcjogbWF0LWdldC1jb2xvci1jb25maWcoJHRoZW1lKTtcbiAgICAkZGVuc2l0eTogbWF0LWdldC1kZW5zaXR5LWNvbmZpZygkdGhlbWUpO1xuICAgICR0eXBvZ3JhcGh5OiBtYXQtZ2V0LXR5cG9ncmFwaHktY29uZmlnKCR0aGVtZSk7XG5cbiAgICBAaWYgJGNvbG9yICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgbWF0LXNpZGVuYXYtY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gICAgQGlmICRkZW5zaXR5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgX21hdC1zaWRlbmF2LWRlbnNpdHkoJGRlbnNpdHkpO1xuICAgIH1cbiAgICBAaWYgJHR5cG9ncmFwaHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBtYXQtc2lkZW5hdi10eXBvZ3JhcGh5KCR0eXBvZ3JhcGh5KTtcbiAgICB9XG4gIH1cbn1cblxuXG5cblxuXG5cbkBtaXhpbiBfbWF0LXNsaWRlLXRvZ2dsZS1jaGVja2VkKCRwYWxldHRlLCAkdGh1bWItY2hlY2tlZC1odWUpIHtcbiAgJi5tYXQtY2hlY2tlZCB7XG4gICAgLm1hdC1zbGlkZS10b2dnbGUtdGh1bWIge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogbWF0LWNvbG9yKCRwYWxldHRlLCAkdGh1bWItY2hlY2tlZC1odWUpO1xuICAgIH1cblxuICAgIC5tYXQtc2xpZGUtdG9nZ2xlLWJhciB7XG4gICAgICAvLyBPcGFjaXR5IGlzIGRldGVybWluZWQgZnJvbSB0aGUgc3BlY3MgZm9yIHRoZSBzZWxlY3Rpb24gY29udHJvbHMuXG4gICAgICAvLyBTZWU6IGh0dHBzOi8vbWF0ZXJpYWwuaW8vZGVzaWduL2NvbXBvbmVudHMvc2VsZWN0aW9uLWNvbnRyb2xzLmh0bWwjc3BlY3NcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IG1hdC1jb2xvcigkcGFsZXR0ZSwgJHRodW1iLWNoZWNrZWQtaHVlLCAwLjU0KTtcbiAgICB9XG5cbiAgICAubWF0LXJpcHBsZS1lbGVtZW50IHtcbiAgICAgIC8vIFNldCBubyBvcGFjaXR5IGZvciB0aGUgcmlwcGxlcyBiZWNhdXNlIHRoZSByaXBwbGUgb3BhY2l0eSB3aWxsIGJlIGFkanVzdGVkIGR5bmFtaWNhbGx5XG4gICAgICAvLyBiYXNlZCBvbiB0aGUgdHlwZSBvZiBpbnRlcmFjdGlvbiB3aXRoIHRoZSBzbGlkZS10b2dnbGUgKGUuZy4gZm9yIGhvdmVyLCBmb2N1cylcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IG1hdC1jb2xvcigkcGFsZXR0ZSwgJHRodW1iLWNoZWNrZWQtaHVlKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIG1hdC1zbGlkZS10b2dnbGUtY29sb3IoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiBtYXQtZ2V0LWNvbG9yLWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgJGlzLWRhcms6IG1hcC1nZXQoJGNvbmZpZywgaXMtZGFyayk7XG4gICRwcmltYXJ5OiBtYXAtZ2V0KCRjb25maWcsIHByaW1hcnkpO1xuICAkYWNjZW50OiBtYXAtZ2V0KCRjb25maWcsIGFjY2VudCk7XG4gICR3YXJuOiBtYXAtZ2V0KCRjb25maWcsIHdhcm4pO1xuICAkYmFja2dyb3VuZDogbWFwLWdldCgkY29uZmlnLCBiYWNrZ3JvdW5kKTtcbiAgJGZvcmVncm91bmQ6IG1hcC1nZXQoJGNvbmZpZywgZm9yZWdyb3VuZCk7XG5cbiAgLy8gQ29sb3IgaHVlcyBhcmUgYmFzZWQgb24gdGhlIHNwZWNzIHdoaWNoIGJyaWVmbHkgc2hvdyB0aGUgaHVlcyB0aGF0IGFyZSBhcHBsaWVkIHRvIGEgc3dpdGNoLlxuICAvLyBUaGUgMjAxOCBzcGVjcyBubyBsb25nZXIgZGVzY3JpYmUgaG93IGRhcmsgc3dpdGNoZXMgc2hvdWxkIGxvb2sgbGlrZS4gRHVlIHRvIHRoZSBsYWNrIG9mXG4gIC8vIGluZm9ybWF0aW9uIGZvciBkYXJrIHRoZW1lZCBzd2l0Y2hlcywgd2UgcGFydGlhbGx5IGtlZXAgdGhlIG9sZCBiZWhhdmlvciB0aGF0IGlzIGJhc2VkIG9uXG4gIC8vIHRoZSBwcmV2aW91cyBzcGVjaWZpY2F0aW9ucy4gRm9yIHRoZSBjaGVja2VkIGNvbG9yIHdlIGFsd2F5cyB1c2UgdGhlIGBkZWZhdWx0YCBodWUgYmVjYXVzZVxuICAvLyB0aGF0IGZvbGxvd3MgTURDIGFuZCBhbHNvIG1ha2VzIGl0IGVhc2llciBmb3IgcGVvcGxlIHRvIGNyZWF0ZSBhIGN1c3RvbSB0aGVtZSB3aXRob3V0IG5lZWRpbmdcbiAgLy8gdG8gc3BlY2lmeSBlYWNoIGh1ZSBpbmRpdmlkdWFsbHkuXG4gICR0aHVtYi11bmNoZWNrZWQtaHVlOiBpZigkaXMtZGFyaywgNDAwLCA1MCk7XG4gICR0aHVtYi1jaGVja2VkLWh1ZTogZGVmYXVsdDtcblxuICAkYmFyLXVuY2hlY2tlZC1jb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBkaXNhYmxlZCk7XG4gICRyaXBwbGUtdW5jaGVja2VkLWNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIGJhc2UpO1xuXG4gIC5tYXQtc2xpZGUtdG9nZ2xlIHtcbiAgICBAaW5jbHVkZSBfbWF0LXNsaWRlLXRvZ2dsZS1jaGVja2VkKCRhY2NlbnQsICR0aHVtYi1jaGVja2VkLWh1ZSk7XG5cbiAgICAmLm1hdC1wcmltYXJ5IHtcbiAgICAgIEBpbmNsdWRlIF9tYXQtc2xpZGUtdG9nZ2xlLWNoZWNrZWQoJHByaW1hcnksICR0aHVtYi1jaGVja2VkLWh1ZSk7XG4gICAgfVxuXG4gICAgJi5tYXQtd2FybiB7XG4gICAgICBAaW5jbHVkZSBfbWF0LXNsaWRlLXRvZ2dsZS1jaGVja2VkKCR3YXJuLCAkdGh1bWItY2hlY2tlZC1odWUpO1xuICAgIH1cblxuICAgICY6bm90KC5tYXQtY2hlY2tlZCkgLm1hdC1yaXBwbGUtZWxlbWVudCB7XG4gICAgICAvLyBTZXQgbm8gb3BhY2l0eSBmb3IgdGhlIHJpcHBsZXMgYmVjYXVzZSB0aGUgcmlwcGxlIG9wYWNpdHkgd2lsbCBiZSBhZGp1c3RlZCBkeW5hbWljYWxseVxuICAgICAgLy8gYmFzZWQgb24gdGhlIHR5cGUgb2YgaW50ZXJhY3Rpb24gd2l0aCB0aGUgc2xpZGUtdG9nZ2xlIChlLmcuIGZvciBob3ZlciwgZm9jdXMpXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkcmlwcGxlLXVuY2hlY2tlZC1jb2xvcjtcbiAgICB9XG4gIH1cblxuICAubWF0LXNsaWRlLXRvZ2dsZS10aHVtYiB7XG4gICAgQGluY2x1ZGUgbWF0LXByaXZhdGUtdGhlbWUtZWxldmF0aW9uKDEsICRjb25maWcpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IG1hdC1jb2xvcigkbWF0LWdyZXksICR0aHVtYi11bmNoZWNrZWQtaHVlKTtcbiAgfVxuXG4gIC5tYXQtc2xpZGUtdG9nZ2xlLWJhciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGJhci11bmNoZWNrZWQtY29sb3I7XG4gIH1cbn1cblxuQG1peGluIG1hdC1zbGlkZS10b2dnbGUtdHlwb2dyYXBoeSgkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IG1hdC1nZXQtdHlwb2dyYXBoeS1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gIC5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnQge1xuICAgIGZvbnQtZmFtaWx5OiBtYXQtZm9udC1mYW1pbHkoJGNvbmZpZyk7XG4gIH1cbn1cblxuQG1peGluIF9tYXQtc2xpZGUtdG9nZ2xlLWRlbnNpdHkoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIG1hdC1zbGlkZS10b2dnbGUtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZykge1xuICAkdGhlbWU6IG1hdC1wcml2YXRlLWxlZ2FjeS1nZXQtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZyk7XG4gIEBpbmNsdWRlIG1hdC1wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LXNsaWRlLXRvZ2dsZScpIHtcbiAgICAkY29sb3I6IG1hdC1nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgJGRlbnNpdHk6IG1hdC1nZXQtZGVuc2l0eS1jb25maWcoJHRoZW1lKTtcbiAgICAkdHlwb2dyYXBoeTogbWF0LWdldC10eXBvZ3JhcGh5LWNvbmZpZygkdGhlbWUpO1xuXG4gICAgQGlmICRjb2xvciAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIG1hdC1zbGlkZS10b2dnbGUtY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gICAgQGlmICRkZW5zaXR5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgX21hdC1zbGlkZS10b2dnbGUtZGVuc2l0eSgkZGVuc2l0eSk7XG4gICAgfVxuICAgIEBpZiAkdHlwb2dyYXBoeSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIG1hdC1zbGlkZS10b2dnbGUtdHlwb2dyYXBoeSgkdHlwb2dyYXBoeSk7XG4gICAgfVxuICB9XG59XG5cblxuXG5cblxuXG5AbWl4aW4gX21hdC1zbGlkZXItaW5uZXItY29udGVudC10aGVtZSgkcGFsZXR0ZSkge1xuICAubWF0LXNsaWRlci10cmFjay1maWxsLFxuICAubWF0LXNsaWRlci10aHVtYixcbiAgLm1hdC1zbGlkZXItdGh1bWItbGFiZWwge1xuICAgIGJhY2tncm91bmQtY29sb3I6IG1hdC1jb2xvcigkcGFsZXR0ZSk7XG4gIH1cblxuICAubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0IHtcbiAgICBjb2xvcjogbWF0LWNvbG9yKCRwYWxldHRlLCBkZWZhdWx0LWNvbnRyYXN0KTtcbiAgfVxuXG4gIC5tYXQtc2xpZGVyLWZvY3VzLXJpbmcge1xuICAgICRvcGFjaXR5OiAwLjI7XG4gICAgJGNvbG9yOiBtYXQtY29sb3IoJHBhbGV0dGUsIGRlZmF1bHQsICRvcGFjaXR5KTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3I7XG5cbiAgICAvLyBgbWF0LWNvbG9yYCB1c2VzIGByZ2JhYCBmb3IgdGhlIG9wYWNpdHkgd2hpY2ggd29uJ3Qgd29yayB3aXRoXG4gICAgLy8gQ1NTIHZhcmlhYmxlcyBzbyB3ZSBuZWVkIHRvIHVzZSBgb3BhY2l0eWAgYXMgYSBmYWxsYmFjay5cbiAgICBAaWYgKHR5cGUtb2YoJGNvbG9yKSAhPSBjb2xvcikge1xuICAgICAgb3BhY2l0eTogJG9wYWNpdHk7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBtYXQtc2xpZGVyLWNvbG9yKCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogbWF0LWdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRwcmltYXJ5OiBtYXAtZ2V0KCRjb25maWcsIHByaW1hcnkpO1xuICAkYWNjZW50OiBtYXAtZ2V0KCRjb25maWcsIGFjY2VudCk7XG4gICR3YXJuOiBtYXAtZ2V0KCRjb25maWcsIHdhcm4pO1xuICAkYmFja2dyb3VuZDogbWFwLWdldCgkY29uZmlnLCBiYWNrZ3JvdW5kKTtcbiAgJGZvcmVncm91bmQ6IG1hcC1nZXQoJGNvbmZpZywgZm9yZWdyb3VuZCk7XG5cbiAgJG1hdC1zbGlkZXItb2ZmLWNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIHNsaWRlci1vZmYpO1xuICAkbWF0LXNsaWRlci1vZmYtZm9jdXNlZC1jb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBzbGlkZXItb2ZmLWFjdGl2ZSk7XG4gICRtYXQtc2xpZGVyLWRpc2FibGVkLWNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIHNsaWRlci1vZmYpO1xuICAkbWF0LXNsaWRlci1sYWJlbGVkLW1pbi12YWx1ZS10aHVtYi1jb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBzbGlkZXItbWluKTtcbiAgJG1hdC1zbGlkZXItbGFiZWxlZC1taW4tdmFsdWUtdGh1bWItbGFiZWwtY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgc2xpZGVyLW9mZik7XG4gICRtYXQtc2xpZGVyLXRpY2stb3BhY2l0eTogMC43O1xuICAkbWF0LXNsaWRlci10aWNrLWNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIGJhc2UsICRtYXQtc2xpZGVyLXRpY2stb3BhY2l0eSk7XG4gICRtYXQtc2xpZGVyLXRpY2stc2l6ZTogMnB4O1xuXG4gIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmQge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRtYXQtc2xpZGVyLW9mZi1jb2xvcjtcbiAgfVxuXG4gIC5tYXQtcHJpbWFyeSB7XG4gICAgQGluY2x1ZGUgX21hdC1zbGlkZXItaW5uZXItY29udGVudC10aGVtZSgkcHJpbWFyeSk7XG4gIH1cblxuICAubWF0LWFjY2VudCB7XG4gICAgQGluY2x1ZGUgX21hdC1zbGlkZXItaW5uZXItY29udGVudC10aGVtZSgkYWNjZW50KTtcbiAgfVxuXG4gIC5tYXQtd2FybiB7XG4gICAgQGluY2x1ZGUgX21hdC1zbGlkZXItaW5uZXItY29udGVudC10aGVtZSgkd2Fybik7XG4gIH1cblxuICAubWF0LXNsaWRlcjpob3ZlcixcbiAgLmNkay1mb2N1c2VkIHtcbiAgICAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5kIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRtYXQtc2xpZGVyLW9mZi1mb2N1c2VkLWNvbG9yO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtc2xpZGVyLWRpc2FibGVkIHtcbiAgICAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5kLFxuICAgIC5tYXQtc2xpZGVyLXRyYWNrLWZpbGwsXG4gICAgLm1hdC1zbGlkZXItdGh1bWIge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJG1hdC1zbGlkZXItZGlzYWJsZWQtY29sb3I7XG4gICAgfVxuXG4gICAgJjpob3ZlciB7XG4gICAgICAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5kIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJG1hdC1zbGlkZXItZGlzYWJsZWQtY29sb3I7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLm1hdC1zbGlkZXItbWluLXZhbHVlIHtcbiAgICAubWF0LXNsaWRlci1mb2N1cy1yaW5nIHtcbiAgICAgICRvcGFjaXR5OiAwLjEyO1xuICAgICAgJGNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIGJhc2UsICRvcGFjaXR5KTtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvcjtcblxuICAgICAgLy8gYG1hdC1jb2xvcmAgdXNlcyBgcmdiYWAgZm9yIHRoZSBvcGFjaXR5IHdoaWNoIHdvbid0IHdvcmsgd2l0aFxuICAgICAgLy8gQ1NTIHZhcmlhYmxlcyBzbyB3ZSBuZWVkIHRvIHVzZSBgb3BhY2l0eWAgYXMgYSBmYWxsYmFjay5cbiAgICAgIEBpZiAodHlwZS1vZigkY29sb3IpICE9IGNvbG9yKSB7XG4gICAgICAgIG9wYWNpdHk6ICRvcGFjaXR5O1xuICAgICAgfVxuICAgIH1cblxuICAgICYubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nIHtcbiAgICAgIC5tYXQtc2xpZGVyLXRodW1iLFxuICAgICAgLm1hdC1zbGlkZXItdGh1bWItbGFiZWwge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkbWF0LXNsaWRlci1sYWJlbGVkLW1pbi12YWx1ZS10aHVtYi1jb2xvcjtcbiAgICAgIH1cblxuICAgICAgJi5jZGstZm9jdXNlZCB7XG4gICAgICAgIC5tYXQtc2xpZGVyLXRodW1iLFxuICAgICAgICAubWF0LXNsaWRlci10aHVtYi1sYWJlbCB7XG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJG1hdC1zbGlkZXItbGFiZWxlZC1taW4tdmFsdWUtdGh1bWItbGFiZWwtY29sb3I7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAmOm5vdCgubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nKSB7XG4gICAgICAubWF0LXNsaWRlci10aHVtYiB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogJG1hdC1zbGlkZXItb2ZmLWNvbG9yO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgIH1cblxuICAgICAgJjpob3ZlcixcbiAgICAgICYuY2RrLWZvY3VzZWQge1xuICAgICAgICAubWF0LXNsaWRlci10aHVtYiB7XG4gICAgICAgICAgYm9yZGVyLWNvbG9yOiAkbWF0LXNsaWRlci1vZmYtZm9jdXNlZC1jb2xvcjtcbiAgICAgICAgfVxuXG4gICAgICAgICYubWF0LXNsaWRlci1kaXNhYmxlZCAubWF0LXNsaWRlci10aHVtYiB7XG4gICAgICAgICAgYm9yZGVyLWNvbG9yOiAkbWF0LXNsaWRlci1kaXNhYmxlZC1jb2xvcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5tYXQtc2xpZGVyLWhhcy10aWNrcyAubWF0LXNsaWRlci13cmFwcGVyOjphZnRlciB7XG4gICAgYm9yZGVyLWNvbG9yOiAkbWF0LXNsaWRlci10aWNrLWNvbG9yO1xuXG4gICAgLy8gYG1hdC1jb2xvcmAgdXNlcyBgcmdiYWAgZm9yIHRoZSBvcGFjaXR5IHdoaWNoIHdvbid0IHdvcmsgd2l0aFxuICAgIC8vIENTUyB2YXJpYWJsZXMgc28gd2UgbmVlZCB0byB1c2UgYG9wYWNpdHlgIGFzIGEgZmFsbGJhY2suXG4gICAgQGlmICh0eXBlLW9mKCRtYXQtc2xpZGVyLXRpY2stY29sb3IpICE9IGNvbG9yKSB7XG4gICAgICBvcGFjaXR5OiAkbWF0LXNsaWRlci10aWNrLW9wYWNpdHk7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1zbGlkZXItaG9yaXpvbnRhbCAubWF0LXNsaWRlci10aWNrcyB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogcmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCh0byByaWdodCwgJG1hdC1zbGlkZXItdGljay1jb2xvcixcbiAgICAgICAgJG1hdC1zbGlkZXItdGljay1jb2xvciAkbWF0LXNsaWRlci10aWNrLXNpemUsIHRyYW5zcGFyZW50IDAsIHRyYW5zcGFyZW50KTtcbiAgICAvLyBGaXJlZm94IGRvZXNuJ3QgZHJhdyB0aGUgZ3JhZGllbnQgY29ycmVjdGx5IHdpdGggJ3RvIHJpZ2h0J1xuICAgIC8vIChzZWUgaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMxNDMxOSkuXG4gICAgYmFja2dyb3VuZC1pbWFnZTogLW1vei1yZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KDAuMDAwMWRlZywgJG1hdC1zbGlkZXItdGljay1jb2xvcixcbiAgICAgICAgJG1hdC1zbGlkZXItdGljay1jb2xvciAkbWF0LXNsaWRlci10aWNrLXNpemUsIHRyYW5zcGFyZW50IDAsIHRyYW5zcGFyZW50KTtcblxuICAgIC8vIGBtYXQtY29sb3JgIHVzZXMgYHJnYmFgIGZvciB0aGUgb3BhY2l0eSB3aGljaCB3b24ndCB3b3JrIHdpdGhcbiAgICAvLyBDU1MgdmFyaWFibGVzIHNvIHdlIG5lZWQgdG8gdXNlIGBvcGFjaXR5YCBhcyBhIGZhbGxiYWNrLlxuICAgIEBpZiAodHlwZS1vZigkbWF0LXNsaWRlci10aWNrLWNvbG9yKSAhPSBjb2xvcikge1xuICAgICAgb3BhY2l0eTogJG1hdC1zbGlkZXItdGljay1vcGFjaXR5O1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtc2xpZGVyLXZlcnRpY2FsIC5tYXQtc2xpZGVyLXRpY2tzIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiByZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgJG1hdC1zbGlkZXItdGljay1jb2xvcixcbiAgICAgICAgJG1hdC1zbGlkZXItdGljay1jb2xvciAkbWF0LXNsaWRlci10aWNrLXNpemUsIHRyYW5zcGFyZW50IDAsIHRyYW5zcGFyZW50KTtcblxuICAgIC8vIGBtYXQtY29sb3JgIHVzZXMgYHJnYmFgIGZvciB0aGUgb3BhY2l0eSB3aGljaCB3b24ndCB3b3JrIHdpdGhcbiAgICAvLyBDU1MgdmFyaWFibGVzIHNvIHdlIG5lZWQgdG8gdXNlIGBvcGFjaXR5YCBhcyBhIGZhbGxiYWNrLlxuICAgIEBpZiAodHlwZS1vZigkbWF0LXNsaWRlci10aWNrLWNvbG9yKSAhPSBjb2xvcikge1xuICAgICAgb3BhY2l0eTogJG1hdC1zbGlkZXItdGljay1vcGFjaXR5O1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gbWF0LXNsaWRlci10eXBvZ3JhcGh5KCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogbWF0LWdldC10eXBvZ3JhcGh5LWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dCB7XG4gICAgZm9udDoge1xuICAgICAgZmFtaWx5OiBtYXQtZm9udC1mYW1pbHkoJGNvbmZpZyk7XG4gICAgICBzaXplOiBtYXQtZm9udC1zaXplKCRjb25maWcsIGNhcHRpb24pO1xuICAgICAgd2VpZ2h0OiBtYXQtZm9udC13ZWlnaHQoJGNvbmZpZywgYm9keS0yKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIF9tYXQtc2xpZGVyLWRlbnNpdHkoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIG1hdC1zbGlkZXItdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZykge1xuICAkdGhlbWU6IG1hdC1wcml2YXRlLWxlZ2FjeS1nZXQtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZyk7XG4gIEBpbmNsdWRlIG1hdC1wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LXNsaWRlcicpIHtcbiAgICAkY29sb3I6IG1hdC1nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgJGRlbnNpdHk6IG1hdC1nZXQtZGVuc2l0eS1jb25maWcoJHRoZW1lKTtcbiAgICAkdHlwb2dyYXBoeTogbWF0LWdldC10eXBvZ3JhcGh5LWNvbmZpZygkdGhlbWUpO1xuXG4gICAgQGlmICRjb2xvciAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIG1hdC1zbGlkZXItY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gICAgQGlmICRkZW5zaXR5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgX21hdC1zbGlkZXItZGVuc2l0eSgkZGVuc2l0eSk7XG4gICAgfVxuICAgIEBpZiAkdHlwb2dyYXBoeSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIG1hdC1zbGlkZXItdHlwb2dyYXBoeSgkdHlwb2dyYXBoeSk7XG4gICAgfVxuICB9XG59XG5cblxuXG5cblxuJG1hdC1zdGVwcGVyLWhlYWRlci1oZWlnaHQ6IDcycHggIWRlZmF1bHQ7XG4vLyBNaW5pbXVtIGhlaWdodCBmb3IgaGlnaGVzdCBkZW5zaXR5IHN0ZXBwZXIncyBpcyBkZXRlcm1pbmVkIGJhc2VkIG9uIGhvdyBtdWNoXG4vLyBzdGVwcGVyIGhlYWRlcnMgY2FuIHNocmluayB1bnRpbCB0aGUgc3RlcCBpY29uIG9yIHN0ZXAgbGFiZWwgZXhjZWVkLiBXZSBjYW4ndCB1c2Vcbi8vIGEgdmFsdWUgYmVsb3cgYDQycHhgIGJlY2F1c2UgdGhlIG9wdGlvbmFsIGxhYmVsIGZvciBzdGVwcyB3b3VsZCBvdGhlcndpc2UgZXhjZWVkLlxuJG1hdC1zdGVwcGVyLWhlYWRlci1taW5pbXVtLWhlaWdodDogNDJweCAhZGVmYXVsdDtcbiRtYXQtc3RlcHBlci1oZWFkZXItbWF4aW11bS1oZWlnaHQ6ICRtYXQtc3RlcHBlci1oZWFkZXItaGVpZ2h0ICFkZWZhdWx0O1xuXG4kbWF0LXN0ZXBwZXItZGVuc2l0eS1jb25maWc6IChcbiAgaGVpZ2h0OiAoXG4gICAgZGVmYXVsdDogJG1hdC1zdGVwcGVyLWhlYWRlci1oZWlnaHQsXG4gICAgbWF4aW11bTogJG1hdC1zdGVwcGVyLWhlYWRlci1tYXhpbXVtLWhlaWdodCxcbiAgICBtaW5pbXVtOiAkbWF0LXN0ZXBwZXItaGVhZGVyLW1pbmltdW0taGVpZ2h0LFxuICApXG4pICFkZWZhdWx0O1xuXG4vLyBOb3RlOiBUaGVzZSB2YXJpYWJsZXMgYXJlIG5vdCBkZW5vdGVkIHdpdGggYCFkZWZhdWx0YCBiZWNhdXNlIHRoZXkgYXJlIHVzZWQgaW4gdGhlIG5vbi10aGVtZVxuLy8gY29tcG9uZW50IHN0eWxlcy4gTW9kaWZ5aW5nIHRoZXNlIHZhcmlhYmxlcyBkb2VzIG5vdCBoYXZlIHRoZSBkZXNpcmVkIGVmZmVjdCBmb3IgY29uc3VtZXJzLlxuJG1hdC1zdGVwcGVyLWxhYmVsLWhlYWRlci1oZWlnaHQ6IDI0cHg7XG4kbWF0LXN0ZXBwZXItbGFiZWwtcG9zaXRpb24tYm90dG9tLXRvcC1nYXA6IDE2cHg7XG4kbWF0LXN0ZXBwZXItbGFiZWwtbWluLXdpZHRoOiA1MHB4O1xuXG4kbWF0LXZlcnRpY2FsLXN0ZXBwZXItY29udGVudC1tYXJnaW46IDM2cHg7XG5cbiRtYXQtc3RlcHBlci1zaWRlLWdhcDogMjRweDtcbiRtYXQtc3RlcHBlci1saW5lLXdpZHRoOiAxcHg7XG4kbWF0LXN0ZXBwZXItbGluZS1nYXA6IDhweDtcblxuJG1hdC1zdGVwLXN1Yi1sYWJlbC1mb250LXNpemU6IDEycHg7XG4kbWF0LXN0ZXAtaGVhZGVyLWljb24tc2l6ZTogMTZweDtcblxuXG5AbWl4aW4gbWF0LXN0ZXBwZXItY29sb3IoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiBtYXQtZ2V0LWNvbG9yLWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgJGZvcmVncm91bmQ6IG1hcC1nZXQoJGNvbmZpZywgZm9yZWdyb3VuZCk7XG4gICRiYWNrZ3JvdW5kOiBtYXAtZ2V0KCRjb25maWcsIGJhY2tncm91bmQpO1xuICAkcHJpbWFyeTogbWFwLWdldCgkY29uZmlnLCBwcmltYXJ5KTtcbiAgJGFjY2VudDogbWFwLWdldCgkY29uZmlnLCBhY2NlbnQpO1xuICAkd2FybjogbWFwLWdldCgkY29uZmlnLCB3YXJuKTtcblxuICAubWF0LXN0ZXAtaGVhZGVyIHtcbiAgICAmLmNkay1rZXlib2FyZC1mb2N1c2VkLFxuICAgICYuY2RrLXByb2dyYW0tZm9jdXNlZCxcbiAgICAmOmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IG1hdC1jb2xvcigkYmFja2dyb3VuZCwgaG92ZXIpO1xuICAgIH1cblxuICAgIC8vIE9uIHRvdWNoIGRldmljZXMgdGhlIDpob3ZlciBzdGF0ZSB3aWxsIGxpbmdlciBvbiB0aGUgZWxlbWVudCBhZnRlciBhIHRhcC5cbiAgICAvLyBSZXNldCBpdCB2aWEgYEBtZWRpYWAgYWZ0ZXIgdGhlIGRlY2xhcmF0aW9uLCBiZWNhdXNlIHRoZSBtZWRpYSBxdWVyeSBpc24ndFxuICAgIC8vIHN1cHBvcnRlZCBieSBhbGwgYnJvd3NlcnMgeWV0LlxuICAgIEBtZWRpYSAoaG92ZXI6IG5vbmUpIHtcbiAgICAgICY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgICAgfVxuICAgIH1cblxuICAgIC5tYXQtc3RlcC1sYWJlbCxcbiAgICAubWF0LXN0ZXAtb3B0aW9uYWwge1xuICAgICAgLy8gVE9ETyhqb3NlcGhwZXJyb3R0KTogVXBkYXRlIHRvIHVzaW5nIGEgY29ycmVjdGVkIGRpc2FibGVkLXRleHQgY29udHJhc3RcbiAgICAgIC8vIGluc3RlYWQgb2Ygc2Vjb25kYXJ5LXRleHQuXG4gICAgICBjb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBzZWNvbmRhcnktdGV4dCk7XG4gICAgfVxuXG4gICAgLm1hdC1zdGVwLWljb24ge1xuICAgICAgLy8gVE9ETyhqb3NlcGhwZXJyb3R0KTogVXBkYXRlIHRvIHVzaW5nIGEgY29ycmVjdGVkIGRpc2FibGVkLXRleHQgY29udHJhc3RcbiAgICAgIC8vIGluc3RlYWQgb2Ygc2Vjb25kYXJ5LXRleHQuXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIHNlY29uZGFyeS10ZXh0KTtcbiAgICAgIGNvbG9yOiBtYXQtY29sb3IoJHByaW1hcnksIGRlZmF1bHQtY29udHJhc3QpO1xuICAgIH1cblxuICAgIC5tYXQtc3RlcC1pY29uLXNlbGVjdGVkLFxuICAgIC5tYXQtc3RlcC1pY29uLXN0YXRlLWRvbmUsXG4gICAgLm1hdC1zdGVwLWljb24tc3RhdGUtZWRpdCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBtYXQtY29sb3IoJHByaW1hcnkpO1xuICAgICAgY29sb3I6IG1hdC1jb2xvcigkcHJpbWFyeSwgZGVmYXVsdC1jb250cmFzdCk7XG4gICAgfVxuXG4gICAgJi5tYXQtYWNjZW50IHtcbiAgICAgIC5tYXQtc3RlcC1pY29uIHtcbiAgICAgICAgY29sb3I6IG1hdC1jb2xvcigkYWNjZW50LCBkZWZhdWx0LWNvbnRyYXN0KTtcbiAgICAgIH1cblxuICAgICAgLm1hdC1zdGVwLWljb24tc2VsZWN0ZWQsXG4gICAgICAubWF0LXN0ZXAtaWNvbi1zdGF0ZS1kb25lLFxuICAgICAgLm1hdC1zdGVwLWljb24tc3RhdGUtZWRpdCB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IG1hdC1jb2xvcigkYWNjZW50KTtcbiAgICAgICAgY29sb3I6IG1hdC1jb2xvcigkYWNjZW50LCBkZWZhdWx0LWNvbnRyYXN0KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLm1hdC13YXJuIHtcbiAgICAgIC5tYXQtc3RlcC1pY29uIHtcbiAgICAgICAgY29sb3I6IG1hdC1jb2xvcigkd2FybiwgZGVmYXVsdC1jb250cmFzdCk7XG4gICAgICB9XG5cbiAgICAgIC5tYXQtc3RlcC1pY29uLXNlbGVjdGVkLFxuICAgICAgLm1hdC1zdGVwLWljb24tc3RhdGUtZG9uZSxcbiAgICAgIC5tYXQtc3RlcC1pY29uLXN0YXRlLWVkaXQge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBtYXQtY29sb3IoJHdhcm4pO1xuICAgICAgICBjb2xvcjogbWF0LWNvbG9yKCR3YXJuLCBkZWZhdWx0LWNvbnRyYXN0KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAubWF0LXN0ZXAtaWNvbi1zdGF0ZS1lcnJvciB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgIGNvbG9yOiBtYXQtY29sb3IoJHdhcm4sIHRleHQpO1xuICAgIH1cblxuICAgIC5tYXQtc3RlcC1sYWJlbC5tYXQtc3RlcC1sYWJlbC1hY3RpdmUge1xuICAgICAgY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgdGV4dCk7XG4gICAgfVxuXG4gICAgLm1hdC1zdGVwLWxhYmVsLm1hdC1zdGVwLWxhYmVsLWVycm9yIHtcbiAgICAgIGNvbG9yOiBtYXQtY29sb3IoJHdhcm4sIHRleHQpO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsLCAubWF0LXN0ZXBwZXItdmVydGljYWwge1xuICAgIGJhY2tncm91bmQtY29sb3I6IG1hdC1jb2xvcigkYmFja2dyb3VuZCwgY2FyZCk7XG4gIH1cblxuICAubWF0LXN0ZXBwZXItdmVydGljYWwtbGluZTo6YmVmb3JlIHtcbiAgICBib3JkZXItbGVmdC1jb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBkaXZpZGVyKTtcbiAgfVxuXG4gIC5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlcjo6YmVmb3JlLFxuICAubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXI6OmFmdGVyLFxuICAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbC1saW5lIHtcbiAgICBib3JkZXItdG9wLWNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIGRpdmlkZXIpO1xuICB9XG59XG5cbkBtaXhpbiBtYXQtc3RlcHBlci10eXBvZ3JhcGh5KCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogbWF0LWdldC10eXBvZ3JhcGh5LWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgLm1hdC1zdGVwcGVyLXZlcnRpY2FsLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbCB7XG4gICAgZm9udC1mYW1pbHk6IG1hdC1mb250LWZhbWlseSgkY29uZmlnKTtcbiAgfVxuXG4gIC5tYXQtc3RlcC1sYWJlbCB7XG4gICAgZm9udDoge1xuICAgICAgc2l6ZTogbWF0LWZvbnQtc2l6ZSgkY29uZmlnLCBib2R5LTEpO1xuICAgICAgd2VpZ2h0OiBtYXQtZm9udC13ZWlnaHQoJGNvbmZpZywgYm9keS0xKTtcbiAgICB9O1xuICB9XG5cbiAgLm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvciB7XG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgfVxuXG4gIC5tYXQtc3RlcC1sYWJlbC1lcnJvciB7XG4gICAgZm9udC1zaXplOiBtYXQtZm9udC1zaXplKCRjb25maWcsIGJvZHktMik7XG4gIH1cblxuICAubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWQge1xuICAgIGZvbnQ6IHtcbiAgICAgIHNpemU6IG1hdC1mb250LXNpemUoJGNvbmZpZywgYm9keS0yKTtcbiAgICAgIHdlaWdodDogbWF0LWZvbnQtd2VpZ2h0KCRjb25maWcsIGJvZHktMik7XG4gICAgfTtcbiAgfVxufVxuXG5AbWl4aW4gbWF0LXN0ZXBwZXItZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRkZW5zaXR5LXNjYWxlOiBtYXQtZ2V0LWRlbnNpdHktY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAkaGVpZ2h0OiBtYXQtcHJpdmF0ZS1kZW5zaXR5LXByb3AtdmFsdWUoJG1hdC1zdGVwcGVyLWRlbnNpdHktY29uZmlnLCAkZGVuc2l0eS1zY2FsZSwgaGVpZ2h0KTtcbiAgJHZlcnRpY2FsLXBhZGRpbmc6ICgkaGVpZ2h0IC0gJG1hdC1zdGVwcGVyLWxhYmVsLWhlYWRlci1oZWlnaHQpIC8gMjtcblxuICBAaW5jbHVkZSBtYXQtcHJpdmF0ZS1kZW5zaXR5LWxlZ2FjeS1jb21wYXRpYmlsaXR5KCkge1xuICAgIC5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlciB7XG4gICAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gICAgfVxuXG4gICAgLm1hdC1zdGVwcGVyLWxhYmVsLXBvc2l0aW9uLWJvdHRvbSAubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXIsXG4gICAgLm1hdC12ZXJ0aWNhbC1zdGVwcGVyLWhlYWRlciB7XG4gICAgICBwYWRkaW5nOiAkdmVydGljYWwtcGFkZGluZyAkbWF0LXN0ZXBwZXItc2lkZS1nYXA7XG4gICAgfVxuXG4gICAgLy8gRW5zdXJlcyB0aGF0IHRoZSB2ZXJ0aWNhbCBsaW5lcyBmb3IgdGhlIHN0ZXAgY29udGVudCBleGNlZWQgaW50byB0aGUgc3RlcFxuICAgIC8vIGhlYWRlcnMgd2l0aCBhIGdpdmVuIGRpc3RhbmNlIChgJG1hdC1zdGVwcGVyLWxpbmUtZ2FwYCkgdG8gdGhlIHN0ZXAgaWNvbi5cbiAgICAubWF0LXN0ZXBwZXItdmVydGljYWwtbGluZTo6YmVmb3JlIHtcbiAgICAgIHRvcDogJG1hdC1zdGVwcGVyLWxpbmUtZ2FwIC0gJHZlcnRpY2FsLXBhZGRpbmc7XG4gICAgICBib3R0b206ICRtYXQtc3RlcHBlci1saW5lLWdhcCAtICR2ZXJ0aWNhbC1wYWRkaW5nO1xuICAgIH1cblxuICAgIC8vIEVuc3VyZXMgdGhhdCB0aGUgaG9yaXpvbnRhbCBsaW5lcyBmb3IgdGhlIHN0ZXAgaGVhZGVyIGFyZSBjZW50ZXJlZCB2ZXJ0aWNhbGx5LlxuICAgIC5tYXQtc3RlcHBlci1sYWJlbC1wb3NpdGlvbi1ib3R0b20gLm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVyIHtcbiAgICAgICY6OmFmdGVyLCAmOjpiZWZvcmUge1xuICAgICAgICB0b3A6ICR2ZXJ0aWNhbC1wYWRkaW5nICsgJG1hdC1zdGVwcGVyLWxhYmVsLWhlYWRlci1oZWlnaHQgLyAyO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEVuc3VyZXMgdGhhdCB0aGUgaG9yaXpvbnRhbCBsaW5lIGZvciB0aGUgc3RlcCBjb250ZW50IGlzIGFsaWduZWQgY2VudGVyZWQgdmVydGljYWxseS5cbiAgICAubWF0LXN0ZXBwZXItbGFiZWwtcG9zaXRpb24tYm90dG9tIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsLWxpbmUge1xuICAgICAgdG9wOiAkdmVydGljYWwtcGFkZGluZyArICRtYXQtc3RlcHBlci1sYWJlbC1oZWFkZXItaGVpZ2h0IC8gMjtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIG1hdC1zdGVwcGVyLXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiBtYXQtcHJpdmF0ZS1sZWdhY3ktZ2V0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICBAaW5jbHVkZSBtYXQtcHJpdmF0ZS1jaGVjay1kdXBsaWNhdGUtdGhlbWUtc3R5bGVzKCR0aGVtZSwgJ21hdC1zdGVwcGVyJykge1xuICAgICRjb2xvcjogbWF0LWdldC1jb2xvci1jb25maWcoJHRoZW1lKTtcbiAgICAkZGVuc2l0eTogbWF0LWdldC1kZW5zaXR5LWNvbmZpZygkdGhlbWUpO1xuICAgICR0eXBvZ3JhcGh5OiBtYXQtZ2V0LXR5cG9ncmFwaHktY29uZmlnKCR0aGVtZSk7XG5cbiAgICBAaWYgJGNvbG9yICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgbWF0LXN0ZXBwZXItY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gICAgQGlmICRkZW5zaXR5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgbWF0LXN0ZXBwZXItZGVuc2l0eSgkZGVuc2l0eSk7XG4gICAgfVxuICAgIEBpZiAkdHlwb2dyYXBoeSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIG1hdC1zdGVwcGVyLXR5cG9ncmFwaHkoJHR5cG9ncmFwaHkpO1xuICAgIH1cbiAgfVxufVxuXG5cblxuQG1peGluIG1hdC1zb3J0LWNvbG9yKCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogbWF0LWdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRiYWNrZ3JvdW5kOiBtYXAtZ2V0KCRjb25maWcsIGJhY2tncm91bmQpO1xuICAkZm9yZWdyb3VuZDogbWFwLWdldCgkY29uZmlnLCBmb3JlZ3JvdW5kKTtcblxuICAubWF0LXNvcnQtaGVhZGVyLWFycm93IHtcbiAgICAkdGFibGUtYmFja2dyb3VuZDogbWF0LWNvbG9yKCRiYWNrZ3JvdW5kLCAnY2FyZCcpO1xuICAgICR0ZXh0LWNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIHNlY29uZGFyeS10ZXh0KTtcblxuICAgIC8vIEJlY2F1c2UgdGhlIGFycm93IGlzIG1hZGUgdXAgb2YgbXVsdGlwbGUgZWxlbWVudHMgdGhhdCBhcmUgc3RhY2tlZCBvbiB0b3Agb2YgZWFjaCBvdGhlcixcbiAgICAvLyB3ZSBjYW4ndCB1c2UgdGhlIHNlbWktdHJhbnNwYXJlbnQgY29sb3IgZnJvbSB0aGUgdGhlbWUgZGlyZWN0bHkuIElmIHRoZSB2YWx1ZSBpcyBhIGNvbG9yXG4gICAgLy8gKnR5cGUqLCB3ZSBjb252ZXJ0IGl0IGludG8gYSBzb2xpZCBjb2xvciBieSB0YWtpbmcgdGhlIG9wYWNpdHkgZnJvbSB0aGUgcmdiYSB2YWx1ZSBhbmRcbiAgICAvLyB1c2luZyB0aGUgdmFsdWUgdG8gZGV0ZXJtaW5lIHRoZSBwZXJjZW50YWdlIG9mIHRoZSBiYWNrZ3JvdW5kIHRvIHB1dCBpbnRvIGZvcmVncm91bmRcbiAgICAvLyB3aGVuIG1peGluZyB0aGUgY29sb3JzIHRvZ2V0aGVyLiBPdGhlcndpc2UsIGlmIGl0IHJlc29sdmVzIHRvIHNvbWV0aGluZyBkaWZmZXJlbnRcbiAgICAvLyAoZS5nLiBpdCByZXNvbHZlcyB0byBhIENTUyB2YXJpYWJsZSksIHdlIHVzZSB0aGUgY29sb3IgZGlyZWN0bHkuXG4gICAgQGlmICh0eXBlLW9mKCR0YWJsZS1iYWNrZ3JvdW5kKSA9PSBjb2xvciBhbmQgdHlwZS1vZigkdGV4dC1jb2xvcikgPT0gY29sb3IpIHtcbiAgICAgICR0ZXh0LW9wYWNpdHk6IG9wYWNpdHkoJHRleHQtY29sb3IpO1xuICAgICAgY29sb3I6IG1peCgkdGFibGUtYmFja2dyb3VuZCwgcmdiYSgkdGV4dC1jb2xvciwgMSksICgxIC0gJHRleHQtb3BhY2l0eSkgKiAxMDAlKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgY29sb3I6ICR0ZXh0LWNvbG9yO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gbWF0LXNvcnQtdHlwb2dyYXBoeSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gX21hdC1zb3J0LWRlbnNpdHkoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIG1hdC1zb3J0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiBtYXQtcHJpdmF0ZS1sZWdhY3ktZ2V0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICBAaW5jbHVkZSBtYXQtcHJpdmF0ZS1jaGVjay1kdXBsaWNhdGUtdGhlbWUtc3R5bGVzKCR0aGVtZSwgJ21hdC1zb3J0Jykge1xuICAgICRjb2xvcjogbWF0LWdldC1jb2xvci1jb25maWcoJHRoZW1lKTtcbiAgICAkZGVuc2l0eTogbWF0LWdldC1kZW5zaXR5LWNvbmZpZygkdGhlbWUpO1xuICAgICR0eXBvZ3JhcGh5OiBtYXQtZ2V0LXR5cG9ncmFwaHktY29uZmlnKCR0aGVtZSk7XG5cbiAgICBAaWYgJGNvbG9yICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgbWF0LXNvcnQtY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gICAgQGlmICRkZW5zaXR5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgX21hdC1zb3J0LWRlbnNpdHkoJGRlbnNpdHkpO1xuICAgIH1cbiAgICBAaWYgJHR5cG9ncmFwaHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBtYXQtc29ydC10eXBvZ3JhcGh5KCR0eXBvZ3JhcGh5KTtcbiAgICB9XG4gIH1cbn1cblxuXG5cblxuXG5AbWl4aW4gbWF0LXRhYnMtY29sb3IoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiBtYXQtZ2V0LWNvbG9yLWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgJHByaW1hcnk6IG1hcC1nZXQoJGNvbmZpZywgcHJpbWFyeSk7XG4gICRhY2NlbnQ6IG1hcC1nZXQoJGNvbmZpZywgYWNjZW50KTtcbiAgJHdhcm46IG1hcC1nZXQoJGNvbmZpZywgd2Fybik7XG4gICRiYWNrZ3JvdW5kOiBtYXAtZ2V0KCRjb25maWcsIGJhY2tncm91bmQpO1xuICAkZm9yZWdyb3VuZDogbWFwLWdldCgkY29uZmlnLCBmb3JlZ3JvdW5kKTtcbiAgJGhlYWRlci1ib3JkZXI6IDFweCBzb2xpZCBtYXQtY29sb3IoJGZvcmVncm91bmQsIGRpdmlkZXIpO1xuXG4gIC5tYXQtdGFiLW5hdi1iYXIsXG4gIC5tYXQtdGFiLWhlYWRlciB7XG4gICAgYm9yZGVyLWJvdHRvbTogJGhlYWRlci1ib3JkZXI7XG4gIH1cblxuICAubWF0LXRhYi1ncm91cC1pbnZlcnRlZC1oZWFkZXIge1xuICAgIC5tYXQtdGFiLW5hdi1iYXIsXG4gICAgLm1hdC10YWItaGVhZGVyIHtcbiAgICAgIGJvcmRlci10b3A6ICRoZWFkZXItYm9yZGVyO1xuICAgICAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbiAgICB9XG4gIH1cblxuICAubWF0LXRhYi1sYWJlbCwgLm1hdC10YWItbGluayB7XG4gICAgY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgdGV4dCk7XG5cbiAgICAmLm1hdC10YWItZGlzYWJsZWQge1xuICAgICAgY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgZGlzYWJsZWQtdGV4dCk7XG4gICAgfVxuICB9XG5cbiAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbiB7XG4gICAgYm9yZGVyLWNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIHRleHQpO1xuICB9XG5cbiAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWQgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbiB7XG4gICAgYm9yZGVyLWNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIGRpc2FibGVkLXRleHQpO1xuICB9XG5cbiAgLy8gUmVtb3ZlIGhlYWRlciBib3JkZXIgd2hlbiB0aGVyZSBpcyBhIGJhY2tncm91bmQgY29sb3JcbiAgLm1hdC10YWItZ3JvdXBbY2xhc3MqPSdtYXQtYmFja2dyb3VuZC0nXSAubWF0LXRhYi1oZWFkZXIsXG4gIC5tYXQtdGFiLW5hdi1iYXJbY2xhc3MqPSdtYXQtYmFja2dyb3VuZC0nXSB7XG4gICAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbiAgICBib3JkZXItdG9wOiBub25lO1xuICB9XG5cbiAgLm1hdC10YWItZ3JvdXAsIC5tYXQtdGFiLW5hdi1iYXIge1xuICAgICR0aGVtZS1jb2xvcnM6IChcbiAgICAgIHByaW1hcnk6ICRwcmltYXJ5LFxuICAgICAgYWNjZW50OiAkYWNjZW50LFxuICAgICAgd2FybjogJHdhcm5cbiAgICApO1xuXG4gICAgQGVhY2ggJG5hbWUsICRjb2xvciBpbiAkdGhlbWUtY29sb3JzIHtcbiAgICAgIC8vIFNldCB0aGUgZm9yZWdyb3VuZCBjb2xvciBvZiB0aGUgdGFic1xuICAgICAgJi5tYXQtI3skbmFtZX0ge1xuICAgICAgICBAaW5jbHVkZSBfbWF0LXRhYi1sYWJlbC1mb2N1cygkY29sb3IpO1xuICAgICAgICBAaW5jbHVkZSBfbWF0LWluay1iYXIoJGNvbG9yKTtcblxuICAgICAgICAvLyBPdmVycmlkZSBpbmsgYmFyIHdoZW4gYmFja2dyb3VuZCBjb2xvciBpcyB0aGUgc2FtZVxuICAgICAgICAmLm1hdC1iYWNrZ3JvdW5kLSN7JG5hbWV9IHtcbiAgICAgICAgICA+IC5tYXQtdGFiLWhlYWRlciwgPiAubWF0LXRhYi1saW5rLWNvbnRhaW5lciB7XG4gICAgICAgICAgICBAaW5jbHVkZSBfbWF0LWluay1iYXIoJGNvbG9yLCBkZWZhdWx0LWNvbnRyYXN0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBAZWFjaCAkbmFtZSwgJGNvbG9yIGluICR0aGVtZS1jb2xvcnMge1xuICAgICAgLy8gU2V0IGJhY2tncm91bmQgY29sb3Igb2YgdGhlIHRhYnMgYW5kIG92ZXJyaWRlIGZvY3VzIGNvbG9yXG4gICAgICAmLm1hdC1iYWNrZ3JvdW5kLSN7JG5hbWV9IHtcbiAgICAgICAgQGluY2x1ZGUgX21hdC10YWItbGFiZWwtZm9jdXMoJGNvbG9yKTtcbiAgICAgICAgQGluY2x1ZGUgX21hdC10YWJzLWJhY2tncm91bmQoJGNvbG9yKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuQG1peGluIF9tYXQtaW5rLWJhcigkY29sb3IsICRodWU6IGRlZmF1bHQpIHtcbiAgLm1hdC1pbmstYmFyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBtYXQtY29sb3IoJGNvbG9yLCAkaHVlKTtcbiAgfVxufVxuXG5AbWl4aW4gX21hdC10YWItbGFiZWwtZm9jdXMoJHRhYi1mb2N1cy1jb2xvcikge1xuICAubWF0LXRhYi1sYWJlbCxcbiAgLm1hdC10YWItbGluayB7XG4gICAgJi5jZGsta2V5Ym9hcmQtZm9jdXNlZCxcbiAgICAmLmNkay1wcm9ncmFtLWZvY3VzZWQge1xuICAgICAgJjpub3QoLm1hdC10YWItZGlzYWJsZWQpIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogbWF0LWNvbG9yKCR0YWItZm9jdXMtY29sb3IsIGxpZ2h0ZXIsIDAuMyk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBfbWF0LXRhYnMtYmFja2dyb3VuZCgkYmFja2dyb3VuZC1jb2xvcikge1xuICAvLyBOb3RlIHRoYXQgdGhlc2Ugc2VsZWN0b3JzIHRhcmdldCBkaXJlY3QgZGVzY2VuZGFudHMgc29cbiAgLy8gdGhhdCB0aGUgc3R5bGVzIGRvbid0IGFwcGx5IHRvIGFueSBuZXN0ZWQgdGFiIGdyb3Vwcy5cblxuICAvLyBTZXQgYmFja2dyb3VuZCBjb2xvciBmb3IgdGhlIHRhYiBncm91cFxuICA+IC5tYXQtdGFiLWhlYWRlciwgPiAubWF0LXRhYi1saW5rLWNvbnRhaW5lciwgPiAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbiB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogbWF0LWNvbG9yKCRiYWNrZ3JvdW5kLWNvbG9yKTtcbiAgfVxuXG4gIC8vIFNldCBsYWJlbHMgdG8gY29udHJhc3QgYWdhaW5zdCBiYWNrZ3JvdW5kXG4gID4gLm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWxhYmVsLCA+IC5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtdGFiLWxpbmsge1xuICAgIGNvbG9yOiBtYXQtY29sb3IoJGJhY2tncm91bmQtY29sb3IsIGRlZmF1bHQtY29udHJhc3QpO1xuXG4gICAgJi5tYXQtdGFiLWRpc2FibGVkIHtcbiAgICAgIGNvbG9yOiBtYXQtY29sb3IoJGJhY2tncm91bmQtY29sb3IsIGRlZmF1bHQtY29udHJhc3QsIDAuNCk7XG4gICAgfVxuICB9XG5cbiAgLy8gU2V0IHBhZ2luYXRpb24gY2hldnJvbnMgdG8gY29udHJhc3QgYmFja2dyb3VuZFxuICA+IC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24sXG4gID4gLm1hdC10YWItbGlua3MgLm1hdC1mb2N1cy1pbmRpY2F0b3I6OmJlZm9yZSxcbiAgPiAubWF0LXRhYi1oZWFkZXIgLm1hdC1mb2N1cy1pbmRpY2F0b3I6OmJlZm9yZSB7XG4gICAgYm9yZGVyLWNvbG9yOiBtYXQtY29sb3IoJGJhY2tncm91bmQtY29sb3IsIGRlZmF1bHQtY29udHJhc3QpO1xuICB9XG5cbiAgPiAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uIHtcbiAgICBib3JkZXItY29sb3I6IG1hdC1jb2xvcigkYmFja2dyb3VuZC1jb2xvciwgZGVmYXVsdC1jb250cmFzdCwgMC40KTtcbiAgfVxuXG4gIC8vIFNldCByaXBwbGVzIGNvbG9yIHRvIGJlIHRoZSBjb250cmFzdCBjb2xvciBvZiB0aGUgbmV3IGJhY2tncm91bmQuIE90aGVyd2lzZSB0aGUgcmlwcGxlXG4gIC8vIGNvbG9yIHdpbGwgYmUgYmFzZWQgb24gdGhlIGFwcCBiYWNrZ3JvdW5kIGNvbG9yLlxuICA+IC5tYXQtdGFiLWhlYWRlciAubWF0LXJpcHBsZS1lbGVtZW50LFxuICA+IC5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtcmlwcGxlLWVsZW1lbnQge1xuICAgIGJhY2tncm91bmQtY29sb3I6IG1hdC1jb2xvcigkYmFja2dyb3VuZC1jb2xvciwgZGVmYXVsdC1jb250cmFzdCwgMC4xMik7XG4gIH1cbn1cblxuQG1peGluIG1hdC10YWJzLXR5cG9ncmFwaHkoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiBtYXQtZ2V0LXR5cG9ncmFwaHktY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAubWF0LXRhYi1ncm91cCB7XG4gICAgZm9udC1mYW1pbHk6IG1hdC1mb250LWZhbWlseSgkY29uZmlnKTtcbiAgfVxuXG4gIC5tYXQtdGFiLWxhYmVsLCAubWF0LXRhYi1saW5rIHtcbiAgICBmb250OiB7XG4gICAgICBmYW1pbHk6IG1hdC1mb250LWZhbWlseSgkY29uZmlnLCBidXR0b24pO1xuICAgICAgc2l6ZTogbWF0LWZvbnQtc2l6ZSgkY29uZmlnLCBidXR0b24pO1xuICAgICAgd2VpZ2h0OiBtYXQtZm9udC13ZWlnaHQoJGNvbmZpZywgYnV0dG9uKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIF9tYXQtdGFicy1kZW5zaXR5KCRjb25maWctb3ItdGhlbWUpIHt9XG5cbkBtaXhpbiBtYXQtdGFicy10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKSB7XG4gICR0aGVtZTogbWF0LXByaXZhdGUtbGVnYWN5LWdldC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgQGluY2x1ZGUgbWF0LXByaXZhdGUtY2hlY2stZHVwbGljYXRlLXRoZW1lLXN0eWxlcygkdGhlbWUsICdtYXQtdGFicycpIHtcbiAgICAkY29sb3I6IG1hdC1nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgJGRlbnNpdHk6IG1hdC1nZXQtZGVuc2l0eS1jb25maWcoJHRoZW1lKTtcbiAgICAkdHlwb2dyYXBoeTogbWF0LWdldC10eXBvZ3JhcGh5LWNvbmZpZygkdGhlbWUpO1xuXG4gICAgQGlmICRjb2xvciAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIG1hdC10YWJzLWNvbG9yKCRjb2xvcik7XG4gICAgfVxuICAgIEBpZiAkZGVuc2l0eSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIF9tYXQtdGFicy1kZW5zaXR5KCRkZW5zaXR5KTtcbiAgICB9XG4gICAgQGlmICR0eXBvZ3JhcGh5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgbWF0LXRhYnMtdHlwb2dyYXBoeSgkdHlwb2dyYXBoeSk7XG4gICAgfVxuICB9XG59XG5cblxuXG5cblxuXG4vLyBNaW5pbXVtIGhlaWdodCBmb3IgdG9vbGJhcidzIGluIHRoZSBoaWdoZXN0IGRlbnNpdHkgaXMgZGlmZmljdWx0IHRvIGRldGVybWluZSBiZWNhdXNlXG4vLyBkZXZlbG9wZXJzIGNhbiBwcm9qZWN0IGFyYml0cmFyeSBjb250ZW50LiBXZSB1c2UgYSBtaW5pbXVtIHZhbHVlIHRoYXQgZW5zdXJlcyB0aGF0IG1vc3Rcbi8vIGNvbW1vbiBjb250ZW50IChlLmcuIGljb24gYnV0dG9ucykgZG9lcyBub3QgZXhjZWVkIHRoZSByb3cgYm91bmRhcmllcyBpbiBoaWdoZXN0IGRlbnNpdHkuXG4kbWF0LXRvb2xiYXItbWluaW11bS1oZWlnaHQ6IDQ0cHggIWRlZmF1bHQ7XG5cbiRtYXQtdG9vbGJhci1oZWlnaHQtZGVza3RvcDogNjRweCAhZGVmYXVsdDtcbiRtYXQtdG9vbGJhci1tYXhpbXVtLWhlaWdodC1kZXNrdG9wOiAkbWF0LXRvb2xiYXItaGVpZ2h0LWRlc2t0b3AgIWRlZmF1bHQ7XG4kbWF0LXRvb2xiYXItbWluaW11bS1oZWlnaHQtZGVza3RvcDogJG1hdC10b29sYmFyLW1pbmltdW0taGVpZ2h0ICFkZWZhdWx0O1xuXG4kbWF0LXRvb2xiYXItaGVpZ2h0LW1vYmlsZTogNTZweCAhZGVmYXVsdDtcbiRtYXQtdG9vbGJhci1tYXhpbXVtLWhlaWdodC1tb2JpbGU6ICRtYXQtdG9vbGJhci1oZWlnaHQtbW9iaWxlICFkZWZhdWx0O1xuJG1hdC10b29sYmFyLW1pbmltdW0taGVpZ2h0LW1vYmlsZTogJG1hdC10b29sYmFyLW1pbmltdW0taGVpZ2h0ICFkZWZhdWx0O1xuXG4kbWF0LXRvb2xiYXItZGVza3RvcC1kZW5zaXR5LWNvbmZpZzogKFxuICBoZWlnaHQ6IChcbiAgICBkZWZhdWx0OiAkbWF0LXRvb2xiYXItaGVpZ2h0LWRlc2t0b3AsXG4gICAgbWF4aW11bTogJG1hdC10b29sYmFyLW1heGltdW0taGVpZ2h0LWRlc2t0b3AsXG4gICAgbWluaW11bTogJG1hdC10b29sYmFyLW1pbmltdW0taGVpZ2h0LWRlc2t0b3AsXG4gIClcbikgIWRlZmF1bHQ7XG5cbiRtYXQtdG9vbGJhci1tb2JpbGUtZGVuc2l0eS1jb25maWc6IChcbiAgaGVpZ2h0OiAoXG4gICAgZGVmYXVsdDogJG1hdC10b29sYmFyLWhlaWdodC1tb2JpbGUsXG4gICAgbWF4aW11bTogJG1hdC10b29sYmFyLW1heGltdW0taGVpZ2h0LW1vYmlsZSxcbiAgICBtaW5pbXVtOiAkbWF0LXRvb2xiYXItbWluaW11bS1oZWlnaHQtbW9iaWxlLFxuICApXG4pICFkZWZhdWx0O1xuXG5cbkBtaXhpbiBfbWF0LXRvb2xiYXItaGVpZ2h0KCRoZWlnaHQpIHtcbiAgLm1hdC10b29sYmFyLW11bHRpcGxlLXJvd3Mge1xuICAgIG1pbi1oZWlnaHQ6ICRoZWlnaHQ7XG4gIH1cbiAgLm1hdC10b29sYmFyLXJvdywgLm1hdC10b29sYmFyLXNpbmdsZS1yb3cge1xuICAgIGhlaWdodDogJGhlaWdodDtcbiAgfVxufVxuXG5AbWl4aW4gX21hdC10b29sYmFyLWNvbG9yKCRwYWxldHRlKSB7XG4gIGJhY2tncm91bmQ6IG1hdC1jb2xvcigkcGFsZXR0ZSk7XG4gIGNvbG9yOiBtYXQtY29sb3IoJHBhbGV0dGUsIGRlZmF1bHQtY29udHJhc3QpO1xufVxuXG5AbWl4aW4gX21hdC10b29sYmFyLWZvcm0tZmllbGQtb3ZlcnJpZGVzIHtcbiAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZSxcbiAgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZSxcbiAgLm1hdC1mb2N1c2VkIC5tYXQtZm9ybS1maWVsZC1yaXBwbGUge1xuICAgIGJhY2tncm91bmQtY29sb3I6IGN1cnJlbnRDb2xvcjtcbiAgfVxuXG4gIC5tYXQtZm9ybS1maWVsZC1sYWJlbCxcbiAgLm1hdC1mb2N1c2VkIC5tYXQtZm9ybS1maWVsZC1sYWJlbCxcbiAgLm1hdC1zZWxlY3QtdmFsdWUsXG4gIC5tYXQtc2VsZWN0LWFycm93LFxuICAubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWQgLm1hdC1zZWxlY3QtYXJyb3cge1xuICAgIGNvbG9yOiBpbmhlcml0O1xuICB9XG5cbiAgLm1hdC1pbnB1dC1lbGVtZW50IHtcbiAgICBjYXJldC1jb2xvcjogY3VycmVudENvbG9yO1xuICB9XG59XG5cbkBtaXhpbiBtYXQtdG9vbGJhci1jb2xvcigkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IG1hdC1nZXQtY29sb3ItY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAkcHJpbWFyeTogbWFwLWdldCgkY29uZmlnLCBwcmltYXJ5KTtcbiAgJGFjY2VudDogbWFwLWdldCgkY29uZmlnLCBhY2NlbnQpO1xuICAkd2FybjogbWFwLWdldCgkY29uZmlnLCB3YXJuKTtcbiAgJGJhY2tncm91bmQ6IG1hcC1nZXQoJGNvbmZpZywgYmFja2dyb3VuZCk7XG4gICRmb3JlZ3JvdW5kOiBtYXAtZ2V0KCRjb25maWcsIGZvcmVncm91bmQpO1xuXG4gIC5tYXQtdG9vbGJhciB7XG4gICAgYmFja2dyb3VuZDogbWF0LWNvbG9yKCRiYWNrZ3JvdW5kLCBhcHAtYmFyKTtcbiAgICBjb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCB0ZXh0KTtcblxuICAgICYubWF0LXByaW1hcnkge1xuICAgICAgQGluY2x1ZGUgX21hdC10b29sYmFyLWNvbG9yKCRwcmltYXJ5KTtcbiAgICB9XG5cbiAgICAmLm1hdC1hY2NlbnQge1xuICAgICAgQGluY2x1ZGUgX21hdC10b29sYmFyLWNvbG9yKCRhY2NlbnQpO1xuICAgIH1cblxuICAgICYubWF0LXdhcm4ge1xuICAgICAgQGluY2x1ZGUgX21hdC10b29sYmFyLWNvbG9yKCR3YXJuKTtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBfbWF0LXRvb2xiYXItZm9ybS1maWVsZC1vdmVycmlkZXM7XG4gIH1cbn1cblxuQG1peGluIG1hdC10b29sYmFyLXR5cG9ncmFwaHkoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiBtYXQtZ2V0LXR5cG9ncmFwaHktY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAubWF0LXRvb2xiYXIsXG4gIC5tYXQtdG9vbGJhciBoMSxcbiAgLm1hdC10b29sYmFyIGgyLFxuICAubWF0LXRvb2xiYXIgaDMsXG4gIC5tYXQtdG9vbGJhciBoNCxcbiAgLm1hdC10b29sYmFyIGg1LFxuICAubWF0LXRvb2xiYXIgaDYge1xuICAgIEBpbmNsdWRlIG1hdC10eXBvZ3JhcGh5LWxldmVsLXRvLXN0eWxlcygkY29uZmlnLCB0aXRsZSk7XG4gICAgbWFyZ2luOiAwO1xuICB9XG59XG5cbkBtaXhpbiBtYXQtdG9vbGJhci1kZW5zaXR5KCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGRlbnNpdHktc2NhbGU6IG1hdC1nZXQtZGVuc2l0eS1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRoZWlnaHQtZGVza3RvcDogbWF0LXByaXZhdGUtZGVuc2l0eS1wcm9wLXZhbHVlKFxuICAgICAgJG1hdC10b29sYmFyLWRlc2t0b3AtZGVuc2l0eS1jb25maWcsICRkZW5zaXR5LXNjYWxlLCBoZWlnaHQpO1xuICAkaGVpZ2h0LW1vYmlsZTogbWF0LXByaXZhdGUtZGVuc2l0eS1wcm9wLXZhbHVlKFxuICAgICAgJG1hdC10b29sYmFyLW1vYmlsZS1kZW5zaXR5LWNvbmZpZywgJGRlbnNpdHktc2NhbGUsIGhlaWdodCk7XG5cbiAgQGluY2x1ZGUgbWF0LXByaXZhdGUtZGVuc2l0eS1sZWdhY3ktY29tcGF0aWJpbGl0eSgpIHtcbiAgICAvLyBTZXQgdGhlIGRlZmF1bHQgaGVpZ2h0IGZvciB0aGUgdG9vbGJhci5cbiAgICBAaW5jbHVkZSBfbWF0LXRvb2xiYXItaGVpZ2h0KCRoZWlnaHQtZGVza3RvcCk7XG5cbiAgICAvLyBBcyBwZXIgc3BlY3MsIHRvb2xiYXJzIHNob3VsZCBoYXZlIGEgZGlmZmVyZW50IGhlaWdodCBpbiBtb2JpbGUgZGV2aWNlcy4gVGhpcyBoYXMgYmVlblxuICAgIC8vIHNwZWNpZmllZCBpbiB0aGUgb2xkIGd1aWRlbGluZXMgYW5kIGlzIHN0aWxsIG9ic2VydmFibGUgaW4gdGhlIG5ldyBzcGVjaWZpY2F0aW9ucyBieVxuICAgIC8vIGxvb2tpbmcgYXQgdGhlIHNwZWMgaW1hZ2VzLiBTZWU6IGh0dHBzOi8vbWF0ZXJpYWwuaW8vZGVzaWduL2NvbXBvbmVudHMvYXBwLWJhcnMtdG9wLmh0bWwjYW5hdG9teVxuICAgIEBtZWRpYSAoJG1hdC14c21hbGwpIHtcbiAgICAgIEBpbmNsdWRlIF9tYXQtdG9vbGJhci1oZWlnaHQoJGhlaWdodC1tb2JpbGUpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gbWF0LXRvb2xiYXItdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZykge1xuICAkdGhlbWU6IG1hdC1wcml2YXRlLWxlZ2FjeS1nZXQtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZyk7XG4gIEBpbmNsdWRlIG1hdC1wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LXRvb2xiYXInKSB7XG4gICAgJGNvbG9yOiBtYXQtZ2V0LWNvbG9yLWNvbmZpZygkdGhlbWUpO1xuICAgICRkZW5zaXR5OiBtYXQtZ2V0LWRlbnNpdHktY29uZmlnKCR0aGVtZSk7XG4gICAgJHR5cG9ncmFwaHk6IG1hdC1nZXQtdHlwb2dyYXBoeS1jb25maWcoJHRoZW1lKTtcblxuICAgIEBpZiAkY29sb3IgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBtYXQtdG9vbGJhci1jb2xvcigkY29sb3IpO1xuICAgIH1cbiAgICBAaWYgJGRlbnNpdHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBtYXQtdG9vbGJhci1kZW5zaXR5KCRkZW5zaXR5KTtcbiAgICB9XG4gICAgQGlmICR0eXBvZ3JhcGh5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgbWF0LXRvb2xiYXItdHlwb2dyYXBoeSgkdHlwb2dyYXBoeSk7XG4gICAgfVxuICB9XG59XG5cblxuXG5cblxuJG1hdC10b29sdGlwLXRhcmdldC1oZWlnaHQ6IDIycHg7XG4kbWF0LXRvb2x0aXAtZm9udC1zaXplOiAxMHB4O1xuJG1hdC10b29sdGlwLXZlcnRpY2FsLXBhZGRpbmc6ICgkbWF0LXRvb2x0aXAtdGFyZ2V0LWhlaWdodCAtICRtYXQtdG9vbHRpcC1mb250LXNpemUpIC8gMjtcblxuJG1hdC10b29sdGlwLWhhbmRzZXQtdGFyZ2V0LWhlaWdodDogMzBweDtcbiRtYXQtdG9vbHRpcC1oYW5kc2V0LWZvbnQtc2l6ZTogMTRweDtcbiRtYXQtdG9vbHRpcC1oYW5kc2V0LXZlcnRpY2FsLXBhZGRpbmc6XG4gICAgKCRtYXQtdG9vbHRpcC1oYW5kc2V0LXRhcmdldC1oZWlnaHQgLSAkbWF0LXRvb2x0aXAtaGFuZHNldC1mb250LXNpemUpIC8gMjtcblxuQG1peGluIG1hdC10b29sdGlwLWNvbG9yKCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogbWF0LWdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRiYWNrZ3JvdW5kOiBtYXAtZ2V0KCRjb25maWcsIGJhY2tncm91bmQpO1xuXG4gIC5tYXQtdG9vbHRpcCB7XG4gICAgYmFja2dyb3VuZDogbWF0LWNvbG9yKCRiYWNrZ3JvdW5kLCB0b29sdGlwLCAwLjkpO1xuICB9XG59XG5cbkBtaXhpbiBtYXQtdG9vbHRpcC10eXBvZ3JhcGh5KCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogbWF0LWdldC10eXBvZ3JhcGh5LWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgLm1hdC10b29sdGlwIHtcbiAgICBmb250LWZhbWlseTogbWF0LWZvbnQtZmFtaWx5KCRjb25maWcpO1xuICAgIGZvbnQtc2l6ZTogJG1hdC10b29sdGlwLWZvbnQtc2l6ZTtcbiAgICBwYWRkaW5nLXRvcDogJG1hdC10b29sdGlwLXZlcnRpY2FsLXBhZGRpbmc7XG4gICAgcGFkZGluZy1ib3R0b206ICRtYXQtdG9vbHRpcC12ZXJ0aWNhbC1wYWRkaW5nO1xuICB9XG5cbiAgLm1hdC10b29sdGlwLWhhbmRzZXQge1xuICAgIGZvbnQtc2l6ZTogJG1hdC10b29sdGlwLWhhbmRzZXQtZm9udC1zaXplO1xuICAgIHBhZGRpbmctdG9wOiAkbWF0LXRvb2x0aXAtaGFuZHNldC12ZXJ0aWNhbC1wYWRkaW5nO1xuICAgIHBhZGRpbmctYm90dG9tOiAkbWF0LXRvb2x0aXAtaGFuZHNldC12ZXJ0aWNhbC1wYWRkaW5nO1xuICB9XG59XG5cbkBtaXhpbiBfbWF0LXRvb2x0aXAtZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gbWF0LXRvb2x0aXAtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZykge1xuICAkdGhlbWU6IG1hdC1wcml2YXRlLWxlZ2FjeS1nZXQtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZyk7XG4gIEBpbmNsdWRlIG1hdC1wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LXRvb2x0aXAnKSB7XG4gICAgJGNvbG9yOiBtYXQtZ2V0LWNvbG9yLWNvbmZpZygkdGhlbWUpO1xuICAgICRkZW5zaXR5OiBtYXQtZ2V0LWRlbnNpdHktY29uZmlnKCR0aGVtZSk7XG4gICAgJHR5cG9ncmFwaHk6IG1hdC1nZXQtdHlwb2dyYXBoeS1jb25maWcoJHRoZW1lKTtcblxuICAgIEBpZiAkY29sb3IgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBtYXQtdG9vbHRpcC1jb2xvcigkY29sb3IpO1xuICAgIH1cbiAgICBAaWYgJGRlbnNpdHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBfbWF0LXRvb2x0aXAtZGVuc2l0eSgkZGVuc2l0eSk7XG4gICAgfVxuICAgIEBpZiAkdHlwb2dyYXBoeSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIG1hdC10b29sdGlwLXR5cG9ncmFwaHkoJHR5cG9ncmFwaHkpO1xuICAgIH1cbiAgfVxufVxuXG5cblxuXG5cblxuXG5AbWl4aW4gbWF0LXNuYWNrLWJhci1jb2xvcigkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IG1hdC1nZXQtY29sb3ItY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAkaXMtZGFyay10aGVtZTogbWFwLWdldCgkY29uZmlnLCBpcy1kYXJrKTtcbiAgJGFjY2VudDogbWFwLWdldCgkY29uZmlnLCBhY2NlbnQpO1xuXG4gIC5tYXQtc25hY2stYmFyLWNvbnRhaW5lciB7XG4gICAgLy8gVXNlIHRoZSBwcmltYXJ5IHRleHQgb24gdGhlIGRhcmsgdGhlbWUsIGV2ZW4gdGhvdWdoIHRoZSBsaWdodGVyIG9uZSB1c2VzXG4gICAgLy8gYSBzZWNvbmRhcnksIGJlY2F1c2UgdGhlIGNvbnRyYXN0IG9uIHRoZSBsaWdodCBwcmltYXJ5IHRleHQgaXMgcG9vci5cbiAgICBjb2xvcjogaWYoJGlzLWRhcmstdGhlbWUsICRkYXJrLXByaW1hcnktdGV4dCwgJGxpZ2h0LXNlY29uZGFyeS10ZXh0KTtcbiAgICBiYWNrZ3JvdW5kOiBpZigkaXMtZGFyay10aGVtZSwgbWFwLWdldCgkbWF0LWdyZXksIDUwKSwgIzMyMzIzMik7XG5cbiAgICBAaW5jbHVkZSBtYXQtcHJpdmF0ZS10aGVtZS1lbGV2YXRpb24oNiwgJGNvbmZpZyk7XG4gIH1cblxuICAubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb24ge1xuICAgIGNvbG9yOiBpZigkaXMtZGFyay10aGVtZSwgaW5oZXJpdCwgbWF0LWNvbG9yKCRhY2NlbnQsIHRleHQpKTtcbiAgfVxufVxuXG5AbWl4aW4gbWF0LXNuYWNrLWJhci10eXBvZ3JhcGh5KCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogbWF0LWdldC10eXBvZ3JhcGh5LWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgLm1hdC1zaW1wbGUtc25hY2tiYXIge1xuICAgIGZvbnQ6IHtcbiAgICAgIGZhbWlseTogbWF0LWZvbnQtZmFtaWx5KCRjb25maWcsIGJvZHktMSk7XG4gICAgICBzaXplOiBtYXQtZm9udC1zaXplKCRjb25maWcsIGJvZHktMSk7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uIHtcbiAgICBsaW5lLWhlaWdodDogMTtcbiAgICBmb250OiB7XG4gICAgICBmYW1pbHk6IGluaGVyaXQ7XG4gICAgICBzaXplOiBpbmhlcml0O1xuICAgICAgd2VpZ2h0OiBtYXQtZm9udC13ZWlnaHQoJGNvbmZpZywgYnV0dG9uKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIF9tYXQtc25hY2stYmFyLWRlbnNpdHkoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIG1hdC1zbmFjay1iYXItdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZykge1xuICAkdGhlbWU6IG1hdC1wcml2YXRlLWxlZ2FjeS1nZXQtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZyk7XG4gIEBpbmNsdWRlIG1hdC1wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LXNuYWNrLWJhcicpIHtcbiAgICAkY29sb3I6IG1hdC1nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgJGRlbnNpdHk6IG1hdC1nZXQtZGVuc2l0eS1jb25maWcoJHRoZW1lKTtcbiAgICAkdHlwb2dyYXBoeTogbWF0LWdldC10eXBvZ3JhcGh5LWNvbmZpZygkdGhlbWUpO1xuXG4gICAgQGlmICRjb2xvciAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIG1hdC1zbmFjay1iYXItY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gICAgQGlmICRkZW5zaXR5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgX21hdC1zbmFjay1iYXItZGVuc2l0eSgkZGVuc2l0eSk7XG4gICAgfVxuICAgIEBpZiAkdHlwb2dyYXBoeSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIG1hdC1zbmFjay1iYXItdHlwb2dyYXBoeSgkdHlwb2dyYXBoeSk7XG4gICAgfVxuICB9XG59XG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuLy8gVGhlbWUgc3R5bGVzIHRoYXQgb25seSBhcHBseSB0byB0aGUgZmlsbCBhcHBlYXJhbmNlIG9mIHRoZSBmb3JtLWZpZWxkLlxuXG5AbWl4aW4gbWF0LWZvcm0tZmllbGQtZmlsbC1jb2xvcigkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IG1hdC1nZXQtY29sb3ItY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAkZm9yZWdyb3VuZDogbWFwLWdldCgkY29uZmlnLCBmb3JlZ3JvdW5kKTtcbiAgJGlzLWRhcmstdGhlbWU6IG1hcC1nZXQoJGNvbmZpZywgaXMtZGFyayk7XG5cbiAgJGZpbGwtYmFja2dyb3VuZDogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBiYXNlLCBpZigkaXMtZGFyay10aGVtZSwgMC4xLCAwLjA0KSk7XG4gICRmaWxsLWRpc2FibGVkLWJhY2tncm91bmQ6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgYmFzZSwgaWYoJGlzLWRhcmstdGhlbWUsIDAuMDUsIDAuMDIpKTtcbiAgJHVuZGVybGluZS1jb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBkaXZpZGVyLCBpZigkaXMtZGFyay10aGVtZSwgMC41LCAwLjQyKSk7XG4gICRsYWJlbC1kaXNhYmxlZC1jb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBkaXNhYmxlZC10ZXh0KTtcblxuICAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsIHtcbiAgICAubWF0LWZvcm0tZmllbGQtZmxleCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZmlsbC1iYWNrZ3JvdW5kO1xuICAgIH1cblxuICAgICYubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQgLm1hdC1mb3JtLWZpZWxkLWZsZXgge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGZpbGwtZGlzYWJsZWQtYmFja2dyb3VuZDtcbiAgICB9XG5cbiAgICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lOjpiZWZvcmUge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHVuZGVybGluZS1jb2xvcjtcbiAgICB9XG5cbiAgICAmLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkIHtcbiAgICAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbCB7XG4gICAgICAgIGNvbG9yOiAkbGFiZWwtZGlzYWJsZWQtY29sb3I7XG4gICAgICB9XG5cbiAgICAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmU6OmJlZm9yZSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLyBVc2VkIHRvIG1ha2UgaW5zdGFuY2VzIG9mIHRoZSBfbWF0LWZvcm0tZmllbGQtbGFiZWwtZmxvYXRpbmcgbWl4aW4gbmVnbGlnaWJseSBkaWZmZXJlbnQsXG4vLyBhbmQgcHJldmVudCBHb29nbGUncyBDU1MgT3B0aW1pemVyIGZyb20gY29sbGFwc2luZyB0aGUgZGVjbGFyYXRpb25zLiBUaGlzIGlzIG5lZWRlZCBiZWNhdXNlIHNvbWVcbi8vIG9mIHRoZSBzZWxlY3RvcnMgY29udGFpbiBwc2V1ZG8tY2xhc3NlcyBub3QgcmVjb2duaXplZCBpbiBhbGwgYnJvd3NlcnMuIElmIGEgYnJvd3NlciBlbmNvdW50ZXJzXG4vLyBhbiB1bmtub3duIHBzZXVkby1jbGFzcyBpdCB3aWxsIGRpc2NhcmQgdGhlIGVudGlyZSBydWxlIHNldC5cbiRtYXQtZm9ybS1maWVsZC1maWxsLWRlZHVwZTogMDtcblxuLy8gQXBwbGllcyBhIGZsb2F0aW5nIGxhYmVsIGFib3ZlIHRoZSBmb3JtIGZpZWxkIGNvbnRyb2wgaXRzZWxmLlxuQG1peGluIF9tYXQtZm9ybS1maWVsZC1maWxsLWxhYmVsLWZsb2F0aW5nKCRmb250LXNjYWxlLCAkaW5maXgtcGFkZGluZywgJGluZml4LW1hcmdpbi10b3ApIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0kaW5maXgtbWFyZ2luLXRvcCAtICRpbmZpeC1wYWRkaW5nICsgJG1hdC1mb3JtLWZpZWxkLWZpbGwtZGVkdXBlKVxuICAgICAgICAgICAgIHNjYWxlKCRmb250LXNjYWxlKTtcbiAgd2lkdGg6IDEwMCUgLyAkZm9udC1zY2FsZSArICRtYXQtZm9ybS1maWVsZC1maWxsLWRlZHVwZTtcblxuICAkbWF0LWZvcm0tZmllbGQtZmlsbC1kZWR1cGU6ICRtYXQtZm9ybS1maWVsZC1maWxsLWRlZHVwZSArIDAuMDAwMDEgIWdsb2JhbDtcbn1cblxuQG1peGluIG1hdC1mb3JtLWZpZWxkLWZpbGwtdHlwb2dyYXBoeSgkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IG1hdC1nZXQtdHlwb2dyYXBoeS1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gIC8vIFRoZSB1bml0LWxlc3MgbGluZS1oZWlnaHQgZnJvbSB0aGUgZm9udCBjb25maWcuXG4gICRsaW5lLWhlaWdodDogbWF0LWxpbmUtaGVpZ2h0KCRjb25maWcsIGlucHV0KTtcbiAgLy8gVGhlIGFtb3VudCB0byBzY2FsZSB0aGUgZm9udCBmb3IgdGhlIGZsb2F0aW5nIGxhYmVsIGFuZCBzdWJzY3JpcHQuXG4gICRzdWJzY3JpcHQtZm9udC1zY2FsZTogMC43NTtcbiAgLy8gVGhlIHBhZGRpbmcgb24gdG9wIG9mIHRoZSBpbmZpeC5cbiAgJGluZml4LXBhZGRpbmctdG9wOiAwLjI1ZW07XG4gIC8vIFRoZSBwYWRkaW5nIGJlbG93IHRoZSBpbmZpeC5cbiAgJGluZml4LXBhZGRpbmctYm90dG9tOiAwLjc1ZW07XG4gIC8vIFRoZSBtYXJnaW4gYXBwbGllZCB0byB0aGUgZm9ybS1maWVsZC1pbmZpeCB0byByZXNlcnZlIHNwYWNlIGZvciB0aGUgZmxvYXRpbmcgbGFiZWwuXG4gICRpbmZpeC1tYXJnaW4tdG9wOiAxZW0gKiAkbGluZS1oZWlnaHQgKiAkc3Vic2NyaXB0LWZvbnQtc2NhbGU7XG4gIC8vIFRoZSBhbW91bnQgd2Ugb2Zmc2V0IHRoZSBsYWJlbCBmcm9tIHRoZSBpbnB1dCB0ZXh0IGluIHRoZSBmaWxsIGFwcGVhcmFuY2UuXG4gICRmaWxsLWFwcGVhcmFuY2UtbGFiZWwtb2Zmc2V0OiAtMC41ZW07XG5cbiAgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbCB7XG4gICAgLm1hdC1mb3JtLWZpZWxkLWluZml4IHtcbiAgICAgIHBhZGRpbmc6ICRpbmZpeC1wYWRkaW5nLXRvcCAwICRpbmZpeC1wYWRkaW5nLWJvdHRvbSAwO1xuICAgIH1cblxuICAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbCB7XG4gICAgICB0b3A6ICRpbmZpeC1tYXJnaW4tdG9wICsgJGluZml4LXBhZGRpbmctdG9wO1xuICAgICAgbWFyZ2luLXRvcDogJGZpbGwtYXBwZWFyYW5jZS1sYWJlbC1vZmZzZXQ7XG4gICAgfVxuXG4gICAgJi5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQge1xuICAgICAgJi5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXQgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLFxuICAgICAgLm1hdC1pbnB1dC1zZXJ2ZXI6Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWwge1xuICAgICAgICBAaW5jbHVkZSBfbWF0LWZvcm0tZmllbGQtZmlsbC1sYWJlbC1mbG9hdGluZyhcbiAgICAgICAgICAgICAgICAkc3Vic2NyaXB0LWZvbnQtc2NhbGUsICRpbmZpeC1wYWRkaW5nLXRvcCArICRmaWxsLWFwcGVhcmFuY2UtbGFiZWwtb2Zmc2V0LFxuICAgICAgICAgICAgICAgICRpbmZpeC1tYXJnaW4tdG9wKTtcbiAgICAgIH1cblxuICAgICAgLy8gU2VydmVyLXNpZGUgcmVuZGVyZWQgbWF0SW5wdXQgd2l0aCBhIGxhYmVsIGF0dHJpYnV0ZSBidXQgbGFiZWwgbm90IHNob3duXG4gICAgICAvLyAodXNlZCBhcyBhIHB1cmUgQ1NTIHN0YW5kLWluIGZvciBtYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXQpLlxuICAgICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJcbiAgICAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbCB7XG4gICAgICAgIEBpbmNsdWRlIF9tYXQtZm9ybS1maWVsZC1maWxsLWxhYmVsLWZsb2F0aW5nKFxuICAgICAgICAgICAgICAgICRzdWJzY3JpcHQtZm9udC1zY2FsZSwgJGluZml4LXBhZGRpbmctdG9wICsgJGZpbGwtYXBwZWFyYW5jZS1sYWJlbC1vZmZzZXQsXG4gICAgICAgICAgICAgICAgJGluZml4LW1hcmdpbi10b3ApO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gbWF0LXByaXZhdGUtZm9ybS1maWVsZC1maWxsLWRlbnNpdHkoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIG1hdC1mb3JtLWZpZWxkLWZpbGwtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZykge1xuICAkdGhlbWU6IG1hdC1wcml2YXRlLWxlZ2FjeS1nZXQtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZyk7XG4gIEBpbmNsdWRlIG1hdC1wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LWZvcm0tZmllbGQtZmlsbCcpIHtcbiAgICAkY29sb3I6IG1hdC1nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgJGRlbnNpdHk6IG1hdC1nZXQtZGVuc2l0eS1jb25maWcoJHRoZW1lKTtcbiAgICAkdHlwb2dyYXBoeTogbWF0LWdldC10eXBvZ3JhcGh5LWNvbmZpZygkdGhlbWUpO1xuXG4gICAgQGlmICRjb2xvciAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIG1hdC1mb3JtLWZpZWxkLWZpbGwtY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gICAgQGlmICRkZW5zaXR5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgbWF0LXByaXZhdGUtZm9ybS1maWVsZC1maWxsLWRlbnNpdHkoJGRlbnNpdHkpO1xuICAgIH1cbiAgICBAaWYgJHR5cG9ncmFwaHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBtYXQtZm9ybS1maWVsZC1maWxsLXR5cG9ncmFwaHkoJHR5cG9ncmFwaHkpO1xuICAgIH1cbiAgfVxufVxuXG5cblxuXG5cblxuXG4vLyBUaGVtZSBzdHlsZXMgdGhhdCBvbmx5IGFwcGx5IHRvIHRoZSBsZWdhY3kgYXBwZWFyYW5jZSBvZiB0aGUgZm9ybS1maWVsZC5cblxuQG1peGluIG1hdC1mb3JtLWZpZWxkLWxlZ2FjeS1jb2xvcigkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IG1hdC1nZXQtY29sb3ItY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAkZm9yZWdyb3VuZDogbWFwLWdldCgkY29uZmlnLCBmb3JlZ3JvdW5kKTtcbiAgJGlzLWRhcmstdGhlbWU6IG1hcC1nZXQoJGNvbmZpZywgaXMtZGFyayk7XG5cbiAgJGxhYmVsLWNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIHNlY29uZGFyeS10ZXh0KTtcbiAgJHVuZGVybGluZS1jb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBkaXZpZGVyLCBpZigkaXMtZGFyay10aGVtZSwgMC43LCAwLjQyKSk7XG5cbiAgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5IHtcbiAgICAubWF0LWZvcm0tZmllbGQtbGFiZWwge1xuICAgICAgY29sb3I6ICRsYWJlbC1jb2xvcjtcbiAgICB9XG5cbiAgICAubWF0LWhpbnQge1xuICAgICAgY29sb3I6ICRsYWJlbC1jb2xvcjtcbiAgICB9XG5cbiAgICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICR1bmRlcmxpbmUtY29sb3I7XG4gICAgfVxuXG4gICAgJi5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZCAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lIHtcbiAgICAgIEBpbmNsdWRlIG1hdC1wcml2YXRlLWNvbnRyb2wtZGlzYWJsZWQtdW5kZXJsaW5lKCR1bmRlcmxpbmUtY29sb3IpO1xuICAgIH1cbiAgfVxufVxuXG4vLyBVc2VkIHRvIG1ha2UgaW5zdGFuY2VzIG9mIHRoZSBfbWF0LWZvcm0tZmllbGQtbGFiZWwtZmxvYXRpbmcgbWl4aW4gbmVnbGlnaWJseSBkaWZmZXJlbnQsXG4vLyBhbmQgcHJldmVudCBHb29nbGUncyBDU1MgT3B0aW1pemVyIGZyb20gY29sbGFwc2luZyB0aGUgZGVjbGFyYXRpb25zLiBUaGlzIGlzIG5lZWRlZCBiZWNhdXNlIHNvbWVcbi8vIG9mIHRoZSBzZWxlY3RvcnMgY29udGFpbiBwc2V1ZG8tY2xhc3NlcyBub3QgcmVjb2duaXplZCBpbiBhbGwgYnJvd3NlcnMuIElmIGEgYnJvd3NlciBlbmNvdW50ZXJzXG4vLyBhbiB1bmtub3duIHBzZXVkby1jbGFzcyBpdCB3aWxsIGRpc2NhcmQgdGhlIGVudGlyZSBydWxlIHNldC5cbiRtYXQtZm9ybS1maWVsZC1sZWdhY3ktZGVkdXBlOiAwO1xuXG4vLyBBcHBsaWVzIGEgZmxvYXRpbmcgbGFiZWwgYWJvdmUgdGhlIGZvcm0gZmllbGQgY29udHJvbCBpdHNlbGYuXG5AbWl4aW4gX21hdC1mb3JtLWZpZWxkLWxlZ2FjeS1sYWJlbC1mbG9hdGluZygkZm9udC1zY2FsZSwgJGluZml4LXBhZGRpbmcsICRpbmZpeC1tYXJnaW4tdG9wKSB7XG4gIC8vIFdlIHVzZSBwZXJzcGVjdGl2ZSB0byBmaXggdGhlIHRleHQgYmx1cnJpbmVzcyBhcyBkZXNjcmliZWQgaGVyZTpcbiAgLy8gaHR0cDovL3d3dy51c2VyYWdlbnRtYW4uY29tL2Jsb2cvMjAxNC8wNS8wNC9maXhpbmctdHlwb2dyYXBoeS1pbnNpZGUtb2YtMi1kLWNzcy10cmFuc2Zvcm1zL1xuICAvLyBUaGlzIHJlc3VsdHMgaW4gYSBzbWFsbCBqaXR0ZXIgYWZ0ZXIgdGhlIGxhYmVsIGZsb2F0cyBvbiBGaXJlZm94LCB3aGljaCB0aGVcbiAgLy8gdHJhbnNsYXRlWiBmaXhlcy5cbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0kaW5maXgtbWFyZ2luLXRvcCAtICRpbmZpeC1wYWRkaW5nKSBzY2FsZSgkZm9udC1zY2FsZSkgcGVyc3BlY3RpdmUoMTAwcHgpXG4gIHRyYW5zbGF0ZVooMC4wMDFweCArICRtYXQtZm9ybS1maWVsZC1sZWdhY3ktZGVkdXBlKTtcbiAgLy8gVGhlIHRyaWNrcyBhYm92ZSB1c2VkIHRvIHNtb290aCBvdXQgdGhlIGFuaW1hdGlvbiBvbiBjaHJvbWUgYW5kIGZpcmVmb3ggYWN0dWFsbHkgbWFrZSB0aGluZ3NcbiAgLy8gd29yc2Ugb24gSUUsIHNvIHdlIGRvbid0IGluY2x1ZGUgdGhlbSBpbiB0aGUgSUUgdmVyc2lvbi5cbiAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtJGluZml4LW1hcmdpbi10b3AgLSAkaW5maXgtcGFkZGluZyArICRtYXQtZm9ybS1maWVsZC1sZWdhY3ktZGVkdXBlKVxuICAgICAgICAgICAgICAgICAgc2NhbGUoJGZvbnQtc2NhbGUpO1xuXG4gIHdpZHRoOiAxMDAlIC8gJGZvbnQtc2NhbGUgKyAkbWF0LWZvcm0tZmllbGQtbGVnYWN5LWRlZHVwZTtcblxuICAkbWF0LWZvcm0tZmllbGQtbGVnYWN5LWRlZHVwZTogJG1hdC1mb3JtLWZpZWxkLWxlZ2FjeS1kZWR1cGUgKyAwLjAwMDAxICFnbG9iYWw7XG59XG5cbi8vIFNhbWUgYXMgbWl4aW4gYWJvdmUsIGJ1dCBvbWl0cyB0aGUgdHJhbnNsYXRlWiBmb3IgcHJpbnRpbmcgcHVycG9zZXMuXG5AbWl4aW4gX21hdC1mb3JtLWZpZWxkLWxlZ2FjeS1sYWJlbC1mbG9hdGluZy1wcmludCgkZm9udC1zY2FsZSwgJGluZml4LXBhZGRpbmcsICRpbmZpeC1tYXJnaW4tdG9wKSB7XG4gIC8vIFRoaXMgcmVzdWx0cyBpbiBhIHNtYWxsIGppdHRlciBhZnRlciB0aGUgbGFiZWwgZmxvYXRzIG9uIEZpcmVmb3gsIHdoaWNoIHRoZVxuICAvLyB0cmFuc2xhdGVaIGZpeGVzLlxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLSRpbmZpeC1tYXJnaW4tdG9wIC0gJGluZml4LXBhZGRpbmcgKyAkbWF0LWZvcm0tZmllbGQtbGVnYWN5LWRlZHVwZSlcbiAgICAgICAgICAgICAgICAgIHNjYWxlKCRmb250LXNjYWxlKTtcbiAgLy8gVGhlIHRyaWNrcyBhYm92ZSB1c2VkIHRvIHNtb290aCBvdXQgdGhlIGFuaW1hdGlvbiBvbiBjaHJvbWUgYW5kIGZpcmVmb3ggYWN0dWFsbHkgbWFrZSB0aGluZ3NcbiAgLy8gd29yc2Ugb24gSUUsIHNvIHdlIGRvbid0IGluY2x1ZGUgdGhlbSBpbiB0aGUgSUUgdmVyc2lvbi5cbiAgJG1hdC1mb3JtLWZpZWxkLWxlZ2FjeS1kZWR1cGU6ICRtYXQtZm9ybS1maWVsZC1sZWdhY3ktZGVkdXBlICsgMC4wMDAwMSAhZ2xvYmFsO1xufVxuXG5AbWl4aW4gbWF0LWZvcm0tZmllbGQtbGVnYWN5LXR5cG9ncmFwaHkoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiBtYXQtZ2V0LXR5cG9ncmFwaHktY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAvLyBUaGUgdW5pdC1sZXNzIGxpbmUtaGVpZ2h0IGZyb20gdGhlIGZvbnQgY29uZmlnLlxuICAkbGluZS1oZWlnaHQ6IG1hdC1saW5lLWhlaWdodCgkY29uZmlnLCBpbnB1dCk7XG4gIC8vIFRoZSBhbW91bnQgdG8gc2NhbGUgdGhlIGZvbnQgZm9yIHRoZSBmbG9hdGluZyBsYWJlbCBhbmQgc3Vic2NyaXB0LlxuICAkc3Vic2NyaXB0LWZvbnQtc2NhbGU6IDAuNzU7XG4gIC8vIFRoZSBhbW91bnQgb2Ygc3BhY2UgYmV0d2VlbiB0aGUgdG9wIG9mIHRoZSBsaW5lIGFuZCB0aGUgdG9wIG9mIHRoZSBhY3R1YWwgdGV4dFxuICAvLyAoYXMgYSBmcmFjdGlvbiBvZiB0aGUgZm9udC1zaXplKS5cbiAgJGxpbmUtc3BhY2luZzogKCRsaW5lLWhlaWdodCAtIDEpIC8gMjtcbiAgLy8gVGhlIHBhZGRpbmcgb24gdGhlIGluZml4LiBNb2NrcyBzaG93IGhhbGYgb2YgdGhlIHRleHQgc2l6ZSwgYnV0IHNlZW0gdG8gbWVhc3VyZSBmcm9tIHRoZSBlZGdlXG4gIC8vIG9mIHRoZSB0ZXh0IGl0c2VsZiwgbm90IHRoZSBlZGdlIG9mIHRoZSBsaW5lOyB0aGVyZWZvcmUgd2Ugc3VidHJhY3Qgb2ZmIHRoZSBsaW5lIHNwYWNpbmcuXG4gICRpbmZpeC1wYWRkaW5nOiAwLjVlbSAtICRsaW5lLXNwYWNpbmc7XG4gIC8vIFRoZSBtYXJnaW4gYXBwbGllZCB0byB0aGUgZm9ybS1maWVsZC1pbmZpeCB0byByZXNlcnZlIHNwYWNlIGZvciB0aGUgZmxvYXRpbmcgbGFiZWwuXG4gICRpbmZpeC1tYXJnaW4tdG9wOiAxZW0gKiAkbGluZS1oZWlnaHQgKiAkc3Vic2NyaXB0LWZvbnQtc2NhbGU7XG4gIC8vIFRoZSBzcGFjZSBiZXR3ZWVuIHRoZSBib3R0b20gb2YgdGhlIC5tYXQtZm9ybS1maWVsZC1mbGV4IGFyZWEgYW5kIHRoZSBzdWJzY3JpcHQgd3JhcHBlci5cbiAgLy8gTW9ja3Mgc2hvdyBoYWxmIG9mIHRoZSB0ZXh0IHNpemUsIGJ1dCB0aGlzIG1hcmdpbiBpcyBhcHBsaWVkIHRvIGFuIGVsZW1lbnQgd2l0aCB0aGUgc3Vic2NyaXB0XG4gIC8vIHRleHQgZm9udCBzaXplLCBzbyB3ZSBuZWVkIHRvIGRpdmlkZSBieSB0aGUgc2NhbGUgZmFjdG9yIHRvIG1ha2UgaXQgaGFsZiBvZiB0aGUgb3JpZ2luYWwgdGV4dFxuICAvLyBzaXplLiBXZSBhZ2FpbiBuZWVkIHRvIHN1YnRyYWN0IG9mZiB0aGUgbGluZSBzcGFjaW5nIHNpbmNlIHRoZSBtb2NrcyBtZWFzdXJlIHRvIHRoZSBlZGdlIG9mIHRoZVxuICAvLyB0ZXh0LCBub3QgdGhlICBlZGdlIG9mIHRoZSBsaW5lLlxuICAkc3Vic2NyaXB0LW1hcmdpbi10b3A6IDAuNWVtIC8gJHN1YnNjcmlwdC1mb250LXNjYWxlIC0gKCRsaW5lLXNwYWNpbmcgKiAyKTtcbiAgLy8gVGhlIHBhZGRpbmcgYXBwbGllZCB0byB0aGUgZm9ybS1maWVsZC13cmFwcGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIHRoZSBzdWJzY3JpcHQsIHNpbmNlIGl0J3NcbiAgLy8gYWJzb2x1dGVseSBwb3NpdGlvbmVkLiBUaGlzIGlzIGEgY29tYmluYXRpb24gb2YgdGhlIHN1YnNjcmlwdCdzIG1hcmdpbiBhbmQgbGluZS1oZWlnaHQsIGJ1dCB3ZVxuICAvLyBuZWVkIHRvIG11bHRpcGx5IGJ5IHRoZSBzdWJzY3JpcHQgZm9udCBzY2FsZSBmYWN0b3Igc2luY2UgdGhlIHdyYXBwZXIgaGFzIGEgbGFyZ2VyIGZvbnQgc2l6ZS5cbiAgJHdyYXBwZXItcGFkZGluZy1ib3R0b206ICgkc3Vic2NyaXB0LW1hcmdpbi10b3AgKyAkbGluZS1oZWlnaHQpICogJHN1YnNjcmlwdC1mb250LXNjYWxlO1xuXG4gIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSB7XG4gICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXIge1xuICAgICAgcGFkZGluZy1ib3R0b206ICR3cmFwcGVyLXBhZGRpbmctYm90dG9tO1xuICAgIH1cblxuICAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeCB7XG4gICAgICBwYWRkaW5nOiAkaW5maXgtcGFkZGluZyAwO1xuICAgIH1cblxuICAgICYubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IHtcbiAgICAgICYubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0IC5tYXQtZm9ybS1maWVsZC1sYWJlbCxcbiAgICAgIC5tYXQtaW5wdXQtc2VydmVyOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVsIHtcbiAgICAgICAgQGluY2x1ZGUgX21hdC1mb3JtLWZpZWxkLWxlZ2FjeS1sYWJlbC1mbG9hdGluZyhcbiAgICAgICAgICAgICAgICAkc3Vic2NyaXB0LWZvbnQtc2NhbGUsICRpbmZpeC1wYWRkaW5nLCAkaW5maXgtbWFyZ2luLXRvcCk7XG4gICAgICB9XG5cbiAgICAgIC8vIEBicmVha2luZy1jaGFuZ2UgOC4wLjAgd2lsbCByZWx5IG9uIEF1dG9maWxsTW9uaXRvciBpbnN0ZWFkLlxuICAgICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2w6LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyXG4gICAgICAubWF0LWZvcm0tZmllbGQtbGFiZWwge1xuICAgICAgICBAaW5jbHVkZSBfbWF0LWZvcm0tZmllbGQtbGVnYWN5LWxhYmVsLWZsb2F0aW5nKFxuICAgICAgICAgICAgICAgICRzdWJzY3JpcHQtZm9udC1zY2FsZSwgJGluZml4LXBhZGRpbmcsICRpbmZpeC1tYXJnaW4tdG9wKTtcbiAgICAgIH1cblxuICAgICAgLy8gU2VydmVyLXNpZGUgcmVuZGVyZWQgbWF0SW5wdXQgd2l0aCBhIGxhYmVsIGF0dHJpYnV0ZSBidXQgbGFiZWwgbm90IHNob3duXG4gICAgICAvLyAodXNlZCBhcyBhIHB1cmUgQ1NTIHN0YW5kLWluIGZvciBtYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXQpLlxuICAgICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJcbiAgICAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbCB7XG4gICAgICAgIEBpbmNsdWRlIF9tYXQtZm9ybS1maWVsZC1sZWdhY3ktbGFiZWwtZmxvYXRpbmcoXG4gICAgICAgICAgICAgICAgJHN1YnNjcmlwdC1mb250LXNjYWxlLCAkaW5maXgtcGFkZGluZywgJGluZml4LW1hcmdpbi10b3ApO1xuICAgICAgfVxuICAgIH1cblxuICAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbCB7XG4gICAgICB0b3A6ICRpbmZpeC1tYXJnaW4tdG9wICsgJGluZml4LXBhZGRpbmc7XG4gICAgfVxuXG4gICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZSB7XG4gICAgICAvLyBXZSB3YW50IHRoZSB1bmRlcmxpbmUgdG8gc3RhcnQgYXQgdGhlIGVuZCBvZiB0aGUgY29udGVudCBib3gsIG5vdCB0aGUgcGFkZGluZyBib3gsXG4gICAgICAvLyBzbyB3ZSBtb3ZlIGl0IHVwIGJ5IHRoZSBwYWRkaW5nIGFtb3VudC5cbiAgICAgIGJvdHRvbTogJHdyYXBwZXItcGFkZGluZy1ib3R0b207XG4gICAgfVxuXG4gICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyIHtcbiAgICAgIG1hcmdpbi10b3A6ICRzdWJzY3JpcHQtbWFyZ2luLXRvcDtcblxuICAgICAgLy8gV2Ugd2FudCB0aGUgc3Vic2NyaXB0IHRvIHN0YXJ0IGF0IHRoZSBlbmQgb2YgdGhlIGNvbnRlbnQgYm94LCBub3QgdGhlIHBhZGRpbmcgYm94LFxuICAgICAgLy8gc28gd2UgbW92ZSBpdCB1cCBieSB0aGUgcGFkZGluZyBhbW91bnQgKGFkanVzdGVkIGZvciB0aGUgc21hbGxlciBmb250IHNpemUpO1xuICAgICAgdG9wOiBjYWxjKDEwMCUgLSAjeyR3cmFwcGVyLXBhZGRpbmctYm90dG9tIC8gJHN1YnNjcmlwdC1mb250LXNjYWxlfSk7XG4gICAgfVxuICB9XG5cbiAgLy8gdHJhbnNsYXRlWiBjYXVzZXMgdGhlIGxhYmVsIHRvIG5vdCBhcHBlYXIgd2hpbGUgcHJpbnRpbmcsIHNvIHdlIG92ZXJyaWRlIGl0IHRvIG5vdFxuICAvLyBhcHBseSB0cmFuc2xhdGVaIHdoaWxlIHByaW50aW5nXG4gIEBtZWRpYSBwcmludCB7XG4gICAgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5IHtcbiAgICAgICYubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IHtcbiAgICAgICAgJi5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXQgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLFxuICAgICAgICAubWF0LWlucHV0LXNlcnZlcjpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIC5tYXQtZm9ybS1maWVsZC1sYWJlbCB7XG4gICAgICAgICAgQGluY2x1ZGUgX21hdC1mb3JtLWZpZWxkLWxlZ2FjeS1sYWJlbC1mbG9hdGluZy1wcmludChcbiAgICAgICAgICAgICAgICAgICRzdWJzY3JpcHQtZm9udC1zY2FsZSwgJGluZml4LXBhZGRpbmcsICRpbmZpeC1tYXJnaW4tdG9wKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEBicmVha2luZy1jaGFuZ2UgOC4wLjAgd2lsbCByZWx5IG9uIEF1dG9maWxsTW9uaXRvciBpbnN0ZWFkLlxuICAgICAgICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbDotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJcbiAgICAgICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsIHtcbiAgICAgICAgICBAaW5jbHVkZSBfbWF0LWZvcm0tZmllbGQtbGVnYWN5LWxhYmVsLWZsb2F0aW5nLXByaW50KFxuICAgICAgICAgICAgICAgICAgJHN1YnNjcmlwdC1mb250LXNjYWxlLCAkaW5maXgtcGFkZGluZywgJGluZml4LW1hcmdpbi10b3ApO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gU2VydmVyLXNpZGUgcmVuZGVyZWQgbWF0SW5wdXQgd2l0aCBhIGxhYmVsIGF0dHJpYnV0ZSBidXQgbGFiZWwgbm90IHNob3duXG4gICAgICAgIC8vICh1c2VkIGFzIGEgcHVyZSBDU1Mgc3RhbmQtaW4gZm9yIG1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdCkuXG4gICAgICAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyXG4gICAgICAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbCB7XG4gICAgICAgICAgQGluY2x1ZGUgX21hdC1mb3JtLWZpZWxkLWxlZ2FjeS1sYWJlbC1mbG9hdGluZy1wcmludChcbiAgICAgICAgICAgICAgICAgICRzdWJzY3JpcHQtZm9udC1zY2FsZSwgJGluZml4LXBhZGRpbmcsICRpbmZpeC1tYXJnaW4tdG9wKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gbWF0LXByaXZhdGUtZm9ybS1maWVsZC1sZWdhY3ktZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gbWF0LWZvcm0tZmllbGQtbGVnYWN5LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiBtYXQtcHJpdmF0ZS1sZWdhY3ktZ2V0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICBAaW5jbHVkZSBtYXQtcHJpdmF0ZS1jaGVjay1kdXBsaWNhdGUtdGhlbWUtc3R5bGVzKCR0aGVtZSwgJ21hdC1mb3JtLWZpZWxkLWxlZ2FjeScpIHtcbiAgICAkY29sb3I6IG1hdC1nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgJGRlbnNpdHk6IG1hdC1nZXQtZGVuc2l0eS1jb25maWcoJHRoZW1lKTtcbiAgICAkdHlwb2dyYXBoeTogbWF0LWdldC10eXBvZ3JhcGh5LWNvbmZpZygkdGhlbWUpO1xuXG4gICAgQGlmICRjb2xvciAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIG1hdC1mb3JtLWZpZWxkLWxlZ2FjeS1jb2xvcigkY29sb3IpO1xuICAgIH1cbiAgICBAaWYgJGRlbnNpdHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBtYXQtcHJpdmF0ZS1mb3JtLWZpZWxkLWxlZ2FjeS1kZW5zaXR5KCRkZW5zaXR5KTtcbiAgICB9XG4gICAgQGlmICR0eXBvZ3JhcGh5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgbWF0LWZvcm0tZmllbGQtbGVnYWN5LXR5cG9ncmFwaHkoJHR5cG9ncmFwaHkpO1xuICAgIH1cbiAgfVxufVxuXG5cblxuXG5cblxuXG4vLyBUaGVtZSBzdHlsZXMgdGhhdCBvbmx5IGFwcGx5IHRvIHRoZSBvdXRsaW5lIGFwcGVhcmFuY2Ugb2YgdGhlIGZvcm0tZmllbGQuXG5cbkBtaXhpbiBtYXQtZm9ybS1maWVsZC1vdXRsaW5lLWNvbG9yKCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogbWF0LWdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRwcmltYXJ5OiBtYXAtZ2V0KCRjb25maWcsIHByaW1hcnkpO1xuICAkYWNjZW50OiBtYXAtZ2V0KCRjb25maWcsIGFjY2VudCk7XG4gICR3YXJuOiBtYXAtZ2V0KCRjb25maWcsIHdhcm4pO1xuICAkZm9yZWdyb3VuZDogbWFwLWdldCgkY29uZmlnLCBmb3JlZ3JvdW5kKTtcbiAgJGlzLWRhcmstdGhlbWU6IG1hcC1nZXQoJGNvbmZpZywgaXMtZGFyayk7XG5cbiAgJGxhYmVsLWRpc2FibGVkLWNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIGRpc2FibGVkLXRleHQpO1xuICAkb3V0bGluZS1jb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBkaXZpZGVyLCBpZigkaXMtZGFyay10aGVtZSwgMC4zLCAwLjEyKSk7XG4gICRvdXRsaW5lLWNvbG9yLWhvdmVyOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIGRpdmlkZXIsIGlmKCRpcy1kYXJrLXRoZW1lLCAxLCAwLjg3KSk7XG4gICRvdXRsaW5lLWNvbG9yLXByaW1hcnk6IG1hdC1jb2xvcigkcHJpbWFyeSk7XG4gICRvdXRsaW5lLWNvbG9yLWFjY2VudDogbWF0LWNvbG9yKCRhY2NlbnQpO1xuICAkb3V0bGluZS1jb2xvci13YXJuOiBtYXQtY29sb3IoJHdhcm4pO1xuICAkb3V0bGluZS1jb2xvci1kaXNhYmxlZDogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBkaXZpZGVyLCBpZigkaXMtZGFyay10aGVtZSwgMC4xNSwgMC4wNikpO1xuXG4gIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUge1xuICAgIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lIHtcbiAgICAgIGNvbG9yOiAkb3V0bGluZS1jb2xvcjtcbiAgICB9XG5cbiAgICAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGljayB7XG4gICAgICBjb2xvcjogJG91dGxpbmUtY29sb3ItaG92ZXI7XG4gICAgfVxuXG4gICAgJi5tYXQtZm9jdXNlZCB7XG4gICAgICAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGljayB7XG4gICAgICAgIGNvbG9yOiAkb3V0bGluZS1jb2xvci1wcmltYXJ5O1xuICAgICAgfVxuXG4gICAgICAmLm1hdC1hY2NlbnQgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2sge1xuICAgICAgICBjb2xvcjogJG91dGxpbmUtY29sb3ItYWNjZW50O1xuICAgICAgfVxuXG4gICAgICAmLm1hdC13YXJuIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNrIHtcbiAgICAgICAgY29sb3I6ICRvdXRsaW5lLWNvbG9yLXdhcm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gQ2xhc3MgcmVwZWF0ZWQgc28gdGhhdCBydWxlIGlzIHNwZWNpZmljIGVub3VnaCB0byBvdmVycmlkZSBmb2N1c2VkIGFjY2VudCBjb2xvciBjYXNlLlxuICAgICYubWF0LWZvcm0tZmllbGQtaW52YWxpZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkIHtcbiAgICAgIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNrIHtcbiAgICAgICAgY29sb3I6ICRvdXRsaW5lLWNvbG9yLXdhcm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgJi5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZCB7XG4gICAgICAubWF0LWZvcm0tZmllbGQtbGFiZWwge1xuICAgICAgICBjb2xvcjogJGxhYmVsLWRpc2FibGVkLWNvbG9yO1xuICAgICAgfVxuXG4gICAgICAubWF0LWZvcm0tZmllbGQtb3V0bGluZSB7XG4gICAgICAgIGNvbG9yOiAkb3V0bGluZS1jb2xvci1kaXNhYmxlZDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLy8gVXNlZCB0byBtYWtlIGluc3RhbmNlcyBvZiB0aGUgX21hdC1mb3JtLWZpZWxkLWxhYmVsLWZsb2F0aW5nIG1peGluIG5lZ2xpZ2libHkgZGlmZmVyZW50LFxuLy8gYW5kIHByZXZlbnQgR29vZ2xlJ3MgQ1NTIE9wdGltaXplciBmcm9tIGNvbGxhcHNpbmcgdGhlIGRlY2xhcmF0aW9ucy4gVGhpcyBpcyBuZWVkZWQgYmVjYXVzZSBzb21lXG4vLyBvZiB0aGUgc2VsZWN0b3JzIGNvbnRhaW4gcHNldWRvLWNsYXNzZXMgbm90IHJlY29nbml6ZWQgaW4gYWxsIGJyb3dzZXJzLiBJZiBhIGJyb3dzZXIgZW5jb3VudGVyc1xuLy8gYW4gdW5rbm93biBwc2V1ZG8tY2xhc3MgaXQgd2lsbCBkaXNjYXJkIHRoZSBlbnRpcmUgcnVsZSBzZXQuXG4kbWF0LWZvcm0tZmllbGQtb3V0bGluZS1kZWR1cGU6IDA7XG5cbi8vIEFwcGxpZXMgYSBmbG9hdGluZyBsYWJlbCBhYm92ZSB0aGUgZm9ybSBmaWVsZCBjb250cm9sIGl0c2VsZi5cbkBtaXhpbiBfbWF0LWZvcm0tZmllbGQtb3V0bGluZS1sYWJlbC1mbG9hdGluZygkZm9udC1zY2FsZSwgJGluZml4LXBhZGRpbmcsICRpbmZpeC1tYXJnaW4tdG9wKSB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtJGluZml4LW1hcmdpbi10b3AgLSAkaW5maXgtcGFkZGluZyArICRtYXQtZm9ybS1maWVsZC1vdXRsaW5lLWRlZHVwZSlcbiAgc2NhbGUoJGZvbnQtc2NhbGUpO1xuICB3aWR0aDogMTAwJSAvICRmb250LXNjYWxlICsgJG1hdC1mb3JtLWZpZWxkLW91dGxpbmUtZGVkdXBlO1xuXG4gICRtYXQtZm9ybS1maWVsZC1vdXRsaW5lLWRlZHVwZTogJG1hdC1mb3JtLWZpZWxkLW91dGxpbmUtZGVkdXBlICsgMC4wMDAwMSAhZ2xvYmFsO1xufVxuXG5AbWl4aW4gbWF0LWZvcm0tZmllbGQtb3V0bGluZS10eXBvZ3JhcGh5KCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogbWF0LWdldC10eXBvZ3JhcGh5LWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgLy8gVGhlIHVuaXQtbGVzcyBsaW5lLWhlaWdodCBmcm9tIHRoZSBmb250IGNvbmZpZy5cbiAgJGxpbmUtaGVpZ2h0OiBtYXQtbGluZS1oZWlnaHQoJGNvbmZpZywgaW5wdXQpO1xuICAvLyBUaGUgYW1vdW50IHRvIHNjYWxlIHRoZSBmb250IGZvciB0aGUgZmxvYXRpbmcgbGFiZWwgYW5kIHN1YnNjcmlwdC5cbiAgJHN1YnNjcmlwdC1mb250LXNjYWxlOiAwLjc1O1xuICAvLyBUaGUgcGFkZGluZyBhYm92ZSBhbmQgYmVsb3cgdGhlIGluZml4LlxuICAkaW5maXgtcGFkZGluZzogMWVtO1xuICAvLyBUaGUgbWFyZ2luIGFwcGxpZWQgdG8gdGhlIGZvcm0tZmllbGQtaW5maXggdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgdGhlIGZsb2F0aW5nIGxhYmVsLlxuICAkaW5maXgtbWFyZ2luLXRvcDogMWVtICogJGxpbmUtaGVpZ2h0ICogJHN1YnNjcmlwdC1mb250LXNjYWxlO1xuICAvLyBUaGUgc3BhY2UgYmV0d2VlbiB0aGUgYm90dG9tIG9mIHRoZSAubWF0LWZvcm0tZmllbGQtZmxleCBhcmVhIGFuZCB0aGUgc3Vic2NyaXB0IHdyYXBwZXIuXG4gIC8vIE1vY2tzIHNob3cgaGFsZiBvZiB0aGUgdGV4dCBzaXplLCBidXQgdGhpcyBtYXJnaW4gaXMgYXBwbGllZCB0byBhbiBlbGVtZW50IHdpdGggdGhlIHN1YnNjcmlwdFxuICAvLyB0ZXh0IGZvbnQgc2l6ZSwgc28gd2UgbmVlZCB0byBkaXZpZGUgYnkgdGhlIHNjYWxlIGZhY3RvciB0byBtYWtlIGl0IGhhbGYgb2YgdGhlIG9yaWdpbmFsIHRleHRcbiAgLy8gc2l6ZS5cbiAgJHN1YnNjcmlwdC1tYXJnaW4tdG9wOiAwLjVlbSAvICRzdWJzY3JpcHQtZm9udC1zY2FsZTtcbiAgLy8gVGhlIHBhZGRpbmcgYXBwbGllZCB0byB0aGUgZm9ybS1maWVsZC13cmFwcGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIHRoZSBzdWJzY3JpcHQsIHNpbmNlIGl0J3NcbiAgLy8gYWJzb2x1dGVseSBwb3NpdGlvbmVkLiBUaGlzIGlzIGEgY29tYmluYXRpb24gb2YgdGhlIHN1YnNjcmlwdCdzIG1hcmdpbiBhbmQgbGluZS1oZWlnaHQsIGJ1dCB3ZVxuICAvLyBuZWVkIHRvIG11bHRpcGx5IGJ5IHRoZSBzdWJzY3JpcHQgZm9udCBzY2FsZSBmYWN0b3Igc2luY2UgdGhlIHdyYXBwZXIgaGFzIGEgbGFyZ2VyIGZvbnQgc2l6ZS5cbiAgJHdyYXBwZXItcGFkZGluZy1ib3R0b206ICgkc3Vic2NyaXB0LW1hcmdpbi10b3AgKyAkbGluZS1oZWlnaHQpICogJHN1YnNjcmlwdC1mb250LXNjYWxlO1xuICAvLyBUaGUgYW1vdW50IHdlIG9mZnNldCB0aGUgbGFiZWwgZnJvbSB0aGUgaW5wdXQgdGV4dCBpbiB0aGUgb3V0bGluZSBhcHBlYXJhbmNlLlxuICAkb3V0bGluZS1hcHBlYXJhbmNlLWxhYmVsLW9mZnNldDogLTAuMjVlbTtcblxuICAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIHtcbiAgICAubWF0LWZvcm0tZmllbGQtaW5maXgge1xuICAgICAgcGFkZGluZzogJGluZml4LXBhZGRpbmcgMCAkaW5maXgtcGFkZGluZyAwO1xuICAgIH1cblxuICAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbCB7XG4gICAgICB0b3A6ICRpbmZpeC1tYXJnaW4tdG9wICsgJGluZml4LXBhZGRpbmc7XG4gICAgICBtYXJnaW4tdG9wOiAkb3V0bGluZS1hcHBlYXJhbmNlLWxhYmVsLW9mZnNldDtcbiAgICB9XG5cbiAgICAmLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdCB7XG4gICAgICAmLm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdCAubWF0LWZvcm0tZmllbGQtbGFiZWwsXG4gICAgICAubWF0LWlucHV0LXNlcnZlcjpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIC5tYXQtZm9ybS1maWVsZC1sYWJlbCB7XG4gICAgICAgIEBpbmNsdWRlIF9tYXQtZm9ybS1maWVsZC1vdXRsaW5lLWxhYmVsLWZsb2F0aW5nKFxuICAgICAgICAgICAgICAgICRzdWJzY3JpcHQtZm9udC1zY2FsZSwgJGluZml4LXBhZGRpbmcgKyAkb3V0bGluZS1hcHBlYXJhbmNlLWxhYmVsLW9mZnNldCxcbiAgICAgICAgICAgICAgICAkaW5maXgtbWFyZ2luLXRvcCk7XG4gICAgICB9XG5cbiAgICAgIC8vIFNlcnZlci1zaWRlIHJlbmRlcmVkIG1hdElucHV0IHdpdGggYSBsYWJlbCBhdHRyaWJ1dGUgYnV0IGxhYmVsIG5vdCBzaG93blxuICAgICAgLy8gKHVzZWQgYXMgYSBwdXJlIENTUyBzdGFuZC1pbiBmb3IgbWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0KS5cbiAgICAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyXG4gICAgICAubWF0LWZvcm0tZmllbGQtbGFiZWwge1xuICAgICAgICBAaW5jbHVkZSBfbWF0LWZvcm0tZmllbGQtb3V0bGluZS1sYWJlbC1mbG9hdGluZyhcbiAgICAgICAgICAgICAgICAkc3Vic2NyaXB0LWZvbnQtc2NhbGUsICRpbmZpeC1wYWRkaW5nICsgJG91dGxpbmUtYXBwZWFyYW5jZS1sYWJlbC1vZmZzZXQsXG4gICAgICAgICAgICAgICAgJGluZml4LW1hcmdpbi10b3ApO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gbWF0LXByaXZhdGUtZm9ybS1maWVsZC1vdXRsaW5lLWRlbnNpdHkoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIG1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZykge1xuICAkdGhlbWU6IG1hdC1wcml2YXRlLWxlZ2FjeS1nZXQtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZyk7XG4gIEBpbmNsdWRlIG1hdC1wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LWZvcm0tZmllbGQtb3V0bGluZScpIHtcbiAgICAkY29sb3I6IG1hdC1nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgJGRlbnNpdHk6IG1hdC1nZXQtZGVuc2l0eS1jb25maWcoJHRoZW1lKTtcbiAgICAkdHlwb2dyYXBoeTogbWF0LWdldC10eXBvZ3JhcGh5LWNvbmZpZygkdGhlbWUpO1xuXG4gICAgQGlmICRjb2xvciAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIG1hdC1mb3JtLWZpZWxkLW91dGxpbmUtY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gICAgQGlmICRkZW5zaXR5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgbWF0LXByaXZhdGUtZm9ybS1maWVsZC1vdXRsaW5lLWRlbnNpdHkoJGRlbnNpdHkpO1xuICAgIH1cbiAgICBAaWYgJHR5cG9ncmFwaHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBtYXQtZm9ybS1maWVsZC1vdXRsaW5lLXR5cG9ncmFwaHkoJHR5cG9ncmFwaHkpO1xuICAgIH1cbiAgfVxufVxuXG5cblxuXG5cblxuXG5cbi8vIFRoZW1lIHN0eWxlcyB0aGF0IG9ubHkgYXBwbHkgdG8gdGhlIHN0YW5kYXJkIGFwcGVhcmFuY2Ugb2YgdGhlIGZvcm0tZmllbGQuXG5cbkBtaXhpbiBtYXQtZm9ybS1maWVsZC1zdGFuZGFyZC1jb2xvcigkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IG1hdC1nZXQtY29sb3ItY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAkZm9yZWdyb3VuZDogbWFwLWdldCgkY29uZmlnLCBmb3JlZ3JvdW5kKTtcbiAgJGlzLWRhcmstdGhlbWU6IG1hcC1nZXQoJGNvbmZpZywgaXMtZGFyayk7XG5cbiAgJHVuZGVybGluZS1jb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBkaXZpZGVyLCBpZigkaXMtZGFyay10aGVtZSwgMC43LCAwLjQyKSk7XG5cbiAgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utc3RhbmRhcmQge1xuICAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmUge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHVuZGVybGluZS1jb2xvcjtcbiAgICB9XG5cbiAgICAmLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmUge1xuICAgICAgQGluY2x1ZGUgbWF0LXByaXZhdGUtY29udHJvbC1kaXNhYmxlZC11bmRlcmxpbmUoJHVuZGVybGluZS1jb2xvcik7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBtYXQtZm9ybS1maWVsZC1zdGFuZGFyZC10eXBvZ3JhcGh5KCRjb25maWctb3ItdGhlbWUpIHt9XG5cbkBtaXhpbiBtYXQtcHJpdmF0ZS1mb3JtLWZpZWxkLXN0YW5kYXJkLWRlbnNpdHkoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIG1hdC1mb3JtLWZpZWxkLXN0YW5kYXJkLXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiBtYXQtcHJpdmF0ZS1sZWdhY3ktZ2V0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICBAaW5jbHVkZSBtYXQtcHJpdmF0ZS1jaGVjay1kdXBsaWNhdGUtdGhlbWUtc3R5bGVzKCR0aGVtZSwgJ21hdC1mb3JtLWZpZWxkLXN0YW5kYXJkJykge1xuICAgICRjb2xvcjogbWF0LWdldC1jb2xvci1jb25maWcoJHRoZW1lKTtcbiAgICAkZGVuc2l0eTogbWF0LWdldC1kZW5zaXR5LWNvbmZpZygkdGhlbWUpO1xuICAgICR0eXBvZ3JhcGh5OiBtYXQtZ2V0LXR5cG9ncmFwaHktY29uZmlnKCR0aGVtZSk7XG5cbiAgICBAaWYgJGNvbG9yICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgbWF0LWZvcm0tZmllbGQtc3RhbmRhcmQtY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gICAgQGlmICRkZW5zaXR5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgbWF0LXByaXZhdGUtZm9ybS1maWVsZC1zdGFuZGFyZC1kZW5zaXR5KCRkZW5zaXR5KTtcbiAgICB9XG4gICAgQGlmICR0eXBvZ3JhcGh5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgbWF0LWZvcm0tZmllbGQtc3RhbmRhcmQtdHlwb2dyYXBoeSgkdHlwb2dyYXBoeSk7XG4gICAgfVxuICB9XG59XG5cblxuLy8gQ29sb3Igc3R5bGVzIHRoYXQgYXBwbHkgdG8gYWxsIGFwcGVhcmFuY2VzIG9mIHRoZSBmb3JtLWZpZWxkLlxuQG1peGluIG1hdC1mb3JtLWZpZWxkLWNvbG9yKCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogbWF0LWdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRwcmltYXJ5OiBtYXAtZ2V0KCRjb25maWcsIHByaW1hcnkpO1xuICAkYWNjZW50OiBtYXAtZ2V0KCRjb25maWcsIGFjY2VudCk7XG4gICR3YXJuOiBtYXAtZ2V0KCRjb25maWcsIHdhcm4pO1xuICAkYmFja2dyb3VuZDogbWFwLWdldCgkY29uZmlnLCBiYWNrZ3JvdW5kKTtcbiAgJGZvcmVncm91bmQ6IG1hcC1nZXQoJGNvbmZpZywgZm9yZWdyb3VuZCk7XG4gICRpcy1kYXJrLXRoZW1lOiBtYXAtZ2V0KCRjb25maWcsIGlzLWRhcmspO1xuXG4gIC8vIExhYmVsIGNvbG9ycy4gUmVxdWlyZWQgaXMgdXNlZCBmb3IgdGhlIGAqYCBzdGFyIHNob3duIGluIHRoZSBsYWJlbC5cbiAgJGxhYmVsLWNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIHNlY29uZGFyeS10ZXh0LCBpZigkaXMtZGFyay10aGVtZSwgMC43LCAwLjYpKTtcbiAgJGZvY3VzZWQtbGFiZWwtY29sb3I6IG1hdC1jb2xvcigkcHJpbWFyeSwgdGV4dCk7XG4gICRyZXF1aXJlZC1sYWJlbC1jb2xvcjogbWF0LWNvbG9yKCRhY2NlbnQsIHRleHQpO1xuXG4gIC8vIFVuZGVybGluZSBjb2xvcnMuXG4gICR1bmRlcmxpbmUtY29sb3ItYmFzZTogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBkaXZpZGVyLCBpZigkaXMtZGFyay10aGVtZSwgMSwgMC44NykpO1xuICAkdW5kZXJsaW5lLWNvbG9yLWFjY2VudDogbWF0LWNvbG9yKCRhY2NlbnQsIHRleHQpO1xuICAkdW5kZXJsaW5lLWNvbG9yLXdhcm46IG1hdC1jb2xvcigkd2FybiwgdGV4dCk7XG4gICR1bmRlcmxpbmUtZm9jdXNlZC1jb2xvcjogbWF0LWNvbG9yKCRwcmltYXJ5LCB0ZXh0KTtcblxuICAubWF0LWZvcm0tZmllbGQtbGFiZWwge1xuICAgIGNvbG9yOiAkbGFiZWwtY29sb3I7XG4gIH1cblxuICAubWF0LWhpbnQge1xuICAgIGNvbG9yOiAkbGFiZWwtY29sb3I7XG4gIH1cblxuICAubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWQgLm1hdC1mb3JtLWZpZWxkLWxhYmVsIHtcbiAgICBjb2xvcjogJGZvY3VzZWQtbGFiZWwtY29sb3I7XG5cbiAgICAmLm1hdC1hY2NlbnQge1xuICAgICAgY29sb3I6ICR1bmRlcmxpbmUtY29sb3ItYWNjZW50O1xuICAgIH1cblxuICAgICYubWF0LXdhcm4ge1xuICAgICAgY29sb3I6ICR1bmRlcmxpbmUtY29sb3Itd2FybjtcbiAgICB9XG4gIH1cblxuICAubWF0LWZvY3VzZWQgLm1hdC1mb3JtLWZpZWxkLXJlcXVpcmVkLW1hcmtlciB7XG4gICAgY29sb3I6ICRyZXF1aXJlZC1sYWJlbC1jb2xvcjtcbiAgfVxuXG4gIC5tYXQtZm9ybS1maWVsZC1yaXBwbGUge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR1bmRlcmxpbmUtY29sb3ItYmFzZTtcbiAgfVxuXG4gIC5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZCB7XG4gICAgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZSB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdW5kZXJsaW5lLWZvY3VzZWQtY29sb3I7XG5cbiAgICAgICYubWF0LWFjY2VudCB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR1bmRlcmxpbmUtY29sb3ItYWNjZW50O1xuICAgICAgfVxuXG4gICAgICAmLm1hdC13YXJuIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHVuZGVybGluZS1jb2xvci13YXJuO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb2N1c2VkOm5vdCgubWF0LWZvcm0tZmllbGQtaW52YWxpZCkge1xuICAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeDo6YWZ0ZXIge1xuICAgICAgY29sb3I6ICR1bmRlcmxpbmUtZm9jdXNlZC1jb2xvcjtcbiAgICB9XG5cbiAgICAmLm1hdC1hY2NlbnQgLm1hdC1mb3JtLWZpZWxkLWluZml4OjphZnRlciB7XG4gICAgICBjb2xvcjogJHVuZGVybGluZS1jb2xvci1hY2NlbnQ7XG4gICAgfVxuXG4gICAgJi5tYXQtd2FybiAubWF0LWZvcm0tZmllbGQtaW5maXg6OmFmdGVyIHtcbiAgICAgIGNvbG9yOiAkdW5kZXJsaW5lLWNvbG9yLXdhcm47XG4gICAgfVxuICB9XG5cbiAgLy8gU3R5bGluZyBmb3IgdGhlIGVycm9yIHN0YXRlIG9mIHRoZSBmb3JtIGZpZWxkLiBOb3RlIHRoYXQgd2hpbGUgdGhlIHNhbWUgY2FuIGJlXG4gIC8vIGFjaGlldmVkIHdpdGggdGhlIG5nLSogY2xhc3Nlcywgd2UgdXNlIHRoaXMgYXBwcm9hY2ggaW4gb3JkZXIgdG8gZW5zdXJlIHRoYXQgdGhlIHNhbWVcbiAgLy8gbG9naWMgaXMgdXNlZCB0byBzdHlsZSB0aGUgZXJyb3Igc3RhdGUgYW5kIHRvIHNob3cgdGhlIGVycm9yIG1lc3NhZ2VzLlxuICAubWF0LWZvcm0tZmllbGQubWF0LWZvcm0tZmllbGQtaW52YWxpZCB7XG4gICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsIHtcbiAgICAgIGNvbG9yOiAkdW5kZXJsaW5lLWNvbG9yLXdhcm47XG5cbiAgICAgICYubWF0LWFjY2VudCxcbiAgICAgIC5tYXQtZm9ybS1maWVsZC1yZXF1aXJlZC1tYXJrZXIge1xuICAgICAgICBjb2xvcjogJHVuZGVybGluZS1jb2xvci13YXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIC5tYXQtZm9ybS1maWVsZC1yaXBwbGUsXG4gICAgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZS5tYXQtYWNjZW50IHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICR1bmRlcmxpbmUtY29sb3Itd2FybjtcbiAgICB9XG4gIH1cblxuICAubWF0LWVycm9yIHtcbiAgICBjb2xvcjogJHVuZGVybGluZS1jb2xvci13YXJuO1xuICB9XG5cbiAgQGluY2x1ZGUgbWF0LWZvcm0tZmllbGQtbGVnYWN5LWNvbG9yKCRjb25maWcpO1xuICBAaW5jbHVkZSBtYXQtZm9ybS1maWVsZC1zdGFuZGFyZC1jb2xvcigkY29uZmlnKTtcbiAgQGluY2x1ZGUgbWF0LWZvcm0tZmllbGQtZmlsbC1jb2xvcigkY29uZmlnKTtcbiAgQGluY2x1ZGUgbWF0LWZvcm0tZmllbGQtb3V0bGluZS1jb2xvcigkY29uZmlnKTtcbn1cblxuLy8gVXNlZCB0byBtYWtlIGluc3RhbmNlcyBvZiB0aGUgX21hdC1mb3JtLWZpZWxkLWxhYmVsLWZsb2F0aW5nIG1peGluIG5lZ2xpZ2libHkgZGlmZmVyZW50LFxuLy8gYW5kIHByZXZlbnQgR29vZ2xlJ3MgQ1NTIE9wdGltaXplciBmcm9tIGNvbGxhcHNpbmcgdGhlIGRlY2xhcmF0aW9ucy4gVGhpcyBpcyBuZWVkZWQgYmVjYXVzZSBzb21lXG4vLyBvZiB0aGUgc2VsZWN0b3JzIGNvbnRhaW4gcHNldWRvLWNsYXNzZXMgbm90IHJlY29nbml6ZWQgaW4gYWxsIGJyb3dzZXJzLiBJZiBhIGJyb3dzZXIgZW5jb3VudGVyc1xuLy8gYW4gdW5rbm93biBwc2V1ZG8tY2xhc3MgaXQgd2lsbCBkaXNjYXJkIHRoZSBlbnRpcmUgcnVsZSBzZXQuXG4kbWF0LWZvcm0tZmllbGQtZGVkdXBlOiAwO1xuXG4vLyBBcHBsaWVzIGEgZmxvYXRpbmcgbGFiZWwgYWJvdmUgdGhlIGZvcm0gZmllbGQgY29udHJvbCBpdHNlbGYuXG5AbWl4aW4gX21hdC1mb3JtLWZpZWxkLWxhYmVsLWZsb2F0aW5nKCRmb250LXNjYWxlLCAkaW5maXgtcGFkZGluZywgJGluZml4LW1hcmdpbi10b3ApIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0kaW5maXgtbWFyZ2luLXRvcCAtICRpbmZpeC1wYWRkaW5nICsgJG1hdC1mb3JtLWZpZWxkLWRlZHVwZSlcbiAgICAgICAgICAgICBzY2FsZSgkZm9udC1zY2FsZSk7XG4gIHdpZHRoOiAxMDAlIC8gJGZvbnQtc2NhbGUgKyAkbWF0LWZvcm0tZmllbGQtZGVkdXBlO1xuXG4gICRtYXQtZm9ybS1maWVsZC1kZWR1cGU6ICRtYXQtZm9ybS1maWVsZC1kZWR1cGUgKyAwLjAwMDAxICFnbG9iYWw7XG59XG5cbkBtaXhpbiBtYXQtZm9ybS1maWVsZC10eXBvZ3JhcGh5KCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogbWF0LWdldC10eXBvZ3JhcGh5LWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgLy8gVGhlIHVuaXQtbGVzcyBsaW5lLWhlaWdodCBmcm9tIHRoZSBmb250IGNvbmZpZy5cbiAgJGxpbmUtaGVpZ2h0OiBtYXQtbGluZS1oZWlnaHQoJGNvbmZpZywgaW5wdXQpO1xuXG4gIC8vIFRoZSBhbW91bnQgdG8gc2NhbGUgdGhlIGZvbnQgZm9yIHRoZSBmbG9hdGluZyBsYWJlbCBhbmQgc3Vic2NyaXB0LlxuICAkc3Vic2NyaXB0LWZvbnQtc2NhbGU6IDAuNzU7XG4gIC8vIFRoZSBhbW91bnQgdG8gc2NhbGUgdGhlIGZvbnQgZm9yIHRoZSBwcmVmaXggYW5kIHN1ZmZpeCBpY29ucy5cbiAgJHByZWZpeC1zdWZmaXgtaWNvbi1mb250LXNjYWxlOiAxLjU7XG5cbiAgLy8gVGhlIHBhZGRpbmcgb24gdGhlIGluZml4LiBNb2NrcyBzaG93IGhhbGYgb2YgdGhlIHRleHQgc2l6ZS5cbiAgJGluZml4LXBhZGRpbmc6IDAuNWVtO1xuICAvLyBUaGUgbWFyZ2luIGFwcGxpZWQgdG8gdGhlIGZvcm0tZmllbGQtaW5maXggdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgdGhlIGZsb2F0aW5nIGxhYmVsLlxuICAkaW5maXgtbWFyZ2luLXRvcDogMWVtICogJGxpbmUtaGVpZ2h0ICogJHN1YnNjcmlwdC1mb250LXNjYWxlO1xuICAvLyBGb250IHNpemUgdG8gdXNlIGZvciB0aGUgbGFiZWwgYW5kIHN1YnNjcmlwdCB0ZXh0LlxuICAkc3Vic2NyaXB0LWZvbnQtc2l6ZTogJHN1YnNjcmlwdC1mb250LXNjYWxlICogMTAwJTtcbiAgLy8gRm9udCBzaXplIHRvIHVzZSBmb3IgdGhlIGZvciB0aGUgcHJlZml4IGFuZCBzdWZmaXggaWNvbnMuXG4gICRwcmVmaXgtc3VmZml4LWljb24tZm9udC1zaXplOiAkcHJlZml4LXN1ZmZpeC1pY29uLWZvbnQtc2NhbGUgKiAxMDAlO1xuICAvLyBUaGUgc3BhY2UgYmV0d2VlbiB0aGUgYm90dG9tIG9mIHRoZSAubWF0LWZvcm0tZmllbGQtZmxleCBhcmVhIGFuZCB0aGUgc3Vic2NyaXB0IHdyYXBwZXIuXG4gIC8vIE1vY2tzIHNob3cgaGFsZiBvZiB0aGUgdGV4dCBzaXplLCBidXQgdGhpcyBtYXJnaW4gaXMgYXBwbGllZCB0byBhbiBlbGVtZW50IHdpdGggdGhlIHN1YnNjcmlwdFxuICAvLyB0ZXh0IGZvbnQgc2l6ZSwgc28gd2UgbmVlZCB0byBkaXZpZGUgYnkgdGhlIHNjYWxlIGZhY3RvciB0byBtYWtlIGl0IGhhbGYgb2YgdGhlIG9yaWdpbmFsIHRleHRcbiAgLy8gc2l6ZS5cbiAgJHN1YnNjcmlwdC1tYXJnaW4tdG9wOiAwLjVlbSAvICRzdWJzY3JpcHQtZm9udC1zY2FsZTtcbiAgLy8gVGhlIHBhZGRpbmcgYXBwbGllZCB0byB0aGUgZm9ybS1maWVsZC13cmFwcGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIHRoZSBzdWJzY3JpcHQsIHNpbmNlIGl0J3NcbiAgLy8gYWJzb2x1dGVseSBwb3NpdGlvbmVkLiBUaGlzIGlzIGEgY29tYmluYXRpb24gb2YgdGhlIHN1YnNjcmlwdCdzIG1hcmdpbiBhbmQgbGluZS1oZWlnaHQsIGJ1dCB3ZVxuICAvLyBuZWVkIHRvIG11bHRpcGx5IGJ5IHRoZSBzdWJzY3JpcHQgZm9udCBzY2FsZSBmYWN0b3Igc2luY2UgdGhlIHdyYXBwZXIgaGFzIGEgbGFyZ2VyIGZvbnQgc2l6ZS5cbiAgJHdyYXBwZXItcGFkZGluZy1ib3R0b206ICgkc3Vic2NyaXB0LW1hcmdpbi10b3AgKyAkbGluZS1oZWlnaHQpICogJHN1YnNjcmlwdC1mb250LXNjYWxlO1xuXG4gIC5tYXQtZm9ybS1maWVsZCB7XG4gICAgQGluY2x1ZGUgbWF0LXR5cG9ncmFwaHktbGV2ZWwtdG8tc3R5bGVzKCRjb25maWcsIGlucHV0KTtcbiAgfVxuXG4gIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyIHtcbiAgICBwYWRkaW5nLWJvdHRvbTogJHdyYXBwZXItcGFkZGluZy1ib3R0b207XG4gIH1cblxuICAubWF0LWZvcm0tZmllbGQtcHJlZml4LFxuICAubWF0LWZvcm0tZmllbGQtc3VmZml4IHtcbiAgICAvLyBBbGxvdyBpY29ucyBpbiBhIHByZWZpeCBvciBzdWZmaXggdG8gYWRhcHQgdG8gdGhlIGNvcnJlY3Qgc2l6ZS5cbiAgICAubWF0LWljb24ge1xuICAgICAgZm9udC1zaXplOiAkcHJlZml4LXN1ZmZpeC1pY29uLWZvbnQtc2l6ZTtcbiAgICAgIGxpbmUtaGVpZ2h0OiAkbGluZS1oZWlnaHQ7XG4gICAgfVxuXG4gICAgLy8gQWxsb3cgaWNvbiBidXR0b25zIGluIGEgcHJlZml4IG9yIHN1ZmZpeCB0byBhZGFwdCB0byB0aGUgY29ycmVjdCBzaXplLlxuICAgIC5tYXQtaWNvbi1idXR0b24ge1xuICAgICAgaGVpZ2h0OiAkcHJlZml4LXN1ZmZpeC1pY29uLWZvbnQtc2NhbGUgKiAxZW07XG4gICAgICB3aWR0aDogJHByZWZpeC1zdWZmaXgtaWNvbi1mb250LXNjYWxlICogMWVtO1xuXG4gICAgICAubWF0LWljb24ge1xuICAgICAgICBoZWlnaHQ6ICRsaW5lLWhlaWdodCAqIDFlbTtcbiAgICAgICAgbGluZS1oZWlnaHQ6ICRsaW5lLWhlaWdodDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAubWF0LWZvcm0tZmllbGQtaW5maXgge1xuICAgIHBhZGRpbmc6ICRpbmZpeC1wYWRkaW5nIDA7XG4gICAgLy8gVGhyb3dzIG9mZiB0aGUgYmFzZWxpbmUgaWYgd2UgZG8gaXQgYXMgYSByZWFsIG1hcmdpbiwgc28gd2UgZG8gaXQgYXMgYSBib3JkZXIgaW5zdGVhZC5cbiAgICBib3JkZXItdG9wOiAkaW5maXgtbWFyZ2luLXRvcCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgfVxuXG4gIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQge1xuICAgICYubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0IC5tYXQtZm9ybS1maWVsZC1sYWJlbCxcbiAgICAubWF0LWlucHV0LXNlcnZlcjpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIC5tYXQtZm9ybS1maWVsZC1sYWJlbCB7XG4gICAgICBAaW5jbHVkZSBfbWF0LWZvcm0tZmllbGQtbGFiZWwtZmxvYXRpbmcoXG4gICAgICAgICAgICAgICRzdWJzY3JpcHQtZm9udC1zY2FsZSwgJGluZml4LXBhZGRpbmcsICRpbmZpeC1tYXJnaW4tdG9wKTtcbiAgICB9XG5cbiAgICAvLyBTZXJ2ZXItc2lkZSByZW5kZXJlZCBtYXRJbnB1dCB3aXRoIGEgbGFiZWwgYXR0cmlidXRlIGJ1dCBsYWJlbCBub3Qgc2hvd25cbiAgICAvLyAodXNlZCBhcyBhIHB1cmUgQ1NTIHN0YW5kLWluIGZvciBtYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXQpLlxuICAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyXG4gICAgICAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbCB7XG4gICAgICBAaW5jbHVkZSBfbWF0LWZvcm0tZmllbGQtbGFiZWwtZmxvYXRpbmcoXG4gICAgICAgICAgICAgICRzdWJzY3JpcHQtZm9udC1zY2FsZSwgJGluZml4LXBhZGRpbmcsICRpbmZpeC1tYXJnaW4tdG9wKTtcbiAgICB9XG4gIH1cblxuICAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciB7XG4gICAgdG9wOiAtJGluZml4LW1hcmdpbi10b3A7XG4gICAgcGFkZGluZy10b3A6ICRpbmZpeC1tYXJnaW4tdG9wO1xuICB9XG5cbiAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsIHtcbiAgICB0b3A6ICRpbmZpeC1tYXJnaW4tdG9wICsgJGluZml4LXBhZGRpbmc7XG4gIH1cblxuICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lIHtcbiAgICAvLyBXZSB3YW50IHRoZSB1bmRlcmxpbmUgdG8gc3RhcnQgYXQgdGhlIGVuZCBvZiB0aGUgY29udGVudCBib3gsIG5vdCB0aGUgcGFkZGluZyBib3gsXG4gICAgLy8gc28gd2UgbW92ZSBpdCB1cCBieSB0aGUgcGFkZGluZyBhbW91bnQuXG4gICAgYm90dG9tOiAkd3JhcHBlci1wYWRkaW5nLWJvdHRvbTtcbiAgfVxuXG4gIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlciB7XG4gICAgZm9udC1zaXplOiAkc3Vic2NyaXB0LWZvbnQtc2l6ZTtcbiAgICBtYXJnaW4tdG9wOiAkc3Vic2NyaXB0LW1hcmdpbi10b3A7XG5cbiAgICAvLyBXZSB3YW50IHRoZSBzdWJzY3JpcHQgdG8gc3RhcnQgYXQgdGhlIGVuZCBvZiB0aGUgY29udGVudCBib3gsIG5vdCB0aGUgcGFkZGluZyBib3gsXG4gICAgLy8gc28gd2UgbW92ZSBpdCB1cCBieSB0aGUgcGFkZGluZyBhbW91bnQgKGFkanVzdGVkIGZvciB0aGUgc21hbGxlciBmb250IHNpemUpO1xuICAgIHRvcDogY2FsYygxMDAlIC0gI3skd3JhcHBlci1wYWRkaW5nLWJvdHRvbSAvICRzdWJzY3JpcHQtZm9udC1zY2FsZX0pO1xuICB9XG5cbiAgQGluY2x1ZGUgbWF0LWZvcm0tZmllbGQtbGVnYWN5LXR5cG9ncmFwaHkoJGNvbmZpZyk7XG4gIEBpbmNsdWRlIG1hdC1mb3JtLWZpZWxkLXN0YW5kYXJkLXR5cG9ncmFwaHkoJGNvbmZpZyk7XG4gIEBpbmNsdWRlIG1hdC1mb3JtLWZpZWxkLWZpbGwtdHlwb2dyYXBoeSgkY29uZmlnKTtcbiAgQGluY2x1ZGUgbWF0LWZvcm0tZmllbGQtb3V0bGluZS10eXBvZ3JhcGh5KCRjb25maWcpO1xufVxuXG5AbWl4aW4gbWF0LWZvcm0tZmllbGQtZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRkZW5zaXR5LXNjYWxlOiBtYXQtZ2V0LWRlbnNpdHktY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICBAaW5jbHVkZSBtYXQtcHJpdmF0ZS1mb3JtLWZpZWxkLWxlZ2FjeS1kZW5zaXR5KCRkZW5zaXR5LXNjYWxlKTtcbiAgQGluY2x1ZGUgbWF0LXByaXZhdGUtZm9ybS1maWVsZC1zdGFuZGFyZC1kZW5zaXR5KCRkZW5zaXR5LXNjYWxlKTtcbiAgQGluY2x1ZGUgbWF0LXByaXZhdGUtZm9ybS1maWVsZC1maWxsLWRlbnNpdHkoJGRlbnNpdHktc2NhbGUpO1xuICBAaW5jbHVkZSBtYXQtcHJpdmF0ZS1mb3JtLWZpZWxkLW91dGxpbmUtZGVuc2l0eSgkZGVuc2l0eS1zY2FsZSk7XG59XG5cbkBtaXhpbiBtYXQtZm9ybS1maWVsZC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKSB7XG4gICR0aGVtZTogbWF0LXByaXZhdGUtbGVnYWN5LWdldC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgQGluY2x1ZGUgbWF0LXByaXZhdGUtY2hlY2stZHVwbGljYXRlLXRoZW1lLXN0eWxlcygkdGhlbWUsICdtYXQtZm9ybS1maWVsZCcpIHtcbiAgICAkY29sb3I6IG1hdC1nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgJGRlbnNpdHk6IG1hdC1nZXQtZGVuc2l0eS1jb25maWcoJHRoZW1lKTtcbiAgICAkdHlwb2dyYXBoeTogbWF0LWdldC10eXBvZ3JhcGh5LWNvbmZpZygkdGhlbWUpO1xuXG4gICAgQGlmICRjb2xvciAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIG1hdC1mb3JtLWZpZWxkLWNvbG9yKCRjb2xvcik7XG4gICAgfVxuICAgIEBpZiAkZGVuc2l0eSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIG1hdC1mb3JtLWZpZWxkLWRlbnNpdHkoJGRlbnNpdHkpO1xuICAgIH1cbiAgICBAaWYgJHR5cG9ncmFwaHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBtYXQtZm9ybS1maWVsZC10eXBvZ3JhcGh5KCR0eXBvZ3JhcGh5KTtcbiAgICB9XG4gIH1cbn1cblxuXG5cblxuXG4kbWF0LXRyZWUtbm9kZS1oZWlnaHQ6IDQ4cHggIWRlZmF1bHQ7XG4vLyBNaW5pbXVtIGhlaWdodCBmb3IgdHJlZSBub2RlcyBpbiBoaWdoZXN0IGRlbnNpdHkgaXMgZGlmZmljdWx0IHRvIGRldGVybWluZSBhc1xuLy8gZGV2ZWxvcGVycyBjYW4gZGlzcGxheSBhcmJpdHJhcnkgY29udGVudC4gV2UgdXNlIGEgbWluaW11bSBoZWlnaHQgd2hpY2ggZW5zdXJlc1xuLy8gdGhhdCBjb21tb24gY29udGVudCBwbGFjZWQgaW4gdHJlZSBub2RlcyBkb2VzIG5vdCBleGNlZWQgKGUuZy4gaWNvbnMsIGNoZWNrYm94ZXMpLlxuJG1hdC10cmVlLW5vZGUtbWluaW11bS1oZWlnaHQ6IDI0cHggIWRlZmF1bHQ7XG4kbWF0LXRyZWUtbm9kZS1tYXhpbXVtLWhlaWdodDogJG1hdC10cmVlLW5vZGUtaGVpZ2h0ICFkZWZhdWx0O1xuXG4kbWF0LXRyZWUtZGVuc2l0eS1jb25maWc6IChcbiAgaGVpZ2h0OiAoXG4gICAgZGVmYXVsdDogJG1hdC10cmVlLW5vZGUtaGVpZ2h0LFxuICAgIG1heGltdW06ICRtYXQtdHJlZS1ub2RlLW1heGltdW0taGVpZ2h0LFxuICAgIG1pbmltdW06ICRtYXQtdHJlZS1ub2RlLW1pbmltdW0taGVpZ2h0LFxuICApXG4pICFkZWZhdWx0O1xuXG5cbkBtaXhpbiBtYXQtdHJlZS1jb2xvcigkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IG1hdC1nZXQtY29sb3ItY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAkYmFja2dyb3VuZDogbWFwLWdldCgkY29uZmlnLCBiYWNrZ3JvdW5kKTtcbiAgJGZvcmVncm91bmQ6IG1hcC1nZXQoJGNvbmZpZywgZm9yZWdyb3VuZCk7XG5cbiAgLm1hdC10cmVlIHtcbiAgICBiYWNrZ3JvdW5kOiBtYXQtY29sb3IoJGJhY2tncm91bmQsICdjYXJkJyk7XG4gIH1cblxuICAubWF0LXRyZWUtbm9kZSxcbiAgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlIHtcbiAgICBjb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCB0ZXh0KTtcbiAgfVxufVxuXG5AbWl4aW4gbWF0LXRyZWUtdHlwb2dyYXBoeSgkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IG1hdC1nZXQtdHlwb2dyYXBoeS1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gIC5tYXQtdHJlZSB7XG4gICAgZm9udC1mYW1pbHk6IG1hdC1mb250LWZhbWlseSgkY29uZmlnKTtcbiAgfVxuXG4gIC5tYXQtdHJlZS1ub2RlLFxuICAubWF0LW5lc3RlZC10cmVlLW5vZGUge1xuICAgIGZvbnQtd2VpZ2h0OiBtYXQtZm9udC13ZWlnaHQoJGNvbmZpZywgYm9keS0xKTtcbiAgICBmb250LXNpemU6IG1hdC1mb250LXNpemUoJGNvbmZpZywgYm9keS0xKTtcbiAgfVxufVxuXG5AbWl4aW4gbWF0LXRyZWUtZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRkZW5zaXR5LXNjYWxlOiBtYXQtZ2V0LWRlbnNpdHktY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAkaGVpZ2h0OiBtYXQtcHJpdmF0ZS1kZW5zaXR5LXByb3AtdmFsdWUoJG1hdC10cmVlLWRlbnNpdHktY29uZmlnLCAkZGVuc2l0eS1zY2FsZSwgaGVpZ2h0KTtcblxuICBAaW5jbHVkZSBtYXQtcHJpdmF0ZS1kZW5zaXR5LWxlZ2FjeS1jb21wYXRpYmlsaXR5KCkge1xuICAgIC5tYXQtdHJlZS1ub2RlIHtcbiAgICAgIG1pbi1oZWlnaHQ6ICRoZWlnaHQ7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBtYXQtdHJlZS10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKSB7XG4gICR0aGVtZTogbWF0LXByaXZhdGUtbGVnYWN5LWdldC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgQGluY2x1ZGUgbWF0LXByaXZhdGUtY2hlY2stZHVwbGljYXRlLXRoZW1lLXN0eWxlcygkdGhlbWUsICdtYXQtdHJlZScpIHtcbiAgICAkY29sb3I6IG1hdC1nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgJGRlbnNpdHk6IG1hdC1nZXQtZGVuc2l0eS1jb25maWcoJHRoZW1lKTtcbiAgICAkdHlwb2dyYXBoeTogbWF0LWdldC10eXBvZ3JhcGh5LWNvbmZpZygkdGhlbWUpO1xuXG4gICAgQGlmICRjb2xvciAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIG1hdC10cmVlLWNvbG9yKCRjb2xvcik7XG4gICAgfVxuICAgIEBpZiAkZGVuc2l0eSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIG1hdC10cmVlLWRlbnNpdHkoJGRlbnNpdHkpO1xuICAgIH1cbiAgICBAaWYgJHR5cG9ncmFwaHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBtYXQtdHJlZS10eXBvZ3JhcGh5KCR0eXBvZ3JhcGh5KTtcbiAgICB9XG4gIH1cbn1cblxuXG5cblxuLy8gSW5jbHVkZXMgYWxsIG9mIHRoZSB0eXBvZ3JhcGhpYyBzdHlsZXMuXG5AbWl4aW4gYW5ndWxhci1tYXRlcmlhbC10eXBvZ3JhcGh5KCRjb25maWctb3ItdGhlbWU6IG51bGwpIHtcbiAgJGNvbmZpZzogaWYobWF0LXByaXZhdGUtaXMtdGhlbWUtb2JqZWN0KCRjb25maWctb3ItdGhlbWUpLFxuICAgICAgbWF0LWdldC10eXBvZ3JhcGh5LWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKSwgJGNvbmZpZy1vci10aGVtZSk7XG5cbiAgLy8gSWYgbm8gYWN0dWFsIGNvbG9yIGNvbmZpZ3VyYXRpb24gaGFzIGJlZW4gc3BlY2lmaWVkLCBjcmVhdGUgYSBkZWZhdWx0IG9uZS5cbiAgQGlmIG5vdCAkY29uZmlnIHtcbiAgICAkY29uZmlnOiBtYXQtdHlwb2dyYXBoeS1jb25maWcoKTtcbiAgfVxuXG4gIC8vIFRPRE86IENPTVAtMzA5OiBEbyBub3QgdXNlIGluZGl2aWR1YWwgbWl4aW5zLiBJbnN0ZWFkLCB1c2UgdGhlIGFsbC10aGVtZSBtaXhpbiBhbmQgb25seVxuICAvLyBzcGVjaWZ5IGEgYHR5cG9ncmFwaHlgIGNvbmZpZyB3aGlsZSBzZXR0aW5nIGBjb2xvcmAgYW5kIGBkZW5zaXR5YCB0byBgbnVsbGAuIFRoaXMgaXMgY3VycmVudGx5XG4gIC8vIG5vdCBwb3NzaWJsZSBhcyBpdCB3b3VsZCBpbnRyb2R1Y2UgYSBjaXJjdWxhciBkZXBlbmRlbmN5IGZvciB0eXBvZ3JhcGh5IGJlY2F1c2UgdGhlIGBtYXQtY29yZWBcbiAgLy8gbWl4aW4gdGhhdCBpcyB0cmFuc2l0aXZlbHkgbG9hZGVkIGJ5IHRoZSBgYWxsLXRoZW1lYCBmaWxlLCBpbXBvcnRzIGBhbGwtdHlwb2dyYXBoeWAgd2hpY2hcbiAgLy8gd291bGQgdGhlbiBsb2FkIGBhbGwtdGhlbWVgIGFnYWluLiBUaGlzIHVsdGltYXRlbHkgcmVzdWx0cyBhIGNpcmN1bGFyIGRlcGVuZGVuY3kuXG5cbiAgQGluY2x1ZGUgbWF0LWJhZGdlLXR5cG9ncmFwaHkoJGNvbmZpZyk7XG4gIEBpbmNsdWRlIG1hdC1iYXNlLXR5cG9ncmFwaHkoJGNvbmZpZyk7XG4gIEBpbmNsdWRlIG1hdC1hdXRvY29tcGxldGUtdHlwb2dyYXBoeSgkY29uZmlnKTtcbiAgQGluY2x1ZGUgbWF0LWJvdHRvbS1zaGVldC10eXBvZ3JhcGh5KCRjb25maWcpO1xuICBAaW5jbHVkZSBtYXQtYnV0dG9uLXR5cG9ncmFwaHkoJGNvbmZpZyk7XG4gIEBpbmNsdWRlIG1hdC1idXR0b24tdG9nZ2xlLXR5cG9ncmFwaHkoJGNvbmZpZyk7XG4gIEBpbmNsdWRlIG1hdC1jYXJkLXR5cG9ncmFwaHkoJGNvbmZpZyk7XG4gIEBpbmNsdWRlIG1hdC1jaGVja2JveC10eXBvZ3JhcGh5KCRjb25maWcpO1xuICBAaW5jbHVkZSBtYXQtY2hpcHMtdHlwb2dyYXBoeSgkY29uZmlnKTtcbiAgQGluY2x1ZGUgbWF0LWRpdmlkZXItdHlwb2dyYXBoeSgkY29uZmlnKTtcbiAgQGluY2x1ZGUgbWF0LXRhYmxlLXR5cG9ncmFwaHkoJGNvbmZpZyk7XG4gIEBpbmNsdWRlIG1hdC1kYXRlcGlja2VyLXR5cG9ncmFwaHkoJGNvbmZpZyk7XG4gIEBpbmNsdWRlIG1hdC1kaWFsb2ctdHlwb2dyYXBoeSgkY29uZmlnKTtcbiAgQGluY2x1ZGUgbWF0LWV4cGFuc2lvbi1wYW5lbC10eXBvZ3JhcGh5KCRjb25maWcpO1xuICBAaW5jbHVkZSBtYXQtZm9ybS1maWVsZC10eXBvZ3JhcGh5KCRjb25maWcpO1xuICBAaW5jbHVkZSBtYXQtZ3JpZC1saXN0LXR5cG9ncmFwaHkoJGNvbmZpZyk7XG4gIEBpbmNsdWRlIG1hdC1pY29uLXR5cG9ncmFwaHkoJGNvbmZpZyk7XG4gIEBpbmNsdWRlIG1hdC1pbnB1dC10eXBvZ3JhcGh5KCRjb25maWcpO1xuICBAaW5jbHVkZSBtYXQtbWVudS10eXBvZ3JhcGh5KCRjb25maWcpO1xuICBAaW5jbHVkZSBtYXQtcGFnaW5hdG9yLXR5cG9ncmFwaHkoJGNvbmZpZyk7XG4gIEBpbmNsdWRlIG1hdC1wcm9ncmVzcy1iYXItdHlwb2dyYXBoeSgkY29uZmlnKTtcbiAgQGluY2x1ZGUgbWF0LXByb2dyZXNzLXNwaW5uZXItdHlwb2dyYXBoeSgkY29uZmlnKTtcbiAgQGluY2x1ZGUgbWF0LXJhZGlvLXR5cG9ncmFwaHkoJGNvbmZpZyk7XG4gIEBpbmNsdWRlIG1hdC1zZWxlY3QtdHlwb2dyYXBoeSgkY29uZmlnKTtcbiAgQGluY2x1ZGUgbWF0LXNpZGVuYXYtdHlwb2dyYXBoeSgkY29uZmlnKTtcbiAgQGluY2x1ZGUgbWF0LXNsaWRlLXRvZ2dsZS10eXBvZ3JhcGh5KCRjb25maWcpO1xuICBAaW5jbHVkZSBtYXQtc2xpZGVyLXR5cG9ncmFwaHkoJGNvbmZpZyk7XG4gIEBpbmNsdWRlIG1hdC1zdGVwcGVyLXR5cG9ncmFwaHkoJGNvbmZpZyk7XG4gIEBpbmNsdWRlIG1hdC1zb3J0LXR5cG9ncmFwaHkoJGNvbmZpZyk7XG4gIEBpbmNsdWRlIG1hdC10YWJzLXR5cG9ncmFwaHkoJGNvbmZpZyk7XG4gIEBpbmNsdWRlIG1hdC10b29sYmFyLXR5cG9ncmFwaHkoJGNvbmZpZyk7XG4gIEBpbmNsdWRlIG1hdC10b29sdGlwLXR5cG9ncmFwaHkoJGNvbmZpZyk7XG4gIEBpbmNsdWRlIG1hdC1saXN0LXR5cG9ncmFwaHkoJGNvbmZpZyk7XG4gIEBpbmNsdWRlIG1hdC1vcHRpb24tdHlwb2dyYXBoeSgkY29uZmlnKTtcbiAgQGluY2x1ZGUgbWF0LW9wdGdyb3VwLXR5cG9ncmFwaHkoJGNvbmZpZyk7XG4gIEBpbmNsdWRlIG1hdC1zbmFjay1iYXItdHlwb2dyYXBoeSgkY29uZmlnKTtcbiAgQGluY2x1ZGUgbWF0LXRyZWUtdHlwb2dyYXBoeSgkY29uZmlnKTtcbn1cblxuXG4vLyBNaXhpbiB0aGF0IHJlbmRlcnMgYWxsIG9mIHRoZSBjb3JlIHN0eWxlcyB0aGF0IGFyZSBub3QgdGhlbWUtZGVwZW5kZW50LlxuQG1peGluIG1hdC1jb3JlKCR0eXBvZ3JhcGh5LWNvbmZpZzogbnVsbCkge1xuICBAaW5jbHVkZSBhbmd1bGFyLW1hdGVyaWFsLXR5cG9ncmFwaHkoJHR5cG9ncmFwaHktY29uZmlnKTtcbiAgQGluY2x1ZGUgbWF0LXJpcHBsZSgpO1xuICBAaW5jbHVkZSBjZGstYTExeSgpO1xuICBAaW5jbHVkZSBjZGstb3ZlcmxheSgpO1xuICBAaW5jbHVkZSBjZGstdGV4dC1maWVsZCgpO1xuXG4gIEBpbmNsdWRlIG1hdC1wcml2YXRlLXN0cm9uZy1mb2N1cy1pbmRpY2F0b3JzLXBvc2l0aW9uaW5nKCk7XG4gIEBpbmNsdWRlIF9tYXQtbWRjLWNvcmUoKTtcbn1cblxuQG1peGluIG1hdC1jb3JlLWNvbG9yKCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogbWF0LWdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gIC8vIFdyYXBwZXIgZWxlbWVudCB0aGF0IHByb3ZpZGVzIHRoZSB0aGVtZSBiYWNrZ3JvdW5kIHdoZW4gdGhlIHVzZXIncyBjb250ZW50IGlzbid0XG4gIC8vIGluc2lkZSBvZiBhIGBtYXQtc2lkZW5hdi1jb250YWluZXJgLiBOb3RlIHRoYXQgd2UgbmVlZCB0byBleGNsdWRlIHRoZSBhbXBlcnNhbmRcbiAgLy8gc2VsZWN0b3IgaW4gY2FzZSB0aGUgbWl4aW4gaXMgaW5jbHVkZWQgYXQgdGhlIHRvcCBsZXZlbC5cbiAgLm1hdC1hcHAtYmFja2dyb3VuZCN7aWYoJiwgJywgJi5tYXQtYXBwLWJhY2tncm91bmQnLCAnJyl9IHtcbiAgICAkYmFja2dyb3VuZDogbWFwLWdldCgkY29uZmlnLCBiYWNrZ3JvdW5kKTtcbiAgICAkZm9yZWdyb3VuZDogbWFwLWdldCgkY29uZmlnLCBmb3JlZ3JvdW5kKTtcblxuICAgIGJhY2tncm91bmQtY29sb3I6IG1hdC1jb2xvcigkYmFja2dyb3VuZCwgYmFja2dyb3VuZCk7XG4gICAgY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgdGV4dCk7XG4gIH1cblxuICAvLyBQcm92aWRlcyBleHRlcm5hbCBDU1MgY2xhc3NlcyBmb3IgZWFjaCBlbGV2YXRpb24gdmFsdWUuIEVhY2ggQ1NTIGNsYXNzIGlzIGZvcm1hdHRlZCBhc1xuICAvLyBgbWF0LWVsZXZhdGlvbi16JHpWYWx1ZWAgd2hlcmUgYCR6VmFsdWVgIGNvcnJlc3BvbmRzIHRvIHRoZSB6LXNwYWNlIHRvIHdoaWNoIHRoZSBlbGVtZW50IGlzXG4gIC8vIGVsZXZhdGVkLlxuICBAZm9yICR6VmFsdWUgZnJvbSAwIHRocm91Z2ggMjQge1xuICAgIC4jeyRtYXQtZWxldmF0aW9uLXByZWZpeH0jeyR6VmFsdWV9IHtcbiAgICAgIEBpbmNsdWRlIG1hdC1wcml2YXRlLXRoZW1lLWVsZXZhdGlvbigkelZhbHVlLCAkY29uZmlnKTtcbiAgICB9XG4gIH1cblxuICAvLyBNYXJrZXIgdGhhdCBpcyB1c2VkIHRvIGRldGVybWluZSB3aGV0aGVyIHRoZSB1c2VyIGhhcyBhZGRlZCBhIHRoZW1lIHRvIHRoZWlyIHBhZ2UuXG4gIEBhdC1yb290IHtcbiAgICAubWF0LXRoZW1lLWxvYWRlZC1tYXJrZXIge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gIH1cbn1cblxuLy8gTWl4aW4gdGhhdCByZW5kZXJzIGFsbCBvZiB0aGUgY29yZSBzdHlsZXMgdGhhdCBkZXBlbmQgb24gdGhlIHRoZW1lLlxuQG1peGluIG1hdC1jb3JlLXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiBtYXQtcHJpdmF0ZS1sZWdhY3ktZ2V0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICAvLyBXcmFwIHRoZSBzdWItdGhlbWUgaW5jbHVkZXMgaW4gdGhlIGR1cGxpY2F0ZSB0aGVtZSBzdHlsZXMgbWl4aW4uIFRoaXMgZW5zdXJlcyB0aGF0XG4gIC8vIHRoZXJlIHdvbid0IGJlIG11bHRpcGxlIHdhcm5pbmdzLiBlLmcuIGlmIGBtYXQtY29yZS10aGVtZWAgcmVwb3J0cyBhIHdhcm5pbmcsIHRoZW5cbiAgLy8gdGhlIGltcG9ydGVkIHRoZW1lcyAoc3VjaCBhcyBgbWF0LXJpcHBsZS10aGVtZWApIHNob3VsZCBub3QgcmVwb3J0IGFnYWluLlxuICBAaW5jbHVkZSBtYXQtcHJpdmF0ZS1jaGVjay1kdXBsaWNhdGUtdGhlbWUtc3R5bGVzKCR0aGVtZSwgJ21hdC1jb3JlJykge1xuICAgIEBpbmNsdWRlIG1hdC1yaXBwbGUtdGhlbWUoJHRoZW1lKTtcbiAgICBAaW5jbHVkZSBtYXQtb3B0aW9uLXRoZW1lKCR0aGVtZSk7XG4gICAgQGluY2x1ZGUgbWF0LW9wdGdyb3VwLXRoZW1lKCR0aGVtZSk7XG4gICAgQGluY2x1ZGUgbWF0LXBzZXVkby1jaGVja2JveC10aGVtZSgkdGhlbWUpO1xuXG4gICAgJGNvbG9yOiBtYXQtZ2V0LWNvbG9yLWNvbmZpZygkdGhlbWUpO1xuICAgIEBpZiAkY29sb3IgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBtYXQtY29yZS1jb2xvcigkY29sb3IpO1xuICAgIH1cbiAgfVxufVxuXG4vLyBNaXhpbiB0aGF0IHJlbmRlcnMgYWxsIG9mIHRoZSBjb3JlIE1EQyBzdHlsZXMuIFByaXZhdGUgbWl4aW4gaW5jbHVkZWQgd2l0aCBgbWF0LWNvcmVgLlxuQG1peGluIF9tYXQtbWRjLWNvcmUoKSB7XG4gIEBpbmNsdWRlIF9tYXQtbWRjLXN0cm9uZy1mb2N1cy1pbmRpY2F0b3JzLXBvc2l0aW9uaW5nKCk7XG59XG5cbi8vIE1peGluIHRoYXQgZW5zdXJlcyBmb2N1cyBpbmRpY2F0b3IgaG9zdCBlbGVtZW50cyBhcmUgcG9zaXRpb25lZCBzbyB0aGF0IHRoZSBmb2N1cyBpbmRpY2F0b3Jcbi8vIHBzZXVkbyBlbGVtZW50IHdpdGhpbiBpcyBwb3NpdGlvbmVkIHJlbGF0aXZlIHRvIHRoZSBob3N0LiBQcml2YXRlIG1peGluIGluY2x1ZGVkIHdpdGhpblxuLy8gYF9tYXQtbWRjLWNvcmVgLlxuQG1peGluIF9tYXQtbWRjLXN0cm9uZy1mb2N1cy1pbmRpY2F0b3JzLXBvc2l0aW9uaW5nKCkge1xuICAubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3Ige1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgfVxufVxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG4vLyBDcmVhdGUgYSB0aGVtZS5cbkBtaXhpbiBhbmd1bGFyLW1hdGVyaWFsLXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJGRlZHVwZS1rZXk6ICdhbmd1bGFyLW1hdGVyaWFsLXRoZW1lJztcbiAgQGluY2x1ZGUgbWF0LXByaXZhdGUtY2hlY2stZHVwbGljYXRlLXRoZW1lLXN0eWxlcygkdGhlbWUtb3ItY29sb3ItY29uZmlnLCAkZGVkdXBlLWtleSkge1xuICAgIEBpbmNsdWRlIG1hdC1jb3JlLXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICAgIEBpbmNsdWRlIG1hdC1hdXRvY29tcGxldGUtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZyk7XG4gICAgQGluY2x1ZGUgbWF0LWJhZGdlLXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICAgIEBpbmNsdWRlIG1hdC1ib3R0b20tc2hlZXQtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZyk7XG4gICAgQGluY2x1ZGUgbWF0LWJ1dHRvbi10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgICBAaW5jbHVkZSBtYXQtYnV0dG9uLXRvZ2dsZS10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgICBAaW5jbHVkZSBtYXQtY2FyZC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgICBAaW5jbHVkZSBtYXQtY2hlY2tib3gtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZyk7XG4gICAgQGluY2x1ZGUgbWF0LWNoaXBzLXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICAgIEBpbmNsdWRlIG1hdC10YWJsZS10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgICBAaW5jbHVkZSBtYXQtZGF0ZXBpY2tlci10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgICBAaW5jbHVkZSBtYXQtZGlhbG9nLXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICAgIEBpbmNsdWRlIG1hdC1kaXZpZGVyLXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICAgIEBpbmNsdWRlIG1hdC1leHBhbnNpb24tcGFuZWwtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZyk7XG4gICAgQGluY2x1ZGUgbWF0LWZvcm0tZmllbGQtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZyk7XG4gICAgQGluY2x1ZGUgbWF0LWdyaWQtbGlzdC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgICBAaW5jbHVkZSBtYXQtaWNvbi10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgICBAaW5jbHVkZSBtYXQtaW5wdXQtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZyk7XG4gICAgQGluY2x1ZGUgbWF0LWxpc3QtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZyk7XG4gICAgQGluY2x1ZGUgbWF0LW1lbnUtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZyk7XG4gICAgQGluY2x1ZGUgbWF0LXBhZ2luYXRvci10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgICBAaW5jbHVkZSBtYXQtcHJvZ3Jlc3MtYmFyLXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICAgIEBpbmNsdWRlIG1hdC1wcm9ncmVzcy1zcGlubmVyLXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICAgIEBpbmNsdWRlIG1hdC1yYWRpby10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgICBAaW5jbHVkZSBtYXQtc2VsZWN0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICAgIEBpbmNsdWRlIG1hdC1zaWRlbmF2LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICAgIEBpbmNsdWRlIG1hdC1zbGlkZS10b2dnbGUtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZyk7XG4gICAgQGluY2x1ZGUgbWF0LXNsaWRlci10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgICBAaW5jbHVkZSBtYXQtc3RlcHBlci10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgICBAaW5jbHVkZSBtYXQtc29ydC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgICBAaW5jbHVkZSBtYXQtdGFicy10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgICBAaW5jbHVkZSBtYXQtdG9vbGJhci10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgICBAaW5jbHVkZSBtYXQtdG9vbHRpcC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgICBAaW5jbHVkZSBtYXQtdHJlZS10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgICBAaW5jbHVkZSBtYXQtc25hY2stYmFyLXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICB9XG59XG5cblxuXG4vLyBJbmNsdWRlcyBhbGwgb2YgdGhlIGNvbG9yIHN0eWxlcy5cbkBtaXhpbiBhbmd1bGFyLW1hdGVyaWFsLWNvbG9yKCRjb25maWctb3ItdGhlbWUpIHtcbiAgLy8gSW4gY2FzZSBhIHRoZW1lIG9iamVjdCBoYXMgYmVlbiBwYXNzZWQgaW5zdGVhZCBvZiBhIGNvbmZpZ3VyYXRpb24gZm9yXG4gIC8vIHRoZSBjb2xvciBzeXN0ZW0sIGV4dHJhY3QgdGhlIGNvbG9yIGNvbmZpZyBmcm9tIHRoZSB0aGVtZSBvYmplY3QuXG4gICRjb25maWc6IGlmKG1hdC1wcml2YXRlLWlzLXRoZW1lLW9iamVjdCgkY29uZmlnLW9yLXRoZW1lKSxcbiAgICAgIG1hdC1nZXQtY29sb3ItY29uZmlnKCRjb25maWctb3ItdGhlbWUpLCAkY29uZmlnLW9yLXRoZW1lKTtcblxuICBAaWYgJGNvbmZpZyA9PSBudWxsIHtcbiAgICBAZXJyb3IgJ05vIGNvbG9yIGNvbmZpZ3VyYXRpb24gc3BlY2lmaWVkLic7XG4gIH1cblxuICBAaW5jbHVkZSBhbmd1bGFyLW1hdGVyaWFsLXRoZW1lKChcbiAgICBjb2xvcjogJGNvbmZpZyxcbiAgICB0eXBvZ3JhcGh5OiBudWxsLFxuICAgIGRlbnNpdHk6IG51bGwsXG4gICkpO1xufVxuXG5cblxuXG5cblxuXG5cblxuXG4vLyBJbmNsdWRlcyBhbGwgb2YgdGhlIGRlbnNpdHkgc3R5bGVzLlxuQG1peGluIGFuZ3VsYXItbWF0ZXJpYWwtZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7XG4gIC8vIEluIGNhc2UgYSB0aGVtZSBvYmplY3QgaGFzIGJlZW4gcGFzc2VkIGluc3RlYWQgb2YgYSBjb25maWd1cmF0aW9uIGZvclxuICAvLyB0aGUgZGVuc2l0eSBzeXN0ZW0sIGV4dHJhY3QgdGhlIGRlbnNpdHkgY29uZmlnIGZyb20gdGhlIHRoZW1lIG9iamVjdC5cbiAgJGNvbmZpZzogaWYobWF0LXByaXZhdGUtaXMtdGhlbWUtb2JqZWN0KCRjb25maWctb3ItdGhlbWUpLFxuICAgICAgbWF0LWdldC1kZW5zaXR5LWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKSwgJGNvbmZpZy1vci10aGVtZSk7XG5cbiAgQGlmICRjb25maWcgPT0gbnVsbCB7XG4gICAgQGVycm9yICdObyBkZW5zaXR5IGNvbmZpZ3VyYXRpb24gc3BlY2lmaWVkLic7XG4gIH1cblxuICAvLyBUT0RPOiBDT01QLTMwOTogRG8gbm90IHVzZSBpbmRpdmlkdWFsIG1peGlucy4gSW5zdGVhZCwgdXNlIHRoZSBhbGwtdGhlbWUgbWl4aW4gYW5kIG9ubHlcbiAgLy8gc3BlY2lmeSBhIGBkZW5zaXR5YCBjb25maWcgd2hpbGUgc2V0dGluZyBgY29sb3JgIGFuZCBgdHlwb2dyYXBoeWAgdG8gYG51bGxgLiBUaGlzIGlzIGN1cnJlbnRseVxuICAvLyBub3QgcG9zc2libGUgYXMgaXQgd291bGQgaW50cm9kdWNlIGEgY2lyY3VsYXIgZGVwZW5kZW5jeSBmb3IgZGVuc2l0eSBiZWNhdXNlIHRoZSBgbWF0LWNvcmVgXG4gIC8vIG1peGluIHRoYXQgaXMgdHJhbnNpdGl2ZWx5IGxvYWRlZCBieSB0aGUgYGFsbC10aGVtZWAgZmlsZSwgaW1wb3J0cyBgYWxsLWRlbnNpdHlgIHdoaWNoXG4gIC8vIHdvdWxkIHRoZW4gbG9hZCBgYWxsLXRoZW1lYCBhZ2Fpbi4gVGhpcyB1bHRpbWF0ZWx5IHJlc3VsdHMgYSBjaXJjdWxhciBkZXBlbmRlbmN5LlxuXG4gIEBpbmNsdWRlIG1hdC1leHBhbnNpb24tcGFuZWwtZGVuc2l0eSgkY29uZmlnKTtcbiAgQGluY2x1ZGUgbWF0LXN0ZXBwZXItZGVuc2l0eSgkY29uZmlnKTtcbiAgQGluY2x1ZGUgbWF0LXRvb2xiYXItZGVuc2l0eSgkY29uZmlnKTtcbiAgQGluY2x1ZGUgbWF0LXRyZWUtZGVuc2l0eSgkY29uZmlnKTtcbiAgQGluY2x1ZGUgbWF0LXBhZ2luYXRvci1kZW5zaXR5KCRjb25maWcpO1xuICBAaW5jbHVkZSBtYXQtZm9ybS1maWVsZC1kZW5zaXR5KCRjb25maWcpO1xuICBAaW5jbHVkZSBtYXQtYnV0dG9uLXRvZ2dsZS1kZW5zaXR5KCRjb25maWcpO1xufVxuXG5cblxuIiwiLyogQkFTSUNTICovXG5cbi5Db2RlTWlycm9yIHtcbiAgLyogU2V0IGhlaWdodCwgd2lkdGgsIGJvcmRlcnMsIGFuZCBnbG9iYWwgZm9udCBwcm9wZXJ0aWVzIGhlcmUgKi9cbiAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTtcbiAgaGVpZ2h0OiAzMDBweDtcbiAgY29sb3I6IGJsYWNrO1xuICBkaXJlY3Rpb246IGx0cjtcbn1cblxuLyogUEFERElORyAqL1xuXG4uQ29kZU1pcnJvci1saW5lcyB7XG4gIHBhZGRpbmc6IDRweCAwOyAvKiBWZXJ0aWNhbCBwYWRkaW5nIGFyb3VuZCBjb250ZW50ICovXG59XG4uQ29kZU1pcnJvciBwcmUuQ29kZU1pcnJvci1saW5lLFxuLkNvZGVNaXJyb3IgcHJlLkNvZGVNaXJyb3ItbGluZS1saWtlIHtcbiAgcGFkZGluZzogMCA0cHg7IC8qIEhvcml6b250YWwgcGFkZGluZyBvZiBjb250ZW50ICovXG59XG5cbi5Db2RlTWlycm9yLXNjcm9sbGJhci1maWxsZXIsIC5Db2RlTWlycm9yLWd1dHRlci1maWxsZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsgLyogVGhlIGxpdHRsZSBzcXVhcmUgYmV0d2VlbiBIIGFuZCBWIHNjcm9sbGJhcnMgKi9cbn1cblxuLyogR1VUVEVSICovXG5cbi5Db2RlTWlycm9yLWd1dHRlcnMge1xuICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjZGRkO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjdmN2Y3O1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuLkNvZGVNaXJyb3ItbGluZW51bWJlcnMge31cbi5Db2RlTWlycm9yLWxpbmVudW1iZXIge1xuICBwYWRkaW5nOiAwIDNweCAwIDVweDtcbiAgbWluLXdpZHRoOiAyMHB4O1xuICB0ZXh0LWFsaWduOiByaWdodDtcbiAgY29sb3I6ICM5OTk7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG5cbi5Db2RlTWlycm9yLWd1dHRlcm1hcmtlciB7IGNvbG9yOiBibGFjazsgfVxuLkNvZGVNaXJyb3ItZ3V0dGVybWFya2VyLXN1YnRsZSB7IGNvbG9yOiAjOTk5OyB9XG5cbi8qIENVUlNPUiAqL1xuXG4uQ29kZU1pcnJvci1jdXJzb3Ige1xuICBib3JkZXItbGVmdDogMXB4IHNvbGlkIGJsYWNrO1xuICBib3JkZXItcmlnaHQ6IG5vbmU7XG4gIHdpZHRoOiAwO1xufVxuLyogU2hvd24gd2hlbiBtb3ZpbmcgaW4gYmktZGlyZWN0aW9uYWwgdGV4dCAqL1xuLkNvZGVNaXJyb3IgZGl2LkNvZGVNaXJyb3Itc2Vjb25kYXJ5Y3Vyc29yIHtcbiAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCBzaWx2ZXI7XG59XG4uY20tZmF0LWN1cnNvciAuQ29kZU1pcnJvci1jdXJzb3Ige1xuICB3aWR0aDogYXV0bztcbiAgYm9yZGVyOiAwICFpbXBvcnRhbnQ7XG4gIGJhY2tncm91bmQ6ICM3ZTc7XG59XG4uY20tZmF0LWN1cnNvciBkaXYuQ29kZU1pcnJvci1jdXJzb3JzIHtcbiAgei1pbmRleDogMTtcbn1cbi5jbS1mYXQtY3Vyc29yIC5Db2RlTWlycm9yLWxpbmU6OnNlbGVjdGlvbixcbi5jbS1mYXQtY3Vyc29yIC5Db2RlTWlycm9yLWxpbmUgPiBzcGFuOjpzZWxlY3Rpb24sIFxuLmNtLWZhdC1jdXJzb3IgLkNvZGVNaXJyb3ItbGluZSA+IHNwYW4gPiBzcGFuOjpzZWxlY3Rpb24geyBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsgfVxuLmNtLWZhdC1jdXJzb3IgLkNvZGVNaXJyb3ItbGluZTo6LW1vei1zZWxlY3Rpb24sXG4uY20tZmF0LWN1cnNvciAuQ29kZU1pcnJvci1saW5lID4gc3Bhbjo6LW1vei1zZWxlY3Rpb24sXG4uY20tZmF0LWN1cnNvciAuQ29kZU1pcnJvci1saW5lID4gc3BhbiA+IHNwYW46Oi1tb3otc2VsZWN0aW9uIHsgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7IH1cbi5jbS1mYXQtY3Vyc29yIHsgY2FyZXQtY29sb3I6IHRyYW5zcGFyZW50OyB9XG5ALW1vei1rZXlmcmFtZXMgYmxpbmsge1xuICAwJSB7fVxuICA1MCUgeyBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsgfVxuICAxMDAlIHt9XG59XG5ALXdlYmtpdC1rZXlmcmFtZXMgYmxpbmsge1xuICAwJSB7fVxuICA1MCUgeyBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsgfVxuICAxMDAlIHt9XG59XG5Aa2V5ZnJhbWVzIGJsaW5rIHtcbiAgMCUge31cbiAgNTAlIHsgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7IH1cbiAgMTAwJSB7fVxufVxuXG4vKiBDYW4gc3R5bGUgY3Vyc29yIGRpZmZlcmVudCBpbiBvdmVyd3JpdGUgKG5vbi1pbnNlcnQpIG1vZGUgKi9cbi5Db2RlTWlycm9yLW92ZXJ3cml0ZSAuQ29kZU1pcnJvci1jdXJzb3Ige31cblxuLmNtLXRhYiB7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgdGV4dC1kZWNvcmF0aW9uOiBpbmhlcml0OyB9XG5cbi5Db2RlTWlycm9yLXJ1bGVycyB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGVmdDogMDsgcmlnaHQ6IDA7IHRvcDogLTUwcHg7IGJvdHRvbTogMDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5Db2RlTWlycm9yLXJ1bGVyIHtcbiAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjO1xuICB0b3A6IDA7IGJvdHRvbTogMDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xufVxuXG4vKiBERUZBVUxUIFRIRU1FICovXG5cbi5jbS1zLWRlZmF1bHQgLmNtLWhlYWRlciB7Y29sb3I6IGJsdWU7fVxuLmNtLXMtZGVmYXVsdCAuY20tcXVvdGUge2NvbG9yOiAjMDkwO31cbi5jbS1uZWdhdGl2ZSB7Y29sb3I6ICNkNDQ7fVxuLmNtLXBvc2l0aXZlIHtjb2xvcjogIzI5Mjt9XG4uY20taGVhZGVyLCAuY20tc3Ryb25nIHtmb250LXdlaWdodDogYm9sZDt9XG4uY20tZW0ge2ZvbnQtc3R5bGU6IGl0YWxpYzt9XG4uY20tbGluayB7dGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7fVxuLmNtLXN0cmlrZXRocm91Z2gge3RleHQtZGVjb3JhdGlvbjogbGluZS10aHJvdWdoO31cblxuLmNtLXMtZGVmYXVsdCAuY20ta2V5d29yZCB7Y29sb3I6ICM3MDg7fVxuLmNtLXMtZGVmYXVsdCAuY20tYXRvbSB7Y29sb3I6ICMyMTk7fVxuLmNtLXMtZGVmYXVsdCAuY20tbnVtYmVyIHtjb2xvcjogIzE2NDt9XG4uY20tcy1kZWZhdWx0IC5jbS1kZWYge2NvbG9yOiAjMDBmO31cbi5jbS1zLWRlZmF1bHQgLmNtLXZhcmlhYmxlLFxuLmNtLXMtZGVmYXVsdCAuY20tcHVuY3R1YXRpb24sXG4uY20tcy1kZWZhdWx0IC5jbS1wcm9wZXJ0eSxcbi5jbS1zLWRlZmF1bHQgLmNtLW9wZXJhdG9yIHt9XG4uY20tcy1kZWZhdWx0IC5jbS12YXJpYWJsZS0yIHtjb2xvcjogIzA1YTt9XG4uY20tcy1kZWZhdWx0IC5jbS12YXJpYWJsZS0zLCAuY20tcy1kZWZhdWx0IC5jbS10eXBlIHtjb2xvcjogIzA4NTt9XG4uY20tcy1kZWZhdWx0IC5jbS1jb21tZW50IHtjb2xvcjogI2E1MDt9XG4uY20tcy1kZWZhdWx0IC5jbS1zdHJpbmcge2NvbG9yOiAjYTExO31cbi5jbS1zLWRlZmF1bHQgLmNtLXN0cmluZy0yIHtjb2xvcjogI2Y1MDt9XG4uY20tcy1kZWZhdWx0IC5jbS1tZXRhIHtjb2xvcjogIzU1NTt9XG4uY20tcy1kZWZhdWx0IC5jbS1xdWFsaWZpZXIge2NvbG9yOiAjNTU1O31cbi5jbS1zLWRlZmF1bHQgLmNtLWJ1aWx0aW4ge2NvbG9yOiAjMzBhO31cbi5jbS1zLWRlZmF1bHQgLmNtLWJyYWNrZXQge2NvbG9yOiAjOTk3O31cbi5jbS1zLWRlZmF1bHQgLmNtLXRhZyB7Y29sb3I6ICMxNzA7fVxuLmNtLXMtZGVmYXVsdCAuY20tYXR0cmlidXRlIHtjb2xvcjogIzAwYzt9XG4uY20tcy1kZWZhdWx0IC5jbS1ociB7Y29sb3I6ICM5OTk7fVxuLmNtLXMtZGVmYXVsdCAuY20tbGluayB7Y29sb3I6ICMwMGM7fVxuXG4uY20tcy1kZWZhdWx0IC5jbS1lcnJvciB7Y29sb3I6ICNmMDA7fVxuLmNtLWludmFsaWRjaGFyIHtjb2xvcjogI2YwMDt9XG5cbi5Db2RlTWlycm9yLWNvbXBvc2luZyB7IGJvcmRlci1ib3R0b206IDJweCBzb2xpZDsgfVxuXG4vKiBEZWZhdWx0IHN0eWxlcyBmb3IgY29tbW9uIGFkZG9ucyAqL1xuXG5kaXYuQ29kZU1pcnJvciBzcGFuLkNvZGVNaXJyb3ItbWF0Y2hpbmdicmFja2V0IHtjb2xvcjogIzBiMDt9XG5kaXYuQ29kZU1pcnJvciBzcGFuLkNvZGVNaXJyb3Itbm9ubWF0Y2hpbmdicmFja2V0IHtjb2xvcjogI2EyMjt9XG4uQ29kZU1pcnJvci1tYXRjaGluZ3RhZyB7IGJhY2tncm91bmQ6IHJnYmEoMjU1LCAxNTAsIDAsIC4zKTsgfVxuLkNvZGVNaXJyb3ItYWN0aXZlbGluZS1iYWNrZ3JvdW5kIHtiYWNrZ3JvdW5kOiAjZThmMmZmO31cblxuLyogU1RPUCAqL1xuXG4vKiBUaGUgcmVzdCBvZiB0aGlzIGZpbGUgY29udGFpbnMgc3R5bGVzIHJlbGF0ZWQgdG8gdGhlIG1lY2hhbmljcyBvZlxuICAgdGhlIGVkaXRvci4gWW91IHByb2JhYmx5IHNob3VsZG4ndCB0b3VjaCB0aGVtLiAqL1xuXG4uQ29kZU1pcnJvciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgYmFja2dyb3VuZDogd2hpdGU7XG59XG5cbi5Db2RlTWlycm9yLXNjcm9sbCB7XG4gIG92ZXJmbG93OiBzY3JvbGwgIWltcG9ydGFudDsgLyogVGhpbmdzIHdpbGwgYnJlYWsgaWYgdGhpcyBpcyBvdmVycmlkZGVuICovXG4gIC8qIDUwcHggaXMgdGhlIG1hZ2ljIG1hcmdpbiB1c2VkIHRvIGhpZGUgdGhlIGVsZW1lbnQncyByZWFsIHNjcm9sbGJhcnMgKi9cbiAgLyogU2VlIG92ZXJmbG93OiBoaWRkZW4gaW4gLkNvZGVNaXJyb3IgKi9cbiAgbWFyZ2luLWJvdHRvbTogLTUwcHg7IG1hcmdpbi1yaWdodDogLTUwcHg7XG4gIHBhZGRpbmctYm90dG9tOiA1MHB4O1xuICBoZWlnaHQ6IDEwMCU7XG4gIG91dGxpbmU6IG5vbmU7IC8qIFByZXZlbnQgZHJhZ2dpbmcgZnJvbSBoaWdobGlnaHRpbmcgdGhlIGVsZW1lbnQgKi9cbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB6LWluZGV4OiAwO1xufVxuLkNvZGVNaXJyb3Itc2l6ZXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGJvcmRlci1yaWdodDogNTBweCBzb2xpZCB0cmFuc3BhcmVudDtcbn1cblxuLyogVGhlIGZha2UsIHZpc2libGUgc2Nyb2xsYmFycy4gVXNlZCB0byBmb3JjZSByZWRyYXcgZHVyaW5nIHNjcm9sbGluZ1xuICAgYmVmb3JlIGFjdHVhbCBzY3JvbGxpbmcgaGFwcGVucywgdGh1cyBwcmV2ZW50aW5nIHNoYWtpbmcgYW5kXG4gICBmbGlja2VyaW5nIGFydGlmYWN0cy4gKi9cbi5Db2RlTWlycm9yLXZzY3JvbGxiYXIsIC5Db2RlTWlycm9yLWhzY3JvbGxiYXIsIC5Db2RlTWlycm9yLXNjcm9sbGJhci1maWxsZXIsIC5Db2RlTWlycm9yLWd1dHRlci1maWxsZXIge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6IDY7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIG91dGxpbmU6IG5vbmU7XG59XG4uQ29kZU1pcnJvci12c2Nyb2xsYmFyIHtcbiAgcmlnaHQ6IDA7IHRvcDogMDtcbiAgb3ZlcmZsb3cteDogaGlkZGVuO1xuICBvdmVyZmxvdy15OiBzY3JvbGw7XG59XG4uQ29kZU1pcnJvci1oc2Nyb2xsYmFyIHtcbiAgYm90dG9tOiAwOyBsZWZ0OiAwO1xuICBvdmVyZmxvdy15OiBoaWRkZW47XG4gIG92ZXJmbG93LXg6IHNjcm9sbDtcbn1cbi5Db2RlTWlycm9yLXNjcm9sbGJhci1maWxsZXIge1xuICByaWdodDogMDsgYm90dG9tOiAwO1xufVxuLkNvZGVNaXJyb3ItZ3V0dGVyLWZpbGxlciB7XG4gIGxlZnQ6IDA7IGJvdHRvbTogMDtcbn1cblxuLkNvZGVNaXJyb3ItZ3V0dGVycyB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTsgbGVmdDogMDsgdG9wOiAwO1xuICBtaW4taGVpZ2h0OiAxMDAlO1xuICB6LWluZGV4OiAzO1xufVxuLkNvZGVNaXJyb3ItZ3V0dGVyIHtcbiAgd2hpdGUtc3BhY2U6IG5vcm1hbDtcbiAgaGVpZ2h0OiAxMDAlO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHZlcnRpY2FsLWFsaWduOiB0b3A7XG4gIG1hcmdpbi1ib3R0b206IC01MHB4O1xufVxuLkNvZGVNaXJyb3ItZ3V0dGVyLXdyYXBwZXIge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6IDQ7XG4gIGJhY2tncm91bmQ6IG5vbmUgIWltcG9ydGFudDtcbiAgYm9yZGVyOiBub25lICFpbXBvcnRhbnQ7XG59XG4uQ29kZU1pcnJvci1ndXR0ZXItYmFja2dyb3VuZCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwOyBib3R0b206IDA7XG4gIHotaW5kZXg6IDQ7XG59XG4uQ29kZU1pcnJvci1ndXR0ZXItZWx0IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBjdXJzb3I6IGRlZmF1bHQ7XG4gIHotaW5kZXg6IDQ7XG59XG4uQ29kZU1pcnJvci1ndXR0ZXItd3JhcHBlciA6OnNlbGVjdGlvbiB7IGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50IH1cbi5Db2RlTWlycm9yLWd1dHRlci13cmFwcGVyIDo6LW1vei1zZWxlY3Rpb24geyBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudCB9XG5cbi5Db2RlTWlycm9yLWxpbmVzIHtcbiAgY3Vyc29yOiB0ZXh0O1xuICBtaW4taGVpZ2h0OiAxcHg7IC8qIHByZXZlbnRzIGNvbGxhcHNpbmcgYmVmb3JlIGZpcnN0IGRyYXcgKi9cbn1cbi5Db2RlTWlycm9yIHByZS5Db2RlTWlycm9yLWxpbmUsXG4uQ29kZU1pcnJvciBwcmUuQ29kZU1pcnJvci1saW5lLWxpa2Uge1xuICAvKiBSZXNldCBzb21lIHN0eWxlcyB0aGF0IHRoZSByZXN0IG9mIHRoZSBwYWdlIG1pZ2h0IGhhdmUgc2V0ICovXG4gIC1tb3otYm9yZGVyLXJhZGl1czogMDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAwOyBib3JkZXItcmFkaXVzOiAwO1xuICBib3JkZXItd2lkdGg6IDA7XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICBmb250LWZhbWlseTogaW5oZXJpdDtcbiAgZm9udC1zaXplOiBpbmhlcml0O1xuICBtYXJnaW46IDA7XG4gIHdoaXRlLXNwYWNlOiBwcmU7XG4gIHdvcmQtd3JhcDogbm9ybWFsO1xuICBsaW5lLWhlaWdodDogaW5oZXJpdDtcbiAgY29sb3I6IGluaGVyaXQ7XG4gIHotaW5kZXg6IDI7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgb3ZlcmZsb3c6IHZpc2libGU7XG4gIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIC13ZWJraXQtZm9udC12YXJpYW50LWxpZ2F0dXJlczogY29udGV4dHVhbDtcbiAgZm9udC12YXJpYW50LWxpZ2F0dXJlczogY29udGV4dHVhbDtcbn1cbi5Db2RlTWlycm9yLXdyYXAgcHJlLkNvZGVNaXJyb3ItbGluZSxcbi5Db2RlTWlycm9yLXdyYXAgcHJlLkNvZGVNaXJyb3ItbGluZS1saWtlIHtcbiAgd29yZC13cmFwOiBicmVhay13b3JkO1xuICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7XG4gIHdvcmQtYnJlYWs6IG5vcm1hbDtcbn1cblxuLkNvZGVNaXJyb3ItbGluZWJhY2tncm91bmQge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGxlZnQ6IDA7IHJpZ2h0OiAwOyB0b3A6IDA7IGJvdHRvbTogMDtcbiAgei1pbmRleDogMDtcbn1cblxuLkNvZGVNaXJyb3ItbGluZXdpZGdldCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogMjtcbiAgcGFkZGluZzogMC4xcHg7IC8qIEZvcmNlIHdpZGdldCBtYXJnaW5zIHRvIHN0YXkgaW5zaWRlIG9mIHRoZSBjb250YWluZXIgKi9cbn1cblxuLkNvZGVNaXJyb3Itd2lkZ2V0IHt9XG5cbi5Db2RlTWlycm9yLXJ0bCBwcmUgeyBkaXJlY3Rpb246IHJ0bDsgfVxuXG4uQ29kZU1pcnJvci1jb2RlIHtcbiAgb3V0bGluZTogbm9uZTtcbn1cblxuLyogRm9yY2UgY29udGVudC1ib3ggc2l6aW5nIGZvciB0aGUgZWxlbWVudHMgd2hlcmUgd2UgZXhwZWN0IGl0ICovXG4uQ29kZU1pcnJvci1zY3JvbGwsXG4uQ29kZU1pcnJvci1zaXplcixcbi5Db2RlTWlycm9yLWd1dHRlcixcbi5Db2RlTWlycm9yLWd1dHRlcnMsXG4uQ29kZU1pcnJvci1saW5lbnVtYmVyIHtcbiAgLW1vei1ib3gtc2l6aW5nOiBjb250ZW50LWJveDtcbiAgYm94LXNpemluZzogY29udGVudC1ib3g7XG59XG5cbi5Db2RlTWlycm9yLW1lYXN1cmUge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcbn1cblxuLkNvZGVNaXJyb3ItY3Vyc29yIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cbi5Db2RlTWlycm9yLW1lYXN1cmUgcHJlIHsgcG9zaXRpb246IHN0YXRpYzsgfVxuXG5kaXYuQ29kZU1pcnJvci1jdXJzb3JzIHtcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDM7XG59XG5kaXYuQ29kZU1pcnJvci1kcmFnY3Vyc29ycyB7XG4gIHZpc2liaWxpdHk6IHZpc2libGU7XG59XG5cbi5Db2RlTWlycm9yLWZvY3VzZWQgZGl2LkNvZGVNaXJyb3ItY3Vyc29ycyB7XG4gIHZpc2liaWxpdHk6IHZpc2libGU7XG59XG5cbi5Db2RlTWlycm9yLXNlbGVjdGVkIHsgYmFja2dyb3VuZDogI2Q5ZDlkOTsgfVxuLkNvZGVNaXJyb3ItZm9jdXNlZCAuQ29kZU1pcnJvci1zZWxlY3RlZCB7IGJhY2tncm91bmQ6ICNkN2Q0ZjA7IH1cbi5Db2RlTWlycm9yLWNyb3NzaGFpciB7IGN1cnNvcjogY3Jvc3NoYWlyOyB9XG4uQ29kZU1pcnJvci1saW5lOjpzZWxlY3Rpb24sIC5Db2RlTWlycm9yLWxpbmUgPiBzcGFuOjpzZWxlY3Rpb24sIC5Db2RlTWlycm9yLWxpbmUgPiBzcGFuID4gc3Bhbjo6c2VsZWN0aW9uIHsgYmFja2dyb3VuZDogI2Q3ZDRmMDsgfVxuLkNvZGVNaXJyb3ItbGluZTo6LW1vei1zZWxlY3Rpb24sIC5Db2RlTWlycm9yLWxpbmUgPiBzcGFuOjotbW96LXNlbGVjdGlvbiwgLkNvZGVNaXJyb3ItbGluZSA+IHNwYW4gPiBzcGFuOjotbW96LXNlbGVjdGlvbiB7IGJhY2tncm91bmQ6ICNkN2Q0ZjA7IH1cblxuLmNtLXNlYXJjaGluZyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmE7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDAsIC40KTtcbn1cblxuLyogVXNlZCB0byBmb3JjZSBhIGJvcmRlciBtb2RlbCBmb3IgYSBub2RlICovXG4uY20tZm9yY2UtYm9yZGVyIHsgcGFkZGluZy1yaWdodDogLjFweDsgfVxuXG5AbWVkaWEgcHJpbnQge1xuICAvKiBIaWRlIHRoZSBjdXJzb3Igd2hlbiBwcmludGluZyAqL1xuICAuQ29kZU1pcnJvciBkaXYuQ29kZU1pcnJvci1jdXJzb3JzIHtcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gIH1cbn1cblxuLyogU2VlIGlzc3VlICMyOTAxICovXG4uY20tdGFiLXdyYXAtaGFjazphZnRlciB7IGNvbnRlbnQ6ICcnOyB9XG5cbi8qIEhlbHAgdXNlcnMgdXNlIG1hcmtzZWxlY3Rpb24gdG8gc2FmZWx5IHN0eWxlIHRleHQgYmFja2dyb3VuZCAqL1xuc3Bhbi5Db2RlTWlycm9yLXNlbGVjdGVkdGV4dCB7IGJhY2tncm91bmQ6IG5vbmU7IH1cbiIsIi8qXG4gIE5hbWU6ICAgICAgIG1hdGVyaWFsXG4gIEF1dGhvcjogICAgIE1hdHRpYSBBc3RvcmlubyAoaHR0cDovL2dpdGh1Yi5jb20vZXF1aW51c29jaW8pXG4gIFdlYnNpdGU6ICAgIGh0dHBzOi8vbWF0ZXJpYWwtdGhlbWUuc2l0ZS9cbiovXG5cbi5jbS1zLW1hdGVyaWFsLkNvZGVNaXJyb3Ige1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjYzMjM4O1xuICBjb2xvcjogI0VFRkZGRjtcbn1cblxuLmNtLXMtbWF0ZXJpYWwgLkNvZGVNaXJyb3ItZ3V0dGVycyB7XG4gIGJhY2tncm91bmQ6ICMyNjMyMzg7XG4gIGNvbG9yOiAjNTQ2RTdBO1xuICBib3JkZXI6IG5vbmU7XG59XG5cbi5jbS1zLW1hdGVyaWFsIC5Db2RlTWlycm9yLWd1dHRlcm1hcmtlcixcbi5jbS1zLW1hdGVyaWFsIC5Db2RlTWlycm9yLWd1dHRlcm1hcmtlci1zdWJ0bGUsXG4uY20tcy1tYXRlcmlhbCAuQ29kZU1pcnJvci1saW5lbnVtYmVyIHtcbiAgY29sb3I6ICM1NDZFN0E7XG59XG5cbi5jbS1zLW1hdGVyaWFsIC5Db2RlTWlycm9yLWN1cnNvciB7XG4gIGJvcmRlci1sZWZ0OiAxcHggc29saWQgI0ZGQ0MwMDtcbn1cbi5jbS1zLW1hdGVyaWFsLmNtLWZhdC1jdXJzb3IgLkNvZGVNaXJyb3ItY3Vyc29yIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzVkNmQ1YzgwICFpbXBvcnRhbnQ7XG59XG4uY20tcy1tYXRlcmlhbCAuY20tYW5pbWF0ZS1mYXQtY3Vyc29yIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzVkNmQ1YzgwICFpbXBvcnRhbnQ7XG59XG5cbi5jbS1zLW1hdGVyaWFsIGRpdi5Db2RlTWlycm9yLXNlbGVjdGVkIHtcbiAgYmFja2dyb3VuZDogcmdiYSgxMjgsIDIwMywgMTk2LCAwLjIpO1xufVxuXG4uY20tcy1tYXRlcmlhbC5Db2RlTWlycm9yLWZvY3VzZWQgZGl2LkNvZGVNaXJyb3Itc2VsZWN0ZWQge1xuICBiYWNrZ3JvdW5kOiByZ2JhKDEyOCwgMjAzLCAxOTYsIDAuMik7XG59XG5cbi5jbS1zLW1hdGVyaWFsIC5Db2RlTWlycm9yLWxpbmU6OnNlbGVjdGlvbixcbi5jbS1zLW1hdGVyaWFsIC5Db2RlTWlycm9yLWxpbmU+c3Bhbjo6c2VsZWN0aW9uLFxuLmNtLXMtbWF0ZXJpYWwgLkNvZGVNaXJyb3ItbGluZT5zcGFuPnNwYW46OnNlbGVjdGlvbiB7XG4gIGJhY2tncm91bmQ6IHJnYmEoMTI4LCAyMDMsIDE5NiwgMC4yKTtcbn1cblxuLmNtLXMtbWF0ZXJpYWwgLkNvZGVNaXJyb3ItbGluZTo6LW1vei1zZWxlY3Rpb24sXG4uY20tcy1tYXRlcmlhbCAuQ29kZU1pcnJvci1saW5lPnNwYW46Oi1tb3otc2VsZWN0aW9uLFxuLmNtLXMtbWF0ZXJpYWwgLkNvZGVNaXJyb3ItbGluZT5zcGFuPnNwYW46Oi1tb3otc2VsZWN0aW9uIHtcbiAgYmFja2dyb3VuZDogcmdiYSgxMjgsIDIwMywgMTk2LCAwLjIpO1xufVxuXG4uY20tcy1tYXRlcmlhbCAuQ29kZU1pcnJvci1hY3RpdmVsaW5lLWJhY2tncm91bmQge1xuICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuNSk7XG59XG5cbi5jbS1zLW1hdGVyaWFsIC5jbS1rZXl3b3JkIHtcbiAgY29sb3I6ICNDNzkyRUE7XG59XG5cbi5jbS1zLW1hdGVyaWFsIC5jbS1vcGVyYXRvciB7XG4gIGNvbG9yOiAjODlEREZGO1xufVxuXG4uY20tcy1tYXRlcmlhbCAuY20tdmFyaWFibGUtMiB7XG4gIGNvbG9yOiAjRUVGRkZGO1xufVxuXG4uY20tcy1tYXRlcmlhbCAuY20tdmFyaWFibGUtMyxcbi5jbS1zLW1hdGVyaWFsIC5jbS10eXBlIHtcbiAgY29sb3I6ICNmMDcxNzg7XG59XG5cbi5jbS1zLW1hdGVyaWFsIC5jbS1idWlsdGluIHtcbiAgY29sb3I6ICNGRkNCNkI7XG59XG5cbi5jbS1zLW1hdGVyaWFsIC5jbS1hdG9tIHtcbiAgY29sb3I6ICNGNzhDNkM7XG59XG5cbi5jbS1zLW1hdGVyaWFsIC5jbS1udW1iZXIge1xuICBjb2xvcjogI0ZGNTM3MDtcbn1cblxuLmNtLXMtbWF0ZXJpYWwgLmNtLWRlZiB7XG4gIGNvbG9yOiAjODJBQUZGO1xufVxuXG4uY20tcy1tYXRlcmlhbCAuY20tc3RyaW5nIHtcbiAgY29sb3I6ICNDM0U4OEQ7XG59XG5cbi5jbS1zLW1hdGVyaWFsIC5jbS1zdHJpbmctMiB7XG4gIGNvbG9yOiAjZjA3MTc4O1xufVxuXG4uY20tcy1tYXRlcmlhbCAuY20tY29tbWVudCB7XG4gIGNvbG9yOiAjNTQ2RTdBO1xufVxuXG4uY20tcy1tYXRlcmlhbCAuY20tdmFyaWFibGUge1xuICBjb2xvcjogI2YwNzE3ODtcbn1cblxuLmNtLXMtbWF0ZXJpYWwgLmNtLXRhZyB7XG4gIGNvbG9yOiAjRkY1MzcwO1xufVxuXG4uY20tcy1tYXRlcmlhbCAuY20tbWV0YSB7XG4gIGNvbG9yOiAjRkZDQjZCO1xufVxuXG4uY20tcy1tYXRlcmlhbCAuY20tYXR0cmlidXRlIHtcbiAgY29sb3I6ICNDNzkyRUE7XG59XG5cbi5jbS1zLW1hdGVyaWFsIC5jbS1wcm9wZXJ0eSB7XG4gIGNvbG9yOiAjQzc5MkVBO1xufVxuXG4uY20tcy1tYXRlcmlhbCAuY20tcXVhbGlmaWVyIHtcbiAgY29sb3I6ICNERUNCNkI7XG59XG5cbi5jbS1zLW1hdGVyaWFsIC5jbS12YXJpYWJsZS0zLFxuLmNtLXMtbWF0ZXJpYWwgLmNtLXR5cGUge1xuICBjb2xvcjogI0RFQ0I2Qjtcbn1cblxuXG4uY20tcy1tYXRlcmlhbCAuY20tZXJyb3Ige1xuICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAxLjApO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkY1MzcwO1xufVxuXG4uY20tcy1tYXRlcmlhbCAuQ29kZU1pcnJvci1tYXRjaGluZ2JyYWNrZXQge1xuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7XG59XG4iLCJAaW1wb3J0ICd+Y29kZW1pcnJvci9saWIvY29kZW1pcnJvcic7XG5AaW1wb3J0ICd+Y29kZW1pcnJvci90aGVtZS9tYXRlcmlhbCc7XG5cbi8vIG92ZXJyaWRlIGZ1bmN0aW9uIHRvIGhhbmRsZSBvcGFjaXR5IG9mIGR5bmFtaWMgY29sb3JzXG5AZnVuY3Rpb24gbWF0LWNvbG9yKCRwYWxldHRlLCAkaHVlOiBkZWZhdWx0LCAkb3BhY2l0eTogbnVsbCkge1xuXHRAaWYgKHR5cGUtb2YoJGh1ZSkgPT0gbnVtYmVyIGFuZCAkaHVlID49IDAgYW5kICRodWUgPD0gMSkge1xuXHRcdEByZXR1cm4gbWF0LWNvbG9yKCRwYWxldHRlLCBkZWZhdWx0LCAkaHVlKTtcblx0fVxuXG5cdCRjb2xvcjogbWFwLWdldCgkcGFsZXR0ZSwgJGh1ZSk7XG5cblx0QGlmICh0eXBlLW9mKCRjb2xvcikgIT0gY29sb3IpIHtcblx0XHRAaWYgKCRvcGFjaXR5ICE9IG51bGwgYW5kICRjb2xvciAhPSBudWxsKSB7XG5cdFx0XHQvLyBIZXJlIGlzIHRoZSBjaGFuZ2UgZnJvbSB0aGUgb3JpZ2luYWwgZnVuY3Rpb246XG5cdFx0XHQvLyBJZiB0aGUgJGNvbG9yIHJlc29sdmVkIHRvIHNvbWV0aGluZyBkaWZmZXJlbnQgZnJvbSBhIGNvbG9yLCB3ZSBhc3N1bWUgaXQgaXMgYSBDU1MgdmFyaWFibGVcblx0XHRcdC8vIGluIHRoZSBmb3JtIG9mIHJnYmEodmFyKC0tcmdiYS1jc3MtdmFyKSxhKSBhbmQgcmVwbGFjZSB0aGUgJ2EnIHZhbHVlLlxuXHRcdFx0QHJldHVybiAje3N0ci1zbGljZSgkY29sb3IsIDAsIHN0ci1pbmRleCgkY29sb3IsICcsJykpICsgJG9wYWNpdHkgKyAnKSd9O1xuXHRcdH1cblx0XHRAcmV0dXJuICRjb2xvcjtcblx0fVxuXG5cdEByZXR1cm4gcmdiYSgkY29sb3IsIGlmKCRvcGFjaXR5ID09IG51bGwsIG9wYWNpdHkoJGNvbG9yKSwgJG9wYWNpdHkpKTtcbn1cblxuJGR5bmFtaWMtcHJpbWFyeS1wYWxldHRlOiAoXG5cdDUwOiByZ2JhKHZhcigtLWR5bmFtaWMtcHJpbWFyeS01MCksMSksXG5cdDEwMDogcmdiYSh2YXIoLS1keW5hbWljLXByaW1hcnktMTAwKSwxKSxcblx0MjAwOiByZ2JhKHZhcigtLWR5bmFtaWMtcHJpbWFyeS0yMDApLDEpLFxuXHQzMDA6IHJnYmEodmFyKC0tZHluYW1pYy1wcmltYXJ5LTMwMCksMSksXG5cdDQwMDogcmdiYSh2YXIoLS1keW5hbWljLXByaW1hcnktNDAwKSwxKSxcblx0NTAwOiByZ2JhKHZhcigtLWR5bmFtaWMtcHJpbWFyeS01MDApLDEpLFxuXHQ2MDA6IHJnYmEodmFyKC0tZHluYW1pYy1wcmltYXJ5LTYwMCksMSksXG5cdDcwMDogcmdiYSh2YXIoLS1keW5hbWljLXByaW1hcnktNzAwKSwxKSxcblx0ODAwOiByZ2JhKHZhcigtLWR5bmFtaWMtcHJpbWFyeS04MDApLDEpLFxuXHQ5MDA6IHJnYmEodmFyKC0tZHluYW1pYy1wcmltYXJ5LTkwMCksMSksXG5cdEExMDA6IHJnYmEodmFyKC0tZHluYW1pYy1wcmltYXJ5LUExMDApLDEpLFxuXHRBMjAwOiByZ2JhKHZhcigtLWR5bmFtaWMtcHJpbWFyeS1BMjAwKSwxKSxcblx0QTQwMDogcmdiYSh2YXIoLS1keW5hbWljLXByaW1hcnktQTQwMCksMSksXG5cdEE3MDA6IHJnYmEodmFyKC0tZHluYW1pYy1wcmltYXJ5LUE3MDApLDEpLFxuXHRjb250cmFzdDogKFxuXHRcdDUwOiByZ2JhKHZhcigtLWR5bmFtaWMtcHJpbWFyeS1jb250cmFzdC01MCksMSksXG5cdFx0MTAwOiByZ2JhKHZhcigtLWR5bmFtaWMtcHJpbWFyeS1jb250cmFzdC0xMDApLDEpLFxuXHRcdDIwMDogcmdiYSh2YXIoLS1keW5hbWljLXByaW1hcnktY29udHJhc3QtMjAwKSwxKSxcblx0XHQzMDA6IHJnYmEodmFyKC0tZHluYW1pYy1wcmltYXJ5LWNvbnRyYXN0LTMwMCksMSksXG5cdFx0NDAwOiByZ2JhKHZhcigtLWR5bmFtaWMtcHJpbWFyeS1jb250cmFzdC00MDApLDEpLFxuXHRcdDUwMDogcmdiYSh2YXIoLS1keW5hbWljLXByaW1hcnktY29udHJhc3QtNTAwKSwxKSxcblx0XHQ2MDA6IHJnYmEodmFyKC0tZHluYW1pYy1wcmltYXJ5LWNvbnRyYXN0LTYwMCksMSksXG5cdFx0NzAwOiByZ2JhKHZhcigtLWR5bmFtaWMtcHJpbWFyeS1jb250cmFzdC03MDApLDEpLFxuXHRcdDgwMDogcmdiYSh2YXIoLS1keW5hbWljLXByaW1hcnktY29udHJhc3QtODAwKSwxKSxcblx0XHQ5MDA6IHJnYmEodmFyKC0tZHluYW1pYy1wcmltYXJ5LWNvbnRyYXN0LTkwMCksMSksXG5cdFx0QTEwMDogcmdiYSh2YXIoLS1keW5hbWljLXByaW1hcnktY29udHJhc3QtQTEwMCksMSksXG5cdFx0QTIwMDogcmdiYSh2YXIoLS1keW5hbWljLXByaW1hcnktY29udHJhc3QtQTIwMCksMSksXG5cdFx0QTQwMDogcmdiYSh2YXIoLS1keW5hbWljLXByaW1hcnktY29udHJhc3QtQTQwMCksMSksXG5cdFx0QTcwMDogcmdiYSh2YXIoLS1keW5hbWljLXByaW1hcnktY29udHJhc3QtQTcwMCksMSksXG5cdClcbik7XG5cbiRkeW5hbWljLWFjY2VudC1wYWxldHRlOiAoXG5cdDUwOiByZ2JhKHZhcigtLWR5bmFtaWMtYWNjZW50LTUwKSwxKSxcblx0MTAwOiByZ2JhKHZhcigtLWR5bmFtaWMtYWNjZW50LTEwMCksMSksXG5cdDIwMDogcmdiYSh2YXIoLS1keW5hbWljLWFjY2VudC0yMDApLDEpLFxuXHQzMDA6IHJnYmEodmFyKC0tZHluYW1pYy1hY2NlbnQtMzAwKSwxKSxcblx0NDAwOiByZ2JhKHZhcigtLWR5bmFtaWMtYWNjZW50LTQwMCksMSksXG5cdDUwMDogcmdiYSh2YXIoLS1keW5hbWljLWFjY2VudC01MDApLDEpLFxuXHQ2MDA6IHJnYmEodmFyKC0tZHluYW1pYy1hY2NlbnQtNjAwKSwxKSxcblx0NzAwOiByZ2JhKHZhcigtLWR5bmFtaWMtYWNjZW50LTcwMCksMSksXG5cdDgwMDogcmdiYSh2YXIoLS1keW5hbWljLWFjY2VudC04MDApLDEpLFxuXHQ5MDA6IHJnYmEodmFyKC0tZHluYW1pYy1hY2NlbnQtOTAwKSwxKSxcblx0QTEwMDogcmdiYSh2YXIoLS1keW5hbWljLWFjY2VudC1BMTAwKSwxKSxcblx0QTIwMDogcmdiYSh2YXIoLS1keW5hbWljLWFjY2VudC1BMjAwKSwxKSxcblx0QTQwMDogcmdiYSh2YXIoLS1keW5hbWljLWFjY2VudC1BNDAwKSwxKSxcblx0QTcwMDogcmdiYSh2YXIoLS1keW5hbWljLWFjY2VudC1BNzAwKSwxKSxcblx0Y29udHJhc3Q6IChcblx0XHQ1MDogcmdiYSh2YXIoLS1keW5hbWljLWFjY2VudC1jb250cmFzdC01MCksMSksXG5cdFx0MTAwOiByZ2JhKHZhcigtLWR5bmFtaWMtYWNjZW50LWNvbnRyYXN0LTEwMCksMSksXG5cdFx0MjAwOiByZ2JhKHZhcigtLWR5bmFtaWMtYWNjZW50LWNvbnRyYXN0LTIwMCksMSksXG5cdFx0MzAwOiByZ2JhKHZhcigtLWR5bmFtaWMtYWNjZW50LWNvbnRyYXN0LTMwMCksMSksXG5cdFx0NDAwOiByZ2JhKHZhcigtLWR5bmFtaWMtYWNjZW50LWNvbnRyYXN0LTQwMCksMSksXG5cdFx0NTAwOiByZ2JhKHZhcigtLWR5bmFtaWMtYWNjZW50LWNvbnRyYXN0LTUwMCksMSksXG5cdFx0NjAwOiByZ2JhKHZhcigtLWR5bmFtaWMtYWNjZW50LWNvbnRyYXN0LTYwMCksMSksXG5cdFx0NzAwOiByZ2JhKHZhcigtLWR5bmFtaWMtYWNjZW50LWNvbnRyYXN0LTcwMCksMSksXG5cdFx0ODAwOiByZ2JhKHZhcigtLWR5bmFtaWMtYWNjZW50LWNvbnRyYXN0LTgwMCksMSksXG5cdFx0OTAwOiByZ2JhKHZhcigtLWR5bmFtaWMtYWNjZW50LWNvbnRyYXN0LTkwMCksMSksXG5cdFx0QTEwMDogcmdiYSh2YXIoLS1keW5hbWljLWFjY2VudC1jb250cmFzdC1BMTAwKSwxKSxcblx0XHRBMjAwOiByZ2JhKHZhcigtLWR5bmFtaWMtYWNjZW50LWNvbnRyYXN0LUEyMDApLDEpLFxuXHRcdEE0MDA6IHJnYmEodmFyKC0tZHluYW1pYy1hY2NlbnQtY29udHJhc3QtQTQwMCksMSksXG5cdFx0QTcwMDogcmdiYSh2YXIoLS1keW5hbWljLWFjY2VudC1jb250cmFzdC1BNzAwKSwxKSxcblx0KVxuKTtcblxuLy8gU2VlIHBhbGV0dGUgaGVyZTogaHR0cDovL21jZy5tYml0c29uLmNvbS8jIT9yZWQ9JTIzZmY3ZjZiXG4kYXJnby1yZWQtcGFsZXR0ZTogKFxuXHQ1MDogI2ZmZjBlZCxcblx0MTAwOiAjZmZkOWQzLFxuXHQyMDA6ICNmZmJmYjUsXG5cdDMwMDogI2ZmYTU5Nyxcblx0NDAwOiAjZmY5MjgxLFxuXHQ1MDA6ICNmZjdmNmIsXG5cdDYwMDogI2ZmNzc2Myxcblx0NzAwOiAjZmY2YzU4LFxuXHQ4MDA6ICNmZjYyNGUsXG5cdDkwMDogI2ZmNGYzYyxcblx0QTEwMDogI2ZmZmZmZixcblx0QTIwMDogI2ZmZmZmZixcblx0QTQwMDogI2ZmZTdlNSxcblx0QTcwMDogI2ZmZDBjYixcblx0Y29udHJhc3Q6IChcblx0XHQ1MDogIzAwMDAwMCxcblx0XHQxMDA6ICMwMDAwMDAsXG5cdFx0MjAwOiAjMDAwMDAwLFxuXHRcdDMwMDogIzAwMDAwMCxcblx0XHQ0MDA6ICMwMDAwMDAsXG5cdFx0NTAwOiAjMDAwMDAwLFxuXHRcdDYwMDogIzAwMDAwMCxcblx0XHQ3MDA6ICMwMDAwMDAsXG5cdFx0ODAwOiAjMDAwMDAwLFxuXHRcdDkwMDogIzAwMDAwMCxcblx0XHRBMTAwOiAjMDAwMDAwLFxuXHRcdEEyMDA6ICMwMDAwMDAsXG5cdFx0QTQwMDogIzAwMDAwMCxcblx0XHRBNzAwOiAjMDAwMDAwLFxuXHQpXG4pO1xuLy8gU2VlIHBhbGV0dGUgaGVyZTogaHR0cDovL21jZy5tYml0c29uLmNvbS8jIT9vcmFuZ2U9JTIzZmRkNTgyXG4kYXJnby1vcmFuZ2UtcGFsZXR0ZTogKFxuXHQ1MDogI2ZmZmFmMCxcblx0MTAwOiAjZmVmMmRhLFxuXHQyMDA6ICNmZWVhYzEsXG5cdDMwMDogI2ZlZTJhOCxcblx0NDAwOiAjZmRkYjk1LFxuXHQ1MDA6ICNmZGQ1ODIsXG5cdDYwMDogI2ZkZDA3YSxcblx0NzAwOiAjZmNjYTZmLFxuXHQ4MDA6ICNmY2M0NjUsXG5cdDkwMDogI2ZjYmE1Mixcblx0QTEwMDogI2ZmZmZmZixcblx0QTIwMDogI2ZmZmZmZixcblx0QTQwMDogI2ZmZmJmNCxcblx0QTcwMDogI2ZmZjBkYSxcblx0Y29udHJhc3Q6IChcblx0XHQ1MDogIzAwMDAwMCxcblx0XHQxMDA6ICMwMDAwMDAsXG5cdFx0MjAwOiAjMDAwMDAwLFxuXHRcdDMwMDogIzAwMDAwMCxcblx0XHQ0MDA6ICMwMDAwMDAsXG5cdFx0NTAwOiAjMDAwMDAwLFxuXHRcdDYwMDogIzAwMDAwMCxcblx0XHQ3MDA6ICMwMDAwMDAsXG5cdFx0ODAwOiAjMDAwMDAwLFxuXHRcdDkwMDogIzAwMDAwMCxcblx0XHRBMTAwOiAjMDAwMDAwLFxuXHRcdEEyMDA6ICMwMDAwMDAsXG5cdFx0QTQwMDogIzAwMDAwMCxcblx0XHRBNzAwOiAjMDAwMDAwLFxuXHQpXG4pO1xuLy8gU2VlIHBhbGV0dGUgaGVyZTogaHR0cDovL21jZy5tYml0c29uLmNvbS8jIT9ncmVlbj0lMjM5MmZhYmVcbiRhcmdvLWdyZWVuLXBhbGV0dGU6IChcblx0NTA6ICNmMmZlZjcsXG5cdDEwMDogI2RlZmVlYyxcblx0MjAwOiAjYzlmZGRmLFxuXHQzMDA6ICNiM2ZjZDIsXG5cdDQwMDogI2EyZmJjOCxcblx0NTAwOiAjOTJmYWJlLFxuXHQ2MDA6ICM4YWY5YjgsXG5cdDcwMDogIzdmZjlhZixcblx0ODAwOiAjNzVmOGE3LFxuXHQ5MDA6ICM2M2Y2OTksXG5cdEExMDA6ICNmZmZmZmYsXG5cdEEyMDA6ICNmZmZmZmYsXG5cdEE0MDA6ICNmZGZmZmUsXG5cdEE3MDA6ICNlNGZmZWUsXG5cdGNvbnRyYXN0OiAoXG5cdFx0NTA6ICMwMDAwMDAsXG5cdFx0MTAwOiAjMDAwMDAwLFxuXHRcdDIwMDogIzAwMDAwMCxcblx0XHQzMDA6ICMwMDAwMDAsXG5cdFx0NDAwOiAjMDAwMDAwLFxuXHRcdDUwMDogIzAwMDAwMCxcblx0XHQ2MDA6ICMwMDAwMDAsXG5cdFx0NzAwOiAjMDAwMDAwLFxuXHRcdDgwMDogIzAwMDAwMCxcblx0XHQ5MDA6ICMwMDAwMDAsXG5cdFx0QTEwMDogIzAwMDAwMCxcblx0XHRBMjAwOiAjMDAwMDAwLFxuXHRcdEE0MDA6ICMwMDAwMDAsXG5cdFx0QTcwMDogIzAwMDAwMCxcblx0KVxuKTtcbi8vIFNlZSBwYWxldHRlIGhlcmU6IGh0dHA6Ly9tY2cubWJpdHNvbi5jb20vIyE/cHVycGxlPSUyMzlmNmFmOVxuJGFyZ28tcHVycGxlLXBhbGV0dGU6IChcbiAgICA1MCA6ICNmM2VkZmUsXG4gICAgMTAwIDogI2UyZDJmZCxcbiAgICAyMDAgOiAjY2ZiNWZjLFxuICAgIDMwMCA6ICNiYzk3ZmIsXG4gICAgNDAwIDogI2FkODBmYSxcbiAgICA1MDAgOiAjOWY2YWY5LFxuICAgIDYwMCA6ICM5NzYyZjgsXG4gICAgNzAwIDogIzhkNTdmNyxcbiAgICA4MDAgOiAjODM0ZGY2LFxuICAgIDkwMCA6ICM3MjNjZjUsXG4gICAgQTEwMCA6ICNmZmZmZmYsXG4gICAgQTIwMCA6ICNmZmZmZmYsXG4gICAgQTQwMCA6ICNlNWRhZmYsXG4gICAgQTcwMCA6ICNkMmMxZmYsXG4gICAgY29udHJhc3Q6IChcbiAgICAgICAgNTAgOiAjMDAwMDAwLFxuICAgICAgICAxMDAgOiAjMDAwMDAwLFxuICAgICAgICAyMDAgOiAjMDAwMDAwLFxuICAgICAgICAzMDAgOiAjMDAwMDAwLFxuICAgICAgICA0MDAgOiAjMDAwMDAwLFxuICAgICAgICA1MDAgOiAjMDAwMDAwLFxuICAgICAgICA2MDAgOiAjMDAwMDAwLFxuICAgICAgICA3MDAgOiAjZmZmZmZmLFxuICAgICAgICA4MDAgOiAjZmZmZmZmLFxuICAgICAgICA5MDAgOiAjZmZmZmZmLFxuICAgICAgICBBMTAwIDogIzAwMDAwMCxcbiAgICAgICAgQTIwMCA6ICMwMDAwMDAsXG4gICAgICAgIEE0MDAgOiAjMDAwMDAwLFxuICAgICAgICBBNzAwIDogIzAwMDAwMCxcbiAgICApXG4pO1xuXG5cbiRkeW5hbWljLXByaW1hcnk6IG1hdC1wYWxldHRlKCRkeW5hbWljLXByaW1hcnktcGFsZXR0ZSk7XG4kZHluYW1pYy1hY2NlbnQ6IG1hdC1wYWxldHRlKCRkeW5hbWljLWFjY2VudC1wYWxldHRlKTtcbiRhcmdvLXdhcm46IG1hdC1wYWxldHRlKCRhcmdvLXJlZC1wYWxldHRlKTtcbiRhcmdvLXJlZDogbWF0LXBhbGV0dGUoJGFyZ28tcmVkLXBhbGV0dGUpO1xuJGFyZ28tb3JhbmdlOiBtYXQtcGFsZXR0ZSgkYXJnby1vcmFuZ2UtcGFsZXR0ZSk7XG4kYXJnby1ncmVlbjogbWF0LXBhbGV0dGUoJGFyZ28tZ3JlZW4tcGFsZXR0ZSk7XG4kYXJnby1wdXJwbGU6IG1hdC1wYWxldHRlKCRhcmdvLXB1cnBsZS1wYWxldHRlKTtcblxuLmFyZ28tdGhlbWUge1xuXHQudGV4dC1hcmdvLXdhcm4ge1xuXHRcdGNvbG9yOiBtYXQtY29sb3IoJGFyZ28td2FybiwgOTAwKSAhaW1wb3J0YW50O1xuXHR9XG5cdC50ZXh0LWFyZ28tc3VjY2VzcyB7XG5cdFx0Y29sb3I6IG1hdC1jb2xvcigkYXJnby1ncmVlbiwgOTAwKSAhaW1wb3J0YW50O1xuXHR9XG5cdC50ZXh0LWFyZ28tZGFuZ2VyIHtcblx0XHRjb2xvcjogbWF0LWNvbG9yKCRhcmdvLW9yYW5nZSwgOTAwKSAhaW1wb3J0YW50O1xuXHR9XG5cdC50ZXh0LWFyZ28tcHJpbWFyeSB7XG5cdFx0Y29sb3I6IG1hdC1jb2xvcigkZHluYW1pYy1wcmltYXJ5LCA1MDApICFpbXBvcnRhbnQ7XG5cdH1cblx0LnRleHQtYXJnby1lcnJvciB7XG5cdFx0Y29sb3I6IG1hdC1jb2xvcigkYXJnby1yZWQsIDUwMCkgIWltcG9ydGFudDtcblx0fVxuXHRzbmFjay1iYXItY29udGFpbmVyIHtcblxuXHRcdCYuYXJnby1kYW5nZXIge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogbWF0LWNvbG9yKCRhcmdvLW9yYW5nZSwgNTAwKTtcblx0XHRcdGNvbG9yOiBtYXQtY29sb3IoJGFyZ28tb3JhbmdlLCAnNTAwLWNvbnRyYXN0Jyk7XG5cdFx0XHRvdmVyZmxvdy13cmFwOiBhbnl3aGVyZTtcblx0XHRcdC5tYXQtYnV0dG9uIHtcblx0XHRcdFx0b3V0bGluZTogbm9uZTtcblx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogbWF0LWNvbG9yKCRhcmdvLW9yYW5nZSwgJzUwMC1jb250cmFzdCcpO1xuXHRcdFx0XHRjb2xvcjogbWF0LWNvbG9yKCRhcmdvLW9yYW5nZSwgNTAwKTtcblx0XHRcdFx0Lm1hdC1yaXBwbGUtZWxlbWVudCB7XG5cdFx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogbWF0LWNvbG9yKCRhcmdvLW9yYW5nZSwgJ0ExMDAnKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHQmLmFyZ28td2FybiB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBtYXQtY29sb3IoJGFyZ28td2FybiwgNTAwKTtcblx0XHRcdGNvbG9yOiBtYXQtY29sb3IoJGFyZ28td2FybiwgJzUwMC1jb250cmFzdCcpO1xuXHRcdFx0b3ZlcmZsb3ctd3JhcDogYW55d2hlcmU7XG5cdFx0XHQubWF0LWJ1dHRvbiB7XG5cdFx0XHRcdG91dGxpbmU6IG5vbmU7XG5cdFx0XHRcdGJhY2tncm91bmQtY29sb3I6IG1hdC1jb2xvcigkYXJnby13YXJuLCAnNTAwLWNvbnRyYXN0Jyk7XG5cdFx0XHRcdGNvbG9yOiBtYXQtY29sb3IoJGFyZ28td2FybiwgNTAwKTtcblx0XHRcdFx0Lm1hdC1yaXBwbGUtZWxlbWVudCB7XG5cdFx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogbWF0LWNvbG9yKCRhcmdvLXdhcm4sICdBMTAwJyk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0Ji5hcmdvLXN1Y2Nlc3Mge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogbWF0LWNvbG9yKCRhcmdvLWdyZWVuLCA1MDApO1xuXHRcdFx0Y29sb3I6IG1hdC1jb2xvcigkYXJnby1ncmVlbiwgJzUwMC1jb250cmFzdCcpO1xuXHRcdFx0b3ZlcmZsb3ctd3JhcDogYW55d2hlcmU7XG5cdFx0XHQubWF0LWJ1dHRvbiB7XG5cdFx0XHRcdG91dGxpbmU6IG5vbmU7XG5cdFx0XHRcdGJhY2tncm91bmQtY29sb3I6IG1hdC1jb2xvcigkYXJnby1ncmVlbiwgJzUwMC1jb250cmFzdCcpO1xuXHRcdFx0XHRjb2xvcjogbWF0LWNvbG9yKCRhcmdvLWdyZWVuLCA1MDApO1xuXHRcdFx0XHQubWF0LXJpcHBsZS1lbGVtZW50IHtcblx0XHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBtYXQtY29sb3IoJGFyZ28tZ3JlZW4sICdBMTAwJyk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0Ji5hcmdvLWVycm9yIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6IG1hdC1jb2xvcigkYXJnby1yZWQsIDUwMCk7XG5cdFx0XHRjb2xvcjogbWF0LWNvbG9yKCRhcmdvLXJlZCwgJzUwMC1jb250cmFzdCcpO1xuXHRcdFx0b3ZlcmZsb3ctd3JhcDogYW55d2hlcmU7XG5cdFx0XHQubWF0LWJ1dHRvbiB7XG5cdFx0XHRcdG91dGxpbmU6IG5vbmU7XG5cdFx0XHRcdGJhY2tncm91bmQtY29sb3I6IG1hdC1jb2xvcigkYXJnby1yZWQsICc1MDAtY29udHJhc3QnKTtcblx0XHRcdFx0Y29sb3I6IG1hdC1jb2xvcigkYXJnby1yZWQsICdBMTAwJyk7XG5cdFx0XHRcdC5tYXQtcmlwcGxlLWVsZW1lbnQge1xuXHRcdFx0XHRcdGJhY2tncm91bmQtY29sb3I6IG1hdC1jb2xvcigkYXJnby1yZWQsICdBMTAwJyk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQubWF0LXNpZGVuYXYubWF0LWRyYXdlciB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogbWF0LWNvbG9yKCRkeW5hbWljLXByaW1hcnksIDUwMCk7XG5cdFx0Y29sb3I6IG1hdC1jb2xvcigkZHluYW1pYy1wcmltYXJ5LCAnNTAwLWNvbnRyYXN0Jyk7XG5cblx0XHQubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLFxuXHRcdC5tYXQtZm9ybS1maWVsZC1sYWJlbCxcblx0XHQubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWQgLm1hdC1mb3JtLWZpZWxkLWxhYmVsIHtcblx0XHRcdGNvbG9yOiBpbmhlcml0O1xuXHRcdH1cblxuXHRcdC5tYXQtaW5wdXQtZWxlbWVudCB7XG5cdFx0XHRjYXJldC1jb2xvcjogaW5oZXJpdDtcblx0XHRcdCY6OnBsYWNlaG9sZGVyIHtcblx0XHRcdFx0Y29sb3I6IG1hdC1jb2xvcigkZHluYW1pYy1wcmltYXJ5LCAnNTAwLWNvbnRyYXN0JywgMC43KTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQubWF0LWljb24tYnV0dG9uIHtcblx0XHRcdCY6aG92ZXIsICY6Zm9jdXMge1xuXHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBtYXQtY29sb3IoJGR5bmFtaWMtcHJpbWFyeSwgJzUwMC1jb250cmFzdCcsIDAuMSk7XG5cdFx0XHR9XG5cdFx0XHQubWF0LXJpcHBsZS1lbGVtZW50IHtcblx0XHRcdFx0b3BhY2l0eTogMTtcblx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogbWF0LWNvbG9yKCRkeW5hbWljLXByaW1hcnksICc1MDAtY29udHJhc3QnLCAwLjIpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHQubWF0LWxpc3QtYmFzZSB7XG5cdFx0XHQubWF0LXN1YmhlYWRlciB7XG5cdFx0XHRcdGNvbG9yOiBtYXQtY29sb3IoJGR5bmFtaWMtcHJpbWFyeSwgJzUwMC1jb250cmFzdCcsIDAuNyk7XG5cdFx0XHR9XG5cdFx0XHQubWF0LWxpc3QtaXRlbSB7XG5cdFx0XHRcdGNvbG9yOiBpbmhlcml0O1xuXHRcdFx0XHQmOmhvdmVyLCAmOmZvY3VzIHtcblx0XHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBtYXQtY29sb3IoJGR5bmFtaWMtcHJpbWFyeSwgJzUwMC1jb250cmFzdCcsIDAuMSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0Lm1hdC1yaXBwbGUtZWxlbWVudCB7XG5cdFx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogbWF0LWNvbG9yKCRkeW5hbWljLXByaW1hcnksICc1MDAtY29udHJhc3QnLCAwLjIpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHRcdC5tYXQtZGl2aWRlciB7XG5cdFx0XHRib3JkZXItdG9wLWNvbG9yOiBtYXQtY29sb3IoJGR5bmFtaWMtcHJpbWFyeSwgJzUwMC1jb250cmFzdCcsIDAuOSk7XG5cdFx0fVxuXHR9XG5cdC5tYXQtYnV0dG9uLXRvZ2dsZS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkIHtcblx0XHQubWF0LXJpcHBsZS1lbGVtZW50IHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6IG1hdC1jb2xvcigkZHluYW1pYy1wcmltYXJ5LCA1MDAsIDAuMik7XG5cdFx0fVxuXHRcdCY6aG92ZXIsICY6Zm9jdXMge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogbWF0LWNvbG9yKCRkeW5hbWljLXByaW1hcnksIDUwMCwgMC4xKTtcblx0XHR9XG5cdFx0Ji5tYXQtYnV0dG9uLXRvZ2dsZS1jaGVja2VkIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6IG1hdC1jb2xvcigkZHluYW1pYy1wcmltYXJ5LCA1MDApO1xuXHRcdFx0Y29sb3I6IG1hdC1jb2xvcigkZHluYW1pYy1wcmltYXJ5LCAnNTAwLWNvbnRyYXN0Jyk7XG5cdFx0XHQubWF0LXJpcHBsZS1lbGVtZW50IHtcblx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Lm9yZ2FuaXphdGlvbi10b29sdGlwIHtcblx0XHRmb250LXNpemU6IDFyZW07XG5cdFx0Y29sb3I6IG1hdC1jb2xvcigkZHluYW1pYy1wcmltYXJ5LCA1MDApICFpbXBvcnRhbnQ7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogbWF0LWNvbG9yKCRkeW5hbWljLXByaW1hcnksICc1MDAtY29udHJhc3QnKSAhaW1wb3J0YW50O1xuXHRcdG1heC13aWR0aDogdW5zZXQgIWltcG9ydGFudDtcblx0fVxuXG5cdC5tYXQtcHJvZ3Jlc3MtYmFyIHtcblx0XHQmLmFyZ28tZXJyb3Ige1xuXHRcdFx0Lm1hdC1wcm9ncmVzcy1iYXItYnVmZmVyIHtcblx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogbWF0LWNvbG9yKCRhcmdvLXJlZCwgMzAwKTtcblx0XHRcdH1cblxuXHRcdFx0Lm1hdC1wcm9ncmVzcy1iYXItZmlsbDo6YWZ0ZXIge1xuXHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBtYXQtY29sb3IoJGFyZ28tcmVkLCA5MDApO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdCYuYXJnby13YXJuIHtcblx0XHRcdC5tYXQtcHJvZ3Jlc3MtYmFyLWJ1ZmZlciB7XG5cdFx0XHRcdGJhY2tncm91bmQtY29sb3I6IG1hdC1jb2xvcigkYXJnby1vcmFuZ2UtcGFsZXR0ZSwgMzAwKTtcblx0XHRcdH1cblxuXHRcdFx0Lm1hdC1wcm9ncmVzcy1iYXItZmlsbDo6YWZ0ZXIge1xuXHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBtYXQtY29sb3IoJGFyZ28tb3JhbmdlLXBhbGV0dGUsIDkwMCk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ji5hcmdvLXN1Y2Nlc3Mge1xuXHRcdFx0Lm1hdC1wcm9ncmVzcy1iYXItYnVmZmVyIHtcblx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogbWF0LWNvbG9yKCRhcmdvLWdyZWVuLXBhbGV0dGUsIDMwMCk7XG5cdFx0XHR9XG5cblx0XHRcdC5tYXQtcHJvZ3Jlc3MtYmFyLWZpbGw6OmFmdGVyIHtcblx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogbWF0LWNvbG9yKCRhcmdvLWdyZWVuLXBhbGV0dGUsIDkwMCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LmFyZ28tbm90aWZpY2F0aW9uIHtcblx0XHRib3JkZXItcmFkaXVzOiAuNXJlbSAhaW1wb3J0YW50O1xuXHRcdG92ZXJmbG93OiBoaWRkZW4gIWltcG9ydGFudDtcblx0fVxuXHQubG9naW4tc2lkZS1wYW5lbHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBtYXQtY29sb3IoJGR5bmFtaWMtcHJpbWFyeSwgNTAwKTtcblx0fVxufVxuIiwiJGR5bmFtaWMtbGlnaHQtdGhlbWU6IG1hdC1saWdodC10aGVtZSgoXG5cdGNvbG9yOiAoXG5cdFx0cHJpbWFyeTogJGR5bmFtaWMtcHJpbWFyeSxcblx0XHRhY2NlbnQ6ICRkeW5hbWljLWFjY2VudCxcblx0XHR3YXJuOiAkYXJnby13YXJuLFxuXHQpXG4pKTtcbi8vIFNlZSB0aGUgY29udGVudCBvZiB0aGVzZSBkZWZhdWx0IHBhbGV0dGVzIGluIGZpbGU6XG4vLyBub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZS90aGVtaW5nL19wYWxldHRlLnNjc3NcbiRsaWdodC1mb3JlZ3JvdW5kOiBtYXAtZ2V0KCRkeW5hbWljLWxpZ2h0LXRoZW1lLCAnZm9yZWdyb3VuZCcpO1xuJGxpZ2h0LWJhY2tncm91bmQ6IG1hcC1nZXQoJGR5bmFtaWMtbGlnaHQtdGhlbWUsICdiYWNrZ3JvdW5kJyk7XG5cbi50aGVtZS1saWdodCB7XG5cdEBpbmNsdWRlIGFuZ3VsYXItbWF0ZXJpYWwtdGhlbWUoJGR5bmFtaWMtbGlnaHQtdGhlbWUpO1xuXHRhIHtcblx0XHRjb2xvcjogbWF0LWNvbG9yKCRsaWdodC1mb3JlZ3JvdW5kLCAnc2Vjb25kYXJ5LXRleHQnKTtcblx0fVxuXHRhLmxpbmsge1xuXHRcdGNvbG9yOiAjMDAwO1xuXHR9XG5cdC5tYXQtZ3JpZC1saXN0IHtcblx0XHQubWF0LWdyaWQtdGlsZSB7XG5cdFx0XHQuZ3JpZC10aWxlLWNvbnRlbnQge1xuXHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBtYXQtY29sb3IoJGxpZ2h0LWJhY2tncm91bmQsICdjYXJkJyk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cdC5tYXQtdGFibGUuaG92ZXItdGFibGUge1xuXHRcdHRib2R5IHRyOmhvdmVyIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6IG1hdC1jb2xvcigkbGlnaHQtYmFja2dyb3VuZCwgJ2hvdmVyJyk7XG5cdFx0fVxuXHR9XG5cdC5tYXQtY2FyZCB7XG5cdFx0Ji5jYXJkLWRpc2FibGVkIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6IG1hdC1jb2xvcigkbGlnaHQtYmFja2dyb3VuZCwgJ2Rpc2FibGVkLWJ1dHRvbicpO1xuXHRcdFx0Y29sb3I6IG1hdC1jb2xvcigkbGlnaHQtZm9yZWdyb3VuZCwgJ2Rpc2FibGVkLWJ1dHRvbicpO1xuXHRcdH1cblx0fVxuXHQubWF0LXRhYi1saXN0IHtcblx0XHQubWF0LXRhYi1saW5rIHtcblx0XHRcdGkge1xuXHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBtYXQtY29sb3IoJGR5bmFtaWMtcHJpbWFyeSwgNTAwLCAuMSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LmFyZ28tbm90aWZpY2F0aW9uIHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBtYXQtY29sb3IoJGxpZ2h0LWJhY2tncm91bmQsICdjYXJkJykgIWltcG9ydGFudDtcblx0fVxuXG5cdC5kZWZhdWx0LWJhY2sge1xuXHRcdGJhY2tncm91bmQtY29sb3I6IG1hdC1jb2xvcigkbGlnaHQtYmFja2dyb3VuZCwgJ2JhY2tncm91bmQnKTtcblx0XHRjb2xvcjogbWF0LWNvbG9yKCRsaWdodC1mb3JlZ3JvdW5kLCAnYmFzZScpO1xuXHR9XG5cdC5ncmV5LWJhY2stYmcge1xuXHRcdGJhY2tncm91bmQtaW1hZ2U6IHVybCgnL2Fzc2V0cy9pbWFnZXMvc2V0dGluZ19idXR0b24uc3ZnJyk7XG5cdFx0YmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcblx0XHRiYWNrZ3JvdW5kLXBvc2l0aW9uOiByaWdodDtcblx0XHRiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xuXHRcdGJhY2tncm91bmQtY29sb3I6IG1hcC1nZXQoJG1hdC1ncmV5LCAxMDApO1xuXHRcdGNvbG9yOiBtYXQtY29sb3IoJGxpZ2h0LWZvcmVncm91bmQsICdiYXNlJyk7XG5cdH1cblx0LmdyZXktYmFjayB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogbWFwLWdldCgkbWF0LWdyZXksIDEwMCk7XG5cdFx0Y29sb3I6IG1hdC1jb2xvcigkbGlnaHQtZm9yZWdyb3VuZCwgJ2Jhc2UnKTtcblx0fVxuXHQucHJpbWFyeS1iYWNrIHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBtYXQtY29sb3IoJGR5bmFtaWMtcHJpbWFyeSwgNTAwKTtcblx0XHRjb2xvcjogbWF0LWNvbG9yKCRkeW5hbWljLXByaW1hcnksICc1MDAtY29udHJhc3QnKTtcblx0fVxuXHQucHJpbWFyeS1saWdodC1iYWNrIHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBtYXQtY29sb3IoJGR5bmFtaWMtcHJpbWFyeSwgMTAwLCAuOSk7XG5cdFx0Y29sb3I6IG1hdC1jb2xvcigkZHluYW1pYy1wcmltYXJ5LCAnMTAwLWNvbnRyYXN0Jyk7XG5cdH1cblx0LmFjY2VudC1iYWNrIHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBtYXQtY29sb3IoJGR5bmFtaWMtYWNjZW50LCA1MDApO1xuXHRcdGNvbG9yOiBtYXQtY29sb3IoJGR5bmFtaWMtYWNjZW50LCAnNTAwLWNvbnRyYXN0Jyk7XG5cdH1cblx0LnBkZi1saWdodC1iYWNrIHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBtYXQtY29sb3IoJGR5bmFtaWMtcHJpbWFyeSwgNTAsIDAuNSk7XG5cdFx0Y29sb3I6IG1hdC1jb2xvcigkZHluYW1pYy1wcmltYXJ5LCAnMTAwLWNvbnRyYXN0Jyk7XG5cdH1cblx0LnBkZi1mb250IHtcblx0XHRjb2xvcjogbWF0LWNvbG9yKCRkeW5hbWljLXByaW1hcnksIDUwMCk7XG5cdH1cblx0LmFyLWJhY2stYmcge1xuXHRcdGJhY2tncm91bmQtaW1hZ2U6IHVybCgnL2Fzc2V0cy9pbWFnZXMvZWRpdF9idXR0b24uc3ZnJyk7XG5cdFx0YmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcblx0XHRiYWNrZ3JvdW5kLXBvc2l0aW9uOiBib3R0b207XG5cdFx0YmFja2dyb3VuZC1zaXplOiBjb3Zlcjtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBtYXQtY29sb3IoJGFyZ28tcHVycGxlLCA1MDApO1xuXHRcdGNvbG9yOiBtYXQtY29sb3IoJGFyZ28tcHVycGxlLCAnNTAwLWNvbnRyYXN0Jyk7XG5cdFx0Lm1hdC1yaXBwbGUtZWxlbWVudCB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBtYXQtY29sb3IoJGFyZ28tcHVycGxlLCAnNTAwLWNvbnRyYXN0JywgMC4xKTtcblx0XHR9XG5cdH1cblx0LmFyLWJhY2sge1xuXHRcdGJhY2tncm91bmQtY29sb3I6IG1hdC1jb2xvcigkYXJnby1wdXJwbGUsIDUwMCk7XG5cdFx0Y29sb3I6IG1hdC1jb2xvcigkYXJnby1wdXJwbGUsICc1MDAtY29udHJhc3QnKTtcblx0XHQubWF0LXJpcHBsZS1lbGVtZW50IHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6IG1hdC1jb2xvcigkYXJnby1wdXJwbGUsICc1MDAtY29udHJhc3QnLCAwLjEpO1xuXHRcdH1cblx0fVxuXHQuYXItZGFyay1iYWNrIHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBtYXQtY29sb3IoJGFyZ28tcHVycGxlLCA5MDApO1xuXHRcdGNvbG9yOiBtYXQtY29sb3IoJGFyZ28tcHVycGxlLCAnOTAwLWNvbnRyYXN0Jyk7XG5cdH1cblx0LmFyLWZvbnQge1xuXHRcdGNvbG9yOiBtYXQtY29sb3IoJGFyZ28tcHVycGxlLCA1MDApO1xuXHR9XG5cblx0Lm1hdC1pbnB1dC1lbGVtZW50IHtcbiAgICBcdGNhcmV0LWNvbG9yOiByZ2JhKHZhcigtLWR5bmFtaWMtcHJpbWFyeS01MDApLCAxKTtcblx0fVxuXG5cdC5idG4tYXJyb3ctYmcge1xuXHRcdGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuXHR9XG5cblx0LmJ0bi1keW5hbWljLWNvbG9yIHtcblx0XHRjb2xvcjogcmdiYSh2YXIoLS1keW5hbWljLXByaW1hcnktNTAwKSwgMSkgIWltcG9ydGFudDtcblx0fVxuXHQucGRmLXRhYiB7XG5cdFx0aSB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBtYXQtY29sb3IoJGR5bmFtaWMtcHJpbWFyeSwgOTAwKSFpbXBvcnRhbnQ7XG5cdFx0fVxuXHRcdCYubWF0LXRhYi1sYWJlbC1hY3RpdmV7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBtYXQtY29sb3IoJGR5bmFtaWMtcHJpbWFyeSwgMTAwLCAuOSkhaW1wb3J0YW50O1xuXHRcdFx0Y29sb3I6IGJsYWNrO1xuXHRcdH1cblx0fVxuXHQuYXItdGFiIHtcblx0XHRpIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6IG1hdC1jb2xvcigkYXJnby1wdXJwbGUsIDkwMCkhaW1wb3J0YW50O1xuXHRcdFx0Y29sb3I6IHdoaXRlO1xuXHRcdH1cblx0XHQmLm1hdC10YWItbGFiZWwtYWN0aXZle1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogbWF0LWNvbG9yKCRhcmdvLXB1cnBsZSwgMTAwLCAuOSkhaW1wb3J0YW50O1xuXHRcdH1cblx0fVxuXHQubWF0LWV4cGFuc2lvbi1pbmRpY2F0b3I6OmFmdGVye1xuXHRcdGJvcmRlci1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjU0KTtcblx0fVxuXG59XG4iLCIkZHluYW1pYy1kYXJrLXRoZW1lOiBtYXQtZGFyay10aGVtZSgoXG5cdGNvbG9yOiAoXG5cdFx0cHJpbWFyeTogJGR5bmFtaWMtcHJpbWFyeSxcblx0XHRhY2NlbnQ6ICRkeW5hbWljLWFjY2VudCxcblx0XHR3YXJuOiAkYXJnby13YXJuLFxuXHQpXG4pKTtcbi8vIFNlZSB0aGUgY29udGVudCBvZiB0aGVzZSBkZWZhdWx0IHBhbGV0dGVzIGluIGZpbGU6XG4vLyBub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZS90aGVtaW5nL19wYWxldHRlLnNjc3NcbiRkYXJrLWZvcmVncm91bmQ6IG1hcC1nZXQoJGR5bmFtaWMtZGFyay10aGVtZSwgJ2ZvcmVncm91bmQnKTtcbiRkYXJrLWJhY2tncm91bmQ6IG1hcC1nZXQoJGR5bmFtaWMtZGFyay10aGVtZSwgJ2JhY2tncm91bmQnKTtcblxuLnRoZW1lLWRhcmsge1xuXHRAaW5jbHVkZSBhbmd1bGFyLW1hdGVyaWFsLXRoZW1lKCRkeW5hbWljLWRhcmstdGhlbWUpO1xuXHRhIHtcblx0XHRjb2xvcjogbWF0LWNvbG9yKCRkYXJrLWZvcmVncm91bmQsICdzZWNvbmRhcnktdGV4dCcpO1xuXHR9XG5cdGEubGluayB7XG5cdFx0Y29sb3I6ICNmZmY7XG5cdH1cblx0Lm1hdC1ncmlkLWxpc3Qge1xuXHRcdC5tYXQtZ3JpZC10aWxlIHtcblx0XHRcdC5ncmlkLXRpbGUtY29udGVudCB7XG5cdFx0XHRcdGJhY2tncm91bmQtY29sb3I6IG1hdC1jb2xvcigkZGFyay1iYWNrZ3JvdW5kLCAnY2FyZCcpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXHQubWF0LXRhYmxlLmhvdmVyLXRhYmxlIHtcblx0XHR0Ym9keSB0cjpob3ZlciB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBtYXQtY29sb3IoJGRhcmstYmFja2dyb3VuZCwgJ2hvdmVyJyk7XG5cdFx0fVxuXHR9XG5cdC5tYXQtY2FyZCB7XG5cdFx0Ji5jYXJkLWRpc2FibGVkIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6IG1hdC1jb2xvcigkZGFyay1iYWNrZ3JvdW5kLCAnZGlzYWJsZWQtYnV0dG9uJyk7XG5cdFx0XHRjb2xvcjogbWF0LWNvbG9yKCRkYXJrLWZvcmVncm91bmQsICdkaXNhYmxlZC1idXR0b24nKTtcblx0XHR9XG5cdFx0Lm1hdC1jYXJkIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6IG1hdC1jb2xvcigkZGFyay1iYWNrZ3JvdW5kLCAnYmFja2dyb3VuZCcpO1xuXHRcdH1cblx0fVxuXHQubWF0LXRhYi1saXN0IHtcblx0XHQubWF0LXRhYi1saW5rIHtcblx0XHRcdGkge1xuXHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBtYXQtY29sb3IoJGR5bmFtaWMtcHJpbWFyeSwgMTAwLCAuNCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkLm1hdC1wcmltYXJ5IC5tYXQtc2VsZWN0LWFycm93IHtcbiAgICBcdGNvbG9yOiAjZmZmO1xuXHR9XG5cdC5tYXQtZm9ybS1maWVsZC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUge1xuXG5cdFx0XHQmLm1hdC1mb2N1c2VkIHtcblxuXHRcdFx0XHQubWF0LWZvcm0tZmllbGQtc3VmZml4IGJ1dHRvbi5tYXQtaWNvbi1idXR0b24ge1xuXHRcdFx0XHRcdGNvbG9yOiAjZmZmO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Lm1hdC1mb3JtLWZpZWxkLW91dGxpbmUge1xuXHRcdFx0XHRcdGNvbG9yOiAjZmZmO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Lm1hdC1mb3JtLWZpZWxkLWxhYmVsIHtcblx0XHRcdFx0XHRjb2xvcjogI2ZmZjtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC5jZGstZm9jdXNlZCB7XG5cdFx0XHRcdFx0Y29sb3I6ICNmZmY7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0LmFyZ28tbm90aWZpY2F0aW9uIHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBtYXQtY29sb3IoJGRhcmstYmFja2dyb3VuZCwgJ2NhcmQnKSAhaW1wb3J0YW50O1xuXHRcdGNvbG9yOiBtYXQtY29sb3IoJGRhcmstZm9yZWdyb3VuZCwgJ2Jhc2UnKSAhaW1wb3J0YW50O1xuXHR9XG5cblx0LmRlZmF1bHQtYmFjayB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogbWF0LWNvbG9yKCRkYXJrLWJhY2tncm91bmQsICdiYWNrZ3JvdW5kJyk7XG5cdFx0Y29sb3I6IG1hdC1jb2xvcigkZGFyay1mb3JlZ3JvdW5kLCAnYmFzZScpO1xuXHR9XG5cdC5ncmV5LWJhY2stYmcge1xuXHRcdGJhY2tncm91bmQtaW1hZ2U6IHVybCgnL2Fzc2V0cy9pbWFnZXMvc2V0dGluZ19idXR0b24uc3ZnJyk7XG5cdFx0YmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcblx0XHRiYWNrZ3JvdW5kLXBvc2l0aW9uOiByaWdodDtcblx0XHRiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xuXHRcdGJhY2tncm91bmQtY29sb3I6IG1hcC1nZXQoJG1hdC1ncmV5LCA5MDApO1xuXHRcdGNvbG9yOiBtYXQtY29sb3IoJGRhcmstZm9yZWdyb3VuZCwgJ2Jhc2UnKTtcblx0fVxuXHQuZ3JleS1iYWNrIHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBtYXAtZ2V0KCRtYXQtZ3JleSwgOTAwKTtcblx0XHRjb2xvcjogbWF0LWNvbG9yKCRkYXJrLWZvcmVncm91bmQsICdiYXNlJyk7XG5cdH1cblx0LnByaW1hcnktYmFjayB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogbWF0LWNvbG9yKCRkeW5hbWljLXByaW1hcnksIDUwMCk7XG5cdFx0Y29sb3I6IG1hdC1jb2xvcigkZHluYW1pYy1wcmltYXJ5LCAnNTAwLWNvbnRyYXN0Jyk7XG5cdH1cblx0LnByaW1hcnktbGlnaHQtYmFjayB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogbWF0LWNvbG9yKCRkeW5hbWljLXByaW1hcnksIDEwMCwgLjkpO1xuXHRcdGNvbG9yOiBtYXQtY29sb3IoJGR5bmFtaWMtcHJpbWFyeSwgJzEwMC1jb250cmFzdCcpO1xuXHR9XG5cdC5wcmltYXJ5LWRhcmstYmFjayB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogbWF0LWNvbG9yKCRkeW5hbWljLXByaW1hcnksIDkwMCwgLjkpO1xuXHRcdGNvbG9yOiBtYXQtY29sb3IoJGR5bmFtaWMtcHJpbWFyeSwgJzkwMC1jb250cmFzdCcpO1xuXHR9XG5cdC5wcmltYXJ5LWRhcmstYmFjayB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogbWF0LWNvbG9yKCRkeW5hbWljLXByaW1hcnksIDkwMCwgLjkpO1xuXHRcdGNvbG9yOiBtYXQtY29sb3IoJGR5bmFtaWMtcHJpbWFyeSwgJzkwMC1jb250cmFzdCcpO1xuXHR9XG5cdC5hY2NlbnQtYmFjayB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogbWF0LWNvbG9yKCRkeW5hbWljLWFjY2VudCwgNTAwKTtcblx0XHRjb2xvcjogbWF0LWNvbG9yKCRkeW5hbWljLWFjY2VudCwgJzUwMC1jb250cmFzdCcpO1xuXHR9XG5cdC5wZGYtbGlnaHQtYmFjayB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogbWF0LWNvbG9yKCRkeW5hbWljLXByaW1hcnksIDEwMCwgLjkpO1xuXHRcdGNvbG9yOiBtYXQtY29sb3IoJGR5bmFtaWMtcHJpbWFyeSwgJzEwMC1jb250cmFzdCcpO1xuXHR9XG5cdC5wZGYtZm9udCB7XG5cdFx0Y29sb3I6IG1hdC1jb2xvcigkZHluYW1pYy1wcmltYXJ5LCA1MDApO1xuXHR9XG5cdC5hci1iYWNrIHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBtYXQtY29sb3IoJGFyZ28tcHVycGxlLCA1MDAsIC45KTtcblx0XHRjb2xvcjogbWF0LWNvbG9yKCRhcmdvLXB1cnBsZSwgJzUwMC1jb250cmFzdCcpO1xuXHRcdC5tYXQtcmlwcGxlLWVsZW1lbnQge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogbWF0LWNvbG9yKCRhcmdvLXB1cnBsZSwgJzUwMC1jb250cmFzdCcsIDAuMSk7XG5cdFx0fVxuXHR9XG5cdC5hci1iYWNrLWJnIHtcblx0XHRiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJy9hc3NldHMvaW1hZ2VzL2VkaXRfYnV0dG9uLnN2ZycpO1xuXHRcdGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG5cdFx0YmFja2dyb3VuZC1wb3NpdGlvbjogYm90dG9tO1xuXHRcdGJhY2tncm91bmQtc2l6ZTogY292ZXI7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogbWF0LWNvbG9yKCRhcmdvLXB1cnBsZSwgNTAwLCAuOSk7XG5cdFx0Y29sb3I6IG1hdC1jb2xvcigkYXJnby1wdXJwbGUsICc1MDAtY29udHJhc3QnKTtcblx0XHQubWF0LXJpcHBsZS1lbGVtZW50IHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6IG1hdC1jb2xvcigkYXJnby1wdXJwbGUsICc1MDAtY29udHJhc3QnLCAwLjEpO1xuXHRcdH1cblx0fVxuXHQuYXItZGFyay1iYWNrIHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBtYXQtY29sb3IoJGFyZ28tcHVycGxlLCA5MDAsIC45KTtcblx0XHRjb2xvcjogbWF0LWNvbG9yKCRhcmdvLXB1cnBsZSwgJzkwMC1jb250cmFzdCcpO1xuXHR9XG5cdC5hci1mb250IHtcblx0XHRjb2xvcjogbWF0LWNvbG9yKCRhcmdvLXB1cnBsZSwgNTAwKTtcblx0fVxuXG5cblx0Lm1hdC1pbnB1dC1lbGVtZW50IHtcbiAgICBcdGNhcmV0LWNvbG9yOiAjZmZmO1xuXHR9XG5cblx0LnNlYXJjaC1idG4sXG5cdC5kZWxldGUtY3Jvc3MsXG5cdC5jYXJldC1kb3duLFxuXHQudGFnLWljb24sXG5cdC5iYXJzIHtcblx0XHRjb2xvcjogI0M3QzdDNztcblx0fVxuXG5cdC5idG4tYXJyb3ctYmcge1xuXHRcdGJhY2tncm91bmQtY29sb3I6IG1hcC1nZXQoJG1hdC1ncmV5LCAzMDApO1xuXHR9XG5cblx0LmJ0bi1keW5hbWljLWNvbG9yIHtcblx0XHRjb2xvcjogd2hpdGUgIWltcG9ydGFudDtcblx0fVxuXHQucGRmLXRhYiB7XG5cdFx0aSB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBtYXQtY29sb3IoJGR5bmFtaWMtcHJpbWFyeSwgOTAwKSFpbXBvcnRhbnQ7XG5cdFx0fVxuXHRcdCYubWF0LXRhYi1sYWJlbC1hY3RpdmV7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBtYXQtY29sb3IoJGR5bmFtaWMtcHJpbWFyeSwgMTAwLCAuOSkhaW1wb3J0YW50O1xuXHRcdFx0Y29sb3I6IGJsYWNrO1xuXHRcdH1cblx0fVxuXHQuYXItdGFiIHtcblx0XHRpIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6IG1hdC1jb2xvcigkYXJnby1wdXJwbGUsIDkwMCkhaW1wb3J0YW50O1xuXHRcdFx0Y29sb3I6IHdoaXRlO1xuXHRcdH1cblx0XHQmLm1hdC10YWItbGFiZWwtYWN0aXZle1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogbWF0LWNvbG9yKCRhcmdvLXB1cnBsZSwgMTAwLCAuOSkhaW1wb3J0YW50O1xuXHRcdFx0Y29sb3I6IGJsYWNrO1xuXHRcdH1cblx0fVxufVxuIiwiQG1peGluIG5neC1wb3BwZXJqcy10aGVtZSgkYmFja2dyb3VuZCwgJHRleHQsICRtYXgtd2lkdGg6IDI1MHB4LCAkei1pbmRleDogOTk5KSB7XG5cbiAgZGl2Lm5neHBfX2NvbnRhaW5lciB7XG4gICAgYmFja2dyb3VuZDogJGJhY2tncm91bmQ7XG4gICAgY29sb3I6ICR0ZXh0O1xuICAgIGJvcmRlcjogMDtcbiAgICBtYXgtd2lkdGg6ICRtYXgtd2lkdGg7XG4gICAgYm94LXNoYWRvdzogMCAzcHggNXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLCAwIDVweCA4cHggMCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwIDFweCAxNHB4IDAgcmdiYSgwLCAwLCAwLCAwLjEyKTtcbiAgICB6LWluZGV4OiAkei1pbmRleDtcblxuICAgID4gLm5neHBfX2Fycm93IHtcbiAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmQ7XG4gICAgICB9XG4gICAgfVxuICB9XG59IixudWxsXX0= */

/*# sourceMappingURL=styles.css.map*/