@layer primefaces.tokens, primefaces.vendor, primefaces.components, primefaces.behaviors;

/* packages/datepicker/datepicker/src/datepicker.css */
@layer primefaces.components {
  .p-datepicker {
    position: relative;
    display: inline-flex;
    width: auto;
  }
  .p-datepicker-panel {
    .p-datepicker-header .p-datepicker-next,
    .p-datepicker-header .p-datepicker-prev,
    table td > a,
    .p-timepicker > div a {
      cursor: pointer;
    }
    .p-datepicker-calendar-container {
      td span,
      td a {
        text-align: center;
      }
      td.p-datepicker-other-month-hidden > * {
        visibility: hidden;
      }
    }
    .p-timepicker {
      display: flex;
      justify-content: center;
      align-items: center;
      gap: var(--p-datepicker-time-picker-gap);
      text-align: center;
      > div {
        display: inline-flex;
        flex-direction: column;
        align-items: center;
        row-gap: var(--p-datepicker-time-picker-button-gap);
      }
      > .p-ampm-picker {
        margin-inline-start: var(--p-datepicker-time-picker-gap);
      }
      > div a {
        display: block;
      }
      > .p-divider {
        margin: 0;
        padding: 0;
        min-width: 0.75em;
      }
      > .p-divider::before,
      > .p-divider::after {
        display: none;
      }
      > .p-divider button {
        visibility: hidden;
        opacity: 0;
      }
      &.p-timepicker-timeinput input {
        text-align: center;
        -moz-appearance: textfield;
      }
      &.p-timepicker-timeinput input::-webkit-outer-spin-button,
      &.p-timepicker-timeinput input::-webkit-inner-spin-button {
        -webkit-appearance: none;
        margin: 0;
      }
    }
  }
  .p-datepicker-multiple-month .p-datepicker-group {
    display: table-cell;
    border-left-width: 0;
    border-top-width: 0;
    border-bottom-width: 0;
  }
  .p-datepicker-panel.p-datepicker-multiple-month {
    width: auto;
  }
  .p-datepicker .p-datepicker-touch-ui,
  .p-datepicker-touch-ui {
    position: fixed;
    top: 50%;
    left: 50%;
    min-width: 80vw;
    width: auto;
    transform: translate(-50%, -50%);
  }
  .p-monthpicker .p-monthpicker-month {
    width: 33.3%;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    text-align: center;
    cursor: pointer;
  }
  .p-state-disabled.p-datepicker-disabled {
    opacity: 1;
  }
  .p-datepicker-disabled tbody a {
    opacity: var(--p-disabled-opacity);
  }
  .p-datepicker-panel {
    display: none;
    background: var(--p-datepicker-panel-background);
    color: var(--p-datepicker-panel-color);
    border: 1px solid var(--p-datepicker-panel-border-color);
    border-radius: var(--p-datepicker-panel-border-radius);
    padding: var(--p-datepicker-panel-padding);
    width: auto;
    &.p-input-overlay {
      box-shadow: var(--p-datepicker-panel-shadow);
    }
    &.p-datepicker-inline {
      box-shadow: none;
      overflow-x: auto;
    }
    .p-datepicker-header {
      position: relative;
      display: flex;
      align-items: center;
      justify-content: space-between;
      margin: 0;
      padding: var(--p-datepicker-header-padding);
      line-height: normal;
      background: var(--p-datepicker-header-background);
      color: var(--p-datepicker-header-color);
      font-weight: var(--p-datepicker-title-font-weight);
      font-size: var(--p-datepicker-title-font-size);
      border: 0 none;
      border-bottom: 1px solid var(--p-datepicker-header-border-color);
      border-radius: 0;
    }
    .p-datepicker-next,
    .p-datepicker-prev {
      position: relative;
      flex: 0 0 auto;
      cursor: pointer;
      top: auto;
      left: auto;
      right: auto;
      width: var(--p-button-icon-only-width);
      height: var(--p-button-icon-only-width);
      line-height: var(--p-button-icon-only-width);
      margin: 0;
      padding: 0;
      text-align: center;
      -webkit-user-select: none;
      user-select: none;
      background: transparent;
      color: var(--p-button-text-secondary-color);
      border: 0 none;
      border-radius: 50%;
      outline-color: transparent;
      font-style: normal;
      font-weight: normal;
      display: inline-block;
      transition:
        background var(--p-datepicker-transition-duration),
        color var(--p-datepicker-transition-duration),
        outline-color var(--p-datepicker-transition-duration),
        box-shadow var(--p-datepicker-transition-duration);
      &:not(.p-state-disabled):hover {
        background: var(--p-button-text-secondary-hover-background);
        color: var(--p-button-text-secondary-color);
      }
      &:not(.p-state-disabled):active {
        background: var(--p-button-text-secondary-active-background);
      }
      &:focus-visible {
        outline: var(--p-focus-ring-width) var(--p-focus-ring-style) var(--p-focus-ring-color);
        outline-offset: var(--p-focus-ring-offset);
        box-shadow: var(--p-focus-ring-shadow);
      }
      &.p-state-disabled {
        cursor: default;
      }
    }
    .p-datepicker-prev {
      order: 0;
    }
    .p-datepicker-next {
      order: 2;
    }
    .p-datepicker-next-icon {
      --_icon: var(--p-datepicker-next-icon);
    }
    .p-datepicker-prev-icon {
      --_icon: var(--p-datepicker-prev-icon);
    }
    .p-datepicker-title {
      order: 1;
      flex: 1 1 auto;
      text-align: center;
      display: flex;
      align-items: center;
      justify-content: center;
      gap: var(--p-datepicker-title-gap);
      line-height: 1;
      margin: 0;
      .p-datepicker-month,
      .p-datepicker-year {
        margin: 0;
        font-family: inherit;
        background: transparent;
        border: 0 none;
        outline-color: transparent;
        transition:
          background var(--p-datepicker-transition-duration),
          color var(--p-datepicker-transition-duration),
          outline-color var(--p-datepicker-transition-duration),
          box-shadow var(--p-datepicker-transition-duration);
      }
      .p-datepicker-month {
        padding: var(--p-datepicker-select-month-padding);
        color: var(--p-datepicker-select-month-color);
        border-radius: var(--p-datepicker-select-month-border-radius);
        font-size: var(--p-datepicker-select-month-font-size);
        font-weight: var(--p-datepicker-select-month-font-weight);
      }
      .p-datepicker-year {
        padding: var(--p-datepicker-select-year-padding);
        color: var(--p-datepicker-select-year-color);
        border-radius: var(--p-datepicker-select-year-border-radius);
        font-size: var(--p-datepicker-select-year-font-size);
        font-weight: var(--p-datepicker-select-year-font-weight);
      }
      select,
      input {
        cursor: pointer;
      }
      select.p-datepicker-month:hover {
        background: var(--p-datepicker-select-month-hover-background);
        color: var(--p-datepicker-select-month-hover-color);
      }
      select.p-datepicker-year:hover,
      input.p-datepicker-year:hover {
        background: var(--p-datepicker-select-year-hover-background);
        color: var(--p-datepicker-select-year-hover-color);
      }
      select:focus-visible,
      input:focus-visible {
        outline: var(--p-datepicker-date-focus-ring-width) var(--p-datepicker-date-focus-ring-style) var(--p-datepicker-date-focus-ring-color);
        outline-offset: var(--p-datepicker-date-focus-ring-offset);
        box-shadow: var(--p-datepicker-date-focus-ring-shadow);
      }
      select option {
        background: var(--p-datepicker-panel-background);
        color: var(--p-datepicker-panel-color);
      }
    }
    select.p-datepicker-month,
    select.p-datepicker-year {
      width: auto;
    }
    table {
      font-size: 0.9em;
      width: 100%;
      border-collapse: collapse;
    }
    th {
      text-align: center;
      border: 0;
    }
    td {
      border: 0;
    }
    td span,
    td a {
      text-decoration: none;
    }
    .p-datepicker-calendar {
      margin: var(--p-datepicker-day-view-margin);
      th {
        padding: var(--p-datepicker-week-day-padding);
        text-align: center;
        color: var(--p-datepicker-week-day-color);
        font-size: var(--p-datepicker-week-day-font-size);
        font-weight: var(--p-datepicker-week-day-font-weight);
      }
      th > span {
        width: var(--p-datepicker-date-width);
        height: var(--p-datepicker-date-height);
      }
      td {
        padding: var(--p-datepicker-date-padding);
        text-align: center;
      }
      td > a,
      td > span {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        padding: 0;
        margin: 0 auto;
        text-align: center;
        width: var(--p-datepicker-date-width);
        height: var(--p-datepicker-date-height);
        color: var(--p-datepicker-date-color);
        font-size: var(--p-datepicker-date-font-size);
        font-weight: var(--p-datepicker-date-font-weight);
        font-variant-numeric: tabular-nums;
        border: 0 none;
        border-radius: var(--p-datepicker-date-border-radius);
        outline-color: transparent;
        transition:
          background var(--p-datepicker-transition-duration),
          color var(--p-datepicker-transition-duration),
          border-color var(--p-datepicker-transition-duration),
          box-shadow var(--p-datepicker-transition-duration),
          outline-color var(--p-datepicker-transition-duration);
      }
      td.p-datepicker-other-month > a,
      td.p-datepicker-other-month > span {
        color: var(--p-datepicker-other-month-color);
      }
      td > a:not(.p-state-disabled):hover,
      td > a.p-state-hover {
        background: var(--p-datepicker-date-hover-background);
        color: var(--p-datepicker-date-hover-color);
      }
      td > a:focus-visible,
      td > span:focus-visible {
        outline: var(--p-datepicker-date-focus-ring-width) var(--p-datepicker-date-focus-ring-style) var(--p-datepicker-date-focus-ring-color);
        outline-offset: var(--p-datepicker-date-focus-ring-offset);
        box-shadow: var(--p-datepicker-date-focus-ring-shadow);
      }
      td > .p-state-disabled {
        cursor: default;
      }
      td.p-datepicker-today > a,
      td.p-datepicker-today > span {
        background: var(--p-datepicker-today-background);
        color: var(--p-datepicker-today-color);
        border: 0 none;
      }
      td.p-datepicker-today > a:not(.p-state-disabled):hover,
      td.p-datepicker-today > a.p-state-hover {
        background: var(--p-datepicker-date-hover-background);
        color: var(--p-datepicker-date-hover-color);
      }
      td > a.p-state-active,
      td > span.p-state-active,
      td > a.p-state-active:hover,
      td.p-datepicker-today > a.p-state-active,
      td.p-datepicker-today > span.p-state-active {
        background: var(--p-datepicker-date-selected-background);
        color: var(--p-datepicker-date-selected-color);
        border: 0 none;
      }
      td.p-datepicker-weeknumber > span {
        opacity: 1;
        color: var(--p-datepicker-week-number-color);
        font-size: var(--p-datepicker-week-number-font-size);
      }
    }
    .p-timepicker {
      padding: var(--p-datepicker-time-picker-padding);
      margin: 0;
      background: transparent;
      color: inherit;
      font-weight: normal;
      border: 0 none;
      border-top: 1px solid var(--p-datepicker-time-picker-border-color);
      border-radius: 0;
    }
    &.p-datepicker-timeonly .p-timepicker {
      border-top: 0 none;
    }
    .p-timepicker-timeinput {
      input {
        font-family: inherit;
        font-size: var(--p-inputtext-font-size);
        font-weight: var(--p-inputtext-font-weight);
        color: var(--p-inputtext-color);
        background: var(--p-inputtext-background);
        padding-block: var(--p-inputtext-padding-y);
        padding-inline: var(--p-inputtext-padding-x);
        border: 1px solid var(--p-inputtext-border-color);
        border-radius: var(--p-inputtext-border-radius);
        box-shadow: var(--p-inputtext-shadow);
        outline-color: transparent;
        appearance: none;
        font-variant-numeric: tabular-nums;
        width: var(--p-datepicker-time-input-width);
        transition:
          background var(--p-inputtext-transition-duration),
          color var(--p-inputtext-transition-duration),
          border-color var(--p-inputtext-transition-duration),
          outline-color var(--p-inputtext-transition-duration),
          box-shadow var(--p-inputtext-transition-duration);
      }
      .p-millisecond-picker input {
        width: calc(var(--p-datepicker-time-input-width) * 1.25);
      }
      input:hover,
      input.p-state-hover {
        border-color: var(--p-inputtext-hover-border-color);
      }
      input:focus {
        border-color: var(--p-inputtext-focus-border-color);
        outline: var(--p-inputtext-focus-ring-width) var(--p-inputtext-focus-ring-style) var(--p-inputtext-focus-ring-color);
        outline-offset: var(--p-inputtext-focus-ring-offset);
        box-shadow: var(--p-inputtext-focus-ring-shadow);
      }
      .p-divider > span,
      .p-ampm-picker > span {
        padding-block: var(--p-inputtext-padding-y);
        padding-inline: calc(var(--p-inputtext-padding-x) / 2);
        font-size: var(--p-inputtext-font-size);
      }
    }
    .p-timepicker > div > span,
    .p-timepicker .p-divider > span {
      color: var(--p-datepicker-time-picker-color);
      font-size: var(--p-datepicker-time-picker-font-size);
      font-weight: var(--p-datepicker-time-picker-font-weight);
      font-variant-numeric: tabular-nums;
    }
    .p-picker-up,
    .p-picker-down {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      width: var(--p-button-icon-only-width);
      height: var(--p-button-icon-only-width);
      padding: 0;
      margin: 0;
      text-align: center;
      -webkit-user-select: none;
      user-select: none;
      cursor: pointer;
      background: transparent;
      color: var(--p-button-text-secondary-color);
      border: 0 none;
      border-radius: 50%;
      outline-color: transparent;
      transition:
        background var(--p-datepicker-transition-duration),
        color var(--p-datepicker-transition-duration),
        outline-color var(--p-datepicker-transition-duration),
        box-shadow var(--p-datepicker-transition-duration);
      &:hover {
        background: var(--p-button-text-secondary-hover-background);
        color: var(--p-button-text-secondary-color);
      }
      &:active {
        background: var(--p-button-text-secondary-active-background);
      }
      &:focus-visible {
        outline: var(--p-focus-ring-width) var(--p-focus-ring-style) var(--p-focus-ring-color);
        outline-offset: var(--p-focus-ring-offset);
        box-shadow: var(--p-focus-ring-shadow);
      }
    }
    .p-datepicker-increment-icon {
      --_icon: var(--p-datepicker-increment-icon);
    }
    .p-datepicker-decrement-icon {
      --_icon: var(--p-datepicker-decrement-icon);
    }
    .p-datepicker-buttonbar {
      margin: 0;
      padding: var(--p-datepicker-buttonbar-padding);
      background: transparent;
      color: inherit;
      border: 0 none;
      border-top: 1px solid var(--p-datepicker-buttonbar-border-color);
      border-radius: 0;
    }
    .p-datepicker-buttonbar button {
      --_bg: var(--p-button-secondary-background);
      --_hover-bg: var(--p-button-secondary-hover-background);
      --_active-bg: var(--p-button-secondary-active-background);
      --_border: var(--p-button-secondary-border-color);
      --_hover-border: var(--p-button-secondary-hover-border-color);
      --_active-border: var(--p-button-secondary-active-border-color);
      --_color: var(--p-button-secondary-color);
      --_hover-color: var(--p-button-secondary-hover-color);
      --_active-color: var(--p-button-secondary-active-color);
      --_focus-ring-color: var(--p-button-secondary-focus-ring-color);
      --_focus-ring-shadow: var(--p-button-secondary-focus-ring-shadow);
      background: var(--p-button-secondary-background);
      color: var(--p-button-secondary-color);
      border: 1px solid var(--p-button-secondary-border-color);
      border-radius: var(--p-button-border-radius);
      transition:
        background var(--p-button-transition-duration),
        color var(--p-button-transition-duration),
        border-color var(--p-button-transition-duration),
        outline-color var(--p-button-transition-duration),
        box-shadow var(--p-button-transition-duration);
    }
    .p-datepicker-buttonbar button {
      &.p-state-hover,
      &:not(:disabled):hover {
        background: var(--p-button-secondary-hover-background);
        border-color: var(--p-button-secondary-hover-border-color);
        color: var(--p-button-secondary-hover-color);
      }
      &.p-state-focus,
      &:focus-visible {
        outline: var(--p-button-focus-ring-width) var(--p-button-focus-ring-style) var(--p-button-secondary-focus-ring-color);
        outline-offset: var(--p-button-focus-ring-offset);
        box-shadow: var(--p-button-secondary-focus-ring-shadow);
      }
      &.p-state-active,
      &:not(:disabled):active {
        background: var(--p-button-secondary-active-background);
        border-color: var(--p-button-secondary-active-border-color);
        color: var(--p-button-secondary-active-color);
      }
    }
    .p-datepicker-buttonbar .ui-g-6:first-child {
      text-align: start;
    }
    .p-datepicker-buttonbar .ui-g-6:last-child {
      text-align: end;
    }
    .p-monthpicker {
      margin: var(--p-datepicker-month-view-margin);
    }
    .p-monthpicker-month {
      margin: 0;
      padding: var(--p-datepicker-month-padding);
      color: var(--p-datepicker-date-color);
      font-size: var(--p-datepicker-date-font-size);
      font-weight: var(--p-datepicker-date-font-weight);
      border-radius: var(--p-datepicker-month-border-radius);
      outline-color: transparent;
      transition:
        background var(--p-datepicker-transition-duration),
        color var(--p-datepicker-transition-duration),
        border-color var(--p-datepicker-transition-duration),
        box-shadow var(--p-datepicker-transition-duration),
        outline-color var(--p-datepicker-transition-duration);
      &:not(.p-state-disabled, .p-state-active):hover,
      &.p-state-hover {
        background: var(--p-datepicker-date-hover-background);
        color: var(--p-datepicker-date-hover-color);
      }
      &:focus-visible {
        outline: var(--p-datepicker-date-focus-ring-width) var(--p-datepicker-date-focus-ring-style) var(--p-datepicker-date-focus-ring-color);
        outline-offset: var(--p-datepicker-date-focus-ring-offset);
        box-shadow: var(--p-datepicker-date-focus-ring-shadow);
      }
      &.p-state-active {
        background: var(--p-datepicker-date-selected-background);
        color: var(--p-datepicker-date-selected-color);
        border: 0 none;
      }
      &.p-state-disabled {
        cursor: default;
      }
    }
    .p-datepicker-group {
      padding-block: 0;
      padding-inline: var(--p-datepicker-group-gap);
      border-inline-start: 1px solid var(--p-datepicker-group-border-color);
      &:first-child {
        padding-inline-start: 0;
        border-inline-start: 0 none;
      }
      &:last-child {
        padding-inline-end: 0;
      }
    }
    &.p-datepicker-touch-ui .p-datepicker-calendar {
      th {
        padding: var(--p-datepicker-touch-ui-date-padding) 0;
      }
      td > a,
      td > span {
        width: min(100%, calc(var(--p-datepicker-date-width) + 2 * var(--p-datepicker-touch-ui-date-padding)));
        height: auto;
        aspect-ratio: 1;
      }
    }
  }
  .p-datepicker-panel:dir(rtl) .p-datepicker-next-icon {
    scale: -1 1;
  }
  .p-datepicker-panel:dir(rtl) .p-datepicker-prev-icon {
    scale: -1 1;
  }
  @media (max-width: 480px) {
    .p-datepicker-panel .p-datepicker-calendar td > a,
    .p-datepicker-panel .p-datepicker-calendar td > span {
      width: calc(var(--p-datepicker-date-width) * 0.6);
      height: calc(var(--p-datepicker-date-height) * 0.6);
    }
  }
  .p-calendar .p-button.p-button-icon-only {
    --_bg: var(--p-datepicker-dropdown-background);
    --_hover-bg: var(--p-datepicker-dropdown-hover-background);
    --_active-bg: var(--p-datepicker-dropdown-active-background);
    --_border: var(--p-datepicker-dropdown-border-color);
    --_hover-border: var(--p-datepicker-dropdown-hover-border-color);
    --_active-border: var(--p-datepicker-dropdown-active-border-color);
    --_color: var(--p-datepicker-dropdown-color);
    --_hover-color: var(--p-datepicker-dropdown-hover-color);
    --_active-color: var(--p-datepicker-dropdown-active-color);
    --_focus-ring-color: var(--p-datepicker-dropdown-focus-ring-color);
    --_focus-ring-shadow: var(--p-datepicker-dropdown-focus-ring-shadow);
    width: var(--p-datepicker-dropdown-width);
    padding-block: 0;
    border-inline-start-width: 0;
    border-radius: 0;
    border-start-end-radius: var(--p-datepicker-dropdown-border-radius);
    border-end-end-radius: var(--p-datepicker-dropdown-border-radius);
    &:focus-visible {
      outline: var(--p-datepicker-dropdown-focus-ring-width) var(--p-datepicker-dropdown-focus-ring-style) var(--_focus-ring-color);
      outline-offset: var(--p-datepicker-dropdown-focus-ring-offset);
    }
    .p-datepicker-dropdown-icon {
      --_icon: var(--p-datepicker-dropdown-icon);
    }
  }
  .p-calendar.p-trigger-calendar > .p-inputfield {
    border-start-end-radius: 0;
    border-end-end-radius: 0;
  }
  .p-fluid {
    .p-calendar,
    .p-calendar > input {
      width: 100%;
    }
    .p-calendar {
      position: relative;
    }
    .p-datepicker {
      display: flex;
    }
    .p-trigger-calendar > .p-inputfield {
      flex: 1 1 auto;
      width: 1%;
    }
  }
  .p-calendar.p-trigger-calendar:has(> .p-inputtext-sm) > .p-datepicker-trigger.p-button {
    width: var(--p-datepicker-dropdown-sm-width);
  }
  .p-calendar.p-trigger-calendar:has(> .p-inputtext-lg) > .p-datepicker-trigger.p-button {
    width: var(--p-datepicker-dropdown-lg-width);
  }
}

/* packages/datepicker/datepicker/index.css */
/*# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL21haW4vZnJvbnRlbmQvcGFja2FnZXMvZGF0ZXBpY2tlci9kYXRlcGlja2VyL3NyYy9kYXRlcGlja2VyLmNzcyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLypcbiAqIERhdGVQaWNrZXI6IHA6ZGF0ZVBpY2tlciwgbW9udGggcGlja2VyLCB0aW1lIHBpY2tlciwgYnV0dG9uIGJhci4gTG9hZGVkIHdpdGggZGF0ZXBpY2tlci9kYXRlcGlja2VyLmpzLlxuICpcbiAqIFN1cHBvcnRlZCBzdGF0ZSBjbGFzc2VzOiBwLXN0YXRlLWFjdGl2ZSAoc2VsZWN0ZWQgZGF0ZSAvIG1vbnRoKSwgcC1zdGF0ZS1ob3ZlciwgcC1zdGF0ZS1kaXNhYmxlZCAoZGF0ZSwgbW9udGgsXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgbmF2aWdhdG9yLCB3aG9sZSBwYW5lbCksIHAtZGF0ZXBpY2tlci10b2RheSxcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICBwLWRhdGVwaWNrZXItb3RoZXItbW9udGgsIHAtZGF0ZXBpY2tlci13ZWVrbnVtYmVyLCBwLWlucHV0LW92ZXJsYXkgKHBvcHVwKSxcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICBwLWRhdGVwaWNrZXItaW5saW5lLCBwLWRhdGVwaWNrZXItbXVsdGlwbGUtbW9udGgsIHAtZGF0ZXBpY2tlci10aW1lb25seSxcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICBwLWRhdGVwaWNrZXItdG91Y2gtdWksIHAtdHJpZ2dlci1jYWxlbmRhcjsgUlRMIGZvbGxvd3MgdGhlIGRpciBvZiB0aGUgcGFuZWxcbiAqIFRoZSB0cmlnZ2VyIGJ1dHRvbiBpcyBhIC5wLWJ1dHRvbjogaXQgb25seSByZW1hcHMgdGhlIHByaXZhdGUgLS1fKiBidXR0b24gdmFyaWFibGVzIHRvIHRoZSBkYXRlcGlja2VyIGRyb3Bkb3duIHRva2Vucy5cbiAqIFByaW1lRmFjZXMgb25seSB0b2tlbnM6IHRoZSBkYXRlcGlja2VyIGJsb2NrIG9mIHByZXNldHMvKi5jc3NcbiAqIFdpdGhvdXQgdGhlIGpRdWVyeSBVSSBkYXRlcGlja2VyIENTUzsgdGhlIGhlYWRlciBhbmQgYnV0dG9uIGJhciBhcmUgZmxleCByb3dzLlxuICovXG5cbi8qIHA6ZGF0ZVBpY2tlciAqL1xuLnAtZGF0ZXBpY2tlciB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIHdpZHRoOiBhdXRvO1xufVxuXG4ucC1kYXRlcGlja2VyLXBhbmVsIHtcbiAgICAucC1kYXRlcGlja2VyLWhlYWRlciAucC1kYXRlcGlja2VyLW5leHQsXG4gICAgLnAtZGF0ZXBpY2tlci1oZWFkZXIgLnAtZGF0ZXBpY2tlci1wcmV2LFxuICAgIHRhYmxlIHRkID4gYSxcbiAgICAucC10aW1lcGlja2VyID4gZGl2IGEge1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgfVxuXG4gICAgLnAtZGF0ZXBpY2tlci1jYWxlbmRhci1jb250YWluZXIge1xuICAgICAgICB0ZCBzcGFuLFxuICAgICAgICB0ZCBhIHtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8qIGhpZGUgb25seSB0aGUgY29udGVudCwgYSBoaWRkZW4gY2VsbCB3b3VsZCBzaGlmdCB0aGUgY29sdW1ucyBhbm5vdW5jZWQgYnkgc2NyZWVuIHJlYWRlcnMgKi9cbiAgICAgICAgdGQucC1kYXRlcGlja2VyLW90aGVyLW1vbnRoLWhpZGRlbiA+ICoge1xuICAgICAgICAgICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLnAtdGltZXBpY2tlciB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IHZhcigtLXAtZGF0ZXBpY2tlci10aW1lLXBpY2tlci1nYXApO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5cbiAgICAgICAgPiBkaXYge1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgIHJvdy1nYXA6IHZhcigtLXAtZGF0ZXBpY2tlci10aW1lLXBpY2tlci1idXR0b24tZ2FwKTtcbiAgICAgICAgfVxuXG4gICAgICAgID4gLnAtYW1wbS1waWNrZXIge1xuICAgICAgICAgICAgbWFyZ2luLWlubGluZS1zdGFydDogdmFyKC0tcC1kYXRlcGlja2VyLXRpbWUtcGlja2VyLWdhcCk7XG4gICAgICAgIH1cblxuICAgICAgICA+IGRpdiBhIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB9XG5cbiAgICAgICAgLyogLnAtZGl2aWRlciBpcyBhbHNvIHRoZSBwOmRpdmlkZXIgY2xhc3MgKGRpdmlkZXIuY3NzKSwgcmVzZXQgaGVyZTsgdGhlIHNlcGFyYXRvciBjb2x1bW4ga2VlcHNcbiAgICAgICAgICAgKGludmlzaWJsZSkgYnV0dG9ucyBzbyB0aGUgXCI6XCIgc3RheXMgYWxpZ25lZCB3aXRoIHRoZSB2YWx1ZXMgKi9cbiAgICAgICAgPiAucC1kaXZpZGVyIHtcbiAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgICAgICBtaW4td2lkdGg6IDAuNzVlbTtcbiAgICAgICAgfVxuXG4gICAgICAgID4gLnAtZGl2aWRlcjo6YmVmb3JlLFxuICAgICAgICA+IC5wLWRpdmlkZXI6OmFmdGVyIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cblxuICAgICAgICA+IC5wLWRpdmlkZXIgYnV0dG9uIHtcbiAgICAgICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIH1cblxuICAgICAgICAmLnAtdGltZXBpY2tlci10aW1laW5wdXQgaW5wdXQge1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgICAgLW1vei1hcHBlYXJhbmNlOiB0ZXh0ZmllbGQ7XG4gICAgICAgIH1cblxuICAgICAgICAmLnAtdGltZXBpY2tlci10aW1laW5wdXQgaW5wdXQ6Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b24sXG4gICAgICAgICYucC10aW1lcGlja2VyLXRpbWVpbnB1dCBpbnB1dDo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbiB7XG4gICAgICAgICAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5wLWRhdGVwaWNrZXItbXVsdGlwbGUtbW9udGggLnAtZGF0ZXBpY2tlci1ncm91cCB7XG4gICAgZGlzcGxheTogdGFibGUtY2VsbDtcbiAgICBib3JkZXItbGVmdC13aWR0aDogMDtcbiAgICBib3JkZXItdG9wLXdpZHRoOiAwO1xuICAgIGJvcmRlci1ib3R0b20td2lkdGg6IDA7XG59XG5cbi5wLWRhdGVwaWNrZXItcGFuZWwucC1kYXRlcGlja2VyLW11bHRpcGxlLW1vbnRoIHtcbiAgICB3aWR0aDogYXV0bztcbn1cblxuLnAtZGF0ZXBpY2tlciAucC1kYXRlcGlja2VyLXRvdWNoLXVpLFxuLnAtZGF0ZXBpY2tlci10b3VjaC11aSB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIHRvcDogNTAlO1xuICAgIGxlZnQ6IDUwJTtcbiAgICBtaW4td2lkdGg6IDgwdnc7XG4gICAgd2lkdGg6IGF1dG87XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG59XG5cbi5wLW1vbnRocGlja2VyIC5wLW1vbnRocGlja2VyLW1vbnRoIHtcbiAgICB3aWR0aDogMzMuMyU7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4ucC1zdGF0ZS1kaXNhYmxlZC5wLWRhdGVwaWNrZXItZGlzYWJsZWQge1xuICAgIG9wYWNpdHk6IDE7XG59XG5cbi5wLWRhdGVwaWNrZXItZGlzYWJsZWQgdGJvZHkgYSB7XG4gICAgb3BhY2l0eTogdmFyKC0tcC1kaXNhYmxlZC1vcGFjaXR5KTtcbn1cblxuLnAtZGF0ZXBpY2tlci1wYW5lbCB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1wLWRhdGVwaWNrZXItcGFuZWwtYmFja2dyb3VuZCk7XG4gICAgY29sb3I6IHZhcigtLXAtZGF0ZXBpY2tlci1wYW5lbC1jb2xvcik7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tcC1kYXRlcGlja2VyLXBhbmVsLWJvcmRlci1jb2xvcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcC1kYXRlcGlja2VyLXBhbmVsLWJvcmRlci1yYWRpdXMpO1xuICAgIHBhZGRpbmc6IHZhcigtLXAtZGF0ZXBpY2tlci1wYW5lbC1wYWRkaW5nKTtcbiAgICB3aWR0aDogYXV0bztcblxuICAgICYucC1pbnB1dC1vdmVybGF5IHtcbiAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tcC1kYXRlcGlja2VyLXBhbmVsLXNoYWRvdyk7XG4gICAgfVxuXG4gICAgJi5wLWRhdGVwaWNrZXItaW5saW5lIHtcbiAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICAgICAgb3ZlcmZsb3cteDogYXV0bztcbiAgICB9XG5cbiAgICAvKiBoZWFkZXIgKi9cbiAgICAucC1kYXRlcGlja2VyLWhlYWRlciB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXAtZGF0ZXBpY2tlci1oZWFkZXItcGFkZGluZyk7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiBub3JtYWw7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXAtZGF0ZXBpY2tlci1oZWFkZXItYmFja2dyb3VuZCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1wLWRhdGVwaWNrZXItaGVhZGVyLWNvbG9yKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXAtZGF0ZXBpY2tlci10aXRsZS1mb250LXdlaWdodCk7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tcC1kYXRlcGlja2VyLXRpdGxlLWZvbnQtc2l6ZSk7XG4gICAgICAgIGJvcmRlcjogMCBub25lO1xuICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tcC1kYXRlcGlja2VyLWhlYWRlci1ib3JkZXItY29sb3IpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwO1xuICAgIH1cblxuICAgIC8qIHByZXYgLyBuZXh0OiByb3VuZGVkIHNlY29uZGFyeSB0ZXh0IGJ1dHRvbnMgbGlrZSBQcmltZVVJWCAod2hpY2ggdXNlcyBhIEJ1dHRvbiB0aGVyZSkgKi9cbiAgICAucC1kYXRlcGlja2VyLW5leHQsXG4gICAgLnAtZGF0ZXBpY2tlci1wcmV2IHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBmbGV4OiAwIDAgYXV0bztcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICB0b3A6IGF1dG87XG4gICAgICAgIGxlZnQ6IGF1dG87XG4gICAgICAgIHJpZ2h0OiBhdXRvO1xuICAgICAgICB3aWR0aDogdmFyKC0tcC1idXR0b24taWNvbi1vbmx5LXdpZHRoKTtcbiAgICAgICAgaGVpZ2h0OiB2YXIoLS1wLWJ1dHRvbi1pY29uLW9ubHktd2lkdGgpO1xuICAgICAgICBsaW5lLWhlaWdodDogdmFyKC0tcC1idXR0b24taWNvbi1vbmx5LXdpZHRoKTtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgICAgIHVzZXItc2VsZWN0OiBub25lO1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgY29sb3I6IHZhcigtLXAtYnV0dG9uLXRleHQtc2Vjb25kYXJ5LWNvbG9yKTtcbiAgICAgICAgYm9yZGVyOiAwIG5vbmU7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgICAgb3V0bGluZS1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIHZhcigtLXAtZGF0ZXBpY2tlci10cmFuc2l0aW9uLWR1cmF0aW9uKSwgY29sb3IgdmFyKC0tcC1kYXRlcGlja2VyLXRyYW5zaXRpb24tZHVyYXRpb24pLFxuICAgICAgICAgICAgb3V0bGluZS1jb2xvciB2YXIoLS1wLWRhdGVwaWNrZXItdHJhbnNpdGlvbi1kdXJhdGlvbiksIGJveC1zaGFkb3cgdmFyKC0tcC1kYXRlcGlja2VyLXRyYW5zaXRpb24tZHVyYXRpb24pO1xuXG4gICAgICAgICY6bm90KC5wLXN0YXRlLWRpc2FibGVkKTpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1wLWJ1dHRvbi10ZXh0LXNlY29uZGFyeS1ob3Zlci1iYWNrZ3JvdW5kKTtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1wLWJ1dHRvbi10ZXh0LXNlY29uZGFyeS1jb2xvcik7XG4gICAgICAgIH1cblxuICAgICAgICAmOm5vdCgucC1zdGF0ZS1kaXNhYmxlZCk6YWN0aXZlIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXAtYnV0dG9uLXRleHQtc2Vjb25kYXJ5LWFjdGl2ZS1iYWNrZ3JvdW5kKTtcbiAgICAgICAgfVxuXG4gICAgICAgICY6Zm9jdXMtdmlzaWJsZSB7XG4gICAgICAgICAgICBvdXRsaW5lOiB2YXIoLS1wLWZvY3VzLXJpbmctd2lkdGgpIHZhcigtLXAtZm9jdXMtcmluZy1zdHlsZSkgdmFyKC0tcC1mb2N1cy1yaW5nLWNvbG9yKTtcbiAgICAgICAgICAgIG91dGxpbmUtb2Zmc2V0OiB2YXIoLS1wLWZvY3VzLXJpbmctb2Zmc2V0KTtcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXAtZm9jdXMtcmluZy1zaGFkb3cpO1xuICAgICAgICB9XG5cbiAgICAgICAgJi5wLXN0YXRlLWRpc2FibGVkIHtcbiAgICAgICAgICAgIGN1cnNvcjogZGVmYXVsdDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5wLWRhdGVwaWNrZXItcHJldiB7XG4gICAgICAgIG9yZGVyOiAwO1xuICAgIH1cblxuICAgIC5wLWRhdGVwaWNrZXItbmV4dCB7XG4gICAgICAgIG9yZGVyOiAyO1xuICAgIH1cblxuICAgIC5wLWRhdGVwaWNrZXItbmV4dC1pY29uIHtcbiAgICAgICAgLS1faWNvbjogdmFyKC0tcC1kYXRlcGlja2VyLW5leHQtaWNvbik7XG4gICAgfVxuXG4gICAgLnAtZGF0ZXBpY2tlci1wcmV2LWljb24ge1xuICAgICAgICAtLV9pY29uOiB2YXIoLS1wLWRhdGVwaWNrZXItcHJldi1pY29uKTtcbiAgICB9XG5cbiAgICAucC1kYXRlcGlja2VyLXRpdGxlIHtcbiAgICAgICAgb3JkZXI6IDE7XG4gICAgICAgIGZsZXg6IDEgMSBhdXRvO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBnYXA6IHZhcigtLXAtZGF0ZXBpY2tlci10aXRsZS1nYXApO1xuICAgICAgICBsaW5lLWhlaWdodDogMTtcbiAgICAgICAgbWFyZ2luOiAwO1xuXG4gICAgICAgIC8qIG1vbnRoIC8geWVhcjogcGxhaW4gdGV4dCwgb3Igc2VsZWN0IC8gbnVtYmVyIGlucHV0IHdoZW4gdGhlIG5hdmlnYXRvciBpcyBvbiAqL1xuICAgICAgICAucC1kYXRlcGlja2VyLW1vbnRoLFxuICAgICAgICAucC1kYXRlcGlja2VyLXllYXIge1xuICAgICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICAgICAgZm9udC1mYW1pbHk6IGluaGVyaXQ7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgICAgIGJvcmRlcjogMCBub25lO1xuICAgICAgICAgICAgb3V0bGluZS1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIHZhcigtLXAtZGF0ZXBpY2tlci10cmFuc2l0aW9uLWR1cmF0aW9uKSwgY29sb3IgdmFyKC0tcC1kYXRlcGlja2VyLXRyYW5zaXRpb24tZHVyYXRpb24pLFxuICAgICAgICAgICAgICAgIG91dGxpbmUtY29sb3IgdmFyKC0tcC1kYXRlcGlja2VyLXRyYW5zaXRpb24tZHVyYXRpb24pLCBib3gtc2hhZG93IHZhcigtLXAtZGF0ZXBpY2tlci10cmFuc2l0aW9uLWR1cmF0aW9uKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5wLWRhdGVwaWNrZXItbW9udGgge1xuICAgICAgICAgICAgcGFkZGluZzogdmFyKC0tcC1kYXRlcGlja2VyLXNlbGVjdC1tb250aC1wYWRkaW5nKTtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1wLWRhdGVwaWNrZXItc2VsZWN0LW1vbnRoLWNvbG9yKTtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXAtZGF0ZXBpY2tlci1zZWxlY3QtbW9udGgtYm9yZGVyLXJhZGl1cyk7XG4gICAgICAgICAgICBmb250LXNpemU6IHZhcigtLXAtZGF0ZXBpY2tlci1zZWxlY3QtbW9udGgtZm9udC1zaXplKTtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1wLWRhdGVwaWNrZXItc2VsZWN0LW1vbnRoLWZvbnQtd2VpZ2h0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5wLWRhdGVwaWNrZXIteWVhciB7XG4gICAgICAgICAgICBwYWRkaW5nOiB2YXIoLS1wLWRhdGVwaWNrZXItc2VsZWN0LXllYXItcGFkZGluZyk7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tcC1kYXRlcGlja2VyLXNlbGVjdC15ZWFyLWNvbG9yKTtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXAtZGF0ZXBpY2tlci1zZWxlY3QteWVhci1ib3JkZXItcmFkaXVzKTtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tcC1kYXRlcGlja2VyLXNlbGVjdC15ZWFyLWZvbnQtc2l6ZSk7XG4gICAgICAgICAgICBmb250LXdlaWdodDogdmFyKC0tcC1kYXRlcGlja2VyLXNlbGVjdC15ZWFyLWZvbnQtd2VpZ2h0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHNlbGVjdCxcbiAgICAgICAgaW5wdXQge1xuICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICB9XG5cbiAgICAgICAgc2VsZWN0LnAtZGF0ZXBpY2tlci1tb250aDpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1wLWRhdGVwaWNrZXItc2VsZWN0LW1vbnRoLWhvdmVyLWJhY2tncm91bmQpO1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXAtZGF0ZXBpY2tlci1zZWxlY3QtbW9udGgtaG92ZXItY29sb3IpO1xuICAgICAgICB9XG5cbiAgICAgICAgc2VsZWN0LnAtZGF0ZXBpY2tlci15ZWFyOmhvdmVyLFxuICAgICAgICBpbnB1dC5wLWRhdGVwaWNrZXIteWVhcjpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1wLWRhdGVwaWNrZXItc2VsZWN0LXllYXItaG92ZXItYmFja2dyb3VuZCk7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tcC1kYXRlcGlja2VyLXNlbGVjdC15ZWFyLWhvdmVyLWNvbG9yKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHNlbGVjdDpmb2N1cy12aXNpYmxlLFxuICAgICAgICBpbnB1dDpmb2N1cy12aXNpYmxlIHtcbiAgICAgICAgICAgIG91dGxpbmU6IHZhcigtLXAtZGF0ZXBpY2tlci1kYXRlLWZvY3VzLXJpbmctd2lkdGgpIHZhcigtLXAtZGF0ZXBpY2tlci1kYXRlLWZvY3VzLXJpbmctc3R5bGUpIHZhcigtLXAtZGF0ZXBpY2tlci1kYXRlLWZvY3VzLXJpbmctY29sb3IpO1xuICAgICAgICAgICAgb3V0bGluZS1vZmZzZXQ6IHZhcigtLXAtZGF0ZXBpY2tlci1kYXRlLWZvY3VzLXJpbmctb2Zmc2V0KTtcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXAtZGF0ZXBpY2tlci1kYXRlLWZvY3VzLXJpbmctc2hhZG93KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHNlbGVjdCBvcHRpb24ge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tcC1kYXRlcGlja2VyLXBhbmVsLWJhY2tncm91bmQpO1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXAtZGF0ZXBpY2tlci1wYW5lbC1jb2xvcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzZWxlY3QucC1kYXRlcGlja2VyLW1vbnRoLFxuICAgIHNlbGVjdC5wLWRhdGVwaWNrZXIteWVhciB7XG4gICAgICAgIHdpZHRoOiBhdXRvO1xuICAgIH1cblxuICAgIC8qIHRoZSBkYXRlcyBhcmUgYSBiaXQgc21hbGxlciB0aGFuIHRoZSBwYW5lbCB0ZXh0ICovXG4gICAgdGFibGUge1xuICAgICAgICBmb250LXNpemU6IDAuOWVtO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcbiAgICB9XG5cbiAgICB0aCB7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgYm9yZGVyOiAwO1xuICAgIH1cblxuICAgIHRkIHtcbiAgICAgICAgYm9yZGVyOiAwO1xuICAgIH1cblxuICAgIHRkIHNwYW4sXG4gICAgdGQgYSB7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICB9XG5cbiAgICAvKiBkYXkgdmlldyAqL1xuICAgIC5wLWRhdGVwaWNrZXItY2FsZW5kYXIge1xuICAgICAgICBtYXJnaW46IHZhcigtLXAtZGF0ZXBpY2tlci1kYXktdmlldy1tYXJnaW4pO1xuXG4gICAgICAgIHRoIHtcbiAgICAgICAgICAgIHBhZGRpbmc6IHZhcigtLXAtZGF0ZXBpY2tlci13ZWVrLWRheS1wYWRkaW5nKTtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1wLWRhdGVwaWNrZXItd2Vlay1kYXktY29sb3IpO1xuICAgICAgICAgICAgZm9udC1zaXplOiB2YXIoLS1wLWRhdGVwaWNrZXItd2Vlay1kYXktZm9udC1zaXplKTtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1wLWRhdGVwaWNrZXItd2Vlay1kYXktZm9udC13ZWlnaHQpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGggPiBzcGFuIHtcbiAgICAgICAgICAgIHdpZHRoOiB2YXIoLS1wLWRhdGVwaWNrZXItZGF0ZS13aWR0aCk7XG4gICAgICAgICAgICBoZWlnaHQ6IHZhcigtLXAtZGF0ZXBpY2tlci1kYXRlLWhlaWdodCk7XG4gICAgICAgIH1cblxuICAgICAgICB0ZCB7XG4gICAgICAgICAgICBwYWRkaW5nOiB2YXIoLS1wLWRhdGVwaWNrZXItZGF0ZS1wYWRkaW5nKTtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRkID4gYSxcbiAgICAgICAgdGQgPiBzcGFuIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgICAgd2lkdGg6IHZhcigtLXAtZGF0ZXBpY2tlci1kYXRlLXdpZHRoKTtcbiAgICAgICAgICAgIGhlaWdodDogdmFyKC0tcC1kYXRlcGlja2VyLWRhdGUtaGVpZ2h0KTtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1wLWRhdGVwaWNrZXItZGF0ZS1jb2xvcik7XG4gICAgICAgICAgICBmb250LXNpemU6IHZhcigtLXAtZGF0ZXBpY2tlci1kYXRlLWZvbnQtc2l6ZSk7XG4gICAgICAgICAgICBmb250LXdlaWdodDogdmFyKC0tcC1kYXRlcGlja2VyLWRhdGUtZm9udC13ZWlnaHQpO1xuICAgICAgICAgICAgZm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtcztcbiAgICAgICAgICAgIGJvcmRlcjogMCBub25lO1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcC1kYXRlcGlja2VyLWRhdGUtYm9yZGVyLXJhZGl1cyk7XG4gICAgICAgICAgICBvdXRsaW5lLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgdmFyKC0tcC1kYXRlcGlja2VyLXRyYW5zaXRpb24tZHVyYXRpb24pLCBjb2xvciB2YXIoLS1wLWRhdGVwaWNrZXItdHJhbnNpdGlvbi1kdXJhdGlvbiksXG4gICAgICAgICAgICAgICAgYm9yZGVyLWNvbG9yIHZhcigtLXAtZGF0ZXBpY2tlci10cmFuc2l0aW9uLWR1cmF0aW9uKSwgYm94LXNoYWRvdyB2YXIoLS1wLWRhdGVwaWNrZXItdHJhbnNpdGlvbi1kdXJhdGlvbiksXG4gICAgICAgICAgICAgICAgb3V0bGluZS1jb2xvciB2YXIoLS1wLWRhdGVwaWNrZXItdHJhbnNpdGlvbi1kdXJhdGlvbik7XG4gICAgICAgIH1cblxuICAgICAgICB0ZC5wLWRhdGVwaWNrZXItb3RoZXItbW9udGggPiBhLFxuICAgICAgICB0ZC5wLWRhdGVwaWNrZXItb3RoZXItbW9udGggPiBzcGFuIHtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1wLWRhdGVwaWNrZXItb3RoZXItbW9udGgtY29sb3IpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGQgPiBhOm5vdCgucC1zdGF0ZS1kaXNhYmxlZCk6aG92ZXIsXG4gICAgICAgIHRkID4gYS5wLXN0YXRlLWhvdmVyIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXAtZGF0ZXBpY2tlci1kYXRlLWhvdmVyLWJhY2tncm91bmQpO1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXAtZGF0ZXBpY2tlci1kYXRlLWhvdmVyLWNvbG9yKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRkID4gYTpmb2N1cy12aXNpYmxlLFxuICAgICAgICB0ZCA+IHNwYW46Zm9jdXMtdmlzaWJsZSB7XG4gICAgICAgICAgICBvdXRsaW5lOiB2YXIoLS1wLWRhdGVwaWNrZXItZGF0ZS1mb2N1cy1yaW5nLXdpZHRoKSB2YXIoLS1wLWRhdGVwaWNrZXItZGF0ZS1mb2N1cy1yaW5nLXN0eWxlKSB2YXIoLS1wLWRhdGVwaWNrZXItZGF0ZS1mb2N1cy1yaW5nLWNvbG9yKTtcbiAgICAgICAgICAgIG91dGxpbmUtb2Zmc2V0OiB2YXIoLS1wLWRhdGVwaWNrZXItZGF0ZS1mb2N1cy1yaW5nLW9mZnNldCk7XG4gICAgICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1wLWRhdGVwaWNrZXItZGF0ZS1mb2N1cy1yaW5nLXNoYWRvdyk7XG4gICAgICAgIH1cblxuICAgICAgICB0ZCA+IC5wLXN0YXRlLWRpc2FibGVkIHtcbiAgICAgICAgICAgIGN1cnNvcjogZGVmYXVsdDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRkLnAtZGF0ZXBpY2tlci10b2RheSA+IGEsXG4gICAgICAgIHRkLnAtZGF0ZXBpY2tlci10b2RheSA+IHNwYW4ge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tcC1kYXRlcGlja2VyLXRvZGF5LWJhY2tncm91bmQpO1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXAtZGF0ZXBpY2tlci10b2RheS1jb2xvcik7XG4gICAgICAgICAgICBib3JkZXI6IDAgbm9uZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRkLnAtZGF0ZXBpY2tlci10b2RheSA+IGE6bm90KC5wLXN0YXRlLWRpc2FibGVkKTpob3ZlcixcbiAgICAgICAgdGQucC1kYXRlcGlja2VyLXRvZGF5ID4gYS5wLXN0YXRlLWhvdmVyIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXAtZGF0ZXBpY2tlci1kYXRlLWhvdmVyLWJhY2tncm91bmQpO1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXAtZGF0ZXBpY2tlci1kYXRlLWhvdmVyLWNvbG9yKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8qIHNlbGVjdGVkIHdpbnMgb3ZlciBob3ZlciBhbmQgdG9kYXkgKi9cbiAgICAgICAgdGQgPiBhLnAtc3RhdGUtYWN0aXZlLFxuICAgICAgICB0ZCA+IHNwYW4ucC1zdGF0ZS1hY3RpdmUsXG4gICAgICAgIHRkID4gYS5wLXN0YXRlLWFjdGl2ZTpob3ZlcixcbiAgICAgICAgdGQucC1kYXRlcGlja2VyLXRvZGF5ID4gYS5wLXN0YXRlLWFjdGl2ZSxcbiAgICAgICAgdGQucC1kYXRlcGlja2VyLXRvZGF5ID4gc3Bhbi5wLXN0YXRlLWFjdGl2ZSB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1wLWRhdGVwaWNrZXItZGF0ZS1zZWxlY3RlZC1iYWNrZ3JvdW5kKTtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1wLWRhdGVwaWNrZXItZGF0ZS1zZWxlY3RlZC1jb2xvcik7XG4gICAgICAgICAgICBib3JkZXI6IDAgbm9uZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8qIHdlZWsgbnVtYmVycyAoc2hvd1dlZWspOiBhIGRpc2FibGVkIHNwYW4gKi9cbiAgICAgICAgdGQucC1kYXRlcGlja2VyLXdlZWtudW1iZXIgPiBzcGFuIHtcbiAgICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tcC1kYXRlcGlja2VyLXdlZWstbnVtYmVyLWNvbG9yKTtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tcC1kYXRlcGlja2VyLXdlZWstbnVtYmVyLWZvbnQtc2l6ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiBwOmRhdGVQaWNrZXIgdGltZSBwaWNrZXIgKi9cbiAgICAucC10aW1lcGlja2VyIHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tcC1kYXRlcGlja2VyLXRpbWUtcGlja2VyLXBhZGRpbmcpO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgICBjb2xvcjogaW5oZXJpdDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICAgICAgYm9yZGVyOiAwIG5vbmU7XG4gICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1wLWRhdGVwaWNrZXItdGltZS1waWNrZXItYm9yZGVyLWNvbG9yKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMDtcbiAgICB9XG5cbiAgICAmLnAtZGF0ZXBpY2tlci10aW1lb25seSAucC10aW1lcGlja2VyIHtcbiAgICAgICAgYm9yZGVyLXRvcDogMCBub25lO1xuICAgIH1cblxuICAgIC8qIHA6ZGF0ZVBpY2tlciB0aW1lIHBpY2tlciB3aXRoIGlucHV0cyAodGltZUlucHV0KSAqL1xuICAgIC5wLXRpbWVwaWNrZXItdGltZWlucHV0IHtcbiAgICAgICAgaW5wdXQge1xuICAgICAgICAgICAgZm9udC1mYW1pbHk6IGluaGVyaXQ7XG4gICAgICAgICAgICBmb250LXNpemU6IHZhcigtLXAtaW5wdXR0ZXh0LWZvbnQtc2l6ZSk7XG4gICAgICAgICAgICBmb250LXdlaWdodDogdmFyKC0tcC1pbnB1dHRleHQtZm9udC13ZWlnaHQpO1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXAtaW5wdXR0ZXh0LWNvbG9yKTtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXAtaW5wdXR0ZXh0LWJhY2tncm91bmQpO1xuICAgICAgICAgICAgcGFkZGluZy1ibG9jazogdmFyKC0tcC1pbnB1dHRleHQtcGFkZGluZy15KTtcbiAgICAgICAgICAgIHBhZGRpbmctaW5saW5lOiB2YXIoLS1wLWlucHV0dGV4dC1wYWRkaW5nLXgpO1xuICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tcC1pbnB1dHRleHQtYm9yZGVyLWNvbG9yKTtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXAtaW5wdXR0ZXh0LWJvcmRlci1yYWRpdXMpO1xuICAgICAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tcC1pbnB1dHRleHQtc2hhZG93KTtcbiAgICAgICAgICAgIG91dGxpbmUtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgICAgICAgYXBwZWFyYW5jZTogbm9uZTtcbiAgICAgICAgICAgIGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7XG4gICAgICAgICAgICB3aWR0aDogdmFyKC0tcC1kYXRlcGlja2VyLXRpbWUtaW5wdXQtd2lkdGgpO1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCB2YXIoLS1wLWlucHV0dGV4dC10cmFuc2l0aW9uLWR1cmF0aW9uKSwgY29sb3IgdmFyKC0tcC1pbnB1dHRleHQtdHJhbnNpdGlvbi1kdXJhdGlvbiksXG4gICAgICAgICAgICAgICAgYm9yZGVyLWNvbG9yIHZhcigtLXAtaW5wdXR0ZXh0LXRyYW5zaXRpb24tZHVyYXRpb24pLCBvdXRsaW5lLWNvbG9yIHZhcigtLXAtaW5wdXR0ZXh0LXRyYW5zaXRpb24tZHVyYXRpb24pLFxuICAgICAgICAgICAgICAgIGJveC1zaGFkb3cgdmFyKC0tcC1pbnB1dHRleHQtdHJhbnNpdGlvbi1kdXJhdGlvbik7XG4gICAgICAgIH1cblxuICAgICAgICAucC1taWxsaXNlY29uZC1waWNrZXIgaW5wdXQge1xuICAgICAgICAgICAgd2lkdGg6IGNhbGModmFyKC0tcC1kYXRlcGlja2VyLXRpbWUtaW5wdXQtd2lkdGgpICogMS4yNSk7XG4gICAgICAgIH1cblxuICAgICAgICBpbnB1dDpob3ZlcixcbiAgICAgICAgaW5wdXQucC1zdGF0ZS1ob3ZlciB7XG4gICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXAtaW5wdXR0ZXh0LWhvdmVyLWJvcmRlci1jb2xvcik7XG4gICAgICAgIH1cblxuICAgICAgICBpbnB1dDpmb2N1cyB7XG4gICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXAtaW5wdXR0ZXh0LWZvY3VzLWJvcmRlci1jb2xvcik7XG4gICAgICAgICAgICBvdXRsaW5lOiB2YXIoLS1wLWlucHV0dGV4dC1mb2N1cy1yaW5nLXdpZHRoKSB2YXIoLS1wLWlucHV0dGV4dC1mb2N1cy1yaW5nLXN0eWxlKSB2YXIoLS1wLWlucHV0dGV4dC1mb2N1cy1yaW5nLWNvbG9yKTtcbiAgICAgICAgICAgIG91dGxpbmUtb2Zmc2V0OiB2YXIoLS1wLWlucHV0dGV4dC1mb2N1cy1yaW5nLW9mZnNldCk7XG4gICAgICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1wLWlucHV0dGV4dC1mb2N1cy1yaW5nLXNoYWRvdyk7XG4gICAgICAgIH1cblxuICAgICAgICAucC1kaXZpZGVyID4gc3BhbixcbiAgICAgICAgLnAtYW1wbS1waWNrZXIgPiBzcGFuIHtcbiAgICAgICAgICAgIHBhZGRpbmctYmxvY2s6IHZhcigtLXAtaW5wdXR0ZXh0LXBhZGRpbmcteSk7XG4gICAgICAgICAgICBwYWRkaW5nLWlubGluZTogY2FsYyh2YXIoLS1wLWlucHV0dGV4dC1wYWRkaW5nLXgpIC8gMik7XG4gICAgICAgICAgICBmb250LXNpemU6IHZhcigtLXAtaW5wdXR0ZXh0LWZvbnQtc2l6ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAucC10aW1lcGlja2VyID4gZGl2ID4gc3BhbixcbiAgICAucC10aW1lcGlja2VyIC5wLWRpdmlkZXIgPiBzcGFuIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXAtZGF0ZXBpY2tlci10aW1lLXBpY2tlci1jb2xvcik7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tcC1kYXRlcGlja2VyLXRpbWUtcGlja2VyLWZvbnQtc2l6ZSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1wLWRhdGVwaWNrZXItdGltZS1waWNrZXItZm9udC13ZWlnaHQpO1xuICAgICAgICBmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zO1xuICAgIH1cblxuICAgIC5wLXBpY2tlci11cCxcbiAgICAucC1waWNrZXItZG93biB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IHZhcigtLXAtYnV0dG9uLWljb24tb25seS13aWR0aCk7XG4gICAgICAgIGhlaWdodDogdmFyKC0tcC1idXR0b24taWNvbi1vbmx5LXdpZHRoKTtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgICAgIHVzZXItc2VsZWN0OiBub25lO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgICBjb2xvcjogdmFyKC0tcC1idXR0b24tdGV4dC1zZWNvbmRhcnktY29sb3IpO1xuICAgICAgICBib3JkZXI6IDAgbm9uZTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgICBvdXRsaW5lLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCB2YXIoLS1wLWRhdGVwaWNrZXItdHJhbnNpdGlvbi1kdXJhdGlvbiksIGNvbG9yIHZhcigtLXAtZGF0ZXBpY2tlci10cmFuc2l0aW9uLWR1cmF0aW9uKSxcbiAgICAgICAgICAgIG91dGxpbmUtY29sb3IgdmFyKC0tcC1kYXRlcGlja2VyLXRyYW5zaXRpb24tZHVyYXRpb24pLCBib3gtc2hhZG93IHZhcigtLXAtZGF0ZXBpY2tlci10cmFuc2l0aW9uLWR1cmF0aW9uKTtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXAtYnV0dG9uLXRleHQtc2Vjb25kYXJ5LWhvdmVyLWJhY2tncm91bmQpO1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXAtYnV0dG9uLXRleHQtc2Vjb25kYXJ5LWNvbG9yKTtcbiAgICAgICAgfVxuXG4gICAgICAgICY6YWN0aXZlIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXAtYnV0dG9uLXRleHQtc2Vjb25kYXJ5LWFjdGl2ZS1iYWNrZ3JvdW5kKTtcbiAgICAgICAgfVxuXG4gICAgICAgICY6Zm9jdXMtdmlzaWJsZSB7XG4gICAgICAgICAgICBvdXRsaW5lOiB2YXIoLS1wLWZvY3VzLXJpbmctd2lkdGgpIHZhcigtLXAtZm9jdXMtcmluZy1zdHlsZSkgdmFyKC0tcC1mb2N1cy1yaW5nLWNvbG9yKTtcbiAgICAgICAgICAgIG91dGxpbmUtb2Zmc2V0OiB2YXIoLS1wLWZvY3VzLXJpbmctb2Zmc2V0KTtcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXAtZm9jdXMtcmluZy1zaGFkb3cpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLnAtZGF0ZXBpY2tlci1pbmNyZW1lbnQtaWNvbiB7XG4gICAgICAgIC0tX2ljb246IHZhcigtLXAtZGF0ZXBpY2tlci1pbmNyZW1lbnQtaWNvbik7XG4gICAgfVxuXG4gICAgLnAtZGF0ZXBpY2tlci1kZWNyZW1lbnQtaWNvbiB7XG4gICAgICAgIC0tX2ljb246IHZhcigtLXAtZGF0ZXBpY2tlci1kZWNyZW1lbnQtaWNvbik7XG4gICAgfVxuXG4gICAgLyogYnV0dG9uIGJhcjogc2Vjb25kYXJ5IGJ1dHRvbnMgKi9cbiAgICAucC1kYXRlcGlja2VyLWJ1dHRvbmJhciB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tcC1kYXRlcGlja2VyLWJ1dHRvbmJhci1wYWRkaW5nKTtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIGNvbG9yOiBpbmhlcml0O1xuICAgICAgICBib3JkZXI6IDAgbm9uZTtcbiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLXAtZGF0ZXBpY2tlci1idXR0b25iYXItYm9yZGVyLWNvbG9yKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMDtcbiAgICB9XG5cbiAgICAucC1kYXRlcGlja2VyLWJ1dHRvbmJhciBidXR0b24ge1xuICAgICAgICAtLV9iZzogdmFyKC0tcC1idXR0b24tc2Vjb25kYXJ5LWJhY2tncm91bmQpO1xuICAgICAgICAtLV9ob3Zlci1iZzogdmFyKC0tcC1idXR0b24tc2Vjb25kYXJ5LWhvdmVyLWJhY2tncm91bmQpO1xuICAgICAgICAtLV9hY3RpdmUtYmc6IHZhcigtLXAtYnV0dG9uLXNlY29uZGFyeS1hY3RpdmUtYmFja2dyb3VuZCk7XG4gICAgICAgIC0tX2JvcmRlcjogdmFyKC0tcC1idXR0b24tc2Vjb25kYXJ5LWJvcmRlci1jb2xvcik7XG4gICAgICAgIC0tX2hvdmVyLWJvcmRlcjogdmFyKC0tcC1idXR0b24tc2Vjb25kYXJ5LWhvdmVyLWJvcmRlci1jb2xvcik7XG4gICAgICAgIC0tX2FjdGl2ZS1ib3JkZXI6IHZhcigtLXAtYnV0dG9uLXNlY29uZGFyeS1hY3RpdmUtYm9yZGVyLWNvbG9yKTtcbiAgICAgICAgLS1fY29sb3I6IHZhcigtLXAtYnV0dG9uLXNlY29uZGFyeS1jb2xvcik7XG4gICAgICAgIC0tX2hvdmVyLWNvbG9yOiB2YXIoLS1wLWJ1dHRvbi1zZWNvbmRhcnktaG92ZXItY29sb3IpO1xuICAgICAgICAtLV9hY3RpdmUtY29sb3I6IHZhcigtLXAtYnV0dG9uLXNlY29uZGFyeS1hY3RpdmUtY29sb3IpO1xuICAgICAgICAtLV9mb2N1cy1yaW5nLWNvbG9yOiB2YXIoLS1wLWJ1dHRvbi1zZWNvbmRhcnktZm9jdXMtcmluZy1jb2xvcik7XG4gICAgICAgIC0tX2ZvY3VzLXJpbmctc2hhZG93OiB2YXIoLS1wLWJ1dHRvbi1zZWNvbmRhcnktZm9jdXMtcmluZy1zaGFkb3cpO1xuXG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXAtYnV0dG9uLXNlY29uZGFyeS1iYWNrZ3JvdW5kKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXAtYnV0dG9uLXNlY29uZGFyeS1jb2xvcik7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXAtYnV0dG9uLXNlY29uZGFyeS1ib3JkZXItY29sb3IpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1wLWJ1dHRvbi1ib3JkZXItcmFkaXVzKTtcbiAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCB2YXIoLS1wLWJ1dHRvbi10cmFuc2l0aW9uLWR1cmF0aW9uKSwgY29sb3IgdmFyKC0tcC1idXR0b24tdHJhbnNpdGlvbi1kdXJhdGlvbiksXG4gICAgICAgICAgICBib3JkZXItY29sb3IgdmFyKC0tcC1idXR0b24tdHJhbnNpdGlvbi1kdXJhdGlvbiksIG91dGxpbmUtY29sb3IgdmFyKC0tcC1idXR0b24tdHJhbnNpdGlvbi1kdXJhdGlvbiksXG4gICAgICAgICAgICBib3gtc2hhZG93IHZhcigtLXAtYnV0dG9uLXRyYW5zaXRpb24tZHVyYXRpb24pO1xuICAgIH1cblxuICAgIC5wLWRhdGVwaWNrZXItYnV0dG9uYmFyIGJ1dHRvbiB7XG4gICAgICAgICYucC1zdGF0ZS1ob3ZlcixcbiAgICAgICAgJjpub3QoOmRpc2FibGVkKTpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1wLWJ1dHRvbi1zZWNvbmRhcnktaG92ZXItYmFja2dyb3VuZCk7XG4gICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXAtYnV0dG9uLXNlY29uZGFyeS1ob3Zlci1ib3JkZXItY29sb3IpO1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXAtYnV0dG9uLXNlY29uZGFyeS1ob3Zlci1jb2xvcik7XG4gICAgICAgIH1cblxuICAgICAgICAmLnAtc3RhdGUtZm9jdXMsXG4gICAgICAgICY6Zm9jdXMtdmlzaWJsZSB7XG4gICAgICAgICAgICBvdXRsaW5lOiB2YXIoLS1wLWJ1dHRvbi1mb2N1cy1yaW5nLXdpZHRoKSB2YXIoLS1wLWJ1dHRvbi1mb2N1cy1yaW5nLXN0eWxlKSB2YXIoLS1wLWJ1dHRvbi1zZWNvbmRhcnktZm9jdXMtcmluZy1jb2xvcik7XG4gICAgICAgICAgICBvdXRsaW5lLW9mZnNldDogdmFyKC0tcC1idXR0b24tZm9jdXMtcmluZy1vZmZzZXQpO1xuICAgICAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tcC1idXR0b24tc2Vjb25kYXJ5LWZvY3VzLXJpbmctc2hhZG93KTtcbiAgICAgICAgfVxuXG4gICAgICAgICYucC1zdGF0ZS1hY3RpdmUsXG4gICAgICAgICY6bm90KDpkaXNhYmxlZCk6YWN0aXZlIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXAtYnV0dG9uLXNlY29uZGFyeS1hY3RpdmUtYmFja2dyb3VuZCk7XG4gICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXAtYnV0dG9uLXNlY29uZGFyeS1hY3RpdmUtYm9yZGVyLWNvbG9yKTtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1wLWJ1dHRvbi1zZWNvbmRhcnktYWN0aXZlLWNvbG9yKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5wLWRhdGVwaWNrZXItYnV0dG9uYmFyIC51aS1nLTY6Zmlyc3QtY2hpbGQge1xuICAgICAgICB0ZXh0LWFsaWduOiBzdGFydDtcbiAgICB9XG5cbiAgICAucC1kYXRlcGlja2VyLWJ1dHRvbmJhciAudWktZy02Omxhc3QtY2hpbGQge1xuICAgICAgICB0ZXh0LWFsaWduOiBlbmQ7XG4gICAgfVxuXG4gICAgLyogbW9udGggdmlldyAqL1xuICAgIC5wLW1vbnRocGlja2VyIHtcbiAgICAgICAgbWFyZ2luOiB2YXIoLS1wLWRhdGVwaWNrZXItbW9udGgtdmlldy1tYXJnaW4pO1xuICAgIH1cblxuICAgIC5wLW1vbnRocGlja2VyLW1vbnRoIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1wLWRhdGVwaWNrZXItbW9udGgtcGFkZGluZyk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1wLWRhdGVwaWNrZXItZGF0ZS1jb2xvcik7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tcC1kYXRlcGlja2VyLWRhdGUtZm9udC1zaXplKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXAtZGF0ZXBpY2tlci1kYXRlLWZvbnQtd2VpZ2h0KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcC1kYXRlcGlja2VyLW1vbnRoLWJvcmRlci1yYWRpdXMpO1xuICAgICAgICBvdXRsaW5lLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCB2YXIoLS1wLWRhdGVwaWNrZXItdHJhbnNpdGlvbi1kdXJhdGlvbiksIGNvbG9yIHZhcigtLXAtZGF0ZXBpY2tlci10cmFuc2l0aW9uLWR1cmF0aW9uKSxcbiAgICAgICAgICAgIGJvcmRlci1jb2xvciB2YXIoLS1wLWRhdGVwaWNrZXItdHJhbnNpdGlvbi1kdXJhdGlvbiksIGJveC1zaGFkb3cgdmFyKC0tcC1kYXRlcGlja2VyLXRyYW5zaXRpb24tZHVyYXRpb24pLFxuICAgICAgICAgICAgb3V0bGluZS1jb2xvciB2YXIoLS1wLWRhdGVwaWNrZXItdHJhbnNpdGlvbi1kdXJhdGlvbik7XG5cbiAgICAgICAgJjpub3QoLnAtc3RhdGUtZGlzYWJsZWQsIC5wLXN0YXRlLWFjdGl2ZSk6aG92ZXIsXG4gICAgICAgICYucC1zdGF0ZS1ob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1wLWRhdGVwaWNrZXItZGF0ZS1ob3Zlci1iYWNrZ3JvdW5kKTtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1wLWRhdGVwaWNrZXItZGF0ZS1ob3Zlci1jb2xvcik7XG4gICAgICAgIH1cblxuICAgICAgICAmOmZvY3VzLXZpc2libGUge1xuICAgICAgICAgICAgb3V0bGluZTogdmFyKC0tcC1kYXRlcGlja2VyLWRhdGUtZm9jdXMtcmluZy13aWR0aCkgdmFyKC0tcC1kYXRlcGlja2VyLWRhdGUtZm9jdXMtcmluZy1zdHlsZSkgdmFyKC0tcC1kYXRlcGlja2VyLWRhdGUtZm9jdXMtcmluZy1jb2xvcik7XG4gICAgICAgICAgICBvdXRsaW5lLW9mZnNldDogdmFyKC0tcC1kYXRlcGlja2VyLWRhdGUtZm9jdXMtcmluZy1vZmZzZXQpO1xuICAgICAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tcC1kYXRlcGlja2VyLWRhdGUtZm9jdXMtcmluZy1zaGFkb3cpO1xuICAgICAgICB9XG5cbiAgICAgICAgJi5wLXN0YXRlLWFjdGl2ZSB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1wLWRhdGVwaWNrZXItZGF0ZS1zZWxlY3RlZC1iYWNrZ3JvdW5kKTtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1wLWRhdGVwaWNrZXItZGF0ZS1zZWxlY3RlZC1jb2xvcik7XG4gICAgICAgICAgICBib3JkZXI6IDAgbm9uZTtcbiAgICAgICAgfVxuXG4gICAgICAgICYucC1zdGF0ZS1kaXNhYmxlZCB7XG4gICAgICAgICAgICBjdXJzb3I6IGRlZmF1bHQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiBtdWx0aXBsZSBtb250aHM6IHNlcGFyYXRlZCBieSBhIHZlcnRpY2FsIGxpbmUgbGlrZSBQcmltZVVJWCAqL1xuICAgIC5wLWRhdGVwaWNrZXItZ3JvdXAge1xuICAgICAgICBwYWRkaW5nLWJsb2NrOiAwO1xuICAgICAgICBwYWRkaW5nLWlubGluZTogdmFyKC0tcC1kYXRlcGlja2VyLWdyb3VwLWdhcCk7XG4gICAgICAgIGJvcmRlci1pbmxpbmUtc3RhcnQ6IDFweCBzb2xpZCB2YXIoLS1wLWRhdGVwaWNrZXItZ3JvdXAtYm9yZGVyLWNvbG9yKTtcblxuICAgICAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgICAgIHBhZGRpbmctaW5saW5lLXN0YXJ0OiAwO1xuICAgICAgICAgICAgYm9yZGVyLWlubGluZS1zdGFydDogMCBub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgICAgIHBhZGRpbmctaW5saW5lLWVuZDogMDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qIHRvdWNoIFVJICovXG4gICAgJi5wLWRhdGVwaWNrZXItdG91Y2gtdWkgLnAtZGF0ZXBpY2tlci1jYWxlbmRhciB7XG4gICAgICAgIHRoIHtcbiAgICAgICAgICAgIHBhZGRpbmc6IHZhcigtLXAtZGF0ZXBpY2tlci10b3VjaC11aS1kYXRlLXBhZGRpbmcpIDA7XG4gICAgICAgIH1cblxuICAgICAgICAvKiBsYXJnZXIgdG91Y2ggdGFyZ2V0cyB0aGF0IGtlZXAgdGhlIHNoYXBlIG9mIHRoZSBkYXRlIChhIGNpcmNsZSBzdGF5cyBhIGNpcmNsZSk6IHRoZSBwYWRkaW5nIG9uIGVhY2ggc2lkZSxcbiAgICAgICAgICAgYXQgbW9zdCB0aGUgd2lkdGggb2YgdGhlIGNvbHVtbiAqL1xuICAgICAgICB0ZCA+IGEsXG4gICAgICAgIHRkID4gc3BhbiB7XG4gICAgICAgICAgICB3aWR0aDogbWluKDEwMCUsIGNhbGModmFyKC0tcC1kYXRlcGlja2VyLWRhdGUtd2lkdGgpICsgMiAqIHZhcigtLXAtZGF0ZXBpY2tlci10b3VjaC11aS1kYXRlLXBhZGRpbmcpKSk7XG4gICAgICAgICAgICBoZWlnaHQ6IGF1dG87XG4gICAgICAgICAgICBhc3BlY3QtcmF0aW86IDE7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8qIHJ0bDogdGhlIGFycm93cyBwb2ludCB0aGUgb3RoZXIgd2F5ICovXG4ucC1kYXRlcGlja2VyLXBhbmVsOmRpcihydGwpIC5wLWRhdGVwaWNrZXItbmV4dC1pY29uIHtcbiAgICBzY2FsZTogLTEgMTtcbn1cblxuLnAtZGF0ZXBpY2tlci1wYW5lbDpkaXIocnRsKSAucC1kYXRlcGlja2VyLXByZXYtaWNvbiB7XG4gICAgc2NhbGU6IC0xIDE7XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA0ODBweCkge1xuICAgIC5wLWRhdGVwaWNrZXItcGFuZWwgLnAtZGF0ZXBpY2tlci1jYWxlbmRhciB0ZCA+IGEsXG4gICAgLnAtZGF0ZXBpY2tlci1wYW5lbCAucC1kYXRlcGlja2VyLWNhbGVuZGFyIHRkID4gc3BhbiB7XG4gICAgICAgIHdpZHRoOiBjYWxjKHZhcigtLXAtZGF0ZXBpY2tlci1kYXRlLXdpZHRoKSAqIDAuNik7XG4gICAgICAgIGhlaWdodDogY2FsYyh2YXIoLS1wLWRhdGVwaWNrZXItZGF0ZS1oZWlnaHQpICogMC42KTtcbiAgICB9XG59XG5cbi8qIHRyaWdnZXIgYnV0dG9uIChzaG93SWNvbikgKi9cbi5wLWNhbGVuZGFyIC5wLWJ1dHRvbi5wLWJ1dHRvbi1pY29uLW9ubHkge1xuICAgIC0tX2JnOiB2YXIoLS1wLWRhdGVwaWNrZXItZHJvcGRvd24tYmFja2dyb3VuZCk7XG4gICAgLS1faG92ZXItYmc6IHZhcigtLXAtZGF0ZXBpY2tlci1kcm9wZG93bi1ob3Zlci1iYWNrZ3JvdW5kKTtcbiAgICAtLV9hY3RpdmUtYmc6IHZhcigtLXAtZGF0ZXBpY2tlci1kcm9wZG93bi1hY3RpdmUtYmFja2dyb3VuZCk7XG4gICAgLS1fYm9yZGVyOiB2YXIoLS1wLWRhdGVwaWNrZXItZHJvcGRvd24tYm9yZGVyLWNvbG9yKTtcbiAgICAtLV9ob3Zlci1ib3JkZXI6IHZhcigtLXAtZGF0ZXBpY2tlci1kcm9wZG93bi1ob3Zlci1ib3JkZXItY29sb3IpO1xuICAgIC0tX2FjdGl2ZS1ib3JkZXI6IHZhcigtLXAtZGF0ZXBpY2tlci1kcm9wZG93bi1hY3RpdmUtYm9yZGVyLWNvbG9yKTtcbiAgICAtLV9jb2xvcjogdmFyKC0tcC1kYXRlcGlja2VyLWRyb3Bkb3duLWNvbG9yKTtcbiAgICAtLV9ob3Zlci1jb2xvcjogdmFyKC0tcC1kYXRlcGlja2VyLWRyb3Bkb3duLWhvdmVyLWNvbG9yKTtcbiAgICAtLV9hY3RpdmUtY29sb3I6IHZhcigtLXAtZGF0ZXBpY2tlci1kcm9wZG93bi1hY3RpdmUtY29sb3IpO1xuICAgIC0tX2ZvY3VzLXJpbmctY29sb3I6IHZhcigtLXAtZGF0ZXBpY2tlci1kcm9wZG93bi1mb2N1cy1yaW5nLWNvbG9yKTtcbiAgICAtLV9mb2N1cy1yaW5nLXNoYWRvdzogdmFyKC0tcC1kYXRlcGlja2VyLWRyb3Bkb3duLWZvY3VzLXJpbmctc2hhZG93KTtcblxuICAgIHdpZHRoOiB2YXIoLS1wLWRhdGVwaWNrZXItZHJvcGRvd24td2lkdGgpO1xuICAgIC8qIHRoZSBjb250YWluZXIgaXMgYSBmbGV4IHJvdzogdGhlIHRyaWdnZXIgc3RyZXRjaGVzIHRvIHRoZSBpbnB1dCBoZWlnaHQgKGFsc28gZm9yIHAtaW5wdXR0ZXh0LXNtIC8gLWxnKSAqL1xuICAgIHBhZGRpbmctYmxvY2s6IDA7XG4gICAgYm9yZGVyLWlubGluZS1zdGFydC13aWR0aDogMDtcbiAgICBib3JkZXItcmFkaXVzOiAwO1xuICAgIGJvcmRlci1zdGFydC1lbmQtcmFkaXVzOiB2YXIoLS1wLWRhdGVwaWNrZXItZHJvcGRvd24tYm9yZGVyLXJhZGl1cyk7XG4gICAgYm9yZGVyLWVuZC1lbmQtcmFkaXVzOiB2YXIoLS1wLWRhdGVwaWNrZXItZHJvcGRvd24tYm9yZGVyLXJhZGl1cyk7XG5cbiAgICAmOmZvY3VzLXZpc2libGUge1xuICAgICAgICBvdXRsaW5lOiB2YXIoLS1wLWRhdGVwaWNrZXItZHJvcGRvd24tZm9jdXMtcmluZy13aWR0aCkgdmFyKC0tcC1kYXRlcGlja2VyLWRyb3Bkb3duLWZvY3VzLXJpbmctc3R5bGUpIHZhcigtLV9mb2N1cy1yaW5nLWNvbG9yKTtcbiAgICAgICAgb3V0bGluZS1vZmZzZXQ6IHZhcigtLXAtZGF0ZXBpY2tlci1kcm9wZG93bi1mb2N1cy1yaW5nLW9mZnNldCk7XG4gICAgfVxuXG4gICAgLnAtZGF0ZXBpY2tlci1kcm9wZG93bi1pY29uIHtcbiAgICAgICAgLS1faWNvbjogdmFyKC0tcC1kYXRlcGlja2VyLWRyb3Bkb3duLWljb24pO1xuICAgIH1cbn1cblxuLyogd2l0aCBhIHRyaWdnZXI6IHRoZSBjb250YWluZXIgaXMgYSBmbGV4IHJvdyAoLnAtZGF0ZXBpY2tlciksIHNvIHRoZSB0cmlnZ2VyIGFsd2F5cyBoYXMgdGhlIGlucHV0IGhlaWdodCAqL1xuLnAtY2FsZW5kYXIucC10cmlnZ2VyLWNhbGVuZGFyID4gLnAtaW5wdXRmaWVsZCB7XG4gICAgYm9yZGVyLXN0YXJ0LWVuZC1yYWRpdXM6IDA7XG4gICAgYm9yZGVyLWVuZC1lbmQtcmFkaXVzOiAwO1xufVxuXG4vKiBmbHVpZDogaW5wdXQgYW5kIHRyaWdnZXIgc2hhcmUgdGhlIHdpZHRoICovXG4ucC1mbHVpZCB7XG4gICAgLnAtY2FsZW5kYXIsXG4gICAgLnAtY2FsZW5kYXIgPiBpbnB1dCB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cblxuICAgIC5wLWNhbGVuZGFyIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIH1cblxuICAgIC5wLWRhdGVwaWNrZXIge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgIH1cblxuICAgIC5wLXRyaWdnZXItY2FsZW5kYXIgPiAucC1pbnB1dGZpZWxkIHtcbiAgICAgICAgZmxleDogMSAxIGF1dG87XG4gICAgICAgIHdpZHRoOiAxJTtcbiAgICB9XG59XG5cbi8qIHNpemVzOiB0aGUgaW5wdXQgY2FycmllcyBwLWlucHV0dGV4dC1zbSAvIC1sZyAoZm9ybXMvaW5wdXRmaWVsZC5jc3MpLCB0aGUgdHJpZ2dlciB3aWR0aCBmb2xsb3dzIGxpa2UgUHJpbWVVSVggKi9cbi5wLWNhbGVuZGFyLnAtdHJpZ2dlci1jYWxlbmRhcjpoYXMoPiAucC1pbnB1dHRleHQtc20pID4gLnAtZGF0ZXBpY2tlci10cmlnZ2VyLnAtYnV0dG9uIHtcbiAgICB3aWR0aDogdmFyKC0tcC1kYXRlcGlja2VyLWRyb3Bkb3duLXNtLXdpZHRoKTtcbn1cblxuLnAtY2FsZW5kYXIucC10cmlnZ2VyLWNhbGVuZGFyOmhhcyg+IC5wLWlucHV0dGV4dC1sZykgPiAucC1kYXRlcGlja2VyLXRyaWdnZXIucC1idXR0b24ge1xuICAgIHdpZHRoOiB2YXIoLS1wLWRhdGVwaWNrZXItZHJvcGRvd24tbGctd2lkdGgpO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7O0FBQUE7QUFjQSxHQUFDO0FBQ0csY0FBVTtBQUNWLGFBQVM7QUFDVCxXQUFPO0FBQ1g7QUFFQSxHQUFDO0FBQ0csS0FBQyxvQkFBb0IsQ0FBQztBQUFBLElBQ3RCLENBREMsb0JBQ29CLENBQUM7QUFBQSxJQUN0QixNQUFNLEdBQUcsRUFBRTtBQUFBLElBQ1gsQ0FBQyxhQUFhLEVBQUUsSUFBSTtBQUNoQixjQUFRO0FBQ1o7QUFFQSxLQUFDO0FBQ0csU0FBRztBQUFBLE1BQ0gsR0FBRztBQUNDLG9CQUFZO0FBQ2hCO0FBR0EsUUFBRSxDQUFDLGdDQUFnQyxFQUFFO0FBQ2pDLG9CQUFZO0FBQ2hCO0FBQ0o7QUFFQSxLQWhCQztBQWlCRyxlQUFTO0FBQ1QsdUJBQWlCO0FBQ2pCLG1CQUFhO0FBQ2IsV0FBSyxJQUFJO0FBQ1Qsa0JBQVk7QUFFWixRQUFFO0FBQ0UsaUJBQVM7QUFDVCx3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 */
