/*!**************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./assets/frontend/views/404.vue?vue&type=style&index=0&id=6a925fc8&scoped=true&lang=css& ***!
  \**************************************************************************************************************************************************************************************************************************************************************************************/
@import url(https://fonts.googleapis.com/css?family=Roboto:400,100,300,500);
/*!*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-13.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js??clonedRuleSet-13.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-13.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./assets/frontend/components/theme/clock.vue?vue&type=style&index=0&id=2fe6f024&scoped=true&lang=scss& ***!
  \*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
@import url(https://fonts.googleapis.com/css2?family=Roboto+Condensed:wght@700&family=Roboto:wght@400;500;700&display=swap);
/*!****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-13.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js??clonedRuleSet-13.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-13.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./assets/frontend/components/theme/hiba.vue?vue&type=style&index=0&id=283d3650&lang=scss&scoped=true& ***!
  \****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
@import url(https://fonts.googleapis.com/css2?family=Orbitron:wght@500;900&display=swap);
/*!*******************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./assets/frontend/components/AiChatAssistant.vue?vue&type=style&index=0&id=3cb16eb8&scoped=true&lang=css& ***!
  \*******************************************************************************************************************************************************************************************************************************************************************************************************/

.ai-chat-widget[data-v-3cb16eb8] {
  position: fixed;
  bottom: 20px;
  right: 20px;
  z-index: 9999;
  font-family: inherit;
  direction: rtl;
}
.ai-chat-btn[data-v-3cb16eb8] {
  background-color: #4f46e5;
  color: white;
  border: none;
  border-radius: 50%;
  width: 60px;
  height: 60px;
  font-size: 24px;
  cursor: pointer;
  box-shadow: 0 4px 6px rgba(0,0,0,0.1);
  transition: transform 0.2s;
  display: flex;
  align-items: center;
  justify-content: center;
}
.ai-chat-btn[data-v-3cb16eb8]:hover { transform: scale(1.05);
}
.ai-chat-window[data-v-3cb16eb8] {
  position: absolute;
  bottom: 80px;
  right: 0;
  width: 370px;
  max-height: 600px;
  background: white;
  border-radius: 12px;
  box-shadow: 0 10px 25px rgba(0,0,0,0.2);
  display: flex;
  flex-direction: column;
  overflow: hidden;
  border: 1px solid #e5e7eb;
}
.ai-chat-header[data-v-3cb16eb8] {
  background: #4f46e5;
  color: white;
  padding: 12px 15px;
  display: flex;
  justify-content: space-between;
  align-items: center;
}
.ai-chat-header h4[data-v-3cb16eb8] {
  margin: 0;
  font-size: 15px;
  display: flex;
  align-items: center;
  gap: 8px;
}
.provider-badge[data-v-3cb16eb8] {
  font-size: 11px;
  padding: 2px 7px;
  border-radius: 10px;
  font-weight: normal;
  background: rgba(255,255,255,0.2);
}
.provider-btn[data-v-3cb16eb8] {
  background: rgba(255,255,255,0.15);
  border: 1px solid rgba(255,255,255,0.3);
  color: white;
  border-radius: 6px;
  width: 28px;
  height: 28px;
  cursor: pointer;
  font-size: 14px;
  transition: background 0.2s;
}
.provider-btn.active[data-v-3cb16eb8] { background: rgba(255,255,255,0.4);
}
.provider-btn[data-v-3cb16eb8]:hover { background: rgba(255,255,255,0.3);
}
.close-btn[data-v-3cb16eb8] {
  background: none;
  border: none;
  color: white;
  font-size: 24px;
  line-height: 1;
  cursor: pointer;
}

/* Settings Panel */
.ai-settings-panel[data-v-3cb16eb8] {
  background: #f8fafc;
  border-bottom: 1px solid #e5e7eb;
  padding: 12px 15px;
}
.ai-settings-panel h5[data-v-3cb16eb8] {
  margin: 0 0 10px;
  font-size: 13px;
  color: #374151;
}
.settings-group[data-v-3cb16eb8] {
  margin-bottom: 10px;
}
.settings-group label[data-v-3cb16eb8] {
  display: block;
  font-size: 12px;
  color: #6b7280;
  margin-bottom: 4px;
}
.settings-input[data-v-3cb16eb8] {
  width: 100%;
  padding: 6px 10px;
  border: 1px solid #d1d5db;
  border-radius: 6px;
  font-size: 13px;
  box-sizing: border-box;
}
.settings-input[data-v-3cb16eb8]:focus { border-color: #4f46e5; outline: none;
}
.key-saved[data-v-3cb16eb8] { font-size: 11px; color: #059669;
}
.settings-actions[data-v-3cb16eb8] { display: flex; align-items: center; gap: 10px;
}
.save-btn[data-v-3cb16eb8] {
  background: #4f46e5;
  color: white;
  border: none;
  padding: 6px 16px;
  border-radius: 6px;
  cursor: pointer;
  font-size: 13px;
}
.save-btn[data-v-3cb16eb8]:disabled { background: #9ca3af; cursor: not-allowed;
}
.save-ok[data-v-3cb16eb8]  { font-size: 12px; color: #059669;
}
.save-error[data-v-3cb16eb8] { font-size: 12px; color: #dc2626;
}
.ai-chat-body[data-v-3cb16eb8] {
  height: 300px;
  overflow-y: auto;
  padding: 15px;
  background: #f9fafb;
}
.chat-message[data-v-3cb16eb8] { margin-bottom: 12px; display: flex;
}
.user-msg[data-v-3cb16eb8] { justify-content: flex-end;
}
.user-msg .msg-content[data-v-3cb16eb8] { background: #4f46e5; color: white; border-radius: 12px 12px 0 12px;
}
.ai-msg[data-v-3cb16eb8] { justify-content: flex-start;
}
.ai-msg .msg-content[data-v-3cb16eb8] { background: white; color: #1f2937; border: 1px solid #e5e7eb; border-radius: 12px 12px 12px 0;
}
.msg-content[data-v-3cb16eb8] {
  padding: 10px 14px;
  max-width: 80%;
  word-wrap: break-word;
  font-size: 14px;
  line-height: 1.5;
  white-space: pre-wrap;
}
.loading .msg-content[data-v-3cb16eb8] { color: #6b7280; font-style: italic; background: #f3f4f6; border: none;
}
.ai-chat-footer[data-v-3cb16eb8] {
  padding: 10px 15px;
  background: white;
  border-top: 1px solid #e5e7eb;
  display: flex;
  gap: 10px;
}
.ai-chat-footer input[data-v-3cb16eb8] {
  flex: 1;
  padding: 8px 12px;
  border: 1px solid #d1d5db;
  border-radius: 6px;
  outline: none;
}
.ai-chat-footer input[data-v-3cb16eb8]:focus { border-color: #4f46e5;
}
.ai-chat-footer button[data-v-3cb16eb8] {
  background: #4f46e5;
  color: white;
  border: none;
  padding: 8px 15px;
  border-radius: 6px;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
}
.ai-chat-footer button[data-v-3cb16eb8]:disabled { background: #9ca3af; cursor: not-allowed;
}

/*!***********************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./assets/frontend/views/Rapprochement/Comptabilite/components/EntityList.vue?vue&type=style&index=0&id=56cef579&scoped=true&lang=css& ***!
  \***********************************************************************************************************************************************************************************************************************************************************************************************************************************/

.v-card[data-v-56cef579] {
  transition: all 0.3s;
}
.v-card[data-v-56cef579]:hover {
  box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
}

/*!***********************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./assets/frontend/views/Rapprochement/Comptabilite/AccountingLinkManager.vue?vue&type=style&index=0&id=7cd3d3fd&scoped=true&lang=css& ***!
  \***********************************************************************************************************************************************************************************************************************************************************************************************************************************/

.v-tab[data-v-7cd3d3fd] {
  text-transform: none !important;
}

/*!*********************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./assets/frontend/views/Rapprochement/Comptabilite/Journal.vue?vue&type=style&index=0&id=f9fc0314&scoped=true&lang=css& ***!
  \*********************************************************************************************************************************************************************************************************************************************************************************************************************/

.v-data-table[data-v-f9fc0314] th {
  font-weight: bold !important;
  font-size: 14px !important;
}

/*!************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./assets/frontend/views/Rapprochement/Comptabilite/GrandLivre.vue?vue&type=style&index=0&id=ab471c1e&scoped=true&lang=css& ***!
  \************************************************************************************************************************************************************************************************************************************************************************************************************************/

.v-data-table[data-v-ab471c1e] th {
  font-weight: bold !important;
  font-size: 14px !important;
}

/*!*********************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./assets/frontend/views/Rapprochement/Comptabilite/Balance.vue?vue&type=style&index=0&id=6683639b&scoped=true&lang=css& ***!
  \*********************************************************************************************************************************************************************************************************************************************************************************************************************/

.v-data-table[data-v-6683639b] th {
  font-weight: bold !important;
  font-size: 14px !important;
}

/*!*******************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./assets/frontend/views/Rapprochement/Comptabilite/Bilan.vue?vue&type=style&index=0&id=6fccb371&scoped=true&lang=css& ***!
  \*******************************************************************************************************************************************************************************************************************************************************************************************************************/

.hoverable[data-v-6fccb371]:hover {
  background-color: #f5f5f5;
}
.v-data-table[data-v-6fccb371] tbody tr:hover {
  background-color: transparent !important;
}

/*!*****************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./assets/frontend/views/Rapprochement/Comptabilite/TVA.vue?vue&type=style&index=0&id=a7dcf644&scoped=true&lang=css& ***!
  \*****************************************************************************************************************************************************************************************************************************************************************************************************************/

.transition-swing[data-v-a7dcf644] {
  transition: all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1);
}
.transition-swing[data-v-a7dcf644]:hover {
  transform: translateY(-5px);
}
.rounded-xl[data-v-a7dcf644] {
  border-radius: 16px !important;
}
.rounded-lg[data-v-a7dcf644] {
  border-radius: 12px !important;
}
.white-input .v-input__slot[data-v-a7dcf644] {
  background-color: white !important;
}
.v-btn-toggle--group>.v-btn.v-btn[data-v-a7dcf644] {
  border-color: rgba(0, 0, 0, 0.12);
}
.v-tab[data-v-a7dcf644] {
  text-transform: none !important;
}

/*!**************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./assets/frontend/views/Transactionsbon/relevebancairesbon/show.vue?vue&type=style&index=0&id=27ee7841&scoped=true&lang=css& ***!
  \**************************************************************************************************************************************************************************************************************************************************************************************************************************/

/* Modern container styling */
.v-container[data-v-27ee7841] {
  background: transparent;
}

/* Wrapper animations and spacing */
.alerts-wrapper[data-v-27ee7841],
.widget-wrapper[data-v-27ee7841],
.table-wrapper[data-v-27ee7841],
.calendar-wrapper[data-v-27ee7841] {
  transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}

/* Enhanced hover effects for interactive areas */
.alerts-wrapper[data-v-27ee7841]:hover,
.widget-wrapper[data-v-27ee7841]:hover,
.table-wrapper[data-v-27ee7841]:hover {
  transform: translateY(-2px);
}

/* Tab styling improvements */
.v-tabs[data-v-27ee7841] {
  background-color: var(--v-surface-base) !important;
  margin-bottom: 1.5rem;
}

/* Smooth transitions */
.v-fade-transition-enter-active[data-v-27ee7841],
.v-fade-transition-leave-active[data-v-27ee7841] {
  transition: opacity 0.3s ease;
}
.v-fade-transition-enter[data-v-27ee7841],
.v-fade-transition-leave-to[data-v-27ee7841] {
  opacity: 0;
}

/* Responsive spacing adjustments */
@media (max-width: 959px) {
.widget-wrapper[data-v-27ee7841] {
    margin-top: 1rem;
}
}

/* Modern shadow effects */
.table-wrapper[data-v-27ee7841] .card-box {
  box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1),
    0 2px 4px -1px rgba(0, 0, 0, 0.06);
  border-radius: 8px;
  transition: box-shadow 0.3s ease;
}
.table-wrapper[data-v-27ee7841] .card-box:hover {
  box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1),
    0 4px 6px -2px rgba(0, 0, 0, 0.05);
}

/* Calendar wrapper specific styling */
.calendar-wrapper[data-v-27ee7841] {
  min-height: 400px;
  padding: 8px 0;
}

/* Dark mode support */
.theme--dark .alerts-wrapper[data-v-27ee7841],
.theme--dark .widget-wrapper[data-v-27ee7841],
.theme--dark .table-wrapper[data-v-27ee7841] {
  filter: brightness(1.05);
}

/*!*********************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./assets/frontend/views/Rapprochement/relevebancaires/show.vue?vue&type=style&index=0&id=307dcbe0&scoped=true&lang=css& ***!
  \*********************************************************************************************************************************************************************************************************************************************************************************************************************/

/* Modern container styling */
.v-container[data-v-307dcbe0] {
  background: transparent;
}

/* Wrapper animations and spacing */
.chart-wrapper[data-v-307dcbe0],
.balances-wrapper[data-v-307dcbe0],
.table-wrapper[data-v-307dcbe0],
.calendar-wrapper[data-v-307dcbe0] {
  transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}

/* Enhanced hover effects for interactive areas */
.chart-wrapper[data-v-307dcbe0]:hover,
.balances-wrapper[data-v-307dcbe0]:hover,
.table-wrapper[data-v-307dcbe0]:hover {
  transform: translateY(-2px);
}

/* Ensure equal height for side-by-side components */
@media (min-width: 960px) {
.chart-wrapper[data-v-307dcbe0],
  .balances-wrapper[data-v-307dcbe0] {
    height: 100%;
    display: flex;
    flex-direction: column;
}
.chart-wrapper>*[data-v-307dcbe0],
  .balances-wrapper>*[data-v-307dcbe0] {
    flex: 1;
}
}

/* Tab styling improvements */
.v-tabs[data-v-307dcbe0] {
  background-color: var(--v-surface-base) !important;
  margin-bottom: 1.5rem;
}

/* Smooth transitions */
.v-fade-transition-enter-active[data-v-307dcbe0],
.v-fade-transition-leave-active[data-v-307dcbe0] {
  transition: opacity 0.3s ease;
}
.v-fade-transition-enter[data-v-307dcbe0],
.v-fade-transition-leave-to[data-v-307dcbe0] {
  opacity: 0;
}

/* Responsive spacing adjustments */
@media (max-width: 959px) {
.balances-wrapper[data-v-307dcbe0] {
    margin-top: 1rem;
}
}

/* Modern shadow effects */
.table-wrapper[data-v-307dcbe0] .card-box {
  box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1),
    0 2px 4px -1px rgba(0, 0, 0, 0.06);
  border-radius: 8px;
  transition: box-shadow 0.3s ease;
}
.table-wrapper[data-v-307dcbe0] .card-box:hover {
  box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1),
    0 4px 6px -2px rgba(0, 0, 0, 0.05);
}

/* Dark mode support */
.theme--dark .chart-wrapper[data-v-307dcbe0],
.theme--dark .balances-wrapper[data-v-307dcbe0],
.theme--dark .table-wrapper[data-v-307dcbe0] {
  filter: brightness(1.05);
}

/*!*********************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./assets/frontend/views/Rapprochement/tva/show.vue?vue&type=style&index=0&id=209d678a&scoped=true&lang=css& ***!
  \*********************************************************************************************************************************************************************************************************************************************************************************************************/

.border-warning[data-v-209d678a] {
  border: 1px solid #fb8c00;
}
.bg-gray-50[data-v-209d678a] {
  background-color: #f9fafb;
}

/*!**************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./assets/frontend/views/BackupDB/backup.vue?vue&type=style&index=0&id=1b7feee1&scoped=true&lang=css& ***!
  \**************************************************************************************************************************************************************************************************************************************************************************************************/

.log-content[data-v-1b7feee1] {
  background-color: #f5f5f5;
  padding: 16px;
  border-radius: 4px;
  font-family: 'Courier New', 'Consolas', monospace;
  font-size: 13px;
  line-height: 1.6;
  white-space: pre-wrap;
  word-wrap: break-word;
  direction: ltr;
  text-align: left;
}

/* Dark mode support */
.theme--dark .log-content[data-v-1b7feee1] {
  background-color: #1e1e1e;
  color: #e0e0e0;
}
.error-indicator[data-v-1b7feee1] {
  color: #ff5252;
  font-size: 20px;
  margin-left: 8px;
  vertical-align: middle;
}

/*!******************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./assets/frontend/views/404.vue?vue&type=style&index=0&id=6a925fc8&scoped=true&lang=css& (1) ***!
  \******************************************************************************************************************************************************************************************************************************************************************************************/

.errornot[data-v-6a925fc8] { 
  height: 100%;
  background-color: #007aff; 
  color: #fff;
  font-size: 100%;
  line-height: 1.5;
  font-family: "Roboto", sans-serif;
  margin: 0,0;
  padding: 0,0;
}
.button[data-v-6a925fc8] {
  font-weight: 300;
  color: #fff;
  font-size: 1.2em;
  text-decoration: none;
  border: 1px solid #efefef;
  padding: .5em;
  border-radius: 3px;
  float: left;
  margin: 6em 0 0 -155px;
  left: 50%;
  position: relative;
  transition: all .3s linear;
}
.button[data-v-6a925fc8]:hover {
  background-color: #007aff;
  color: #fff;
}
p[data-v-6a925fc8] {
  font-size: 2em;
  text-align: center;
  font-weight: 100;
}
h1[data-v-6a925fc8] {
  text-align: center;
  font-size: 15em;
  font-weight: 100;
  text-shadow: #0062cc 1px 1px, #0062cc 2px 2px, #0062cc 3px 3px, #0062cd 4px 4px, #0062cd 5px 5px, #0062cd 6px 6px, #0062cd 7px 7px, #0062ce 8px 8px, #0063ce 9px 9px, #0063ce 10px 10px, #0063ce 11px 11px, #0063cf 12px 12px, #0063cf 13px 13px, #0063cf 14px 14px, #0063cf 15px 15px, #0063d0 16px 16px, #0064d0 17px 17px, #0064d0 18px 18px, #0064d0 19px 19px, #0064d1 20px 20px, #0064d1 21px 21px, #0064d1 22px 22px, #0064d1 23px 23px, #0064d2 24px 24px, #0065d2 25px 25px, #0065d2 26px 26px, #0065d2 27px 27px, #0065d3 28px 28px, #0065d3 29px 29px, #0065d3 30px 30px, #0065d3 31px 31px, #0065d4 32px 32px, #0065d4 33px 33px, #0066d4 34px 34px, #0066d4 35px 35px, #0066d5 36px 36px, #0066d5 37px 37px, #0066d5 38px 38px, #0066d5 39px 39px, #0066d6 40px 40px, #0066d6 41px 41px, #0067d6 42px 42px, #0067d6 43px 43px, #0067d7 44px 44px, #0067d7 45px 45px, #0067d7 46px 46px, #0067d7 47px 47px, #0067d8 48px 48px, #0067d8 49px 49px, #0068d8 50px 50px, #0068d9 51px 51px, #0068d9 52px 52px, #0068d9 53px 53px, #0068d9 54px 54px, #0068da 55px 55px, #0068da 56px 56px, #0068da 57px 57px, #0068da 58px 58px, #0069db 59px 59px, #0069db 60px 60px, #0069db 61px 61px, #0069db 62px 62px, #0069dc 63px 63px, #0069dc 64px 64px, #0069dc 65px 65px, #0069dc 66px 66px, #006add 67px 67px, #006add 68px 68px, #006add 69px 69px, #006add 70px 70px, #006ade 71px 71px, #006ade 72px 72px, #006ade 73px 73px, #006ade 74px 74px, #006bdf 75px 75px, #006bdf 76px 76px, #006bdf 77px 77px, #006bdf 78px 78px, #006be0 79px 79px, #006be0 80px 80px, #006be0 81px 81px, #006be0 82px 82px, #006be1 83px 83px, #006ce1 84px 84px, #006ce1 85px 85px, #006ce1 86px 86px, #006ce2 87px 87px, #006ce2 88px 88px, #006ce2 89px 89px, #006ce2 90px 90px, #006ce3 91px 91px, #006de3 92px 92px, #006de3 93px 93px, #006de3 94px 94px, #006de4 95px 95px, #006de4 96px 96px, #006de4 97px 97px, #006de4 98px 98px, #006de5 99px 99px, #006ee5 100px 100px, #006ee5 101px 101px, #006ee6 102px 102px, #006ee6 103px 103px, #006ee6 104px 104px, #006ee6 105px 105px, #006ee7 106px 106px, #006ee7 107px 107px, #006ee7 108px 108px, #006fe7 109px 109px, #006fe8 110px 110px, #006fe8 111px 111px, #006fe8 112px 112px, #006fe8 113px 113px, #006fe9 114px 114px, #006fe9 115px 115px, #006fe9 116px 116px, #0070e9 117px 117px, #0070ea 118px 118px, #0070ea 119px 119px, #0070ea 120px 120px, #0070ea 121px 121px, #0070eb 122px 122px, #0070eb 123px 123px, #0070eb 124px 124px, #0071eb 125px 125px, #0071ec 126px 126px, #0071ec 127px 127px, #0071ec 128px 128px, #0071ec 129px 129px, #0071ed 130px 130px, #0071ed 131px 131px, #0071ed 132px 132px, #0071ed 133px 133px, #0072ee 134px 134px, #0072ee 135px 135px, #0072ee 136px 136px, #0072ee 137px 137px, #0072ef 138px 138px, #0072ef 139px 139px, #0072ef 140px 140px, #0072ef 141px 141px, #0073f0 142px 142px, #0073f0 143px 143px, #0073f0 144px 144px, #0073f0 145px 145px, #0073f1 146px 146px, #0073f1 147px 147px, #0073f1 148px 148px, #0073f1 149px 149px, #0074f2 150px 150px, #0074f2 151px 151px, #0074f2 152px 152px, #0074f3 153px 153px, #0074f3 154px 154px, #0074f3 155px 155px, #0074f3 156px 156px, #0074f4 157px 157px, #0074f4 158px 158px, #0075f4 159px 159px, #0075f4 160px 160px, #0075f5 161px 161px, #0075f5 162px 162px, #0075f5 163px 163px, #0075f5 164px 164px, #0075f6 165px 165px, #0075f6 166px 166px, #0076f6 167px 167px, #0076f6 168px 168px, #0076f7 169px 169px, #0076f7 170px 170px, #0076f7 171px 171px, #0076f7 172px 172px, #0076f8 173px 173px, #0076f8 174px 174px, #0077f8 175px 175px, #0077f8 176px 176px, #0077f9 177px 177px, #0077f9 178px 178px, #0077f9 179px 179px, #0077f9 180px 180px, #0077fa 181px 181px, #0077fa 182px 182px, #0077fa 183px 183px, #0078fa 184px 184px, #0078fb 185px 185px, #0078fb 186px 186px, #0078fb 187px 187px, #0078fb 188px 188px, #0078fc 189px 189px, #0078fc 190px 190px, #0078fc 191px 191px, #0079fc 192px 192px, #0079fd 193px 193px, #0079fd 194px 194px, #0079fd 195px 195px, #0079fd 196px 196px, #0079fe 197px 197px, #0079fe 198px 198px, #0079fe 199px 199px, #007aff 200px 200px;
}

/*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-13.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js??clonedRuleSet-13.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-13.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./assets/frontend/views/dashboard.vue?vue&type=style&index=0&id=d15acdb8&lang=scss&scoped=true& ***!
  \**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
.dashboard-container[data-v-d15acdb8] {
  background-color: transparent;
  /* Let the app background show through or set a light gray */
  min-height: 100vh;
}
.sidebar-title[data-v-d15acdb8] {
  font-size: 1.1rem;
  font-weight: 600;
  color: #424242;
  text-transform: uppercase;
  letter-spacing: 0.5px;
}

/* Sticky Sidebar for large screens */
@media (min-width: 1264px) {
.sticky-sidebar[data-v-d15acdb8] {
    position: sticky;
    top: 90px;
    /* Adjust based on your toolbar height */
}
}
/* Dark Mode Support */
.theme--dark .stats-card[data-v-d15acdb8],
.theme--dark .widget-card[data-v-d15acdb8],
.theme--dark .sidebar-card[data-v-d15acdb8],
.theme--dark .clock-card[data-v-d15acdb8] {
  border: 1px solid rgba(255, 255, 255, 0.05);
}
.theme--dark .sidebar-title[data-v-d15acdb8] {
  color: #E0E0E0;
}
/*!**************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./assets/frontend/views/pdf.vue?vue&type=style&index=0&id=2c04da82&lang=css& ***!
  \**************************************************************************************************************************************************************************************************************************************************************************/

.table-container {
  width: 100%;
  overflow-x: auto;
  /* يضيف شريط تمرير أفقي عند الحاجة */
}
table.paleBlueRows {
  font-family: "Arial", sans-serif;
  border-collapse: collapse;
  margin: 10px auto;
  width: 100%;
  max-width: 100%;
  min-width: 800px;
  /* يضمن عدم تصغير الجدول أكثر من اللازم */
  background-color: #f9f9f9;
  box-shadow: 0px 2px 5px rgba(0, 0, 0, 0.1);
}
table.paleBlueRows td,
table.paleBlueRows th {
  border: 1px solid #ddd;
  padding: 8px;
  font-size: 9px;
  /* تصغير الخط ليكون مناسبًا */
  text-align: center;
}
table.paleBlueRows thead {
  background: linear-gradient(90deg, #007bff, #0056b3);
  color: white;
  font-size: 9px;
  /* تقليل حجم العناوين */
  text-transform: uppercase;
}
table.paleBlueRows thead th {
  border: 1px solid #ddd;
  padding: 8px;
  font-size: 9px;
  /* تصغير الخط ليكون مناسبًا */
  text-align: center;
}
table.paleBlueRows tbody td {
  font-size: 9px;
  /* تصغير حجم النصوص في الجسم */
  color: #333;
}
table.paleBlueRows tr:nth-child(even) {
  background: #e3f2fd;
}
table.paleBlueRows tr:hover {
  background: #d0ebff;
  transition: 0.3s ease-in-out;
}
table.paleBlueRows tfoot {
  font-size: 9px;
  font-weight: bold;
  background: #cce5ff;
  border-top: 2px solid #0056b3;
}

/* ============================================= */
/* ==== أنماط احترافية لشريط أزرار الإجراءات ==== */
/* ============================================= */
.button-container {
  /* 1. التنسيق الداخلي للأزرار (Flexbox) */
  display: flex;
  flex-wrap: wrap;
  justify-content: center; /* <<< إضافة جديدة لتوسيط الأزرار داخل الحاوية عند الالتفاف */
  gap: 12px;

  /* 2. تصميم الحاوية نفسها */
  background-color: #f7f9fc;
  padding: 16px;
  border-radius: 8px;
  border: 1px solid #e0e4e9;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.05);

  /* 3. ✨ الجزء السحري للتوسيط واستغلال المساحة ✨ */
  width: fit-content; /* اجعل عرض الحاوية يتناسب مع محتواها فقط */
  max-width: 100%; /* تأكد من أنها لا تتجاوز عرض الشاشة على الموبايل */
  margin: 24px auto; /* هامش علوي/سفلي 24px، وتوسيط أفقي تلقائي */
}

/* 2. تحسين تصميم الأزرار والتأثيرات التفاعلية */
.button-container .v-btn {
  /* لإضافة تأثير انتقال ناعم */
  transition: all 0.2s ease-in-out !important;
}

/* 3. إضافة تأثير "رفع" تفاعلي عند التمرير */
.button-container .v-btn:hover {
  transform: translateY(-3px); /* تحريك الزر للأعلى قليلاً */
  box-shadow: 0 6px 16px rgba(0, 0, 0, 0.12) !important; /* زيادة الظل لتعزيز التأثير */
}

/* 4. تأثير الضغط على الزر */
.button-container .v-btn:active {
  transform: translateY(-1px); /* إرجاع الزر قليلاً ليعطي إحساس الضغط */
  box-shadow: 0 3px 8px rgba(0, 0, 0, 0.1) !important;
}
@media print {
  /* الخطوة 1: إخفاء كل شيء لا نريده */
body * {
    visibility: hidden;
}
.no-print {
    display: none !important;
}

  /* الخطوة 2: إظهار المنطقة القابلة للطباعة فقط وإعدادها */
.printable-area,
  .printable-area * {
    visibility: visible;
}
.printable-area {
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
    margin: 0;
    padding: 0;
    font-family: Arial, sans-serif; /* استخدام خط بسيط وواضح للطباعة */
}

  /* الخطوة 3: تنسيق الجدول بشكل خاص للطباعة */
h1 {
    text-align: center;
    color: #000 !important; /* لون أسود واضح */
    font-size: 16pt;
    margin-bottom: 20px;
}
table.paleBlueRows {
    width: 100% !important;
    border-collapse: collapse !important; /* لضمان اتصال الحدود */
    font-size: 10pt; /* حجم خط مناسب للقراءة على الورق */
    box-shadow: none !important; /* إزالة الظل */
}

  /* جعل الحدود واضحة جداً باللون الأسود */
table.paleBlueRows th,
  table.paleBlueRows td {
    border: 1px solid #000 !important; /* حدود سوداء وقوية */
    padding: 8px !important;
    color: #000 !important; /* نص أسود */
    text-align: center;
}

  /* تنسيق رأس الجدول للطباعة */
table.paleBlueRows thead {
    background-color: #e0e0e0 !important; /* خلفية رمادية فاتحة بدلاً من التدرج اللوني */
    -webkit-print-color-adjust: exact; /* محاولة إجبار المتصفح على طباعة لون الخلفية */
    color: #000 !important;
}

  /* إزالة لون الخلفية من الصفوف الفردية لزيادة الوضوح */
table.paleBlueRows tr:nth-child(even) {
    background: none !important;
}

  /* تنسيق صندوق التنبيهات (v-alert) للطباعة */
.v-alert {
    border: 1px solid #000 !important;
    padding: 10px !important;
    margin-top: 20px !important;
    background: none !important;
    color: #000 !important;
    box-shadow: none !important;
}
.v-alert .v-icon {
    display: none !important; /* إخفاء الأيقونة */
}
}

/*!****************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./assets/frontend/views/print.vue?vue&type=style&index=0&id=0f952e86&scoped=true&lang=css& ***!
  \****************************************************************************************************************************************************************************************************************************************************************************************/

/* Animations et styles Premium pour les panneaux d'expansion */
.custom-panels .v-expansion-panel-header[data-v-0f952e86] {
    border-bottom: 1px solid #f0f0f0;
    transition: background-color 0.3s ease, padding 0.3s ease;
}
.custom-panels .v-expansion-panel-header[data-v-0f952e86]:hover {
}
.custom-panels .v-expansion-panel-content__wrap[data-v-0f952e86] {
    padding-top: 20px;
    padding-bottom: 20px;
    background-color: #ffffff;
}

/*!*********************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./assets/frontend/views/importdata.vue?vue&type=style&index=0&id=3c2fd622&lang=css& ***!
  \*********************************************************************************************************************************************************************************************************************************************************************************/

table.paleBlueRows {
  font-family: "Times New Roman", Times, serif;
  border: 1px solid #ffffff;

  text-align: center;
  border-collapse: collapse;
  margin: 20px auto;
  width: 90%;
}
table.paleBlueRows td,
table.paleBlueRows th {
  border: 1px solid #ffffff;
  padding: 3px 2px;
}
table.paleBlueRows tbody td {
  font-size: 13px;
}
table.paleBlueRows tr:nth-child(even) {
  background: #d0e4f5;
}
table.paleBlueRows thead {
  background: #0b6fa4;
  border-bottom: 5px solid #ffffff;
}
table.paleBlueRows thead th {
  font-size: 13px;
  font-weight: bold;
  color: #ffffff;
  text-align: center;
  border-left: 2px solid #ffffff;
}
table.paleBlueRows thead th:first-child {
  border-left: none;
}
table.paleBlueRows tfoot {
  font-size: 13px;
  font-weight: bold;
  color: #333333;
  background: #d0e4f5;
  border-top: 3px solid #444444;
}
table.paleBlueRows tfoot td {
  font-size: 13px;
}

/*!******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-13.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js??clonedRuleSet-13.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-13.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./assets/frontend/views/login.vue?vue&type=style&index=0&id=0652310e&scoped=true&lang=scss& ***!
  \******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
.page-login[data-v-0652310e] {
  position: relative;
  height: 100vh;
  width: 100vw;
  overflow: hidden;
  background-color: #f5f7fa;
}
.animated-background[data-v-0652310e] {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: 0;
  animation: gradientShift-0652310e 20s ease infinite;
}
@keyframes gradientShift-0652310e {
0% {
    background-position: 0% 50%;
}
50% {
    background-position: 100% 50%;
}
100% {
    background-position: 0% 50%;
}
}
.login-container[data-v-0652310e] {
  position: relative;
  z-index: 1;
}

/* Left Panel */
.left-panel[data-v-0652310e] {
  background: rgba(255, 255, 255, 0.1);
  backdrop-filter: blur(10px);
  padding: 40px;
}
.branding-wrapper[data-v-0652310e] {
  max-width: 450px;
}
.logo-avatar[data-v-0652310e] {
  border: 3px solid rgba(255, 255, 255, 0.5);
  transition: transform 0.3s ease;
}
.logo-avatar[data-v-0652310e]:hover {
  transform: scale(1.05);
}

/* Right Panel */
.right-panel[data-v-0652310e] {
  padding: 20px;
}
.login-card[data-v-0652310e] {
  width: 100%;
  max-width: 400px;
  border-radius: 16px !important;
  background: rgba(255, 255, 255, 0.96) !important;
  backdrop-filter: blur(20px);
  border: 1px solid rgba(255, 255, 255, 0.5);
  box-shadow: 0 10px 40px rgba(0, 0, 0, 0.1) !important;
}
.theme--dark .login-card[data-v-0652310e] {
  background: rgba(30, 41, 59, 0.96) !important;
  border-color: rgba(255, 255, 255, 0.08);
}
.input-field[data-v-0652310e] {
  transition: all 0.3s ease;
}
.input-field[data-v-0652310e]:focus-within {
  transform: translateY(-1px);
}
.login-button[data-v-0652310e] {
  background: linear-gradient(135deg, #4F46E5 0%, #6366F1 100%) !important;
  color: white !important;
  letter-spacing: 0.5px;
  text-transform: none;
  font-size: 1rem;
  transition: all 0.3s ease;
}
.login-button[data-v-0652310e]:hover {
  transform: translateY(-1px);
  box-shadow: 0 4px 12px rgba(79, 70, 229, 0.3);
}
.login-button[data-v-0652310e]:active {
  transform: translateY(0);
}
.gap-2[data-v-0652310e] {
  gap: 8px;
}
.border-top[data-v-0652310e] {
  border-top: 1px solid rgba(0, 0, 0, 0.06);
}
.opacity-70[data-v-0652310e] {
  opacity: 0.7;
}
.opacity-90[data-v-0652310e] {
  opacity: 0.9;
}
@media (max-width: 960px) {
.page-login[data-v-0652310e] {
    height: auto;
    min-height: 100vh;
}
.right-panel[data-v-0652310e] {
    min-height: 100vh;
    padding: 40px 20px;
}
.login-card[data-v-0652310e] {
    max-width: 380px;
}
}
/*!*********************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./assets/frontend/views/urlBaseSet.vue?vue&type=style&index=0&id=737ab202&scoped=true&lang=css& ***!
  \*********************************************************************************************************************************************************************************************************************************************************************************************/

#login[data-v-737ab202] {
  margin: 0;
  height: 50%;
  width: 100%;
  position: absolute;
  top: 0;
  left: 0;
  content: "";
  z-index: 0;
}

/*!************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./assets/frontend/views/access_denied.vue?vue&type=style&index=0&id=6914a734&scoped=true&lang=css& ***!
  \************************************************************************************************************************************************************************************************************************************************************************************************/

#login[data-v-6914a734] {
  margin: 0;
  height: 50%;
  width: 100%;
  position: absolute;
  top: 0;
  left: 0;
  content: "";
  z-index: 0;
}

/*!********************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./assets/frontend/views/Tools/EntityOverrides.vue?vue&type=style&index=0&id=45df9da0&scoped=true&lang=css& ***!
  \********************************************************************************************************************************************************************************************************************************************************************************************************/

.entity-overrides-container[data-v-45df9da0] {
    margin-top: 66px;
    margin-left: 37px;
    margin-right: 20px;
}

/* Data table row hover */
[data-v-45df9da0] .v-data-table tbody tr:hover {
    background-color: rgba(0, 0, 0, 0.02) !important;
}
.theme--dark[data-v-45df9da0] .v-data-table tbody tr:hover {
    background-color: rgba(255, 255, 255, 0.05) !important;
}

/* Card styling */
[data-v-45df9da0] .v-card__title {
    border-radius: 4px 4px 0 0;
}

/* Chip group */
[data-v-45df9da0] .v-chip-group {
    justify-content: center;
}

/* Avatar transition */
.v-avatar[data-v-45df9da0] {
    transition: all 0.3s ease;
}

/*!**********************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./assets/frontend/components/finance/DocumentForensicViewer.vue?vue&type=style&index=0&id=eb2fc2f2&scoped=true&lang=css& ***!
  \**********************************************************************************************************************************************************************************************************************************************************************************************************************/

.v-card__text[data-v-eb2fc2f2] {
    max-height: 70vh;
    overflow-y: auto;
}

/*!***************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./assets/frontend/components/finance/FixActionDialog.vue?vue&type=style&index=0&id=8a50c9b8&scoped=true&lang=css& ***!
  \***************************************************************************************************************************************************************************************************************************************************************************************************************/

.error--text[data-v-8a50c9b8] {
    font-weight: bold;
}
.success--text[data-v-8a50c9b8] {
    font-weight: bold;
}

/*!**************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./assets/frontend/widgets/Transactions/TroubleshootingDashboard.vue?vue&type=style&index=0&id=2319d025&scoped=true&lang=css& ***!
  \**************************************************************************************************************************************************************************************************************************************************************************************************************************/

.v-data-table[data-v-2319d025] .error--text {
    font-weight: bold;
}
.v-data-table[data-v-2319d025] .success--text {
    font-weight: bold;
}
.clickable-card[data-v-2319d025] {
    cursor: pointer;
    transition: all 0.3s ease;
}
.clickable-card[data-v-2319d025]:hover {
    transform: translateY(-4px);
    box-shadow: 0 8px 16px rgba(0, 0, 0, 0.2) !important;
}
.selected-card[data-v-2319d025] {
    border: 3px solid white;
    box-shadow: 0 0 20px rgba(255, 255, 255, 0.5) !important;
}

/*!***********************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./assets/frontend/views/Finance/AccountingIssues.vue?vue&type=style&index=0&id=380db9b8&scoped=true&lang=css& ***!
  \***********************************************************************************************************************************************************************************************************************************************************************************************************/

.fill-height[data-v-380db9b8] {
    height: 100%;
}

/*!****************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./assets/frontend/components/box/inforoot.vue?vue&type=style&index=0&id=689e78c4&scoped=true&lang=css& ***!
  \****************************************************************************************************************************************************************************************************************************************************************************************************/

/* Financial Info Section - Simple & Clean */
.financial-info-section[data-v-689e78c4] {
  padding: 12px;
  background: linear-gradient(135deg, rgba(102, 126, 234, 0.03) 0%, rgba(118, 75, 162, 0.03) 100%);
  border-radius: 8px;
  border: 1px solid rgba(102, 126, 234, 0.1);
  margin-top: 12px;
}
.theme--dark .financial-info-section[data-v-689e78c4] {
  background: linear-gradient(135deg, rgba(102, 126, 234, 0.08) 0%, rgba(118, 75, 162, 0.08) 100%);
  border: 1px solid rgba(102, 126, 234, 0.2);
}

/* Header */
.financial-header[data-v-689e78c4] {
  display: flex;
  align-items: center;
  padding-bottom: 10px;
  border-bottom: 1px solid rgba(0, 0, 0, 0.06);
}
.theme--dark .financial-header[data-v-689e78c4] {
  border-bottom: 1px solid rgba(255, 255, 255, 0.1);
}
.financial-title[data-v-689e78c4] {
  font-size: 0.875rem;
  font-weight: 600;
  color: #2c3e50;
}
.theme--dark .financial-title[data-v-689e78c4] {
  color: #ecf0f1;
}
.financial-date[data-v-689e78c4] {
  font-size: 0.75rem;
  color: rgba(0, 0, 0, 0.6);
  display: flex;
  align-items: center;
}
.theme--dark .financial-date[data-v-689e78c4] {
  color: rgba(255, 255, 255, 0.7);
}

/* Alert */
.alert-animate[data-v-689e78c4] {
  animation: slideIn-689e78c4 0.3s ease;
}
@keyframes slideIn-689e78c4 {
from {
    opacity: 0;
    transform: translateY(-8px);
}
to {
    opacity: 1;
    transform: translateY(0);
}
}

/* Amounts Grid */
.amounts-grid[data-v-689e78c4] {
  margin: 0 -4px;
}
.amount-box[data-v-689e78c4] {
  padding: 10px;
  border-radius: 6px;
  background: white;
  border: 1px solid rgba(0, 0, 0, 0.06);
  transition: all 0.2s ease;
}
.amount-box[data-v-689e78c4]:hover {
  transform: translateY(-2px);
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
}
.theme--dark .amount-box[data-v-689e78c4] {
  background: rgba(0, 0, 0, 0.2);
  border: 1px solid rgba(255, 255, 255, 0.1);
}
.bl-box[data-v-689e78c4] {
  border-left: 3px solid #4caf50;
}
.fa-box[data-v-689e78c4] {
  border-left: 3px solid #ff9800;
}
.amount-label[data-v-689e78c4] {
  display: flex;
  align-items: center;
  font-size: 0.7rem;
  font-weight: 600;
  color: rgba(0, 0, 0, 0.6);
  margin-bottom: 6px;
  text-transform: uppercase;
  letter-spacing: 0.3px;
}
.theme--dark .amount-label[data-v-689e78c4] {
  color: rgba(255, 255, 255, 0.7);
}
.amount-value[data-v-689e78c4] {
  font-size: 1.125rem;
  font-weight: 700;
  color: #2c3e50;
  display: flex;
  align-items: baseline;
  gap: 4px;
}
.theme--dark .amount-value[data-v-689e78c4] {
  color: #ecf0f1;
}
.currency[data-v-689e78c4] {
  font-size: 0.75rem;
  font-weight: 500;
  color: rgba(0, 0, 0, 0.6);
}
.theme--dark .currency[data-v-689e78c4] {
  color: rgba(255, 255, 255, 0.6);
}

/* Authorized Info */
.authorized-info[data-v-689e78c4] {
  padding-top: 12px;
  border-top: 1px solid rgba(0, 0, 0, 0.06);
}
.theme--dark .authorized-info[data-v-689e78c4] {
  border-top: 1px solid rgba(255, 255, 255, 0.1);
}

/* Total Row */
.total-row[data-v-689e78c4] {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 8px 10px;
  background: rgba(102, 126, 234, 0.05);
  border-radius: 6px;
}
.theme--dark .total-row[data-v-689e78c4] {
  background: rgba(102, 126, 234, 0.1);
}
.total-label[data-v-689e78c4] {
  display: flex;
  align-items: center;
  font-size: 0.8rem;
  font-weight: 600;
  color: #667eea;
}
.theme--dark .total-label[data-v-689e78c4] {
  color: #a5b4fc;
}
.total-value[data-v-689e78c4] {
  font-size: 0.95rem;
  font-weight: 700;
  color: #2c3e50;
}
.theme--dark .total-value[data-v-689e78c4] {
  color: #ecf0f1;
}

/* Progress Container */
.progress-container[data-v-689e78c4] {
  padding: 0;
}
.progress-labels[data-v-689e78c4] {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 6px;
}
.progress-label[data-v-689e78c4] {
  font-size: 0.7rem;
  font-weight: 500;
  color: rgba(0, 0, 0, 0.6);
}
.theme--dark .progress-label[data-v-689e78c4] {
  color: rgba(255, 255, 255, 0.7);
}
.progress-max[data-v-689e78c4] {
  font-size: 0.7rem;
  font-weight: 600;
  color: #667eea;
}
.theme--dark .progress-max[data-v-689e78c4] {
  color: #a5b4fc;
}

/* Remaining Row */
.remaining-row[data-v-689e78c4] {
  display: flex;
  align-items: center;
  padding: 6px 10px;
  border-radius: 6px;
  font-size: 0.8rem;
}
.remaining-text[data-v-689e78c4] {
  flex: 1;
}
.remaining-positive[data-v-689e78c4] {
  background: rgba(76, 175, 80, 0.1);
  color: #4caf50;
  border: 1px solid rgba(76, 175, 80, 0.2);
}
.theme--dark .remaining-positive[data-v-689e78c4] {
  background: rgba(76, 175, 80, 0.15);
  border: 1px solid rgba(76, 175, 80, 0.3);
}
.remaining-warning[data-v-689e78c4] {
  background: rgba(255, 152, 0, 0.1);
  color: #ff9800;
  border: 1px solid rgba(255, 152, 0, 0.2);
}
.theme--dark .remaining-warning[data-v-689e78c4] {
  background: rgba(255, 152, 0, 0.15);
  border: 1px solid rgba(255, 152, 0, 0.3);
}
.remaining-negative[data-v-689e78c4] {
  background: rgba(244, 67, 54, 0.1);
  color: #f44336;
  border: 1px solid rgba(244, 67, 54, 0.2);
  animation: pulse-689e78c4 2s infinite;
}
.theme--dark .remaining-negative[data-v-689e78c4] {
  background: rgba(244, 67, 54, 0.15);
  border: 1px solid rgba(244, 67, 54, 0.3);
}
@keyframes pulse-689e78c4 {
0%,
  100% {
    box-shadow: 0 0 0 0 rgba(244, 67, 54, 0.3);
}
50% {
    box-shadow: 0 0 0 4px rgba(244, 67, 54, 0);
}
}

/* Authorization Status Section */
.authorization-status[data-v-689e78c4] {
  padding: 12px;
  background: linear-gradient(135deg, rgba(33, 150, 243, 0.05) 0%, rgba(21, 101, 192, 0.05) 100%);
  border-radius: 8px;
  border: 1px solid rgba(33, 150, 243, 0.15);
}
.theme--dark .authorization-status[data-v-689e78c4] {
  background: linear-gradient(135deg, rgba(33, 150, 243, 0.1) 0%, rgba(21, 101, 192, 0.1) 100%);
  border: 1px solid rgba(33, 150, 243, 0.25);
}
.status-header[data-v-689e78c4] {
  display: flex;
  align-items: center;
  font-size: 0.8rem;
  font-weight: 600;
  color: #1976d2;
  padding-bottom: 8px;
  border-bottom: 1px solid rgba(33, 150, 243, 0.15);
}
.theme--dark .status-header[data-v-689e78c4] {
  color: #64b5f6;
  border-bottom: 1px solid rgba(33, 150, 243, 0.25);
}
.status-title[data-v-689e78c4] {
  text-transform: uppercase;
  letter-spacing: 0.3px;
}
.status-content[data-v-689e78c4] {
  /* Empty for now */
}
.status-comparison[data-v-689e78c4] {
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 8px;
  background: white;
  border-radius: 6px;
}
.theme--dark .status-comparison[data-v-689e78c4] {
  background: rgba(0, 0, 0, 0.2);
}
.comparison-item[data-v-689e78c4] {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 4px;
}
.comparison-label[data-v-689e78c4] {
  font-size: 0.65rem;
  font-weight: 600;
  color: rgba(0, 0, 0, 0.5);
  text-transform: uppercase;
  letter-spacing: 0.3px;
}
.theme--dark .comparison-label[data-v-689e78c4] {
  color: rgba(255, 255, 255, 0.6);
}
.comparison-value[data-v-689e78c4] {
  font-size: 0.9rem;
  font-weight: 700;
}
.comparison-value.entered[data-v-689e78c4] {
  color: #1976d2;
}
.theme--dark .comparison-value.entered[data-v-689e78c4] {
  color: #64b5f6;
}
.comparison-value.remaining[data-v-689e78c4] {
  color: #667eea;
}
.theme--dark .comparison-value.remaining[data-v-689e78c4] {
  color: #a5b4fc;
}
.status-alert[data-v-689e78c4] {
  border-radius: 6px !important;
}
.status-message[data-v-689e78c4] {
  font-size: 0.75rem;
  font-weight: 500;
}

/* Responsive */
@media (max-width: 600px) {
.financial-header[data-v-689e78c4] {
    flex-direction: column;
    align-items: flex-start;
    gap: 6px;
}
.amount-value[data-v-689e78c4] {
    font-size: 1rem;
}
.status-comparison[data-v-689e78c4] {
    flex-direction: column;
    gap: 8px;
}
.comparison-item[data-v-689e78c4] {
    width: 100%;
}
}

/*!************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./assets/frontend/components/box/root.vue?vue&type=style&index=0&id=1dfb97f0&scoped=true&lang=css& ***!
  \************************************************************************************************************************************************************************************************************************************************************************************************/

/* Info Box Card - Simple & Clean */
.info-box-card[data-v-1dfb97f0] {
  border-radius: 8px;
  overflow: hidden;
  background: white;
  margin-bottom: 12px;
  transition: all 0.3s ease;
  border: 1px solid rgba(0, 0, 0, 0.08);
}
.theme--dark .info-box-card[data-v-1dfb97f0] {
  background: #303030;
  border: 1px solid rgba(255, 255, 255, 0.12);
}

/* Content */
.info-box-content[data-v-1dfb97f0] {
  padding: 16px !important;
}

/* Layout */
.info-layout[data-v-1dfb97f0] {
  display: flex;
  gap: 16px;
  align-items: flex-start;
}
.info-content[data-v-1dfb97f0] {
  flex: 1;
}
.info-logo[data-v-1dfb97f0] {
  flex-shrink: 0;
}

/* Logo Avatar */
.logo-avatar[data-v-1dfb97f0] {
  border: 2px solid rgba(0, 0, 0, 0.08);
  background: #f5f5f5;
}
.theme--dark .logo-avatar[data-v-1dfb97f0] {
  border: 2px solid rgba(255, 255, 255, 0.12);
  background: #424242;
}

/* Badges */
.badges-row[data-v-1dfb97f0] {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  margin-bottom: 8px;
}
.ice-chip[data-v-1dfb97f0],
.cin-chip[data-v-1dfb97f0] {
  background: linear-gradient(135deg, rgba(102, 126, 234, 0.1) 0%, rgba(118, 75, 162, 0.1) 100%) !important;
  color: #667eea !important;
  border: 1px solid rgba(102, 126, 234, 0.2);
  font-weight: 500;
  font-size: 0.7rem;
}
.theme--dark .ice-chip[data-v-1dfb97f0],
.theme--dark .cin-chip[data-v-1dfb97f0] {
  background: linear-gradient(135deg, rgba(102, 126, 234, 0.2) 0%, rgba(118, 75, 162, 0.2) 100%) !important;
  color: #a5b4fc !important;
  border: 1px solid rgba(102, 126, 234, 0.3);
}

/* Info Name */
.info-name[data-v-1dfb97f0] {
  display: flex;
  align-items: center;
  font-size: 1.125rem;
  font-weight: 600;
  color: #2c3e50;
  margin: 0;
}
.theme--dark .info-name[data-v-1dfb97f0] {
  color: #ecf0f1;
}

/* Details List */
.info-details-list[data-v-1dfb97f0] {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.detail-row[data-v-1dfb97f0] {
  display: flex;
  align-items: center;
  font-size: 0.875rem;
  color: rgba(0, 0, 0, 0.87);
}
.theme--dark .detail-row[data-v-1dfb97f0] {
  color: rgba(255, 255, 255, 0.87);
}
.detail-text[data-v-1dfb97f0] {
  flex: 1;
}

/* Actions Footer */
.info-actions[data-v-1dfb97f0] {
  background: rgba(0, 0, 0, 0.02);
  border-top: 1px solid rgba(0, 0, 0, 0.06);
}
.theme--dark .info-actions[data-v-1dfb97f0] {
  background: rgba(255, 255, 255, 0.02);
  border-top: 1px solid rgba(255, 255, 255, 0.06);
}

/* Responsive */
@media (max-width: 600px) {
.info-layout[data-v-1dfb97f0] {
    flex-direction: column-reverse;
    align-items: center;
}
.info-logo[data-v-1dfb97f0] {
    margin-bottom: 16px;
}
.info-content[data-v-1dfb97f0] {
    width: 100%;
    text-align: center;
}
.badges-row[data-v-1dfb97f0] {
    justify-content: center;
}
.info-details-list[data-v-1dfb97f0] {
    align-items: center;
}
}

/*!********************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./assets/frontend/components/btn/pos/caissebl.vue?vue&type=style&index=0&id=61d1cf9c&scoped=true&lang=css& ***!
  \********************************************************************************************************************************************************************************************************************************************************************************************************/

/* تصميم الزر */
.payment-button[data-v-61d1cf9c] {
  background: linear-gradient(45deg, #4CAF50, #81C784);
  color: white;
  transition: all 0.3s ease;
  box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
}
.payment-button[data-v-61d1cf9c]:hover {
  transform: translateY(-2px);
  box-shadow: 0 6px 8px rgba(0, 0, 0, 0.15);
}
.payment-button[data-v-61d1cf9c]:active {
  transform: translateY(0);
  box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
}
.payment-button.v-btn--loading[data-v-61d1cf9c] {
  opacity: 0.8;
}

/*!********************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./assets/frontend/components/btn/relationview.vue?vue&type=style&index=0&id=1a3433be&scoped=true&lang=css& ***!
  \********************************************************************************************************************************************************************************************************************************************************************************************************/

/* التأثير البصري للاهتزاز داخل العناصر */
.shake-btn[data-v-1a3433be] {

  animation: blink-1a3433be 1s 1s ease-out infinite;
  /* الوميض المستمر */
}

/* حركة الاهتزاز داخل العناصر */
.shake-btn span[data-v-1a3433be],
.shake-btn[data-v-1a3433be] {
  animation: shake-1a3433be 1s ease-in-out infinite;
}

/* حركة الاهتزاز (عند تطبيق الاهتزاز على النص والأيقونة فقط) */
@keyframes shake-1a3433be {
0% {
    transform: translateX(0);
}
25% {
    transform: translateX(-3px);
}
50% {
    transform: translateX(3px);
}
75% {
    transform: translateX(-3px);
}
100% {
    transform: translateX(0);
}
}

/* حركة الوميض */
@keyframes blink-1a3433be {
0% {
    background-color: #f0c0c0;
}
50% {
    background-color: #f44336;
}
100% {
    background-color: #a82828;
}
}

/*!*************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./assets/frontend/components/card/Card.vue?vue&type=style&index=0&id=a753ab16&scoped=true&lang=css& ***!
  \*************************************************************************************************************************************************************************************************************************************************************************************************/

.v-card--material .__avatar[data-v-a753ab16] {
  position: relative;
  top: -64px;
  margin-bottom: -32px;
}
.v-card--material .__heading[data-v-a753ab16] {
  position: relative;
  top: -40px;
  transition: 0.3s ease;
  z-index: 1;
}

/*!**************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./assets/frontend/components/card/MonthDetailDialog.vue?vue&type=style&index=0&id=8acab3f8&scoped=true&lang=css& ***!
  \**************************************************************************************************************************************************************************************************************************************************************************************************************/

.text-truncate[data-v-8acab3f8] {
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

/*!*************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./assets/frontend/components/card/MonthSummaryCard.vue?vue&type=style&index=0&id=780baa1b&scoped=true&lang=css& ***!
  \*************************************************************************************************************************************************************************************************************************************************************************************************************/

.month-card[data-v-780baa1b] {
    cursor: pointer;
    transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);
    border-radius: 12px;
    border: 1.5px solid rgba(0, 0, 0, 0.08);
    background: white;
    position: relative;
    overflow: hidden;
}
.month-card[data-v-780baa1b]:hover {
    transform: translateY(-4px);
    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12) !important;
    border-color: rgba(0, 0, 0, 0.15);
}

/* Compact Header */
.card-header[data-v-780baa1b] {
    padding: 12px 16px;
    background: rgba(0, 0, 0, 0.02);
    border-bottom: 1px solid rgba(0, 0, 0, 0.06);
}
.month-info[data-v-780baa1b] {
    display: flex;
    align-items: center;
}
.month-name[data-v-780baa1b] {
    font-size: 1rem;
    font-weight: 600;
    color: rgba(0, 0, 0, 0.87);
}
.header-badges[data-v-780baa1b] {
    display: flex;
    gap: 6px;
}

/* Balance Section */
.balance-section[data-v-780baa1b] {
    display: flex;
    flex-direction: column;
    gap: 10px;
}
.balance-row[data-v-780baa1b] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 6px 0;
}
.balance-row.subtle[data-v-780baa1b] {
    font-size: 0.8rem;
    opacity: 0.7;
}
.balance-row.main[data-v-780baa1b] {
    padding: 10px 12px;
    margin: 8px -12px;
    border-radius: 8px;
    background: rgba(0, 0, 0, 0.02);
}
.label-text[data-v-780baa1b] {
    display: flex;
    align-items: center;
    gap: 4px;
    color: rgba(0, 0, 0, 0.75);
    font-size: 0.875rem;
    font-weight: 500;
}
.value-text[data-v-780baa1b] {
    font-family: 'Roboto Mono', monospace;
    font-weight: 600;
    font-size: 0.95rem;
    color: rgba(0, 0, 0, 0.95);
}
.value-text.main-value[data-v-780baa1b] {
    font-size: 1.2rem;
    font-weight: 700;
    color: rgba(0, 0, 0, 1);
}

/* Metrics Row - Minimalist */
.metrics-row[data-v-780baa1b] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 8px;
    margin: 4px 0;
}
.metric-item[data-v-780baa1b] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 8px;
    border-radius: 8px;
    background: rgba(0, 0, 0, 0.02);
    border: 1px solid transparent;
    transition: all 0.2s;
}
.metric-item.positive[data-v-780baa1b] {
    border-color: rgba(76, 175, 80, 0.15);
}
.metric-item.negative[data-v-780baa1b] {
    border-color: rgba(244, 67, 54, 0.15);
}
.metric-icon[data-v-780baa1b] {
    opacity: 0.6;
}
.metric-value[data-v-780baa1b] {
    font-size: 0.9rem;
    font-weight: 700;
    font-family: 'Roboto Mono', monospace;
}
.metric-item.positive .metric-value[data-v-780baa1b] {
    color: #2e7d32;
}
.metric-item.negative .metric-value[data-v-780baa1b] {
    color: #c62828;
}
.metric-label[data-v-780baa1b] {
    font-size: 0.7rem;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    color: rgba(0, 0, 0, 0.6);
    font-weight: 600;
}

/* Net Indicator */
.net-indicator[data-v-780baa1b] {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    padding: 4px;
    font-size: 0.8rem;
    font-weight: 700;
}

/* Status Strip at bottom */
.status-strip[data-v-780baa1b] {
    height: 3px;
    width: 100%;
    position: absolute;
    bottom: 0;
    left: 0;
    transition: all 0.3s;
}
.status-strip.positive[data-v-780baa1b] {
    background: linear-gradient(90deg, #66bb6a 0%, #81c784 100%);
}
.status-strip.negative[data-v-780baa1b] {
    background: linear-gradient(90deg, #ef5350 0%, #e57373 100%);
}
.status-strip.neutral[data-v-780baa1b] {
    background: linear-gradient(90deg, #78909c 0%, #90a4ae 100%);
}

/* Hover effect on status strip */
.month-card:hover .status-strip[data-v-780baa1b] {
    height: 4px;
}

/* Dark Mode - Softer colors */
.theme--dark .month-card[data-v-780baa1b] {
    background: #1e1e1e;
    border-color: rgba(255, 255, 255, 0.1);
}
.theme--dark .card-header[data-v-780baa1b] {
    background: rgba(255, 255, 255, 0.03);
    border-bottom-color: rgba(255, 255, 255, 0.08);
}
.theme--dark .month-name[data-v-780baa1b] {
    color: rgba(255, 255, 255, 0.95);
}
.theme--dark .label-text[data-v-780baa1b] {
    color: rgba(255, 255, 255, 0.6);
}
.theme--dark .value-text[data-v-780baa1b] {
    color: rgba(255, 255, 255, 0.9);
}
.theme--dark .balance-row.main[data-v-780baa1b] {
    background: rgba(255, 255, 255, 0.04);
}
.theme--dark .metric-item[data-v-780baa1b] {
    background: rgba(255, 255, 255, 0.04);
}
.theme--dark .metric-item.positive[data-v-780baa1b] {
    border-color: rgba(129, 199, 132, 0.2);
}
.theme--dark .metric-item.positive .metric-value[data-v-780baa1b] {
    color: #81c784;
}
.theme--dark .metric-item.negative[data-v-780baa1b] {
    border-color: rgba(229, 115, 115, 0.2);
}
.theme--dark .metric-item.negative .metric-value[data-v-780baa1b] {
    color: #e57373;
}
.theme--dark .metric-label[data-v-780baa1b] {
    color: rgba(255, 255, 255, 0.4);
}
.theme--dark .status-strip.positive[data-v-780baa1b] {
    background: linear-gradient(90deg, #66bb6a 0%, #4caf50 100%);
}
.theme--dark .status-strip.negative[data-v-780baa1b] {
    background: linear-gradient(90deg, #ef5350 0%, #f44336 100%);
}
.theme--dark .status-strip.neutral[data-v-780baa1b] {
    background: linear-gradient(90deg, #78909c 0%, #607d8b 100%);
}

/* Responsive */
@media (max-width: 600px) {
.card-header[data-v-780baa1b] {
        padding: 10px 12px;
}
.month-name[data-v-780baa1b] {
        font-size: 0.95rem;
}
.metrics-row[data-v-780baa1b] {
        grid-template-columns: 1fr;
}
.metric-item[data-v-780baa1b] {
        padding: 6px;
}
}

/*!**************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./assets/frontend/components/card/Stats.vue?vue&type=style&index=0&id=741ba48a&scoped=true&lang=css& ***!
  \**************************************************************************************************************************************************************************************************************************************************************************************************/

.v-card--material-stats[data-v-741ba48a] {
  display: flex;
  flex-wrap: wrap;
  position: relative;
}
.v-card--material-stats div[data-v-741ba48a]:first-child {
  justify-content: space-between;
}
.v-card--material-stats .v-card[data-v-741ba48a] {
  border-radius: 4px;
  flex: 0 1 auto;
}
.v-card--material-stats .v-card__text[data-v-741ba48a] {
  display: inline-block;
  flex: 1 0 calc(100% - 120px);
  position: absolute;
  top: 0;
  right: 0;
  width: 100%;
}
.v-card--material-stats .v-card__actions[data-v-741ba48a] {
  flex: 1 0 100%;
}


/*!**************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./assets/frontend/components/card/block.vue?vue&type=style&index=0&id=a78e44d0&scoped=true&lang=css& ***!
  \**************************************************************************************************************************************************************************************************************************************************************************************************/

.v-card--material-stats[data-v-a78e44d0] {
  flex-wrap: wrap;
  position: relative;
}
.v-card--material-stats div[data-v-a78e44d0]:first-child {
  justify-content: space-between;
}
.v-card--material-stats .v-card[data-v-a78e44d0] {
  border-radius: 4px;
  flex: 0 1 auto;
}
.v-card--material-stats .v-card__text[data-v-a78e44d0] {
  display: inline-block;
  flex: 1 0 calc(100% - 120px);
  position: absolute;
  top: 0;
  right: 0;
  width: 100%;
}
.v-card--material-stats .v-card__actions[data-v-a78e44d0] {
  flex: 1 0 100%;
}

/*!**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-13.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js??clonedRuleSet-13.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-13.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./assets/frontend/components/card/box.vue?vue&type=style&index=0&id=1a366896&lang=scss& ***!
  \**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
.v-card--theme__header.v-card {
  border-radius: 4px;
}
.v-card {
  border-radius: 16px !important;
  transition: all 0.3s ease-in-out;
  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05);
}
.v-card__title,
.v-card__text {
  font-family: "Inter", sans-serif;
}
.v-card__title {
  font-size: 1.25rem;
  font-weight: 600;
}
.v-card__text {
  font-size: 1rem;
}
.v-btn {
  transition: all 0.25s ease;
  border-radius: 12px !important;
}
.v-btn:hover {
  background-color: rgba(0, 0, 0, 0.04) !important;
}
.v-icon {
  transition: color 0.25s ease;
}
.v-icon:hover {
  color: #1976d2 !important;
}
.v-dialog .v-card {
  border-radius: 16px !important;
  box-shadow: 0 10px 30px rgba(0, 0, 0, 0.12);
}
/*!********************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./assets/frontend/components/finance/GlobalIssuesOverview.vue?vue&type=style&index=0&id=74bb39d5&scoped=true&lang=css& ***!
  \********************************************************************************************************************************************************************************************************************************************************************************************************************/

.v-card[data-v-74bb39d5]:hover {
    cursor: pointer;
    transform: translateY(-2px);
    transition: all 0.2s ease-in-out;
}

/*!*****************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./assets/frontend/components/helper/offset.vue?vue&type=style&index=0&id=6ce9b03a&lang=css& ***!
  \*****************************************************************************************************************************************************************************************************************************************************************************************/

.v-offset {
  margin: 0 auto;
  max-width: calc(100% - 32px);
  position: relative;
}
.v-offset--full-width {
  max-width: 100%;
}

/*!**********************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./assets/frontend/components/multiselect/search.vue?vue&type=style&index=0&id=3649864c&scoped=true&lang=css& ***!
  \**********************************************************************************************************************************************************************************************************************************************************************************************************/

.w-100[data-v-3649864c] {
  width: 100%;
}

/*!***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-13.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js??clonedRuleSet-13.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-13.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./assets/frontend/components/readfile/coollightbox.vue?vue&type=style&index=0&id=7d224a7e&lang=scss& ***!
  \***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
.cool-lightbox {
  position: fixed;
  left: 0;
  bottom: 0;
  top: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  right: 0;
  transition: all 0.3s ease;
}
.cool-lightbox .cool-lightbox-zoom {
  position: absolute;
  bottom: 15px;
  left: 50%;
  display: flex;
  z-index: 99999;
  background-color: rgba(15, 15, 15, 0.8);
  border-radius: 8px;
  padding: 0px 12px;
  align-items: center;
  transform: translateX(-50%);
}
.cool-lightbox .cool-lightbox-zoom input[type=range] {
  -webkit-appearance: none;
  margin: 10px 0;
  width: 105px;
  background: transparent;
}
.cool-lightbox .cool-lightbox-zoom input[type=range]:focus {
  outline: none;
}
.cool-lightbox .cool-lightbox-zoom input[type=range]::-webkit-slider-runnable-track {
  width: 100%;
  height: 4px;
  cursor: pointer;
  animate: 0.2s;
  box-shadow: 0px 0px 0px #000000;
  background: #e6e6e6;
  border-radius: 11px;
  border: 0px solid #000000;
}
.cool-lightbox .cool-lightbox-zoom input[type=range]::-webkit-slider-thumb {
  box-shadow: 1px 1px 1px #000000;
  border: 1px solid #000000;
  height: 12px;
  width: 12px;
  border-radius: 13px;
  background: #ffffff;
  cursor: pointer;
  -webkit-appearance: none;
  margin-top: -4.5px;
}
.cool-lightbox .cool-lightbox-zoom input[type=range]:focus::-webkit-slider-runnable-track {
  background: #e6e6e6;
}
.cool-lightbox .cool-lightbox-zoom input[type=range]::-moz-range-track {
  width: 100%;
  height: 4px;
  cursor: pointer;
  animate: 0.2s;
  box-shadow: 0px 0px 0px #000000;
  background: #e6e6e6;
  border-radius: 11px;
  border: 0px solid #000000;
}
.cool-lightbox .cool-lightbox-zoom input[type=range]::-moz-range-thumb {
  box-shadow: 1px 1px 1px #000000;
  border: 1px solid #000000;
  height: 12px;
  width: 12px;
  border-radius: 13px;
  background: #ffffff;
  cursor: pointer;
}
.cool-lightbox .cool-lightbox-zoom input[type=range]::-ms-track {
  width: 100%;
  height: 4px;
  cursor: pointer;
  animate: 0.2s;
  background: transparent;
  border-color: transparent;
  color: transparent;
}
.cool-lightbox .cool-lightbox-zoom input[type=range]::-ms-fill-lower {
  background: #e6e6e6;
  border: 0px solid #000000;
  border-radius: 22px;
  box-shadow: 0px 0px 0px #000000;
}
.cool-lightbox .cool-lightbox-zoom input[type=range]::-ms-fill-upper {
  background: #e6e6e6;
  border: 0px solid #000000;
  border-radius: 22px;
  box-shadow: 0px 0px 0px #000000;
}
.cool-lightbox .cool-lightbox-zoom input[type=range]::-ms-thumb {
  box-shadow: 1px 1px 1px #000000;
  border: 1px solid #000000;
  height: 12px;
  width: 12px;
  border-radius: 13px;
  background: #ffffff;
  cursor: pointer;
}
.cool-lightbox .cool-lightbox-zoom input[type=range]:focus::-ms-fill-lower {
  background: #e6e6e6;
}
.cool-lightbox .cool-lightbox-zoom input[type=range]:focus::-ms-fill-upper {
  background: #e6e6e6;
}
.cool-lightbox .cool-lightbox-zoom .cool-lightbox-zoom__icon {
  height: 15px;
  width: 15px;
  color: #fff;
}
.cool-lightbox .cool-lightbox-zoom .cool-lightbox-zoom__icon:first-of-type {
  margin-right: 10px;
}
.cool-lightbox .cool-lightbox-zoom .cool-lightbox-zoom__icon:last-of-type {
  margin-left: 10px;
}
.cool-lightbox .cool-lightbox-thumbs {
  position: absolute;
  height: 100vh;
  overflow-y: auto;
  width: 102px;
  right: -102px;
  top: 0;
  overflow-x: hidden;
  transition: none;
  background-color: #ddd;
  scrollbar-width: thin;
  scrollbar-color: #fa4242 rgba(175, 175, 175, 0.9);
}
@media (min-width: 767px) {
.cool-lightbox .cool-lightbox-thumbs {
    transition: all 0.3s ease;
}
}
.cool-lightbox .cool-lightbox-thumbs::-webkit-scrollbar {
  width: 6px;
  height: 6px;
}
.cool-lightbox .cool-lightbox-thumbs::-webkit-scrollbar-button {
  width: 0px;
  height: 0px;
}
.cool-lightbox .cool-lightbox-thumbs::-webkit-scrollbar-thumb {
  background: #fa4242;
  border: 0px none #ffffff;
  border-radius: 50px;
}
.cool-lightbox .cool-lightbox-thumbs::-webkit-scrollbar-thumb:hover {
  background: #ffffff;
}
.cool-lightbox .cool-lightbox-thumbs::-webkit-scrollbar-thumb:active {
  background: #000000;
}
.cool-lightbox .cool-lightbox-thumbs::-webkit-scrollbar-track {
  background: #e1e1e1;
  border: 0px none #ffffff;
  border-radius: 8px;
}
.cool-lightbox .cool-lightbox-thumbs::-webkit-scrollbar-track:hover {
  background: #666666;
}
.cool-lightbox .cool-lightbox-thumbs::-webkit-scrollbar-track:active {
  background: #333333;
}
.cool-lightbox .cool-lightbox-thumbs::-webkit-scrollbar-corner {
  background: transparent;
}
@media (min-width: 767px) {
.cool-lightbox .cool-lightbox-thumbs {
    width: 212px;
    right: -212px;
}
}
.cool-lightbox .cool-lightbox-thumbs .cool-lightbox-thumbs__list {
  display: flex;
  flex-wrap: wrap;
  padding: 2px;
  padding-right: 0;
}
.cool-lightbox .cool-lightbox-thumbs .cool-lightbox-thumbs__list .cool-lightbox__thumb {
  background-color: black;
  width: 100%;
  margin-right: 2px;
  margin-bottom: 2px;
  display: block;
  height: 75px;
  position: relative;
}
@media (min-width: 767px) {
.cool-lightbox .cool-lightbox-thumbs .cool-lightbox-thumbs__list .cool-lightbox__thumb {
    width: calc(100% / 2 - 2px);
}
}
.cool-lightbox .cool-lightbox-thumbs .cool-lightbox-thumbs__list .cool-lightbox__thumb:before {
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  opacity: 0;
  content: "";
  z-index: 150;
  transition: all 0.3s ease;
  position: absolute;
  visibility: hidden;
  border: 3px solid #fa4242;
}
.cool-lightbox .cool-lightbox-thumbs .cool-lightbox-thumbs__list .cool-lightbox__thumb img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.cool-lightbox .cool-lightbox-thumbs .cool-lightbox-thumbs__list .cool-lightbox__thumb.is-video .cool-lightbox__thumb__icon {
  position: absolute;
  z-index: 100;
  top: 50%;
  left: 50%;
  width: 25px;
  height: 25px;
  transform: translate(-50%, -50%);
}
.cool-lightbox .cool-lightbox-thumbs .cool-lightbox-thumbs__list .cool-lightbox__thumb.is-video .cool-lightbox__thumb__icon path {
  fill: #fff;
}
.cool-lightbox .cool-lightbox-thumbs .cool-lightbox-thumbs__list .cool-lightbox__thumb.is-video:after {
  content: "";
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 50;
  position: absolute;
  background: rgba(0, 0, 0, 0.6);
}
.cool-lightbox .cool-lightbox-thumbs .cool-lightbox-thumbs__list .cool-lightbox__thumb.active:before, .cool-lightbox .cool-lightbox-thumbs .cool-lightbox-thumbs__list .cool-lightbox__thumb:hover:before {
  opacity: 1;
  visibility: visible;
}
.cool-lightbox .cool-lightbox__inner {
  padding: 60px 0;
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  overflow: hidden;
  transition: none;
}
@media (min-width: 767px) {
.cool-lightbox .cool-lightbox__inner {
    transition: all 0.3s ease;
}
}
.cool-lightbox .cool-lightbox__progressbar {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 2px;
  z-index: 500;
  transform-origin: 0;
  transform: scaleX(0);
  transition: transform 3s linear;
  display: block;
}
.cool-lightbox.cool-lightbox--is-swipping {
  cursor: -webkit-grabbing;
  cursor: grabbing;
}
.cool-lightbox.cool-lightbox--is-swipping iframe {
  pointer-events: none;
}
.cool-lightbox.cool-lightbox--is-swipping .cool-lightbox__slide {
  transition: none;
}
.cool-lightbox.cool-lightbox--is-swipping .cool-lightbox__slide.cool-lightbox__slide--hide, .cool-lightbox.cool-lightbox--is-swipping .cool-lightbox__slide.cool-lightbox__slide--hide {
  display: flex;
  z-index: 50;
}
.cool-lightbox.cool-lightbox--can-zoom .cool-lightbox__slide img {
  cursor: zoom-in;
}
.cool-lightbox.cool-lightbox--is-zooming .cool-lightbox__slide img {
  cursor: move;
  /* fallback if grab cursor is unsupported */
  cursor: grab;
  cursor: -moz-grab;
  cursor: -webkit-grab;
}
.cool-lightbox.cool-lightbox--is-zooming .cool-lightbox-caption {
  opacity: 0;
}
.cool-lightbox.cool-lightbox--thumbs-right.cool-lightbox--show-thumbs .cool-lightbox__inner {
  right: 102px;
}
@media (min-width: 767px) {
.cool-lightbox.cool-lightbox--thumbs-right.cool-lightbox--show-thumbs .cool-lightbox__inner {
    right: 212px;
}
}
.cool-lightbox.cool-lightbox--thumbs-right.cool-lightbox--show-thumbs .cool-lightbox-thumbs {
  right: 0;
}
.cool-lightbox.cool-lightbox--thumbs-bottom .cool-lightbox-thumbs {
  width: 100%;
  left: 0;
  right: 0;
  top: auto;
  height: 70px;
  bottom: -70px;
  overflow: auto;
}
@media (min-width: 767px) {
.cool-lightbox.cool-lightbox--thumbs-bottom .cool-lightbox-thumbs {
    bottom: -79px;
    height: 79px;
}
}
.cool-lightbox.cool-lightbox--thumbs-bottom .cool-lightbox-thumbs .cool-lightbox-thumbs__list {
  width: 100%;
  flex-wrap: nowrap;
  justify-content: center;
}
.cool-lightbox.cool-lightbox--thumbs-bottom .cool-lightbox-thumbs .cool-lightbox-thumbs__list .cool-lightbox__thumb {
  width: 100px;
  flex-shrink: 0;
  margin-bottom: 0;
  height: 65px;
}
@media (min-width: 767px) {
.cool-lightbox.cool-lightbox--thumbs-bottom .cool-lightbox-thumbs .cool-lightbox-thumbs__list .cool-lightbox__thumb {
    height: 75px;
}
}
.cool-lightbox.cool-lightbox--thumbs-bottom.cool-lightbox--show-thumbs .cool-lightbox__inner {
  bottom: 70px;
}
@media (min-width: 767px) {
.cool-lightbox.cool-lightbox--thumbs-bottom.cool-lightbox--show-thumbs .cool-lightbox__inner {
    bottom: 79px;
}
}
.cool-lightbox.cool-lightbox--thumbs-bottom.cool-lightbox--show-thumbs .cool-lightbox-thumbs {
  bottom: 0;
}
.cool-lightbox * {
  box-sizing: border-box;
  padding: 0;
  margin: 0;
}
.cool-lightbox button {
  background: none;
  border: none;
  cursor: pointer;
  outline: none;
}
.cool-lightbox svg path,
.cool-lightbox svg rect {
  fill: currentColor;
}
.cool-lightbox .cool-lightbox-button {
  padding: 21px 16px 21px 4px;
  height: 100px;
  opacity: 1;
  z-index: 800;
  color: #ccc;
  transition: all 0.3s ease;
  position: absolute;
  top: calc(50% - 50px);
  width: 54px;
  transition: all 0.3s ease;
  visibility: visible;
}
@media (min-width: 767px) {
.cool-lightbox .cool-lightbox-button {
    width: 70px;
    padding: 31px 26px 31px 6px;
}
}
.cool-lightbox .cool-lightbox-button.hidden {
  opacity: 0;
  visibility: hidden;
}
.cool-lightbox .cool-lightbox-button:hover {
  color: #fff;
}
.cool-lightbox .cool-lightbox-button > .cool-lightbox-button__icon {
  padding: 7px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(30, 30, 30, 0.6);
}
.cool-lightbox .cool-lightbox-button > .cool-lightbox-button__icon > svg {
  width: 100%;
  height: 100%;
}
.cool-lightbox .cool-lightbox-button.cool-lightbox-button--prev {
  left: 0;
}
.cool-lightbox .cool-lightbox-button.cool-lightbox-button--next {
  right: 0;
  padding: 21px 4px 21px 16px;
}
@media (min-width: 767px) {
.cool-lightbox .cool-lightbox-button.cool-lightbox-button--next {
    padding: 31px 6px 31px 26px;
}
}
.cool-lightbox .cool-lightbox-pdf {
  max-width: 100%;
}
.cool-lightbox .cool-lightbox__iframe {
  width: 100%;
  display: flex;
  top: 50%;
  left: 50%;
  align-items: center;
  justify-content: center;
  position: relative;
  transform: translate3d(-50%, -50%, 0px) scale3d(1, 1, 1);
}
.cool-lightbox .cool-lightbox__iframe iframe {
  width: 100%;
  height: 100%;
}
@media (min-width: 767px) {
.cool-lightbox .cool-lightbox__iframe iframe {
    max-width: 80vw;
    max-height: 80vh;
}
}
.cool-lightbox .cool-lightbox__wrapper {
  width: 100%;
  height: 100%;
  position: relative;
}
.cool-lightbox .cool-lightbox__wrapper.cool-lightbox__wrapper--swipe {
  display: flex;
  align-items: center;
}
.cool-lightbox .cool-lightbox__wrapper.cool-lightbox__wrapper--swipe .cool-lightbox__slide {
  flex-shrink: 0;
  display: flex;
  position: relative;
  height: 100%;
  opacity: 0.4;
  transition: opacity 0.3s linear;
}
.cool-lightbox .cool-lightbox__wrapper.cool-lightbox__wrapper--swipe .cool-lightbox__slide.cool-lightbox__slide--current {
  opacity: 1;
}
.cool-lightbox .cool-lightbox__slide {
  width: 100%;
  top: 0;
  bottom: 0;
  left: 0;
  right: 0;
  z-index: 100;
  display: none;
  position: absolute;
  margin-right: 30px;
  transition: transform 0.3s ease;
}
.cool-lightbox .cool-lightbox__slide:last-of-type {
  margin-right: 0;
}
.cool-lightbox .cool-lightbox__slide.cool-lightbox__slide--current {
  display: flex;
}
.cool-lightbox .cool-lightbox__slide .cool-lightbox__slide__img {
  position: absolute;
  height: 100%;
  left: 50%;
  top: 50%;
  -webkit-backface-visibility: hidden;
  backface-visibility: hidden;
  transform: translate3d(-50%, -50%, 0px) scale3d(1, 1, 1);
  transition: all 0.3s ease;
  display: flex;
}
.cool-lightbox .cool-lightbox__slide img {
  max-width: 100%;
  max-height: 100%;
  margin: auto;
  z-index: 9999;
  box-shadow: 0 0 1.5rem rgba(0, 0, 0, 0.45);
}
.cool-lightbox-toolbar {
  position: absolute;
  top: 0;
  right: 0;
  opacity: 1;
  display: flex;
  transition: all 0.3s ease;
  visibility: visible;
}
.cool-lightbox-toolbar.hidden {
  opacity: 0;
  visibility: hidden;
}
.cool-lightbox-toolbar .cool-lightbox-toolbar__btn {
  background: rgba(30, 30, 30, 0.6);
  border: 0;
  border-radius: 0;
  box-shadow: none;
  cursor: pointer;
  justify-content: center;
  align-items: center;
  display: inline-flex;
  margin: 0;
  padding: 9px;
  position: relative;
  transition: color 0.2s;
  vertical-align: top;
  visibility: inherit;
  width: 40px;
  height: 40px;
  color: #ccc;
}
@media (min-width: 767px) {
.cool-lightbox-toolbar .cool-lightbox-toolbar__btn {
    width: 44px;
    height: 44px;
    padding: 10px;
}
}
.cool-lightbox-toolbar .cool-lightbox-toolbar__btn > svg {
  width: 100%;
  height: 100%;
}
.cool-lightbox-toolbar .cool-lightbox-toolbar__btn:hover {
  color: #ffffff;
}
.cool-lightbox-caption {
  bottom: 0;
  color: #eee;
  font-size: 14px;
  font-weight: 400;
  left: 0;
  opacity: 1;
  line-height: 1.5;
  padding: 18px 28px 16px 24px;
  right: 0;
  text-align: center;
  direction: ltr;
  position: absolute;
  transition: opacity 0.25s ease, visibility 0s ease 0.25s;
  z-index: 99997;
  background: linear-gradient(0deg, rgba(0, 0, 0, 0.75) 0, rgba(0, 0, 0, 0.3) 50%, rgba(0, 0, 0, 0.15) 65%, rgba(0, 0, 0, 0.075) 75.5%, rgba(0, 0, 0, 0.037) 82.85%, rgba(0, 0, 0, 0.019) 88%, transparent);
}
@media (min-width: 767px) {
.cool-lightbox-caption {
    padding: 22px 30px 23px 30px;
}
}
.cool-lightbox-caption a {
  color: #eee;
  text-decoration: underline;
}
.cool-lightbox-caption h6 {
  font-size: 14px;
  margin: 0 0 6px 0;
  line-height: 130%;
}
@media (min-width: 767px) {
.cool-lightbox-caption h6 {
    font-size: 16px;
    margin: 0 0 6px 0;
}
}
.cool-lightbox-caption p {
  font-size: 13px;
  line-height: 130%;
  color: #ccc;
}
@media (min-width: 767px) {
.cool-lightbox-caption p {
    font-size: 15px;
}
}
.cool-lightbox-caption p a {
  color: #ccc;
}
.cool-lightbox-caption p a:hover {
  color: #eee;
}
.cool-lightbox-modal-enter-active,
.cool-lightbox-modal-leave-active {
  transition: opacity 0.35s;
}
.cool-lightbox-modal-enter,
.cool-lightbox-modal-leave-to {
  opacity: 0;
}
.cool-lightbox-slide-change-enter-active,
.cool-lightbox-slide-change-leave-active {
  transition: opacity 0.27s;
}
.cool-lightbox-slide-change-enter,
.cool-lightbox-slide-change-leave-to {
  opacity: 0;
}
.cool-lightbox-loading-wrapper {
  top: 50%;
  left: 50%;
  position: absolute;
  transform: translate(-50%, -50%);
}
.cool-lightbox-loading-wrapper .cool-lightbox-loading {
  animation: cool-lightbox-rotate 1s linear infinite;
  background: transparent;
  border: 4px solid #888;
  border-bottom-color: #fff;
  border-radius: 50%;
  height: 50px;
  opacity: 0.7;
  padding: 0;
  width: 50px;
  z-index: 500;
}
@keyframes cool-lightbox-rotate {
100% {
    transform: rotate(360deg);
}
}
/*!******************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./assets/frontend/components/readfile/imagecoollightbox.vue?vue&type=style&index=0&id=3629b926&scoped=true&lang=css& ***!
  \******************************************************************************************************************************************************************************************************************************************************************************************************************/

.images-wrapper[data-v-3629b926] {
  display: flex;
}
.iconshow[data-v-3629b926] {
  display: block;
  /* background-color: red; */
}

/*!****************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./assets/frontend/components/table/action.vue?vue&type=style&index=0&id=40713361&lang=css& ***!
  \****************************************************************************************************************************************************************************************************************************************************************************************/

/* This is for documentation purposes and will not be needed in your application */
#create .v-speed-dial {
  position: absolute;
}
#create .v-btn--floating {
  position: relative;
}

/*!*********************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./assets/frontend/components/table/actionreglementrapidebl.vue?vue&type=style&index=0&id=4cf10fcd&scoped=true&lang=css& ***!
  \*********************************************************************************************************************************************************************************************************************************************************************************************************************/

/* التأثير البصري للاهتزاز داخل العناصر */
.shake-btn[data-v-4cf10fcd] {
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 16px;
  padding: 10px 20px;
  animation: blink-4cf10fcd 1s 1s ease-out infinite;
  /* الوميض المستمر */
}

/* حركة الاهتزاز داخل العناصر */
.shake-btn span[data-v-4cf10fcd],
.shake-btn v-icon[data-v-4cf10fcd] {
  animation: shake-4cf10fcd 1s ease-in-out infinite;
}

/* حركة الاهتزاز (عند تطبيق الاهتزاز على النص والأيقونة فقط) */
@keyframes shake-4cf10fcd {
0% {
    transform: translateX(0);
}
25% {
    transform: translateX(-3px);
}
50% {
    transform: translateX(3px);
}
75% {
    transform: translateX(-3px);
}
100% {
    transform: translateX(0);
}
}

/* حركة الوميض */
@keyframes blink-4cf10fcd {
0% {
    background-color: #e57373;
}
50% {
    background-color: #f44336;
}
100% {
    background-color: #e57373;
}
}

/* تخصيص الزر */
.v-btn[data-v-4cf10fcd] {
  background-color: #e57373;
  /* لون الزر */
  color: white;
  /* لون النص */
  border-radius: 8px;
  box-shadow: 0px 4px 6px rgba(0, 0, 0, 0.2);
  transition: background-color 0.3s;
}
.v-btn[data-v-4cf10fcd]:hover {
  background-color: #f44336;
  /* لون الزر عند المرور عليه */
}
.v-icon[data-v-4cf10fcd] {
  margin-right: 8px;
}

/* تخصيص الحجم */
.v-btn.large[data-v-4cf10fcd] {
  font-size: 18px;
  padding: 15px 30px;
}

/*!******************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./assets/frontend/components/table/actiontavoirbonvente.vue?vue&type=style&index=0&id=c7ed5f42&lang=css& ***!
  \******************************************************************************************************************************************************************************************************************************************************************************************************/

/* This is for documentation purposes and will not be needed in your application */
#create .v-speed-dial {
  position: absolute;
}
#create .v-btn--floating {
  position: relative;
}

/*!*************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./assets/frontend/components/table/run.vue?vue&type=style&index=0&id=ee517a20&scoped=true&lang=css& ***!
  \*************************************************************************************************************************************************************************************************************************************************************************************************/

/* التأثير البصري للاهتزاز داخل العناصر */
.shake-btn[data-v-ee517a20] {
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 16px;
  padding: 10px 20px;
  animation: blink-ee517a20 1s 1s ease-out infinite;
  /* الوميض المستمر */
}

/* حركة الاهتزاز داخل العناصر */
.shake-btn span[data-v-ee517a20],
.shake-btn v-icon[data-v-ee517a20] {
  animation: shake-ee517a20 1s ease-in-out infinite;
}

/* حركة الاهتزاز (عند تطبيق الاهتزاز على النص والأيقونة فقط) */
@keyframes shake-ee517a20 {
0% {
    transform: translateX(0);
}
25% {
    transform: translateX(-3px);
}
50% {
    transform: translateX(3px);
}
75% {
    transform: translateX(-3px);
}
100% {
    transform: translateX(0);
}
}

/* حركة الوميض */
@keyframes blink-ee517a20 {
0% {
    background-color: #e57373;
}
50% {
    background-color: #f44336;
}
100% {
    background-color: #e57373;
}
}

/* تخصيص الزر */
.v-chip[data-v-ee517a20] {
  background-color: #e57373;
  /* لون الزر */
  color: white;
  /* لون النص */
  border-radius: 8px;
  box-shadow: 0px 4px 6px rgba(0, 0, 0, 0.2);
  transition: background-color 0.3s;
}
.v-chip[data-v-ee517a20]:hover {
  background-color: #f44336;
  /* لون الزر عند المرور عليه */
}
.v-icon[data-v-ee517a20] {
  margin-right: 8px;
}

/* تخصيص الحجم */
.v-chip.large[data-v-ee517a20] {
  font-size: 18px;
  padding: 15px 30px;
}

/*!*************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./assets/frontend/components/table/settings-dialog.vue?vue&type=style&index=0&id=3511c0d2&scoped=true&lang=css& ***!
  \*************************************************************************************************************************************************************************************************************************************************************************************************************/

.drag-handle[data-v-3511c0d2] {
  cursor: move;
  margin-right: 12px;
}
.column-list[data-v-3511c0d2] {
  min-height: 300px;
  max-height: 400px;
  overflow-y: auto;
  border-radius: 4px;
  padding: 8px;
}
/* تم حذف الأنماط التي كانت هنا مثل .hidden-list و .draggable-item */
.awacolor[data-v-3511c0d2] {
  font-weight: 500;
}
.ml-8[data-v-3511c0d2] {
  margin-left: 32px !important;
}

/*!*************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./assets/frontend/components/table/settings-drawer.vue?vue&type=style&index=0&id=514e1ec0&scoped=true&lang=css& ***!
  \*************************************************************************************************************************************************************************************************************************************************************************************************************/

.drag-handle[data-v-514e1ec0] {
  cursor: move;
  margin-right: 12px;
}
.awacolor[data-v-514e1ec0] {
  font-weight: 500;
}

/*!******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-13.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js??clonedRuleSet-13.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-13.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./assets/frontend/components/theme/Footer.vue?vue&type=style&index=0&id=b2ab50ea&lang=scss&scoped=true& ***!
  \******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
.modern-footer[data-v-b2ab50ea] {
  border-top: 1px solid rgba(0, 0, 0, 0.06);
  background: rgba(255, 255, 255, 0.98) !important;
  backdrop-filter: blur(10px);
  font-size: 0.75rem;
}
.theme--dark .modern-footer[data-v-b2ab50ea] {
  background: rgba(30, 41, 59, 0.98) !important;
  border-top-color: rgba(255, 255, 255, 0.08);
}
.logo-image[data-v-b2ab50ea] {
  height: 24px;
  width: auto;
}
.footer-text[data-v-b2ab50ea] {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-weight: 500;
  color: rgba(0, 0, 0, 0.7);
}
.footer-text .v-icon[data-v-b2ab50ea] {
  color: var(--v-primary-base);
}
.theme--dark .footer-text[data-v-b2ab50ea] {
  color: rgba(255, 255, 255, 0.7);
}
.footer-copyright[data-v-b2ab50ea] {
  font-weight: 500;
  color: rgba(0, 0, 0, 0.6);
}
.theme--dark .footer-copyright[data-v-b2ab50ea] {
  color: rgba(255, 255, 255, 0.6);
}
.footer-version[data-v-b2ab50ea] {
  display: inline-flex;
  align-items: center;
  gap: 2px;
  font-weight: 600;
  color: rgba(0, 0, 0, 0.7);
  padding: 1px 6px;
  border-radius: 8px;
  background: rgba(var(--v-primary-base-rgb), 0.08);
}
.theme--dark .footer-version[data-v-b2ab50ea] {
  color: rgba(255, 255, 255, 0.8);
  background: rgba(var(--v-primary-base-rgb), 0.15);
}
.support-label[data-v-b2ab50ea] {
  display: inline-flex;
  align-items: center;
  gap: 3px;
  font-weight: 600;
  color: rgba(0, 0, 0, 0.65);
  padding: 1px 6px;
  border-radius: 8px;
  background: rgba(var(--v-info-base-rgb), 0.1);
  margin-right: 6px;
}
.theme--dark .support-label[data-v-b2ab50ea] {
  color: rgba(255, 255, 255, 0.75);
  background: rgba(var(--v-info-base-rgb), 0.15);
}
.footer-contact[data-v-b2ab50ea] {
  display: inline-flex;
  align-items: center;
  gap: 3px;
  text-decoration: none;
  padding: 2px 6px;
  border-radius: 12px;
  font-weight: 600;
  color: rgba(0, 0, 0, 0.8);
  transition: all 0.15s ease;
}
.theme--dark .footer-contact[data-v-b2ab50ea] {
  color: rgba(255, 255, 255, 0.8);
}
.footer-contact[data-v-b2ab50ea]:hover {
  background: rgba(var(--v-success-base-rgb), 0.1);
  color: var(--v-success-base);
}
.footer-divider[data-v-b2ab50ea] {
  height: 16px;
  opacity: 0.2;
}
@media (max-width: 1280px) {
.modern-footer[data-v-b2ab50ea] {
    font-size: 0.7rem;
}
.logo-image[data-v-b2ab50ea] {
    height: 20px;
}
}
@media (max-width: 960px) {
.footer-divider[data-v-b2ab50ea] {
    display: none !important;
}
.v-footer .container[data-v-b2ab50ea] {
    padding: 4px !important;
}
.v-row[data-v-b2ab50ea] {
    flex-wrap: wrap;
    justify-content: center !important;
    gap: 4px;
}
}
/*!************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-13.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js??clonedRuleSet-13.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-13.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./assets/frontend/components/theme/GlobalSearch.vue?vue&type=style&index=0&id=c03db1ca&lang=scss&scoped=true& ***!
  \************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
.global-search .hover-item[data-v-c03db1ca] {
  cursor: pointer;
  transition: background-color 0.2s ease;
}
.global-search .hover-item[data-v-c03db1ca]:hover {
  background-color: rgba(0, 0, 0, 0.04);
}
/*!**********************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./assets/frontend/components/theme/Notification.vue?vue&type=style&index=0&id=111700db&scoped=true&lang=css& ***!
  \**********************************************************************************************************************************************************************************************************************************************************************************************************/

.hover-item[data-v-111700db] {
  transition: background-color 0.2s;
}
.hover-item[data-v-111700db]:hover {
  background-color: rgba(0, 0, 0, 0.03);
  cursor: pointer;
}
.spin-icon[data-v-111700db] {
  animation: spin-111700db 1s linear infinite;
}
@keyframes spin-111700db {
from {
    transform: rotate(0deg);
}
to {
    transform: rotate(360deg);
}
}

/*!**************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./assets/frontend/components/theme/SimpleCalculator.vue?vue&type=style&index=0&id=04ba1c78&scoped=true&lang=css& ***!
  \**************************************************************************************************************************************************************************************************************************************************************************************************************/

.financial-calculator[data-v-04ba1c78] {
    max-width: 380px;
    margin: 0 auto;
    border-radius: 16px;
}
.expression-display[data-v-04ba1c78] {
    min-height: 32px;
    font-size: 1rem;
    color: var(--v-text-base);
    opacity: 0.7;
    text-align: right;
    font-family: 'Roboto Mono', monospace;
    word-break: break-all;
    line-height: 1.4;
}
.main-display[data-v-04ba1c78] {
    font-size: 2.5rem;
    font-weight: 700;
    color: var(--v-primary-base);
    text-align: right;
    font-family: 'Roboto Mono', monospace;
    min-height: 60px;
    display: flex;
    align-items: center;
    justify-content: flex-end;
    word-break: break-all;
}
.calc-btn[data-v-04ba1c78] {
    height: 62px !important;
    font-size: 1.5rem !important;
    font-weight: 600 !important;
    border-radius: 12px !important;
    transition: box-shadow 0.2s ease !important;
    text-transform: none !important;
    letter-spacing: 0 !important;
}

/* Number buttons - Light mode */
.number-btn[data-v-04ba1c78] {
    background-color: #f5f5f57f !important;
    color: #424242 !important;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1) !important;
}
.number-btn[data-v-04ba1c78]:hover {
    box-shadow: 0 4px 16px rgba(0, 0, 0, 0.2) !important;
}

/* Dark mode support for number buttons */
.theme--dark .number-btn[data-v-04ba1c78] {
    background-color: #424242 !important;
    color: #ffffffac !important;
}

/* Operator buttons */
.operator-btn[data-v-04ba1c78] {
    background-color: var(--v-error-base) !important;
    color: white !important;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15) !important;
}
.operator-btn[data-v-04ba1c78]:hover {
    box-shadow: 0 4px 16px rgba(0, 0, 0, 0.25) !important;
}

/* Function buttons */
.function-btn[data-v-04ba1c78] {
    background-color: var(--v-info-base) !important;
    color: white !important;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15) !important;
}
.function-btn[data-v-04ba1c78]:hover {
    box-shadow: 0 4px 16px rgba(0, 0, 0, 0.25) !important;
}

/* Clear button */
.clear-btn[data-v-04ba1c78] {
    background-color: var(--v-warning-base) !important;
    color: white !important;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15) !important;
}
.clear-btn[data-v-04ba1c78]:hover {
    box-shadow: 0 4px 16px rgba(0, 0, 0, 0.25) !important;
}

/* Equals button */
.equals-btn[data-v-04ba1c78] {
    background-color: var(--v-success-base) !important;
    color: white !important;
    font-size: 1.8rem !important;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15) !important;
}
.equals-btn[data-v-04ba1c78]:hover {
    box-shadow: 0 4px 16px rgba(0, 0, 0, 0.25) !important;
}

/* Dark mode adjustments */
.theme--dark .financial-calculator[data-v-04ba1c78] {
    background-color: var(--v-background-darken1);
}
.theme--dark .expression-display[data-v-04ba1c78] {
    color: rgba(255, 255, 255, 0.7);
}
.theme--dark .main-display[data-v-04ba1c78] {
    color: var(--v-primary-lighten2);
}

/* ========== BUTTON BASE STYLE ========== */
.calc-btn[data-v-04ba1c78] {
    height: 62px !important;
    font-size: 1.5rem !important;
    font-weight: 600 !important;
    border-radius: 12px !important;
    transition: box-shadow 0.2s ease !important;
    text-transform: none !important;
    letter-spacing: 0 !important;
}

/* ========== NUMBER BUTTONS ========== */
/* Light mode */
.number-btn[data-v-04ba1c78] {
    background-color: var(--v-primary-lighten5) !important;
    color: var(--v-primary-darken3) !important;
    box-shadow: 0 2px 6px rgba(0, 0, 0, 0.08) !important;
}
.number-btn[data-v-04ba1c78]:hover {
    background-color: var(--v-primary-lighten4) !important;
    box-shadow: 0 3px 12px rgba(0, 0, 0, 0.15) !important;
}

/* Dark mode */
.theme--dark .number-btn[data-v-04ba1c78] {
    background-color: var(--v-primary-darken4) !important;
    color: var(--v-primary-lighten4) !important;
}

/* ========== OPERATOR BUTTONS ========== */
.operator-btn[data-v-04ba1c78] {
    background-color: var(--v-error-base) !important;
    color: white !important;
}
.operator-btn[data-v-04ba1c78]:hover {
    background-color: var(--v-error-darken1) !important;
}

/* ========== FUNCTION BUTTONS (%, Delete, +/-) ========== */
.function-btn[data-v-04ba1c78] {
    background-color: var(--v-info-base) !important;
    color: white !important;
}
.function-btn[data-v-04ba1c78]:hover {
    background-color: var(--v-info-darken1) !important;
}

/* ========== CLEAR BUTTON ========== */
.clear-btn[data-v-04ba1c78] {
    background-color: var(--v-warning-base) !important;
    color: white !important;
}
.clear-btn[data-v-04ba1c78]:hover {
    background-color: var(--v-warning-darken1) !important;
}

/* ========== EQUAL BUTTON ========== */
.equals-btn[data-v-04ba1c78] {
    background-color: var(--v-success-base) !important;
    color: white !important;
    font-size: 1.8rem !important;
}
.equals-btn[data-v-04ba1c78]:hover {
    background-color: var(--v-success-darken1) !important;
}

/* ========== DISPLAY COLORS ========== */
.expression-display[data-v-04ba1c78] {
    color: var(--v-primary-darken3) !important;
    opacity: 0.7;
}
.main-display[data-v-04ba1c78] {
    color: var(--v-primary-base) !important;
}

/* Dark mode adjustments */
.theme--dark .expression-display[data-v-04ba1c78] {
    color: var(--v-primary-lighten3) !important;
    opacity: 0.7;
}
.theme--dark .main-display[data-v-04ba1c78] {
    color: var(--v-primary-lighten1) !important;
}

/* Welcome card styling */
.welcome-card[data-v-04ba1c78] {
    cursor: pointer;
    transition: all 0.3s ease;
    border: 2px dashed var(--v-primary-base) !important;
}
.welcome-card[data-v-04ba1c78]:hover {
    border-style: solid !important;
    box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15) !important;
    transform: translateY(-2px);
}
.theme--dark .welcome-card[data-v-04ba1c78] {
    border-color: var(--v-primary-lighten1) !important;
}

/*!*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-13.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js??clonedRuleSet-13.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-13.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./assets/frontend/components/theme/Toolbar.vue?vue&type=style&index=0&id=5c016ebb&lang=scss&scoped=true& ***!
  \*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
.v-app-bar[data-v-5c016ebb] {
  transition: background-color 0.4s ease-out, box-shadow 0.4s ease-out !important;
}
.app-bar-scrolled[data-v-5c016ebb] {
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08) !important;
}
.v-btn--icon[data-v-5c016ebb] {
  border-radius: 50%;
  transition: background-color 0.2s ease-in-out;
}
.v-btn--icon[data-v-5c016ebb]:hover {
  background-color: rgba(0, 0, 0, 0.08);
}
.v-toolbar__items .v-btn[data-v-5c016ebb] {
  margin: 0 4px;
}
.v-avatar[data-v-5c016ebb] {
  border: 2px solid var(--v-primary-base);
}
/*!****************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./assets/frontend/components/theme/agenda.vue?vue&type=style&index=0&id=7970415c&scoped=true&lang=css& ***!
  \****************************************************************************************************************************************************************************************************************************************************************************************************/

.v-calendar[data-v-7970415c] {

  padding: 16px;
}
.v-calendar-day--selected[data-v-7970415c] {
  background-color: #ffbb33 !important;
}

/*!********************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./assets/frontend/components/theme/btnPalette.vue?vue&type=style&index=0&id=1379a84f&lang=css&scoped=true& ***!
  \********************************************************************************************************************************************************************************************************************************************************************************************************/

.setting-fab[data-v-1379a84f] {
  top: 50% !important;
  right: 0;
  border-radius: 0;
}


/*!********************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./assets/frontend/components/theme/calculator.vue?vue&type=style&index=0&id=a4c9ed5c&scoped=true&lang=css& ***!
  \********************************************************************************************************************************************************************************************************************************************************************************************************/

.calculator[data-v-a4c9ed5c] {
	padding: 30px;
	max-width: 400px;
	width: 100%;
}
.zero[data-v-a4c9ed5c] {
	grid-column: span 2;
}
.display[data-v-a4c9ed5c] {
	margin-bottom: 15px;
}
.answer[data-v-a4c9ed5c] {
	font-size: 2.5rem;
	margin-bottom: 15px;
}
.calculator-btn[data-v-a4c9ed5c] {
	margin-top: 10px;
}
.error[data-v-a4c9ed5c] {
	color: red;
}
.v-btn[data-v-a4c9ed5c] {
	margin-bottom: 8px;
}
.v-card[data-v-a4c9ed5c] {
	max-width: 500px;
	width: 100%;
	border-radius: 12px;
}
.v-btn[data-v-a4c9ed5c] {
	font-size: 16px;
	font-weight: 600;
}
.v-text-field[data-v-a4c9ed5c] {
	font-size: 18px;
}
.v-alert[data-v-a4c9ed5c] {
	font-size: 16px;
}
.pa-6[data-v-a4c9ed5c] {
	padding: 32px;
}
.mb-1[data-v-a4c9ed5c] {
	margin-bottom: 7px;
}
.font-weight-bold[data-v-a4c9ed5c] {
	font-weight: 700;
}
.operator[data-v-a4c9ed5c] {
	font-size: 2rem;
}

/* التأثير البصري للاهتزاز داخل العناصر */
.shake-btn[data-v-a4c9ed5c] {
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: 16px;
	padding: 10px 20px;
	animation: blink 1s 1s ease-out infinite;
	/* الوميض المستمر */
}

/* حركة الاهتزاز داخل العناصر */
.shake-btn span[data-v-a4c9ed5c],
.shake-btn v-icon[data-v-a4c9ed5c] {
	animation: shake-a4c9ed5c 1s ease-in-out infinite;
}

/* حركة الاهتزاز (عند تطبيق الاهتزاز على النص والأيقونة فقط) */
@keyframes shake-a4c9ed5c {
0% {
		transform: translateX(0);
}
25% {
		transform: translateX(-3px);
}
50% {
		transform: translateX(3px);
}
75% {
		transform: translateX(-3px);
}
100% {
		transform: translateX(0);
}
}

/*!*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-13.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js??clonedRuleSet-13.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-13.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./assets/frontend/components/theme/clock.vue?vue&type=style&index=0&id=2fe6f024&scoped=true&lang=scss& (1) ***!
  \*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
.retro-clock-wrapper[data-v-2fe6f024] {
  display: flex;
  justify-content: center;
  align-items: center;
  padding: 2rem 1rem;
  width: 100%;
  min-height: 400px;
}
.retro-clock-container[data-v-2fe6f024] {
  background: linear-gradient(145deg, #ffffff, #f5f5f5);
  border-radius: 24px;
  padding: 32px 36px 28px;
  box-shadow: 0 15px 40px rgba(0, 0, 0, 0.12), 0 5px 15px rgba(0, 0, 0, 0.08), inset 0 1px 0 rgba(255, 255, 255, 0.9);
  width: 680px;
  max-width: 100%;
  position: relative;
}

/* Brand Header */
.brand-header[data-v-2fe6f024] {
  text-align: center;
  margin-bottom: 24px;
  padding-bottom: 16px;
  border-bottom: 2px solid rgba(0, 0, 0, 0.08);
}
.brand-logo[data-v-2fe6f024] {
  font-family: "Roboto", sans-serif;
  font-size: 32px;
  font-weight: 700;
  letter-spacing: 8px;
  color: #1a1a1a;
  text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.1);
}
.brand-subtitle[data-v-2fe6f024] {
  font-family: "Roboto", sans-serif;
  font-size: 11px;
  font-weight: 500;
  letter-spacing: 3px;
  color: #666;
  margin-top: 4px;
}

/* Control Buttons */
.control-buttons[data-v-2fe6f024] {
  display: flex;
  justify-content: space-around;
  margin-bottom: 20px;
  gap: 16px;
}
.control-btn[data-v-2fe6f024] {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
  padding: 12px 20px;
  background: linear-gradient(145deg, #e8e8e8, #ffffff);
  border-radius: 12px;
  box-shadow: 3px 3px 8px rgba(0, 0, 0, 0.12), -2px -2px 6px rgba(255, 255, 255, 0.8), inset 1px 1px 2px rgba(0, 0, 0, 0.05);
  cursor: pointer;
  transition: all 0.2s;
  flex: 1;
}
.control-btn[data-v-2fe6f024]:hover {
  transform: translateY(-2px);
  box-shadow: 4px 4px 12px rgba(0, 0, 0, 0.15), -2px -2px 6px rgba(255, 255, 255, 0.9);
}
.control-btn[data-v-2fe6f024]:active {
  transform: translateY(0);
  box-shadow: inset 3px 3px 6px rgba(0, 0, 0, 0.15);
}
.btn-icon[data-v-2fe6f024] {
  font-size: 20px;
  line-height: 1;
}
.btn-label[data-v-2fe6f024] {
  font-family: "Roboto", sans-serif;
  font-size: 9px;
  font-weight: 600;
  letter-spacing: 1px;
  color: #555;
}

/* Stats Panel */
.stats-panel[data-v-2fe6f024] {
  display: flex;
  justify-content: center;
  margin-bottom: 20px;
  padding: 16px;
  background: linear-gradient(135deg, #f0f4f8, #e1e8ed);
  border-radius: 12px;
  box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.08);
}
.stat-item[data-v-2fe6f024] {
  text-align: center;
}
.stat-label[data-v-2fe6f024] {
  font-family: "Roboto", sans-serif;
  font-size: 9px;
  font-weight: 500;
  letter-spacing: 1px;
  color: #666;
  margin-bottom: 4px;
}
.stat-value[data-v-2fe6f024] {
  font-family: "Roboto Condensed", sans-serif;
  font-size: 20px;
  font-weight: 700;
  color: #1a1a1a;
}

/* Main Display Grid */
.display-grid[data-v-2fe6f024] {
  display: grid;
  grid-template-columns: 1fr 1fr 1.4fr;
  gap: 20px;
  margin-bottom: 20px;
}

/* Flip Sections (Day & Date) */
.flip-section[data-v-2fe6f024] {
  position: relative;
}
.section-label[data-v-2fe6f024] {
  font-family: "Roboto", sans-serif;
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 2px;
  color: #777;
  text-align: center;
  margin-bottom: 8px;
}
.flip-card[data-v-2fe6f024] {
  background: #ffffff;
  border-radius: 10px;
  box-shadow: inset 0 3px 6px rgba(0, 0, 0, 0.15), inset 0 -2px 4px rgba(255, 255, 255, 0.6), 0 2px 4px rgba(0, 0, 0, 0.06);
  overflow: hidden;
  height: 130px;
  position: relative;
}
.flip-card-inner[data-v-2fe6f024] {
  width: 100%;
  height: 100%;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  position: relative;
}
.card-main[data-v-2fe6f024] {
  font-family: "Roboto Condensed", sans-serif;
  font-size: 56px;
  font-weight: 700;
  line-height: 1;
  text-align: center;
}

/* Clock Section */
.clock-section[data-v-2fe6f024] {
  position: relative;
  background: #ffffff;
  border-radius: 14px;
  box-shadow: inset 0 3px 6px rgba(0, 0, 0, 0.1), 0 2px 4px rgba(0, 0, 0, 0.06);
  height: 180px;
  display: flex;
  justify-content: center;
  align-items: center;
}

/* Clock Markers (Diamond Shapes) */
.clock-markers[data-v-2fe6f024] {
  position: absolute;
  width: 100%;
  height: 100%;
}
.marker-diamond[data-v-2fe6f024] {
  position: absolute;
  width: 5px;
  height: 5px;
  background: #2a2a2a;
  top: 50%;
  left: 50%;
  margin-left: -2.5px;
  margin-top: -2.5px;
  transform-origin: 50% 50%;
  transform: rotate(45deg);
}

/* Clock Hands */
.clock-hand[data-v-2fe6f024] {
  position: absolute;
  bottom: 50%;
  left: 50%;
  transform-origin: bottom center;
  border-radius: 3px 3px 0 0;
}
.with-transition[data-v-2fe6f024] {
  transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}
.no-transition[data-v-2fe6f024] {
  transition: none !important;
}
.hour-hand[data-v-2fe6f024] {
  width: 5px;
  height: 42px;
  background: #1a1a1a;
  margin-left: -2.5px;
  z-index: 3;
}
.minute-hand[data-v-2fe6f024] {
  width: 4px;
  height: 60px;
  background: #2a2a2a;
  margin-left: -2px;
  z-index: 4;
}
.second-hand[data-v-2fe6f024] {
  width: 2px;
  height: 68px;
  background: #e53935;
  margin-left: -1px;
  z-index: 5;
}
.second-hand[data-v-2fe6f024]::after {
  content: "";
  position: absolute;
  bottom: -16px;
  left: 50%;
  transform: translateX(-50%);
  width: 2px;
  height: 16px;
  background: #e53935;
}
.center-cap[data-v-2fe6f024] {
  position: absolute;
  width: 12px;
  height: 12px;
  background: #1a1a1a;
  border: 3px solid #ffffff;
  border-radius: 50%;
  z-index: 6;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
}
.quartz-label[data-v-2fe6f024] {
  position: absolute;
  bottom: 32px;
  font-family: "Roboto", sans-serif;
  font-size: 8px;
  font-weight: 500;
  letter-spacing: 1.5px;
  color: #999;
}

/* Session Time Bar */
.session-bar[data-v-2fe6f024] {
  background: linear-gradient(135deg, #f8f9fa, #e9ecef);
  border-radius: 12px;
  padding: 14px 20px;
  display: flex;
  align-items: center;
  gap: 14px;
  box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.1), 0 2px 4px rgba(255, 255, 255, 0.6);
  border: 1px solid rgba(0, 0, 0, 0.06);
}
.session-icon[data-v-2fe6f024] {
  font-size: 22px;
  opacity: 0.8;
}
.session-info[data-v-2fe6f024] {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.session-user[data-v-2fe6f024] {
  font-family: "Roboto", sans-serif;
  font-size: 13px;
  font-weight: 700;
  color: #2c3e50;
  letter-spacing: 0.5px;
}
.session-text[data-v-2fe6f024] {
  font-family: "Roboto", sans-serif;
  font-size: 9px;
  font-weight: 600;
  letter-spacing: 1.5px;
  color: #777;
}
.session-time[data-v-2fe6f024] {
  font-family: "Roboto Condensed", sans-serif;
  font-size: 22px;
  font-weight: 700;
  color: #1a1a1a;
  letter-spacing: 1.5px;
  background: rgba(255, 255, 255, 0.7);
  padding: 6px 16px;
  border-radius: 8px;
  box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.08);
}

/* Alarm Indicator */
.alarm-indicator[data-v-2fe6f024] {
  margin-top: 12px;
  padding: 10px 16px;
  background: linear-gradient(135deg, #fff3cd, #ffeaa7);
  border-radius: 10px;
  display: flex;
  align-items: center;
  gap: 10px;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}
.alarm-icon[data-v-2fe6f024] {
  font-size: 16px;
}
.alarm-time[data-v-2fe6f024] {
  font-family: "Roboto Condensed", sans-serif;
  font-size: 16px;
  font-weight: 700;
  color: #856404;
  flex: 1;
}
.alarm-close[data-v-2fe6f024] {
  cursor: pointer;
  font-size: 18px;
  color: #856404;
  opacity: 0.7;
}
.alarm-close[data-v-2fe6f024]:hover {
  opacity: 1;
}

/* Alarm Dialog */
.alarm-overlay[data-v-2fe6f024] {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: rgba(0, 0, 0, 0.5);
  display: flex;
  justify-content: center;
  align-items: center;
  z-index: 1000;
}
.alarm-dialog[data-v-2fe6f024] {
  background: #ffffff;
  border-radius: 16px;
  padding: 28px 32px;
  box-shadow: 0 10px 40px rgba(0, 0, 0, 0.3);
  min-width: 300px;
}
.alarm-dialog h3[data-v-2fe6f024] {
  font-family: "Roboto", sans-serif;
  font-size: 20px;
  font-weight: 700;
  color: #1a1a1a;
  margin: 0 0 20px 0;
  text-align: center;
}
.alarm-inputs[data-v-2fe6f024] {
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 12px;
  margin-bottom: 24px;
}
.alarm-inputs span[data-v-2fe6f024] {
  font-size: 24px;
  font-weight: 700;
  color: #333;
}
.alarm-input[data-v-2fe6f024] {
  width: 70px;
  padding: 12px;
  font-family: "Roboto Condensed", sans-serif;
  font-size: 24px;
  font-weight: 700;
  text-align: center;
  border: 2px solid #ddd;
  border-radius: 8px;
  outline: none;
}
.alarm-input[data-v-2fe6f024]:focus {
  border-color: #2962FF;
}
.alarm-actions[data-v-2fe6f024] {
  display: flex;
  gap: 12px;
}
.alarm-btn[data-v-2fe6f024] {
  flex: 1;
  padding: 12px 24px;
  font-family: "Roboto", sans-serif;
  font-size: 14px;
  font-weight: 600;
  border: none;
  border-radius: 8px;
  cursor: pointer;
  transition: all 0.2s;
  background: #e9ecef;
  color: #333;
}
.alarm-btn.primary[data-v-2fe6f024] {
  background: linear-gradient(135deg, #2962FF, #1E88E5);
  color: #ffffff;
}
.alarm-btn[data-v-2fe6f024]:hover {
  transform: translateY(-2px);
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
}
.alarm-btn[data-v-2fe6f024]:active {
  transform: translateY(0);
}

/* Dark Mode Support */
.theme--dark .retro-clock-container[data-v-2fe6f024] {
  background: linear-gradient(145deg, #2a2e33, #1e2227);
  box-shadow: 0 15px 40px rgba(0, 0, 0, 0.5), 0 5px 15px rgba(0, 0, 0, 0.4);
}
.theme--dark .brand-logo[data-v-2fe6f024] {
  color: #e0e0e0;
}
.theme--dark .brand-subtitle[data-v-2fe6f024] {
  color: #999;
}
.theme--dark .control-btn[data-v-2fe6f024] {
  background: linear-gradient(145deg, #3a3e43, #2a2e33);
}
.theme--dark .btn-label[data-v-2fe6f024] {
  color: #aaa;
}
.theme--dark .stats-panel[data-v-2fe6f024] {
  background: linear-gradient(135deg, #1a1e23, #252a30);
}
.theme--dark .stat-label[data-v-2fe6f024] {
  color: #999;
}
.theme--dark .stat-value[data-v-2fe6f024] {
  color: #e0e0e0;
}
.theme--dark .section-label[data-v-2fe6f024] {
  color: #999;
}
.theme--dark .flip-card[data-v-2fe6f024],
.theme--dark .clock-section[data-v-2fe6f024] {
  background: #1a1e23;
  box-shadow: inset 0 3px 6px rgba(0, 0, 0, 0.4), 0 2px 4px rgba(255, 255, 255, 0.02);
}
.theme--dark .card-top[data-v-2fe6f024],
.theme--dark .card-bottom[data-v-2fe6f024] {
  color: #e0e0e0;
}
.theme--dark .marker-diamond[data-v-2fe6f024] {
  background: #d0d0d0;
}
.theme--dark .hour-hand[data-v-2fe6f024],
.theme--dark .minute-hand[data-v-2fe6f024] {
  background: #e0e0e0;
}
.theme--dark .center-cap[data-v-2fe6f024] {
  background: #e0e0e0;
  border-color: #1a1e23;
}
.theme--dark .quartz-label[data-v-2fe6f024] {
  color: #777;
}
.theme--dark .session-bar[data-v-2fe6f024] {
  background: linear-gradient(135deg, #2a2e33, #1e2227);
}
.theme--dark .session-text[data-v-2fe6f024] {
  color: #aaa;
}
.theme--dark .session-time[data-v-2fe6f024] {
  color: #e0e0e0;
  background: rgba(0, 0, 0, 0.4);
}
.theme--dark .alarm-dialog[data-v-2fe6f024] {
  background: #2a2e33;
}
.theme--dark .alarm-dialog h3[data-v-2fe6f024] {
  color: #e0e0e0;
}
.theme--dark .alarm-input[data-v-2fe6f024] {
  background: #1a1e23;
  border-color: #3a3e43;
  color: #e0e0e0;
}
.theme--dark .alarm-btn[data-v-2fe6f024] {
  background: #3a3e43;
  color: #e0e0e0;
}

/* Responsive */
@media (max-width: 768px) {
.retro-clock-container[data-v-2fe6f024] {
    width: 100%;
    padding: 24px 20px;
}
.display-grid[data-v-2fe6f024] {
    grid-template-columns: 1fr 1fr;
    gap: 14px;
}
.clock-section[data-v-2fe6f024] {
    grid-column: 1/-1;
    height: 200px;
}
.control-buttons[data-v-2fe6f024] {
    flex-wrap: wrap;
}
.control-btn[data-v-2fe6f024] {
    flex: 1 1 30%;
}
}
/*!****************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./assets/frontend/components/theme/drawer/controllers.vue?vue&type=style&index=0&id=99b111ee&scoped=true&lang=css& ***!
  \****************************************************************************************************************************************************************************************************************************************************************************************************************/

.v-list-item-title[data-v-99b111ee] {
  font-size: 15px;
}

/*!***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-13.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js??clonedRuleSet-13.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-13.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./assets/frontend/components/theme/drawer/left.vue?vue&type=style&index=0&id=62398e76&lang=scss&scoped=true& ***!
  \***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
.elegant-drawer[data-v-62398e76] .v-navigation-drawer__content {
  overflow-y: auto;
  overflow-x: hidden;
  /* Custom Scrollbar */
}
.elegant-drawer[data-v-62398e76] .v-navigation-drawer__content::-webkit-scrollbar {
  width: 6px;
}
.elegant-drawer[data-v-62398e76] .v-navigation-drawer__content::-webkit-scrollbar-track {
  background: #f1f1f1;
}
.elegant-drawer[data-v-62398e76] .v-navigation-drawer__content::-webkit-scrollbar-thumb {
  background: #888;
  border-radius: 3px;
}
.elegant-drawer[data-v-62398e76] .v-navigation-drawer__content::-webkit-scrollbar-thumb:hover {
  background: #555;
}

/* Header with Gradient */
.drawer-header[data-v-62398e76] {
  background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
  padding: 24px 16px;
  margin-bottom: 8px;
  box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
}
.drawer-header .user-profile-item[data-v-62398e76] {
  cursor: pointer;
  transition: transform 0.2s ease;
}
.drawer-header .user-profile-item[data-v-62398e76]:hover {
  transform: translateY(-2px);
}
.drawer-header .user-profile-item .v-list-item__avatar[data-v-62398e76] {
  border: 3px solid rgba(255, 255, 255, 0.3);
}

/* Navigation Items */
.nav-item[data-v-62398e76] {
  border-radius: 8px;
  margin: 2px 8px;
  transition: all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1);
}
.nav-item[data-v-62398e76]:hover {
  background-color: rgba(0, 0, 0, 0.04);
  transform: translateX(4px);
}
.nav-item.v-list-item--active[data-v-62398e76] {
  background: linear-gradient(90deg, rgba(102, 126, 234, 0.1) 0%, rgba(118, 75, 162, 0.1) 100%);
  border-left: 4px solid #667eea;
}
.nav-item.v-list-item--active[data-v-62398e76]::before {
  opacity: 0;
}

/* Menu Groups */
.menu-group[data-v-62398e76] .v-list-group__header {
  border-radius: 8px;
  margin: 2px 8px;
  transition: all 0.2s ease;
}
.menu-group[data-v-62398e76] .v-list-group__header:hover {
  background-color: rgba(0, 0, 0, 0.03);
}
.menu-group[data-v-62398e76] .v-list-group__header .v-list-item__icon {
  margin-right: 16px !important;
}
.menu-group[data-v-62398e76] .v-list-group__items {
  background-color: rgba(0, 0, 0, 0.02);
}

/* Sub Navigation Items */
.sub-nav-item[data-v-62398e76] {
  border-radius: 8px;
  margin: 2px 8px;
  min-height: 36px !important;
  transition: all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1);
}
.sub-nav-item[data-v-62398e76]:hover {
  background-color: rgba(0, 0, 0, 0.05);
  transform: translateX(4px);
}
.sub-nav-item:hover .v-icon[data-v-62398e76] {
  color: #667eea !important;
}
.sub-nav-item.v-list-item--active[data-v-62398e76] {
  background: linear-gradient(90deg, rgba(102, 126, 234, 0.15) 0%, rgba(118, 75, 162, 0.15) 100%);
  border-left: 3px solid #667eea;
}
.sub-nav-item.v-list-item--active .v-list-item__title[data-v-62398e76] {
  color: #667eea;
  font-weight: 600;
}
.sub-nav-item.v-list-item--active[data-v-62398e76]::before {
  opacity: 0;
}

/* Dividers */
.v-divider[data-v-62398e76] {
  border-color: rgba(0, 0, 0, 0.08);
}

/* Subheaders */
.v-subheader[data-v-62398e76] {
  font-size: 11px;
  letter-spacing: 1px;
  margin-top: 8px;
}

/* Dark Mode Support */
.theme--dark .drawer-header[data-v-62398e76] {
  background: linear-gradient(135deg, #4a5568 0%, #2d3748 100%);
}
.theme--dark .nav-item[data-v-62398e76]:hover {
  background-color: rgba(255, 255, 255, 0.05);
}
.theme--dark .nav-item.v-list-item--active[data-v-62398e76] {
  background: linear-gradient(90deg, rgba(102, 126, 234, 0.2) 0%, rgba(118, 75, 162, 0.2) 100%);
}
.theme--dark .sub-nav-item[data-v-62398e76]:hover {
  background-color: rgba(255, 255, 255, 0.08);
}
.theme--dark .sub-nav-item.v-list-item--active[data-v-62398e76] {
  background: linear-gradient(90deg, rgba(102, 126, 234, 0.25) 0%, rgba(118, 75, 162, 0.25) 100%);
}
.theme--dark .menu-group[data-v-62398e76] .v-list-group__header:hover {
  background-color: rgba(255, 255, 255, 0.04);
}
.theme--dark .menu-group[data-v-62398e76] .v-list-group__items {
  background-color: rgba(255, 255, 255, 0.02);
}
.theme--dark .v-divider[data-v-62398e76] {
  border-color: rgba(255, 255, 255, 0.12);
}
/*!**********************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./assets/frontend/components/theme/drawer/right.vue?vue&type=style&index=0&id=4ac8f9ce&lang=css& ***!
  \**********************************************************************************************************************************************************************************************************************************************************************************************/

div.v-list-group__items div.v-input__slot .mdi-eye {
  color: #0277bd !important ;
}
div.v-navigation-drawer__content div.v-input__slot .mdi-eye-off {
  color: #757575 !important ;
}

/*!***************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./assets/frontend/components/theme/drawer/toggledark.vue?vue&type=style&index=0&id=231a0b88&scoped=true&lang=css& ***!
  \***************************************************************************************************************************************************************************************************************************************************************************************************************/

.theme-toggle-item[data-v-231a0b88] {
  cursor: pointer;
  transition: background 0.25s;

  /* حجم صغير */
}
.theme-toggle-item[data-v-231a0b88]:hover {
  background: rgba(0, 0, 0, 0.06);
}
.switch[data-v-231a0b88] {
  pointer-events: none;
  /* حتى لا يمنع الضغط على العنصر */
}

/*!**************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./assets/frontend/widgets/Achats/entrepotBonsachats.vue?vue&type=style&index=0&id=7284166e&lang=css& ***!
  \**************************************************************************************************************************************************************************************************************************************************************************************************/

.v-calendar-daily__scroll-area {
  display: none;
}

/*!*********************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./assets/frontend/widgets/Transactions/Accueil.vue?vue&type=style&index=0&id=e9ebea8e&scoped=true&lang=css& ***!
  \*********************************************************************************************************************************************************************************************************************************************************************************************************/

/* KPI Cards hover effect */
.kpi-card[data-v-e9ebea8e] {
  transition: transform 0.2s ease, box-shadow 0.2s ease;
}
.kpi-card[data-v-e9ebea8e]:hover {
  transform: translateY(-4px);
  box-shadow: 0 6px 12px rgba(0, 0, 0, 0.15) !important;
}

/*!********************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./assets/frontend/widgets/Transactions/YearlyCalendarView.vue?vue&type=style&index=0&id=63dcc390&scoped=true&lang=css& ***!
  \********************************************************************************************************************************************************************************************************************************************************************************************************************/

.yearly-calendar-view[data-v-63dcc390] {
    margin: 16px 0;
}

/*!***********************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./assets/frontend/widgets/Transactions/YearlyCalendarViewBon.vue?vue&type=style&index=0&id=ec681fce&scoped=true&lang=css& ***!
  \***********************************************************************************************************************************************************************************************************************************************************************************************************************/

.yearly-calendar-view-bon[data-v-ec681fce] {
    margin: 16px 0;
}

/*!***************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./assets/frontend/widgets/Transactions/analyseEcarts.vue?vue&type=style&index=0&id=2320a546&scoped=true&lang=css& ***!
  \***************************************************************************************************************************************************************************************************************************************************************************************************************/

.v-data-table[data-v-2320a546] {
  font-size: 0.9rem;
}

/*!********************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./assets/frontend/widgets/Transactions/analyseFinancialBL.vue?vue&type=style&index=0&id=30ae5bea&scoped=true&lang=css& ***!
  \********************************************************************************************************************************************************************************************************************************************************************************************************************/

.v-data-table[data-v-30ae5bea] {
  font-size: 0.9em;
}
li small[data-v-30ae5bea] {
  color: #555;
}
[dir="rtl"] .v-list-item__subtitle ul[data-v-30ae5bea] {
  padding-left: 0 !important;
  padding-right: 20px !important;
}
.v-data-table>.v-data-table__wrapper>table>tbody>tr.v-data-table__expanded__content[data-v-30ae5bea] {
  box-shadow: none;
}

/*!*****************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./assets/frontend/widgets/Transactions/transactionBons.vue?vue&type=style&index=0&id=5e1e72f5&lang=css& ***!
  \*****************************************************************************************************************************************************************************************************************************************************************************************************/

.v-calendar-daily__scroll-area {
  display: none;
}

/*!********************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./assets/frontend/widgets/Transactions/transactionFacture.vue?vue&type=style&index=0&id=5df10da9&scoped=true&lang=css& ***!
  \********************************************************************************************************************************************************************************************************************************************************************************************************************/

.v-calendar-daily__scroll-area[data-v-5df10da9] {
  display: none;
}

/* التأثير البصري للاهتزاز داخل العناصر */
.shake-btn[data-v-5df10da9] {
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 16px;
  padding: 10px 20px;
  animation: blink-5df10da9 1s 1s ease-out infinite;
  /* الوميض المستمر */
}

/* حركة الاهتزاز داخل العناصر */
.shake-btn span[data-v-5df10da9],
.shake-btn v-icon[data-v-5df10da9] {
  animation: shake-5df10da9 1s ease-in-out infinite;
}

/* حركة الاهتزاز (عند تطبيق الاهتزاز على النص والأيقونة فقط) */
@keyframes shake-5df10da9 {
0% {
    transform: translateX(0);
}
25% {
    transform: translateX(-3px);
}
50% {
    transform: translateX(3px);
}
75% {
    transform: translateX(-3px);
}
100% {
    transform: translateX(0);
}
}

/* حركة الوميض */
@keyframes blink-5df10da9 {
0% {
    background-color: #e57373;
}
50% {
    background-color: #f44336;
}
100% {
    background-color: #e57373;
}
}

/*!**************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./assets/frontend/widgets/Ventes/entrepotBonsventes.vue?vue&type=style&index=0&id=3d74b629&lang=css& ***!
  \**************************************************************************************************************************************************************************************************************************************************************************************************/

.v-calendar-daily__scroll-area {
  display: none;
}

/*!************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./assets/frontend/widgets/Produit/inventairePhone.vue?vue&type=style&index=0&id=3209bec4&lang=css& ***!
  \************************************************************************************************************************************************************************************************************************************************************************************************/

.v-sheet--offset {
  top: -24px;
  position: relative;
}

/*!******************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./assets/frontend/widgets/Produit/listStock.vue?vue&type=style&index=0&id=6b9c4ee3&lang=css& ***!
  \******************************************************************************************************************************************************************************************************************************************************************************************/

.v-sheet--offset {
  top: -24px;
  position: relative;
}

/*!********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-13.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js??clonedRuleSet-13.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-13.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./assets/frontend/components/theme/hiba.vue?vue&type=style&index=0&id=283d3650&lang=scss&scoped=true& (1) ***!
  \********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
.loading-container[data-v-283d3650] {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  transition: background 0.8s cubic-bezier(0.25, 0.8, 0.25, 1);
  /* Dark Theme (Cyber/Neon) */
  /* Light Theme (Clean/Corporate) */
}
.loading-container.theme-dark[data-v-283d3650] {
  background: #09090b;
  --primary: #6366f1;
  /* Indigo */
  --secondary: #ec4899;
  /* Pink */
  --accent: #06b6d4;
  /* Cyan */
  --track: rgba(255, 255, 255, 0.03);
  --text-main: #ffffff;
  --text-sub: #64748b;
  --glow-opacity: 0.6;
  --orb-color: #4f46e5;
}
.loading-container.theme-light[data-v-283d3650] {
  background: #f8fafc;
  --primary: #2563eb;
  /* Blue */
  --secondary: #7c3aed;
  /* Violet */
  --accent: #0ea5e9;
  /* Sky */
  --track: rgba(0, 0, 0, 0.03);
  --text-main: #1e293b;
  --text-sub: #94a3b8;
  --glow-opacity: 0.4;
  --orb-color: #bfdbfe;
}
.atmosphere[data-v-283d3650] {
  position: absolute;
  width: 100%;
  height: 100%;
  pointer-events: none;
}
.glow-orb[data-v-283d3650] {
  position: absolute;
  border-radius: 50%;
  filter: blur(80px);
  opacity: 0.15;
  animation: float-orb-283d3650 10s infinite ease-in-out alternate;
}
.glow-orb.glow-1[data-v-283d3650] {
  top: -10%;
  left: -10%;
  width: 50vw;
  height: 50vw;
  background: var(--primary);
}
.glow-orb.glow-2[data-v-283d3650] {
  bottom: -10%;
  right: -10%;
  width: 40vw;
  height: 40vw;
  background: var(--secondary);
  animation-delay: -5s;
}
@keyframes float-orb-283d3650 {
0% {
    transform: translate(0, 0) scale(1);
}
100% {
    transform: translate(30px, 50px) scale(1.1);
}
}
.loader-wrapper[data-v-283d3650] {
  z-index: 2;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  transform-style: preserve-3d;
  perspective: 1000px;
}
.symphony-loader[data-v-283d3650] {
  position: relative;
  width: 300px;
  height: 300px;
  display: flex;
  justify-content: center;
  align-items: center;
}
.track[data-v-283d3650] {
  position: absolute;
  border-radius: 50%;
  border: 1px solid var(--track);
  box-shadow: 0 0 20px rgba(0, 0, 0, 0.02);
}
.track.track-outer[data-v-283d3650] {
  width: 280px;
  height: 280px;
}
.track.track-middle[data-v-283d3650] {
  width: 190px;
  height: 190px;
}
.track.track-inner[data-v-283d3650] {
  width: 110px;
  height: 110px;
}
.orbit[data-v-283d3650] {
  position: absolute;
  border-radius: 50%;
  display: flex;
  justify-content: center;
  align-items: center;
}
.orbit-outer[data-v-283d3650] {
  width: 280px;
  height: 280px;
  animation: spin-283d3650 12s linear infinite;
}
.orbit-middle[data-v-283d3650] {
  width: 190px;
  height: 190px;
  animation: spin-283d3650 8s linear infinite reverse;
}
.orbit-inner[data-v-283d3650] {
  width: 110px;
  height: 110px;
  animation: spin-283d3650 4s linear infinite;
}
.orbit-dot-wrapper[data-v-283d3650] {
  position: absolute;
  top: 0;
  left: 50%;
  width: 100%;
  height: 100%;
  transform: rotate(calc(360deg / var(--total) * var(--i)));
  pointer-events: none;
}
.orbit-dot[data-v-283d3650] {
  position: absolute;
  top: -6px;
  left: 50%;
  width: 12px;
  height: 12px;
  border-radius: 50%;
  background: linear-gradient(135deg, var(--primary), var(--accent));
  transform: translateX(-50%);
  box-shadow: 0 0 10px var(--primary);
  animation: pulse-dot-283d3650 2s ease-in-out infinite alternate;
}
@keyframes spin-283d3650 {
to {
    transform: rotate(360deg);
}
}
@keyframes pulse-dot-283d3650 {
from {
    transform: translateX(-50%) scale(0.8);
    opacity: 0.8;
}
to {
    transform: translateX(-50%) scale(1.2);
    opacity: 1;
    box-shadow: 0 0 15px var(--accent);
}
}
.gooey-core[data-v-283d3650] {
  position: relative;
  width: 80px;
  height: 80px;
  filter: url("#goo-effect");
}
.liquid-blob[data-v-283d3650] {
  position: absolute;
  top: 50%;
  left: 50%;
  width: 30px;
  height: 30px;
  border-radius: 50%;
  background: var(--secondary);
  transform: translate(-50%, -50%);
}
.liquid-blob[data-v-283d3650]:nth-child(1) {
  background: var(--secondary);
  animation: blob-dance-283d3650 3.5s cubic-bezier(0.45, 0.05, 0.55, 0.95) infinite;
}
.liquid-blob[data-v-283d3650]:nth-child(2) {
  background: var(--primary);
  animation: blob-dance-283d3650 4s cubic-bezier(0.45, 0.05, 0.55, 0.95) infinite;
}
.liquid-blob[data-v-283d3650]:nth-child(3) {
  background: var(--secondary);
  animation: blob-dance-283d3650 4.5s cubic-bezier(0.45, 0.05, 0.55, 0.95) infinite;
}
.liquid-blob[data-v-283d3650]:nth-child(4) {
  background: var(--primary);
  animation: blob-dance-283d3650 5s cubic-bezier(0.45, 0.05, 0.55, 0.95) infinite;
}
.liquid-blob[data-v-283d3650]:nth-child(5) {
  background: var(--secondary);
  animation: blob-dance-283d3650 5.5s cubic-bezier(0.45, 0.05, 0.55, 0.95) infinite;
}
.liquid-blob[data-v-283d3650]:nth-child(6) {
  background: var(--primary);
  animation: blob-dance-283d3650 6s cubic-bezier(0.45, 0.05, 0.55, 0.95) infinite;
}
@keyframes blob-dance-283d3650 {
0% {
    transform: translate(-50%, -50%) rotate(0deg) translate(0, 0);
}
33% {
    transform: translate(-50%, -50%) rotate(120deg) translate(25px, 0);
}
66% {
    transform: translate(-50%, -50%) rotate(240deg) translate(-15px, 20px);
}
100% {
    transform: translate(-50%, -50%) rotate(360deg) translate(0, 0);
}
}
.logo-section[data-v-283d3650] {
  position: relative;
  margin-top: 2rem;
  display: flex;
  flex-direction: column;
  align-items: center;
}
.energy-rain[data-v-283d3650] {
  position: absolute;
  top: -40px;
  width: 100px;
  height: 50px;
  overflow: hidden;
  pointer-events: none;
}
.energy-rain span[data-v-283d3650] {
  position: absolute;
  top: -10px;
  left: calc(10% * var(--d));
  width: 2px;
  height: 10px;
  background: linear-gradient(to bottom, transparent, var(--accent));
  opacity: 0;
  animation: rain-drop-283d3650 2s infinite linear;
  animation-delay: calc(0.2s * var(--d));
}
@keyframes rain-drop-283d3650 {
0% {
    transform: translateY(0) scaleY(1);
    opacity: 0;
}
50% {
    opacity: 1;
}
100% {
    transform: translateY(60px) scaleY(0.5);
    opacity: 0;
}
}
.animated-logo[data-v-283d3650] {
  position: relative;
  font-family: "Orbitron", sans-serif;
  font-size: 4rem;
  font-weight: 900;
  letter-spacing: 0.5rem;
  display: flex;
  overflow: hidden;
  padding: 0 10px;
}
.animated-logo .char[data-v-283d3650] {
  display: block;
  color: transparent;
  -webkit-text-stroke: 2px rgba(120, 120, 120, 0.3);
  position: relative;
}
.animated-logo .char[data-v-283d3650]::before {
  content: attr(data-char);
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  color: var(--text-main);
  overflow: hidden;
  border-bottom: 2px solid var(--primary);
  animation: fill-text-283d3650 4s cubic-bezier(0.86, 0, 0.07, 1) infinite alternate;
}
.animated-logo .char[data-v-283d3650]:nth-child(1)::before {
  animation-delay: 0s;
  height: 0%;
}
.animated-logo .char[data-v-283d3650]:nth-child(2)::before {
  animation-delay: 0.2s;
  height: 0%;
}
.animated-logo .char[data-v-283d3650]:nth-child(3)::before {
  animation-delay: 0.4s;
  height: 0%;
}
@keyframes fill-text-283d3650 {
0%, 20% {
    height: 0%;
    filter: drop-shadow(0 0 0 transparent);
}
50%, 70% {
    height: 100%;
    filter: drop-shadow(0 0 10px var(--primary));
}
100% {
    height: 100%;
    filter: drop-shadow(0 0 15px var(--accent));
    color: var(--primary);
    -webkit-text-stroke: 0;
}
}
.scan-line[data-v-283d3650] {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 2px;
  background: var(--accent);
  box-shadow: 0 0 15px var(--accent);
  animation: scan-283d3650 3s linear infinite;
  opacity: 0.5;
}
@keyframes scan-283d3650 {
0% {
    top: 0%;
    opacity: 0;
}
10% {
    opacity: 1;
}
90% {
    opacity: 1;
}
100% {
    top: 100%;
    opacity: 0;
}
}
.loading-text[data-v-283d3650] {
  margin-top: 10px;
  font-family: "Courier New", monospace;
  font-size: 0.8rem;
  letter-spacing: 0.3rem;
  color: var(--text-sub);
  text-transform: uppercase;
  animation: blink-283d3650 2s infinite;
}
@keyframes blink-283d3650 {
0%, 100% {
    opacity: 0.5;
}
50% {
    opacity: 1;
}
}
@media (max-width: 600px) {
.symphony-loader[data-v-283d3650] {
    transform: scale(0.7);
}
.animated-logo[data-v-283d3650] {
    font-size: 2.5rem;
    letter-spacing: 0.3rem;
}
.logo-section[data-v-283d3650] {
    margin-top: 0;
}
}
/*!******************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./assets/frontend/components/theme/todolist.vue?vue&type=style&index=0&id=1372b134&scoped=true&lang=css& ***!
  \******************************************************************************************************************************************************************************************************************************************************************************************************/

/* الإطار الجمالي للحاوية */
.app-container[data-v-1372b134] {
 
 
  border-radius: 16px;
  box-shadow: 0 8px 16px rgba(0, 0, 0, 0.1);
  padding: 30px;
  max-width: 800px;
  margin: 0 auto;
}

/* عنوان التطبيق */
.app-title[data-v-1372b134] {
  font-size: 26px;
  font-weight: bold;
  color: #444444;
  text-shadow: 1px 1px 4px rgba(0, 0, 0, 0.1);
}

/* مظهر المهام */
.todo-chip[data-v-1372b134] {
  font-size: 16px;
  font-weight: 500;
  border-radius: 20px;
  background-color: #f1f1f1;
  color: #333333;
  box-shadow: 0 4px 6px rgba(0, 0, 0, 0.05);
  transition: all 0.3s ease;
}
.todo-chip[data-v-1372b134]:hover {
  transform: scale(1.05);
  box-shadow: 0 6px 10px rgba(0, 0, 0, 0.1);
}

/* تأثيرات الانتقالات */
.fade-enter-active[data-v-1372b134],
.fade-leave-active[data-v-1372b134] {
  transition: opacity 0.5s ease, transform 0.5s ease;
}
.fade-enter[data-v-1372b134],
.fade-leave-to[data-v-1372b134] {
  opacity: 0;
  transform: translateY(20px);
}

/* بطاقة الحكمة */
.wisdom-card[data-v-1372b134] {
  background: linear-gradient(1300deg, #ffffff, #f5f5f5);
  border-radius: 12px;
  padding: 20px;
  margin: 20px auto;
  max-width: 600px;
  box-shadow: 0 6px 12px rgba(0, 0, 0, 0.1);
}
.wisdom-text[data-v-1372b134] {
  font-size: 18px;
  font-style: italic;
  color: #555555;
}
.wisdom-author[data-v-1372b134] {
  font-size: 16px;
  font-weight: bold;
  color: #888888;
  margin-top: 10px;
}

/*!*****************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./assets/frontend/components/widgets/analyseProduitsbl.vue?vue&type=style&index=0&id=148d1ecd&scoped=true&lang=css& ***!
  \*****************************************************************************************************************************************************************************************************************************************************************************************************************/

/* أنماط لتحسين المظهر */
.v-card-title[data-v-148d1ecd] {
  color: #c62828; /* لون أحمر داكن للتنبيه */
  /* padding-bottom: 8px; */
}
.v-card-subtitle[data-v-148d1ecd] {
    padding-top: 0;
    padding-bottom: 16px;
}
.v-data-table[data-v-148d1ecd] {
  font-size: 0.9rem; /* حجم خط مناسب للقراءة */
}
.v-data-table th[data-v-148d1ecd] {
    font-weight: bold !important; /* خط عريض لرؤوس الأعمدة */
    color: rgba(0, 0, 0, 0.65) !important; /* لون أغمق قليلاً لرؤوس الأعمدة */
}
.v-chip[data-v-148d1ecd] {
    font-weight: 500;
}

/* يمكنك إضافة المزيد من الأنماط حسب الحاجة */

/*!***********************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./assets/frontend/components/widgets/listFactureImpeyeClient.vue?vue&type=style&index=0&id=884aed18&lang=css& ***!
  \***********************************************************************************************************************************************************************************************************************************************************************************************************/

.v-sheet--offset {
  top: -24px;
  position: relative;
}

/*!****************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./assets/frontend/components/widgets/listFactureImpeyeFournisseur.vue?vue&type=style&index=0&id=faefd270&lang=css& ***!
  \****************************************************************************************************************************************************************************************************************************************************************************************************************/

.v-sheet--offset {
  top: -24px;
  position: relative;
}

/*!**********************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./assets/frontend/components/widgets/listReglementEnAttente.vue?vue&type=style&index=0&id=495b674f&lang=css& ***!
  \**********************************************************************************************************************************************************************************************************************************************************************************************************/

.v-sheet--offset {
  top: -24px;
  position: relative;
}

/*!*****************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-13.use[1]!./node_modules/resolve-url-loader/index.js??clonedRuleSet-13.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-13.use[3]!./assets/frontend/theme/variables.scss ***!
  \*****************************************************************************************************************************************************************************************************************************************************/

/*!***************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-13.use[1]!./node_modules/resolve-url-loader/index.js??clonedRuleSet-13.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-13.use[3]!./assets/frontend/theme/default.sass ***!
  \***************************************************************************************************************************************************************************************************************************************************/
@charset "UTF-8";
@keyframes v-shake {
  59% {
    margin-left: 0;
  }
  60%, 80% {
    margin-left: 2px;
  }
  70%, 90% {
    margin-left: -2px;
  }
}
.v-application .black {
  background-color: #000000 !important;
  border-color: #000000 !important;
}

.v-application .black--text {
  color: #000000 !important;
  caret-color: #000000 !important;
}

.v-application .white {
  background-color: #FFFFFF !important;
  border-color: #FFFFFF !important;
}

.v-application .white--text {
  color: #FFFFFF !important;
  caret-color: #FFFFFF !important;
}

.v-application .transparent {
  background-color: transparent !important;
  border-color: transparent !important;
}

.v-application .transparent--text {
  color: transparent !important;
  caret-color: transparent !important;
}

.v-application .red {
  background-color: #F44336 !important;
  border-color: #F44336 !important;
}

.v-application .red--text {
  color: #F44336 !important;
  caret-color: #F44336 !important;
}

.v-application .red.lighten-5 {
  background-color: #FFEBEE !important;
  border-color: #FFEBEE !important;
}

.v-application .red--text.text--lighten-5 {
  color: #FFEBEE !important;
  caret-color: #FFEBEE !important;
}

.v-application .red.lighten-4 {
  background-color: #FFCDD2 !important;
  border-color: #FFCDD2 !important;
}

.v-application .red--text.text--lighten-4 {
  color: #FFCDD2 !important;
  caret-color: #FFCDD2 !important;
}

.v-application .red.lighten-3 {
  background-color: #EF9A9A !important;
  border-color: #EF9A9A !important;
}

.v-application .red--text.text--lighten-3 {
  color: #EF9A9A !important;
  caret-color: #EF9A9A !important;
}

.v-application .red.lighten-2 {
  background-color: #E57373 !important;
  border-color: #E57373 !important;
}

.v-application .red--text.text--lighten-2 {
  color: #E57373 !important;
  caret-color: #E57373 !important;
}

.v-application .red.lighten-1 {
  background-color: #EF5350 !important;
  border-color: #EF5350 !important;
}

.v-application .red--text.text--lighten-1 {
  color: #EF5350 !important;
  caret-color: #EF5350 !important;
}

.v-application .red.darken-1 {
  background-color: #E53935 !important;
  border-color: #E53935 !important;
}

.v-application .red--text.text--darken-1 {
  color: #E53935 !important;
  caret-color: #E53935 !important;
}

.v-application .red.darken-2 {
  background-color: #D32F2F !important;
  border-color: #D32F2F !important;
}

.v-application .red--text.text--darken-2 {
  color: #D32F2F !important;
  caret-color: #D32F2F !important;
}

.v-application .red.darken-3 {
  background-color: #C62828 !important;
  border-color: #C62828 !important;
}

.v-application .red--text.text--darken-3 {
  color: #C62828 !important;
  caret-color: #C62828 !important;
}

.v-application .red.darken-4 {
  background-color: #B71C1C !important;
  border-color: #B71C1C !important;
}

.v-application .red--text.text--darken-4 {
  color: #B71C1C !important;
  caret-color: #B71C1C !important;
}

.v-application .red.accent-1 {
  background-color: #FF8A80 !important;
  border-color: #FF8A80 !important;
}

.v-application .red--text.text--accent-1 {
  color: #FF8A80 !important;
  caret-color: #FF8A80 !important;
}

.v-application .red.accent-2 {
  background-color: #FF5252 !important;
  border-color: #FF5252 !important;
}

.v-application .red--text.text--accent-2 {
  color: #FF5252 !important;
  caret-color: #FF5252 !important;
}

.v-application .red.accent-3 {
  background-color: #FF1744 !important;
  border-color: #FF1744 !important;
}

.v-application .red--text.text--accent-3 {
  color: #FF1744 !important;
  caret-color: #FF1744 !important;
}

.v-application .red.accent-4 {
  background-color: #D50000 !important;
  border-color: #D50000 !important;
}

.v-application .red--text.text--accent-4 {
  color: #D50000 !important;
  caret-color: #D50000 !important;
}

.v-application .pink {
  background-color: #e91e63 !important;
  border-color: #e91e63 !important;
}

.v-application .pink--text {
  color: #e91e63 !important;
  caret-color: #e91e63 !important;
}

.v-application .pink.lighten-5 {
  background-color: #fce4ec !important;
  border-color: #fce4ec !important;
}

.v-application .pink--text.text--lighten-5 {
  color: #fce4ec !important;
  caret-color: #fce4ec !important;
}

.v-application .pink.lighten-4 {
  background-color: #f8bbd0 !important;
  border-color: #f8bbd0 !important;
}

.v-application .pink--text.text--lighten-4 {
  color: #f8bbd0 !important;
  caret-color: #f8bbd0 !important;
}

.v-application .pink.lighten-3 {
  background-color: #f48fb1 !important;
  border-color: #f48fb1 !important;
}

.v-application .pink--text.text--lighten-3 {
  color: #f48fb1 !important;
  caret-color: #f48fb1 !important;
}

.v-application .pink.lighten-2 {
  background-color: #f06292 !important;
  border-color: #f06292 !important;
}

.v-application .pink--text.text--lighten-2 {
  color: #f06292 !important;
  caret-color: #f06292 !important;
}

.v-application .pink.lighten-1 {
  background-color: #ec407a !important;
  border-color: #ec407a !important;
}

.v-application .pink--text.text--lighten-1 {
  color: #ec407a !important;
  caret-color: #ec407a !important;
}

.v-application .pink.darken-1 {
  background-color: #d81b60 !important;
  border-color: #d81b60 !important;
}

.v-application .pink--text.text--darken-1 {
  color: #d81b60 !important;
  caret-color: #d81b60 !important;
}

.v-application .pink.darken-2 {
  background-color: #c2185b !important;
  border-color: #c2185b !important;
}

.v-application .pink--text.text--darken-2 {
  color: #c2185b !important;
  caret-color: #c2185b !important;
}

.v-application .pink.darken-3 {
  background-color: #ad1457 !important;
  border-color: #ad1457 !important;
}

.v-application .pink--text.text--darken-3 {
  color: #ad1457 !important;
  caret-color: #ad1457 !important;
}

.v-application .pink.darken-4 {
  background-color: #880e4f !important;
  border-color: #880e4f !important;
}

.v-application .pink--text.text--darken-4 {
  color: #880e4f !important;
  caret-color: #880e4f !important;
}

.v-application .pink.accent-1 {
  background-color: #ff80ab !important;
  border-color: #ff80ab !important;
}

.v-application .pink--text.text--accent-1 {
  color: #ff80ab !important;
  caret-color: #ff80ab !important;
}

.v-application .pink.accent-2 {
  background-color: #ff4081 !important;
  border-color: #ff4081 !important;
}

.v-application .pink--text.text--accent-2 {
  color: #ff4081 !important;
  caret-color: #ff4081 !important;
}

.v-application .pink.accent-3 {
  background-color: #f50057 !important;
  border-color: #f50057 !important;
}

.v-application .pink--text.text--accent-3 {
  color: #f50057 !important;
  caret-color: #f50057 !important;
}

.v-application .pink.accent-4 {
  background-color: #c51162 !important;
  border-color: #c51162 !important;
}

.v-application .pink--text.text--accent-4 {
  color: #c51162 !important;
  caret-color: #c51162 !important;
}

.v-application .purple {
  background-color: #9c27b0 !important;
  border-color: #9c27b0 !important;
}

.v-application .purple--text {
  color: #9c27b0 !important;
  caret-color: #9c27b0 !important;
}

.v-application .purple.lighten-5 {
  background-color: #f3e5f5 !important;
  border-color: #f3e5f5 !important;
}

.v-application .purple--text.text--lighten-5 {
  color: #f3e5f5 !important;
  caret-color: #f3e5f5 !important;
}

.v-application .purple.lighten-4 {
  background-color: #e1bee7 !important;
  border-color: #e1bee7 !important;
}

.v-application .purple--text.text--lighten-4 {
  color: #e1bee7 !important;
  caret-color: #e1bee7 !important;
}

.v-application .purple.lighten-3 {
  background-color: #ce93d8 !important;
  border-color: #ce93d8 !important;
}

.v-application .purple--text.text--lighten-3 {
  color: #ce93d8 !important;
  caret-color: #ce93d8 !important;
}

.v-application .purple.lighten-2 {
  background-color: #ba68c8 !important;
  border-color: #ba68c8 !important;
}

.v-application .purple--text.text--lighten-2 {
  color: #ba68c8 !important;
  caret-color: #ba68c8 !important;
}

.v-application .purple.lighten-1 {
  background-color: #ab47bc !important;
  border-color: #ab47bc !important;
}

.v-application .purple--text.text--lighten-1 {
  color: #ab47bc !important;
  caret-color: #ab47bc !important;
}

.v-application .purple.darken-1 {
  background-color: #8e24aa !important;
  border-color: #8e24aa !important;
}

.v-application .purple--text.text--darken-1 {
  color: #8e24aa !important;
  caret-color: #8e24aa !important;
}

.v-application .purple.darken-2 {
  background-color: #7b1fa2 !important;
  border-color: #7b1fa2 !important;
}

.v-application .purple--text.text--darken-2 {
  color: #7b1fa2 !important;
  caret-color: #7b1fa2 !important;
}

.v-application .purple.darken-3 {
  background-color: #6a1b9a !important;
  border-color: #6a1b9a !important;
}

.v-application .purple--text.text--darken-3 {
  color: #6a1b9a !important;
  caret-color: #6a1b9a !important;
}

.v-application .purple.darken-4 {
  background-color: #4a148c !important;
  border-color: #4a148c !important;
}

.v-application .purple--text.text--darken-4 {
  color: #4a148c !important;
  caret-color: #4a148c !important;
}

.v-application .purple.accent-1 {
  background-color: #ea80fc !important;
  border-color: #ea80fc !important;
}

.v-application .purple--text.text--accent-1 {
  color: #ea80fc !important;
  caret-color: #ea80fc !important;
}

.v-application .purple.accent-2 {
  background-color: #e040fb !important;
  border-color: #e040fb !important;
}

.v-application .purple--text.text--accent-2 {
  color: #e040fb !important;
  caret-color: #e040fb !important;
}

.v-application .purple.accent-3 {
  background-color: #d500f9 !important;
  border-color: #d500f9 !important;
}

.v-application .purple--text.text--accent-3 {
  color: #d500f9 !important;
  caret-color: #d500f9 !important;
}

.v-application .purple.accent-4 {
  background-color: #aa00ff !important;
  border-color: #aa00ff !important;
}

.v-application .purple--text.text--accent-4 {
  color: #aa00ff !important;
  caret-color: #aa00ff !important;
}

.v-application .deep-purple {
  background-color: #673ab7 !important;
  border-color: #673ab7 !important;
}

.v-application .deep-purple--text {
  color: #673ab7 !important;
  caret-color: #673ab7 !important;
}

.v-application .deep-purple.lighten-5 {
  background-color: #ede7f6 !important;
  border-color: #ede7f6 !important;
}

.v-application .deep-purple--text.text--lighten-5 {
  color: #ede7f6 !important;
  caret-color: #ede7f6 !important;
}

.v-application .deep-purple.lighten-4 {
  background-color: #d1c4e9 !important;
  border-color: #d1c4e9 !important;
}

.v-application .deep-purple--text.text--lighten-4 {
  color: #d1c4e9 !important;
  caret-color: #d1c4e9 !important;
}

.v-application .deep-purple.lighten-3 {
  background-color: #b39ddb !important;
  border-color: #b39ddb !important;
}

.v-application .deep-purple--text.text--lighten-3 {
  color: #b39ddb !important;
  caret-color: #b39ddb !important;
}

.v-application .deep-purple.lighten-2 {
  background-color: #9575cd !important;
  border-color: #9575cd !important;
}

.v-application .deep-purple--text.text--lighten-2 {
  color: #9575cd !important;
  caret-color: #9575cd !important;
}

.v-application .deep-purple.lighten-1 {
  background-color: #7e57c2 !important;
  border-color: #7e57c2 !important;
}

.v-application .deep-purple--text.text--lighten-1 {
  color: #7e57c2 !important;
  caret-color: #7e57c2 !important;
}

.v-application .deep-purple.darken-1 {
  background-color: #5e35b1 !important;
  border-color: #5e35b1 !important;
}

.v-application .deep-purple--text.text--darken-1 {
  color: #5e35b1 !important;
  caret-color: #5e35b1 !important;
}

.v-application .deep-purple.darken-2 {
  background-color: #512da8 !important;
  border-color: #512da8 !important;
}

.v-application .deep-purple--text.text--darken-2 {
  color: #512da8 !important;
  caret-color: #512da8 !important;
}

.v-application .deep-purple.darken-3 {
  background-color: #4527a0 !important;
  border-color: #4527a0 !important;
}

.v-application .deep-purple--text.text--darken-3 {
  color: #4527a0 !important;
  caret-color: #4527a0 !important;
}

.v-application .deep-purple.darken-4 {
  background-color: #311b92 !important;
  border-color: #311b92 !important;
}

.v-application .deep-purple--text.text--darken-4 {
  color: #311b92 !important;
  caret-color: #311b92 !important;
}

.v-application .deep-purple.accent-1 {
  background-color: #b388ff !important;
  border-color: #b388ff !important;
}

.v-application .deep-purple--text.text--accent-1 {
  color: #b388ff !important;
  caret-color: #b388ff !important;
}

.v-application .deep-purple.accent-2 {
  background-color: #7c4dff !important;
  border-color: #7c4dff !important;
}

.v-application .deep-purple--text.text--accent-2 {
  color: #7c4dff !important;
  caret-color: #7c4dff !important;
}

.v-application .deep-purple.accent-3 {
  background-color: #651fff !important;
  border-color: #651fff !important;
}

.v-application .deep-purple--text.text--accent-3 {
  color: #651fff !important;
  caret-color: #651fff !important;
}

.v-application .deep-purple.accent-4 {
  background-color: #6200ea !important;
  border-color: #6200ea !important;
}

.v-application .deep-purple--text.text--accent-4 {
  color: #6200ea !important;
  caret-color: #6200ea !important;
}

.v-application .indigo {
  background-color: #3f51b5 !important;
  border-color: #3f51b5 !important;
}

.v-application .indigo--text {
  color: #3f51b5 !important;
  caret-color: #3f51b5 !important;
}

.v-application .indigo.lighten-5 {
  background-color: #e8eaf6 !important;
  border-color: #e8eaf6 !important;
}

.v-application .indigo--text.text--lighten-5 {
  color: #e8eaf6 !important;
  caret-color: #e8eaf6 !important;
}

.v-application .indigo.lighten-4 {
  background-color: #c5cae9 !important;
  border-color: #c5cae9 !important;
}

.v-application .indigo--text.text--lighten-4 {
  color: #c5cae9 !important;
  caret-color: #c5cae9 !important;
}

.v-application .indigo.lighten-3 {
  background-color: #9fa8da !important;
  border-color: #9fa8da !important;
}

.v-application .indigo--text.text--lighten-3 {
  color: #9fa8da !important;
  caret-color: #9fa8da !important;
}

.v-application .indigo.lighten-2 {
  background-color: #7986cb !important;
  border-color: #7986cb !important;
}

.v-application .indigo--text.text--lighten-2 {
  color: #7986cb !important;
  caret-color: #7986cb !important;
}

.v-application .indigo.lighten-1 {
  background-color: #5c6bc0 !important;
  border-color: #5c6bc0 !important;
}

.v-application .indigo--text.text--lighten-1 {
  color: #5c6bc0 !important;
  caret-color: #5c6bc0 !important;
}

.v-application .indigo.darken-1 {
  background-color: #3949ab !important;
  border-color: #3949ab !important;
}

.v-application .indigo--text.text--darken-1 {
  color: #3949ab !important;
  caret-color: #3949ab !important;
}

.v-application .indigo.darken-2 {
  background-color: #303f9f !important;
  border-color: #303f9f !important;
}

.v-application .indigo--text.text--darken-2 {
  color: #303f9f !important;
  caret-color: #303f9f !important;
}

.v-application .indigo.darken-3 {
  background-color: #283593 !important;
  border-color: #283593 !important;
}

.v-application .indigo--text.text--darken-3 {
  color: #283593 !important;
  caret-color: #283593 !important;
}

.v-application .indigo.darken-4 {
  background-color: #1a237e !important;
  border-color: #1a237e !important;
}

.v-application .indigo--text.text--darken-4 {
  color: #1a237e !important;
  caret-color: #1a237e !important;
}

.v-application .indigo.accent-1 {
  background-color: #8c9eff !important;
  border-color: #8c9eff !important;
}

.v-application .indigo--text.text--accent-1 {
  color: #8c9eff !important;
  caret-color: #8c9eff !important;
}

.v-application .indigo.accent-2 {
  background-color: #536dfe !important;
  border-color: #536dfe !important;
}

.v-application .indigo--text.text--accent-2 {
  color: #536dfe !important;
  caret-color: #536dfe !important;
}

.v-application .indigo.accent-3 {
  background-color: #3d5afe !important;
  border-color: #3d5afe !important;
}

.v-application .indigo--text.text--accent-3 {
  color: #3d5afe !important;
  caret-color: #3d5afe !important;
}

.v-application .indigo.accent-4 {
  background-color: #304ffe !important;
  border-color: #304ffe !important;
}

.v-application .indigo--text.text--accent-4 {
  color: #304ffe !important;
  caret-color: #304ffe !important;
}

.v-application .blue {
  background-color: #2196F3 !important;
  border-color: #2196F3 !important;
}

.v-application .blue--text {
  color: #2196F3 !important;
  caret-color: #2196F3 !important;
}

.v-application .blue.lighten-5 {
  background-color: #E3F2FD !important;
  border-color: #E3F2FD !important;
}

.v-application .blue--text.text--lighten-5 {
  color: #E3F2FD !important;
  caret-color: #E3F2FD !important;
}

.v-application .blue.lighten-4 {
  background-color: #BBDEFB !important;
  border-color: #BBDEFB !important;
}

.v-application .blue--text.text--lighten-4 {
  color: #BBDEFB !important;
  caret-color: #BBDEFB !important;
}

.v-application .blue.lighten-3 {
  background-color: #90CAF9 !important;
  border-color: #90CAF9 !important;
}

.v-application .blue--text.text--lighten-3 {
  color: #90CAF9 !important;
  caret-color: #90CAF9 !important;
}

.v-application .blue.lighten-2 {
  background-color: #64B5F6 !important;
  border-color: #64B5F6 !important;
}

.v-application .blue--text.text--lighten-2 {
  color: #64B5F6 !important;
  caret-color: #64B5F6 !important;
}

.v-application .blue.lighten-1 {
  background-color: #42A5F5 !important;
  border-color: #42A5F5 !important;
}

.v-application .blue--text.text--lighten-1 {
  color: #42A5F5 !important;
  caret-color: #42A5F5 !important;
}

.v-application .blue.darken-1 {
  background-color: #1E88E5 !important;
  border-color: #1E88E5 !important;
}

.v-application .blue--text.text--darken-1 {
  color: #1E88E5 !important;
  caret-color: #1E88E5 !important;
}

.v-application .blue.darken-2 {
  background-color: #1976D2 !important;
  border-color: #1976D2 !important;
}

.v-application .blue--text.text--darken-2 {
  color: #1976D2 !important;
  caret-color: #1976D2 !important;
}

.v-application .blue.darken-3 {
  background-color: #1565C0 !important;
  border-color: #1565C0 !important;
}

.v-application .blue--text.text--darken-3 {
  color: #1565C0 !important;
  caret-color: #1565C0 !important;
}

.v-application .blue.darken-4 {
  background-color: #0D47A1 !important;
  border-color: #0D47A1 !important;
}

.v-application .blue--text.text--darken-4 {
  color: #0D47A1 !important;
  caret-color: #0D47A1 !important;
}

.v-application .blue.accent-1 {
  background-color: #82B1FF !important;
  border-color: #82B1FF !important;
}

.v-application .blue--text.text--accent-1 {
  color: #82B1FF !important;
  caret-color: #82B1FF !important;
}

.v-application .blue.accent-2 {
  background-color: #448AFF !important;
  border-color: #448AFF !important;
}

.v-application .blue--text.text--accent-2 {
  color: #448AFF !important;
  caret-color: #448AFF !important;
}

.v-application .blue.accent-3 {
  background-color: #2979FF !important;
  border-color: #2979FF !important;
}

.v-application .blue--text.text--accent-3 {
  color: #2979FF !important;
  caret-color: #2979FF !important;
}

.v-application .blue.accent-4 {
  background-color: #2962FF !important;
  border-color: #2962FF !important;
}

.v-application .blue--text.text--accent-4 {
  color: #2962FF !important;
  caret-color: #2962FF !important;
}

.v-application .light-blue {
  background-color: #03a9f4 !important;
  border-color: #03a9f4 !important;
}

.v-application .light-blue--text {
  color: #03a9f4 !important;
  caret-color: #03a9f4 !important;
}

.v-application .light-blue.lighten-5 {
  background-color: #e1f5fe !important;
  border-color: #e1f5fe !important;
}

.v-application .light-blue--text.text--lighten-5 {
  color: #e1f5fe !important;
  caret-color: #e1f5fe !important;
}

.v-application .light-blue.lighten-4 {
  background-color: #b3e5fc !important;
  border-color: #b3e5fc !important;
}

.v-application .light-blue--text.text--lighten-4 {
  color: #b3e5fc !important;
  caret-color: #b3e5fc !important;
}

.v-application .light-blue.lighten-3 {
  background-color: #81d4fa !important;
  border-color: #81d4fa !important;
}

.v-application .light-blue--text.text--lighten-3 {
  color: #81d4fa !important;
  caret-color: #81d4fa !important;
}

.v-application .light-blue.lighten-2 {
  background-color: #4fc3f7 !important;
  border-color: #4fc3f7 !important;
}

.v-application .light-blue--text.text--lighten-2 {
  color: #4fc3f7 !important;
  caret-color: #4fc3f7 !important;
}

.v-application .light-blue.lighten-1 {
  background-color: #29b6f6 !important;
  border-color: #29b6f6 !important;
}

.v-application .light-blue--text.text--lighten-1 {
  color: #29b6f6 !important;
  caret-color: #29b6f6 !important;
}

.v-application .light-blue.darken-1 {
  background-color: #039be5 !important;
  border-color: #039be5 !important;
}

.v-application .light-blue--text.text--darken-1 {
  color: #039be5 !important;
  caret-color: #039be5 !important;
}

.v-application .light-blue.darken-2 {
  background-color: #0288d1 !important;
  border-color: #0288d1 !important;
}

.v-application .light-blue--text.text--darken-2 {
  color: #0288d1 !important;
  caret-color: #0288d1 !important;
}

.v-application .light-blue.darken-3 {
  background-color: #0277bd !important;
  border-color: #0277bd !important;
}

.v-application .light-blue--text.text--darken-3 {
  color: #0277bd !important;
  caret-color: #0277bd !important;
}

.v-application .light-blue.darken-4 {
  background-color: #01579b !important;
  border-color: #01579b !important;
}

.v-application .light-blue--text.text--darken-4 {
  color: #01579b !important;
  caret-color: #01579b !important;
}

.v-application .light-blue.accent-1 {
  background-color: #80d8ff !important;
  border-color: #80d8ff !important;
}

.v-application .light-blue--text.text--accent-1 {
  color: #80d8ff !important;
  caret-color: #80d8ff !important;
}

.v-application .light-blue.accent-2 {
  background-color: #40c4ff !important;
  border-color: #40c4ff !important;
}

.v-application .light-blue--text.text--accent-2 {
  color: #40c4ff !important;
  caret-color: #40c4ff !important;
}

.v-application .light-blue.accent-3 {
  background-color: #00b0ff !important;
  border-color: #00b0ff !important;
}

.v-application .light-blue--text.text--accent-3 {
  color: #00b0ff !important;
  caret-color: #00b0ff !important;
}

.v-application .light-blue.accent-4 {
  background-color: #0091ea !important;
  border-color: #0091ea !important;
}

.v-application .light-blue--text.text--accent-4 {
  color: #0091ea !important;
  caret-color: #0091ea !important;
}

.v-application .cyan {
  background-color: #00bcd4 !important;
  border-color: #00bcd4 !important;
}

.v-application .cyan--text {
  color: #00bcd4 !important;
  caret-color: #00bcd4 !important;
}

.v-application .cyan.lighten-5 {
  background-color: #e0f7fa !important;
  border-color: #e0f7fa !important;
}

.v-application .cyan--text.text--lighten-5 {
  color: #e0f7fa !important;
  caret-color: #e0f7fa !important;
}

.v-application .cyan.lighten-4 {
  background-color: #b2ebf2 !important;
  border-color: #b2ebf2 !important;
}

.v-application .cyan--text.text--lighten-4 {
  color: #b2ebf2 !important;
  caret-color: #b2ebf2 !important;
}

.v-application .cyan.lighten-3 {
  background-color: #80deea !important;
  border-color: #80deea !important;
}

.v-application .cyan--text.text--lighten-3 {
  color: #80deea !important;
  caret-color: #80deea !important;
}

.v-application .cyan.lighten-2 {
  background-color: #4dd0e1 !important;
  border-color: #4dd0e1 !important;
}

.v-application .cyan--text.text--lighten-2 {
  color: #4dd0e1 !important;
  caret-color: #4dd0e1 !important;
}

.v-application .cyan.lighten-1 {
  background-color: #26c6da !important;
  border-color: #26c6da !important;
}

.v-application .cyan--text.text--lighten-1 {
  color: #26c6da !important;
  caret-color: #26c6da !important;
}

.v-application .cyan.darken-1 {
  background-color: #00acc1 !important;
  border-color: #00acc1 !important;
}

.v-application .cyan--text.text--darken-1 {
  color: #00acc1 !important;
  caret-color: #00acc1 !important;
}

.v-application .cyan.darken-2 {
  background-color: #0097a7 !important;
  border-color: #0097a7 !important;
}

.v-application .cyan--text.text--darken-2 {
  color: #0097a7 !important;
  caret-color: #0097a7 !important;
}

.v-application .cyan.darken-3 {
  background-color: #00838f !important;
  border-color: #00838f !important;
}

.v-application .cyan--text.text--darken-3 {
  color: #00838f !important;
  caret-color: #00838f !important;
}

.v-application .cyan.darken-4 {
  background-color: #006064 !important;
  border-color: #006064 !important;
}

.v-application .cyan--text.text--darken-4 {
  color: #006064 !important;
  caret-color: #006064 !important;
}

.v-application .cyan.accent-1 {
  background-color: #84ffff !important;
  border-color: #84ffff !important;
}

.v-application .cyan--text.text--accent-1 {
  color: #84ffff !important;
  caret-color: #84ffff !important;
}

.v-application .cyan.accent-2 {
  background-color: #18ffff !important;
  border-color: #18ffff !important;
}

.v-application .cyan--text.text--accent-2 {
  color: #18ffff !important;
  caret-color: #18ffff !important;
}

.v-application .cyan.accent-3 {
  background-color: #00e5ff !important;
  border-color: #00e5ff !important;
}

.v-application .cyan--text.text--accent-3 {
  color: #00e5ff !important;
  caret-color: #00e5ff !important;
}

.v-application .cyan.accent-4 {
  background-color: #00b8d4 !important;
  border-color: #00b8d4 !important;
}

.v-application .cyan--text.text--accent-4 {
  color: #00b8d4 !important;
  caret-color: #00b8d4 !important;
}

.v-application .teal {
  background-color: #009688 !important;
  border-color: #009688 !important;
}

.v-application .teal--text {
  color: #009688 !important;
  caret-color: #009688 !important;
}

.v-application .teal.lighten-5 {
  background-color: #e0f2f1 !important;
  border-color: #e0f2f1 !important;
}

.v-application .teal--text.text--lighten-5 {
  color: #e0f2f1 !important;
  caret-color: #e0f2f1 !important;
}

.v-application .teal.lighten-4 {
  background-color: #b2dfdb !important;
  border-color: #b2dfdb !important;
}

.v-application .teal--text.text--lighten-4 {
  color: #b2dfdb !important;
  caret-color: #b2dfdb !important;
}

.v-application .teal.lighten-3 {
  background-color: #80cbc4 !important;
  border-color: #80cbc4 !important;
}

.v-application .teal--text.text--lighten-3 {
  color: #80cbc4 !important;
  caret-color: #80cbc4 !important;
}

.v-application .teal.lighten-2 {
  background-color: #4db6ac !important;
  border-color: #4db6ac !important;
}

.v-application .teal--text.text--lighten-2 {
  color: #4db6ac !important;
  caret-color: #4db6ac !important;
}

.v-application .teal.lighten-1 {
  background-color: #26a69a !important;
  border-color: #26a69a !important;
}

.v-application .teal--text.text--lighten-1 {
  color: #26a69a !important;
  caret-color: #26a69a !important;
}

.v-application .teal.darken-1 {
  background-color: #00897b !important;
  border-color: #00897b !important;
}

.v-application .teal--text.text--darken-1 {
  color: #00897b !important;
  caret-color: #00897b !important;
}

.v-application .teal.darken-2 {
  background-color: #00796b !important;
  border-color: #00796b !important;
}

.v-application .teal--text.text--darken-2 {
  color: #00796b !important;
  caret-color: #00796b !important;
}

.v-application .teal.darken-3 {
  background-color: #00695c !important;
  border-color: #00695c !important;
}

.v-application .teal--text.text--darken-3 {
  color: #00695c !important;
  caret-color: #00695c !important;
}

.v-application .teal.darken-4 {
  background-color: #004d40 !important;
  border-color: #004d40 !important;
}

.v-application .teal--text.text--darken-4 {
  color: #004d40 !important;
  caret-color: #004d40 !important;
}

.v-application .teal.accent-1 {
  background-color: #a7ffeb !important;
  border-color: #a7ffeb !important;
}

.v-application .teal--text.text--accent-1 {
  color: #a7ffeb !important;
  caret-color: #a7ffeb !important;
}

.v-application .teal.accent-2 {
  background-color: #64ffda !important;
  border-color: #64ffda !important;
}

.v-application .teal--text.text--accent-2 {
  color: #64ffda !important;
  caret-color: #64ffda !important;
}

.v-application .teal.accent-3 {
  background-color: #1de9b6 !important;
  border-color: #1de9b6 !important;
}

.v-application .teal--text.text--accent-3 {
  color: #1de9b6 !important;
  caret-color: #1de9b6 !important;
}

.v-application .teal.accent-4 {
  background-color: #00bfa5 !important;
  border-color: #00bfa5 !important;
}

.v-application .teal--text.text--accent-4 {
  color: #00bfa5 !important;
  caret-color: #00bfa5 !important;
}

.v-application .green {
  background-color: #4CAF50 !important;
  border-color: #4CAF50 !important;
}

.v-application .green--text {
  color: #4CAF50 !important;
  caret-color: #4CAF50 !important;
}

.v-application .green.lighten-5 {
  background-color: #E8F5E9 !important;
  border-color: #E8F5E9 !important;
}

.v-application .green--text.text--lighten-5 {
  color: #E8F5E9 !important;
  caret-color: #E8F5E9 !important;
}

.v-application .green.lighten-4 {
  background-color: #C8E6C9 !important;
  border-color: #C8E6C9 !important;
}

.v-application .green--text.text--lighten-4 {
  color: #C8E6C9 !important;
  caret-color: #C8E6C9 !important;
}

.v-application .green.lighten-3 {
  background-color: #A5D6A7 !important;
  border-color: #A5D6A7 !important;
}

.v-application .green--text.text--lighten-3 {
  color: #A5D6A7 !important;
  caret-color: #A5D6A7 !important;
}

.v-application .green.lighten-2 {
  background-color: #81C784 !important;
  border-color: #81C784 !important;
}

.v-application .green--text.text--lighten-2 {
  color: #81C784 !important;
  caret-color: #81C784 !important;
}

.v-application .green.lighten-1 {
  background-color: #66BB6A !important;
  border-color: #66BB6A !important;
}

.v-application .green--text.text--lighten-1 {
  color: #66BB6A !important;
  caret-color: #66BB6A !important;
}

.v-application .green.darken-1 {
  background-color: #43A047 !important;
  border-color: #43A047 !important;
}

.v-application .green--text.text--darken-1 {
  color: #43A047 !important;
  caret-color: #43A047 !important;
}

.v-application .green.darken-2 {
  background-color: #388E3C !important;
  border-color: #388E3C !important;
}

.v-application .green--text.text--darken-2 {
  color: #388E3C !important;
  caret-color: #388E3C !important;
}

.v-application .green.darken-3 {
  background-color: #2E7D32 !important;
  border-color: #2E7D32 !important;
}

.v-application .green--text.text--darken-3 {
  color: #2E7D32 !important;
  caret-color: #2E7D32 !important;
}

.v-application .green.darken-4 {
  background-color: #1B5E20 !important;
  border-color: #1B5E20 !important;
}

.v-application .green--text.text--darken-4 {
  color: #1B5E20 !important;
  caret-color: #1B5E20 !important;
}

.v-application .green.accent-1 {
  background-color: #B9F6CA !important;
  border-color: #B9F6CA !important;
}

.v-application .green--text.text--accent-1 {
  color: #B9F6CA !important;
  caret-color: #B9F6CA !important;
}

.v-application .green.accent-2 {
  background-color: #69F0AE !important;
  border-color: #69F0AE !important;
}

.v-application .green--text.text--accent-2 {
  color: #69F0AE !important;
  caret-color: #69F0AE !important;
}

.v-application .green.accent-3 {
  background-color: #00E676 !important;
  border-color: #00E676 !important;
}

.v-application .green--text.text--accent-3 {
  color: #00E676 !important;
  caret-color: #00E676 !important;
}

.v-application .green.accent-4 {
  background-color: #00C853 !important;
  border-color: #00C853 !important;
}

.v-application .green--text.text--accent-4 {
  color: #00C853 !important;
  caret-color: #00C853 !important;
}

.v-application .light-green {
  background-color: #8bc34a !important;
  border-color: #8bc34a !important;
}

.v-application .light-green--text {
  color: #8bc34a !important;
  caret-color: #8bc34a !important;
}

.v-application .light-green.lighten-5 {
  background-color: #f1f8e9 !important;
  border-color: #f1f8e9 !important;
}

.v-application .light-green--text.text--lighten-5 {
  color: #f1f8e9 !important;
  caret-color: #f1f8e9 !important;
}

.v-application .light-green.lighten-4 {
  background-color: #dcedc8 !important;
  border-color: #dcedc8 !important;
}

.v-application .light-green--text.text--lighten-4 {
  color: #dcedc8 !important;
  caret-color: #dcedc8 !important;
}

.v-application .light-green.lighten-3 {
  background-color: #c5e1a5 !important;
  border-color: #c5e1a5 !important;
}

.v-application .light-green--text.text--lighten-3 {
  color: #c5e1a5 !important;
  caret-color: #c5e1a5 !important;
}

.v-application .light-green.lighten-2 {
  background-color: #aed581 !important;
  border-color: #aed581 !important;
}

.v-application .light-green--text.text--lighten-2 {
  color: #aed581 !important;
  caret-color: #aed581 !important;
}

.v-application .light-green.lighten-1 {
  background-color: #9ccc65 !important;
  border-color: #9ccc65 !important;
}

.v-application .light-green--text.text--lighten-1 {
  color: #9ccc65 !important;
  caret-color: #9ccc65 !important;
}

.v-application .light-green.darken-1 {
  background-color: #7cb342 !important;
  border-color: #7cb342 !important;
}

.v-application .light-green--text.text--darken-1 {
  color: #7cb342 !important;
  caret-color: #7cb342 !important;
}

.v-application .light-green.darken-2 {
  background-color: #689f38 !important;
  border-color: #689f38 !important;
}

.v-application .light-green--text.text--darken-2 {
  color: #689f38 !important;
  caret-color: #689f38 !important;
}

.v-application .light-green.darken-3 {
  background-color: #558b2f !important;
  border-color: #558b2f !important;
}

.v-application .light-green--text.text--darken-3 {
  color: #558b2f !important;
  caret-color: #558b2f !important;
}

.v-application .light-green.darken-4 {
  background-color: #33691e !important;
  border-color: #33691e !important;
}

.v-application .light-green--text.text--darken-4 {
  color: #33691e !important;
  caret-color: #33691e !important;
}

.v-application .light-green.accent-1 {
  background-color: #ccff90 !important;
  border-color: #ccff90 !important;
}

.v-application .light-green--text.text--accent-1 {
  color: #ccff90 !important;
  caret-color: #ccff90 !important;
}

.v-application .light-green.accent-2 {
  background-color: #b2ff59 !important;
  border-color: #b2ff59 !important;
}

.v-application .light-green--text.text--accent-2 {
  color: #b2ff59 !important;
  caret-color: #b2ff59 !important;
}

.v-application .light-green.accent-3 {
  background-color: #76ff03 !important;
  border-color: #76ff03 !important;
}

.v-application .light-green--text.text--accent-3 {
  color: #76ff03 !important;
  caret-color: #76ff03 !important;
}

.v-application .light-green.accent-4 {
  background-color: #64dd17 !important;
  border-color: #64dd17 !important;
}

.v-application .light-green--text.text--accent-4 {
  color: #64dd17 !important;
  caret-color: #64dd17 !important;
}

.v-application .lime {
  background-color: #cddc39 !important;
  border-color: #cddc39 !important;
}

.v-application .lime--text {
  color: #cddc39 !important;
  caret-color: #cddc39 !important;
}

.v-application .lime.lighten-5 {
  background-color: #f9fbe7 !important;
  border-color: #f9fbe7 !important;
}

.v-application .lime--text.text--lighten-5 {
  color: #f9fbe7 !important;
  caret-color: #f9fbe7 !important;
}

.v-application .lime.lighten-4 {
  background-color: #f0f4c3 !important;
  border-color: #f0f4c3 !important;
}

.v-application .lime--text.text--lighten-4 {
  color: #f0f4c3 !important;
  caret-color: #f0f4c3 !important;
}

.v-application .lime.lighten-3 {
  background-color: #e6ee9c !important;
  border-color: #e6ee9c !important;
}

.v-application .lime--text.text--lighten-3 {
  color: #e6ee9c !important;
  caret-color: #e6ee9c !important;
}

.v-application .lime.lighten-2 {
  background-color: #dce775 !important;
  border-color: #dce775 !important;
}

.v-application .lime--text.text--lighten-2 {
  color: #dce775 !important;
  caret-color: #dce775 !important;
}

.v-application .lime.lighten-1 {
  background-color: #d4e157 !important;
  border-color: #d4e157 !important;
}

.v-application .lime--text.text--lighten-1 {
  color: #d4e157 !important;
  caret-color: #d4e157 !important;
}

.v-application .lime.darken-1 {
  background-color: #c0ca33 !important;
  border-color: #c0ca33 !important;
}

.v-application .lime--text.text--darken-1 {
  color: #c0ca33 !important;
  caret-color: #c0ca33 !important;
}

.v-application .lime.darken-2 {
  background-color: #afb42b !important;
  border-color: #afb42b !important;
}

.v-application .lime--text.text--darken-2 {
  color: #afb42b !important;
  caret-color: #afb42b !important;
}

.v-application .lime.darken-3 {
  background-color: #9e9d24 !important;
  border-color: #9e9d24 !important;
}

.v-application .lime--text.text--darken-3 {
  color: #9e9d24 !important;
  caret-color: #9e9d24 !important;
}

.v-application .lime.darken-4 {
  background-color: #827717 !important;
  border-color: #827717 !important;
}

.v-application .lime--text.text--darken-4 {
  color: #827717 !important;
  caret-color: #827717 !important;
}

.v-application .lime.accent-1 {
  background-color: #f4ff81 !important;
  border-color: #f4ff81 !important;
}

.v-application .lime--text.text--accent-1 {
  color: #f4ff81 !important;
  caret-color: #f4ff81 !important;
}

.v-application .lime.accent-2 {
  background-color: #eeff41 !important;
  border-color: #eeff41 !important;
}

.v-application .lime--text.text--accent-2 {
  color: #eeff41 !important;
  caret-color: #eeff41 !important;
}

.v-application .lime.accent-3 {
  background-color: #c6ff00 !important;
  border-color: #c6ff00 !important;
}

.v-application .lime--text.text--accent-3 {
  color: #c6ff00 !important;
  caret-color: #c6ff00 !important;
}

.v-application .lime.accent-4 {
  background-color: #aeea00 !important;
  border-color: #aeea00 !important;
}

.v-application .lime--text.text--accent-4 {
  color: #aeea00 !important;
  caret-color: #aeea00 !important;
}

.v-application .yellow {
  background-color: #ffeb3b !important;
  border-color: #ffeb3b !important;
}

.v-application .yellow--text {
  color: #ffeb3b !important;
  caret-color: #ffeb3b !important;
}

.v-application .yellow.lighten-5 {
  background-color: #fffde7 !important;
  border-color: #fffde7 !important;
}

.v-application .yellow--text.text--lighten-5 {
  color: #fffde7 !important;
  caret-color: #fffde7 !important;
}

.v-application .yellow.lighten-4 {
  background-color: #fff9c4 !important;
  border-color: #fff9c4 !important;
}

.v-application .yellow--text.text--lighten-4 {
  color: #fff9c4 !important;
  caret-color: #fff9c4 !important;
}

.v-application .yellow.lighten-3 {
  background-color: #fff59d !important;
  border-color: #fff59d !important;
}

.v-application .yellow--text.text--lighten-3 {
  color: #fff59d !important;
  caret-color: #fff59d !important;
}

.v-application .yellow.lighten-2 {
  background-color: #fff176 !important;
  border-color: #fff176 !important;
}

.v-application .yellow--text.text--lighten-2 {
  color: #fff176 !important;
  caret-color: #fff176 !important;
}

.v-application .yellow.lighten-1 {
  background-color: #ffee58 !important;
  border-color: #ffee58 !important;
}

.v-application .yellow--text.text--lighten-1 {
  color: #ffee58 !important;
  caret-color: #ffee58 !important;
}

.v-application .yellow.darken-1 {
  background-color: #fdd835 !important;
  border-color: #fdd835 !important;
}

.v-application .yellow--text.text--darken-1 {
  color: #fdd835 !important;
  caret-color: #fdd835 !important;
}

.v-application .yellow.darken-2 {
  background-color: #fbc02d !important;
  border-color: #fbc02d !important;
}

.v-application .yellow--text.text--darken-2 {
  color: #fbc02d !important;
  caret-color: #fbc02d !important;
}

.v-application .yellow.darken-3 {
  background-color: #f9a825 !important;
  border-color: #f9a825 !important;
}

.v-application .yellow--text.text--darken-3 {
  color: #f9a825 !important;
  caret-color: #f9a825 !important;
}

.v-application .yellow.darken-4 {
  background-color: #f57f17 !important;
  border-color: #f57f17 !important;
}

.v-application .yellow--text.text--darken-4 {
  color: #f57f17 !important;
  caret-color: #f57f17 !important;
}

.v-application .yellow.accent-1 {
  background-color: #ffff8d !important;
  border-color: #ffff8d !important;
}

.v-application .yellow--text.text--accent-1 {
  color: #ffff8d !important;
  caret-color: #ffff8d !important;
}

.v-application .yellow.accent-2 {
  background-color: #ffff00 !important;
  border-color: #ffff00 !important;
}

.v-application .yellow--text.text--accent-2 {
  color: #ffff00 !important;
  caret-color: #ffff00 !important;
}

.v-application .yellow.accent-3 {
  background-color: #ffea00 !important;
  border-color: #ffea00 !important;
}

.v-application .yellow--text.text--accent-3 {
  color: #ffea00 !important;
  caret-color: #ffea00 !important;
}

.v-application .yellow.accent-4 {
  background-color: #ffd600 !important;
  border-color: #ffd600 !important;
}

.v-application .yellow--text.text--accent-4 {
  color: #ffd600 !important;
  caret-color: #ffd600 !important;
}

.v-application .amber {
  background-color: #ffc107 !important;
  border-color: #ffc107 !important;
}

.v-application .amber--text {
  color: #ffc107 !important;
  caret-color: #ffc107 !important;
}

.v-application .amber.lighten-5 {
  background-color: #fff8e1 !important;
  border-color: #fff8e1 !important;
}

.v-application .amber--text.text--lighten-5 {
  color: #fff8e1 !important;
  caret-color: #fff8e1 !important;
}

.v-application .amber.lighten-4 {
  background-color: #ffecb3 !important;
  border-color: #ffecb3 !important;
}

.v-application .amber--text.text--lighten-4 {
  color: #ffecb3 !important;
  caret-color: #ffecb3 !important;
}

.v-application .amber.lighten-3 {
  background-color: #ffe082 !important;
  border-color: #ffe082 !important;
}

.v-application .amber--text.text--lighten-3 {
  color: #ffe082 !important;
  caret-color: #ffe082 !important;
}

.v-application .amber.lighten-2 {
  background-color: #ffd54f !important;
  border-color: #ffd54f !important;
}

.v-application .amber--text.text--lighten-2 {
  color: #ffd54f !important;
  caret-color: #ffd54f !important;
}

.v-application .amber.lighten-1 {
  background-color: #ffca28 !important;
  border-color: #ffca28 !important;
}

.v-application .amber--text.text--lighten-1 {
  color: #ffca28 !important;
  caret-color: #ffca28 !important;
}

.v-application .amber.darken-1 {
  background-color: #ffb300 !important;
  border-color: #ffb300 !important;
}

.v-application .amber--text.text--darken-1 {
  color: #ffb300 !important;
  caret-color: #ffb300 !important;
}

.v-application .amber.darken-2 {
  background-color: #ffa000 !important;
  border-color: #ffa000 !important;
}

.v-application .amber--text.text--darken-2 {
  color: #ffa000 !important;
  caret-color: #ffa000 !important;
}

.v-application .amber.darken-3 {
  background-color: #ff8f00 !important;
  border-color: #ff8f00 !important;
}

.v-application .amber--text.text--darken-3 {
  color: #ff8f00 !important;
  caret-color: #ff8f00 !important;
}

.v-application .amber.darken-4 {
  background-color: #ff6f00 !important;
  border-color: #ff6f00 !important;
}

.v-application .amber--text.text--darken-4 {
  color: #ff6f00 !important;
  caret-color: #ff6f00 !important;
}

.v-application .amber.accent-1 {
  background-color: #ffe57f !important;
  border-color: #ffe57f !important;
}

.v-application .amber--text.text--accent-1 {
  color: #ffe57f !important;
  caret-color: #ffe57f !important;
}

.v-application .amber.accent-2 {
  background-color: #ffd740 !important;
  border-color: #ffd740 !important;
}

.v-application .amber--text.text--accent-2 {
  color: #ffd740 !important;
  caret-color: #ffd740 !important;
}

.v-application .amber.accent-3 {
  background-color: #ffc400 !important;
  border-color: #ffc400 !important;
}

.v-application .amber--text.text--accent-3 {
  color: #ffc400 !important;
  caret-color: #ffc400 !important;
}

.v-application .amber.accent-4 {
  background-color: #ffab00 !important;
  border-color: #ffab00 !important;
}

.v-application .amber--text.text--accent-4 {
  color: #ffab00 !important;
  caret-color: #ffab00 !important;
}

.v-application .orange {
  background-color: #ff9800 !important;
  border-color: #ff9800 !important;
}

.v-application .orange--text {
  color: #ff9800 !important;
  caret-color: #ff9800 !important;
}

.v-application .orange.lighten-5 {
  background-color: #fff3e0 !important;
  border-color: #fff3e0 !important;
}

.v-application .orange--text.text--lighten-5 {
  color: #fff3e0 !important;
  caret-color: #fff3e0 !important;
}

.v-application .orange.lighten-4 {
  background-color: #ffe0b2 !important;
  border-color: #ffe0b2 !important;
}

.v-application .orange--text.text--lighten-4 {
  color: #ffe0b2 !important;
  caret-color: #ffe0b2 !important;
}

.v-application .orange.lighten-3 {
  background-color: #ffcc80 !important;
  border-color: #ffcc80 !important;
}

.v-application .orange--text.text--lighten-3 {
  color: #ffcc80 !important;
  caret-color: #ffcc80 !important;
}

.v-application .orange.lighten-2 {
  background-color: #ffb74d !important;
  border-color: #ffb74d !important;
}

.v-application .orange--text.text--lighten-2 {
  color: #ffb74d !important;
  caret-color: #ffb74d !important;
}

.v-application .orange.lighten-1 {
  background-color: #ffa726 !important;
  border-color: #ffa726 !important;
}

.v-application .orange--text.text--lighten-1 {
  color: #ffa726 !important;
  caret-color: #ffa726 !important;
}

.v-application .orange.darken-1 {
  background-color: #fb8c00 !important;
  border-color: #fb8c00 !important;
}

.v-application .orange--text.text--darken-1 {
  color: #fb8c00 !important;
  caret-color: #fb8c00 !important;
}

.v-application .orange.darken-2 {
  background-color: #f57c00 !important;
  border-color: #f57c00 !important;
}

.v-application .orange--text.text--darken-2 {
  color: #f57c00 !important;
  caret-color: #f57c00 !important;
}

.v-application .orange.darken-3 {
  background-color: #ef6c00 !important;
  border-color: #ef6c00 !important;
}

.v-application .orange--text.text--darken-3 {
  color: #ef6c00 !important;
  caret-color: #ef6c00 !important;
}

.v-application .orange.darken-4 {
  background-color: #e65100 !important;
  border-color: #e65100 !important;
}

.v-application .orange--text.text--darken-4 {
  color: #e65100 !important;
  caret-color: #e65100 !important;
}

.v-application .orange.accent-1 {
  background-color: #ffd180 !important;
  border-color: #ffd180 !important;
}

.v-application .orange--text.text--accent-1 {
  color: #ffd180 !important;
  caret-color: #ffd180 !important;
}

.v-application .orange.accent-2 {
  background-color: #ffab40 !important;
  border-color: #ffab40 !important;
}

.v-application .orange--text.text--accent-2 {
  color: #ffab40 !important;
  caret-color: #ffab40 !important;
}

.v-application .orange.accent-3 {
  background-color: #ff9100 !important;
  border-color: #ff9100 !important;
}

.v-application .orange--text.text--accent-3 {
  color: #ff9100 !important;
  caret-color: #ff9100 !important;
}

.v-application .orange.accent-4 {
  background-color: #ff6d00 !important;
  border-color: #ff6d00 !important;
}

.v-application .orange--text.text--accent-4 {
  color: #ff6d00 !important;
  caret-color: #ff6d00 !important;
}

.v-application .deep-orange {
  background-color: #ff5722 !important;
  border-color: #ff5722 !important;
}

.v-application .deep-orange--text {
  color: #ff5722 !important;
  caret-color: #ff5722 !important;
}

.v-application .deep-orange.lighten-5 {
  background-color: #fbe9e7 !important;
  border-color: #fbe9e7 !important;
}

.v-application .deep-orange--text.text--lighten-5 {
  color: #fbe9e7 !important;
  caret-color: #fbe9e7 !important;
}

.v-application .deep-orange.lighten-4 {
  background-color: #ffccbc !important;
  border-color: #ffccbc !important;
}

.v-application .deep-orange--text.text--lighten-4 {
  color: #ffccbc !important;
  caret-color: #ffccbc !important;
}

.v-application .deep-orange.lighten-3 {
  background-color: #ffab91 !important;
  border-color: #ffab91 !important;
}

.v-application .deep-orange--text.text--lighten-3 {
  color: #ffab91 !important;
  caret-color: #ffab91 !important;
}

.v-application .deep-orange.lighten-2 {
  background-color: #ff8a65 !important;
  border-color: #ff8a65 !important;
}

.v-application .deep-orange--text.text--lighten-2 {
  color: #ff8a65 !important;
  caret-color: #ff8a65 !important;
}

.v-application .deep-orange.lighten-1 {
  background-color: #ff7043 !important;
  border-color: #ff7043 !important;
}

.v-application .deep-orange--text.text--lighten-1 {
  color: #ff7043 !important;
  caret-color: #ff7043 !important;
}

.v-application .deep-orange.darken-1 {
  background-color: #f4511e !important;
  border-color: #f4511e !important;
}

.v-application .deep-orange--text.text--darken-1 {
  color: #f4511e !important;
  caret-color: #f4511e !important;
}

.v-application .deep-orange.darken-2 {
  background-color: #e64a19 !important;
  border-color: #e64a19 !important;
}

.v-application .deep-orange--text.text--darken-2 {
  color: #e64a19 !important;
  caret-color: #e64a19 !important;
}

.v-application .deep-orange.darken-3 {
  background-color: #d84315 !important;
  border-color: #d84315 !important;
}

.v-application .deep-orange--text.text--darken-3 {
  color: #d84315 !important;
  caret-color: #d84315 !important;
}

.v-application .deep-orange.darken-4 {
  background-color: #bf360c !important;
  border-color: #bf360c !important;
}

.v-application .deep-orange--text.text--darken-4 {
  color: #bf360c !important;
  caret-color: #bf360c !important;
}

.v-application .deep-orange.accent-1 {
  background-color: #ff9e80 !important;
  border-color: #ff9e80 !important;
}

.v-application .deep-orange--text.text--accent-1 {
  color: #ff9e80 !important;
  caret-color: #ff9e80 !important;
}

.v-application .deep-orange.accent-2 {
  background-color: #ff6e40 !important;
  border-color: #ff6e40 !important;
}

.v-application .deep-orange--text.text--accent-2 {
  color: #ff6e40 !important;
  caret-color: #ff6e40 !important;
}

.v-application .deep-orange.accent-3 {
  background-color: #ff3d00 !important;
  border-color: #ff3d00 !important;
}

.v-application .deep-orange--text.text--accent-3 {
  color: #ff3d00 !important;
  caret-color: #ff3d00 !important;
}

.v-application .deep-orange.accent-4 {
  background-color: #dd2c00 !important;
  border-color: #dd2c00 !important;
}

.v-application .deep-orange--text.text--accent-4 {
  color: #dd2c00 !important;
  caret-color: #dd2c00 !important;
}

.v-application .brown {
  background-color: #795548 !important;
  border-color: #795548 !important;
}

.v-application .brown--text {
  color: #795548 !important;
  caret-color: #795548 !important;
}

.v-application .brown.lighten-5 {
  background-color: #efebe9 !important;
  border-color: #efebe9 !important;
}

.v-application .brown--text.text--lighten-5 {
  color: #efebe9 !important;
  caret-color: #efebe9 !important;
}

.v-application .brown.lighten-4 {
  background-color: #d7ccc8 !important;
  border-color: #d7ccc8 !important;
}

.v-application .brown--text.text--lighten-4 {
  color: #d7ccc8 !important;
  caret-color: #d7ccc8 !important;
}

.v-application .brown.lighten-3 {
  background-color: #bcaaa4 !important;
  border-color: #bcaaa4 !important;
}

.v-application .brown--text.text--lighten-3 {
  color: #bcaaa4 !important;
  caret-color: #bcaaa4 !important;
}

.v-application .brown.lighten-2 {
  background-color: #a1887f !important;
  border-color: #a1887f !important;
}

.v-application .brown--text.text--lighten-2 {
  color: #a1887f !important;
  caret-color: #a1887f !important;
}

.v-application .brown.lighten-1 {
  background-color: #8d6e63 !important;
  border-color: #8d6e63 !important;
}

.v-application .brown--text.text--lighten-1 {
  color: #8d6e63 !important;
  caret-color: #8d6e63 !important;
}

.v-application .brown.darken-1 {
  background-color: #6d4c41 !important;
  border-color: #6d4c41 !important;
}

.v-application .brown--text.text--darken-1 {
  color: #6d4c41 !important;
  caret-color: #6d4c41 !important;
}

.v-application .brown.darken-2 {
  background-color: #5d4037 !important;
  border-color: #5d4037 !important;
}

.v-application .brown--text.text--darken-2 {
  color: #5d4037 !important;
  caret-color: #5d4037 !important;
}

.v-application .brown.darken-3 {
  background-color: #4e342e !important;
  border-color: #4e342e !important;
}

.v-application .brown--text.text--darken-3 {
  color: #4e342e !important;
  caret-color: #4e342e !important;
}

.v-application .brown.darken-4 {
  background-color: #3e2723 !important;
  border-color: #3e2723 !important;
}

.v-application .brown--text.text--darken-4 {
  color: #3e2723 !important;
  caret-color: #3e2723 !important;
}

.v-application .blue-grey {
  background-color: #607d8b !important;
  border-color: #607d8b !important;
}

.v-application .blue-grey--text {
  color: #607d8b !important;
  caret-color: #607d8b !important;
}

.v-application .blue-grey.lighten-5 {
  background-color: #eceff1 !important;
  border-color: #eceff1 !important;
}

.v-application .blue-grey--text.text--lighten-5 {
  color: #eceff1 !important;
  caret-color: #eceff1 !important;
}

.v-application .blue-grey.lighten-4 {
  background-color: #cfd8dc !important;
  border-color: #cfd8dc !important;
}

.v-application .blue-grey--text.text--lighten-4 {
  color: #cfd8dc !important;
  caret-color: #cfd8dc !important;
}

.v-application .blue-grey.lighten-3 {
  background-color: #b0bec5 !important;
  border-color: #b0bec5 !important;
}

.v-application .blue-grey--text.text--lighten-3 {
  color: #b0bec5 !important;
  caret-color: #b0bec5 !important;
}

.v-application .blue-grey.lighten-2 {
  background-color: #90a4ae !important;
  border-color: #90a4ae !important;
}

.v-application .blue-grey--text.text--lighten-2 {
  color: #90a4ae !important;
  caret-color: #90a4ae !important;
}

.v-application .blue-grey.lighten-1 {
  background-color: #78909c !important;
  border-color: #78909c !important;
}

.v-application .blue-grey--text.text--lighten-1 {
  color: #78909c !important;
  caret-color: #78909c !important;
}

.v-application .blue-grey.darken-1 {
  background-color: #546e7a !important;
  border-color: #546e7a !important;
}

.v-application .blue-grey--text.text--darken-1 {
  color: #546e7a !important;
  caret-color: #546e7a !important;
}

.v-application .blue-grey.darken-2 {
  background-color: #455a64 !important;
  border-color: #455a64 !important;
}

.v-application .blue-grey--text.text--darken-2 {
  color: #455a64 !important;
  caret-color: #455a64 !important;
}

.v-application .blue-grey.darken-3 {
  background-color: #37474f !important;
  border-color: #37474f !important;
}

.v-application .blue-grey--text.text--darken-3 {
  color: #37474f !important;
  caret-color: #37474f !important;
}

.v-application .blue-grey.darken-4 {
  background-color: #263238 !important;
  border-color: #263238 !important;
}

.v-application .blue-grey--text.text--darken-4 {
  color: #263238 !important;
  caret-color: #263238 !important;
}

.v-application .grey {
  background-color: #9e9e9e !important;
  border-color: #9e9e9e !important;
}

.v-application .grey--text {
  color: #9e9e9e !important;
  caret-color: #9e9e9e !important;
}

.v-application .grey.lighten-5 {
  background-color: #fafafa !important;
  border-color: #fafafa !important;
}

.v-application .grey--text.text--lighten-5 {
  color: #fafafa !important;
  caret-color: #fafafa !important;
}

.v-application .grey.lighten-4 {
  background-color: #f5f5f5 !important;
  border-color: #f5f5f5 !important;
}

.v-application .grey--text.text--lighten-4 {
  color: #f5f5f5 !important;
  caret-color: #f5f5f5 !important;
}

.v-application .grey.lighten-3 {
  background-color: #eeeeee !important;
  border-color: #eeeeee !important;
}

.v-application .grey--text.text--lighten-3 {
  color: #eeeeee !important;
  caret-color: #eeeeee !important;
}

.v-application .grey.lighten-2 {
  background-color: #e0e0e0 !important;
  border-color: #e0e0e0 !important;
}

.v-application .grey--text.text--lighten-2 {
  color: #e0e0e0 !important;
  caret-color: #e0e0e0 !important;
}

.v-application .grey.lighten-1 {
  background-color: #bdbdbd !important;
  border-color: #bdbdbd !important;
}

.v-application .grey--text.text--lighten-1 {
  color: #bdbdbd !important;
  caret-color: #bdbdbd !important;
}

.v-application .grey.darken-1 {
  background-color: #757575 !important;
  border-color: #757575 !important;
}

.v-application .grey--text.text--darken-1 {
  color: #757575 !important;
  caret-color: #757575 !important;
}

.v-application .grey.darken-2 {
  background-color: #616161 !important;
  border-color: #616161 !important;
}

.v-application .grey--text.text--darken-2 {
  color: #616161 !important;
  caret-color: #616161 !important;
}

.v-application .grey.darken-3 {
  background-color: #424242 !important;
  border-color: #424242 !important;
}

.v-application .grey--text.text--darken-3 {
  color: #424242 !important;
  caret-color: #424242 !important;
}

.v-application .grey.darken-4 {
  background-color: #212121 !important;
  border-color: #212121 !important;
}

.v-application .grey--text.text--darken-4 {
  color: #212121 !important;
  caret-color: #212121 !important;
}

.v-application .shades.black {
  background-color: #000000 !important;
  border-color: #000000 !important;
}

.v-application .shades--text.text--black {
  color: #000000 !important;
  caret-color: #000000 !important;
}

.v-application .shades.white {
  background-color: #FFFFFF !important;
  border-color: #FFFFFF !important;
}

.v-application .shades--text.text--white {
  color: #FFFFFF !important;
  caret-color: #FFFFFF !important;
}

.v-application .shades.transparent {
  background-color: transparent !important;
  border-color: transparent !important;
}

.v-application .shades--text.text--transparent {
  color: transparent !important;
  caret-color: transparent !important;
}

/*!
 * ress.css • v2.0.4
 * MIT License
 * github.com/filipelinhares/ress
 */
/* # =================================================================
   # Global selectors
   # ================================================================= */
html {
  box-sizing: border-box;
  overflow-y: scroll;
  /* All browsers without overlaying scrollbars */
  -webkit-text-size-adjust: 100%;
  /* Prevent adjustments of font size after orientation changes in iOS */
  word-break: normal;
  -moz-tab-size: 4;
  tab-size: 4;
}

*,
::before,
::after {
  background-repeat: no-repeat;
  /* Set `background-repeat: no-repeat` to all elements and pseudo elements */
  box-sizing: inherit;
}

::before,
::after {
  text-decoration: inherit;
  /* Inherit text-decoration and vertical align to ::before and ::after pseudo elements */
  vertical-align: inherit;
}

* {
  padding: 0;
  /* Reset `padding` and `margin` of all elements */
  margin: 0;
}

/* # =================================================================
   # General elements
   # ================================================================= */
hr {
  overflow: visible;
  /* Show the overflow in Edge and IE */
  height: 0;
  /* Add the correct box sizing in Firefox */
}

details,
main {
  display: block;
  /* Render the `main` element consistently in IE. */
}

summary {
  display: list-item;
  /* Add the correct display in all browsers */
}

small {
  font-size: 80%;
  /* Set font-size to 80% in `small` elements */
}

[hidden] {
  display: none;
  /* Add the correct display in IE */
}

abbr[title] {
  border-bottom: none;
  /* Remove the bottom border in Chrome 57 */
  /* Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari */
  text-decoration: underline;
  text-decoration: underline dotted;
}

a {
  background-color: transparent;
  /* Remove the gray background on active links in IE 10 */
}

a:active,
a:hover {
  outline-width: 0;
  /* Remove the outline when hovering in all browsers */
}

code,
kbd,
pre,
samp {
  font-family: monospace, monospace;
  /* Specify the font family of code elements */
}

pre {
  font-size: 1em;
  /* Correct the odd `em` font sizing in all browsers */
}

b,
strong {
  font-weight: bolder;
  /* Add the correct font weight in Chrome, Edge, and Safari */
}

/* https://gist.github.com/unruthless/413930 */
sub,
sup {
  font-size: 75%;
  line-height: 0;
  position: relative;
  vertical-align: baseline;
}

sub {
  bottom: -0.25em;
}

sup {
  top: -0.5em;
}

/* # =================================================================
   # Forms
   # ================================================================= */
input {
  border-radius: 0;
}

/* Replace pointer cursor in disabled elements */
[disabled] {
  cursor: default;
}

[type=number]::-webkit-inner-spin-button,
[type=number]::-webkit-outer-spin-button {
  height: auto;
  /* Correct the cursor style of increment and decrement buttons in Chrome */
}

[type=search] {
  -webkit-appearance: textfield;
  /* Correct the odd appearance in Chrome and Safari */
  outline-offset: -2px;
  /* Correct the outline style in Safari */
}

[type=search]::-webkit-search-cancel-button,
[type=search]::-webkit-search-decoration {
  -webkit-appearance: none;
  /* Remove the inner padding in Chrome and Safari on macOS */
}

textarea {
  overflow: auto;
  /* Internet Explorer 11+ */
  resize: vertical;
  /* Specify textarea resizability */
}

button,
input,
optgroup,
select,
textarea {
  font: inherit;
  /* Specify font inheritance of form elements */
}

optgroup {
  font-weight: bold;
  /* Restore the font weight unset by the previous rule */
}

button {
  overflow: visible;
  /* Address `overflow` set to `hidden` in IE 8/9/10/11 */
}

button,
select {
  text-transform: none;
  /* Firefox 40+, Internet Explorer 11- */
}

/* Apply cursor pointer to button elements */
button,
[type=button],
[type=reset],
[type=submit],
[role=button] {
  cursor: pointer;
  color: inherit;
}

/* Remove inner padding and border in Firefox 4+ */
button::-moz-focus-inner,
[type=button]::-moz-focus-inner,
[type=reset]::-moz-focus-inner,
[type=submit]::-moz-focus-inner {
  border-style: none;
  padding: 0;
}

/* Replace focus style removed in the border reset above */
button:-moz-focusring,
[type=button]::-moz-focus-inner,
[type=reset]::-moz-focus-inner,
[type=submit]::-moz-focus-inner {
  outline: 1px dotted ButtonText;
}

button,
html [type=button],
[type=reset],
[type=submit] {
  -webkit-appearance: button;
  /* Correct the inability to style clickable types in iOS */
}

/* Remove the default button styling in all browsers */
button,
input,
select,
textarea {
  background-color: transparent;
  border-style: none;
}

/* Style select like a standard input */
select {
  -moz-appearance: none;
  /* Firefox 36+ */
  -webkit-appearance: none;
  /* Chrome 41+ */
}

select::-ms-expand {
  display: none;
  /* Internet Explorer 11+ */
}

select::-ms-value {
  color: currentColor;
  /* Internet Explorer 11+ */
}

legend {
  border: 0;
  /* Correct `color` not being inherited in IE 8/9/10/11 */
  color: inherit;
  /* Correct the color inheritance from `fieldset` elements in IE */
  display: table;
  /* Correct the text wrapping in Edge and IE */
  max-width: 100%;
  /* Correct the text wrapping in Edge and IE */
  white-space: normal;
  /* Correct the text wrapping in Edge and IE */
  max-width: 100%;
  /* Correct the text wrapping in Edge 18- and IE */
}

::-webkit-file-upload-button {
  /* Correct the inability to style clickable types in iOS and Safari */
  -webkit-appearance: button;
  color: inherit;
  font: inherit;
  /* Change font properties to `inherit` in Chrome and Safari */
}

/* # =================================================================
   # Specify media element style
   # ================================================================= */
img {
  border-style: none;
  /* Remove border when inside `a` element in IE 8/9/10 */
}

/* Add the correct vertical alignment in Chrome, Firefox, and Opera */
progress {
  vertical-align: baseline;
}

/* # =================================================================
   # Accessibility
   # ================================================================= */
/* Hide content from screens but not screenreaders */
@media screen {
  [hidden~=screen] {
    display: inherit;
  }

  [hidden~=screen]:not(:active):not(:focus):not(:target) {
    position: absolute !important;
    clip: rect(0 0 0 0) !important;
  }
}
/* Specify the progress cursor of updating elements */
[aria-busy=true] {
  cursor: progress;
}

/* Specify the pointer cursor of trigger elements */
[aria-controls] {
  cursor: pointer;
}

/* Specify the unstyled cursor of disabled, not-editable, or otherwise inoperable elements */
[aria-disabled=true] {
  cursor: default;
}

.v-application .elevation-24 {
  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) !important;
}

.v-application .elevation-23 {
  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) !important;
}

.v-application .elevation-22 {
  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) !important;
}

.v-application .elevation-21 {
  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) !important;
}

.v-application .elevation-20 {
  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) !important;
}

.v-application .elevation-19 {
  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) !important;
}

.v-application .elevation-18 {
  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) !important;
}

.v-application .elevation-17 {
  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) !important;
}

.v-application .elevation-16 {
  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) !important;
}

.v-application .elevation-15 {
  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) !important;
}

.v-application .elevation-14 {
  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) !important;
}

.v-application .elevation-13 {
  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) !important;
}

.v-application .elevation-12 {
  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) !important;
}

.v-application .elevation-11 {
  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) !important;
}

.v-application .elevation-10 {
  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) !important;
}

.v-application .elevation-9 {
  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) !important;
}

.v-application .elevation-8 {
  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) !important;
}

.v-application .elevation-7 {
  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) !important;
}

.v-application .elevation-6 {
  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) !important;
}

.v-application .elevation-5 {
  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) !important;
}

.v-application .elevation-4 {
  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) !important;
}

.v-application .elevation-3 {
  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) !important;
}

.v-application .elevation-2 {
  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) !important;
}

.v-application .elevation-1 {
  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) !important;
}

.v-application .elevation-0 {
  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) !important;
}

.carousel-transition-enter {
  transform: translate(100%, 0);
}
.carousel-transition-leave, .carousel-transition-leave-to {
  position: absolute;
  top: 0;
  transform: translate(-100%, 0);
}

.carousel-reverse-transition-enter {
  transform: translate(-100%, 0);
}
.carousel-reverse-transition-leave, .carousel-reverse-transition-leave-to {
  position: absolute;
  top: 0;
  transform: translate(100%, 0);
}

.dialog-transition-enter-active, .dialog-transition-leave-active {
  pointer-events: none !important;
}
.dialog-transition-enter, .dialog-transition-leave-to {
  transform: scale(0.5);
  opacity: 0;
}
.dialog-transition-enter-to, .dialog-transition-leave {
  opacity: 1;
}

.dialog-bottom-transition-enter, .dialog-bottom-transition-leave-to {
  transform: translateY(100%);
}

.dialog-top-transition-enter, .dialog-top-transition-leave-to {
  transform: translateY(-100%);
}

.picker-transition-enter-active, .picker-transition-leave-active,
.picker-reverse-transition-enter-active,
.picker-reverse-transition-leave-active {
  transition: 0.3s cubic-bezier(0, 0, 0.2, 1);
}
.picker-transition-enter, .picker-transition-leave-to,
.picker-reverse-transition-enter,
.picker-reverse-transition-leave-to {
  opacity: 0;
}
.picker-transition-leave, .picker-transition-leave-active, .picker-transition-leave-to,
.picker-reverse-transition-leave,
.picker-reverse-transition-leave-active,
.picker-reverse-transition-leave-to {
  position: absolute !important;
}

.picker-transition-enter {
  transform: translate(0, 100%);
}
.picker-transition-leave-to {
  transform: translate(0, -100%);
}

.picker-reverse-transition-enter {
  transform: translate(0, -100%);
}
.picker-reverse-transition-leave-to {
  transform: translate(0, 100%);
}

.picker-title-transition-enter-to, .picker-title-transition-leave {
  transform: translate(0, 0);
}
.picker-title-transition-enter {
  transform: translate(-100%, 0);
}
.picker-title-transition-leave-to {
  opacity: 0;
  transform: translate(100%, 0);
}
.picker-title-transition-leave, .picker-title-transition-leave-to, .picker-title-transition-leave-active {
  position: absolute !important;
}

.tab-transition-enter {
  transform: translate(100%, 0);
}
.tab-transition-leave, .tab-transition-leave-active {
  position: absolute;
  top: 0;
}
.tab-transition-leave-to {
  position: absolute;
  transform: translate(-100%, 0);
}

.tab-reverse-transition-enter {
  transform: translate(-100%, 0);
}
.tab-reverse-transition-leave, .tab-reverse-transition-leave-to {
  top: 0;
  position: absolute;
  transform: translate(100%, 0);
}

.expand-transition-enter-active, .expand-transition-leave-active {
  transition: 0.3s cubic-bezier(0.25, 0.8, 0.5, 1) !important;
}
.expand-transition-move {
  transition: transform 0.6s;
}

.expand-x-transition-enter-active, .expand-x-transition-leave-active {
  transition: 0.3s cubic-bezier(0.25, 0.8, 0.5, 1) !important;
}
.expand-x-transition-move {
  transition: transform 0.6s;
}

.scale-transition-enter-active, .scale-transition-leave-active {
  transition: 0.3s cubic-bezier(0.25, 0.8, 0.5, 1) !important;
}
.scale-transition-move {
  transition: transform 0.6s;
}
.scale-transition-enter, .scale-transition-leave, .scale-transition-leave-to {
  opacity: 0;
  transform: scale(0);
}

.scale-rotate-transition-enter-active, .scale-rotate-transition-leave-active {
  transition: 0.3s cubic-bezier(0.25, 0.8, 0.5, 1) !important;
}
.scale-rotate-transition-move {
  transition: transform 0.6s;
}
.scale-rotate-transition-enter, .scale-rotate-transition-leave, .scale-rotate-transition-leave-to {
  opacity: 0;
  transform: scale(0) rotate(-45deg);
}

.scale-rotate-reverse-transition-enter-active, .scale-rotate-reverse-transition-leave-active {
  transition: 0.3s cubic-bezier(0.25, 0.8, 0.5, 1) !important;
}
.scale-rotate-reverse-transition-move {
  transition: transform 0.6s;
}
.scale-rotate-reverse-transition-enter, .scale-rotate-reverse-transition-leave, .scale-rotate-reverse-transition-leave-to {
  opacity: 0;
  transform: scale(0) rotate(45deg);
}

.message-transition-enter-active, .message-transition-leave-active {
  transition: 0.3s cubic-bezier(0.25, 0.8, 0.5, 1) !important;
}
.message-transition-move {
  transition: transform 0.6s;
}
.message-transition-enter, .message-transition-leave-to {
  opacity: 0;
  transform: translateY(-15px);
}
.message-transition-leave, .message-transition-leave-active {
  position: absolute;
}

.slide-y-transition-enter-active, .slide-y-transition-leave-active {
  transition: 0.3s cubic-bezier(0.25, 0.8, 0.5, 1) !important;
}
.slide-y-transition-move {
  transition: transform 0.6s;
}
.slide-y-transition-enter, .slide-y-transition-leave-to {
  opacity: 0;
  transform: translateY(-15px);
}

.slide-y-reverse-transition-enter-active, .slide-y-reverse-transition-leave-active {
  transition: 0.3s cubic-bezier(0.25, 0.8, 0.5, 1) !important;
}
.slide-y-reverse-transition-move {
  transition: transform 0.6s;
}
.slide-y-reverse-transition-enter, .slide-y-reverse-transition-leave-to {
  opacity: 0;
  transform: translateY(15px);
}

.scroll-y-transition-enter-active, .scroll-y-transition-leave-active {
  transition: 0.3s cubic-bezier(0.25, 0.8, 0.5, 1) !important;
}
.scroll-y-transition-move {
  transition: transform 0.6s;
}
.scroll-y-transition-enter, .scroll-y-transition-leave-to {
  opacity: 0;
}
.scroll-y-transition-enter {
  transform: translateY(-15px);
}
.scroll-y-transition-leave-to {
  transform: translateY(15px);
}

.scroll-y-reverse-transition-enter-active, .scroll-y-reverse-transition-leave-active {
  transition: 0.3s cubic-bezier(0.25, 0.8, 0.5, 1) !important;
}
.scroll-y-reverse-transition-move {
  transition: transform 0.6s;
}
.scroll-y-reverse-transition-enter, .scroll-y-reverse-transition-leave-to {
  opacity: 0;
}
.scroll-y-reverse-transition-enter {
  transform: translateY(15px);
}
.scroll-y-reverse-transition-leave-to {
  transform: translateY(-15px);
}

.scroll-x-transition-enter-active, .scroll-x-transition-leave-active {
  transition: 0.3s cubic-bezier(0.25, 0.8, 0.5, 1) !important;
}
.scroll-x-transition-move {
  transition: transform 0.6s;
}
.scroll-x-transition-enter, .scroll-x-transition-leave-to {
  opacity: 0;
}
.scroll-x-transition-enter {
  transform: translateX(-15px);
}
.scroll-x-transition-leave-to {
  transform: translateX(15px);
}

.scroll-x-reverse-transition-enter-active, .scroll-x-reverse-transition-leave-active {
  transition: 0.3s cubic-bezier(0.25, 0.8, 0.5, 1) !important;
}
.scroll-x-reverse-transition-move {
  transition: transform 0.6s;
}
.scroll-x-reverse-transition-enter, .scroll-x-reverse-transition-leave-to {
  opacity: 0;
}
.scroll-x-reverse-transition-enter {
  transform: translateX(15px);
}
.scroll-x-reverse-transition-leave-to {
  transform: translateX(-15px);
}

.slide-x-transition-enter-active, .slide-x-transition-leave-active {
  transition: 0.3s cubic-bezier(0.25, 0.8, 0.5, 1) !important;
}
.slide-x-transition-move {
  transition: transform 0.6s;
}
.slide-x-transition-enter, .slide-x-transition-leave-to {
  opacity: 0;
  transform: translateX(-15px);
}

.slide-x-reverse-transition-enter-active, .slide-x-reverse-transition-leave-active {
  transition: 0.3s cubic-bezier(0.25, 0.8, 0.5, 1) !important;
}
.slide-x-reverse-transition-move {
  transition: transform 0.6s;
}
.slide-x-reverse-transition-enter, .slide-x-reverse-transition-leave-to {
  opacity: 0;
  transform: translateX(15px);
}

.fade-transition-enter-active, .fade-transition-leave-active {
  transition: 0.3s cubic-bezier(0.25, 0.8, 0.5, 1) !important;
}
.fade-transition-move {
  transition: transform 0.6s;
}
.fade-transition-enter, .fade-transition-leave-to {
  opacity: 0 !important;
}

.fab-transition-enter-active, .fab-transition-leave-active {
  transition: 0.3s cubic-bezier(0.25, 0.8, 0.5, 1) !important;
}
.fab-transition-move {
  transition: transform 0.6s;
}
.fab-transition-enter, .fab-transition-leave-to {
  transform: scale(0) rotate(-45deg);
}

.v-application .blockquote {
  padding: 16px 0 16px 24px;
  font-size: 18px;
  font-weight: 300;
}

.v-application code, .v-application kbd {
  border-radius: 3px;
  font-size: 85%;
  font-weight: normal;
}
.v-application code {
  padding: 0.2em 0.4em;
}
.v-application kbd {
  padding: 0.2em 0.4rem;
  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.v-application code {
  background-color: rgba(0, 0, 0, 0.05);
  color: currentColor;
}
.theme--light.v-application kbd {
  background: #212529;
  color: #FFFFFF;
}

.theme--dark.v-application code {
  background-color: rgba(255, 255, 255, 0.1);
  color: currentColor;
}
.theme--dark.v-application kbd {
  background: #212529;
  color: #FFFFFF;
}

html {
  font-size: 16px;
  overflow-x: hidden;
  text-rendering: optimizeLegibility;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}

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

.v-application {
  font-family: "Roboto", sans-serif;
  line-height: 1.5;
}
.v-application ::-ms-clear,
.v-application ::-ms-reveal {
  display: none;
}

@supports (-webkit-touch-callout: none) {
  body {
    cursor: pointer;
  }
}
.v-application .theme--light.heading {
  color: rgba(0, 0, 0, 0.87);
}

.v-application .theme--dark.heading {
  color: #FFFFFF;
}

.v-application ul, .v-application ol {
  padding-left: 24px;
}

.v-application .display-4 {
  font-size: 6rem !important;
  font-weight: 300;
  line-height: 6rem;
  letter-spacing: -0.015625em !important;
  font-family: "Roboto", sans-serif !important;
}
.v-application .display-3 {
  font-size: 3.75rem !important;
  font-weight: 300;
  line-height: 3.75rem;
  letter-spacing: -0.0083333333em !important;
  font-family: "Roboto", sans-serif !important;
}
.v-application .display-2 {
  font-size: 3rem !important;
  font-weight: 400;
  line-height: 3.125rem;
  letter-spacing: normal !important;
  font-family: "Roboto", sans-serif !important;
}
.v-application .display-1 {
  font-size: 2.125rem !important;
  font-weight: 400;
  line-height: 2.5rem;
  letter-spacing: 0.0073529412em !important;
  font-family: "Roboto", sans-serif !important;
}
.v-application .headline {
  font-size: 1.5rem !important;
  font-weight: 400;
  line-height: 2rem;
  letter-spacing: normal !important;
  font-family: "Roboto", sans-serif !important;
}
.v-application .title {
  font-size: 1.25rem !important;
  font-weight: 500;
  line-height: 2rem;
  letter-spacing: 0.0125em !important;
  font-family: "Roboto", sans-serif !important;
}
.v-application .subtitle-2 {
  font-size: 0.875rem !important;
  font-weight: 500;
  letter-spacing: 0.0071428571em !important;
  line-height: 1.375rem;
  font-family: "Roboto", sans-serif !important;
}
.v-application .subtitle-1 {
  font-size: 1rem !important;
  font-weight: normal;
  letter-spacing: 0.009375em !important;
  line-height: 1.75rem;
  font-family: "Roboto", sans-serif !important;
}
.v-application .body-2 {
  font-size: 0.875rem !important;
  font-weight: 400;
  letter-spacing: 0.0178571429em !important;
  line-height: 1.25rem;
  font-family: "Roboto", sans-serif !important;
}
.v-application .body-1 {
  font-size: 1rem !important;
  font-weight: 400;
  letter-spacing: 0.03125em !important;
  line-height: 1.5rem;
  font-family: "Roboto", sans-serif !important;
}
.v-application .caption {
  font-size: 0.75rem !important;
  font-weight: 400;
  letter-spacing: 0.0333333333em !important;
  line-height: 1.25rem;
  font-family: "Roboto", sans-serif !important;
}
.v-application .overline {
  font-size: 0.75rem !important;
  font-weight: 500;
  letter-spacing: 0.1666666667em !important;
  line-height: 2rem;
  text-transform: uppercase;
  font-family: "Roboto", sans-serif !important;
}
.v-application p {
  margin-bottom: 16px;
}

@media only print {
  .v-application .hidden-print-only {
    display: none !important;
  }
}
@media only screen {
  .v-application .hidden-screen-only {
    display: none !important;
  }
}
@media only screen and (max-width: 599.98px) {
  .v-application .hidden-xs-only {
    display: none !important;
  }
}
@media only screen and (min-width: 600px) and (max-width: 959.98px) {
  .v-application .hidden-sm-only {
    display: none !important;
  }
}
@media only screen and (max-width: 959.98px) {
  .v-application .hidden-sm-and-down {
    display: none !important;
  }
}
@media only screen and (min-width: 600px) {
  .v-application .hidden-sm-and-up {
    display: none !important;
  }
}
@media only screen and (min-width: 960px) and (max-width: 1263.98px) {
  .v-application .hidden-md-only {
    display: none !important;
  }
}
@media only screen and (max-width: 1263.98px) {
  .v-application .hidden-md-and-down {
    display: none !important;
  }
}
@media only screen and (min-width: 960px) {
  .v-application .hidden-md-and-up {
    display: none !important;
  }
}
@media only screen and (min-width: 1264px) and (max-width: 1903.98px) {
  .v-application .hidden-lg-only {
    display: none !important;
  }
}
@media only screen and (max-width: 1903.98px) {
  .v-application .hidden-lg-and-down {
    display: none !important;
  }
}
@media only screen and (min-width: 1264px) {
  .v-application .hidden-lg-and-up {
    display: none !important;
  }
}
@media only screen and (min-width: 1904px) {
  .v-application .hidden-xl-only {
    display: none !important;
  }
}

.d-sr-only,
.d-sr-only-focusable:not(:focus) {
  border: 0 !important;
  clip: rect(0, 0, 0, 0) !important;
  height: 1px !important;
  margin: -1px !important;
  overflow: hidden !important;
  padding: 0 !important;
  position: absolute !important;
  white-space: nowrap !important;
  width: 1px !important;
}

.v-application .font-weight-thin {
  font-weight: 100 !important;
}
.v-application .font-weight-light {
  font-weight: 300 !important;
}
.v-application .font-weight-regular {
  font-weight: 400 !important;
}
.v-application .font-weight-medium {
  font-weight: 500 !important;
}
.v-application .font-weight-bold {
  font-weight: 700 !important;
}
.v-application .font-weight-black {
  font-weight: 900 !important;
}
.v-application .font-italic {
  font-style: italic !important;
}

.v-application .transition-fast-out-slow-in {
  transition: 0.3s cubic-bezier(0.4, 0, 0.2, 1) !important;
}
.v-application .transition-linear-out-slow-in {
  transition: 0.3s cubic-bezier(0, 0, 0.2, 1) !important;
}
.v-application .transition-fast-out-linear-in {
  transition: 0.3s cubic-bezier(0.4, 0, 1, 1) !important;
}
.v-application .transition-ease-in-out {
  transition: 0.3s cubic-bezier(0.4, 0, 0.6, 1) !important;
}
.v-application .transition-fast-in-fast-out {
  transition: 0.3s cubic-bezier(0.25, 0.8, 0.25, 1) !important;
}
.v-application .transition-swing {
  transition: 0.3s cubic-bezier(0.25, 0.8, 0.5, 1) !important;
}

.v-application .overflow-auto {
  overflow: auto !important;
}

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

.v-application .overflow-visible {
  overflow: visible !important;
}

.v-application .overflow-x-auto {
  overflow-x: auto !important;
}

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

.v-application .overflow-y-auto {
  overflow-y: auto !important;
}

.v-application .overflow-y-hidden {
  overflow-y: hidden !important;
}

.v-application .d-none {
  display: none !important;
}

.v-application .d-inline {
  display: inline !important;
}

.v-application .d-inline-block {
  display: inline-block !important;
}

.v-application .d-block {
  display: block !important;
}

.v-application .d-table {
  display: table !important;
}

.v-application .d-table-row {
  display: table-row !important;
}

.v-application .d-table-cell {
  display: table-cell !important;
}

.v-application .d-flex {
  display: flex !important;
}

.v-application .d-inline-flex {
  display: inline-flex !important;
}

.v-application .float-none {
  float: none !important;
}

.v-application .float-left {
  float: left !important;
}

.v-application .float-right {
  float: right !important;
}

.v-application--is-rtl .float-end {
  float: left !important;
}

.v-application--is-rtl .float-start {
  float: right !important;
}

.v-application--is-ltr .float-end {
  float: right !important;
}

.v-application--is-ltr .float-start {
  float: left !important;
}

.v-application .flex-fill {
  flex: 1 1 auto !important;
}

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

.v-application .flex-column {
  flex-direction: column !important;
}

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

.v-application .flex-column-reverse {
  flex-direction: column-reverse !important;
}

.v-application .flex-grow-0 {
  flex-grow: 0 !important;
}

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

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

.v-application .flex-shrink-1 {
  flex-shrink: 1 !important;
}

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

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

.v-application .flex-wrap-reverse {
  flex-wrap: wrap-reverse !important;
}

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

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

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

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

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

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

.v-application .align-end {
  align-items: flex-end !important;
}

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

.v-application .align-baseline {
  align-items: baseline !important;
}

.v-application .align-stretch {
  align-items: stretch !important;
}

.v-application .align-content-start {
  align-content: flex-start !important;
}

.v-application .align-content-end {
  align-content: flex-end !important;
}

.v-application .align-content-center {
  align-content: center !important;
}

.v-application .align-content-space-between {
  align-content: space-between !important;
}

.v-application .align-content-space-around {
  align-content: space-around !important;
}

.v-application .align-content-stretch {
  align-content: stretch !important;
}

.v-application .align-self-auto {
  align-self: auto !important;
}

.v-application .align-self-start {
  align-self: flex-start !important;
}

.v-application .align-self-end {
  align-self: flex-end !important;
}

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

.v-application .align-self-baseline {
  align-self: baseline !important;
}

.v-application .align-self-stretch {
  align-self: stretch !important;
}

.v-application .order-first {
  order: -1 !important;
}

.v-application .order-0 {
  order: 0 !important;
}

.v-application .order-1 {
  order: 1 !important;
}

.v-application .order-2 {
  order: 2 !important;
}

.v-application .order-3 {
  order: 3 !important;
}

.v-application .order-4 {
  order: 4 !important;
}

.v-application .order-5 {
  order: 5 !important;
}

.v-application .order-6 {
  order: 6 !important;
}

.v-application .order-7 {
  order: 7 !important;
}

.v-application .order-8 {
  order: 8 !important;
}

.v-application .order-9 {
  order: 9 !important;
}

.v-application .order-10 {
  order: 10 !important;
}

.v-application .order-11 {
  order: 11 !important;
}

.v-application .order-12 {
  order: 12 !important;
}

.v-application .order-last {
  order: 13 !important;
}

.v-application .ma-0 {
  margin: 0px !important;
}

.v-application .ma-1 {
  margin: 4px !important;
}

.v-application .ma-2 {
  margin: 8px !important;
}

.v-application .ma-3 {
  margin: 12px !important;
}

.v-application .ma-4 {
  margin: 16px !important;
}

.v-application .ma-5 {
  margin: 20px !important;
}

.v-application .ma-6 {
  margin: 24px !important;
}

.v-application .ma-7 {
  margin: 28px !important;
}

.v-application .ma-8 {
  margin: 32px !important;
}

.v-application .ma-9 {
  margin: 36px !important;
}

.v-application .ma-10 {
  margin: 40px !important;
}

.v-application .ma-11 {
  margin: 44px !important;
}

.v-application .ma-12 {
  margin: 48px !important;
}

.v-application .ma-13 {
  margin: 52px !important;
}

.v-application .ma-14 {
  margin: 56px !important;
}

.v-application .ma-15 {
  margin: 60px !important;
}

.v-application .ma-16 {
  margin: 64px !important;
}

.v-application .ma-auto {
  margin: auto !important;
}

.v-application .mx-0 {
  margin-right: 0px !important;
  margin-left: 0px !important;
}

.v-application .mx-1 {
  margin-right: 4px !important;
  margin-left: 4px !important;
}

.v-application .mx-2 {
  margin-right: 8px !important;
  margin-left: 8px !important;
}

.v-application .mx-3 {
  margin-right: 12px !important;
  margin-left: 12px !important;
}

.v-application .mx-4 {
  margin-right: 16px !important;
  margin-left: 16px !important;
}

.v-application .mx-5 {
  margin-right: 20px !important;
  margin-left: 20px !important;
}

.v-application .mx-6 {
  margin-right: 24px !important;
  margin-left: 24px !important;
}

.v-application .mx-7 {
  margin-right: 28px !important;
  margin-left: 28px !important;
}

.v-application .mx-8 {
  margin-right: 32px !important;
  margin-left: 32px !important;
}

.v-application .mx-9 {
  margin-right: 36px !important;
  margin-left: 36px !important;
}

.v-application .mx-10 {
  margin-right: 40px !important;
  margin-left: 40px !important;
}

.v-application .mx-11 {
  margin-right: 44px !important;
  margin-left: 44px !important;
}

.v-application .mx-12 {
  margin-right: 48px !important;
  margin-left: 48px !important;
}

.v-application .mx-13 {
  margin-right: 52px !important;
  margin-left: 52px !important;
}

.v-application .mx-14 {
  margin-right: 56px !important;
  margin-left: 56px !important;
}

.v-application .mx-15 {
  margin-right: 60px !important;
  margin-left: 60px !important;
}

.v-application .mx-16 {
  margin-right: 64px !important;
  margin-left: 64px !important;
}

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

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

.v-application .my-1 {
  margin-top: 4px !important;
  margin-bottom: 4px !important;
}

.v-application .my-2 {
  margin-top: 8px !important;
  margin-bottom: 8px !important;
}

.v-application .my-3 {
  margin-top: 12px !important;
  margin-bottom: 12px !important;
}

.v-application .my-4 {
  margin-top: 16px !important;
  margin-bottom: 16px !important;
}

.v-application .my-5 {
  margin-top: 20px !important;
  margin-bottom: 20px !important;
}

.v-application .my-6 {
  margin-top: 24px !important;
  margin-bottom: 24px !important;
}

.v-application .my-7 {
  margin-top: 28px !important;
  margin-bottom: 28px !important;
}

.v-application .my-8 {
  margin-top: 32px !important;
  margin-bottom: 32px !important;
}

.v-application .my-9 {
  margin-top: 36px !important;
  margin-bottom: 36px !important;
}

.v-application .my-10 {
  margin-top: 40px !important;
  margin-bottom: 40px !important;
}

.v-application .my-11 {
  margin-top: 44px !important;
  margin-bottom: 44px !important;
}

.v-application .my-12 {
  margin-top: 48px !important;
  margin-bottom: 48px !important;
}

.v-application .my-13 {
  margin-top: 52px !important;
  margin-bottom: 52px !important;
}

.v-application .my-14 {
  margin-top: 56px !important;
  margin-bottom: 56px !important;
}

.v-application .my-15 {
  margin-top: 60px !important;
  margin-bottom: 60px !important;
}

.v-application .my-16 {
  margin-top: 64px !important;
  margin-bottom: 64px !important;
}

.v-application .my-auto {
  margin-top: auto !important;
  margin-bottom: auto !important;
}

.v-application .mt-0 {
  margin-top: 0px !important;
}

.v-application .mt-1 {
  margin-top: 4px !important;
}

.v-application .mt-2 {
  margin-top: 8px !important;
}

.v-application .mt-3 {
  margin-top: 12px !important;
}

.v-application .mt-4 {
  margin-top: 16px !important;
}

.v-application .mt-5 {
  margin-top: 20px !important;
}

.v-application .mt-6 {
  margin-top: 24px !important;
}

.v-application .mt-7 {
  margin-top: 28px !important;
}

.v-application .mt-8 {
  margin-top: 32px !important;
}

.v-application .mt-9 {
  margin-top: 36px !important;
}

.v-application .mt-10 {
  margin-top: 40px !important;
}

.v-application .mt-11 {
  margin-top: 44px !important;
}

.v-application .mt-12 {
  margin-top: 48px !important;
}

.v-application .mt-13 {
  margin-top: 52px !important;
}

.v-application .mt-14 {
  margin-top: 56px !important;
}

.v-application .mt-15 {
  margin-top: 60px !important;
}

.v-application .mt-16 {
  margin-top: 64px !important;
}

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

.v-application .mr-0 {
  margin-right: 0px !important;
}

.v-application .mr-1 {
  margin-right: 4px !important;
}

.v-application .mr-2 {
  margin-right: 8px !important;
}

.v-application .mr-3 {
  margin-right: 12px !important;
}

.v-application .mr-4 {
  margin-right: 16px !important;
}

.v-application .mr-5 {
  margin-right: 20px !important;
}

.v-application .mr-6 {
  margin-right: 24px !important;
}

.v-application .mr-7 {
  margin-right: 28px !important;
}

.v-application .mr-8 {
  margin-right: 32px !important;
}

.v-application .mr-9 {
  margin-right: 36px !important;
}

.v-application .mr-10 {
  margin-right: 40px !important;
}

.v-application .mr-11 {
  margin-right: 44px !important;
}

.v-application .mr-12 {
  margin-right: 48px !important;
}

.v-application .mr-13 {
  margin-right: 52px !important;
}

.v-application .mr-14 {
  margin-right: 56px !important;
}

.v-application .mr-15 {
  margin-right: 60px !important;
}

.v-application .mr-16 {
  margin-right: 64px !important;
}

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

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

.v-application .mb-1 {
  margin-bottom: 4px !important;
}

.v-application .mb-2 {
  margin-bottom: 8px !important;
}

.v-application .mb-3 {
  margin-bottom: 12px !important;
}

.v-application .mb-4 {
  margin-bottom: 16px !important;
}

.v-application .mb-5 {
  margin-bottom: 20px !important;
}

.v-application .mb-6 {
  margin-bottom: 24px !important;
}

.v-application .mb-7 {
  margin-bottom: 28px !important;
}

.v-application .mb-8 {
  margin-bottom: 32px !important;
}

.v-application .mb-9 {
  margin-bottom: 36px !important;
}

.v-application .mb-10 {
  margin-bottom: 40px !important;
}

.v-application .mb-11 {
  margin-bottom: 44px !important;
}

.v-application .mb-12 {
  margin-bottom: 48px !important;
}

.v-application .mb-13 {
  margin-bottom: 52px !important;
}

.v-application .mb-14 {
  margin-bottom: 56px !important;
}

.v-application .mb-15 {
  margin-bottom: 60px !important;
}

.v-application .mb-16 {
  margin-bottom: 64px !important;
}

.v-application .mb-auto {
  margin-bottom: auto !important;
}

.v-application .ml-0 {
  margin-left: 0px !important;
}

.v-application .ml-1 {
  margin-left: 4px !important;
}

.v-application .ml-2 {
  margin-left: 8px !important;
}

.v-application .ml-3 {
  margin-left: 12px !important;
}

.v-application .ml-4 {
  margin-left: 16px !important;
}

.v-application .ml-5 {
  margin-left: 20px !important;
}

.v-application .ml-6 {
  margin-left: 24px !important;
}

.v-application .ml-7 {
  margin-left: 28px !important;
}

.v-application .ml-8 {
  margin-left: 32px !important;
}

.v-application .ml-9 {
  margin-left: 36px !important;
}

.v-application .ml-10 {
  margin-left: 40px !important;
}

.v-application .ml-11 {
  margin-left: 44px !important;
}

.v-application .ml-12 {
  margin-left: 48px !important;
}

.v-application .ml-13 {
  margin-left: 52px !important;
}

.v-application .ml-14 {
  margin-left: 56px !important;
}

.v-application .ml-15 {
  margin-left: 60px !important;
}

.v-application .ml-16 {
  margin-left: 64px !important;
}

.v-application .ml-auto {
  margin-left: auto !important;
}

.v-application--is-ltr .ms-0 {
  margin-left: 0px !important;
}

.v-application--is-rtl .ms-0 {
  margin-right: 0px !important;
}

.v-application--is-ltr .ms-1 {
  margin-left: 4px !important;
}

.v-application--is-rtl .ms-1 {
  margin-right: 4px !important;
}

.v-application--is-ltr .ms-2 {
  margin-left: 8px !important;
}

.v-application--is-rtl .ms-2 {
  margin-right: 8px !important;
}

.v-application--is-ltr .ms-3 {
  margin-left: 12px !important;
}

.v-application--is-rtl .ms-3 {
  margin-right: 12px !important;
}

.v-application--is-ltr .ms-4 {
  margin-left: 16px !important;
}

.v-application--is-rtl .ms-4 {
  margin-right: 16px !important;
}

.v-application--is-ltr .ms-5 {
  margin-left: 20px !important;
}

.v-application--is-rtl .ms-5 {
  margin-right: 20px !important;
}

.v-application--is-ltr .ms-6 {
  margin-left: 24px !important;
}

.v-application--is-rtl .ms-6 {
  margin-right: 24px !important;
}

.v-application--is-ltr .ms-7 {
  margin-left: 28px !important;
}

.v-application--is-rtl .ms-7 {
  margin-right: 28px !important;
}

.v-application--is-ltr .ms-8 {
  margin-left: 32px !important;
}

.v-application--is-rtl .ms-8 {
  margin-right: 32px !important;
}

.v-application--is-ltr .ms-9 {
  margin-left: 36px !important;
}

.v-application--is-rtl .ms-9 {
  margin-right: 36px !important;
}

.v-application--is-ltr .ms-10 {
  margin-left: 40px !important;
}

.v-application--is-rtl .ms-10 {
  margin-right: 40px !important;
}

.v-application--is-ltr .ms-11 {
  margin-left: 44px !important;
}

.v-application--is-rtl .ms-11 {
  margin-right: 44px !important;
}

.v-application--is-ltr .ms-12 {
  margin-left: 48px !important;
}

.v-application--is-rtl .ms-12 {
  margin-right: 48px !important;
}

.v-application--is-ltr .ms-13 {
  margin-left: 52px !important;
}

.v-application--is-rtl .ms-13 {
  margin-right: 52px !important;
}

.v-application--is-ltr .ms-14 {
  margin-left: 56px !important;
}

.v-application--is-rtl .ms-14 {
  margin-right: 56px !important;
}

.v-application--is-ltr .ms-15 {
  margin-left: 60px !important;
}

.v-application--is-rtl .ms-15 {
  margin-right: 60px !important;
}

.v-application--is-ltr .ms-16 {
  margin-left: 64px !important;
}

.v-application--is-rtl .ms-16 {
  margin-right: 64px !important;
}

.v-application--is-ltr .ms-auto {
  margin-left: auto !important;
}

.v-application--is-rtl .ms-auto {
  margin-right: auto !important;
}

.v-application--is-ltr .me-0 {
  margin-right: 0px !important;
}

.v-application--is-rtl .me-0 {
  margin-left: 0px !important;
}

.v-application--is-ltr .me-1 {
  margin-right: 4px !important;
}

.v-application--is-rtl .me-1 {
  margin-left: 4px !important;
}

.v-application--is-ltr .me-2 {
  margin-right: 8px !important;
}

.v-application--is-rtl .me-2 {
  margin-left: 8px !important;
}

.v-application--is-ltr .me-3 {
  margin-right: 12px !important;
}

.v-application--is-rtl .me-3 {
  margin-left: 12px !important;
}

.v-application--is-ltr .me-4 {
  margin-right: 16px !important;
}

.v-application--is-rtl .me-4 {
  margin-left: 16px !important;
}

.v-application--is-ltr .me-5 {
  margin-right: 20px !important;
}

.v-application--is-rtl .me-5 {
  margin-left: 20px !important;
}

.v-application--is-ltr .me-6 {
  margin-right: 24px !important;
}

.v-application--is-rtl .me-6 {
  margin-left: 24px !important;
}

.v-application--is-ltr .me-7 {
  margin-right: 28px !important;
}

.v-application--is-rtl .me-7 {
  margin-left: 28px !important;
}

.v-application--is-ltr .me-8 {
  margin-right: 32px !important;
}

.v-application--is-rtl .me-8 {
  margin-left: 32px !important;
}

.v-application--is-ltr .me-9 {
  margin-right: 36px !important;
}

.v-application--is-rtl .me-9 {
  margin-left: 36px !important;
}

.v-application--is-ltr .me-10 {
  margin-right: 40px !important;
}

.v-application--is-rtl .me-10 {
  margin-left: 40px !important;
}

.v-application--is-ltr .me-11 {
  margin-right: 44px !important;
}

.v-application--is-rtl .me-11 {
  margin-left: 44px !important;
}

.v-application--is-ltr .me-12 {
  margin-right: 48px !important;
}

.v-application--is-rtl .me-12 {
  margin-left: 48px !important;
}

.v-application--is-ltr .me-13 {
  margin-right: 52px !important;
}

.v-application--is-rtl .me-13 {
  margin-left: 52px !important;
}

.v-application--is-ltr .me-14 {
  margin-right: 56px !important;
}

.v-application--is-rtl .me-14 {
  margin-left: 56px !important;
}

.v-application--is-ltr .me-15 {
  margin-right: 60px !important;
}

.v-application--is-rtl .me-15 {
  margin-left: 60px !important;
}

.v-application--is-ltr .me-16 {
  margin-right: 64px !important;
}

.v-application--is-rtl .me-16 {
  margin-left: 64px !important;
}

.v-application--is-ltr .me-auto {
  margin-right: auto !important;
}

.v-application--is-rtl .me-auto {
  margin-left: auto !important;
}

.v-application .ma-n1 {
  margin: -4px !important;
}

.v-application .ma-n2 {
  margin: -8px !important;
}

.v-application .ma-n3 {
  margin: -12px !important;
}

.v-application .ma-n4 {
  margin: -16px !important;
}

.v-application .ma-n5 {
  margin: -20px !important;
}

.v-application .ma-n6 {
  margin: -24px !important;
}

.v-application .ma-n7 {
  margin: -28px !important;
}

.v-application .ma-n8 {
  margin: -32px !important;
}

.v-application .ma-n9 {
  margin: -36px !important;
}

.v-application .ma-n10 {
  margin: -40px !important;
}

.v-application .ma-n11 {
  margin: -44px !important;
}

.v-application .ma-n12 {
  margin: -48px !important;
}

.v-application .ma-n13 {
  margin: -52px !important;
}

.v-application .ma-n14 {
  margin: -56px !important;
}

.v-application .ma-n15 {
  margin: -60px !important;
}

.v-application .ma-n16 {
  margin: -64px !important;
}

.v-application .mx-n1 {
  margin-right: -4px !important;
  margin-left: -4px !important;
}

.v-application .mx-n2 {
  margin-right: -8px !important;
  margin-left: -8px !important;
}

.v-application .mx-n3 {
  margin-right: -12px !important;
  margin-left: -12px !important;
}

.v-application .mx-n4 {
  margin-right: -16px !important;
  margin-left: -16px !important;
}

.v-application .mx-n5 {
  margin-right: -20px !important;
  margin-left: -20px !important;
}

.v-application .mx-n6 {
  margin-right: -24px !important;
  margin-left: -24px !important;
}

.v-application .mx-n7 {
  margin-right: -28px !important;
  margin-left: -28px !important;
}

.v-application .mx-n8 {
  margin-right: -32px !important;
  margin-left: -32px !important;
}

.v-application .mx-n9 {
  margin-right: -36px !important;
  margin-left: -36px !important;
}

.v-application .mx-n10 {
  margin-right: -40px !important;
  margin-left: -40px !important;
}

.v-application .mx-n11 {
  margin-right: -44px !important;
  margin-left: -44px !important;
}

.v-application .mx-n12 {
  margin-right: -48px !important;
  margin-left: -48px !important;
}

.v-application .mx-n13 {
  margin-right: -52px !important;
  margin-left: -52px !important;
}

.v-application .mx-n14 {
  margin-right: -56px !important;
  margin-left: -56px !important;
}

.v-application .mx-n15 {
  margin-right: -60px !important;
  margin-left: -60px !important;
}

.v-application .mx-n16 {
  margin-right: -64px !important;
  margin-left: -64px !important;
}

.v-application .my-n1 {
  margin-top: -4px !important;
  margin-bottom: -4px !important;
}

.v-application .my-n2 {
  margin-top: -8px !important;
  margin-bottom: -8px !important;
}

.v-application .my-n3 {
  margin-top: -12px !important;
  margin-bottom: -12px !important;
}

.v-application .my-n4 {
  margin-top: -16px !important;
  margin-bottom: -16px !important;
}

.v-application .my-n5 {
  margin-top: -20px !important;
  margin-bottom: -20px !important;
}

.v-application .my-n6 {
  margin-top: -24px !important;
  margin-bottom: -24px !important;
}

.v-application .my-n7 {
  margin-top: -28px !important;
  margin-bottom: -28px !important;
}

.v-application .my-n8 {
  margin-top: -32px !important;
  margin-bottom: -32px !important;
}

.v-application .my-n9 {
  margin-top: -36px !important;
  margin-bottom: -36px !important;
}

.v-application .my-n10 {
  margin-top: -40px !important;
  margin-bottom: -40px !important;
}

.v-application .my-n11 {
  margin-top: -44px !important;
  margin-bottom: -44px !important;
}

.v-application .my-n12 {
  margin-top: -48px !important;
  margin-bottom: -48px !important;
}

.v-application .my-n13 {
  margin-top: -52px !important;
  margin-bottom: -52px !important;
}

.v-application .my-n14 {
  margin-top: -56px !important;
  margin-bottom: -56px !important;
}

.v-application .my-n15 {
  margin-top: -60px !important;
  margin-bottom: -60px !important;
}

.v-application .my-n16 {
  margin-top: -64px !important;
  margin-bottom: -64px !important;
}

.v-application .mt-n1 {
  margin-top: -4px !important;
}

.v-application .mt-n2 {
  margin-top: -8px !important;
}

.v-application .mt-n3 {
  margin-top: -12px !important;
}

.v-application .mt-n4 {
  margin-top: -16px !important;
}

.v-application .mt-n5 {
  margin-top: -20px !important;
}

.v-application .mt-n6 {
  margin-top: -24px !important;
}

.v-application .mt-n7 {
  margin-top: -28px !important;
}

.v-application .mt-n8 {
  margin-top: -32px !important;
}

.v-application .mt-n9 {
  margin-top: -36px !important;
}

.v-application .mt-n10 {
  margin-top: -40px !important;
}

.v-application .mt-n11 {
  margin-top: -44px !important;
}

.v-application .mt-n12 {
  margin-top: -48px !important;
}

.v-application .mt-n13 {
  margin-top: -52px !important;
}

.v-application .mt-n14 {
  margin-top: -56px !important;
}

.v-application .mt-n15 {
  margin-top: -60px !important;
}

.v-application .mt-n16 {
  margin-top: -64px !important;
}

.v-application .mr-n1 {
  margin-right: -4px !important;
}

.v-application .mr-n2 {
  margin-right: -8px !important;
}

.v-application .mr-n3 {
  margin-right: -12px !important;
}

.v-application .mr-n4 {
  margin-right: -16px !important;
}

.v-application .mr-n5 {
  margin-right: -20px !important;
}

.v-application .mr-n6 {
  margin-right: -24px !important;
}

.v-application .mr-n7 {
  margin-right: -28px !important;
}

.v-application .mr-n8 {
  margin-right: -32px !important;
}

.v-application .mr-n9 {
  margin-right: -36px !important;
}

.v-application .mr-n10 {
  margin-right: -40px !important;
}

.v-application .mr-n11 {
  margin-right: -44px !important;
}

.v-application .mr-n12 {
  margin-right: -48px !important;
}

.v-application .mr-n13 {
  margin-right: -52px !important;
}

.v-application .mr-n14 {
  margin-right: -56px !important;
}

.v-application .mr-n15 {
  margin-right: -60px !important;
}

.v-application .mr-n16 {
  margin-right: -64px !important;
}

.v-application .mb-n1 {
  margin-bottom: -4px !important;
}

.v-application .mb-n2 {
  margin-bottom: -8px !important;
}

.v-application .mb-n3 {
  margin-bottom: -12px !important;
}

.v-application .mb-n4 {
  margin-bottom: -16px !important;
}

.v-application .mb-n5 {
  margin-bottom: -20px !important;
}

.v-application .mb-n6 {
  margin-bottom: -24px !important;
}

.v-application .mb-n7 {
  margin-bottom: -28px !important;
}

.v-application .mb-n8 {
  margin-bottom: -32px !important;
}

.v-application .mb-n9 {
  margin-bottom: -36px !important;
}

.v-application .mb-n10 {
  margin-bottom: -40px !important;
}

.v-application .mb-n11 {
  margin-bottom: -44px !important;
}

.v-application .mb-n12 {
  margin-bottom: -48px !important;
}

.v-application .mb-n13 {
  margin-bottom: -52px !important;
}

.v-application .mb-n14 {
  margin-bottom: -56px !important;
}

.v-application .mb-n15 {
  margin-bottom: -60px !important;
}

.v-application .mb-n16 {
  margin-bottom: -64px !important;
}

.v-application .ml-n1 {
  margin-left: -4px !important;
}

.v-application .ml-n2 {
  margin-left: -8px !important;
}

.v-application .ml-n3 {
  margin-left: -12px !important;
}

.v-application .ml-n4 {
  margin-left: -16px !important;
}

.v-application .ml-n5 {
  margin-left: -20px !important;
}

.v-application .ml-n6 {
  margin-left: -24px !important;
}

.v-application .ml-n7 {
  margin-left: -28px !important;
}

.v-application .ml-n8 {
  margin-left: -32px !important;
}

.v-application .ml-n9 {
  margin-left: -36px !important;
}

.v-application .ml-n10 {
  margin-left: -40px !important;
}

.v-application .ml-n11 {
  margin-left: -44px !important;
}

.v-application .ml-n12 {
  margin-left: -48px !important;
}

.v-application .ml-n13 {
  margin-left: -52px !important;
}

.v-application .ml-n14 {
  margin-left: -56px !important;
}

.v-application .ml-n15 {
  margin-left: -60px !important;
}

.v-application .ml-n16 {
  margin-left: -64px !important;
}

.v-application--is-ltr .ms-n1 {
  margin-left: -4px !important;
}

.v-application--is-rtl .ms-n1 {
  margin-right: -4px !important;
}

.v-application--is-ltr .ms-n2 {
  margin-left: -8px !important;
}

.v-application--is-rtl .ms-n2 {
  margin-right: -8px !important;
}

.v-application--is-ltr .ms-n3 {
  margin-left: -12px !important;
}

.v-application--is-rtl .ms-n3 {
  margin-right: -12px !important;
}

.v-application--is-ltr .ms-n4 {
  margin-left: -16px !important;
}

.v-application--is-rtl .ms-n4 {
  margin-right: -16px !important;
}

.v-application--is-ltr .ms-n5 {
  margin-left: -20px !important;
}

.v-application--is-rtl .ms-n5 {
  margin-right: -20px !important;
}

.v-application--is-ltr .ms-n6 {
  margin-left: -24px !important;
}

.v-application--is-rtl .ms-n6 {
  margin-right: -24px !important;
}

.v-application--is-ltr .ms-n7 {
  margin-left: -28px !important;
}

.v-application--is-rtl .ms-n7 {
  margin-right: -28px !important;
}

.v-application--is-ltr .ms-n8 {
  margin-left: -32px !important;
}

.v-application--is-rtl .ms-n8 {
  margin-right: -32px !important;
}

.v-application--is-ltr .ms-n9 {
  margin-left: -36px !important;
}

.v-application--is-rtl .ms-n9 {
  margin-right: -36px !important;
}

.v-application--is-ltr .ms-n10 {
  margin-left: -40px !important;
}

.v-application--is-rtl .ms-n10 {
  margin-right: -40px !important;
}

.v-application--is-ltr .ms-n11 {
  margin-left: -44px !important;
}

.v-application--is-rtl .ms-n11 {
  margin-right: -44px !important;
}

.v-application--is-ltr .ms-n12 {
  margin-left: -48px !important;
}

.v-application--is-rtl .ms-n12 {
  margin-right: -48px !important;
}

.v-application--is-ltr .ms-n13 {
  margin-left: -52px !important;
}

.v-application--is-rtl .ms-n13 {
  margin-right: -52px !important;
}

.v-application--is-ltr .ms-n14 {
  margin-left: -56px !important;
}

.v-application--is-rtl .ms-n14 {
  margin-right: -56px !important;
}

.v-application--is-ltr .ms-n15 {
  margin-left: -60px !important;
}

.v-application--is-rtl .ms-n15 {
  margin-right: -60px !important;
}

.v-application--is-ltr .ms-n16 {
  margin-left: -64px !important;
}

.v-application--is-rtl .ms-n16 {
  margin-right: -64px !important;
}

.v-application--is-ltr .me-n1 {
  margin-right: -4px !important;
}

.v-application--is-rtl .me-n1 {
  margin-left: -4px !important;
}

.v-application--is-ltr .me-n2 {
  margin-right: -8px !important;
}

.v-application--is-rtl .me-n2 {
  margin-left: -8px !important;
}

.v-application--is-ltr .me-n3 {
  margin-right: -12px !important;
}

.v-application--is-rtl .me-n3 {
  margin-left: -12px !important;
}

.v-application--is-ltr .me-n4 {
  margin-right: -16px !important;
}

.v-application--is-rtl .me-n4 {
  margin-left: -16px !important;
}

.v-application--is-ltr .me-n5 {
  margin-right: -20px !important;
}

.v-application--is-rtl .me-n5 {
  margin-left: -20px !important;
}

.v-application--is-ltr .me-n6 {
  margin-right: -24px !important;
}

.v-application--is-rtl .me-n6 {
  margin-left: -24px !important;
}

.v-application--is-ltr .me-n7 {
  margin-right: -28px !important;
}

.v-application--is-rtl .me-n7 {
  margin-left: -28px !important;
}

.v-application--is-ltr .me-n8 {
  margin-right: -32px !important;
}

.v-application--is-rtl .me-n8 {
  margin-left: -32px !important;
}

.v-application--is-ltr .me-n9 {
  margin-right: -36px !important;
}

.v-application--is-rtl .me-n9 {
  margin-left: -36px !important;
}

.v-application--is-ltr .me-n10 {
  margin-right: -40px !important;
}

.v-application--is-rtl .me-n10 {
  margin-left: -40px !important;
}

.v-application--is-ltr .me-n11 {
  margin-right: -44px !important;
}

.v-application--is-rtl .me-n11 {
  margin-left: -44px !important;
}

.v-application--is-ltr .me-n12 {
  margin-right: -48px !important;
}

.v-application--is-rtl .me-n12 {
  margin-left: -48px !important;
}

.v-application--is-ltr .me-n13 {
  margin-right: -52px !important;
}

.v-application--is-rtl .me-n13 {
  margin-left: -52px !important;
}

.v-application--is-ltr .me-n14 {
  margin-right: -56px !important;
}

.v-application--is-rtl .me-n14 {
  margin-left: -56px !important;
}

.v-application--is-ltr .me-n15 {
  margin-right: -60px !important;
}

.v-application--is-rtl .me-n15 {
  margin-left: -60px !important;
}

.v-application--is-ltr .me-n16 {
  margin-right: -64px !important;
}

.v-application--is-rtl .me-n16 {
  margin-left: -64px !important;
}

.v-application .pa-0 {
  padding: 0px !important;
}

.v-application .pa-1 {
  padding: 4px !important;
}

.v-application .pa-2 {
  padding: 8px !important;
}

.v-application .pa-3 {
  padding: 12px !important;
}

.v-application .pa-4 {
  padding: 16px !important;
}

.v-application .pa-5 {
  padding: 20px !important;
}

.v-application .pa-6 {
  padding: 24px !important;
}

.v-application .pa-7 {
  padding: 28px !important;
}

.v-application .pa-8 {
  padding: 32px !important;
}

.v-application .pa-9 {
  padding: 36px !important;
}

.v-application .pa-10 {
  padding: 40px !important;
}

.v-application .pa-11 {
  padding: 44px !important;
}

.v-application .pa-12 {
  padding: 48px !important;
}

.v-application .pa-13 {
  padding: 52px !important;
}

.v-application .pa-14 {
  padding: 56px !important;
}

.v-application .pa-15 {
  padding: 60px !important;
}

.v-application .pa-16 {
  padding: 64px !important;
}

.v-application .px-0 {
  padding-right: 0px !important;
  padding-left: 0px !important;
}

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

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

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

.v-application .px-4 {
  padding-right: 16px !important;
  padding-left: 16px !important;
}

.v-application .px-5 {
  padding-right: 20px !important;
  padding-left: 20px !important;
}

.v-application .px-6 {
  padding-right: 24px !important;
  padding-left: 24px !important;
}

.v-application .px-7 {
  padding-right: 28px !important;
  padding-left: 28px !important;
}

.v-application .px-8 {
  padding-right: 32px !important;
  padding-left: 32px !important;
}

.v-application .px-9 {
  padding-right: 36px !important;
  padding-left: 36px !important;
}

.v-application .px-10 {
  padding-right: 40px !important;
  padding-left: 40px !important;
}

.v-application .px-11 {
  padding-right: 44px !important;
  padding-left: 44px !important;
}

.v-application .px-12 {
  padding-right: 48px !important;
  padding-left: 48px !important;
}

.v-application .px-13 {
  padding-right: 52px !important;
  padding-left: 52px !important;
}

.v-application .px-14 {
  padding-right: 56px !important;
  padding-left: 56px !important;
}

.v-application .px-15 {
  padding-right: 60px !important;
  padding-left: 60px !important;
}

.v-application .px-16 {
  padding-right: 64px !important;
  padding-left: 64px !important;
}

.v-application .py-0 {
  padding-top: 0px !important;
  padding-bottom: 0px !important;
}

.v-application .py-1 {
  padding-top: 4px !important;
  padding-bottom: 4px !important;
}

.v-application .py-2 {
  padding-top: 8px !important;
  padding-bottom: 8px !important;
}

.v-application .py-3 {
  padding-top: 12px !important;
  padding-bottom: 12px !important;
}

.v-application .py-4 {
  padding-top: 16px !important;
  padding-bottom: 16px !important;
}

.v-application .py-5 {
  padding-top: 20px !important;
  padding-bottom: 20px !important;
}

.v-application .py-6 {
  padding-top: 24px !important;
  padding-bottom: 24px !important;
}

.v-application .py-7 {
  padding-top: 28px !important;
  padding-bottom: 28px !important;
}

.v-application .py-8 {
  padding-top: 32px !important;
  padding-bottom: 32px !important;
}

.v-application .py-9 {
  padding-top: 36px !important;
  padding-bottom: 36px !important;
}

.v-application .py-10 {
  padding-top: 40px !important;
  padding-bottom: 40px !important;
}

.v-application .py-11 {
  padding-top: 44px !important;
  padding-bottom: 44px !important;
}

.v-application .py-12 {
  padding-top: 48px !important;
  padding-bottom: 48px !important;
}

.v-application .py-13 {
  padding-top: 52px !important;
  padding-bottom: 52px !important;
}

.v-application .py-14 {
  padding-top: 56px !important;
  padding-bottom: 56px !important;
}

.v-application .py-15 {
  padding-top: 60px !important;
  padding-bottom: 60px !important;
}

.v-application .py-16 {
  padding-top: 64px !important;
  padding-bottom: 64px !important;
}

.v-application .pt-0 {
  padding-top: 0px !important;
}

.v-application .pt-1 {
  padding-top: 4px !important;
}

.v-application .pt-2 {
  padding-top: 8px !important;
}

.v-application .pt-3 {
  padding-top: 12px !important;
}

.v-application .pt-4 {
  padding-top: 16px !important;
}

.v-application .pt-5 {
  padding-top: 20px !important;
}

.v-application .pt-6 {
  padding-top: 24px !important;
}

.v-application .pt-7 {
  padding-top: 28px !important;
}

.v-application .pt-8 {
  padding-top: 32px !important;
}

.v-application .pt-9 {
  padding-top: 36px !important;
}

.v-application .pt-10 {
  padding-top: 40px !important;
}

.v-application .pt-11 {
  padding-top: 44px !important;
}

.v-application .pt-12 {
  padding-top: 48px !important;
}

.v-application .pt-13 {
  padding-top: 52px !important;
}

.v-application .pt-14 {
  padding-top: 56px !important;
}

.v-application .pt-15 {
  padding-top: 60px !important;
}

.v-application .pt-16 {
  padding-top: 64px !important;
}

.v-application .pr-0 {
  padding-right: 0px !important;
}

.v-application .pr-1 {
  padding-right: 4px !important;
}

.v-application .pr-2 {
  padding-right: 8px !important;
}

.v-application .pr-3 {
  padding-right: 12px !important;
}

.v-application .pr-4 {
  padding-right: 16px !important;
}

.v-application .pr-5 {
  padding-right: 20px !important;
}

.v-application .pr-6 {
  padding-right: 24px !important;
}

.v-application .pr-7 {
  padding-right: 28px !important;
}

.v-application .pr-8 {
  padding-right: 32px !important;
}

.v-application .pr-9 {
  padding-right: 36px !important;
}

.v-application .pr-10 {
  padding-right: 40px !important;
}

.v-application .pr-11 {
  padding-right: 44px !important;
}

.v-application .pr-12 {
  padding-right: 48px !important;
}

.v-application .pr-13 {
  padding-right: 52px !important;
}

.v-application .pr-14 {
  padding-right: 56px !important;
}

.v-application .pr-15 {
  padding-right: 60px !important;
}

.v-application .pr-16 {
  padding-right: 64px !important;
}

.v-application .pb-0 {
  padding-bottom: 0px !important;
}

.v-application .pb-1 {
  padding-bottom: 4px !important;
}

.v-application .pb-2 {
  padding-bottom: 8px !important;
}

.v-application .pb-3 {
  padding-bottom: 12px !important;
}

.v-application .pb-4 {
  padding-bottom: 16px !important;
}

.v-application .pb-5 {
  padding-bottom: 20px !important;
}

.v-application .pb-6 {
  padding-bottom: 24px !important;
}

.v-application .pb-7 {
  padding-bottom: 28px !important;
}

.v-application .pb-8 {
  padding-bottom: 32px !important;
}

.v-application .pb-9 {
  padding-bottom: 36px !important;
}

.v-application .pb-10 {
  padding-bottom: 40px !important;
}

.v-application .pb-11 {
  padding-bottom: 44px !important;
}

.v-application .pb-12 {
  padding-bottom: 48px !important;
}

.v-application .pb-13 {
  padding-bottom: 52px !important;
}

.v-application .pb-14 {
  padding-bottom: 56px !important;
}

.v-application .pb-15 {
  padding-bottom: 60px !important;
}

.v-application .pb-16 {
  padding-bottom: 64px !important;
}

.v-application .pl-0 {
  padding-left: 0px !important;
}

.v-application .pl-1 {
  padding-left: 4px !important;
}

.v-application .pl-2 {
  padding-left: 8px !important;
}

.v-application .pl-3 {
  padding-left: 12px !important;
}

.v-application .pl-4 {
  padding-left: 16px !important;
}

.v-application .pl-5 {
  padding-left: 20px !important;
}

.v-application .pl-6 {
  padding-left: 24px !important;
}

.v-application .pl-7 {
  padding-left: 28px !important;
}

.v-application .pl-8 {
  padding-left: 32px !important;
}

.v-application .pl-9 {
  padding-left: 36px !important;
}

.v-application .pl-10 {
  padding-left: 40px !important;
}

.v-application .pl-11 {
  padding-left: 44px !important;
}

.v-application .pl-12 {
  padding-left: 48px !important;
}

.v-application .pl-13 {
  padding-left: 52px !important;
}

.v-application .pl-14 {
  padding-left: 56px !important;
}

.v-application .pl-15 {
  padding-left: 60px !important;
}

.v-application .pl-16 {
  padding-left: 64px !important;
}

.v-application--is-ltr .ps-0 {
  padding-left: 0px !important;
}

.v-application--is-rtl .ps-0 {
  padding-right: 0px !important;
}

.v-application--is-ltr .ps-1 {
  padding-left: 4px !important;
}

.v-application--is-rtl .ps-1 {
  padding-right: 4px !important;
}

.v-application--is-ltr .ps-2 {
  padding-left: 8px !important;
}

.v-application--is-rtl .ps-2 {
  padding-right: 8px !important;
}

.v-application--is-ltr .ps-3 {
  padding-left: 12px !important;
}

.v-application--is-rtl .ps-3 {
  padding-right: 12px !important;
}

.v-application--is-ltr .ps-4 {
  padding-left: 16px !important;
}

.v-application--is-rtl .ps-4 {
  padding-right: 16px !important;
}

.v-application--is-ltr .ps-5 {
  padding-left: 20px !important;
}

.v-application--is-rtl .ps-5 {
  padding-right: 20px !important;
}

.v-application--is-ltr .ps-6 {
  padding-left: 24px !important;
}

.v-application--is-rtl .ps-6 {
  padding-right: 24px !important;
}

.v-application--is-ltr .ps-7 {
  padding-left: 28px !important;
}

.v-application--is-rtl .ps-7 {
  padding-right: 28px !important;
}

.v-application--is-ltr .ps-8 {
  padding-left: 32px !important;
}

.v-application--is-rtl .ps-8 {
  padding-right: 32px !important;
}

.v-application--is-ltr .ps-9 {
  padding-left: 36px !important;
}

.v-application--is-rtl .ps-9 {
  padding-right: 36px !important;
}

.v-application--is-ltr .ps-10 {
  padding-left: 40px !important;
}

.v-application--is-rtl .ps-10 {
  padding-right: 40px !important;
}

.v-application--is-ltr .ps-11 {
  padding-left: 44px !important;
}

.v-application--is-rtl .ps-11 {
  padding-right: 44px !important;
}

.v-application--is-ltr .ps-12 {
  padding-left: 48px !important;
}

.v-application--is-rtl .ps-12 {
  padding-right: 48px !important;
}

.v-application--is-ltr .ps-13 {
  padding-left: 52px !important;
}

.v-application--is-rtl .ps-13 {
  padding-right: 52px !important;
}

.v-application--is-ltr .ps-14 {
  padding-left: 56px !important;
}

.v-application--is-rtl .ps-14 {
  padding-right: 56px !important;
}

.v-application--is-ltr .ps-15 {
  padding-left: 60px !important;
}

.v-application--is-rtl .ps-15 {
  padding-right: 60px !important;
}

.v-application--is-ltr .ps-16 {
  padding-left: 64px !important;
}

.v-application--is-rtl .ps-16 {
  padding-right: 64px !important;
}

.v-application--is-ltr .pe-0 {
  padding-right: 0px !important;
}

.v-application--is-rtl .pe-0 {
  padding-left: 0px !important;
}

.v-application--is-ltr .pe-1 {
  padding-right: 4px !important;
}

.v-application--is-rtl .pe-1 {
  padding-left: 4px !important;
}

.v-application--is-ltr .pe-2 {
  padding-right: 8px !important;
}

.v-application--is-rtl .pe-2 {
  padding-left: 8px !important;
}

.v-application--is-ltr .pe-3 {
  padding-right: 12px !important;
}

.v-application--is-rtl .pe-3 {
  padding-left: 12px !important;
}

.v-application--is-ltr .pe-4 {
  padding-right: 16px !important;
}

.v-application--is-rtl .pe-4 {
  padding-left: 16px !important;
}

.v-application--is-ltr .pe-5 {
  padding-right: 20px !important;
}

.v-application--is-rtl .pe-5 {
  padding-left: 20px !important;
}

.v-application--is-ltr .pe-6 {
  padding-right: 24px !important;
}

.v-application--is-rtl .pe-6 {
  padding-left: 24px !important;
}

.v-application--is-ltr .pe-7 {
  padding-right: 28px !important;
}

.v-application--is-rtl .pe-7 {
  padding-left: 28px !important;
}

.v-application--is-ltr .pe-8 {
  padding-right: 32px !important;
}

.v-application--is-rtl .pe-8 {
  padding-left: 32px !important;
}

.v-application--is-ltr .pe-9 {
  padding-right: 36px !important;
}

.v-application--is-rtl .pe-9 {
  padding-left: 36px !important;
}

.v-application--is-ltr .pe-10 {
  padding-right: 40px !important;
}

.v-application--is-rtl .pe-10 {
  padding-left: 40px !important;
}

.v-application--is-ltr .pe-11 {
  padding-right: 44px !important;
}

.v-application--is-rtl .pe-11 {
  padding-left: 44px !important;
}

.v-application--is-ltr .pe-12 {
  padding-right: 48px !important;
}

.v-application--is-rtl .pe-12 {
  padding-left: 48px !important;
}

.v-application--is-ltr .pe-13 {
  padding-right: 52px !important;
}

.v-application--is-rtl .pe-13 {
  padding-left: 52px !important;
}

.v-application--is-ltr .pe-14 {
  padding-right: 56px !important;
}

.v-application--is-rtl .pe-14 {
  padding-left: 56px !important;
}

.v-application--is-ltr .pe-15 {
  padding-right: 60px !important;
}

.v-application--is-rtl .pe-15 {
  padding-left: 60px !important;
}

.v-application--is-ltr .pe-16 {
  padding-right: 64px !important;
}

.v-application--is-rtl .pe-16 {
  padding-left: 64px !important;
}

.v-application .rounded-0 {
  border-radius: 0 !important;
}

.v-application .rounded-sm {
  border-radius: 2px !important;
}

.v-application .rounded {
  border-radius: 4px !important;
}

.v-application .rounded-lg {
  border-radius: 8px !important;
}

.v-application .rounded-xl {
  border-radius: 24px !important;
}

.v-application .rounded-pill {
  border-radius: 9999px !important;
}

.v-application .rounded-circle {
  border-radius: 50% !important;
}

.v-application .rounded-t-0 {
  border-top-left-radius: 0 !important;
  border-top-right-radius: 0 !important;
}

.v-application .rounded-t-sm {
  border-top-left-radius: 2px !important;
  border-top-right-radius: 2px !important;
}

.v-application .rounded-t {
  border-top-left-radius: 4px !important;
  border-top-right-radius: 4px !important;
}

.v-application .rounded-t-lg {
  border-top-left-radius: 8px !important;
  border-top-right-radius: 8px !important;
}

.v-application .rounded-t-xl {
  border-top-left-radius: 24px !important;
  border-top-right-radius: 24px !important;
}

.v-application .rounded-t-pill {
  border-top-left-radius: 9999px !important;
  border-top-right-radius: 9999px !important;
}

.v-application .rounded-t-circle {
  border-top-left-radius: 50% !important;
  border-top-right-radius: 50% !important;
}

.v-application .rounded-r-0 {
  border-top-right-radius: 0 !important;
  border-bottom-right-radius: 0 !important;
}

.v-application .rounded-r-sm {
  border-top-right-radius: 2px !important;
  border-bottom-right-radius: 2px !important;
}

.v-application .rounded-r {
  border-top-right-radius: 4px !important;
  border-bottom-right-radius: 4px !important;
}

.v-application .rounded-r-lg {
  border-top-right-radius: 8px !important;
  border-bottom-right-radius: 8px !important;
}

.v-application .rounded-r-xl {
  border-top-right-radius: 24px !important;
  border-bottom-right-radius: 24px !important;
}

.v-application .rounded-r-pill {
  border-top-right-radius: 9999px !important;
  border-bottom-right-radius: 9999px !important;
}

.v-application .rounded-r-circle {
  border-top-right-radius: 50% !important;
  border-bottom-right-radius: 50% !important;
}

.v-application .rounded-b-0 {
  border-bottom-left-radius: 0 !important;
  border-bottom-right-radius: 0 !important;
}

.v-application .rounded-b-sm {
  border-bottom-left-radius: 2px !important;
  border-bottom-right-radius: 2px !important;
}

.v-application .rounded-b {
  border-bottom-left-radius: 4px !important;
  border-bottom-right-radius: 4px !important;
}

.v-application .rounded-b-lg {
  border-bottom-left-radius: 8px !important;
  border-bottom-right-radius: 8px !important;
}

.v-application .rounded-b-xl {
  border-bottom-left-radius: 24px !important;
  border-bottom-right-radius: 24px !important;
}

.v-application .rounded-b-pill {
  border-bottom-left-radius: 9999px !important;
  border-bottom-right-radius: 9999px !important;
}

.v-application .rounded-b-circle {
  border-bottom-left-radius: 50% !important;
  border-bottom-right-radius: 50% !important;
}

.v-application .rounded-l-0 {
  border-top-left-radius: 0 !important;
  border-bottom-left-radius: 0 !important;
}

.v-application .rounded-l-sm {
  border-top-left-radius: 2px !important;
  border-bottom-left-radius: 2px !important;
}

.v-application .rounded-l {
  border-top-left-radius: 4px !important;
  border-bottom-left-radius: 4px !important;
}

.v-application .rounded-l-lg {
  border-top-left-radius: 8px !important;
  border-bottom-left-radius: 8px !important;
}

.v-application .rounded-l-xl {
  border-top-left-radius: 24px !important;
  border-bottom-left-radius: 24px !important;
}

.v-application .rounded-l-pill {
  border-top-left-radius: 9999px !important;
  border-bottom-left-radius: 9999px !important;
}

.v-application .rounded-l-circle {
  border-top-left-radius: 50% !important;
  border-bottom-left-radius: 50% !important;
}

.v-application .rounded-tl-0 {
  border-top-left-radius: 0 !important;
}

.v-application .rounded-tl-sm {
  border-top-left-radius: 2px !important;
}

.v-application .rounded-tl {
  border-top-left-radius: 4px !important;
}

.v-application .rounded-tl-lg {
  border-top-left-radius: 8px !important;
}

.v-application .rounded-tl-xl {
  border-top-left-radius: 24px !important;
}

.v-application .rounded-tl-pill {
  border-top-left-radius: 9999px !important;
}

.v-application .rounded-tl-circle {
  border-top-left-radius: 50% !important;
}

.v-application .rounded-tr-0 {
  border-top-right-radius: 0 !important;
}

.v-application .rounded-tr-sm {
  border-top-right-radius: 2px !important;
}

.v-application .rounded-tr {
  border-top-right-radius: 4px !important;
}

.v-application .rounded-tr-lg {
  border-top-right-radius: 8px !important;
}

.v-application .rounded-tr-xl {
  border-top-right-radius: 24px !important;
}

.v-application .rounded-tr-pill {
  border-top-right-radius: 9999px !important;
}

.v-application .rounded-tr-circle {
  border-top-right-radius: 50% !important;
}

.v-application .rounded-br-0 {
  border-bottom-right-radius: 0 !important;
}

.v-application .rounded-br-sm {
  border-bottom-right-radius: 2px !important;
}

.v-application .rounded-br {
  border-bottom-right-radius: 4px !important;
}

.v-application .rounded-br-lg {
  border-bottom-right-radius: 8px !important;
}

.v-application .rounded-br-xl {
  border-bottom-right-radius: 24px !important;
}

.v-application .rounded-br-pill {
  border-bottom-right-radius: 9999px !important;
}

.v-application .rounded-br-circle {
  border-bottom-right-radius: 50% !important;
}

.v-application .rounded-bl-0 {
  border-bottom-left-radius: 0 !important;
}

.v-application .rounded-bl-sm {
  border-bottom-left-radius: 2px !important;
}

.v-application .rounded-bl {
  border-bottom-left-radius: 4px !important;
}

.v-application .rounded-bl-lg {
  border-bottom-left-radius: 8px !important;
}

.v-application .rounded-bl-xl {
  border-bottom-left-radius: 24px !important;
}

.v-application .rounded-bl-pill {
  border-bottom-left-radius: 9999px !important;
}

.v-application .rounded-bl-circle {
  border-bottom-left-radius: 50% !important;
}

.v-application .text-left {
  text-align: left !important;
}

.v-application .text-right {
  text-align: right !important;
}

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

.v-application .text-justify {
  text-align: justify !important;
}

.v-application .text-start {
  text-align: start !important;
}

.v-application .text-end {
  text-align: end !important;
}

.v-application .text-decoration-line-through {
  text-decoration: line-through !important;
}

.v-application .text-decoration-none {
  text-decoration: none !important;
}

.v-application .text-decoration-overline {
  text-decoration: overline !important;
}

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

.v-application .text-wrap {
  white-space: normal !important;
}

.v-application .text-no-wrap {
  white-space: nowrap !important;
}

.v-application .text-pre {
  white-space: pre !important;
}

.v-application .text-pre-line {
  white-space: pre-line !important;
}

.v-application .text-pre-wrap {
  white-space: pre-wrap !important;
}

.v-application .text-break {
  overflow-wrap: break-word !important;
  word-break: break-word !important;
}

.v-application .text-truncate {
  white-space: nowrap !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
}

.v-application .text-none {
  text-transform: none !important;
}

.v-application .text-capitalize {
  text-transform: capitalize !important;
}

.v-application .text-lowercase {
  text-transform: lowercase !important;
}

.v-application .text-uppercase {
  text-transform: uppercase !important;
}

.v-application .text-h1 {
  font-size: 6rem !important;
  font-weight: 300;
  line-height: 6rem;
  letter-spacing: -0.015625em !important;
  font-family: "Roboto", sans-serif !important;
}

.v-application .text-h2 {
  font-size: 3.75rem !important;
  font-weight: 300;
  line-height: 3.75rem;
  letter-spacing: -0.0083333333em !important;
  font-family: "Roboto", sans-serif !important;
}

.v-application .text-h3 {
  font-size: 3rem !important;
  font-weight: 400;
  line-height: 3.125rem;
  letter-spacing: normal !important;
  font-family: "Roboto", sans-serif !important;
}

.v-application .text-h4 {
  font-size: 2.125rem !important;
  font-weight: 400;
  line-height: 2.5rem;
  letter-spacing: 0.0073529412em !important;
  font-family: "Roboto", sans-serif !important;
}

.v-application .text-h5 {
  font-size: 1.5rem !important;
  font-weight: 400;
  line-height: 2rem;
  letter-spacing: normal !important;
  font-family: "Roboto", sans-serif !important;
}

.v-application .text-h6 {
  font-size: 1.25rem !important;
  font-weight: 500;
  line-height: 2rem;
  letter-spacing: 0.0125em !important;
  font-family: "Roboto", sans-serif !important;
}

.v-application .text-subtitle-1 {
  font-size: 1rem !important;
  font-weight: normal;
  line-height: 1.75rem;
  letter-spacing: 0.009375em !important;
  font-family: "Roboto", sans-serif !important;
}

.v-application .text-subtitle-2 {
  font-size: 0.875rem !important;
  font-weight: 500;
  line-height: 1.375rem;
  letter-spacing: 0.0071428571em !important;
  font-family: "Roboto", sans-serif !important;
}

.v-application .text-body-1 {
  font-size: 1rem !important;
  font-weight: 400;
  line-height: 1.5rem;
  letter-spacing: 0.03125em !important;
  font-family: "Roboto", sans-serif !important;
}

.v-application .text-body-2 {
  font-size: 0.875rem !important;
  font-weight: 400;
  line-height: 1.25rem;
  letter-spacing: 0.0178571429em !important;
  font-family: "Roboto", sans-serif !important;
}

.v-application .text-button {
  font-size: 0.875rem !important;
  font-weight: 500;
  line-height: 2.25rem;
  letter-spacing: 0.0892857143em !important;
  font-family: "Roboto", sans-serif !important;
  text-transform: uppercase !important;
}

.v-application .text-caption {
  font-size: 0.75rem !important;
  font-weight: 400;
  line-height: 1.25rem;
  letter-spacing: 0.0333333333em !important;
  font-family: "Roboto", sans-serif !important;
}

.v-application .text-overline {
  font-size: 0.75rem !important;
  font-weight: 500;
  line-height: 2rem;
  letter-spacing: 0.1666666667em !important;
  font-family: "Roboto", sans-serif !important;
  text-transform: uppercase !important;
}

@media (min-width: 600px) {
  .v-application .d-sm-none {
    display: none !important;
  }

  .v-application .d-sm-inline {
    display: inline !important;
  }

  .v-application .d-sm-inline-block {
    display: inline-block !important;
  }

  .v-application .d-sm-block {
    display: block !important;
  }

  .v-application .d-sm-table {
    display: table !important;
  }

  .v-application .d-sm-table-row {
    display: table-row !important;
  }

  .v-application .d-sm-table-cell {
    display: table-cell !important;
  }

  .v-application .d-sm-flex {
    display: flex !important;
  }

  .v-application .d-sm-inline-flex {
    display: inline-flex !important;
  }

  .v-application .float-sm-none {
    float: none !important;
  }

  .v-application .float-sm-left {
    float: left !important;
  }

  .v-application .float-sm-right {
    float: right !important;
  }

  .v-application--is-rtl .float-sm-end {
    float: left !important;
  }

  .v-application--is-rtl .float-sm-start {
    float: right !important;
  }

  .v-application--is-ltr .float-sm-end {
    float: right !important;
  }

  .v-application--is-ltr .float-sm-start {
    float: left !important;
  }

  .v-application .flex-sm-fill {
    flex: 1 1 auto !important;
  }

  .v-application .flex-sm-row {
    flex-direction: row !important;
  }

  .v-application .flex-sm-column {
    flex-direction: column !important;
  }

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

  .v-application .flex-sm-column-reverse {
    flex-direction: column-reverse !important;
  }

  .v-application .flex-sm-grow-0 {
    flex-grow: 0 !important;
  }

  .v-application .flex-sm-grow-1 {
    flex-grow: 1 !important;
  }

  .v-application .flex-sm-shrink-0 {
    flex-shrink: 0 !important;
  }

  .v-application .flex-sm-shrink-1 {
    flex-shrink: 1 !important;
  }

  .v-application .flex-sm-wrap {
    flex-wrap: wrap !important;
  }

  .v-application .flex-sm-nowrap {
    flex-wrap: nowrap !important;
  }

  .v-application .flex-sm-wrap-reverse {
    flex-wrap: wrap-reverse !important;
  }

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

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

  .v-application .justify-sm-center {
    justify-content: center !important;
  }

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

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

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

  .v-application .align-sm-end {
    align-items: flex-end !important;
  }

  .v-application .align-sm-center {
    align-items: center !important;
  }

  .v-application .align-sm-baseline {
    align-items: baseline !important;
  }

  .v-application .align-sm-stretch {
    align-items: stretch !important;
  }

  .v-application .align-content-sm-start {
    align-content: flex-start !important;
  }

  .v-application .align-content-sm-end {
    align-content: flex-end !important;
  }

  .v-application .align-content-sm-center {
    align-content: center !important;
  }

  .v-application .align-content-sm-space-between {
    align-content: space-between !important;
  }

  .v-application .align-content-sm-space-around {
    align-content: space-around !important;
  }

  .v-application .align-content-sm-stretch {
    align-content: stretch !important;
  }

  .v-application .align-self-sm-auto {
    align-self: auto !important;
  }

  .v-application .align-self-sm-start {
    align-self: flex-start !important;
  }

  .v-application .align-self-sm-end {
    align-self: flex-end !important;
  }

  .v-application .align-self-sm-center {
    align-self: center !important;
  }

  .v-application .align-self-sm-baseline {
    align-self: baseline !important;
  }

  .v-application .align-self-sm-stretch {
    align-self: stretch !important;
  }

  .v-application .order-sm-first {
    order: -1 !important;
  }

  .v-application .order-sm-0 {
    order: 0 !important;
  }

  .v-application .order-sm-1 {
    order: 1 !important;
  }

  .v-application .order-sm-2 {
    order: 2 !important;
  }

  .v-application .order-sm-3 {
    order: 3 !important;
  }

  .v-application .order-sm-4 {
    order: 4 !important;
  }

  .v-application .order-sm-5 {
    order: 5 !important;
  }

  .v-application .order-sm-6 {
    order: 6 !important;
  }

  .v-application .order-sm-7 {
    order: 7 !important;
  }

  .v-application .order-sm-8 {
    order: 8 !important;
  }

  .v-application .order-sm-9 {
    order: 9 !important;
  }

  .v-application .order-sm-10 {
    order: 10 !important;
  }

  .v-application .order-sm-11 {
    order: 11 !important;
  }

  .v-application .order-sm-12 {
    order: 12 !important;
  }

  .v-application .order-sm-last {
    order: 13 !important;
  }

  .v-application .ma-sm-0 {
    margin: 0px !important;
  }

  .v-application .ma-sm-1 {
    margin: 4px !important;
  }

  .v-application .ma-sm-2 {
    margin: 8px !important;
  }

  .v-application .ma-sm-3 {
    margin: 12px !important;
  }

  .v-application .ma-sm-4 {
    margin: 16px !important;
  }

  .v-application .ma-sm-5 {
    margin: 20px !important;
  }

  .v-application .ma-sm-6 {
    margin: 24px !important;
  }

  .v-application .ma-sm-7 {
    margin: 28px !important;
  }

  .v-application .ma-sm-8 {
    margin: 32px !important;
  }

  .v-application .ma-sm-9 {
    margin: 36px !important;
  }

  .v-application .ma-sm-10 {
    margin: 40px !important;
  }

  .v-application .ma-sm-11 {
    margin: 44px !important;
  }

  .v-application .ma-sm-12 {
    margin: 48px !important;
  }

  .v-application .ma-sm-13 {
    margin: 52px !important;
  }

  .v-application .ma-sm-14 {
    margin: 56px !important;
  }

  .v-application .ma-sm-15 {
    margin: 60px !important;
  }

  .v-application .ma-sm-16 {
    margin: 64px !important;
  }

  .v-application .ma-sm-auto {
    margin: auto !important;
  }

  .v-application .mx-sm-0 {
    margin-right: 0px !important;
    margin-left: 0px !important;
  }

  .v-application .mx-sm-1 {
    margin-right: 4px !important;
    margin-left: 4px !important;
  }

  .v-application .mx-sm-2 {
    margin-right: 8px !important;
    margin-left: 8px !important;
  }

  .v-application .mx-sm-3 {
    margin-right: 12px !important;
    margin-left: 12px !important;
  }

  .v-application .mx-sm-4 {
    margin-right: 16px !important;
    margin-left: 16px !important;
  }

  .v-application .mx-sm-5 {
    margin-right: 20px !important;
    margin-left: 20px !important;
  }

  .v-application .mx-sm-6 {
    margin-right: 24px !important;
    margin-left: 24px !important;
  }

  .v-application .mx-sm-7 {
    margin-right: 28px !important;
    margin-left: 28px !important;
  }

  .v-application .mx-sm-8 {
    margin-right: 32px !important;
    margin-left: 32px !important;
  }

  .v-application .mx-sm-9 {
    margin-right: 36px !important;
    margin-left: 36px !important;
  }

  .v-application .mx-sm-10 {
    margin-right: 40px !important;
    margin-left: 40px !important;
  }

  .v-application .mx-sm-11 {
    margin-right: 44px !important;
    margin-left: 44px !important;
  }

  .v-application .mx-sm-12 {
    margin-right: 48px !important;
    margin-left: 48px !important;
  }

  .v-application .mx-sm-13 {
    margin-right: 52px !important;
    margin-left: 52px !important;
  }

  .v-application .mx-sm-14 {
    margin-right: 56px !important;
    margin-left: 56px !important;
  }

  .v-application .mx-sm-15 {
    margin-right: 60px !important;
    margin-left: 60px !important;
  }

  .v-application .mx-sm-16 {
    margin-right: 64px !important;
    margin-left: 64px !important;
  }

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

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

  .v-application .my-sm-1 {
    margin-top: 4px !important;
    margin-bottom: 4px !important;
  }

  .v-application .my-sm-2 {
    margin-top: 8px !important;
    margin-bottom: 8px !important;
  }

  .v-application .my-sm-3 {
    margin-top: 12px !important;
    margin-bottom: 12px !important;
  }

  .v-application .my-sm-4 {
    margin-top: 16px !important;
    margin-bottom: 16px !important;
  }

  .v-application .my-sm-5 {
    margin-top: 20px !important;
    margin-bottom: 20px !important;
  }

  .v-application .my-sm-6 {
    margin-top: 24px !important;
    margin-bottom: 24px !important;
  }

  .v-application .my-sm-7 {
    margin-top: 28px !important;
    margin-bottom: 28px !important;
  }

  .v-application .my-sm-8 {
    margin-top: 32px !important;
    margin-bottom: 32px !important;
  }

  .v-application .my-sm-9 {
    margin-top: 36px !important;
    margin-bottom: 36px !important;
  }

  .v-application .my-sm-10 {
    margin-top: 40px !important;
    margin-bottom: 40px !important;
  }

  .v-application .my-sm-11 {
    margin-top: 44px !important;
    margin-bottom: 44px !important;
  }

  .v-application .my-sm-12 {
    margin-top: 48px !important;
    margin-bottom: 48px !important;
  }

  .v-application .my-sm-13 {
    margin-top: 52px !important;
    margin-bottom: 52px !important;
  }

  .v-application .my-sm-14 {
    margin-top: 56px !important;
    margin-bottom: 56px !important;
  }

  .v-application .my-sm-15 {
    margin-top: 60px !important;
    margin-bottom: 60px !important;
  }

  .v-application .my-sm-16 {
    margin-top: 64px !important;
    margin-bottom: 64px !important;
  }

  .v-application .my-sm-auto {
    margin-top: auto !important;
    margin-bottom: auto !important;
  }

  .v-application .mt-sm-0 {
    margin-top: 0px !important;
  }

  .v-application .mt-sm-1 {
    margin-top: 4px !important;
  }

  .v-application .mt-sm-2 {
    margin-top: 8px !important;
  }

  .v-application .mt-sm-3 {
    margin-top: 12px !important;
  }

  .v-application .mt-sm-4 {
    margin-top: 16px !important;
  }

  .v-application .mt-sm-5 {
    margin-top: 20px !important;
  }

  .v-application .mt-sm-6 {
    margin-top: 24px !important;
  }

  .v-application .mt-sm-7 {
    margin-top: 28px !important;
  }

  .v-application .mt-sm-8 {
    margin-top: 32px !important;
  }

  .v-application .mt-sm-9 {
    margin-top: 36px !important;
  }

  .v-application .mt-sm-10 {
    margin-top: 40px !important;
  }

  .v-application .mt-sm-11 {
    margin-top: 44px !important;
  }

  .v-application .mt-sm-12 {
    margin-top: 48px !important;
  }

  .v-application .mt-sm-13 {
    margin-top: 52px !important;
  }

  .v-application .mt-sm-14 {
    margin-top: 56px !important;
  }

  .v-application .mt-sm-15 {
    margin-top: 60px !important;
  }

  .v-application .mt-sm-16 {
    margin-top: 64px !important;
  }

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

  .v-application .mr-sm-0 {
    margin-right: 0px !important;
  }

  .v-application .mr-sm-1 {
    margin-right: 4px !important;
  }

  .v-application .mr-sm-2 {
    margin-right: 8px !important;
  }

  .v-application .mr-sm-3 {
    margin-right: 12px !important;
  }

  .v-application .mr-sm-4 {
    margin-right: 16px !important;
  }

  .v-application .mr-sm-5 {
    margin-right: 20px !important;
  }

  .v-application .mr-sm-6 {
    margin-right: 24px !important;
  }

  .v-application .mr-sm-7 {
    margin-right: 28px !important;
  }

  .v-application .mr-sm-8 {
    margin-right: 32px !important;
  }

  .v-application .mr-sm-9 {
    margin-right: 36px !important;
  }

  .v-application .mr-sm-10 {
    margin-right: 40px !important;
  }

  .v-application .mr-sm-11 {
    margin-right: 44px !important;
  }

  .v-application .mr-sm-12 {
    margin-right: 48px !important;
  }

  .v-application .mr-sm-13 {
    margin-right: 52px !important;
  }

  .v-application .mr-sm-14 {
    margin-right: 56px !important;
  }

  .v-application .mr-sm-15 {
    margin-right: 60px !important;
  }

  .v-application .mr-sm-16 {
    margin-right: 64px !important;
  }

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

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

  .v-application .mb-sm-1 {
    margin-bottom: 4px !important;
  }

  .v-application .mb-sm-2 {
    margin-bottom: 8px !important;
  }

  .v-application .mb-sm-3 {
    margin-bottom: 12px !important;
  }

  .v-application .mb-sm-4 {
    margin-bottom: 16px !important;
  }

  .v-application .mb-sm-5 {
    margin-bottom: 20px !important;
  }

  .v-application .mb-sm-6 {
    margin-bottom: 24px !important;
  }

  .v-application .mb-sm-7 {
    margin-bottom: 28px !important;
  }

  .v-application .mb-sm-8 {
    margin-bottom: 32px !important;
  }

  .v-application .mb-sm-9 {
    margin-bottom: 36px !important;
  }

  .v-application .mb-sm-10 {
    margin-bottom: 40px !important;
  }

  .v-application .mb-sm-11 {
    margin-bottom: 44px !important;
  }

  .v-application .mb-sm-12 {
    margin-bottom: 48px !important;
  }

  .v-application .mb-sm-13 {
    margin-bottom: 52px !important;
  }

  .v-application .mb-sm-14 {
    margin-bottom: 56px !important;
  }

  .v-application .mb-sm-15 {
    margin-bottom: 60px !important;
  }

  .v-application .mb-sm-16 {
    margin-bottom: 64px !important;
  }

  .v-application .mb-sm-auto {
    margin-bottom: auto !important;
  }

  .v-application .ml-sm-0 {
    margin-left: 0px !important;
  }

  .v-application .ml-sm-1 {
    margin-left: 4px !important;
  }

  .v-application .ml-sm-2 {
    margin-left: 8px !important;
  }

  .v-application .ml-sm-3 {
    margin-left: 12px !important;
  }

  .v-application .ml-sm-4 {
    margin-left: 16px !important;
  }

  .v-application .ml-sm-5 {
    margin-left: 20px !important;
  }

  .v-application .ml-sm-6 {
    margin-left: 24px !important;
  }

  .v-application .ml-sm-7 {
    margin-left: 28px !important;
  }

  .v-application .ml-sm-8 {
    margin-left: 32px !important;
  }

  .v-application .ml-sm-9 {
    margin-left: 36px !important;
  }

  .v-application .ml-sm-10 {
    margin-left: 40px !important;
  }

  .v-application .ml-sm-11 {
    margin-left: 44px !important;
  }

  .v-application .ml-sm-12 {
    margin-left: 48px !important;
  }

  .v-application .ml-sm-13 {
    margin-left: 52px !important;
  }

  .v-application .ml-sm-14 {
    margin-left: 56px !important;
  }

  .v-application .ml-sm-15 {
    margin-left: 60px !important;
  }

  .v-application .ml-sm-16 {
    margin-left: 64px !important;
  }

  .v-application .ml-sm-auto {
    margin-left: auto !important;
  }

  .v-application--is-ltr .ms-sm-0 {
    margin-left: 0px !important;
  }

  .v-application--is-rtl .ms-sm-0 {
    margin-right: 0px !important;
  }

  .v-application--is-ltr .ms-sm-1 {
    margin-left: 4px !important;
  }

  .v-application--is-rtl .ms-sm-1 {
    margin-right: 4px !important;
  }

  .v-application--is-ltr .ms-sm-2 {
    margin-left: 8px !important;
  }

  .v-application--is-rtl .ms-sm-2 {
    margin-right: 8px !important;
  }

  .v-application--is-ltr .ms-sm-3 {
    margin-left: 12px !important;
  }

  .v-application--is-rtl .ms-sm-3 {
    margin-right: 12px !important;
  }

  .v-application--is-ltr .ms-sm-4 {
    margin-left: 16px !important;
  }

  .v-application--is-rtl .ms-sm-4 {
    margin-right: 16px !important;
  }

  .v-application--is-ltr .ms-sm-5 {
    margin-left: 20px !important;
  }

  .v-application--is-rtl .ms-sm-5 {
    margin-right: 20px !important;
  }

  .v-application--is-ltr .ms-sm-6 {
    margin-left: 24px !important;
  }

  .v-application--is-rtl .ms-sm-6 {
    margin-right: 24px !important;
  }

  .v-application--is-ltr .ms-sm-7 {
    margin-left: 28px !important;
  }

  .v-application--is-rtl .ms-sm-7 {
    margin-right: 28px !important;
  }

  .v-application--is-ltr .ms-sm-8 {
    margin-left: 32px !important;
  }

  .v-application--is-rtl .ms-sm-8 {
    margin-right: 32px !important;
  }

  .v-application--is-ltr .ms-sm-9 {
    margin-left: 36px !important;
  }

  .v-application--is-rtl .ms-sm-9 {
    margin-right: 36px !important;
  }

  .v-application--is-ltr .ms-sm-10 {
    margin-left: 40px !important;
  }

  .v-application--is-rtl .ms-sm-10 {
    margin-right: 40px !important;
  }

  .v-application--is-ltr .ms-sm-11 {
    margin-left: 44px !important;
  }

  .v-application--is-rtl .ms-sm-11 {
    margin-right: 44px !important;
  }

  .v-application--is-ltr .ms-sm-12 {
    margin-left: 48px !important;
  }

  .v-application--is-rtl .ms-sm-12 {
    margin-right: 48px !important;
  }

  .v-application--is-ltr .ms-sm-13 {
    margin-left: 52px !important;
  }

  .v-application--is-rtl .ms-sm-13 {
    margin-right: 52px !important;
  }

  .v-application--is-ltr .ms-sm-14 {
    margin-left: 56px !important;
  }

  .v-application--is-rtl .ms-sm-14 {
    margin-right: 56px !important;
  }

  .v-application--is-ltr .ms-sm-15 {
    margin-left: 60px !important;
  }

  .v-application--is-rtl .ms-sm-15 {
    margin-right: 60px !important;
  }

  .v-application--is-ltr .ms-sm-16 {
    margin-left: 64px !important;
  }

  .v-application--is-rtl .ms-sm-16 {
    margin-right: 64px !important;
  }

  .v-application--is-ltr .ms-sm-auto {
    margin-left: auto !important;
  }

  .v-application--is-rtl .ms-sm-auto {
    margin-right: auto !important;
  }

  .v-application--is-ltr .me-sm-0 {
    margin-right: 0px !important;
  }

  .v-application--is-rtl .me-sm-0 {
    margin-left: 0px !important;
  }

  .v-application--is-ltr .me-sm-1 {
    margin-right: 4px !important;
  }

  .v-application--is-rtl .me-sm-1 {
    margin-left: 4px !important;
  }

  .v-application--is-ltr .me-sm-2 {
    margin-right: 8px !important;
  }

  .v-application--is-rtl .me-sm-2 {
    margin-left: 8px !important;
  }

  .v-application--is-ltr .me-sm-3 {
    margin-right: 12px !important;
  }

  .v-application--is-rtl .me-sm-3 {
    margin-left: 12px !important;
  }

  .v-application--is-ltr .me-sm-4 {
    margin-right: 16px !important;
  }

  .v-application--is-rtl .me-sm-4 {
    margin-left: 16px !important;
  }

  .v-application--is-ltr .me-sm-5 {
    margin-right: 20px !important;
  }

  .v-application--is-rtl .me-sm-5 {
    margin-left: 20px !important;
  }

  .v-application--is-ltr .me-sm-6 {
    margin-right: 24px !important;
  }

  .v-application--is-rtl .me-sm-6 {
    margin-left: 24px !important;
  }

  .v-application--is-ltr .me-sm-7 {
    margin-right: 28px !important;
  }

  .v-application--is-rtl .me-sm-7 {
    margin-left: 28px !important;
  }

  .v-application--is-ltr .me-sm-8 {
    margin-right: 32px !important;
  }

  .v-application--is-rtl .me-sm-8 {
    margin-left: 32px !important;
  }

  .v-application--is-ltr .me-sm-9 {
    margin-right: 36px !important;
  }

  .v-application--is-rtl .me-sm-9 {
    margin-left: 36px !important;
  }

  .v-application--is-ltr .me-sm-10 {
    margin-right: 40px !important;
  }

  .v-application--is-rtl .me-sm-10 {
    margin-left: 40px !important;
  }

  .v-application--is-ltr .me-sm-11 {
    margin-right: 44px !important;
  }

  .v-application--is-rtl .me-sm-11 {
    margin-left: 44px !important;
  }

  .v-application--is-ltr .me-sm-12 {
    margin-right: 48px !important;
  }

  .v-application--is-rtl .me-sm-12 {
    margin-left: 48px !important;
  }

  .v-application--is-ltr .me-sm-13 {
    margin-right: 52px !important;
  }

  .v-application--is-rtl .me-sm-13 {
    margin-left: 52px !important;
  }

  .v-application--is-ltr .me-sm-14 {
    margin-right: 56px !important;
  }

  .v-application--is-rtl .me-sm-14 {
    margin-left: 56px !important;
  }

  .v-application--is-ltr .me-sm-15 {
    margin-right: 60px !important;
  }

  .v-application--is-rtl .me-sm-15 {
    margin-left: 60px !important;
  }

  .v-application--is-ltr .me-sm-16 {
    margin-right: 64px !important;
  }

  .v-application--is-rtl .me-sm-16 {
    margin-left: 64px !important;
  }

  .v-application--is-ltr .me-sm-auto {
    margin-right: auto !important;
  }

  .v-application--is-rtl .me-sm-auto {
    margin-left: auto !important;
  }

  .v-application .ma-sm-n1 {
    margin: -4px !important;
  }

  .v-application .ma-sm-n2 {
    margin: -8px !important;
  }

  .v-application .ma-sm-n3 {
    margin: -12px !important;
  }

  .v-application .ma-sm-n4 {
    margin: -16px !important;
  }

  .v-application .ma-sm-n5 {
    margin: -20px !important;
  }

  .v-application .ma-sm-n6 {
    margin: -24px !important;
  }

  .v-application .ma-sm-n7 {
    margin: -28px !important;
  }

  .v-application .ma-sm-n8 {
    margin: -32px !important;
  }

  .v-application .ma-sm-n9 {
    margin: -36px !important;
  }

  .v-application .ma-sm-n10 {
    margin: -40px !important;
  }

  .v-application .ma-sm-n11 {
    margin: -44px !important;
  }

  .v-application .ma-sm-n12 {
    margin: -48px !important;
  }

  .v-application .ma-sm-n13 {
    margin: -52px !important;
  }

  .v-application .ma-sm-n14 {
    margin: -56px !important;
  }

  .v-application .ma-sm-n15 {
    margin: -60px !important;
  }

  .v-application .ma-sm-n16 {
    margin: -64px !important;
  }

  .v-application .mx-sm-n1 {
    margin-right: -4px !important;
    margin-left: -4px !important;
  }

  .v-application .mx-sm-n2 {
    margin-right: -8px !important;
    margin-left: -8px !important;
  }

  .v-application .mx-sm-n3 {
    margin-right: -12px !important;
    margin-left: -12px !important;
  }

  .v-application .mx-sm-n4 {
    margin-right: -16px !important;
    margin-left: -16px !important;
  }

  .v-application .mx-sm-n5 {
    margin-right: -20px !important;
    margin-left: -20px !important;
  }

  .v-application .mx-sm-n6 {
    margin-right: -24px !important;
    margin-left: -24px !important;
  }

  .v-application .mx-sm-n7 {
    margin-right: -28px !important;
    margin-left: -28px !important;
  }

  .v-application .mx-sm-n8 {
    margin-right: -32px !important;
    margin-left: -32px !important;
  }

  .v-application .mx-sm-n9 {
    margin-right: -36px !important;
    margin-left: -36px !important;
  }

  .v-application .mx-sm-n10 {
    margin-right: -40px !important;
    margin-left: -40px !important;
  }

  .v-application .mx-sm-n11 {
    margin-right: -44px !important;
    margin-left: -44px !important;
  }

  .v-application .mx-sm-n12 {
    margin-right: -48px !important;
    margin-left: -48px !important;
  }

  .v-application .mx-sm-n13 {
    margin-right: -52px !important;
    margin-left: -52px !important;
  }

  .v-application .mx-sm-n14 {
    margin-right: -56px !important;
    margin-left: -56px !important;
  }

  .v-application .mx-sm-n15 {
    margin-right: -60px !important;
    margin-left: -60px !important;
  }

  .v-application .mx-sm-n16 {
    margin-right: -64px !important;
    margin-left: -64px !important;
  }

  .v-application .my-sm-n1 {
    margin-top: -4px !important;
    margin-bottom: -4px !important;
  }

  .v-application .my-sm-n2 {
    margin-top: -8px !important;
    margin-bottom: -8px !important;
  }

  .v-application .my-sm-n3 {
    margin-top: -12px !important;
    margin-bottom: -12px !important;
  }

  .v-application .my-sm-n4 {
    margin-top: -16px !important;
    margin-bottom: -16px !important;
  }

  .v-application .my-sm-n5 {
    margin-top: -20px !important;
    margin-bottom: -20px !important;
  }

  .v-application .my-sm-n6 {
    margin-top: -24px !important;
    margin-bottom: -24px !important;
  }

  .v-application .my-sm-n7 {
    margin-top: -28px !important;
    margin-bottom: -28px !important;
  }

  .v-application .my-sm-n8 {
    margin-top: -32px !important;
    margin-bottom: -32px !important;
  }

  .v-application .my-sm-n9 {
    margin-top: -36px !important;
    margin-bottom: -36px !important;
  }

  .v-application .my-sm-n10 {
    margin-top: -40px !important;
    margin-bottom: -40px !important;
  }

  .v-application .my-sm-n11 {
    margin-top: -44px !important;
    margin-bottom: -44px !important;
  }

  .v-application .my-sm-n12 {
    margin-top: -48px !important;
    margin-bottom: -48px !important;
  }

  .v-application .my-sm-n13 {
    margin-top: -52px !important;
    margin-bottom: -52px !important;
  }

  .v-application .my-sm-n14 {
    margin-top: -56px !important;
    margin-bottom: -56px !important;
  }

  .v-application .my-sm-n15 {
    margin-top: -60px !important;
    margin-bottom: -60px !important;
  }

  .v-application .my-sm-n16 {
    margin-top: -64px !important;
    margin-bottom: -64px !important;
  }

  .v-application .mt-sm-n1 {
    margin-top: -4px !important;
  }

  .v-application .mt-sm-n2 {
    margin-top: -8px !important;
  }

  .v-application .mt-sm-n3 {
    margin-top: -12px !important;
  }

  .v-application .mt-sm-n4 {
    margin-top: -16px !important;
  }

  .v-application .mt-sm-n5 {
    margin-top: -20px !important;
  }

  .v-application .mt-sm-n6 {
    margin-top: -24px !important;
  }

  .v-application .mt-sm-n7 {
    margin-top: -28px !important;
  }

  .v-application .mt-sm-n8 {
    margin-top: -32px !important;
  }

  .v-application .mt-sm-n9 {
    margin-top: -36px !important;
  }

  .v-application .mt-sm-n10 {
    margin-top: -40px !important;
  }

  .v-application .mt-sm-n11 {
    margin-top: -44px !important;
  }

  .v-application .mt-sm-n12 {
    margin-top: -48px !important;
  }

  .v-application .mt-sm-n13 {
    margin-top: -52px !important;
  }

  .v-application .mt-sm-n14 {
    margin-top: -56px !important;
  }

  .v-application .mt-sm-n15 {
    margin-top: -60px !important;
  }

  .v-application .mt-sm-n16 {
    margin-top: -64px !important;
  }

  .v-application .mr-sm-n1 {
    margin-right: -4px !important;
  }

  .v-application .mr-sm-n2 {
    margin-right: -8px !important;
  }

  .v-application .mr-sm-n3 {
    margin-right: -12px !important;
  }

  .v-application .mr-sm-n4 {
    margin-right: -16px !important;
  }

  .v-application .mr-sm-n5 {
    margin-right: -20px !important;
  }

  .v-application .mr-sm-n6 {
    margin-right: -24px !important;
  }

  .v-application .mr-sm-n7 {
    margin-right: -28px !important;
  }

  .v-application .mr-sm-n8 {
    margin-right: -32px !important;
  }

  .v-application .mr-sm-n9 {
    margin-right: -36px !important;
  }

  .v-application .mr-sm-n10 {
    margin-right: -40px !important;
  }

  .v-application .mr-sm-n11 {
    margin-right: -44px !important;
  }

  .v-application .mr-sm-n12 {
    margin-right: -48px !important;
  }

  .v-application .mr-sm-n13 {
    margin-right: -52px !important;
  }

  .v-application .mr-sm-n14 {
    margin-right: -56px !important;
  }

  .v-application .mr-sm-n15 {
    margin-right: -60px !important;
  }

  .v-application .mr-sm-n16 {
    margin-right: -64px !important;
  }

  .v-application .mb-sm-n1 {
    margin-bottom: -4px !important;
  }

  .v-application .mb-sm-n2 {
    margin-bottom: -8px !important;
  }

  .v-application .mb-sm-n3 {
    margin-bottom: -12px !important;
  }

  .v-application .mb-sm-n4 {
    margin-bottom: -16px !important;
  }

  .v-application .mb-sm-n5 {
    margin-bottom: -20px !important;
  }

  .v-application .mb-sm-n6 {
    margin-bottom: -24px !important;
  }

  .v-application .mb-sm-n7 {
    margin-bottom: -28px !important;
  }

  .v-application .mb-sm-n8 {
    margin-bottom: -32px !important;
  }

  .v-application .mb-sm-n9 {
    margin-bottom: -36px !important;
  }

  .v-application .mb-sm-n10 {
    margin-bottom: -40px !important;
  }

  .v-application .mb-sm-n11 {
    margin-bottom: -44px !important;
  }

  .v-application .mb-sm-n12 {
    margin-bottom: -48px !important;
  }

  .v-application .mb-sm-n13 {
    margin-bottom: -52px !important;
  }

  .v-application .mb-sm-n14 {
    margin-bottom: -56px !important;
  }

  .v-application .mb-sm-n15 {
    margin-bottom: -60px !important;
  }

  .v-application .mb-sm-n16 {
    margin-bottom: -64px !important;
  }

  .v-application .ml-sm-n1 {
    margin-left: -4px !important;
  }

  .v-application .ml-sm-n2 {
    margin-left: -8px !important;
  }

  .v-application .ml-sm-n3 {
    margin-left: -12px !important;
  }

  .v-application .ml-sm-n4 {
    margin-left: -16px !important;
  }

  .v-application .ml-sm-n5 {
    margin-left: -20px !important;
  }

  .v-application .ml-sm-n6 {
    margin-left: -24px !important;
  }

  .v-application .ml-sm-n7 {
    margin-left: -28px !important;
  }

  .v-application .ml-sm-n8 {
    margin-left: -32px !important;
  }

  .v-application .ml-sm-n9 {
    margin-left: -36px !important;
  }

  .v-application .ml-sm-n10 {
    margin-left: -40px !important;
  }

  .v-application .ml-sm-n11 {
    margin-left: -44px !important;
  }

  .v-application .ml-sm-n12 {
    margin-left: -48px !important;
  }

  .v-application .ml-sm-n13 {
    margin-left: -52px !important;
  }

  .v-application .ml-sm-n14 {
    margin-left: -56px !important;
  }

  .v-application .ml-sm-n15 {
    margin-left: -60px !important;
  }

  .v-application .ml-sm-n16 {
    margin-left: -64px !important;
  }

  .v-application--is-ltr .ms-sm-n1 {
    margin-left: -4px !important;
  }

  .v-application--is-rtl .ms-sm-n1 {
    margin-right: -4px !important;
  }

  .v-application--is-ltr .ms-sm-n2 {
    margin-left: -8px !important;
  }

  .v-application--is-rtl .ms-sm-n2 {
    margin-right: -8px !important;
  }

  .v-application--is-ltr .ms-sm-n3 {
    margin-left: -12px !important;
  }

  .v-application--is-rtl .ms-sm-n3 {
    margin-right: -12px !important;
  }

  .v-application--is-ltr .ms-sm-n4 {
    margin-left: -16px !important;
  }

  .v-application--is-rtl .ms-sm-n4 {
    margin-right: -16px !important;
  }

  .v-application--is-ltr .ms-sm-n5 {
    margin-left: -20px !important;
  }

  .v-application--is-rtl .ms-sm-n5 {
    margin-right: -20px !important;
  }

  .v-application--is-ltr .ms-sm-n6 {
    margin-left: -24px !important;
  }

  .v-application--is-rtl .ms-sm-n6 {
    margin-right: -24px !important;
  }

  .v-application--is-ltr .ms-sm-n7 {
    margin-left: -28px !important;
  }

  .v-application--is-rtl .ms-sm-n7 {
    margin-right: -28px !important;
  }

  .v-application--is-ltr .ms-sm-n8 {
    margin-left: -32px !important;
  }

  .v-application--is-rtl .ms-sm-n8 {
    margin-right: -32px !important;
  }

  .v-application--is-ltr .ms-sm-n9 {
    margin-left: -36px !important;
  }

  .v-application--is-rtl .ms-sm-n9 {
    margin-right: -36px !important;
  }

  .v-application--is-ltr .ms-sm-n10 {
    margin-left: -40px !important;
  }

  .v-application--is-rtl .ms-sm-n10 {
    margin-right: -40px !important;
  }

  .v-application--is-ltr .ms-sm-n11 {
    margin-left: -44px !important;
  }

  .v-application--is-rtl .ms-sm-n11 {
    margin-right: -44px !important;
  }

  .v-application--is-ltr .ms-sm-n12 {
    margin-left: -48px !important;
  }

  .v-application--is-rtl .ms-sm-n12 {
    margin-right: -48px !important;
  }

  .v-application--is-ltr .ms-sm-n13 {
    margin-left: -52px !important;
  }

  .v-application--is-rtl .ms-sm-n13 {
    margin-right: -52px !important;
  }

  .v-application--is-ltr .ms-sm-n14 {
    margin-left: -56px !important;
  }

  .v-application--is-rtl .ms-sm-n14 {
    margin-right: -56px !important;
  }

  .v-application--is-ltr .ms-sm-n15 {
    margin-left: -60px !important;
  }

  .v-application--is-rtl .ms-sm-n15 {
    margin-right: -60px !important;
  }

  .v-application--is-ltr .ms-sm-n16 {
    margin-left: -64px !important;
  }

  .v-application--is-rtl .ms-sm-n16 {
    margin-right: -64px !important;
  }

  .v-application--is-ltr .me-sm-n1 {
    margin-right: -4px !important;
  }

  .v-application--is-rtl .me-sm-n1 {
    margin-left: -4px !important;
  }

  .v-application--is-ltr .me-sm-n2 {
    margin-right: -8px !important;
  }

  .v-application--is-rtl .me-sm-n2 {
    margin-left: -8px !important;
  }

  .v-application--is-ltr .me-sm-n3 {
    margin-right: -12px !important;
  }

  .v-application--is-rtl .me-sm-n3 {
    margin-left: -12px !important;
  }

  .v-application--is-ltr .me-sm-n4 {
    margin-right: -16px !important;
  }

  .v-application--is-rtl .me-sm-n4 {
    margin-left: -16px !important;
  }

  .v-application--is-ltr .me-sm-n5 {
    margin-right: -20px !important;
  }

  .v-application--is-rtl .me-sm-n5 {
    margin-left: -20px !important;
  }

  .v-application--is-ltr .me-sm-n6 {
    margin-right: -24px !important;
  }

  .v-application--is-rtl .me-sm-n6 {
    margin-left: -24px !important;
  }

  .v-application--is-ltr .me-sm-n7 {
    margin-right: -28px !important;
  }

  .v-application--is-rtl .me-sm-n7 {
    margin-left: -28px !important;
  }

  .v-application--is-ltr .me-sm-n8 {
    margin-right: -32px !important;
  }

  .v-application--is-rtl .me-sm-n8 {
    margin-left: -32px !important;
  }

  .v-application--is-ltr .me-sm-n9 {
    margin-right: -36px !important;
  }

  .v-application--is-rtl .me-sm-n9 {
    margin-left: -36px !important;
  }

  .v-application--is-ltr .me-sm-n10 {
    margin-right: -40px !important;
  }

  .v-application--is-rtl .me-sm-n10 {
    margin-left: -40px !important;
  }

  .v-application--is-ltr .me-sm-n11 {
    margin-right: -44px !important;
  }

  .v-application--is-rtl .me-sm-n11 {
    margin-left: -44px !important;
  }

  .v-application--is-ltr .me-sm-n12 {
    margin-right: -48px !important;
  }

  .v-application--is-rtl .me-sm-n12 {
    margin-left: -48px !important;
  }

  .v-application--is-ltr .me-sm-n13 {
    margin-right: -52px !important;
  }

  .v-application--is-rtl .me-sm-n13 {
    margin-left: -52px !important;
  }

  .v-application--is-ltr .me-sm-n14 {
    margin-right: -56px !important;
  }

  .v-application--is-rtl .me-sm-n14 {
    margin-left: -56px !important;
  }

  .v-application--is-ltr .me-sm-n15 {
    margin-right: -60px !important;
  }

  .v-application--is-rtl .me-sm-n15 {
    margin-left: -60px !important;
  }

  .v-application--is-ltr .me-sm-n16 {
    margin-right: -64px !important;
  }

  .v-application--is-rtl .me-sm-n16 {
    margin-left: -64px !important;
  }

  .v-application .pa-sm-0 {
    padding: 0px !important;
  }

  .v-application .pa-sm-1 {
    padding: 4px !important;
  }

  .v-application .pa-sm-2 {
    padding: 8px !important;
  }

  .v-application .pa-sm-3 {
    padding: 12px !important;
  }

  .v-application .pa-sm-4 {
    padding: 16px !important;
  }

  .v-application .pa-sm-5 {
    padding: 20px !important;
  }

  .v-application .pa-sm-6 {
    padding: 24px !important;
  }

  .v-application .pa-sm-7 {
    padding: 28px !important;
  }

  .v-application .pa-sm-8 {
    padding: 32px !important;
  }

  .v-application .pa-sm-9 {
    padding: 36px !important;
  }

  .v-application .pa-sm-10 {
    padding: 40px !important;
  }

  .v-application .pa-sm-11 {
    padding: 44px !important;
  }

  .v-application .pa-sm-12 {
    padding: 48px !important;
  }

  .v-application .pa-sm-13 {
    padding: 52px !important;
  }

  .v-application .pa-sm-14 {
    padding: 56px !important;
  }

  .v-application .pa-sm-15 {
    padding: 60px !important;
  }

  .v-application .pa-sm-16 {
    padding: 64px !important;
  }

  .v-application .px-sm-0 {
    padding-right: 0px !important;
    padding-left: 0px !important;
  }

  .v-application .px-sm-1 {
    padding-right: 4px !important;
    padding-left: 4px !important;
  }

  .v-application .px-sm-2 {
    padding-right: 8px !important;
    padding-left: 8px !important;
  }

  .v-application .px-sm-3 {
    padding-right: 12px !important;
    padding-left: 12px !important;
  }

  .v-application .px-sm-4 {
    padding-right: 16px !important;
    padding-left: 16px !important;
  }

  .v-application .px-sm-5 {
    padding-right: 20px !important;
    padding-left: 20px !important;
  }

  .v-application .px-sm-6 {
    padding-right: 24px !important;
    padding-left: 24px !important;
  }

  .v-application .px-sm-7 {
    padding-right: 28px !important;
    padding-left: 28px !important;
  }

  .v-application .px-sm-8 {
    padding-right: 32px !important;
    padding-left: 32px !important;
  }

  .v-application .px-sm-9 {
    padding-right: 36px !important;
    padding-left: 36px !important;
  }

  .v-application .px-sm-10 {
    padding-right: 40px !important;
    padding-left: 40px !important;
  }

  .v-application .px-sm-11 {
    padding-right: 44px !important;
    padding-left: 44px !important;
  }

  .v-application .px-sm-12 {
    padding-right: 48px !important;
    padding-left: 48px !important;
  }

  .v-application .px-sm-13 {
    padding-right: 52px !important;
    padding-left: 52px !important;
  }

  .v-application .px-sm-14 {
    padding-right: 56px !important;
    padding-left: 56px !important;
  }

  .v-application .px-sm-15 {
    padding-right: 60px !important;
    padding-left: 60px !important;
  }

  .v-application .px-sm-16 {
    padding-right: 64px !important;
    padding-left: 64px !important;
  }

  .v-application .py-sm-0 {
    padding-top: 0px !important;
    padding-bottom: 0px !important;
  }

  .v-application .py-sm-1 {
    padding-top: 4px !important;
    padding-bottom: 4px !important;
  }

  .v-application .py-sm-2 {
    padding-top: 8px !important;
    padding-bottom: 8px !important;
  }

  .v-application .py-sm-3 {
    padding-top: 12px !important;
    padding-bottom: 12px !important;
  }

  .v-application .py-sm-4 {
    padding-top: 16px !important;
    padding-bottom: 16px !important;
  }

  .v-application .py-sm-5 {
    padding-top: 20px !important;
    padding-bottom: 20px !important;
  }

  .v-application .py-sm-6 {
    padding-top: 24px !important;
    padding-bottom: 24px !important;
  }

  .v-application .py-sm-7 {
    padding-top: 28px !important;
    padding-bottom: 28px !important;
  }

  .v-application .py-sm-8 {
    padding-top: 32px !important;
    padding-bottom: 32px !important;
  }

  .v-application .py-sm-9 {
    padding-top: 36px !important;
    padding-bottom: 36px !important;
  }

  .v-application .py-sm-10 {
    padding-top: 40px !important;
    padding-bottom: 40px !important;
  }

  .v-application .py-sm-11 {
    padding-top: 44px !important;
    padding-bottom: 44px !important;
  }

  .v-application .py-sm-12 {
    padding-top: 48px !important;
    padding-bottom: 48px !important;
  }

  .v-application .py-sm-13 {
    padding-top: 52px !important;
    padding-bottom: 52px !important;
  }

  .v-application .py-sm-14 {
    padding-top: 56px !important;
    padding-bottom: 56px !important;
  }

  .v-application .py-sm-15 {
    padding-top: 60px !important;
    padding-bottom: 60px !important;
  }

  .v-application .py-sm-16 {
    padding-top: 64px !important;
    padding-bottom: 64px !important;
  }

  .v-application .pt-sm-0 {
    padding-top: 0px !important;
  }

  .v-application .pt-sm-1 {
    padding-top: 4px !important;
  }

  .v-application .pt-sm-2 {
    padding-top: 8px !important;
  }

  .v-application .pt-sm-3 {
    padding-top: 12px !important;
  }

  .v-application .pt-sm-4 {
    padding-top: 16px !important;
  }

  .v-application .pt-sm-5 {
    padding-top: 20px !important;
  }

  .v-application .pt-sm-6 {
    padding-top: 24px !important;
  }

  .v-application .pt-sm-7 {
    padding-top: 28px !important;
  }

  .v-application .pt-sm-8 {
    padding-top: 32px !important;
  }

  .v-application .pt-sm-9 {
    padding-top: 36px !important;
  }

  .v-application .pt-sm-10 {
    padding-top: 40px !important;
  }

  .v-application .pt-sm-11 {
    padding-top: 44px !important;
  }

  .v-application .pt-sm-12 {
    padding-top: 48px !important;
  }

  .v-application .pt-sm-13 {
    padding-top: 52px !important;
  }

  .v-application .pt-sm-14 {
    padding-top: 56px !important;
  }

  .v-application .pt-sm-15 {
    padding-top: 60px !important;
  }

  .v-application .pt-sm-16 {
    padding-top: 64px !important;
  }

  .v-application .pr-sm-0 {
    padding-right: 0px !important;
  }

  .v-application .pr-sm-1 {
    padding-right: 4px !important;
  }

  .v-application .pr-sm-2 {
    padding-right: 8px !important;
  }

  .v-application .pr-sm-3 {
    padding-right: 12px !important;
  }

  .v-application .pr-sm-4 {
    padding-right: 16px !important;
  }

  .v-application .pr-sm-5 {
    padding-right: 20px !important;
  }

  .v-application .pr-sm-6 {
    padding-right: 24px !important;
  }

  .v-application .pr-sm-7 {
    padding-right: 28px !important;
  }

  .v-application .pr-sm-8 {
    padding-right: 32px !important;
  }

  .v-application .pr-sm-9 {
    padding-right: 36px !important;
  }

  .v-application .pr-sm-10 {
    padding-right: 40px !important;
  }

  .v-application .pr-sm-11 {
    padding-right: 44px !important;
  }

  .v-application .pr-sm-12 {
    padding-right: 48px !important;
  }

  .v-application .pr-sm-13 {
    padding-right: 52px !important;
  }

  .v-application .pr-sm-14 {
    padding-right: 56px !important;
  }

  .v-application .pr-sm-15 {
    padding-right: 60px !important;
  }

  .v-application .pr-sm-16 {
    padding-right: 64px !important;
  }

  .v-application .pb-sm-0 {
    padding-bottom: 0px !important;
  }

  .v-application .pb-sm-1 {
    padding-bottom: 4px !important;
  }

  .v-application .pb-sm-2 {
    padding-bottom: 8px !important;
  }

  .v-application .pb-sm-3 {
    padding-bottom: 12px !important;
  }

  .v-application .pb-sm-4 {
    padding-bottom: 16px !important;
  }

  .v-application .pb-sm-5 {
    padding-bottom: 20px !important;
  }

  .v-application .pb-sm-6 {
    padding-bottom: 24px !important;
  }

  .v-application .pb-sm-7 {
    padding-bottom: 28px !important;
  }

  .v-application .pb-sm-8 {
    padding-bottom: 32px !important;
  }

  .v-application .pb-sm-9 {
    padding-bottom: 36px !important;
  }

  .v-application .pb-sm-10 {
    padding-bottom: 40px !important;
  }

  .v-application .pb-sm-11 {
    padding-bottom: 44px !important;
  }

  .v-application .pb-sm-12 {
    padding-bottom: 48px !important;
  }

  .v-application .pb-sm-13 {
    padding-bottom: 52px !important;
  }

  .v-application .pb-sm-14 {
    padding-bottom: 56px !important;
  }

  .v-application .pb-sm-15 {
    padding-bottom: 60px !important;
  }

  .v-application .pb-sm-16 {
    padding-bottom: 64px !important;
  }

  .v-application .pl-sm-0 {
    padding-left: 0px !important;
  }

  .v-application .pl-sm-1 {
    padding-left: 4px !important;
  }

  .v-application .pl-sm-2 {
    padding-left: 8px !important;
  }

  .v-application .pl-sm-3 {
    padding-left: 12px !important;
  }

  .v-application .pl-sm-4 {
    padding-left: 16px !important;
  }

  .v-application .pl-sm-5 {
    padding-left: 20px !important;
  }

  .v-application .pl-sm-6 {
    padding-left: 24px !important;
  }

  .v-application .pl-sm-7 {
    padding-left: 28px !important;
  }

  .v-application .pl-sm-8 {
    padding-left: 32px !important;
  }

  .v-application .pl-sm-9 {
    padding-left: 36px !important;
  }

  .v-application .pl-sm-10 {
    padding-left: 40px !important;
  }

  .v-application .pl-sm-11 {
    padding-left: 44px !important;
  }

  .v-application .pl-sm-12 {
    padding-left: 48px !important;
  }

  .v-application .pl-sm-13 {
    padding-left: 52px !important;
  }

  .v-application .pl-sm-14 {
    padding-left: 56px !important;
  }

  .v-application .pl-sm-15 {
    padding-left: 60px !important;
  }

  .v-application .pl-sm-16 {
    padding-left: 64px !important;
  }

  .v-application--is-ltr .ps-sm-0 {
    padding-left: 0px !important;
  }

  .v-application--is-rtl .ps-sm-0 {
    padding-right: 0px !important;
  }

  .v-application--is-ltr .ps-sm-1 {
    padding-left: 4px !important;
  }

  .v-application--is-rtl .ps-sm-1 {
    padding-right: 4px !important;
  }

  .v-application--is-ltr .ps-sm-2 {
    padding-left: 8px !important;
  }

  .v-application--is-rtl .ps-sm-2 {
    padding-right: 8px !important;
  }

  .v-application--is-ltr .ps-sm-3 {
    padding-left: 12px !important;
  }

  .v-application--is-rtl .ps-sm-3 {
    padding-right: 12px !important;
  }

  .v-application--is-ltr .ps-sm-4 {
    padding-left: 16px !important;
  }

  .v-application--is-rtl .ps-sm-4 {
    padding-right: 16px !important;
  }

  .v-application--is-ltr .ps-sm-5 {
    padding-left: 20px !important;
  }

  .v-application--is-rtl .ps-sm-5 {
    padding-right: 20px !important;
  }

  .v-application--is-ltr .ps-sm-6 {
    padding-left: 24px !important;
  }

  .v-application--is-rtl .ps-sm-6 {
    padding-right: 24px !important;
  }

  .v-application--is-ltr .ps-sm-7 {
    padding-left: 28px !important;
  }

  .v-application--is-rtl .ps-sm-7 {
    padding-right: 28px !important;
  }

  .v-application--is-ltr .ps-sm-8 {
    padding-left: 32px !important;
  }

  .v-application--is-rtl .ps-sm-8 {
    padding-right: 32px !important;
  }

  .v-application--is-ltr .ps-sm-9 {
    padding-left: 36px !important;
  }

  .v-application--is-rtl .ps-sm-9 {
    padding-right: 36px !important;
  }

  .v-application--is-ltr .ps-sm-10 {
    padding-left: 40px !important;
  }

  .v-application--is-rtl .ps-sm-10 {
    padding-right: 40px !important;
  }

  .v-application--is-ltr .ps-sm-11 {
    padding-left: 44px !important;
  }

  .v-application--is-rtl .ps-sm-11 {
    padding-right: 44px !important;
  }

  .v-application--is-ltr .ps-sm-12 {
    padding-left: 48px !important;
  }

  .v-application--is-rtl .ps-sm-12 {
    padding-right: 48px !important;
  }

  .v-application--is-ltr .ps-sm-13 {
    padding-left: 52px !important;
  }

  .v-application--is-rtl .ps-sm-13 {
    padding-right: 52px !important;
  }

  .v-application--is-ltr .ps-sm-14 {
    padding-left: 56px !important;
  }

  .v-application--is-rtl .ps-sm-14 {
    padding-right: 56px !important;
  }

  .v-application--is-ltr .ps-sm-15 {
    padding-left: 60px !important;
  }

  .v-application--is-rtl .ps-sm-15 {
    padding-right: 60px !important;
  }

  .v-application--is-ltr .ps-sm-16 {
    padding-left: 64px !important;
  }

  .v-application--is-rtl .ps-sm-16 {
    padding-right: 64px !important;
  }

  .v-application--is-ltr .pe-sm-0 {
    padding-right: 0px !important;
  }

  .v-application--is-rtl .pe-sm-0 {
    padding-left: 0px !important;
  }

  .v-application--is-ltr .pe-sm-1 {
    padding-right: 4px !important;
  }

  .v-application--is-rtl .pe-sm-1 {
    padding-left: 4px !important;
  }

  .v-application--is-ltr .pe-sm-2 {
    padding-right: 8px !important;
  }

  .v-application--is-rtl .pe-sm-2 {
    padding-left: 8px !important;
  }

  .v-application--is-ltr .pe-sm-3 {
    padding-right: 12px !important;
  }

  .v-application--is-rtl .pe-sm-3 {
    padding-left: 12px !important;
  }

  .v-application--is-ltr .pe-sm-4 {
    padding-right: 16px !important;
  }

  .v-application--is-rtl .pe-sm-4 {
    padding-left: 16px !important;
  }

  .v-application--is-ltr .pe-sm-5 {
    padding-right: 20px !important;
  }

  .v-application--is-rtl .pe-sm-5 {
    padding-left: 20px !important;
  }

  .v-application--is-ltr .pe-sm-6 {
    padding-right: 24px !important;
  }

  .v-application--is-rtl .pe-sm-6 {
    padding-left: 24px !important;
  }

  .v-application--is-ltr .pe-sm-7 {
    padding-right: 28px !important;
  }

  .v-application--is-rtl .pe-sm-7 {
    padding-left: 28px !important;
  }

  .v-application--is-ltr .pe-sm-8 {
    padding-right: 32px !important;
  }

  .v-application--is-rtl .pe-sm-8 {
    padding-left: 32px !important;
  }

  .v-application--is-ltr .pe-sm-9 {
    padding-right: 36px !important;
  }

  .v-application--is-rtl .pe-sm-9 {
    padding-left: 36px !important;
  }

  .v-application--is-ltr .pe-sm-10 {
    padding-right: 40px !important;
  }

  .v-application--is-rtl .pe-sm-10 {
    padding-left: 40px !important;
  }

  .v-application--is-ltr .pe-sm-11 {
    padding-right: 44px !important;
  }

  .v-application--is-rtl .pe-sm-11 {
    padding-left: 44px !important;
  }

  .v-application--is-ltr .pe-sm-12 {
    padding-right: 48px !important;
  }

  .v-application--is-rtl .pe-sm-12 {
    padding-left: 48px !important;
  }

  .v-application--is-ltr .pe-sm-13 {
    padding-right: 52px !important;
  }

  .v-application--is-rtl .pe-sm-13 {
    padding-left: 52px !important;
  }

  .v-application--is-ltr .pe-sm-14 {
    padding-right: 56px !important;
  }

  .v-application--is-rtl .pe-sm-14 {
    padding-left: 56px !important;
  }

  .v-application--is-ltr .pe-sm-15 {
    padding-right: 60px !important;
  }

  .v-application--is-rtl .pe-sm-15 {
    padding-left: 60px !important;
  }

  .v-application--is-ltr .pe-sm-16 {
    padding-right: 64px !important;
  }

  .v-application--is-rtl .pe-sm-16 {
    padding-left: 64px !important;
  }

  .v-application .text-sm-left {
    text-align: left !important;
  }

  .v-application .text-sm-right {
    text-align: right !important;
  }

  .v-application .text-sm-center {
    text-align: center !important;
  }

  .v-application .text-sm-justify {
    text-align: justify !important;
  }

  .v-application .text-sm-start {
    text-align: start !important;
  }

  .v-application .text-sm-end {
    text-align: end !important;
  }

  .v-application .text-sm-h1 {
    font-size: 6rem !important;
    font-weight: 300;
    line-height: 6rem;
    letter-spacing: -0.015625em !important;
    font-family: "Roboto", sans-serif !important;
  }

  .v-application .text-sm-h2 {
    font-size: 3.75rem !important;
    font-weight: 300;
    line-height: 3.75rem;
    letter-spacing: -0.0083333333em !important;
    font-family: "Roboto", sans-serif !important;
  }

  .v-application .text-sm-h3 {
    font-size: 3rem !important;
    font-weight: 400;
    line-height: 3.125rem;
    letter-spacing: normal !important;
    font-family: "Roboto", sans-serif !important;
  }

  .v-application .text-sm-h4 {
    font-size: 2.125rem !important;
    font-weight: 400;
    line-height: 2.5rem;
    letter-spacing: 0.0073529412em !important;
    font-family: "Roboto", sans-serif !important;
  }

  .v-application .text-sm-h5 {
    font-size: 1.5rem !important;
    font-weight: 400;
    line-height: 2rem;
    letter-spacing: normal !important;
    font-family: "Roboto", sans-serif !important;
  }

  .v-application .text-sm-h6 {
    font-size: 1.25rem !important;
    font-weight: 500;
    line-height: 2rem;
    letter-spacing: 0.0125em !important;
    font-family: "Roboto", sans-serif !important;
  }

  .v-application .text-sm-subtitle-1 {
    font-size: 1rem !important;
    font-weight: normal;
    line-height: 1.75rem;
    letter-spacing: 0.009375em !important;
    font-family: "Roboto", sans-serif !important;
  }

  .v-application .text-sm-subtitle-2 {
    font-size: 0.875rem !important;
    font-weight: 500;
    line-height: 1.375rem;
    letter-spacing: 0.0071428571em !important;
    font-family: "Roboto", sans-serif !important;
  }

  .v-application .text-sm-body-1 {
    font-size: 1rem !important;
    font-weight: 400;
    line-height: 1.5rem;
    letter-spacing: 0.03125em !important;
    font-family: "Roboto", sans-serif !important;
  }

  .v-application .text-sm-body-2 {
    font-size: 0.875rem !important;
    font-weight: 400;
    line-height: 1.25rem;
    letter-spacing: 0.0178571429em !important;
    font-family: "Roboto", sans-serif !important;
  }

  .v-application .text-sm-button {
    font-size: 0.875rem !important;
    font-weight: 500;
    line-height: 2.25rem;
    letter-spacing: 0.0892857143em !important;
    font-family: "Roboto", sans-serif !important;
    text-transform: uppercase !important;
  }

  .v-application .text-sm-caption {
    font-size: 0.75rem !important;
    font-weight: 400;
    line-height: 1.25rem;
    letter-spacing: 0.0333333333em !important;
    font-family: "Roboto", sans-serif !important;
  }

  .v-application .text-sm-overline {
    font-size: 0.75rem !important;
    font-weight: 500;
    line-height: 2rem;
    letter-spacing: 0.1666666667em !important;
    font-family: "Roboto", sans-serif !important;
    text-transform: uppercase !important;
  }
}
@media (min-width: 960px) {
  .v-application .d-md-none {
    display: none !important;
  }

  .v-application .d-md-inline {
    display: inline !important;
  }

  .v-application .d-md-inline-block {
    display: inline-block !important;
  }

  .v-application .d-md-block {
    display: block !important;
  }

  .v-application .d-md-table {
    display: table !important;
  }

  .v-application .d-md-table-row {
    display: table-row !important;
  }

  .v-application .d-md-table-cell {
    display: table-cell !important;
  }

  .v-application .d-md-flex {
    display: flex !important;
  }

  .v-application .d-md-inline-flex {
    display: inline-flex !important;
  }

  .v-application .float-md-none {
    float: none !important;
  }

  .v-application .float-md-left {
    float: left !important;
  }

  .v-application .float-md-right {
    float: right !important;
  }

  .v-application--is-rtl .float-md-end {
    float: left !important;
  }

  .v-application--is-rtl .float-md-start {
    float: right !important;
  }

  .v-application--is-ltr .float-md-end {
    float: right !important;
  }

  .v-application--is-ltr .float-md-start {
    float: left !important;
  }

  .v-application .flex-md-fill {
    flex: 1 1 auto !important;
  }

  .v-application .flex-md-row {
    flex-direction: row !important;
  }

  .v-application .flex-md-column {
    flex-direction: column !important;
  }

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

  .v-application .flex-md-column-reverse {
    flex-direction: column-reverse !important;
  }

  .v-application .flex-md-grow-0 {
    flex-grow: 0 !important;
  }

  .v-application .flex-md-grow-1 {
    flex-grow: 1 !important;
  }

  .v-application .flex-md-shrink-0 {
    flex-shrink: 0 !important;
  }

  .v-application .flex-md-shrink-1 {
    flex-shrink: 1 !important;
  }

  .v-application .flex-md-wrap {
    flex-wrap: wrap !important;
  }

  .v-application .flex-md-nowrap {
    flex-wrap: nowrap !important;
  }

  .v-application .flex-md-wrap-reverse {
    flex-wrap: wrap-reverse !important;
  }

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

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

  .v-application .justify-md-center {
    justify-content: center !important;
  }

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

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

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

  .v-application .align-md-end {
    align-items: flex-end !important;
  }

  .v-application .align-md-center {
    align-items: center !important;
  }

  .v-application .align-md-baseline {
    align-items: baseline !important;
  }

  .v-application .align-md-stretch {
    align-items: stretch !important;
  }

  .v-application .align-content-md-start {
    align-content: flex-start !important;
  }

  .v-application .align-content-md-end {
    align-content: flex-end !important;
  }

  .v-application .align-content-md-center {
    align-content: center !important;
  }

  .v-application .align-content-md-space-between {
    align-content: space-between !important;
  }

  .v-application .align-content-md-space-around {
    align-content: space-around !important;
  }

  .v-application .align-content-md-stretch {
    align-content: stretch !important;
  }

  .v-application .align-self-md-auto {
    align-self: auto !important;
  }

  .v-application .align-self-md-start {
    align-self: flex-start !important;
  }

  .v-application .align-self-md-end {
    align-self: flex-end !important;
  }

  .v-application .align-self-md-center {
    align-self: center !important;
  }

  .v-application .align-self-md-baseline {
    align-self: baseline !important;
  }

  .v-application .align-self-md-stretch {
    align-self: stretch !important;
  }

  .v-application .order-md-first {
    order: -1 !important;
  }

  .v-application .order-md-0 {
    order: 0 !important;
  }

  .v-application .order-md-1 {
    order: 1 !important;
  }

  .v-application .order-md-2 {
    order: 2 !important;
  }

  .v-application .order-md-3 {
    order: 3 !important;
  }

  .v-application .order-md-4 {
    order: 4 !important;
  }

  .v-application .order-md-5 {
    order: 5 !important;
  }

  .v-application .order-md-6 {
    order: 6 !important;
  }

  .v-application .order-md-7 {
    order: 7 !important;
  }

  .v-application .order-md-8 {
    order: 8 !important;
  }

  .v-application .order-md-9 {
    order: 9 !important;
  }

  .v-application .order-md-10 {
    order: 10 !important;
  }

  .v-application .order-md-11 {
    order: 11 !important;
  }

  .v-application .order-md-12 {
    order: 12 !important;
  }

  .v-application .order-md-last {
    order: 13 !important;
  }

  .v-application .ma-md-0 {
    margin: 0px !important;
  }

  .v-application .ma-md-1 {
    margin: 4px !important;
  }

  .v-application .ma-md-2 {
    margin: 8px !important;
  }

  .v-application .ma-md-3 {
    margin: 12px !important;
  }

  .v-application .ma-md-4 {
    margin: 16px !important;
  }

  .v-application .ma-md-5 {
    margin: 20px !important;
  }

  .v-application .ma-md-6 {
    margin: 24px !important;
  }

  .v-application .ma-md-7 {
    margin: 28px !important;
  }

  .v-application .ma-md-8 {
    margin: 32px !important;
  }

  .v-application .ma-md-9 {
    margin: 36px !important;
  }

  .v-application .ma-md-10 {
    margin: 40px !important;
  }

  .v-application .ma-md-11 {
    margin: 44px !important;
  }

  .v-application .ma-md-12 {
    margin: 48px !important;
  }

  .v-application .ma-md-13 {
    margin: 52px !important;
  }

  .v-application .ma-md-14 {
    margin: 56px !important;
  }

  .v-application .ma-md-15 {
    margin: 60px !important;
  }

  .v-application .ma-md-16 {
    margin: 64px !important;
  }

  .v-application .ma-md-auto {
    margin: auto !important;
  }

  .v-application .mx-md-0 {
    margin-right: 0px !important;
    margin-left: 0px !important;
  }

  .v-application .mx-md-1 {
    margin-right: 4px !important;
    margin-left: 4px !important;
  }

  .v-application .mx-md-2 {
    margin-right: 8px !important;
    margin-left: 8px !important;
  }

  .v-application .mx-md-3 {
    margin-right: 12px !important;
    margin-left: 12px !important;
  }

  .v-application .mx-md-4 {
    margin-right: 16px !important;
    margin-left: 16px !important;
  }

  .v-application .mx-md-5 {
    margin-right: 20px !important;
    margin-left: 20px !important;
  }

  .v-application .mx-md-6 {
    margin-right: 24px !important;
    margin-left: 24px !important;
  }

  .v-application .mx-md-7 {
    margin-right: 28px !important;
    margin-left: 28px !important;
  }

  .v-application .mx-md-8 {
    margin-right: 32px !important;
    margin-left: 32px !important;
  }

  .v-application .mx-md-9 {
    margin-right: 36px !important;
    margin-left: 36px !important;
  }

  .v-application .mx-md-10 {
    margin-right: 40px !important;
    margin-left: 40px !important;
  }

  .v-application .mx-md-11 {
    margin-right: 44px !important;
    margin-left: 44px !important;
  }

  .v-application .mx-md-12 {
    margin-right: 48px !important;
    margin-left: 48px !important;
  }

  .v-application .mx-md-13 {
    margin-right: 52px !important;
    margin-left: 52px !important;
  }

  .v-application .mx-md-14 {
    margin-right: 56px !important;
    margin-left: 56px !important;
  }

  .v-application .mx-md-15 {
    margin-right: 60px !important;
    margin-left: 60px !important;
  }

  .v-application .mx-md-16 {
    margin-right: 64px !important;
    margin-left: 64px !important;
  }

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

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

  .v-application .my-md-1 {
    margin-top: 4px !important;
    margin-bottom: 4px !important;
  }

  .v-application .my-md-2 {
    margin-top: 8px !important;
    margin-bottom: 8px !important;
  }

  .v-application .my-md-3 {
    margin-top: 12px !important;
    margin-bottom: 12px !important;
  }

  .v-application .my-md-4 {
    margin-top: 16px !important;
    margin-bottom: 16px !important;
  }

  .v-application .my-md-5 {
    margin-top: 20px !important;
    margin-bottom: 20px !important;
  }

  .v-application .my-md-6 {
    margin-top: 24px !important;
    margin-bottom: 24px !important;
  }

  .v-application .my-md-7 {
    margin-top: 28px !important;
    margin-bottom: 28px !important;
  }

  .v-application .my-md-8 {
    margin-top: 32px !important;
    margin-bottom: 32px !important;
  }

  .v-application .my-md-9 {
    margin-top: 36px !important;
    margin-bottom: 36px !important;
  }

  .v-application .my-md-10 {
    margin-top: 40px !important;
    margin-bottom: 40px !important;
  }

  .v-application .my-md-11 {
    margin-top: 44px !important;
    margin-bottom: 44px !important;
  }

  .v-application .my-md-12 {
    margin-top: 48px !important;
    margin-bottom: 48px !important;
  }

  .v-application .my-md-13 {
    margin-top: 52px !important;
    margin-bottom: 52px !important;
  }

  .v-application .my-md-14 {
    margin-top: 56px !important;
    margin-bottom: 56px !important;
  }

  .v-application .my-md-15 {
    margin-top: 60px !important;
    margin-bottom: 60px !important;
  }

  .v-application .my-md-16 {
    margin-top: 64px !important;
    margin-bottom: 64px !important;
  }

  .v-application .my-md-auto {
    margin-top: auto !important;
    margin-bottom: auto !important;
  }

  .v-application .mt-md-0 {
    margin-top: 0px !important;
  }

  .v-application .mt-md-1 {
    margin-top: 4px !important;
  }

  .v-application .mt-md-2 {
    margin-top: 8px !important;
  }

  .v-application .mt-md-3 {
    margin-top: 12px !important;
  }

  .v-application .mt-md-4 {
    margin-top: 16px !important;
  }

  .v-application .mt-md-5 {
    margin-top: 20px !important;
  }

  .v-application .mt-md-6 {
    margin-top: 24px !important;
  }

  .v-application .mt-md-7 {
    margin-top: 28px !important;
  }

  .v-application .mt-md-8 {
    margin-top: 32px !important;
  }

  .v-application .mt-md-9 {
    margin-top: 36px !important;
  }

  .v-application .mt-md-10 {
    margin-top: 40px !important;
  }

  .v-application .mt-md-11 {
    margin-top: 44px !important;
  }

  .v-application .mt-md-12 {
    margin-top: 48px !important;
  }

  .v-application .mt-md-13 {
    margin-top: 52px !important;
  }

  .v-application .mt-md-14 {
    margin-top: 56px !important;
  }

  .v-application .mt-md-15 {
    margin-top: 60px !important;
  }

  .v-application .mt-md-16 {
    margin-top: 64px !important;
  }

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

  .v-application .mr-md-0 {
    margin-right: 0px !important;
  }

  .v-application .mr-md-1 {
    margin-right: 4px !important;
  }

  .v-application .mr-md-2 {
    margin-right: 8px !important;
  }

  .v-application .mr-md-3 {
    margin-right: 12px !important;
  }

  .v-application .mr-md-4 {
    margin-right: 16px !important;
  }

  .v-application .mr-md-5 {
    margin-right: 20px !important;
  }

  .v-application .mr-md-6 {
    margin-right: 24px !important;
  }

  .v-application .mr-md-7 {
    margin-right: 28px !important;
  }

  .v-application .mr-md-8 {
    margin-right: 32px !important;
  }

  .v-application .mr-md-9 {
    margin-right: 36px !important;
  }

  .v-application .mr-md-10 {
    margin-right: 40px !important;
  }

  .v-application .mr-md-11 {
    margin-right: 44px !important;
  }

  .v-application .mr-md-12 {
    margin-right: 48px !important;
  }

  .v-application .mr-md-13 {
    margin-right: 52px !important;
  }

  .v-application .mr-md-14 {
    margin-right: 56px !important;
  }

  .v-application .mr-md-15 {
    margin-right: 60px !important;
  }

  .v-application .mr-md-16 {
    margin-right: 64px !important;
  }

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

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

  .v-application .mb-md-1 {
    margin-bottom: 4px !important;
  }

  .v-application .mb-md-2 {
    margin-bottom: 8px !important;
  }

  .v-application .mb-md-3 {
    margin-bottom: 12px !important;
  }

  .v-application .mb-md-4 {
    margin-bottom: 16px !important;
  }

  .v-application .mb-md-5 {
    margin-bottom: 20px !important;
  }

  .v-application .mb-md-6 {
    margin-bottom: 24px !important;
  }

  .v-application .mb-md-7 {
    margin-bottom: 28px !important;
  }

  .v-application .mb-md-8 {
    margin-bottom: 32px !important;
  }

  .v-application .mb-md-9 {
    margin-bottom: 36px !important;
  }

  .v-application .mb-md-10 {
    margin-bottom: 40px !important;
  }

  .v-application .mb-md-11 {
    margin-bottom: 44px !important;
  }

  .v-application .mb-md-12 {
    margin-bottom: 48px !important;
  }

  .v-application .mb-md-13 {
    margin-bottom: 52px !important;
  }

  .v-application .mb-md-14 {
    margin-bottom: 56px !important;
  }

  .v-application .mb-md-15 {
    margin-bottom: 60px !important;
  }

  .v-application .mb-md-16 {
    margin-bottom: 64px !important;
  }

  .v-application .mb-md-auto {
    margin-bottom: auto !important;
  }

  .v-application .ml-md-0 {
    margin-left: 0px !important;
  }

  .v-application .ml-md-1 {
    margin-left: 4px !important;
  }

  .v-application .ml-md-2 {
    margin-left: 8px !important;
  }

  .v-application .ml-md-3 {
    margin-left: 12px !important;
  }

  .v-application .ml-md-4 {
    margin-left: 16px !important;
  }

  .v-application .ml-md-5 {
    margin-left: 20px !important;
  }

  .v-application .ml-md-6 {
    margin-left: 24px !important;
  }

  .v-application .ml-md-7 {
    margin-left: 28px !important;
  }

  .v-application .ml-md-8 {
    margin-left: 32px !important;
  }

  .v-application .ml-md-9 {
    margin-left: 36px !important;
  }

  .v-application .ml-md-10 {
    margin-left: 40px !important;
  }

  .v-application .ml-md-11 {
    margin-left: 44px !important;
  }

  .v-application .ml-md-12 {
    margin-left: 48px !important;
  }

  .v-application .ml-md-13 {
    margin-left: 52px !important;
  }

  .v-application .ml-md-14 {
    margin-left: 56px !important;
  }

  .v-application .ml-md-15 {
    margin-left: 60px !important;
  }

  .v-application .ml-md-16 {
    margin-left: 64px !important;
  }

  .v-application .ml-md-auto {
    margin-left: auto !important;
  }

  .v-application--is-ltr .ms-md-0 {
    margin-left: 0px !important;
  }

  .v-application--is-rtl .ms-md-0 {
    margin-right: 0px !important;
  }

  .v-application--is-ltr .ms-md-1 {
    margin-left: 4px !important;
  }

  .v-application--is-rtl .ms-md-1 {
    margin-right: 4px !important;
  }

  .v-application--is-ltr .ms-md-2 {
    margin-left: 8px !important;
  }

  .v-application--is-rtl .ms-md-2 {
    margin-right: 8px !important;
  }

  .v-application--is-ltr .ms-md-3 {
    margin-left: 12px !important;
  }

  .v-application--is-rtl .ms-md-3 {
    margin-right: 12px !important;
  }

  .v-application--is-ltr .ms-md-4 {
    margin-left: 16px !important;
  }

  .v-application--is-rtl .ms-md-4 {
    margin-right: 16px !important;
  }

  .v-application--is-ltr .ms-md-5 {
    margin-left: 20px !important;
  }

  .v-application--is-rtl .ms-md-5 {
    margin-right: 20px !important;
  }

  .v-application--is-ltr .ms-md-6 {
    margin-left: 24px !important;
  }

  .v-application--is-rtl .ms-md-6 {
    margin-right: 24px !important;
  }

  .v-application--is-ltr .ms-md-7 {
    margin-left: 28px !important;
  }

  .v-application--is-rtl .ms-md-7 {
    margin-right: 28px !important;
  }

  .v-application--is-ltr .ms-md-8 {
    margin-left: 32px !important;
  }

  .v-application--is-rtl .ms-md-8 {
    margin-right: 32px !important;
  }

  .v-application--is-ltr .ms-md-9 {
    margin-left: 36px !important;
  }

  .v-application--is-rtl .ms-md-9 {
    margin-right: 36px !important;
  }

  .v-application--is-ltr .ms-md-10 {
    margin-left: 40px !important;
  }

  .v-application--is-rtl .ms-md-10 {
    margin-right: 40px !important;
  }

  .v-application--is-ltr .ms-md-11 {
    margin-left: 44px !important;
  }

  .v-application--is-rtl .ms-md-11 {
    margin-right: 44px !important;
  }

  .v-application--is-ltr .ms-md-12 {
    margin-left: 48px !important;
  }

  .v-application--is-rtl .ms-md-12 {
    margin-right: 48px !important;
  }

  .v-application--is-ltr .ms-md-13 {
    margin-left: 52px !important;
  }

  .v-application--is-rtl .ms-md-13 {
    margin-right: 52px !important;
  }

  .v-application--is-ltr .ms-md-14 {
    margin-left: 56px !important;
  }

  .v-application--is-rtl .ms-md-14 {
    margin-right: 56px !important;
  }

  .v-application--is-ltr .ms-md-15 {
    margin-left: 60px !important;
  }

  .v-application--is-rtl .ms-md-15 {
    margin-right: 60px !important;
  }

  .v-application--is-ltr .ms-md-16 {
    margin-left: 64px !important;
  }

  .v-application--is-rtl .ms-md-16 {
    margin-right: 64px !important;
  }

  .v-application--is-ltr .ms-md-auto {
    margin-left: auto !important;
  }

  .v-application--is-rtl .ms-md-auto {
    margin-right: auto !important;
  }

  .v-application--is-ltr .me-md-0 {
    margin-right: 0px !important;
  }

  .v-application--is-rtl .me-md-0 {
    margin-left: 0px !important;
  }

  .v-application--is-ltr .me-md-1 {
    margin-right: 4px !important;
  }

  .v-application--is-rtl .me-md-1 {
    margin-left: 4px !important;
  }

  .v-application--is-ltr .me-md-2 {
    margin-right: 8px !important;
  }

  .v-application--is-rtl .me-md-2 {
    margin-left: 8px !important;
  }

  .v-application--is-ltr .me-md-3 {
    margin-right: 12px !important;
  }

  .v-application--is-rtl .me-md-3 {
    margin-left: 12px !important;
  }

  .v-application--is-ltr .me-md-4 {
    margin-right: 16px !important;
  }

  .v-application--is-rtl .me-md-4 {
    margin-left: 16px !important;
  }

  .v-application--is-ltr .me-md-5 {
    margin-right: 20px !important;
  }

  .v-application--is-rtl .me-md-5 {
    margin-left: 20px !important;
  }

  .v-application--is-ltr .me-md-6 {
    margin-right: 24px !important;
  }

  .v-application--is-rtl .me-md-6 {
    margin-left: 24px !important;
  }

  .v-application--is-ltr .me-md-7 {
    margin-right: 28px !important;
  }

  .v-application--is-rtl .me-md-7 {
    margin-left: 28px !important;
  }

  .v-application--is-ltr .me-md-8 {
    margin-right: 32px !important;
  }

  .v-application--is-rtl .me-md-8 {
    margin-left: 32px !important;
  }

  .v-application--is-ltr .me-md-9 {
    margin-right: 36px !important;
  }

  .v-application--is-rtl .me-md-9 {
    margin-left: 36px !important;
  }

  .v-application--is-ltr .me-md-10 {
    margin-right: 40px !important;
  }

  .v-application--is-rtl .me-md-10 {
    margin-left: 40px !important;
  }

  .v-application--is-ltr .me-md-11 {
    margin-right: 44px !important;
  }

  .v-application--is-rtl .me-md-11 {
    margin-left: 44px !important;
  }

  .v-application--is-ltr .me-md-12 {
    margin-right: 48px !important;
  }

  .v-application--is-rtl .me-md-12 {
    margin-left: 48px !important;
  }

  .v-application--is-ltr .me-md-13 {
    margin-right: 52px !important;
  }

  .v-application--is-rtl .me-md-13 {
    margin-left: 52px !important;
  }

  .v-application--is-ltr .me-md-14 {
    margin-right: 56px !important;
  }

  .v-application--is-rtl .me-md-14 {
    margin-left: 56px !important;
  }

  .v-application--is-ltr .me-md-15 {
    margin-right: 60px !important;
  }

  .v-application--is-rtl .me-md-15 {
    margin-left: 60px !important;
  }

  .v-application--is-ltr .me-md-16 {
    margin-right: 64px !important;
  }

  .v-application--is-rtl .me-md-16 {
    margin-left: 64px !important;
  }

  .v-application--is-ltr .me-md-auto {
    margin-right: auto !important;
  }

  .v-application--is-rtl .me-md-auto {
    margin-left: auto !important;
  }

  .v-application .ma-md-n1 {
    margin: -4px !important;
  }

  .v-application .ma-md-n2 {
    margin: -8px !important;
  }

  .v-application .ma-md-n3 {
    margin: -12px !important;
  }

  .v-application .ma-md-n4 {
    margin: -16px !important;
  }

  .v-application .ma-md-n5 {
    margin: -20px !important;
  }

  .v-application .ma-md-n6 {
    margin: -24px !important;
  }

  .v-application .ma-md-n7 {
    margin: -28px !important;
  }

  .v-application .ma-md-n8 {
    margin: -32px !important;
  }

  .v-application .ma-md-n9 {
    margin: -36px !important;
  }

  .v-application .ma-md-n10 {
    margin: -40px !important;
  }

  .v-application .ma-md-n11 {
    margin: -44px !important;
  }

  .v-application .ma-md-n12 {
    margin: -48px !important;
  }

  .v-application .ma-md-n13 {
    margin: -52px !important;
  }

  .v-application .ma-md-n14 {
    margin: -56px !important;
  }

  .v-application .ma-md-n15 {
    margin: -60px !important;
  }

  .v-application .ma-md-n16 {
    margin: -64px !important;
  }

  .v-application .mx-md-n1 {
    margin-right: -4px !important;
    margin-left: -4px !important;
  }

  .v-application .mx-md-n2 {
    margin-right: -8px !important;
    margin-left: -8px !important;
  }

  .v-application .mx-md-n3 {
    margin-right: -12px !important;
    margin-left: -12px !important;
  }

  .v-application .mx-md-n4 {
    margin-right: -16px !important;
    margin-left: -16px !important;
  }

  .v-application .mx-md-n5 {
    margin-right: -20px !important;
    margin-left: -20px !important;
  }

  .v-application .mx-md-n6 {
    margin-right: -24px !important;
    margin-left: -24px !important;
  }

  .v-application .mx-md-n7 {
    margin-right: -28px !important;
    margin-left: -28px !important;
  }

  .v-application .mx-md-n8 {
    margin-right: -32px !important;
    margin-left: -32px !important;
  }

  .v-application .mx-md-n9 {
    margin-right: -36px !important;
    margin-left: -36px !important;
  }

  .v-application .mx-md-n10 {
    margin-right: -40px !important;
    margin-left: -40px !important;
  }

  .v-application .mx-md-n11 {
    margin-right: -44px !important;
    margin-left: -44px !important;
  }

  .v-application .mx-md-n12 {
    margin-right: -48px !important;
    margin-left: -48px !important;
  }

  .v-application .mx-md-n13 {
    margin-right: -52px !important;
    margin-left: -52px !important;
  }

  .v-application .mx-md-n14 {
    margin-right: -56px !important;
    margin-left: -56px !important;
  }

  .v-application .mx-md-n15 {
    margin-right: -60px !important;
    margin-left: -60px !important;
  }

  .v-application .mx-md-n16 {
    margin-right: -64px !important;
    margin-left: -64px !important;
  }

  .v-application .my-md-n1 {
    margin-top: -4px !important;
    margin-bottom: -4px !important;
  }

  .v-application .my-md-n2 {
    margin-top: -8px !important;
    margin-bottom: -8px !important;
  }

  .v-application .my-md-n3 {
    margin-top: -12px !important;
    margin-bottom: -12px !important;
  }

  .v-application .my-md-n4 {
    margin-top: -16px !important;
    margin-bottom: -16px !important;
  }

  .v-application .my-md-n5 {
    margin-top: -20px !important;
    margin-bottom: -20px !important;
  }

  .v-application .my-md-n6 {
    margin-top: -24px !important;
    margin-bottom: -24px !important;
  }

  .v-application .my-md-n7 {
    margin-top: -28px !important;
    margin-bottom: -28px !important;
  }

  .v-application .my-md-n8 {
    margin-top: -32px !important;
    margin-bottom: -32px !important;
  }

  .v-application .my-md-n9 {
    margin-top: -36px !important;
    margin-bottom: -36px !important;
  }

  .v-application .my-md-n10 {
    margin-top: -40px !important;
    margin-bottom: -40px !important;
  }

  .v-application .my-md-n11 {
    margin-top: -44px !important;
    margin-bottom: -44px !important;
  }

  .v-application .my-md-n12 {
    margin-top: -48px !important;
    margin-bottom: -48px !important;
  }

  .v-application .my-md-n13 {
    margin-top: -52px !important;
    margin-bottom: -52px !important;
  }

  .v-application .my-md-n14 {
    margin-top: -56px !important;
    margin-bottom: -56px !important;
  }

  .v-application .my-md-n15 {
    margin-top: -60px !important;
    margin-bottom: -60px !important;
  }

  .v-application .my-md-n16 {
    margin-top: -64px !important;
    margin-bottom: -64px !important;
  }

  .v-application .mt-md-n1 {
    margin-top: -4px !important;
  }

  .v-application .mt-md-n2 {
    margin-top: -8px !important;
  }

  .v-application .mt-md-n3 {
    margin-top: -12px !important;
  }

  .v-application .mt-md-n4 {
    margin-top: -16px !important;
  }

  .v-application .mt-md-n5 {
    margin-top: -20px !important;
  }

  .v-application .mt-md-n6 {
    margin-top: -24px !important;
  }

  .v-application .mt-md-n7 {
    margin-top: -28px !important;
  }

  .v-application .mt-md-n8 {
    margin-top: -32px !important;
  }

  .v-application .mt-md-n9 {
    margin-top: -36px !important;
  }

  .v-application .mt-md-n10 {
    margin-top: -40px !important;
  }

  .v-application .mt-md-n11 {
    margin-top: -44px !important;
  }

  .v-application .mt-md-n12 {
    margin-top: -48px !important;
  }

  .v-application .mt-md-n13 {
    margin-top: -52px !important;
  }

  .v-application .mt-md-n14 {
    margin-top: -56px !important;
  }

  .v-application .mt-md-n15 {
    margin-top: -60px !important;
  }

  .v-application .mt-md-n16 {
    margin-top: -64px !important;
  }

  .v-application .mr-md-n1 {
    margin-right: -4px !important;
  }

  .v-application .mr-md-n2 {
    margin-right: -8px !important;
  }

  .v-application .mr-md-n3 {
    margin-right: -12px !important;
  }

  .v-application .mr-md-n4 {
    margin-right: -16px !important;
  }

  .v-application .mr-md-n5 {
    margin-right: -20px !important;
  }

  .v-application .mr-md-n6 {
    margin-right: -24px !important;
  }

  .v-application .mr-md-n7 {
    margin-right: -28px !important;
  }

  .v-application .mr-md-n8 {
    margin-right: -32px !important;
  }

  .v-application .mr-md-n9 {
    margin-right: -36px !important;
  }

  .v-application .mr-md-n10 {
    margin-right: -40px !important;
  }

  .v-application .mr-md-n11 {
    margin-right: -44px !important;
  }

  .v-application .mr-md-n12 {
    margin-right: -48px !important;
  }

  .v-application .mr-md-n13 {
    margin-right: -52px !important;
  }

  .v-application .mr-md-n14 {
    margin-right: -56px !important;
  }

  .v-application .mr-md-n15 {
    margin-right: -60px !important;
  }

  .v-application .mr-md-n16 {
    margin-right: -64px !important;
  }

  .v-application .mb-md-n1 {
    margin-bottom: -4px !important;
  }

  .v-application .mb-md-n2 {
    margin-bottom: -8px !important;
  }

  .v-application .mb-md-n3 {
    margin-bottom: -12px !important;
  }

  .v-application .mb-md-n4 {
    margin-bottom: -16px !important;
  }

  .v-application .mb-md-n5 {
    margin-bottom: -20px !important;
  }

  .v-application .mb-md-n6 {
    margin-bottom: -24px !important;
  }

  .v-application .mb-md-n7 {
    margin-bottom: -28px !important;
  }

  .v-application .mb-md-n8 {
    margin-bottom: -32px !important;
  }

  .v-application .mb-md-n9 {
    margin-bottom: -36px !important;
  }

  .v-application .mb-md-n10 {
    margin-bottom: -40px !important;
  }

  .v-application .mb-md-n11 {
    margin-bottom: -44px !important;
  }

  .v-application .mb-md-n12 {
    margin-bottom: -48px !important;
  }

  .v-application .mb-md-n13 {
    margin-bottom: -52px !important;
  }

  .v-application .mb-md-n14 {
    margin-bottom: -56px !important;
  }

  .v-application .mb-md-n15 {
    margin-bottom: -60px !important;
  }

  .v-application .mb-md-n16 {
    margin-bottom: -64px !important;
  }

  .v-application .ml-md-n1 {
    margin-left: -4px !important;
  }

  .v-application .ml-md-n2 {
    margin-left: -8px !important;
  }

  .v-application .ml-md-n3 {
    margin-left: -12px !important;
  }

  .v-application .ml-md-n4 {
    margin-left: -16px !important;
  }

  .v-application .ml-md-n5 {
    margin-left: -20px !important;
  }

  .v-application .ml-md-n6 {
    margin-left: -24px !important;
  }

  .v-application .ml-md-n7 {
    margin-left: -28px !important;
  }

  .v-application .ml-md-n8 {
    margin-left: -32px !important;
  }

  .v-application .ml-md-n9 {
    margin-left: -36px !important;
  }

  .v-application .ml-md-n10 {
    margin-left: -40px !important;
  }

  .v-application .ml-md-n11 {
    margin-left: -44px !important;
  }

  .v-application .ml-md-n12 {
    margin-left: -48px !important;
  }

  .v-application .ml-md-n13 {
    margin-left: -52px !important;
  }

  .v-application .ml-md-n14 {
    margin-left: -56px !important;
  }

  .v-application .ml-md-n15 {
    margin-left: -60px !important;
  }

  .v-application .ml-md-n16 {
    margin-left: -64px !important;
  }

  .v-application--is-ltr .ms-md-n1 {
    margin-left: -4px !important;
  }

  .v-application--is-rtl .ms-md-n1 {
    margin-right: -4px !important;
  }

  .v-application--is-ltr .ms-md-n2 {
    margin-left: -8px !important;
  }

  .v-application--is-rtl .ms-md-n2 {
    margin-right: -8px !important;
  }

  .v-application--is-ltr .ms-md-n3 {
    margin-left: -12px !important;
  }

  .v-application--is-rtl .ms-md-n3 {
    margin-right: -12px !important;
  }

  .v-application--is-ltr .ms-md-n4 {
    margin-left: -16px !important;
  }

  .v-application--is-rtl .ms-md-n4 {
    margin-right: -16px !important;
  }

  .v-application--is-ltr .ms-md-n5 {
    margin-left: -20px !important;
  }

  .v-application--is-rtl .ms-md-n5 {
    margin-right: -20px !important;
  }

  .v-application--is-ltr .ms-md-n6 {
    margin-left: -24px !important;
  }

  .v-application--is-rtl .ms-md-n6 {
    margin-right: -24px !important;
  }

  .v-application--is-ltr .ms-md-n7 {
    margin-left: -28px !important;
  }

  .v-application--is-rtl .ms-md-n7 {
    margin-right: -28px !important;
  }

  .v-application--is-ltr .ms-md-n8 {
    margin-left: -32px !important;
  }

  .v-application--is-rtl .ms-md-n8 {
    margin-right: -32px !important;
  }

  .v-application--is-ltr .ms-md-n9 {
    margin-left: -36px !important;
  }

  .v-application--is-rtl .ms-md-n9 {
    margin-right: -36px !important;
  }

  .v-application--is-ltr .ms-md-n10 {
    margin-left: -40px !important;
  }

  .v-application--is-rtl .ms-md-n10 {
    margin-right: -40px !important;
  }

  .v-application--is-ltr .ms-md-n11 {
    margin-left: -44px !important;
  }

  .v-application--is-rtl .ms-md-n11 {
    margin-right: -44px !important;
  }

  .v-application--is-ltr .ms-md-n12 {
    margin-left: -48px !important;
  }

  .v-application--is-rtl .ms-md-n12 {
    margin-right: -48px !important;
  }

  .v-application--is-ltr .ms-md-n13 {
    margin-left: -52px !important;
  }

  .v-application--is-rtl .ms-md-n13 {
    margin-right: -52px !important;
  }

  .v-application--is-ltr .ms-md-n14 {
    margin-left: -56px !important;
  }

  .v-application--is-rtl .ms-md-n14 {
    margin-right: -56px !important;
  }

  .v-application--is-ltr .ms-md-n15 {
    margin-left: -60px !important;
  }

  .v-application--is-rtl .ms-md-n15 {
    margin-right: -60px !important;
  }

  .v-application--is-ltr .ms-md-n16 {
    margin-left: -64px !important;
  }

  .v-application--is-rtl .ms-md-n16 {
    margin-right: -64px !important;
  }

  .v-application--is-ltr .me-md-n1 {
    margin-right: -4px !important;
  }

  .v-application--is-rtl .me-md-n1 {
    margin-left: -4px !important;
  }

  .v-application--is-ltr .me-md-n2 {
    margin-right: -8px !important;
  }

  .v-application--is-rtl .me-md-n2 {
    margin-left: -8px !important;
  }

  .v-application--is-ltr .me-md-n3 {
    margin-right: -12px !important;
  }

  .v-application--is-rtl .me-md-n3 {
    margin-left: -12px !important;
  }

  .v-application--is-ltr .me-md-n4 {
    margin-right: -16px !important;
  }

  .v-application--is-rtl .me-md-n4 {
    margin-left: -16px !important;
  }

  .v-application--is-ltr .me-md-n5 {
    margin-right: -20px !important;
  }

  .v-application--is-rtl .me-md-n5 {
    margin-left: -20px !important;
  }

  .v-application--is-ltr .me-md-n6 {
    margin-right: -24px !important;
  }

  .v-application--is-rtl .me-md-n6 {
    margin-left: -24px !important;
  }

  .v-application--is-ltr .me-md-n7 {
    margin-right: -28px !important;
  }

  .v-application--is-rtl .me-md-n7 {
    margin-left: -28px !important;
  }

  .v-application--is-ltr .me-md-n8 {
    margin-right: -32px !important;
  }

  .v-application--is-rtl .me-md-n8 {
    margin-left: -32px !important;
  }

  .v-application--is-ltr .me-md-n9 {
    margin-right: -36px !important;
  }

  .v-application--is-rtl .me-md-n9 {
    margin-left: -36px !important;
  }

  .v-application--is-ltr .me-md-n10 {
    margin-right: -40px !important;
  }

  .v-application--is-rtl .me-md-n10 {
    margin-left: -40px !important;
  }

  .v-application--is-ltr .me-md-n11 {
    margin-right: -44px !important;
  }

  .v-application--is-rtl .me-md-n11 {
    margin-left: -44px !important;
  }

  .v-application--is-ltr .me-md-n12 {
    margin-right: -48px !important;
  }

  .v-application--is-rtl .me-md-n12 {
    margin-left: -48px !important;
  }

  .v-application--is-ltr .me-md-n13 {
    margin-right: -52px !important;
  }

  .v-application--is-rtl .me-md-n13 {
    margin-left: -52px !important;
  }

  .v-application--is-ltr .me-md-n14 {
    margin-right: -56px !important;
  }

  .v-application--is-rtl .me-md-n14 {
    margin-left: -56px !important;
  }

  .v-application--is-ltr .me-md-n15 {
    margin-right: -60px !important;
  }

  .v-application--is-rtl .me-md-n15 {
    margin-left: -60px !important;
  }

  .v-application--is-ltr .me-md-n16 {
    margin-right: -64px !important;
  }

  .v-application--is-rtl .me-md-n16 {
    margin-left: -64px !important;
  }

  .v-application .pa-md-0 {
    padding: 0px !important;
  }

  .v-application .pa-md-1 {
    padding: 4px !important;
  }

  .v-application .pa-md-2 {
    padding: 8px !important;
  }

  .v-application .pa-md-3 {
    padding: 12px !important;
  }

  .v-application .pa-md-4 {
    padding: 16px !important;
  }

  .v-application .pa-md-5 {
    padding: 20px !important;
  }

  .v-application .pa-md-6 {
    padding: 24px !important;
  }

  .v-application .pa-md-7 {
    padding: 28px !important;
  }

  .v-application .pa-md-8 {
    padding: 32px !important;
  }

  .v-application .pa-md-9 {
    padding: 36px !important;
  }

  .v-application .pa-md-10 {
    padding: 40px !important;
  }

  .v-application .pa-md-11 {
    padding: 44px !important;
  }

  .v-application .pa-md-12 {
    padding: 48px !important;
  }

  .v-application .pa-md-13 {
    padding: 52px !important;
  }

  .v-application .pa-md-14 {
    padding: 56px !important;
  }

  .v-application .pa-md-15 {
    padding: 60px !important;
  }

  .v-application .pa-md-16 {
    padding: 64px !important;
  }

  .v-application .px-md-0 {
    padding-right: 0px !important;
    padding-left: 0px !important;
  }

  .v-application .px-md-1 {
    padding-right: 4px !important;
    padding-left: 4px !important;
  }

  .v-application .px-md-2 {
    padding-right: 8px !important;
    padding-left: 8px !important;
  }

  .v-application .px-md-3 {
    padding-right: 12px !important;
    padding-left: 12px !important;
  }

  .v-application .px-md-4 {
    padding-right: 16px !important;
    padding-left: 16px !important;
  }

  .v-application .px-md-5 {
    padding-right: 20px !important;
    padding-left: 20px !important;
  }

  .v-application .px-md-6 {
    padding-right: 24px !important;
    padding-left: 24px !important;
  }

  .v-application .px-md-7 {
    padding-right: 28px !important;
    padding-left: 28px !important;
  }

  .v-application .px-md-8 {
    padding-right: 32px !important;
    padding-left: 32px !important;
  }

  .v-application .px-md-9 {
    padding-right: 36px !important;
    padding-left: 36px !important;
  }

  .v-application .px-md-10 {
    padding-right: 40px !important;
    padding-left: 40px !important;
  }

  .v-application .px-md-11 {
    padding-right: 44px !important;
    padding-left: 44px !important;
  }

  .v-application .px-md-12 {
    padding-right: 48px !important;
    padding-left: 48px !important;
  }

  .v-application .px-md-13 {
    padding-right: 52px !important;
    padding-left: 52px !important;
  }

  .v-application .px-md-14 {
    padding-right: 56px !important;
    padding-left: 56px !important;
  }

  .v-application .px-md-15 {
    padding-right: 60px !important;
    padding-left: 60px !important;
  }

  .v-application .px-md-16 {
    padding-right: 64px !important;
    padding-left: 64px !important;
  }

  .v-application .py-md-0 {
    padding-top: 0px !important;
    padding-bottom: 0px !important;
  }

  .v-application .py-md-1 {
    padding-top: 4px !important;
    padding-bottom: 4px !important;
  }

  .v-application .py-md-2 {
    padding-top: 8px !important;
    padding-bottom: 8px !important;
  }

  .v-application .py-md-3 {
    padding-top: 12px !important;
    padding-bottom: 12px !important;
  }

  .v-application .py-md-4 {
    padding-top: 16px !important;
    padding-bottom: 16px !important;
  }

  .v-application .py-md-5 {
    padding-top: 20px !important;
    padding-bottom: 20px !important;
  }

  .v-application .py-md-6 {
    padding-top: 24px !important;
    padding-bottom: 24px !important;
  }

  .v-application .py-md-7 {
    padding-top: 28px !important;
    padding-bottom: 28px !important;
  }

  .v-application .py-md-8 {
    padding-top: 32px !important;
    padding-bottom: 32px !important;
  }

  .v-application .py-md-9 {
    padding-top: 36px !important;
    padding-bottom: 36px !important;
  }

  .v-application .py-md-10 {
    padding-top: 40px !important;
    padding-bottom: 40px !important;
  }

  .v-application .py-md-11 {
    padding-top: 44px !important;
    padding-bottom: 44px !important;
  }

  .v-application .py-md-12 {
    padding-top: 48px !important;
    padding-bottom: 48px !important;
  }

  .v-application .py-md-13 {
    padding-top: 52px !important;
    padding-bottom: 52px !important;
  }

  .v-application .py-md-14 {
    padding-top: 56px !important;
    padding-bottom: 56px !important;
  }

  .v-application .py-md-15 {
    padding-top: 60px !important;
    padding-bottom: 60px !important;
  }

  .v-application .py-md-16 {
    padding-top: 64px !important;
    padding-bottom: 64px !important;
  }

  .v-application .pt-md-0 {
    padding-top: 0px !important;
  }

  .v-application .pt-md-1 {
    padding-top: 4px !important;
  }

  .v-application .pt-md-2 {
    padding-top: 8px !important;
  }

  .v-application .pt-md-3 {
    padding-top: 12px !important;
  }

  .v-application .pt-md-4 {
    padding-top: 16px !important;
  }

  .v-application .pt-md-5 {
    padding-top: 20px !important;
  }

  .v-application .pt-md-6 {
    padding-top: 24px !important;
  }

  .v-application .pt-md-7 {
    padding-top: 28px !important;
  }

  .v-application .pt-md-8 {
    padding-top: 32px !important;
  }

  .v-application .pt-md-9 {
    padding-top: 36px !important;
  }

  .v-application .pt-md-10 {
    padding-top: 40px !important;
  }

  .v-application .pt-md-11 {
    padding-top: 44px !important;
  }

  .v-application .pt-md-12 {
    padding-top: 48px !important;
  }

  .v-application .pt-md-13 {
    padding-top: 52px !important;
  }

  .v-application .pt-md-14 {
    padding-top: 56px !important;
  }

  .v-application .pt-md-15 {
    padding-top: 60px !important;
  }

  .v-application .pt-md-16 {
    padding-top: 64px !important;
  }

  .v-application .pr-md-0 {
    padding-right: 0px !important;
  }

  .v-application .pr-md-1 {
    padding-right: 4px !important;
  }

  .v-application .pr-md-2 {
    padding-right: 8px !important;
  }

  .v-application .pr-md-3 {
    padding-right: 12px !important;
  }

  .v-application .pr-md-4 {
    padding-right: 16px !important;
  }

  .v-application .pr-md-5 {
    padding-right: 20px !important;
  }

  .v-application .pr-md-6 {
    padding-right: 24px !important;
  }

  .v-application .pr-md-7 {
    padding-right: 28px !important;
  }

  .v-application .pr-md-8 {
    padding-right: 32px !important;
  }

  .v-application .pr-md-9 {
    padding-right: 36px !important;
  }

  .v-application .pr-md-10 {
    padding-right: 40px !important;
  }

  .v-application .pr-md-11 {
    padding-right: 44px !important;
  }

  .v-application .pr-md-12 {
    padding-right: 48px !important;
  }

  .v-application .pr-md-13 {
    padding-right: 52px !important;
  }

  .v-application .pr-md-14 {
    padding-right: 56px !important;
  }

  .v-application .pr-md-15 {
    padding-right: 60px !important;
  }

  .v-application .pr-md-16 {
    padding-right: 64px !important;
  }

  .v-application .pb-md-0 {
    padding-bottom: 0px !important;
  }

  .v-application .pb-md-1 {
    padding-bottom: 4px !important;
  }

  .v-application .pb-md-2 {
    padding-bottom: 8px !important;
  }

  .v-application .pb-md-3 {
    padding-bottom: 12px !important;
  }

  .v-application .pb-md-4 {
    padding-bottom: 16px !important;
  }

  .v-application .pb-md-5 {
    padding-bottom: 20px !important;
  }

  .v-application .pb-md-6 {
    padding-bottom: 24px !important;
  }

  .v-application .pb-md-7 {
    padding-bottom: 28px !important;
  }

  .v-application .pb-md-8 {
    padding-bottom: 32px !important;
  }

  .v-application .pb-md-9 {
    padding-bottom: 36px !important;
  }

  .v-application .pb-md-10 {
    padding-bottom: 40px !important;
  }

  .v-application .pb-md-11 {
    padding-bottom: 44px !important;
  }

  .v-application .pb-md-12 {
    padding-bottom: 48px !important;
  }

  .v-application .pb-md-13 {
    padding-bottom: 52px !important;
  }

  .v-application .pb-md-14 {
    padding-bottom: 56px !important;
  }

  .v-application .pb-md-15 {
    padding-bottom: 60px !important;
  }

  .v-application .pb-md-16 {
    padding-bottom: 64px !important;
  }

  .v-application .pl-md-0 {
    padding-left: 0px !important;
  }

  .v-application .pl-md-1 {
    padding-left: 4px !important;
  }

  .v-application .pl-md-2 {
    padding-left: 8px !important;
  }

  .v-application .pl-md-3 {
    padding-left: 12px !important;
  }

  .v-application .pl-md-4 {
    padding-left: 16px !important;
  }

  .v-application .pl-md-5 {
    padding-left: 20px !important;
  }

  .v-application .pl-md-6 {
    padding-left: 24px !important;
  }

  .v-application .pl-md-7 {
    padding-left: 28px !important;
  }

  .v-application .pl-md-8 {
    padding-left: 32px !important;
  }

  .v-application .pl-md-9 {
    padding-left: 36px !important;
  }

  .v-application .pl-md-10 {
    padding-left: 40px !important;
  }

  .v-application .pl-md-11 {
    padding-left: 44px !important;
  }

  .v-application .pl-md-12 {
    padding-left: 48px !important;
  }

  .v-application .pl-md-13 {
    padding-left: 52px !important;
  }

  .v-application .pl-md-14 {
    padding-left: 56px !important;
  }

  .v-application .pl-md-15 {
    padding-left: 60px !important;
  }

  .v-application .pl-md-16 {
    padding-left: 64px !important;
  }

  .v-application--is-ltr .ps-md-0 {
    padding-left: 0px !important;
  }

  .v-application--is-rtl .ps-md-0 {
    padding-right: 0px !important;
  }

  .v-application--is-ltr .ps-md-1 {
    padding-left: 4px !important;
  }

  .v-application--is-rtl .ps-md-1 {
    padding-right: 4px !important;
  }

  .v-application--is-ltr .ps-md-2 {
    padding-left: 8px !important;
  }

  .v-application--is-rtl .ps-md-2 {
    padding-right: 8px !important;
  }

  .v-application--is-ltr .ps-md-3 {
    padding-left: 12px !important;
  }

  .v-application--is-rtl .ps-md-3 {
    padding-right: 12px !important;
  }

  .v-application--is-ltr .ps-md-4 {
    padding-left: 16px !important;
  }

  .v-application--is-rtl .ps-md-4 {
    padding-right: 16px !important;
  }

  .v-application--is-ltr .ps-md-5 {
    padding-left: 20px !important;
  }

  .v-application--is-rtl .ps-md-5 {
    padding-right: 20px !important;
  }

  .v-application--is-ltr .ps-md-6 {
    padding-left: 24px !important;
  }

  .v-application--is-rtl .ps-md-6 {
    padding-right: 24px !important;
  }

  .v-application--is-ltr .ps-md-7 {
    padding-left: 28px !important;
  }

  .v-application--is-rtl .ps-md-7 {
    padding-right: 28px !important;
  }

  .v-application--is-ltr .ps-md-8 {
    padding-left: 32px !important;
  }

  .v-application--is-rtl .ps-md-8 {
    padding-right: 32px !important;
  }

  .v-application--is-ltr .ps-md-9 {
    padding-left: 36px !important;
  }

  .v-application--is-rtl .ps-md-9 {
    padding-right: 36px !important;
  }

  .v-application--is-ltr .ps-md-10 {
    padding-left: 40px !important;
  }

  .v-application--is-rtl .ps-md-10 {
    padding-right: 40px !important;
  }

  .v-application--is-ltr .ps-md-11 {
    padding-left: 44px !important;
  }

  .v-application--is-rtl .ps-md-11 {
    padding-right: 44px !important;
  }

  .v-application--is-ltr .ps-md-12 {
    padding-left: 48px !important;
  }

  .v-application--is-rtl .ps-md-12 {
    padding-right: 48px !important;
  }

  .v-application--is-ltr .ps-md-13 {
    padding-left: 52px !important;
  }

  .v-application--is-rtl .ps-md-13 {
    padding-right: 52px !important;
  }

  .v-application--is-ltr .ps-md-14 {
    padding-left: 56px !important;
  }

  .v-application--is-rtl .ps-md-14 {
    padding-right: 56px !important;
  }

  .v-application--is-ltr .ps-md-15 {
    padding-left: 60px !important;
  }

  .v-application--is-rtl .ps-md-15 {
    padding-right: 60px !important;
  }

  .v-application--is-ltr .ps-md-16 {
    padding-left: 64px !important;
  }

  .v-application--is-rtl .ps-md-16 {
    padding-right: 64px !important;
  }

  .v-application--is-ltr .pe-md-0 {
    padding-right: 0px !important;
  }

  .v-application--is-rtl .pe-md-0 {
    padding-left: 0px !important;
  }

  .v-application--is-ltr .pe-md-1 {
    padding-right: 4px !important;
  }

  .v-application--is-rtl .pe-md-1 {
    padding-left: 4px !important;
  }

  .v-application--is-ltr .pe-md-2 {
    padding-right: 8px !important;
  }

  .v-application--is-rtl .pe-md-2 {
    padding-left: 8px !important;
  }

  .v-application--is-ltr .pe-md-3 {
    padding-right: 12px !important;
  }

  .v-application--is-rtl .pe-md-3 {
    padding-left: 12px !important;
  }

  .v-application--is-ltr .pe-md-4 {
    padding-right: 16px !important;
  }

  .v-application--is-rtl .pe-md-4 {
    padding-left: 16px !important;
  }

  .v-application--is-ltr .pe-md-5 {
    padding-right: 20px !important;
  }

  .v-application--is-rtl .pe-md-5 {
    padding-left: 20px !important;
  }

  .v-application--is-ltr .pe-md-6 {
    padding-right: 24px !important;
  }

  .v-application--is-rtl .pe-md-6 {
    padding-left: 24px !important;
  }

  .v-application--is-ltr .pe-md-7 {
    padding-right: 28px !important;
  }

  .v-application--is-rtl .pe-md-7 {
    padding-left: 28px !important;
  }

  .v-application--is-ltr .pe-md-8 {
    padding-right: 32px !important;
  }

  .v-application--is-rtl .pe-md-8 {
    padding-left: 32px !important;
  }

  .v-application--is-ltr .pe-md-9 {
    padding-right: 36px !important;
  }

  .v-application--is-rtl .pe-md-9 {
    padding-left: 36px !important;
  }

  .v-application--is-ltr .pe-md-10 {
    padding-right: 40px !important;
  }

  .v-application--is-rtl .pe-md-10 {
    padding-left: 40px !important;
  }

  .v-application--is-ltr .pe-md-11 {
    padding-right: 44px !important;
  }

  .v-application--is-rtl .pe-md-11 {
    padding-left: 44px !important;
  }

  .v-application--is-ltr .pe-md-12 {
    padding-right: 48px !important;
  }

  .v-application--is-rtl .pe-md-12 {
    padding-left: 48px !important;
  }

  .v-application--is-ltr .pe-md-13 {
    padding-right: 52px !important;
  }

  .v-application--is-rtl .pe-md-13 {
    padding-left: 52px !important;
  }

  .v-application--is-ltr .pe-md-14 {
    padding-right: 56px !important;
  }

  .v-application--is-rtl .pe-md-14 {
    padding-left: 56px !important;
  }

  .v-application--is-ltr .pe-md-15 {
    padding-right: 60px !important;
  }

  .v-application--is-rtl .pe-md-15 {
    padding-left: 60px !important;
  }

  .v-application--is-ltr .pe-md-16 {
    padding-right: 64px !important;
  }

  .v-application--is-rtl .pe-md-16 {
    padding-left: 64px !important;
  }

  .v-application .text-md-left {
    text-align: left !important;
  }

  .v-application .text-md-right {
    text-align: right !important;
  }

  .v-application .text-md-center {
    text-align: center !important;
  }

  .v-application .text-md-justify {
    text-align: justify !important;
  }

  .v-application .text-md-start {
    text-align: start !important;
  }

  .v-application .text-md-end {
    text-align: end !important;
  }

  .v-application .text-md-h1 {
    font-size: 6rem !important;
    font-weight: 300;
    line-height: 6rem;
    letter-spacing: -0.015625em !important;
    font-family: "Roboto", sans-serif !important;
  }

  .v-application .text-md-h2 {
    font-size: 3.75rem !important;
    font-weight: 300;
    line-height: 3.75rem;
    letter-spacing: -0.0083333333em !important;
    font-family: "Roboto", sans-serif !important;
  }

  .v-application .text-md-h3 {
    font-size: 3rem !important;
    font-weight: 400;
    line-height: 3.125rem;
    letter-spacing: normal !important;
    font-family: "Roboto", sans-serif !important;
  }

  .v-application .text-md-h4 {
    font-size: 2.125rem !important;
    font-weight: 400;
    line-height: 2.5rem;
    letter-spacing: 0.0073529412em !important;
    font-family: "Roboto", sans-serif !important;
  }

  .v-application .text-md-h5 {
    font-size: 1.5rem !important;
    font-weight: 400;
    line-height: 2rem;
    letter-spacing: normal !important;
    font-family: "Roboto", sans-serif !important;
  }

  .v-application .text-md-h6 {
    font-size: 1.25rem !important;
    font-weight: 500;
    line-height: 2rem;
    letter-spacing: 0.0125em !important;
    font-family: "Roboto", sans-serif !important;
  }

  .v-application .text-md-subtitle-1 {
    font-size: 1rem !important;
    font-weight: normal;
    line-height: 1.75rem;
    letter-spacing: 0.009375em !important;
    font-family: "Roboto", sans-serif !important;
  }

  .v-application .text-md-subtitle-2 {
    font-size: 0.875rem !important;
    font-weight: 500;
    line-height: 1.375rem;
    letter-spacing: 0.0071428571em !important;
    font-family: "Roboto", sans-serif !important;
  }

  .v-application .text-md-body-1 {
    font-size: 1rem !important;
    font-weight: 400;
    line-height: 1.5rem;
    letter-spacing: 0.03125em !important;
    font-family: "Roboto", sans-serif !important;
  }

  .v-application .text-md-body-2 {
    font-size: 0.875rem !important;
    font-weight: 400;
    line-height: 1.25rem;
    letter-spacing: 0.0178571429em !important;
    font-family: "Roboto", sans-serif !important;
  }

  .v-application .text-md-button {
    font-size: 0.875rem !important;
    font-weight: 500;
    line-height: 2.25rem;
    letter-spacing: 0.0892857143em !important;
    font-family: "Roboto", sans-serif !important;
    text-transform: uppercase !important;
  }

  .v-application .text-md-caption {
    font-size: 0.75rem !important;
    font-weight: 400;
    line-height: 1.25rem;
    letter-spacing: 0.0333333333em !important;
    font-family: "Roboto", sans-serif !important;
  }

  .v-application .text-md-overline {
    font-size: 0.75rem !important;
    font-weight: 500;
    line-height: 2rem;
    letter-spacing: 0.1666666667em !important;
    font-family: "Roboto", sans-serif !important;
    text-transform: uppercase !important;
  }
}
@media (min-width: 1264px) {
  .v-application .d-lg-none {
    display: none !important;
  }

  .v-application .d-lg-inline {
    display: inline !important;
  }

  .v-application .d-lg-inline-block {
    display: inline-block !important;
  }

  .v-application .d-lg-block {
    display: block !important;
  }

  .v-application .d-lg-table {
    display: table !important;
  }

  .v-application .d-lg-table-row {
    display: table-row !important;
  }

  .v-application .d-lg-table-cell {
    display: table-cell !important;
  }

  .v-application .d-lg-flex {
    display: flex !important;
  }

  .v-application .d-lg-inline-flex {
    display: inline-flex !important;
  }

  .v-application .float-lg-none {
    float: none !important;
  }

  .v-application .float-lg-left {
    float: left !important;
  }

  .v-application .float-lg-right {
    float: right !important;
  }

  .v-application--is-rtl .float-lg-end {
    float: left !important;
  }

  .v-application--is-rtl .float-lg-start {
    float: right !important;
  }

  .v-application--is-ltr .float-lg-end {
    float: right !important;
  }

  .v-application--is-ltr .float-lg-start {
    float: left !important;
  }

  .v-application .flex-lg-fill {
    flex: 1 1 auto !important;
  }

  .v-application .flex-lg-row {
    flex-direction: row !important;
  }

  .v-application .flex-lg-column {
    flex-direction: column !important;
  }

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

  .v-application .flex-lg-column-reverse {
    flex-direction: column-reverse !important;
  }

  .v-application .flex-lg-grow-0 {
    flex-grow: 0 !important;
  }

  .v-application .flex-lg-grow-1 {
    flex-grow: 1 !important;
  }

  .v-application .flex-lg-shrink-0 {
    flex-shrink: 0 !important;
  }

  .v-application .flex-lg-shrink-1 {
    flex-shrink: 1 !important;
  }

  .v-application .flex-lg-wrap {
    flex-wrap: wrap !important;
  }

  .v-application .flex-lg-nowrap {
    flex-wrap: nowrap !important;
  }

  .v-application .flex-lg-wrap-reverse {
    flex-wrap: wrap-reverse !important;
  }

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

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

  .v-application .justify-lg-center {
    justify-content: center !important;
  }

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

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

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

  .v-application .align-lg-end {
    align-items: flex-end !important;
  }

  .v-application .align-lg-center {
    align-items: center !important;
  }

  .v-application .align-lg-baseline {
    align-items: baseline !important;
  }

  .v-application .align-lg-stretch {
    align-items: stretch !important;
  }

  .v-application .align-content-lg-start {
    align-content: flex-start !important;
  }

  .v-application .align-content-lg-end {
    align-content: flex-end !important;
  }

  .v-application .align-content-lg-center {
    align-content: center !important;
  }

  .v-application .align-content-lg-space-between {
    align-content: space-between !important;
  }

  .v-application .align-content-lg-space-around {
    align-content: space-around !important;
  }

  .v-application .align-content-lg-stretch {
    align-content: stretch !important;
  }

  .v-application .align-self-lg-auto {
    align-self: auto !important;
  }

  .v-application .align-self-lg-start {
    align-self: flex-start !important;
  }

  .v-application .align-self-lg-end {
    align-self: flex-end !important;
  }

  .v-application .align-self-lg-center {
    align-self: center !important;
  }

  .v-application .align-self-lg-baseline {
    align-self: baseline !important;
  }

  .v-application .align-self-lg-stretch {
    align-self: stretch !important;
  }

  .v-application .order-lg-first {
    order: -1 !important;
  }

  .v-application .order-lg-0 {
    order: 0 !important;
  }

  .v-application .order-lg-1 {
    order: 1 !important;
  }

  .v-application .order-lg-2 {
    order: 2 !important;
  }

  .v-application .order-lg-3 {
    order: 3 !important;
  }

  .v-application .order-lg-4 {
    order: 4 !important;
  }

  .v-application .order-lg-5 {
    order: 5 !important;
  }

  .v-application .order-lg-6 {
    order: 6 !important;
  }

  .v-application .order-lg-7 {
    order: 7 !important;
  }

  .v-application .order-lg-8 {
    order: 8 !important;
  }

  .v-application .order-lg-9 {
    order: 9 !important;
  }

  .v-application .order-lg-10 {
    order: 10 !important;
  }

  .v-application .order-lg-11 {
    order: 11 !important;
  }

  .v-application .order-lg-12 {
    order: 12 !important;
  }

  .v-application .order-lg-last {
    order: 13 !important;
  }

  .v-application .ma-lg-0 {
    margin: 0px !important;
  }

  .v-application .ma-lg-1 {
    margin: 4px !important;
  }

  .v-application .ma-lg-2 {
    margin: 8px !important;
  }

  .v-application .ma-lg-3 {
    margin: 12px !important;
  }

  .v-application .ma-lg-4 {
    margin: 16px !important;
  }

  .v-application .ma-lg-5 {
    margin: 20px !important;
  }

  .v-application .ma-lg-6 {
    margin: 24px !important;
  }

  .v-application .ma-lg-7 {
    margin: 28px !important;
  }

  .v-application .ma-lg-8 {
    margin: 32px !important;
  }

  .v-application .ma-lg-9 {
    margin: 36px !important;
  }

  .v-application .ma-lg-10 {
    margin: 40px !important;
  }

  .v-application .ma-lg-11 {
    margin: 44px !important;
  }

  .v-application .ma-lg-12 {
    margin: 48px !important;
  }

  .v-application .ma-lg-13 {
    margin: 52px !important;
  }

  .v-application .ma-lg-14 {
    margin: 56px !important;
  }

  .v-application .ma-lg-15 {
    margin: 60px !important;
  }

  .v-application .ma-lg-16 {
    margin: 64px !important;
  }

  .v-application .ma-lg-auto {
    margin: auto !important;
  }

  .v-application .mx-lg-0 {
    margin-right: 0px !important;
    margin-left: 0px !important;
  }

  .v-application .mx-lg-1 {
    margin-right: 4px !important;
    margin-left: 4px !important;
  }

  .v-application .mx-lg-2 {
    margin-right: 8px !important;
    margin-left: 8px !important;
  }

  .v-application .mx-lg-3 {
    margin-right: 12px !important;
    margin-left: 12px !important;
  }

  .v-application .mx-lg-4 {
    margin-right: 16px !important;
    margin-left: 16px !important;
  }

  .v-application .mx-lg-5 {
    margin-right: 20px !important;
    margin-left: 20px !important;
  }

  .v-application .mx-lg-6 {
    margin-right: 24px !important;
    margin-left: 24px !important;
  }

  .v-application .mx-lg-7 {
    margin-right: 28px !important;
    margin-left: 28px !important;
  }

  .v-application .mx-lg-8 {
    margin-right: 32px !important;
    margin-left: 32px !important;
  }

  .v-application .mx-lg-9 {
    margin-right: 36px !important;
    margin-left: 36px !important;
  }

  .v-application .mx-lg-10 {
    margin-right: 40px !important;
    margin-left: 40px !important;
  }

  .v-application .mx-lg-11 {
    margin-right: 44px !important;
    margin-left: 44px !important;
  }

  .v-application .mx-lg-12 {
    margin-right: 48px !important;
    margin-left: 48px !important;
  }

  .v-application .mx-lg-13 {
    margin-right: 52px !important;
    margin-left: 52px !important;
  }

  .v-application .mx-lg-14 {
    margin-right: 56px !important;
    margin-left: 56px !important;
  }

  .v-application .mx-lg-15 {
    margin-right: 60px !important;
    margin-left: 60px !important;
  }

  .v-application .mx-lg-16 {
    margin-right: 64px !important;
    margin-left: 64px !important;
  }

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

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

  .v-application .my-lg-1 {
    margin-top: 4px !important;
    margin-bottom: 4px !important;
  }

  .v-application .my-lg-2 {
    margin-top: 8px !important;
    margin-bottom: 8px !important;
  }

  .v-application .my-lg-3 {
    margin-top: 12px !important;
    margin-bottom: 12px !important;
  }

  .v-application .my-lg-4 {
    margin-top: 16px !important;
    margin-bottom: 16px !important;
  }

  .v-application .my-lg-5 {
    margin-top: 20px !important;
    margin-bottom: 20px !important;
  }

  .v-application .my-lg-6 {
    margin-top: 24px !important;
    margin-bottom: 24px !important;
  }

  .v-application .my-lg-7 {
    margin-top: 28px !important;
    margin-bottom: 28px !important;
  }

  .v-application .my-lg-8 {
    margin-top: 32px !important;
    margin-bottom: 32px !important;
  }

  .v-application .my-lg-9 {
    margin-top: 36px !important;
    margin-bottom: 36px !important;
  }

  .v-application .my-lg-10 {
    margin-top: 40px !important;
    margin-bottom: 40px !important;
  }

  .v-application .my-lg-11 {
    margin-top: 44px !important;
    margin-bottom: 44px !important;
  }

  .v-application .my-lg-12 {
    margin-top: 48px !important;
    margin-bottom: 48px !important;
  }

  .v-application .my-lg-13 {
    margin-top: 52px !important;
    margin-bottom: 52px !important;
  }

  .v-application .my-lg-14 {
    margin-top: 56px !important;
    margin-bottom: 56px !important;
  }

  .v-application .my-lg-15 {
    margin-top: 60px !important;
    margin-bottom: 60px !important;
  }

  .v-application .my-lg-16 {
    margin-top: 64px !important;
    margin-bottom: 64px !important;
  }

  .v-application .my-lg-auto {
    margin-top: auto !important;
    margin-bottom: auto !important;
  }

  .v-application .mt-lg-0 {
    margin-top: 0px !important;
  }

  .v-application .mt-lg-1 {
    margin-top: 4px !important;
  }

  .v-application .mt-lg-2 {
    margin-top: 8px !important;
  }

  .v-application .mt-lg-3 {
    margin-top: 12px !important;
  }

  .v-application .mt-lg-4 {
    margin-top: 16px !important;
  }

  .v-application .mt-lg-5 {
    margin-top: 20px !important;
  }

  .v-application .mt-lg-6 {
    margin-top: 24px !important;
  }

  .v-application .mt-lg-7 {
    margin-top: 28px !important;
  }

  .v-application .mt-lg-8 {
    margin-top: 32px !important;
  }

  .v-application .mt-lg-9 {
    margin-top: 36px !important;
  }

  .v-application .mt-lg-10 {
    margin-top: 40px !important;
  }

  .v-application .mt-lg-11 {
    margin-top: 44px !important;
  }

  .v-application .mt-lg-12 {
    margin-top: 48px !important;
  }

  .v-application .mt-lg-13 {
    margin-top: 52px !important;
  }

  .v-application .mt-lg-14 {
    margin-top: 56px !important;
  }

  .v-application .mt-lg-15 {
    margin-top: 60px !important;
  }

  .v-application .mt-lg-16 {
    margin-top: 64px !important;
  }

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

  .v-application .mr-lg-0 {
    margin-right: 0px !important;
  }

  .v-application .mr-lg-1 {
    margin-right: 4px !important;
  }

  .v-application .mr-lg-2 {
    margin-right: 8px !important;
  }

  .v-application .mr-lg-3 {
    margin-right: 12px !important;
  }

  .v-application .mr-lg-4 {
    margin-right: 16px !important;
  }

  .v-application .mr-lg-5 {
    margin-right: 20px !important;
  }

  .v-application .mr-lg-6 {
    margin-right: 24px !important;
  }

  .v-application .mr-lg-7 {
    margin-right: 28px !important;
  }

  .v-application .mr-lg-8 {
    margin-right: 32px !important;
  }

  .v-application .mr-lg-9 {
    margin-right: 36px !important;
  }

  .v-application .mr-lg-10 {
    margin-right: 40px !important;
  }

  .v-application .mr-lg-11 {
    margin-right: 44px !important;
  }

  .v-application .mr-lg-12 {
    margin-right: 48px !important;
  }

  .v-application .mr-lg-13 {
    margin-right: 52px !important;
  }

  .v-application .mr-lg-14 {
    margin-right: 56px !important;
  }

  .v-application .mr-lg-15 {
    margin-right: 60px !important;
  }

  .v-application .mr-lg-16 {
    margin-right: 64px !important;
  }

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

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

  .v-application .mb-lg-1 {
    margin-bottom: 4px !important;
  }

  .v-application .mb-lg-2 {
    margin-bottom: 8px !important;
  }

  .v-application .mb-lg-3 {
    margin-bottom: 12px !important;
  }

  .v-application .mb-lg-4 {
    margin-bottom: 16px !important;
  }

  .v-application .mb-lg-5 {
    margin-bottom: 20px !important;
  }

  .v-application .mb-lg-6 {
    margin-bottom: 24px !important;
  }

  .v-application .mb-lg-7 {
    margin-bottom: 28px !important;
  }

  .v-application .mb-lg-8 {
    margin-bottom: 32px !important;
  }

  .v-application .mb-lg-9 {
    margin-bottom: 36px !important;
  }

  .v-application .mb-lg-10 {
    margin-bottom: 40px !important;
  }

  .v-application .mb-lg-11 {
    margin-bottom: 44px !important;
  }

  .v-application .mb-lg-12 {
    margin-bottom: 48px !important;
  }

  .v-application .mb-lg-13 {
    margin-bottom: 52px !important;
  }

  .v-application .mb-lg-14 {
    margin-bottom: 56px !important;
  }

  .v-application .mb-lg-15 {
    margin-bottom: 60px !important;
  }

  .v-application .mb-lg-16 {
    margin-bottom: 64px !important;
  }

  .v-application .mb-lg-auto {
    margin-bottom: auto !important;
  }

  .v-application .ml-lg-0 {
    margin-left: 0px !important;
  }

  .v-application .ml-lg-1 {
    margin-left: 4px !important;
  }

  .v-application .ml-lg-2 {
    margin-left: 8px !important;
  }

  .v-application .ml-lg-3 {
    margin-left: 12px !important;
  }

  .v-application .ml-lg-4 {
    margin-left: 16px !important;
  }

  .v-application .ml-lg-5 {
    margin-left: 20px !important;
  }

  .v-application .ml-lg-6 {
    margin-left: 24px !important;
  }

  .v-application .ml-lg-7 {
    margin-left: 28px !important;
  }

  .v-application .ml-lg-8 {
    margin-left: 32px !important;
  }

  .v-application .ml-lg-9 {
    margin-left: 36px !important;
  }

  .v-application .ml-lg-10 {
    margin-left: 40px !important;
  }

  .v-application .ml-lg-11 {
    margin-left: 44px !important;
  }

  .v-application .ml-lg-12 {
    margin-left: 48px !important;
  }

  .v-application .ml-lg-13 {
    margin-left: 52px !important;
  }

  .v-application .ml-lg-14 {
    margin-left: 56px !important;
  }

  .v-application .ml-lg-15 {
    margin-left: 60px !important;
  }

  .v-application .ml-lg-16 {
    margin-left: 64px !important;
  }

  .v-application .ml-lg-auto {
    margin-left: auto !important;
  }

  .v-application--is-ltr .ms-lg-0 {
    margin-left: 0px !important;
  }

  .v-application--is-rtl .ms-lg-0 {
    margin-right: 0px !important;
  }

  .v-application--is-ltr .ms-lg-1 {
    margin-left: 4px !important;
  }

  .v-application--is-rtl .ms-lg-1 {
    margin-right: 4px !important;
  }

  .v-application--is-ltr .ms-lg-2 {
    margin-left: 8px !important;
  }

  .v-application--is-rtl .ms-lg-2 {
    margin-right: 8px !important;
  }

  .v-application--is-ltr .ms-lg-3 {
    margin-left: 12px !important;
  }

  .v-application--is-rtl .ms-lg-3 {
    margin-right: 12px !important;
  }

  .v-application--is-ltr .ms-lg-4 {
    margin-left: 16px !important;
  }

  .v-application--is-rtl .ms-lg-4 {
    margin-right: 16px !important;
  }

  .v-application--is-ltr .ms-lg-5 {
    margin-left: 20px !important;
  }

  .v-application--is-rtl .ms-lg-5 {
    margin-right: 20px !important;
  }

  .v-application--is-ltr .ms-lg-6 {
    margin-left: 24px !important;
  }

  .v-application--is-rtl .ms-lg-6 {
    margin-right: 24px !important;
  }

  .v-application--is-ltr .ms-lg-7 {
    margin-left: 28px !important;
  }

  .v-application--is-rtl .ms-lg-7 {
    margin-right: 28px !important;
  }

  .v-application--is-ltr .ms-lg-8 {
    margin-left: 32px !important;
  }

  .v-application--is-rtl .ms-lg-8 {
    margin-right: 32px !important;
  }

  .v-application--is-ltr .ms-lg-9 {
    margin-left: 36px !important;
  }

  .v-application--is-rtl .ms-lg-9 {
    margin-right: 36px !important;
  }

  .v-application--is-ltr .ms-lg-10 {
    margin-left: 40px !important;
  }

  .v-application--is-rtl .ms-lg-10 {
    margin-right: 40px !important;
  }

  .v-application--is-ltr .ms-lg-11 {
    margin-left: 44px !important;
  }

  .v-application--is-rtl .ms-lg-11 {
    margin-right: 44px !important;
  }

  .v-application--is-ltr .ms-lg-12 {
    margin-left: 48px !important;
  }

  .v-application--is-rtl .ms-lg-12 {
    margin-right: 48px !important;
  }

  .v-application--is-ltr .ms-lg-13 {
    margin-left: 52px !important;
  }

  .v-application--is-rtl .ms-lg-13 {
    margin-right: 52px !important;
  }

  .v-application--is-ltr .ms-lg-14 {
    margin-left: 56px !important;
  }

  .v-application--is-rtl .ms-lg-14 {
    margin-right: 56px !important;
  }

  .v-application--is-ltr .ms-lg-15 {
    margin-left: 60px !important;
  }

  .v-application--is-rtl .ms-lg-15 {
    margin-right: 60px !important;
  }

  .v-application--is-ltr .ms-lg-16 {
    margin-left: 64px !important;
  }

  .v-application--is-rtl .ms-lg-16 {
    margin-right: 64px !important;
  }

  .v-application--is-ltr .ms-lg-auto {
    margin-left: auto !important;
  }

  .v-application--is-rtl .ms-lg-auto {
    margin-right: auto !important;
  }

  .v-application--is-ltr .me-lg-0 {
    margin-right: 0px !important;
  }

  .v-application--is-rtl .me-lg-0 {
    margin-left: 0px !important;
  }

  .v-application--is-ltr .me-lg-1 {
    margin-right: 4px !important;
  }

  .v-application--is-rtl .me-lg-1 {
    margin-left: 4px !important;
  }

  .v-application--is-ltr .me-lg-2 {
    margin-right: 8px !important;
  }

  .v-application--is-rtl .me-lg-2 {
    margin-left: 8px !important;
  }

  .v-application--is-ltr .me-lg-3 {
    margin-right: 12px !important;
  }

  .v-application--is-rtl .me-lg-3 {
    margin-left: 12px !important;
  }

  .v-application--is-ltr .me-lg-4 {
    margin-right: 16px !important;
  }

  .v-application--is-rtl .me-lg-4 {
    margin-left: 16px !important;
  }

  .v-application--is-ltr .me-lg-5 {
    margin-right: 20px !important;
  }

  .v-application--is-rtl .me-lg-5 {
    margin-left: 20px !important;
  }

  .v-application--is-ltr .me-lg-6 {
    margin-right: 24px !important;
  }

  .v-application--is-rtl .me-lg-6 {
    margin-left: 24px !important;
  }

  .v-application--is-ltr .me-lg-7 {
    margin-right: 28px !important;
  }

  .v-application--is-rtl .me-lg-7 {
    margin-left: 28px !important;
  }

  .v-application--is-ltr .me-lg-8 {
    margin-right: 32px !important;
  }

  .v-application--is-rtl .me-lg-8 {
    margin-left: 32px !important;
  }

  .v-application--is-ltr .me-lg-9 {
    margin-right: 36px !important;
  }

  .v-application--is-rtl .me-lg-9 {
    margin-left: 36px !important;
  }

  .v-application--is-ltr .me-lg-10 {
    margin-right: 40px !important;
  }

  .v-application--is-rtl .me-lg-10 {
    margin-left: 40px !important;
  }

  .v-application--is-ltr .me-lg-11 {
    margin-right: 44px !important;
  }

  .v-application--is-rtl .me-lg-11 {
    margin-left: 44px !important;
  }

  .v-application--is-ltr .me-lg-12 {
    margin-right: 48px !important;
  }

  .v-application--is-rtl .me-lg-12 {
    margin-left: 48px !important;
  }

  .v-application--is-ltr .me-lg-13 {
    margin-right: 52px !important;
  }

  .v-application--is-rtl .me-lg-13 {
    margin-left: 52px !important;
  }

  .v-application--is-ltr .me-lg-14 {
    margin-right: 56px !important;
  }

  .v-application--is-rtl .me-lg-14 {
    margin-left: 56px !important;
  }

  .v-application--is-ltr .me-lg-15 {
    margin-right: 60px !important;
  }

  .v-application--is-rtl .me-lg-15 {
    margin-left: 60px !important;
  }

  .v-application--is-ltr .me-lg-16 {
    margin-right: 64px !important;
  }

  .v-application--is-rtl .me-lg-16 {
    margin-left: 64px !important;
  }

  .v-application--is-ltr .me-lg-auto {
    margin-right: auto !important;
  }

  .v-application--is-rtl .me-lg-auto {
    margin-left: auto !important;
  }

  .v-application .ma-lg-n1 {
    margin: -4px !important;
  }

  .v-application .ma-lg-n2 {
    margin: -8px !important;
  }

  .v-application .ma-lg-n3 {
    margin: -12px !important;
  }

  .v-application .ma-lg-n4 {
    margin: -16px !important;
  }

  .v-application .ma-lg-n5 {
    margin: -20px !important;
  }

  .v-application .ma-lg-n6 {
    margin: -24px !important;
  }

  .v-application .ma-lg-n7 {
    margin: -28px !important;
  }

  .v-application .ma-lg-n8 {
    margin: -32px !important;
  }

  .v-application .ma-lg-n9 {
    margin: -36px !important;
  }

  .v-application .ma-lg-n10 {
    margin: -40px !important;
  }

  .v-application .ma-lg-n11 {
    margin: -44px !important;
  }

  .v-application .ma-lg-n12 {
    margin: -48px !important;
  }

  .v-application .ma-lg-n13 {
    margin: -52px !important;
  }

  .v-application .ma-lg-n14 {
    margin: -56px !important;
  }

  .v-application .ma-lg-n15 {
    margin: -60px !important;
  }

  .v-application .ma-lg-n16 {
    margin: -64px !important;
  }

  .v-application .mx-lg-n1 {
    margin-right: -4px !important;
    margin-left: -4px !important;
  }

  .v-application .mx-lg-n2 {
    margin-right: -8px !important;
    margin-left: -8px !important;
  }

  .v-application .mx-lg-n3 {
    margin-right: -12px !important;
    margin-left: -12px !important;
  }

  .v-application .mx-lg-n4 {
    margin-right: -16px !important;
    margin-left: -16px !important;
  }

  .v-application .mx-lg-n5 {
    margin-right: -20px !important;
    margin-left: -20px !important;
  }

  .v-application .mx-lg-n6 {
    margin-right: -24px !important;
    margin-left: -24px !important;
  }

  .v-application .mx-lg-n7 {
    margin-right: -28px !important;
    margin-left: -28px !important;
  }

  .v-application .mx-lg-n8 {
    margin-right: -32px !important;
    margin-left: -32px !important;
  }

  .v-application .mx-lg-n9 {
    margin-right: -36px !important;
    margin-left: -36px !important;
  }

  .v-application .mx-lg-n10 {
    margin-right: -40px !important;
    margin-left: -40px !important;
  }

  .v-application .mx-lg-n11 {
    margin-right: -44px !important;
    margin-left: -44px !important;
  }

  .v-application .mx-lg-n12 {
    margin-right: -48px !important;
    margin-left: -48px !important;
  }

  .v-application .mx-lg-n13 {
    margin-right: -52px !important;
    margin-left: -52px !important;
  }

  .v-application .mx-lg-n14 {
    margin-right: -56px !important;
    margin-left: -56px !important;
  }

  .v-application .mx-lg-n15 {
    margin-right: -60px !important;
    margin-left: -60px !important;
  }

  .v-application .mx-lg-n16 {
    margin-right: -64px !important;
    margin-left: -64px !important;
  }

  .v-application .my-lg-n1 {
    margin-top: -4px !important;
    margin-bottom: -4px !important;
  }

  .v-application .my-lg-n2 {
    margin-top: -8px !important;
    margin-bottom: -8px !important;
  }

  .v-application .my-lg-n3 {
    margin-top: -12px !important;
    margin-bottom: -12px !important;
  }

  .v-application .my-lg-n4 {
    margin-top: -16px !important;
    margin-bottom: -16px !important;
  }

  .v-application .my-lg-n5 {
    margin-top: -20px !important;
    margin-bottom: -20px !important;
  }

  .v-application .my-lg-n6 {
    margin-top: -24px !important;
    margin-bottom: -24px !important;
  }

  .v-application .my-lg-n7 {
    margin-top: -28px !important;
    margin-bottom: -28px !important;
  }

  .v-application .my-lg-n8 {
    margin-top: -32px !important;
    margin-bottom: -32px !important;
  }

  .v-application .my-lg-n9 {
    margin-top: -36px !important;
    margin-bottom: -36px !important;
  }

  .v-application .my-lg-n10 {
    margin-top: -40px !important;
    margin-bottom: -40px !important;
  }

  .v-application .my-lg-n11 {
    margin-top: -44px !important;
    margin-bottom: -44px !important;
  }

  .v-application .my-lg-n12 {
    margin-top: -48px !important;
    margin-bottom: -48px !important;
  }

  .v-application .my-lg-n13 {
    margin-top: -52px !important;
    margin-bottom: -52px !important;
  }

  .v-application .my-lg-n14 {
    margin-top: -56px !important;
    margin-bottom: -56px !important;
  }

  .v-application .my-lg-n15 {
    margin-top: -60px !important;
    margin-bottom: -60px !important;
  }

  .v-application .my-lg-n16 {
    margin-top: -64px !important;
    margin-bottom: -64px !important;
  }

  .v-application .mt-lg-n1 {
    margin-top: -4px !important;
  }

  .v-application .mt-lg-n2 {
    margin-top: -8px !important;
  }

  .v-application .mt-lg-n3 {
    margin-top: -12px !important;
  }

  .v-application .mt-lg-n4 {
    margin-top: -16px !important;
  }

  .v-application .mt-lg-n5 {
    margin-top: -20px !important;
  }

  .v-application .mt-lg-n6 {
    margin-top: -24px !important;
  }

  .v-application .mt-lg-n7 {
    margin-top: -28px !important;
  }

  .v-application .mt-lg-n8 {
    margin-top: -32px !important;
  }

  .v-application .mt-lg-n9 {
    margin-top: -36px !important;
  }

  .v-application .mt-lg-n10 {
    margin-top: -40px !important;
  }

  .v-application .mt-lg-n11 {
    margin-top: -44px !important;
  }

  .v-application .mt-lg-n12 {
    margin-top: -48px !important;
  }

  .v-application .mt-lg-n13 {
    margin-top: -52px !important;
  }

  .v-application .mt-lg-n14 {
    margin-top: -56px !important;
  }

  .v-application .mt-lg-n15 {
    margin-top: -60px !important;
  }

  .v-application .mt-lg-n16 {
    margin-top: -64px !important;
  }

  .v-application .mr-lg-n1 {
    margin-right: -4px !important;
  }

  .v-application .mr-lg-n2 {
    margin-right: -8px !important;
  }

  .v-application .mr-lg-n3 {
    margin-right: -12px !important;
  }

  .v-application .mr-lg-n4 {
    margin-right: -16px !important;
  }

  .v-application .mr-lg-n5 {
    margin-right: -20px !important;
  }

  .v-application .mr-lg-n6 {
    margin-right: -24px !important;
  }

  .v-application .mr-lg-n7 {
    margin-right: -28px !important;
  }

  .v-application .mr-lg-n8 {
    margin-right: -32px !important;
  }

  .v-application .mr-lg-n9 {
    margin-right: -36px !important;
  }

  .v-application .mr-lg-n10 {
    margin-right: -40px !important;
  }

  .v-application .mr-lg-n11 {
    margin-right: -44px !important;
  }

  .v-application .mr-lg-n12 {
    margin-right: -48px !important;
  }

  .v-application .mr-lg-n13 {
    margin-right: -52px !important;
  }

  .v-application .mr-lg-n14 {
    margin-right: -56px !important;
  }

  .v-application .mr-lg-n15 {
    margin-right: -60px !important;
  }

  .v-application .mr-lg-n16 {
    margin-right: -64px !important;
  }

  .v-application .mb-lg-n1 {
    margin-bottom: -4px !important;
  }

  .v-application .mb-lg-n2 {
    margin-bottom: -8px !important;
  }

  .v-application .mb-lg-n3 {
    margin-bottom: -12px !important;
  }

  .v-application .mb-lg-n4 {
    margin-bottom: -16px !important;
  }

  .v-application .mb-lg-n5 {
    margin-bottom: -20px !important;
  }

  .v-application .mb-lg-n6 {
    margin-bottom: -24px !important;
  }

  .v-application .mb-lg-n7 {
    margin-bottom: -28px !important;
  }

  .v-application .mb-lg-n8 {
    margin-bottom: -32px !important;
  }

  .v-application .mb-lg-n9 {
    margin-bottom: -36px !important;
  }

  .v-application .mb-lg-n10 {
    margin-bottom: -40px !important;
  }

  .v-application .mb-lg-n11 {
    margin-bottom: -44px !important;
  }

  .v-application .mb-lg-n12 {
    margin-bottom: -48px !important;
  }

  .v-application .mb-lg-n13 {
    margin-bottom: -52px !important;
  }

  .v-application .mb-lg-n14 {
    margin-bottom: -56px !important;
  }

  .v-application .mb-lg-n15 {
    margin-bottom: -60px !important;
  }

  .v-application .mb-lg-n16 {
    margin-bottom: -64px !important;
  }

  .v-application .ml-lg-n1 {
    margin-left: -4px !important;
  }

  .v-application .ml-lg-n2 {
    margin-left: -8px !important;
  }

  .v-application .ml-lg-n3 {
    margin-left: -12px !important;
  }

  .v-application .ml-lg-n4 {
    margin-left: -16px !important;
  }

  .v-application .ml-lg-n5 {
    margin-left: -20px !important;
  }

  .v-application .ml-lg-n6 {
    margin-left: -24px !important;
  }

  .v-application .ml-lg-n7 {
    margin-left: -28px !important;
  }

  .v-application .ml-lg-n8 {
    margin-left: -32px !important;
  }

  .v-application .ml-lg-n9 {
    margin-left: -36px !important;
  }

  .v-application .ml-lg-n10 {
    margin-left: -40px !important;
  }

  .v-application .ml-lg-n11 {
    margin-left: -44px !important;
  }

  .v-application .ml-lg-n12 {
    margin-left: -48px !important;
  }

  .v-application .ml-lg-n13 {
    margin-left: -52px !important;
  }

  .v-application .ml-lg-n14 {
    margin-left: -56px !important;
  }

  .v-application .ml-lg-n15 {
    margin-left: -60px !important;
  }

  .v-application .ml-lg-n16 {
    margin-left: -64px !important;
  }

  .v-application--is-ltr .ms-lg-n1 {
    margin-left: -4px !important;
  }

  .v-application--is-rtl .ms-lg-n1 {
    margin-right: -4px !important;
  }

  .v-application--is-ltr .ms-lg-n2 {
    margin-left: -8px !important;
  }

  .v-application--is-rtl .ms-lg-n2 {
    margin-right: -8px !important;
  }

  .v-application--is-ltr .ms-lg-n3 {
    margin-left: -12px !important;
  }

  .v-application--is-rtl .ms-lg-n3 {
    margin-right: -12px !important;
  }

  .v-application--is-ltr .ms-lg-n4 {
    margin-left: -16px !important;
  }

  .v-application--is-rtl .ms-lg-n4 {
    margin-right: -16px !important;
  }

  .v-application--is-ltr .ms-lg-n5 {
    margin-left: -20px !important;
  }

  .v-application--is-rtl .ms-lg-n5 {
    margin-right: -20px !important;
  }

  .v-application--is-ltr .ms-lg-n6 {
    margin-left: -24px !important;
  }

  .v-application--is-rtl .ms-lg-n6 {
    margin-right: -24px !important;
  }

  .v-application--is-ltr .ms-lg-n7 {
    margin-left: -28px !important;
  }

  .v-application--is-rtl .ms-lg-n7 {
    margin-right: -28px !important;
  }

  .v-application--is-ltr .ms-lg-n8 {
    margin-left: -32px !important;
  }

  .v-application--is-rtl .ms-lg-n8 {
    margin-right: -32px !important;
  }

  .v-application--is-ltr .ms-lg-n9 {
    margin-left: -36px !important;
  }

  .v-application--is-rtl .ms-lg-n9 {
    margin-right: -36px !important;
  }

  .v-application--is-ltr .ms-lg-n10 {
    margin-left: -40px !important;
  }

  .v-application--is-rtl .ms-lg-n10 {
    margin-right: -40px !important;
  }

  .v-application--is-ltr .ms-lg-n11 {
    margin-left: -44px !important;
  }

  .v-application--is-rtl .ms-lg-n11 {
    margin-right: -44px !important;
  }

  .v-application--is-ltr .ms-lg-n12 {
    margin-left: -48px !important;
  }

  .v-application--is-rtl .ms-lg-n12 {
    margin-right: -48px !important;
  }

  .v-application--is-ltr .ms-lg-n13 {
    margin-left: -52px !important;
  }

  .v-application--is-rtl .ms-lg-n13 {
    margin-right: -52px !important;
  }

  .v-application--is-ltr .ms-lg-n14 {
    margin-left: -56px !important;
  }

  .v-application--is-rtl .ms-lg-n14 {
    margin-right: -56px !important;
  }

  .v-application--is-ltr .ms-lg-n15 {
    margin-left: -60px !important;
  }

  .v-application--is-rtl .ms-lg-n15 {
    margin-right: -60px !important;
  }

  .v-application--is-ltr .ms-lg-n16 {
    margin-left: -64px !important;
  }

  .v-application--is-rtl .ms-lg-n16 {
    margin-right: -64px !important;
  }

  .v-application--is-ltr .me-lg-n1 {
    margin-right: -4px !important;
  }

  .v-application--is-rtl .me-lg-n1 {
    margin-left: -4px !important;
  }

  .v-application--is-ltr .me-lg-n2 {
    margin-right: -8px !important;
  }

  .v-application--is-rtl .me-lg-n2 {
    margin-left: -8px !important;
  }

  .v-application--is-ltr .me-lg-n3 {
    margin-right: -12px !important;
  }

  .v-application--is-rtl .me-lg-n3 {
    margin-left: -12px !important;
  }

  .v-application--is-ltr .me-lg-n4 {
    margin-right: -16px !important;
  }

  .v-application--is-rtl .me-lg-n4 {
    margin-left: -16px !important;
  }

  .v-application--is-ltr .me-lg-n5 {
    margin-right: -20px !important;
  }

  .v-application--is-rtl .me-lg-n5 {
    margin-left: -20px !important;
  }

  .v-application--is-ltr .me-lg-n6 {
    margin-right: -24px !important;
  }

  .v-application--is-rtl .me-lg-n6 {
    margin-left: -24px !important;
  }

  .v-application--is-ltr .me-lg-n7 {
    margin-right: -28px !important;
  }

  .v-application--is-rtl .me-lg-n7 {
    margin-left: -28px !important;
  }

  .v-application--is-ltr .me-lg-n8 {
    margin-right: -32px !important;
  }

  .v-application--is-rtl .me-lg-n8 {
    margin-left: -32px !important;
  }

  .v-application--is-ltr .me-lg-n9 {
    margin-right: -36px !important;
  }

  .v-application--is-rtl .me-lg-n9 {
    margin-left: -36px !important;
  }

  .v-application--is-ltr .me-lg-n10 {
    margin-right: -40px !important;
  }

  .v-application--is-rtl .me-lg-n10 {
    margin-left: -40px !important;
  }

  .v-application--is-ltr .me-lg-n11 {
    margin-right: -44px !important;
  }

  .v-application--is-rtl .me-lg-n11 {
    margin-left: -44px !important;
  }

  .v-application--is-ltr .me-lg-n12 {
    margin-right: -48px !important;
  }

  .v-application--is-rtl .me-lg-n12 {
    margin-left: -48px !important;
  }

  .v-application--is-ltr .me-lg-n13 {
    margin-right: -52px !important;
  }

  .v-application--is-rtl .me-lg-n13 {
    margin-left: -52px !important;
  }

  .v-application--is-ltr .me-lg-n14 {
    margin-right: -56px !important;
  }

  .v-application--is-rtl .me-lg-n14 {
    margin-left: -56px !important;
  }

  .v-application--is-ltr .me-lg-n15 {
    margin-right: -60px !important;
  }

  .v-application--is-rtl .me-lg-n15 {
    margin-left: -60px !important;
  }

  .v-application--is-ltr .me-lg-n16 {
    margin-right: -64px !important;
  }

  .v-application--is-rtl .me-lg-n16 {
    margin-left: -64px !important;
  }

  .v-application .pa-lg-0 {
    padding: 0px !important;
  }

  .v-application .pa-lg-1 {
    padding: 4px !important;
  }

  .v-application .pa-lg-2 {
    padding: 8px !important;
  }

  .v-application .pa-lg-3 {
    padding: 12px !important;
  }

  .v-application .pa-lg-4 {
    padding: 16px !important;
  }

  .v-application .pa-lg-5 {
    padding: 20px !important;
  }

  .v-application .pa-lg-6 {
    padding: 24px !important;
  }

  .v-application .pa-lg-7 {
    padding: 28px !important;
  }

  .v-application .pa-lg-8 {
    padding: 32px !important;
  }

  .v-application .pa-lg-9 {
    padding: 36px !important;
  }

  .v-application .pa-lg-10 {
    padding: 40px !important;
  }

  .v-application .pa-lg-11 {
    padding: 44px !important;
  }

  .v-application .pa-lg-12 {
    padding: 48px !important;
  }

  .v-application .pa-lg-13 {
    padding: 52px !important;
  }

  .v-application .pa-lg-14 {
    padding: 56px !important;
  }

  .v-application .pa-lg-15 {
    padding: 60px !important;
  }

  .v-application .pa-lg-16 {
    padding: 64px !important;
  }

  .v-application .px-lg-0 {
    padding-right: 0px !important;
    padding-left: 0px !important;
  }

  .v-application .px-lg-1 {
    padding-right: 4px !important;
    padding-left: 4px !important;
  }

  .v-application .px-lg-2 {
    padding-right: 8px !important;
    padding-left: 8px !important;
  }

  .v-application .px-lg-3 {
    padding-right: 12px !important;
    padding-left: 12px !important;
  }

  .v-application .px-lg-4 {
    padding-right: 16px !important;
    padding-left: 16px !important;
  }

  .v-application .px-lg-5 {
    padding-right: 20px !important;
    padding-left: 20px !important;
  }

  .v-application .px-lg-6 {
    padding-right: 24px !important;
    padding-left: 24px !important;
  }

  .v-application .px-lg-7 {
    padding-right: 28px !important;
    padding-left: 28px !important;
  }

  .v-application .px-lg-8 {
    padding-right: 32px !important;
    padding-left: 32px !important;
  }

  .v-application .px-lg-9 {
    padding-right: 36px !important;
    padding-left: 36px !important;
  }

  .v-application .px-lg-10 {
    padding-right: 40px !important;
    padding-left: 40px !important;
  }

  .v-application .px-lg-11 {
    padding-right: 44px !important;
    padding-left: 44px !important;
  }

  .v-application .px-lg-12 {
    padding-right: 48px !important;
    padding-left: 48px !important;
  }

  .v-application .px-lg-13 {
    padding-right: 52px !important;
    padding-left: 52px !important;
  }

  .v-application .px-lg-14 {
    padding-right: 56px !important;
    padding-left: 56px !important;
  }

  .v-application .px-lg-15 {
    padding-right: 60px !important;
    padding-left: 60px !important;
  }

  .v-application .px-lg-16 {
    padding-right: 64px !important;
    padding-left: 64px !important;
  }

  .v-application .py-lg-0 {
    padding-top: 0px !important;
    padding-bottom: 0px !important;
  }

  .v-application .py-lg-1 {
    padding-top: 4px !important;
    padding-bottom: 4px !important;
  }

  .v-application .py-lg-2 {
    padding-top: 8px !important;
    padding-bottom: 8px !important;
  }

  .v-application .py-lg-3 {
    padding-top: 12px !important;
    padding-bottom: 12px !important;
  }

  .v-application .py-lg-4 {
    padding-top: 16px !important;
    padding-bottom: 16px !important;
  }

  .v-application .py-lg-5 {
    padding-top: 20px !important;
    padding-bottom: 20px !important;
  }

  .v-application .py-lg-6 {
    padding-top: 24px !important;
    padding-bottom: 24px !important;
  }

  .v-application .py-lg-7 {
    padding-top: 28px !important;
    padding-bottom: 28px !important;
  }

  .v-application .py-lg-8 {
    padding-top: 32px !important;
    padding-bottom: 32px !important;
  }

  .v-application .py-lg-9 {
    padding-top: 36px !important;
    padding-bottom: 36px !important;
  }

  .v-application .py-lg-10 {
    padding-top: 40px !important;
    padding-bottom: 40px !important;
  }

  .v-application .py-lg-11 {
    padding-top: 44px !important;
    padding-bottom: 44px !important;
  }

  .v-application .py-lg-12 {
    padding-top: 48px !important;
    padding-bottom: 48px !important;
  }

  .v-application .py-lg-13 {
    padding-top: 52px !important;
    padding-bottom: 52px !important;
  }

  .v-application .py-lg-14 {
    padding-top: 56px !important;
    padding-bottom: 56px !important;
  }

  .v-application .py-lg-15 {
    padding-top: 60px !important;
    padding-bottom: 60px !important;
  }

  .v-application .py-lg-16 {
    padding-top: 64px !important;
    padding-bottom: 64px !important;
  }

  .v-application .pt-lg-0 {
    padding-top: 0px !important;
  }

  .v-application .pt-lg-1 {
    padding-top: 4px !important;
  }

  .v-application .pt-lg-2 {
    padding-top: 8px !important;
  }

  .v-application .pt-lg-3 {
    padding-top: 12px !important;
  }

  .v-application .pt-lg-4 {
    padding-top: 16px !important;
  }

  .v-application .pt-lg-5 {
    padding-top: 20px !important;
  }

  .v-application .pt-lg-6 {
    padding-top: 24px !important;
  }

  .v-application .pt-lg-7 {
    padding-top: 28px !important;
  }

  .v-application .pt-lg-8 {
    padding-top: 32px !important;
  }

  .v-application .pt-lg-9 {
    padding-top: 36px !important;
  }

  .v-application .pt-lg-10 {
    padding-top: 40px !important;
  }

  .v-application .pt-lg-11 {
    padding-top: 44px !important;
  }

  .v-application .pt-lg-12 {
    padding-top: 48px !important;
  }

  .v-application .pt-lg-13 {
    padding-top: 52px !important;
  }

  .v-application .pt-lg-14 {
    padding-top: 56px !important;
  }

  .v-application .pt-lg-15 {
    padding-top: 60px !important;
  }

  .v-application .pt-lg-16 {
    padding-top: 64px !important;
  }

  .v-application .pr-lg-0 {
    padding-right: 0px !important;
  }

  .v-application .pr-lg-1 {
    padding-right: 4px !important;
  }

  .v-application .pr-lg-2 {
    padding-right: 8px !important;
  }

  .v-application .pr-lg-3 {
    padding-right: 12px !important;
  }

  .v-application .pr-lg-4 {
    padding-right: 16px !important;
  }

  .v-application .pr-lg-5 {
    padding-right: 20px !important;
  }

  .v-application .pr-lg-6 {
    padding-right: 24px !important;
  }

  .v-application .pr-lg-7 {
    padding-right: 28px !important;
  }

  .v-application .pr-lg-8 {
    padding-right: 32px !important;
  }

  .v-application .pr-lg-9 {
    padding-right: 36px !important;
  }

  .v-application .pr-lg-10 {
    padding-right: 40px !important;
  }

  .v-application .pr-lg-11 {
    padding-right: 44px !important;
  }

  .v-application .pr-lg-12 {
    padding-right: 48px !important;
  }

  .v-application .pr-lg-13 {
    padding-right: 52px !important;
  }

  .v-application .pr-lg-14 {
    padding-right: 56px !important;
  }

  .v-application .pr-lg-15 {
    padding-right: 60px !important;
  }

  .v-application .pr-lg-16 {
    padding-right: 64px !important;
  }

  .v-application .pb-lg-0 {
    padding-bottom: 0px !important;
  }

  .v-application .pb-lg-1 {
    padding-bottom: 4px !important;
  }

  .v-application .pb-lg-2 {
    padding-bottom: 8px !important;
  }

  .v-application .pb-lg-3 {
    padding-bottom: 12px !important;
  }

  .v-application .pb-lg-4 {
    padding-bottom: 16px !important;
  }

  .v-application .pb-lg-5 {
    padding-bottom: 20px !important;
  }

  .v-application .pb-lg-6 {
    padding-bottom: 24px !important;
  }

  .v-application .pb-lg-7 {
    padding-bottom: 28px !important;
  }

  .v-application .pb-lg-8 {
    padding-bottom: 32px !important;
  }

  .v-application .pb-lg-9 {
    padding-bottom: 36px !important;
  }

  .v-application .pb-lg-10 {
    padding-bottom: 40px !important;
  }

  .v-application .pb-lg-11 {
    padding-bottom: 44px !important;
  }

  .v-application .pb-lg-12 {
    padding-bottom: 48px !important;
  }

  .v-application .pb-lg-13 {
    padding-bottom: 52px !important;
  }

  .v-application .pb-lg-14 {
    padding-bottom: 56px !important;
  }

  .v-application .pb-lg-15 {
    padding-bottom: 60px !important;
  }

  .v-application .pb-lg-16 {
    padding-bottom: 64px !important;
  }

  .v-application .pl-lg-0 {
    padding-left: 0px !important;
  }

  .v-application .pl-lg-1 {
    padding-left: 4px !important;
  }

  .v-application .pl-lg-2 {
    padding-left: 8px !important;
  }

  .v-application .pl-lg-3 {
    padding-left: 12px !important;
  }

  .v-application .pl-lg-4 {
    padding-left: 16px !important;
  }

  .v-application .pl-lg-5 {
    padding-left: 20px !important;
  }

  .v-application .pl-lg-6 {
    padding-left: 24px !important;
  }

  .v-application .pl-lg-7 {
    padding-left: 28px !important;
  }

  .v-application .pl-lg-8 {
    padding-left: 32px !important;
  }

  .v-application .pl-lg-9 {
    padding-left: 36px !important;
  }

  .v-application .pl-lg-10 {
    padding-left: 40px !important;
  }

  .v-application .pl-lg-11 {
    padding-left: 44px !important;
  }

  .v-application .pl-lg-12 {
    padding-left: 48px !important;
  }

  .v-application .pl-lg-13 {
    padding-left: 52px !important;
  }

  .v-application .pl-lg-14 {
    padding-left: 56px !important;
  }

  .v-application .pl-lg-15 {
    padding-left: 60px !important;
  }

  .v-application .pl-lg-16 {
    padding-left: 64px !important;
  }

  .v-application--is-ltr .ps-lg-0 {
    padding-left: 0px !important;
  }

  .v-application--is-rtl .ps-lg-0 {
    padding-right: 0px !important;
  }

  .v-application--is-ltr .ps-lg-1 {
    padding-left: 4px !important;
  }

  .v-application--is-rtl .ps-lg-1 {
    padding-right: 4px !important;
  }

  .v-application--is-ltr .ps-lg-2 {
    padding-left: 8px !important;
  }

  .v-application--is-rtl .ps-lg-2 {
    padding-right: 8px !important;
  }

  .v-application--is-ltr .ps-lg-3 {
    padding-left: 12px !important;
  }

  .v-application--is-rtl .ps-lg-3 {
    padding-right: 12px !important;
  }

  .v-application--is-ltr .ps-lg-4 {
    padding-left: 16px !important;
  }

  .v-application--is-rtl .ps-lg-4 {
    padding-right: 16px !important;
  }

  .v-application--is-ltr .ps-lg-5 {
    padding-left: 20px !important;
  }

  .v-application--is-rtl .ps-lg-5 {
    padding-right: 20px !important;
  }

  .v-application--is-ltr .ps-lg-6 {
    padding-left: 24px !important;
  }

  .v-application--is-rtl .ps-lg-6 {
    padding-right: 24px !important;
  }

  .v-application--is-ltr .ps-lg-7 {
    padding-left: 28px !important;
  }

  .v-application--is-rtl .ps-lg-7 {
    padding-right: 28px !important;
  }

  .v-application--is-ltr .ps-lg-8 {
    padding-left: 32px !important;
  }

  .v-application--is-rtl .ps-lg-8 {
    padding-right: 32px !important;
  }

  .v-application--is-ltr .ps-lg-9 {
    padding-left: 36px !important;
  }

  .v-application--is-rtl .ps-lg-9 {
    padding-right: 36px !important;
  }

  .v-application--is-ltr .ps-lg-10 {
    padding-left: 40px !important;
  }

  .v-application--is-rtl .ps-lg-10 {
    padding-right: 40px !important;
  }

  .v-application--is-ltr .ps-lg-11 {
    padding-left: 44px !important;
  }

  .v-application--is-rtl .ps-lg-11 {
    padding-right: 44px !important;
  }

  .v-application--is-ltr .ps-lg-12 {
    padding-left: 48px !important;
  }

  .v-application--is-rtl .ps-lg-12 {
    padding-right: 48px !important;
  }

  .v-application--is-ltr .ps-lg-13 {
    padding-left: 52px !important;
  }

  .v-application--is-rtl .ps-lg-13 {
    padding-right: 52px !important;
  }

  .v-application--is-ltr .ps-lg-14 {
    padding-left: 56px !important;
  }

  .v-application--is-rtl .ps-lg-14 {
    padding-right: 56px !important;
  }

  .v-application--is-ltr .ps-lg-15 {
    padding-left: 60px !important;
  }

  .v-application--is-rtl .ps-lg-15 {
    padding-right: 60px !important;
  }

  .v-application--is-ltr .ps-lg-16 {
    padding-left: 64px !important;
  }

  .v-application--is-rtl .ps-lg-16 {
    padding-right: 64px !important;
  }

  .v-application--is-ltr .pe-lg-0 {
    padding-right: 0px !important;
  }

  .v-application--is-rtl .pe-lg-0 {
    padding-left: 0px !important;
  }

  .v-application--is-ltr .pe-lg-1 {
    padding-right: 4px !important;
  }

  .v-application--is-rtl .pe-lg-1 {
    padding-left: 4px !important;
  }

  .v-application--is-ltr .pe-lg-2 {
    padding-right: 8px !important;
  }

  .v-application--is-rtl .pe-lg-2 {
    padding-left: 8px !important;
  }

  .v-application--is-ltr .pe-lg-3 {
    padding-right: 12px !important;
  }

  .v-application--is-rtl .pe-lg-3 {
    padding-left: 12px !important;
  }

  .v-application--is-ltr .pe-lg-4 {
    padding-right: 16px !important;
  }

  .v-application--is-rtl .pe-lg-4 {
    padding-left: 16px !important;
  }

  .v-application--is-ltr .pe-lg-5 {
    padding-right: 20px !important;
  }

  .v-application--is-rtl .pe-lg-5 {
    padding-left: 20px !important;
  }

  .v-application--is-ltr .pe-lg-6 {
    padding-right: 24px !important;
  }

  .v-application--is-rtl .pe-lg-6 {
    padding-left: 24px !important;
  }

  .v-application--is-ltr .pe-lg-7 {
    padding-right: 28px !important;
  }

  .v-application--is-rtl .pe-lg-7 {
    padding-left: 28px !important;
  }

  .v-application--is-ltr .pe-lg-8 {
    padding-right: 32px !important;
  }

  .v-application--is-rtl .pe-lg-8 {
    padding-left: 32px !important;
  }

  .v-application--is-ltr .pe-lg-9 {
    padding-right: 36px !important;
  }

  .v-application--is-rtl .pe-lg-9 {
    padding-left: 36px !important;
  }

  .v-application--is-ltr .pe-lg-10 {
    padding-right: 40px !important;
  }

  .v-application--is-rtl .pe-lg-10 {
    padding-left: 40px !important;
  }

  .v-application--is-ltr .pe-lg-11 {
    padding-right: 44px !important;
  }

  .v-application--is-rtl .pe-lg-11 {
    padding-left: 44px !important;
  }

  .v-application--is-ltr .pe-lg-12 {
    padding-right: 48px !important;
  }

  .v-application--is-rtl .pe-lg-12 {
    padding-left: 48px !important;
  }

  .v-application--is-ltr .pe-lg-13 {
    padding-right: 52px !important;
  }

  .v-application--is-rtl .pe-lg-13 {
    padding-left: 52px !important;
  }

  .v-application--is-ltr .pe-lg-14 {
    padding-right: 56px !important;
  }

  .v-application--is-rtl .pe-lg-14 {
    padding-left: 56px !important;
  }

  .v-application--is-ltr .pe-lg-15 {
    padding-right: 60px !important;
  }

  .v-application--is-rtl .pe-lg-15 {
    padding-left: 60px !important;
  }

  .v-application--is-ltr .pe-lg-16 {
    padding-right: 64px !important;
  }

  .v-application--is-rtl .pe-lg-16 {
    padding-left: 64px !important;
  }

  .v-application .text-lg-left {
    text-align: left !important;
  }

  .v-application .text-lg-right {
    text-align: right !important;
  }

  .v-application .text-lg-center {
    text-align: center !important;
  }

  .v-application .text-lg-justify {
    text-align: justify !important;
  }

  .v-application .text-lg-start {
    text-align: start !important;
  }

  .v-application .text-lg-end {
    text-align: end !important;
  }

  .v-application .text-lg-h1 {
    font-size: 6rem !important;
    font-weight: 300;
    line-height: 6rem;
    letter-spacing: -0.015625em !important;
    font-family: "Roboto", sans-serif !important;
  }

  .v-application .text-lg-h2 {
    font-size: 3.75rem !important;
    font-weight: 300;
    line-height: 3.75rem;
    letter-spacing: -0.0083333333em !important;
    font-family: "Roboto", sans-serif !important;
  }

  .v-application .text-lg-h3 {
    font-size: 3rem !important;
    font-weight: 400;
    line-height: 3.125rem;
    letter-spacing: normal !important;
    font-family: "Roboto", sans-serif !important;
  }

  .v-application .text-lg-h4 {
    font-size: 2.125rem !important;
    font-weight: 400;
    line-height: 2.5rem;
    letter-spacing: 0.0073529412em !important;
    font-family: "Roboto", sans-serif !important;
  }

  .v-application .text-lg-h5 {
    font-size: 1.5rem !important;
    font-weight: 400;
    line-height: 2rem;
    letter-spacing: normal !important;
    font-family: "Roboto", sans-serif !important;
  }

  .v-application .text-lg-h6 {
    font-size: 1.25rem !important;
    font-weight: 500;
    line-height: 2rem;
    letter-spacing: 0.0125em !important;
    font-family: "Roboto", sans-serif !important;
  }

  .v-application .text-lg-subtitle-1 {
    font-size: 1rem !important;
    font-weight: normal;
    line-height: 1.75rem;
    letter-spacing: 0.009375em !important;
    font-family: "Roboto", sans-serif !important;
  }

  .v-application .text-lg-subtitle-2 {
    font-size: 0.875rem !important;
    font-weight: 500;
    line-height: 1.375rem;
    letter-spacing: 0.0071428571em !important;
    font-family: "Roboto", sans-serif !important;
  }

  .v-application .text-lg-body-1 {
    font-size: 1rem !important;
    font-weight: 400;
    line-height: 1.5rem;
    letter-spacing: 0.03125em !important;
    font-family: "Roboto", sans-serif !important;
  }

  .v-application .text-lg-body-2 {
    font-size: 0.875rem !important;
    font-weight: 400;
    line-height: 1.25rem;
    letter-spacing: 0.0178571429em !important;
    font-family: "Roboto", sans-serif !important;
  }

  .v-application .text-lg-button {
    font-size: 0.875rem !important;
    font-weight: 500;
    line-height: 2.25rem;
    letter-spacing: 0.0892857143em !important;
    font-family: "Roboto", sans-serif !important;
    text-transform: uppercase !important;
  }

  .v-application .text-lg-caption {
    font-size: 0.75rem !important;
    font-weight: 400;
    line-height: 1.25rem;
    letter-spacing: 0.0333333333em !important;
    font-family: "Roboto", sans-serif !important;
  }

  .v-application .text-lg-overline {
    font-size: 0.75rem !important;
    font-weight: 500;
    line-height: 2rem;
    letter-spacing: 0.1666666667em !important;
    font-family: "Roboto", sans-serif !important;
    text-transform: uppercase !important;
  }
}
@media (min-width: 1904px) {
  .v-application .d-xl-none {
    display: none !important;
  }

  .v-application .d-xl-inline {
    display: inline !important;
  }

  .v-application .d-xl-inline-block {
    display: inline-block !important;
  }

  .v-application .d-xl-block {
    display: block !important;
  }

  .v-application .d-xl-table {
    display: table !important;
  }

  .v-application .d-xl-table-row {
    display: table-row !important;
  }

  .v-application .d-xl-table-cell {
    display: table-cell !important;
  }

  .v-application .d-xl-flex {
    display: flex !important;
  }

  .v-application .d-xl-inline-flex {
    display: inline-flex !important;
  }

  .v-application .float-xl-none {
    float: none !important;
  }

  .v-application .float-xl-left {
    float: left !important;
  }

  .v-application .float-xl-right {
    float: right !important;
  }

  .v-application--is-rtl .float-xl-end {
    float: left !important;
  }

  .v-application--is-rtl .float-xl-start {
    float: right !important;
  }

  .v-application--is-ltr .float-xl-end {
    float: right !important;
  }

  .v-application--is-ltr .float-xl-start {
    float: left !important;
  }

  .v-application .flex-xl-fill {
    flex: 1 1 auto !important;
  }

  .v-application .flex-xl-row {
    flex-direction: row !important;
  }

  .v-application .flex-xl-column {
    flex-direction: column !important;
  }

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

  .v-application .flex-xl-column-reverse {
    flex-direction: column-reverse !important;
  }

  .v-application .flex-xl-grow-0 {
    flex-grow: 0 !important;
  }

  .v-application .flex-xl-grow-1 {
    flex-grow: 1 !important;
  }

  .v-application .flex-xl-shrink-0 {
    flex-shrink: 0 !important;
  }

  .v-application .flex-xl-shrink-1 {
    flex-shrink: 1 !important;
  }

  .v-application .flex-xl-wrap {
    flex-wrap: wrap !important;
  }

  .v-application .flex-xl-nowrap {
    flex-wrap: nowrap !important;
  }

  .v-application .flex-xl-wrap-reverse {
    flex-wrap: wrap-reverse !important;
  }

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

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

  .v-application .justify-xl-center {
    justify-content: center !important;
  }

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

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

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

  .v-application .align-xl-end {
    align-items: flex-end !important;
  }

  .v-application .align-xl-center {
    align-items: center !important;
  }

  .v-application .align-xl-baseline {
    align-items: baseline !important;
  }

  .v-application .align-xl-stretch {
    align-items: stretch !important;
  }

  .v-application .align-content-xl-start {
    align-content: flex-start !important;
  }

  .v-application .align-content-xl-end {
    align-content: flex-end !important;
  }

  .v-application .align-content-xl-center {
    align-content: center !important;
  }

  .v-application .align-content-xl-space-between {
    align-content: space-between !important;
  }

  .v-application .align-content-xl-space-around {
    align-content: space-around !important;
  }

  .v-application .align-content-xl-stretch {
    align-content: stretch !important;
  }

  .v-application .align-self-xl-auto {
    align-self: auto !important;
  }

  .v-application .align-self-xl-start {
    align-self: flex-start !important;
  }

  .v-application .align-self-xl-end {
    align-self: flex-end !important;
  }

  .v-application .align-self-xl-center {
    align-self: center !important;
  }

  .v-application .align-self-xl-baseline {
    align-self: baseline !important;
  }

  .v-application .align-self-xl-stretch {
    align-self: stretch !important;
  }

  .v-application .order-xl-first {
    order: -1 !important;
  }

  .v-application .order-xl-0 {
    order: 0 !important;
  }

  .v-application .order-xl-1 {
    order: 1 !important;
  }

  .v-application .order-xl-2 {
    order: 2 !important;
  }

  .v-application .order-xl-3 {
    order: 3 !important;
  }

  .v-application .order-xl-4 {
    order: 4 !important;
  }

  .v-application .order-xl-5 {
    order: 5 !important;
  }

  .v-application .order-xl-6 {
    order: 6 !important;
  }

  .v-application .order-xl-7 {
    order: 7 !important;
  }

  .v-application .order-xl-8 {
    order: 8 !important;
  }

  .v-application .order-xl-9 {
    order: 9 !important;
  }

  .v-application .order-xl-10 {
    order: 10 !important;
  }

  .v-application .order-xl-11 {
    order: 11 !important;
  }

  .v-application .order-xl-12 {
    order: 12 !important;
  }

  .v-application .order-xl-last {
    order: 13 !important;
  }

  .v-application .ma-xl-0 {
    margin: 0px !important;
  }

  .v-application .ma-xl-1 {
    margin: 4px !important;
  }

  .v-application .ma-xl-2 {
    margin: 8px !important;
  }

  .v-application .ma-xl-3 {
    margin: 12px !important;
  }

  .v-application .ma-xl-4 {
    margin: 16px !important;
  }

  .v-application .ma-xl-5 {
    margin: 20px !important;
  }

  .v-application .ma-xl-6 {
    margin: 24px !important;
  }

  .v-application .ma-xl-7 {
    margin: 28px !important;
  }

  .v-application .ma-xl-8 {
    margin: 32px !important;
  }

  .v-application .ma-xl-9 {
    margin: 36px !important;
  }

  .v-application .ma-xl-10 {
    margin: 40px !important;
  }

  .v-application .ma-xl-11 {
    margin: 44px !important;
  }

  .v-application .ma-xl-12 {
    margin: 48px !important;
  }

  .v-application .ma-xl-13 {
    margin: 52px !important;
  }

  .v-application .ma-xl-14 {
    margin: 56px !important;
  }

  .v-application .ma-xl-15 {
    margin: 60px !important;
  }

  .v-application .ma-xl-16 {
    margin: 64px !important;
  }

  .v-application .ma-xl-auto {
    margin: auto !important;
  }

  .v-application .mx-xl-0 {
    margin-right: 0px !important;
    margin-left: 0px !important;
  }

  .v-application .mx-xl-1 {
    margin-right: 4px !important;
    margin-left: 4px !important;
  }

  .v-application .mx-xl-2 {
    margin-right: 8px !important;
    margin-left: 8px !important;
  }

  .v-application .mx-xl-3 {
    margin-right: 12px !important;
    margin-left: 12px !important;
  }

  .v-application .mx-xl-4 {
    margin-right: 16px !important;
    margin-left: 16px !important;
  }

  .v-application .mx-xl-5 {
    margin-right: 20px !important;
    margin-left: 20px !important;
  }

  .v-application .mx-xl-6 {
    margin-right: 24px !important;
    margin-left: 24px !important;
  }

  .v-application .mx-xl-7 {
    margin-right: 28px !important;
    margin-left: 28px !important;
  }

  .v-application .mx-xl-8 {
    margin-right: 32px !important;
    margin-left: 32px !important;
  }

  .v-application .mx-xl-9 {
    margin-right: 36px !important;
    margin-left: 36px !important;
  }

  .v-application .mx-xl-10 {
    margin-right: 40px !important;
    margin-left: 40px !important;
  }

  .v-application .mx-xl-11 {
    margin-right: 44px !important;
    margin-left: 44px !important;
  }

  .v-application .mx-xl-12 {
    margin-right: 48px !important;
    margin-left: 48px !important;
  }

  .v-application .mx-xl-13 {
    margin-right: 52px !important;
    margin-left: 52px !important;
  }

  .v-application .mx-xl-14 {
    margin-right: 56px !important;
    margin-left: 56px !important;
  }

  .v-application .mx-xl-15 {
    margin-right: 60px !important;
    margin-left: 60px !important;
  }

  .v-application .mx-xl-16 {
    margin-right: 64px !important;
    margin-left: 64px !important;
  }

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

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

  .v-application .my-xl-1 {
    margin-top: 4px !important;
    margin-bottom: 4px !important;
  }

  .v-application .my-xl-2 {
    margin-top: 8px !important;
    margin-bottom: 8px !important;
  }

  .v-application .my-xl-3 {
    margin-top: 12px !important;
    margin-bottom: 12px !important;
  }

  .v-application .my-xl-4 {
    margin-top: 16px !important;
    margin-bottom: 16px !important;
  }

  .v-application .my-xl-5 {
    margin-top: 20px !important;
    margin-bottom: 20px !important;
  }

  .v-application .my-xl-6 {
    margin-top: 24px !important;
    margin-bottom: 24px !important;
  }

  .v-application .my-xl-7 {
    margin-top: 28px !important;
    margin-bottom: 28px !important;
  }

  .v-application .my-xl-8 {
    margin-top: 32px !important;
    margin-bottom: 32px !important;
  }

  .v-application .my-xl-9 {
    margin-top: 36px !important;
    margin-bottom: 36px !important;
  }

  .v-application .my-xl-10 {
    margin-top: 40px !important;
    margin-bottom: 40px !important;
  }

  .v-application .my-xl-11 {
    margin-top: 44px !important;
    margin-bottom: 44px !important;
  }

  .v-application .my-xl-12 {
    margin-top: 48px !important;
    margin-bottom: 48px !important;
  }

  .v-application .my-xl-13 {
    margin-top: 52px !important;
    margin-bottom: 52px !important;
  }

  .v-application .my-xl-14 {
    margin-top: 56px !important;
    margin-bottom: 56px !important;
  }

  .v-application .my-xl-15 {
    margin-top: 60px !important;
    margin-bottom: 60px !important;
  }

  .v-application .my-xl-16 {
    margin-top: 64px !important;
    margin-bottom: 64px !important;
  }

  .v-application .my-xl-auto {
    margin-top: auto !important;
    margin-bottom: auto !important;
  }

  .v-application .mt-xl-0 {
    margin-top: 0px !important;
  }

  .v-application .mt-xl-1 {
    margin-top: 4px !important;
  }

  .v-application .mt-xl-2 {
    margin-top: 8px !important;
  }

  .v-application .mt-xl-3 {
    margin-top: 12px !important;
  }

  .v-application .mt-xl-4 {
    margin-top: 16px !important;
  }

  .v-application .mt-xl-5 {
    margin-top: 20px !important;
  }

  .v-application .mt-xl-6 {
    margin-top: 24px !important;
  }

  .v-application .mt-xl-7 {
    margin-top: 28px !important;
  }

  .v-application .mt-xl-8 {
    margin-top: 32px !important;
  }

  .v-application .mt-xl-9 {
    margin-top: 36px !important;
  }

  .v-application .mt-xl-10 {
    margin-top: 40px !important;
  }

  .v-application .mt-xl-11 {
    margin-top: 44px !important;
  }

  .v-application .mt-xl-12 {
    margin-top: 48px !important;
  }

  .v-application .mt-xl-13 {
    margin-top: 52px !important;
  }

  .v-application .mt-xl-14 {
    margin-top: 56px !important;
  }

  .v-application .mt-xl-15 {
    margin-top: 60px !important;
  }

  .v-application .mt-xl-16 {
    margin-top: 64px !important;
  }

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

  .v-application .mr-xl-0 {
    margin-right: 0px !important;
  }

  .v-application .mr-xl-1 {
    margin-right: 4px !important;
  }

  .v-application .mr-xl-2 {
    margin-right: 8px !important;
  }

  .v-application .mr-xl-3 {
    margin-right: 12px !important;
  }

  .v-application .mr-xl-4 {
    margin-right: 16px !important;
  }

  .v-application .mr-xl-5 {
    margin-right: 20px !important;
  }

  .v-application .mr-xl-6 {
    margin-right: 24px !important;
  }

  .v-application .mr-xl-7 {
    margin-right: 28px !important;
  }

  .v-application .mr-xl-8 {
    margin-right: 32px !important;
  }

  .v-application .mr-xl-9 {
    margin-right: 36px !important;
  }

  .v-application .mr-xl-10 {
    margin-right: 40px !important;
  }

  .v-application .mr-xl-11 {
    margin-right: 44px !important;
  }

  .v-application .mr-xl-12 {
    margin-right: 48px !important;
  }

  .v-application .mr-xl-13 {
    margin-right: 52px !important;
  }

  .v-application .mr-xl-14 {
    margin-right: 56px !important;
  }

  .v-application .mr-xl-15 {
    margin-right: 60px !important;
  }

  .v-application .mr-xl-16 {
    margin-right: 64px !important;
  }

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

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

  .v-application .mb-xl-1 {
    margin-bottom: 4px !important;
  }

  .v-application .mb-xl-2 {
    margin-bottom: 8px !important;
  }

  .v-application .mb-xl-3 {
    margin-bottom: 12px !important;
  }

  .v-application .mb-xl-4 {
    margin-bottom: 16px !important;
  }

  .v-application .mb-xl-5 {
    margin-bottom: 20px !important;
  }

  .v-application .mb-xl-6 {
    margin-bottom: 24px !important;
  }

  .v-application .mb-xl-7 {
    margin-bottom: 28px !important;
  }

  .v-application .mb-xl-8 {
    margin-bottom: 32px !important;
  }

  .v-application .mb-xl-9 {
    margin-bottom: 36px !important;
  }

  .v-application .mb-xl-10 {
    margin-bottom: 40px !important;
  }

  .v-application .mb-xl-11 {
    margin-bottom: 44px !important;
  }

  .v-application .mb-xl-12 {
    margin-bottom: 48px !important;
  }

  .v-application .mb-xl-13 {
    margin-bottom: 52px !important;
  }

  .v-application .mb-xl-14 {
    margin-bottom: 56px !important;
  }

  .v-application .mb-xl-15 {
    margin-bottom: 60px !important;
  }

  .v-application .mb-xl-16 {
    margin-bottom: 64px !important;
  }

  .v-application .mb-xl-auto {
    margin-bottom: auto !important;
  }

  .v-application .ml-xl-0 {
    margin-left: 0px !important;
  }

  .v-application .ml-xl-1 {
    margin-left: 4px !important;
  }

  .v-application .ml-xl-2 {
    margin-left: 8px !important;
  }

  .v-application .ml-xl-3 {
    margin-left: 12px !important;
  }

  .v-application .ml-xl-4 {
    margin-left: 16px !important;
  }

  .v-application .ml-xl-5 {
    margin-left: 20px !important;
  }

  .v-application .ml-xl-6 {
    margin-left: 24px !important;
  }

  .v-application .ml-xl-7 {
    margin-left: 28px !important;
  }

  .v-application .ml-xl-8 {
    margin-left: 32px !important;
  }

  .v-application .ml-xl-9 {
    margin-left: 36px !important;
  }

  .v-application .ml-xl-10 {
    margin-left: 40px !important;
  }

  .v-application .ml-xl-11 {
    margin-left: 44px !important;
  }

  .v-application .ml-xl-12 {
    margin-left: 48px !important;
  }

  .v-application .ml-xl-13 {
    margin-left: 52px !important;
  }

  .v-application .ml-xl-14 {
    margin-left: 56px !important;
  }

  .v-application .ml-xl-15 {
    margin-left: 60px !important;
  }

  .v-application .ml-xl-16 {
    margin-left: 64px !important;
  }

  .v-application .ml-xl-auto {
    margin-left: auto !important;
  }

  .v-application--is-ltr .ms-xl-0 {
    margin-left: 0px !important;
  }

  .v-application--is-rtl .ms-xl-0 {
    margin-right: 0px !important;
  }

  .v-application--is-ltr .ms-xl-1 {
    margin-left: 4px !important;
  }

  .v-application--is-rtl .ms-xl-1 {
    margin-right: 4px !important;
  }

  .v-application--is-ltr .ms-xl-2 {
    margin-left: 8px !important;
  }

  .v-application--is-rtl .ms-xl-2 {
    margin-right: 8px !important;
  }

  .v-application--is-ltr .ms-xl-3 {
    margin-left: 12px !important;
  }

  .v-application--is-rtl .ms-xl-3 {
    margin-right: 12px !important;
  }

  .v-application--is-ltr .ms-xl-4 {
    margin-left: 16px !important;
  }

  .v-application--is-rtl .ms-xl-4 {
    margin-right: 16px !important;
  }

  .v-application--is-ltr .ms-xl-5 {
    margin-left: 20px !important;
  }

  .v-application--is-rtl .ms-xl-5 {
    margin-right: 20px !important;
  }

  .v-application--is-ltr .ms-xl-6 {
    margin-left: 24px !important;
  }

  .v-application--is-rtl .ms-xl-6 {
    margin-right: 24px !important;
  }

  .v-application--is-ltr .ms-xl-7 {
    margin-left: 28px !important;
  }

  .v-application--is-rtl .ms-xl-7 {
    margin-right: 28px !important;
  }

  .v-application--is-ltr .ms-xl-8 {
    margin-left: 32px !important;
  }

  .v-application--is-rtl .ms-xl-8 {
    margin-right: 32px !important;
  }

  .v-application--is-ltr .ms-xl-9 {
    margin-left: 36px !important;
  }

  .v-application--is-rtl .ms-xl-9 {
    margin-right: 36px !important;
  }

  .v-application--is-ltr .ms-xl-10 {
    margin-left: 40px !important;
  }

  .v-application--is-rtl .ms-xl-10 {
    margin-right: 40px !important;
  }

  .v-application--is-ltr .ms-xl-11 {
    margin-left: 44px !important;
  }

  .v-application--is-rtl .ms-xl-11 {
    margin-right: 44px !important;
  }

  .v-application--is-ltr .ms-xl-12 {
    margin-left: 48px !important;
  }

  .v-application--is-rtl .ms-xl-12 {
    margin-right: 48px !important;
  }

  .v-application--is-ltr .ms-xl-13 {
    margin-left: 52px !important;
  }

  .v-application--is-rtl .ms-xl-13 {
    margin-right: 52px !important;
  }

  .v-application--is-ltr .ms-xl-14 {
    margin-left: 56px !important;
  }

  .v-application--is-rtl .ms-xl-14 {
    margin-right: 56px !important;
  }

  .v-application--is-ltr .ms-xl-15 {
    margin-left: 60px !important;
  }

  .v-application--is-rtl .ms-xl-15 {
    margin-right: 60px !important;
  }

  .v-application--is-ltr .ms-xl-16 {
    margin-left: 64px !important;
  }

  .v-application--is-rtl .ms-xl-16 {
    margin-right: 64px !important;
  }

  .v-application--is-ltr .ms-xl-auto {
    margin-left: auto !important;
  }

  .v-application--is-rtl .ms-xl-auto {
    margin-right: auto !important;
  }

  .v-application--is-ltr .me-xl-0 {
    margin-right: 0px !important;
  }

  .v-application--is-rtl .me-xl-0 {
    margin-left: 0px !important;
  }

  .v-application--is-ltr .me-xl-1 {
    margin-right: 4px !important;
  }

  .v-application--is-rtl .me-xl-1 {
    margin-left: 4px !important;
  }

  .v-application--is-ltr .me-xl-2 {
    margin-right: 8px !important;
  }

  .v-application--is-rtl .me-xl-2 {
    margin-left: 8px !important;
  }

  .v-application--is-ltr .me-xl-3 {
    margin-right: 12px !important;
  }

  .v-application--is-rtl .me-xl-3 {
    margin-left: 12px !important;
  }

  .v-application--is-ltr .me-xl-4 {
    margin-right: 16px !important;
  }

  .v-application--is-rtl .me-xl-4 {
    margin-left: 16px !important;
  }

  .v-application--is-ltr .me-xl-5 {
    margin-right: 20px !important;
  }

  .v-application--is-rtl .me-xl-5 {
    margin-left: 20px !important;
  }

  .v-application--is-ltr .me-xl-6 {
    margin-right: 24px !important;
  }

  .v-application--is-rtl .me-xl-6 {
    margin-left: 24px !important;
  }

  .v-application--is-ltr .me-xl-7 {
    margin-right: 28px !important;
  }

  .v-application--is-rtl .me-xl-7 {
    margin-left: 28px !important;
  }

  .v-application--is-ltr .me-xl-8 {
    margin-right: 32px !important;
  }

  .v-application--is-rtl .me-xl-8 {
    margin-left: 32px !important;
  }

  .v-application--is-ltr .me-xl-9 {
    margin-right: 36px !important;
  }

  .v-application--is-rtl .me-xl-9 {
    margin-left: 36px !important;
  }

  .v-application--is-ltr .me-xl-10 {
    margin-right: 40px !important;
  }

  .v-application--is-rtl .me-xl-10 {
    margin-left: 40px !important;
  }

  .v-application--is-ltr .me-xl-11 {
    margin-right: 44px !important;
  }

  .v-application--is-rtl .me-xl-11 {
    margin-left: 44px !important;
  }

  .v-application--is-ltr .me-xl-12 {
    margin-right: 48px !important;
  }

  .v-application--is-rtl .me-xl-12 {
    margin-left: 48px !important;
  }

  .v-application--is-ltr .me-xl-13 {
    margin-right: 52px !important;
  }

  .v-application--is-rtl .me-xl-13 {
    margin-left: 52px !important;
  }

  .v-application--is-ltr .me-xl-14 {
    margin-right: 56px !important;
  }

  .v-application--is-rtl .me-xl-14 {
    margin-left: 56px !important;
  }

  .v-application--is-ltr .me-xl-15 {
    margin-right: 60px !important;
  }

  .v-application--is-rtl .me-xl-15 {
    margin-left: 60px !important;
  }

  .v-application--is-ltr .me-xl-16 {
    margin-right: 64px !important;
  }

  .v-application--is-rtl .me-xl-16 {
    margin-left: 64px !important;
  }

  .v-application--is-ltr .me-xl-auto {
    margin-right: auto !important;
  }

  .v-application--is-rtl .me-xl-auto {
    margin-left: auto !important;
  }

  .v-application .ma-xl-n1 {
    margin: -4px !important;
  }

  .v-application .ma-xl-n2 {
    margin: -8px !important;
  }

  .v-application .ma-xl-n3 {
    margin: -12px !important;
  }

  .v-application .ma-xl-n4 {
    margin: -16px !important;
  }

  .v-application .ma-xl-n5 {
    margin: -20px !important;
  }

  .v-application .ma-xl-n6 {
    margin: -24px !important;
  }

  .v-application .ma-xl-n7 {
    margin: -28px !important;
  }

  .v-application .ma-xl-n8 {
    margin: -32px !important;
  }

  .v-application .ma-xl-n9 {
    margin: -36px !important;
  }

  .v-application .ma-xl-n10 {
    margin: -40px !important;
  }

  .v-application .ma-xl-n11 {
    margin: -44px !important;
  }

  .v-application .ma-xl-n12 {
    margin: -48px !important;
  }

  .v-application .ma-xl-n13 {
    margin: -52px !important;
  }

  .v-application .ma-xl-n14 {
    margin: -56px !important;
  }

  .v-application .ma-xl-n15 {
    margin: -60px !important;
  }

  .v-application .ma-xl-n16 {
    margin: -64px !important;
  }

  .v-application .mx-xl-n1 {
    margin-right: -4px !important;
    margin-left: -4px !important;
  }

  .v-application .mx-xl-n2 {
    margin-right: -8px !important;
    margin-left: -8px !important;
  }

  .v-application .mx-xl-n3 {
    margin-right: -12px !important;
    margin-left: -12px !important;
  }

  .v-application .mx-xl-n4 {
    margin-right: -16px !important;
    margin-left: -16px !important;
  }

  .v-application .mx-xl-n5 {
    margin-right: -20px !important;
    margin-left: -20px !important;
  }

  .v-application .mx-xl-n6 {
    margin-right: -24px !important;
    margin-left: -24px !important;
  }

  .v-application .mx-xl-n7 {
    margin-right: -28px !important;
    margin-left: -28px !important;
  }

  .v-application .mx-xl-n8 {
    margin-right: -32px !important;
    margin-left: -32px !important;
  }

  .v-application .mx-xl-n9 {
    margin-right: -36px !important;
    margin-left: -36px !important;
  }

  .v-application .mx-xl-n10 {
    margin-right: -40px !important;
    margin-left: -40px !important;
  }

  .v-application .mx-xl-n11 {
    margin-right: -44px !important;
    margin-left: -44px !important;
  }

  .v-application .mx-xl-n12 {
    margin-right: -48px !important;
    margin-left: -48px !important;
  }

  .v-application .mx-xl-n13 {
    margin-right: -52px !important;
    margin-left: -52px !important;
  }

  .v-application .mx-xl-n14 {
    margin-right: -56px !important;
    margin-left: -56px !important;
  }

  .v-application .mx-xl-n15 {
    margin-right: -60px !important;
    margin-left: -60px !important;
  }

  .v-application .mx-xl-n16 {
    margin-right: -64px !important;
    margin-left: -64px !important;
  }

  .v-application .my-xl-n1 {
    margin-top: -4px !important;
    margin-bottom: -4px !important;
  }

  .v-application .my-xl-n2 {
    margin-top: -8px !important;
    margin-bottom: -8px !important;
  }

  .v-application .my-xl-n3 {
    margin-top: -12px !important;
    margin-bottom: -12px !important;
  }

  .v-application .my-xl-n4 {
    margin-top: -16px !important;
    margin-bottom: -16px !important;
  }

  .v-application .my-xl-n5 {
    margin-top: -20px !important;
    margin-bottom: -20px !important;
  }

  .v-application .my-xl-n6 {
    margin-top: -24px !important;
    margin-bottom: -24px !important;
  }

  .v-application .my-xl-n7 {
    margin-top: -28px !important;
    margin-bottom: -28px !important;
  }

  .v-application .my-xl-n8 {
    margin-top: -32px !important;
    margin-bottom: -32px !important;
  }

  .v-application .my-xl-n9 {
    margin-top: -36px !important;
    margin-bottom: -36px !important;
  }

  .v-application .my-xl-n10 {
    margin-top: -40px !important;
    margin-bottom: -40px !important;
  }

  .v-application .my-xl-n11 {
    margin-top: -44px !important;
    margin-bottom: -44px !important;
  }

  .v-application .my-xl-n12 {
    margin-top: -48px !important;
    margin-bottom: -48px !important;
  }

  .v-application .my-xl-n13 {
    margin-top: -52px !important;
    margin-bottom: -52px !important;
  }

  .v-application .my-xl-n14 {
    margin-top: -56px !important;
    margin-bottom: -56px !important;
  }

  .v-application .my-xl-n15 {
    margin-top: -60px !important;
    margin-bottom: -60px !important;
  }

  .v-application .my-xl-n16 {
    margin-top: -64px !important;
    margin-bottom: -64px !important;
  }

  .v-application .mt-xl-n1 {
    margin-top: -4px !important;
  }

  .v-application .mt-xl-n2 {
    margin-top: -8px !important;
  }

  .v-application .mt-xl-n3 {
    margin-top: -12px !important;
  }

  .v-application .mt-xl-n4 {
    margin-top: -16px !important;
  }

  .v-application .mt-xl-n5 {
    margin-top: -20px !important;
  }

  .v-application .mt-xl-n6 {
    margin-top: -24px !important;
  }

  .v-application .mt-xl-n7 {
    margin-top: -28px !important;
  }

  .v-application .mt-xl-n8 {
    margin-top: -32px !important;
  }

  .v-application .mt-xl-n9 {
    margin-top: -36px !important;
  }

  .v-application .mt-xl-n10 {
    margin-top: -40px !important;
  }

  .v-application .mt-xl-n11 {
    margin-top: -44px !important;
  }

  .v-application .mt-xl-n12 {
    margin-top: -48px !important;
  }

  .v-application .mt-xl-n13 {
    margin-top: -52px !important;
  }

  .v-application .mt-xl-n14 {
    margin-top: -56px !important;
  }

  .v-application .mt-xl-n15 {
    margin-top: -60px !important;
  }

  .v-application .mt-xl-n16 {
    margin-top: -64px !important;
  }

  .v-application .mr-xl-n1 {
    margin-right: -4px !important;
  }

  .v-application .mr-xl-n2 {
    margin-right: -8px !important;
  }

  .v-application .mr-xl-n3 {
    margin-right: -12px !important;
  }

  .v-application .mr-xl-n4 {
    margin-right: -16px !important;
  }

  .v-application .mr-xl-n5 {
    margin-right: -20px !important;
  }

  .v-application .mr-xl-n6 {
    margin-right: -24px !important;
  }

  .v-application .mr-xl-n7 {
    margin-right: -28px !important;
  }

  .v-application .mr-xl-n8 {
    margin-right: -32px !important;
  }

  .v-application .mr-xl-n9 {
    margin-right: -36px !important;
  }

  .v-application .mr-xl-n10 {
    margin-right: -40px !important;
  }

  .v-application .mr-xl-n11 {
    margin-right: -44px !important;
  }

  .v-application .mr-xl-n12 {
    margin-right: -48px !important;
  }

  .v-application .mr-xl-n13 {
    margin-right: -52px !important;
  }

  .v-application .mr-xl-n14 {
    margin-right: -56px !important;
  }

  .v-application .mr-xl-n15 {
    margin-right: -60px !important;
  }

  .v-application .mr-xl-n16 {
    margin-right: -64px !important;
  }

  .v-application .mb-xl-n1 {
    margin-bottom: -4px !important;
  }

  .v-application .mb-xl-n2 {
    margin-bottom: -8px !important;
  }

  .v-application .mb-xl-n3 {
    margin-bottom: -12px !important;
  }

  .v-application .mb-xl-n4 {
    margin-bottom: -16px !important;
  }

  .v-application .mb-xl-n5 {
    margin-bottom: -20px !important;
  }

  .v-application .mb-xl-n6 {
    margin-bottom: -24px !important;
  }

  .v-application .mb-xl-n7 {
    margin-bottom: -28px !important;
  }

  .v-application .mb-xl-n8 {
    margin-bottom: -32px !important;
  }

  .v-application .mb-xl-n9 {
    margin-bottom: -36px !important;
  }

  .v-application .mb-xl-n10 {
    margin-bottom: -40px !important;
  }

  .v-application .mb-xl-n11 {
    margin-bottom: -44px !important;
  }

  .v-application .mb-xl-n12 {
    margin-bottom: -48px !important;
  }

  .v-application .mb-xl-n13 {
    margin-bottom: -52px !important;
  }

  .v-application .mb-xl-n14 {
    margin-bottom: -56px !important;
  }

  .v-application .mb-xl-n15 {
    margin-bottom: -60px !important;
  }

  .v-application .mb-xl-n16 {
    margin-bottom: -64px !important;
  }

  .v-application .ml-xl-n1 {
    margin-left: -4px !important;
  }

  .v-application .ml-xl-n2 {
    margin-left: -8px !important;
  }

  .v-application .ml-xl-n3 {
    margin-left: -12px !important;
  }

  .v-application .ml-xl-n4 {
    margin-left: -16px !important;
  }

  .v-application .ml-xl-n5 {
    margin-left: -20px !important;
  }

  .v-application .ml-xl-n6 {
    margin-left: -24px !important;
  }

  .v-application .ml-xl-n7 {
    margin-left: -28px !important;
  }

  .v-application .ml-xl-n8 {
    margin-left: -32px !important;
  }

  .v-application .ml-xl-n9 {
    margin-left: -36px !important;
  }

  .v-application .ml-xl-n10 {
    margin-left: -40px !important;
  }

  .v-application .ml-xl-n11 {
    margin-left: -44px !important;
  }

  .v-application .ml-xl-n12 {
    margin-left: -48px !important;
  }

  .v-application .ml-xl-n13 {
    margin-left: -52px !important;
  }

  .v-application .ml-xl-n14 {
    margin-left: -56px !important;
  }

  .v-application .ml-xl-n15 {
    margin-left: -60px !important;
  }

  .v-application .ml-xl-n16 {
    margin-left: -64px !important;
  }

  .v-application--is-ltr .ms-xl-n1 {
    margin-left: -4px !important;
  }

  .v-application--is-rtl .ms-xl-n1 {
    margin-right: -4px !important;
  }

  .v-application--is-ltr .ms-xl-n2 {
    margin-left: -8px !important;
  }

  .v-application--is-rtl .ms-xl-n2 {
    margin-right: -8px !important;
  }

  .v-application--is-ltr .ms-xl-n3 {
    margin-left: -12px !important;
  }

  .v-application--is-rtl .ms-xl-n3 {
    margin-right: -12px !important;
  }

  .v-application--is-ltr .ms-xl-n4 {
    margin-left: -16px !important;
  }

  .v-application--is-rtl .ms-xl-n4 {
    margin-right: -16px !important;
  }

  .v-application--is-ltr .ms-xl-n5 {
    margin-left: -20px !important;
  }

  .v-application--is-rtl .ms-xl-n5 {
    margin-right: -20px !important;
  }

  .v-application--is-ltr .ms-xl-n6 {
    margin-left: -24px !important;
  }

  .v-application--is-rtl .ms-xl-n6 {
    margin-right: -24px !important;
  }

  .v-application--is-ltr .ms-xl-n7 {
    margin-left: -28px !important;
  }

  .v-application--is-rtl .ms-xl-n7 {
    margin-right: -28px !important;
  }

  .v-application--is-ltr .ms-xl-n8 {
    margin-left: -32px !important;
  }

  .v-application--is-rtl .ms-xl-n8 {
    margin-right: -32px !important;
  }

  .v-application--is-ltr .ms-xl-n9 {
    margin-left: -36px !important;
  }

  .v-application--is-rtl .ms-xl-n9 {
    margin-right: -36px !important;
  }

  .v-application--is-ltr .ms-xl-n10 {
    margin-left: -40px !important;
  }

  .v-application--is-rtl .ms-xl-n10 {
    margin-right: -40px !important;
  }

  .v-application--is-ltr .ms-xl-n11 {
    margin-left: -44px !important;
  }

  .v-application--is-rtl .ms-xl-n11 {
    margin-right: -44px !important;
  }

  .v-application--is-ltr .ms-xl-n12 {
    margin-left: -48px !important;
  }

  .v-application--is-rtl .ms-xl-n12 {
    margin-right: -48px !important;
  }

  .v-application--is-ltr .ms-xl-n13 {
    margin-left: -52px !important;
  }

  .v-application--is-rtl .ms-xl-n13 {
    margin-right: -52px !important;
  }

  .v-application--is-ltr .ms-xl-n14 {
    margin-left: -56px !important;
  }

  .v-application--is-rtl .ms-xl-n14 {
    margin-right: -56px !important;
  }

  .v-application--is-ltr .ms-xl-n15 {
    margin-left: -60px !important;
  }

  .v-application--is-rtl .ms-xl-n15 {
    margin-right: -60px !important;
  }

  .v-application--is-ltr .ms-xl-n16 {
    margin-left: -64px !important;
  }

  .v-application--is-rtl .ms-xl-n16 {
    margin-right: -64px !important;
  }

  .v-application--is-ltr .me-xl-n1 {
    margin-right: -4px !important;
  }

  .v-application--is-rtl .me-xl-n1 {
    margin-left: -4px !important;
  }

  .v-application--is-ltr .me-xl-n2 {
    margin-right: -8px !important;
  }

  .v-application--is-rtl .me-xl-n2 {
    margin-left: -8px !important;
  }

  .v-application--is-ltr .me-xl-n3 {
    margin-right: -12px !important;
  }

  .v-application--is-rtl .me-xl-n3 {
    margin-left: -12px !important;
  }

  .v-application--is-ltr .me-xl-n4 {
    margin-right: -16px !important;
  }

  .v-application--is-rtl .me-xl-n4 {
    margin-left: -16px !important;
  }

  .v-application--is-ltr .me-xl-n5 {
    margin-right: -20px !important;
  }

  .v-application--is-rtl .me-xl-n5 {
    margin-left: -20px !important;
  }

  .v-application--is-ltr .me-xl-n6 {
    margin-right: -24px !important;
  }

  .v-application--is-rtl .me-xl-n6 {
    margin-left: -24px !important;
  }

  .v-application--is-ltr .me-xl-n7 {
    margin-right: -28px !important;
  }

  .v-application--is-rtl .me-xl-n7 {
    margin-left: -28px !important;
  }

  .v-application--is-ltr .me-xl-n8 {
    margin-right: -32px !important;
  }

  .v-application--is-rtl .me-xl-n8 {
    margin-left: -32px !important;
  }

  .v-application--is-ltr .me-xl-n9 {
    margin-right: -36px !important;
  }

  .v-application--is-rtl .me-xl-n9 {
    margin-left: -36px !important;
  }

  .v-application--is-ltr .me-xl-n10 {
    margin-right: -40px !important;
  }

  .v-application--is-rtl .me-xl-n10 {
    margin-left: -40px !important;
  }

  .v-application--is-ltr .me-xl-n11 {
    margin-right: -44px !important;
  }

  .v-application--is-rtl .me-xl-n11 {
    margin-left: -44px !important;
  }

  .v-application--is-ltr .me-xl-n12 {
    margin-right: -48px !important;
  }

  .v-application--is-rtl .me-xl-n12 {
    margin-left: -48px !important;
  }

  .v-application--is-ltr .me-xl-n13 {
    margin-right: -52px !important;
  }

  .v-application--is-rtl .me-xl-n13 {
    margin-left: -52px !important;
  }

  .v-application--is-ltr .me-xl-n14 {
    margin-right: -56px !important;
  }

  .v-application--is-rtl .me-xl-n14 {
    margin-left: -56px !important;
  }

  .v-application--is-ltr .me-xl-n15 {
    margin-right: -60px !important;
  }

  .v-application--is-rtl .me-xl-n15 {
    margin-left: -60px !important;
  }

  .v-application--is-ltr .me-xl-n16 {
    margin-right: -64px !important;
  }

  .v-application--is-rtl .me-xl-n16 {
    margin-left: -64px !important;
  }

  .v-application .pa-xl-0 {
    padding: 0px !important;
  }

  .v-application .pa-xl-1 {
    padding: 4px !important;
  }

  .v-application .pa-xl-2 {
    padding: 8px !important;
  }

  .v-application .pa-xl-3 {
    padding: 12px !important;
  }

  .v-application .pa-xl-4 {
    padding: 16px !important;
  }

  .v-application .pa-xl-5 {
    padding: 20px !important;
  }

  .v-application .pa-xl-6 {
    padding: 24px !important;
  }

  .v-application .pa-xl-7 {
    padding: 28px !important;
  }

  .v-application .pa-xl-8 {
    padding: 32px !important;
  }

  .v-application .pa-xl-9 {
    padding: 36px !important;
  }

  .v-application .pa-xl-10 {
    padding: 40px !important;
  }

  .v-application .pa-xl-11 {
    padding: 44px !important;
  }

  .v-application .pa-xl-12 {
    padding: 48px !important;
  }

  .v-application .pa-xl-13 {
    padding: 52px !important;
  }

  .v-application .pa-xl-14 {
    padding: 56px !important;
  }

  .v-application .pa-xl-15 {
    padding: 60px !important;
  }

  .v-application .pa-xl-16 {
    padding: 64px !important;
  }

  .v-application .px-xl-0 {
    padding-right: 0px !important;
    padding-left: 0px !important;
  }

  .v-application .px-xl-1 {
    padding-right: 4px !important;
    padding-left: 4px !important;
  }

  .v-application .px-xl-2 {
    padding-right: 8px !important;
    padding-left: 8px !important;
  }

  .v-application .px-xl-3 {
    padding-right: 12px !important;
    padding-left: 12px !important;
  }

  .v-application .px-xl-4 {
    padding-right: 16px !important;
    padding-left: 16px !important;
  }

  .v-application .px-xl-5 {
    padding-right: 20px !important;
    padding-left: 20px !important;
  }

  .v-application .px-xl-6 {
    padding-right: 24px !important;
    padding-left: 24px !important;
  }

  .v-application .px-xl-7 {
    padding-right: 28px !important;
    padding-left: 28px !important;
  }

  .v-application .px-xl-8 {
    padding-right: 32px !important;
    padding-left: 32px !important;
  }

  .v-application .px-xl-9 {
    padding-right: 36px !important;
    padding-left: 36px !important;
  }

  .v-application .px-xl-10 {
    padding-right: 40px !important;
    padding-left: 40px !important;
  }

  .v-application .px-xl-11 {
    padding-right: 44px !important;
    padding-left: 44px !important;
  }

  .v-application .px-xl-12 {
    padding-right: 48px !important;
    padding-left: 48px !important;
  }

  .v-application .px-xl-13 {
    padding-right: 52px !important;
    padding-left: 52px !important;
  }

  .v-application .px-xl-14 {
    padding-right: 56px !important;
    padding-left: 56px !important;
  }

  .v-application .px-xl-15 {
    padding-right: 60px !important;
    padding-left: 60px !important;
  }

  .v-application .px-xl-16 {
    padding-right: 64px !important;
    padding-left: 64px !important;
  }

  .v-application .py-xl-0 {
    padding-top: 0px !important;
    padding-bottom: 0px !important;
  }

  .v-application .py-xl-1 {
    padding-top: 4px !important;
    padding-bottom: 4px !important;
  }

  .v-application .py-xl-2 {
    padding-top: 8px !important;
    padding-bottom: 8px !important;
  }

  .v-application .py-xl-3 {
    padding-top: 12px !important;
    padding-bottom: 12px !important;
  }

  .v-application .py-xl-4 {
    padding-top: 16px !important;
    padding-bottom: 16px !important;
  }

  .v-application .py-xl-5 {
    padding-top: 20px !important;
    padding-bottom: 20px !important;
  }

  .v-application .py-xl-6 {
    padding-top: 24px !important;
    padding-bottom: 24px !important;
  }

  .v-application .py-xl-7 {
    padding-top: 28px !important;
    padding-bottom: 28px !important;
  }

  .v-application .py-xl-8 {
    padding-top: 32px !important;
    padding-bottom: 32px !important;
  }

  .v-application .py-xl-9 {
    padding-top: 36px !important;
    padding-bottom: 36px !important;
  }

  .v-application .py-xl-10 {
    padding-top: 40px !important;
    padding-bottom: 40px !important;
  }

  .v-application .py-xl-11 {
    padding-top: 44px !important;
    padding-bottom: 44px !important;
  }

  .v-application .py-xl-12 {
    padding-top: 48px !important;
    padding-bottom: 48px !important;
  }

  .v-application .py-xl-13 {
    padding-top: 52px !important;
    padding-bottom: 52px !important;
  }

  .v-application .py-xl-14 {
    padding-top: 56px !important;
    padding-bottom: 56px !important;
  }

  .v-application .py-xl-15 {
    padding-top: 60px !important;
    padding-bottom: 60px !important;
  }

  .v-application .py-xl-16 {
    padding-top: 64px !important;
    padding-bottom: 64px !important;
  }

  .v-application .pt-xl-0 {
    padding-top: 0px !important;
  }

  .v-application .pt-xl-1 {
    padding-top: 4px !important;
  }

  .v-application .pt-xl-2 {
    padding-top: 8px !important;
  }

  .v-application .pt-xl-3 {
    padding-top: 12px !important;
  }

  .v-application .pt-xl-4 {
    padding-top: 16px !important;
  }

  .v-application .pt-xl-5 {
    padding-top: 20px !important;
  }

  .v-application .pt-xl-6 {
    padding-top: 24px !important;
  }

  .v-application .pt-xl-7 {
    padding-top: 28px !important;
  }

  .v-application .pt-xl-8 {
    padding-top: 32px !important;
  }

  .v-application .pt-xl-9 {
    padding-top: 36px !important;
  }

  .v-application .pt-xl-10 {
    padding-top: 40px !important;
  }

  .v-application .pt-xl-11 {
    padding-top: 44px !important;
  }

  .v-application .pt-xl-12 {
    padding-top: 48px !important;
  }

  .v-application .pt-xl-13 {
    padding-top: 52px !important;
  }

  .v-application .pt-xl-14 {
    padding-top: 56px !important;
  }

  .v-application .pt-xl-15 {
    padding-top: 60px !important;
  }

  .v-application .pt-xl-16 {
    padding-top: 64px !important;
  }

  .v-application .pr-xl-0 {
    padding-right: 0px !important;
  }

  .v-application .pr-xl-1 {
    padding-right: 4px !important;
  }

  .v-application .pr-xl-2 {
    padding-right: 8px !important;
  }

  .v-application .pr-xl-3 {
    padding-right: 12px !important;
  }

  .v-application .pr-xl-4 {
    padding-right: 16px !important;
  }

  .v-application .pr-xl-5 {
    padding-right: 20px !important;
  }

  .v-application .pr-xl-6 {
    padding-right: 24px !important;
  }

  .v-application .pr-xl-7 {
    padding-right: 28px !important;
  }

  .v-application .pr-xl-8 {
    padding-right: 32px !important;
  }

  .v-application .pr-xl-9 {
    padding-right: 36px !important;
  }

  .v-application .pr-xl-10 {
    padding-right: 40px !important;
  }

  .v-application .pr-xl-11 {
    padding-right: 44px !important;
  }

  .v-application .pr-xl-12 {
    padding-right: 48px !important;
  }

  .v-application .pr-xl-13 {
    padding-right: 52px !important;
  }

  .v-application .pr-xl-14 {
    padding-right: 56px !important;
  }

  .v-application .pr-xl-15 {
    padding-right: 60px !important;
  }

  .v-application .pr-xl-16 {
    padding-right: 64px !important;
  }

  .v-application .pb-xl-0 {
    padding-bottom: 0px !important;
  }

  .v-application .pb-xl-1 {
    padding-bottom: 4px !important;
  }

  .v-application .pb-xl-2 {
    padding-bottom: 8px !important;
  }

  .v-application .pb-xl-3 {
    padding-bottom: 12px !important;
  }

  .v-application .pb-xl-4 {
    padding-bottom: 16px !important;
  }

  .v-application .pb-xl-5 {
    padding-bottom: 20px !important;
  }

  .v-application .pb-xl-6 {
    padding-bottom: 24px !important;
  }

  .v-application .pb-xl-7 {
    padding-bottom: 28px !important;
  }

  .v-application .pb-xl-8 {
    padding-bottom: 32px !important;
  }

  .v-application .pb-xl-9 {
    padding-bottom: 36px !important;
  }

  .v-application .pb-xl-10 {
    padding-bottom: 40px !important;
  }

  .v-application .pb-xl-11 {
    padding-bottom: 44px !important;
  }

  .v-application .pb-xl-12 {
    padding-bottom: 48px !important;
  }

  .v-application .pb-xl-13 {
    padding-bottom: 52px !important;
  }

  .v-application .pb-xl-14 {
    padding-bottom: 56px !important;
  }

  .v-application .pb-xl-15 {
    padding-bottom: 60px !important;
  }

  .v-application .pb-xl-16 {
    padding-bottom: 64px !important;
  }

  .v-application .pl-xl-0 {
    padding-left: 0px !important;
  }

  .v-application .pl-xl-1 {
    padding-left: 4px !important;
  }

  .v-application .pl-xl-2 {
    padding-left: 8px !important;
  }

  .v-application .pl-xl-3 {
    padding-left: 12px !important;
  }

  .v-application .pl-xl-4 {
    padding-left: 16px !important;
  }

  .v-application .pl-xl-5 {
    padding-left: 20px !important;
  }

  .v-application .pl-xl-6 {
    padding-left: 24px !important;
  }

  .v-application .pl-xl-7 {
    padding-left: 28px !important;
  }

  .v-application .pl-xl-8 {
    padding-left: 32px !important;
  }

  .v-application .pl-xl-9 {
    padding-left: 36px !important;
  }

  .v-application .pl-xl-10 {
    padding-left: 40px !important;
  }

  .v-application .pl-xl-11 {
    padding-left: 44px !important;
  }

  .v-application .pl-xl-12 {
    padding-left: 48px !important;
  }

  .v-application .pl-xl-13 {
    padding-left: 52px !important;
  }

  .v-application .pl-xl-14 {
    padding-left: 56px !important;
  }

  .v-application .pl-xl-15 {
    padding-left: 60px !important;
  }

  .v-application .pl-xl-16 {
    padding-left: 64px !important;
  }

  .v-application--is-ltr .ps-xl-0 {
    padding-left: 0px !important;
  }

  .v-application--is-rtl .ps-xl-0 {
    padding-right: 0px !important;
  }

  .v-application--is-ltr .ps-xl-1 {
    padding-left: 4px !important;
  }

  .v-application--is-rtl .ps-xl-1 {
    padding-right: 4px !important;
  }

  .v-application--is-ltr .ps-xl-2 {
    padding-left: 8px !important;
  }

  .v-application--is-rtl .ps-xl-2 {
    padding-right: 8px !important;
  }

  .v-application--is-ltr .ps-xl-3 {
    padding-left: 12px !important;
  }

  .v-application--is-rtl .ps-xl-3 {
    padding-right: 12px !important;
  }

  .v-application--is-ltr .ps-xl-4 {
    padding-left: 16px !important;
  }

  .v-application--is-rtl .ps-xl-4 {
    padding-right: 16px !important;
  }

  .v-application--is-ltr .ps-xl-5 {
    padding-left: 20px !important;
  }

  .v-application--is-rtl .ps-xl-5 {
    padding-right: 20px !important;
  }

  .v-application--is-ltr .ps-xl-6 {
    padding-left: 24px !important;
  }

  .v-application--is-rtl .ps-xl-6 {
    padding-right: 24px !important;
  }

  .v-application--is-ltr .ps-xl-7 {
    padding-left: 28px !important;
  }

  .v-application--is-rtl .ps-xl-7 {
    padding-right: 28px !important;
  }

  .v-application--is-ltr .ps-xl-8 {
    padding-left: 32px !important;
  }

  .v-application--is-rtl .ps-xl-8 {
    padding-right: 32px !important;
  }

  .v-application--is-ltr .ps-xl-9 {
    padding-left: 36px !important;
  }

  .v-application--is-rtl .ps-xl-9 {
    padding-right: 36px !important;
  }

  .v-application--is-ltr .ps-xl-10 {
    padding-left: 40px !important;
  }

  .v-application--is-rtl .ps-xl-10 {
    padding-right: 40px !important;
  }

  .v-application--is-ltr .ps-xl-11 {
    padding-left: 44px !important;
  }

  .v-application--is-rtl .ps-xl-11 {
    padding-right: 44px !important;
  }

  .v-application--is-ltr .ps-xl-12 {
    padding-left: 48px !important;
  }

  .v-application--is-rtl .ps-xl-12 {
    padding-right: 48px !important;
  }

  .v-application--is-ltr .ps-xl-13 {
    padding-left: 52px !important;
  }

  .v-application--is-rtl .ps-xl-13 {
    padding-right: 52px !important;
  }

  .v-application--is-ltr .ps-xl-14 {
    padding-left: 56px !important;
  }

  .v-application--is-rtl .ps-xl-14 {
    padding-right: 56px !important;
  }

  .v-application--is-ltr .ps-xl-15 {
    padding-left: 60px !important;
  }

  .v-application--is-rtl .ps-xl-15 {
    padding-right: 60px !important;
  }

  .v-application--is-ltr .ps-xl-16 {
    padding-left: 64px !important;
  }

  .v-application--is-rtl .ps-xl-16 {
    padding-right: 64px !important;
  }

  .v-application--is-ltr .pe-xl-0 {
    padding-right: 0px !important;
  }

  .v-application--is-rtl .pe-xl-0 {
    padding-left: 0px !important;
  }

  .v-application--is-ltr .pe-xl-1 {
    padding-right: 4px !important;
  }

  .v-application--is-rtl .pe-xl-1 {
    padding-left: 4px !important;
  }

  .v-application--is-ltr .pe-xl-2 {
    padding-right: 8px !important;
  }

  .v-application--is-rtl .pe-xl-2 {
    padding-left: 8px !important;
  }

  .v-application--is-ltr .pe-xl-3 {
    padding-right: 12px !important;
  }

  .v-application--is-rtl .pe-xl-3 {
    padding-left: 12px !important;
  }

  .v-application--is-ltr .pe-xl-4 {
    padding-right: 16px !important;
  }

  .v-application--is-rtl .pe-xl-4 {
    padding-left: 16px !important;
  }

  .v-application--is-ltr .pe-xl-5 {
    padding-right: 20px !important;
  }

  .v-application--is-rtl .pe-xl-5 {
    padding-left: 20px !important;
  }

  .v-application--is-ltr .pe-xl-6 {
    padding-right: 24px !important;
  }

  .v-application--is-rtl .pe-xl-6 {
    padding-left: 24px !important;
  }

  .v-application--is-ltr .pe-xl-7 {
    padding-right: 28px !important;
  }

  .v-application--is-rtl .pe-xl-7 {
    padding-left: 28px !important;
  }

  .v-application--is-ltr .pe-xl-8 {
    padding-right: 32px !important;
  }

  .v-application--is-rtl .pe-xl-8 {
    padding-left: 32px !important;
  }

  .v-application--is-ltr .pe-xl-9 {
    padding-right: 36px !important;
  }

  .v-application--is-rtl .pe-xl-9 {
    padding-left: 36px !important;
  }

  .v-application--is-ltr .pe-xl-10 {
    padding-right: 40px !important;
  }

  .v-application--is-rtl .pe-xl-10 {
    padding-left: 40px !important;
  }

  .v-application--is-ltr .pe-xl-11 {
    padding-right: 44px !important;
  }

  .v-application--is-rtl .pe-xl-11 {
    padding-left: 44px !important;
  }

  .v-application--is-ltr .pe-xl-12 {
    padding-right: 48px !important;
  }

  .v-application--is-rtl .pe-xl-12 {
    padding-left: 48px !important;
  }

  .v-application--is-ltr .pe-xl-13 {
    padding-right: 52px !important;
  }

  .v-application--is-rtl .pe-xl-13 {
    padding-left: 52px !important;
  }

  .v-application--is-ltr .pe-xl-14 {
    padding-right: 56px !important;
  }

  .v-application--is-rtl .pe-xl-14 {
    padding-left: 56px !important;
  }

  .v-application--is-ltr .pe-xl-15 {
    padding-right: 60px !important;
  }

  .v-application--is-rtl .pe-xl-15 {
    padding-left: 60px !important;
  }

  .v-application--is-ltr .pe-xl-16 {
    padding-right: 64px !important;
  }

  .v-application--is-rtl .pe-xl-16 {
    padding-left: 64px !important;
  }

  .v-application .text-xl-left {
    text-align: left !important;
  }

  .v-application .text-xl-right {
    text-align: right !important;
  }

  .v-application .text-xl-center {
    text-align: center !important;
  }

  .v-application .text-xl-justify {
    text-align: justify !important;
  }

  .v-application .text-xl-start {
    text-align: start !important;
  }

  .v-application .text-xl-end {
    text-align: end !important;
  }

  .v-application .text-xl-h1 {
    font-size: 6rem !important;
    font-weight: 300;
    line-height: 6rem;
    letter-spacing: -0.015625em !important;
    font-family: "Roboto", sans-serif !important;
  }

  .v-application .text-xl-h2 {
    font-size: 3.75rem !important;
    font-weight: 300;
    line-height: 3.75rem;
    letter-spacing: -0.0083333333em !important;
    font-family: "Roboto", sans-serif !important;
  }

  .v-application .text-xl-h3 {
    font-size: 3rem !important;
    font-weight: 400;
    line-height: 3.125rem;
    letter-spacing: normal !important;
    font-family: "Roboto", sans-serif !important;
  }

  .v-application .text-xl-h4 {
    font-size: 2.125rem !important;
    font-weight: 400;
    line-height: 2.5rem;
    letter-spacing: 0.0073529412em !important;
    font-family: "Roboto", sans-serif !important;
  }

  .v-application .text-xl-h5 {
    font-size: 1.5rem !important;
    font-weight: 400;
    line-height: 2rem;
    letter-spacing: normal !important;
    font-family: "Roboto", sans-serif !important;
  }

  .v-application .text-xl-h6 {
    font-size: 1.25rem !important;
    font-weight: 500;
    line-height: 2rem;
    letter-spacing: 0.0125em !important;
    font-family: "Roboto", sans-serif !important;
  }

  .v-application .text-xl-subtitle-1 {
    font-size: 1rem !important;
    font-weight: normal;
    line-height: 1.75rem;
    letter-spacing: 0.009375em !important;
    font-family: "Roboto", sans-serif !important;
  }

  .v-application .text-xl-subtitle-2 {
    font-size: 0.875rem !important;
    font-weight: 500;
    line-height: 1.375rem;
    letter-spacing: 0.0071428571em !important;
    font-family: "Roboto", sans-serif !important;
  }

  .v-application .text-xl-body-1 {
    font-size: 1rem !important;
    font-weight: 400;
    line-height: 1.5rem;
    letter-spacing: 0.03125em !important;
    font-family: "Roboto", sans-serif !important;
  }

  .v-application .text-xl-body-2 {
    font-size: 0.875rem !important;
    font-weight: 400;
    line-height: 1.25rem;
    letter-spacing: 0.0178571429em !important;
    font-family: "Roboto", sans-serif !important;
  }

  .v-application .text-xl-button {
    font-size: 0.875rem !important;
    font-weight: 500;
    line-height: 2.25rem;
    letter-spacing: 0.0892857143em !important;
    font-family: "Roboto", sans-serif !important;
    text-transform: uppercase !important;
  }

  .v-application .text-xl-caption {
    font-size: 0.75rem !important;
    font-weight: 400;
    line-height: 1.25rem;
    letter-spacing: 0.0333333333em !important;
    font-family: "Roboto", sans-serif !important;
  }

  .v-application .text-xl-overline {
    font-size: 0.75rem !important;
    font-weight: 500;
    line-height: 2rem;
    letter-spacing: 0.1666666667em !important;
    font-family: "Roboto", sans-serif !important;
    text-transform: uppercase !important;
  }
}
@media print {
  .v-application .d-print-none {
    display: none !important;
  }

  .v-application .d-print-inline {
    display: inline !important;
  }

  .v-application .d-print-inline-block {
    display: inline-block !important;
  }

  .v-application .d-print-block {
    display: block !important;
  }

  .v-application .d-print-table {
    display: table !important;
  }

  .v-application .d-print-table-row {
    display: table-row !important;
  }

  .v-application .d-print-table-cell {
    display: table-cell !important;
  }

  .v-application .d-print-flex {
    display: flex !important;
  }

  .v-application .d-print-inline-flex {
    display: inline-flex !important;
  }

  .v-application .float-print-none {
    float: none !important;
  }

  .v-application .float-print-left {
    float: left !important;
  }

  .v-application .float-print-right {
    float: right !important;
  }

  .v-application--is-rtl .float-print-end {
    float: left !important;
  }

  .v-application--is-rtl .float-print-start {
    float: right !important;
  }

  .v-application--is-ltr .float-print-end {
    float: right !important;
  }

  .v-application--is-ltr .float-print-start {
    float: left !important;
  }
}
/*------------------------------------------------------------------
 * * [Styles Globaux & Fond d'écran]
 * */
.theme--light.v-application {
  background-color: #F8FAFC !important;
}

.theme--dark.v-application {
  background-color: #0F172A !important;
}

/*------------------------------------------------------------------
 * * [Améliorations des Composants]
 * */
.v-btn {
  text-transform: none;
  font-weight: 600;
  letter-spacing: 0.5px;
  transition: background-color 0.15s ease, box-shadow 0.15s ease;
}
.v-btn:not(.v-btn--icon):not(.v-btn--text):not(.v-btn--fab) {
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important;
}
.v-btn:not(.v-btn--icon):not(.v-btn--text):not(.v-btn--fab):hover {
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.15) !important;
}
.v-btn:not(.v-btn--icon):not(.v-btn--text):not(.v-btn--fab):active {
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12) !important;
}

.v-card {
  border-radius: 12px !important;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.06), 0 1px 2px rgba(0, 0, 0, 0.04) !important;
  transition: box-shadow 0.15s ease;
}
.v-card:hover {
  box-shadow: 0 4px 6px rgba(0, 0, 0, 0.08), 0 2px 4px rgba(0, 0, 0, 0.06) !important;
}
.v-card .v-card__title {
  font-size: 1.15rem;
  font-weight: 600;
  letter-spacing: -0.2px;
  color: var(--v-primary-base);
}

.v-app-bar.v-toolbar.v-sheet {
  transition: background-color 0.4s ease-out, box-shadow 0.4s ease-out !important;
  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.07) !important;
}
.theme--light .v-app-bar.v-toolbar.v-sheet {
  background: rgba(234, 234, 234, 0.7) !important;
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
}
.theme--dark .v-app-bar.v-toolbar.v-sheet {
  background: rgba(30, 30, 30, 0.7) !important;
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
}
.v-app-bar .v-toolbar__title {
  font-weight: 600;
}
.v-app-bar .v-btn--icon:hover {
  background-color: rgba(0, 0, 0, 0.04);
}
.theme--dark .v-app-bar .v-btn--icon:hover {
  background-color: rgba(255, 255, 255, 0.06);
}

.v-text-field--outlined fieldset, .v-select--outlined fieldset, .v-autocomplete--outlined fieldset {
  border-radius: 12px !important;
  transition: all 0.3s ease;
}
.v-text-field--outlined:hover:not(.v-input--is-focused) fieldset, .v-select--outlined:hover:not(.v-input--is-focused) fieldset, .v-autocomplete--outlined:hover:not(.v-input--is-focused) fieldset {
  border-color: rgba(var(--v-primary-base-rgb), 0.4);
}
.v-text-field--outlined.v-input--is-focused fieldset, .v-select--outlined.v-input--is-focused fieldset, .v-autocomplete--outlined.v-input--is-focused fieldset {
  border-color: var(--v-primary-base) !important;
  border-width: 2px !important;
  box-shadow: 0 0 0 3px rgba(var(--v-primary-base-rgb), 0.1);
}

.v-data-table {
  border-radius: 12px !important;
  box-shadow: none !important;
  border: 1px solid rgba(0, 0, 0, 0.06);
}
.theme--dark .v-data-table {
  border: 1px solid rgba(255, 255, 255, 0.08);
}
.v-data-table thead th {
  font-size: 0.8rem !important;
  font-weight: 700 !important;
  text-transform: uppercase;
  letter-spacing: 0.8px !important;
  color: var(--v-secondary-text-base) !important;
  background-color: rgba(0, 0, 0, 0.02);
  padding-top: 16px !important;
  padding-bottom: 16px !important;
}
.theme--dark .v-data-table thead th {
  background-color: rgba(255, 255, 255, 0.03);
}
.v-data-table tbody tr {
  transition: background-color 0.12s ease;
}
.v-data-table tbody tr:hover {
  background-color: rgba(var(--v-primary-base-rgb), 0.03);
}
.v-data-table tbody tr td {
  font-size: 0.95rem !important;
  padding-top: 12px !important;
  padding-bottom: 12px !important;
}
.v-data-table .v-data-footer {
  border-top: 1px solid rgba(0, 0, 0, 0.06);
  padding: 12px 16px;
}
.theme--dark .v-data-table .v-data-footer {
  border-top: 1px solid rgba(255, 255, 255, 0.08);
}

.v-dialog > .v-card {
  border-radius: 12px !important;
  overflow: hidden;
}

::-webkit-scrollbar {
  width: 10px;
  height: 10px;
}

::-webkit-scrollbar-track {
  background: rgba(0, 0, 0, 0.03);
}
.theme--dark ::-webkit-scrollbar-track {
  background: rgba(255, 255, 255, 0.05);
}

::-webkit-scrollbar-thumb {
  background: rgba(0, 0, 0, 0.2);
  border-radius: 10px;
  transition: background 0.15s ease;
}
::-webkit-scrollbar-thumb:hover {
  background: rgba(0, 0, 0, 0.3);
}
.theme--dark ::-webkit-scrollbar-thumb {
  background: rgba(255, 255, 255, 0.3);
}
.theme--dark ::-webkit-scrollbar-thumb:hover {
  background: rgba(255, 255, 255, 0.4);
}

/*------------------------------------------------------------------
 * * [Amélioration du composant Breadcrumbs]
 * */
.v-breadcrumbs {
  padding: 10px 16px !important;
}
.v-breadcrumbs .v-breadcrumbs__item {
  font-size: 0.875rem;
  font-weight: 500;
  color: var(--v-secondary-text-base);
}
.v-breadcrumbs .v-breadcrumbs__item a {
  padding: 5px 10px;
  border-radius: 12px;
  transition: background-color 0.15s ease, color 0.15s ease;
  text-decoration: none;
  color: inherit;
}
.v-breadcrumbs .v-breadcrumbs__item a:hover {
  background-color: rgba(var(--v-primary-base-rgb), 0.08);
  color: var(--v-primary-base);
}
.v-breadcrumbs .v-breadcrumbs__item--disabled {
  padding: 5px 10px;
  border-radius: 12px;
  background-color: var(--v-primary-base);
  color: white !important;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12);
}
.v-breadcrumbs .v-breadcrumbs__divider {
  padding: 0 6px !important;
}
.v-breadcrumbs .v-breadcrumbs__divider .v-icon {
  font-size: 16px;
  opacity: 0.5;
}

/*------------------------------------------------------------------
 * * [Amélioration du composant Tabs]
 * */
.v-tabs-bar {
  background-color: transparent !important;
}

.v-tab {
  text-transform: none;
  font-weight: 600;
  font-size: 0.95rem;
  letter-spacing: 0.15px;
  color: rgba(0, 0, 0, 0.55);
  min-width: 90px;
  transition: color 0.15s ease;
}
.v-tab.v-tab--active {
  color: var(--v-primary-base) !important;
}
.theme--dark .v-tab {
  color: rgba(255, 255, 255, 0.65);
}
.theme--dark .v-tab.v-tab--active {
  color: var(--v-primary-base) !important;
}

.v-tabs-slider {
  border-radius: 3px;
  height: 3px !important;
  background-color: var(--v-primary-base) !important;
  transition: all 0.2s ease;
}

.v-card .v-tabs-items {
  border-radius: 0 0 12px 12px !important;
  background-color: white;
}
.theme--dark .v-card .v-tabs-items {
  background-color: #1E293B;
}

/*------------------------------------------------------------------
 * * [Classes utilitaires - بدون حركات مزعجة]
 * */
.smooth-bg {
  transition: background-color 0.15s ease;
}

.smooth-shadow {
  transition: box-shadow 0.15s ease;
}

.elevation-soft {
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.06), 0 1px 2px rgba(0, 0, 0, 0.04) !important;
}
/*!********************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./assets/frontend/app.vue?vue&type=style&index=0&id=816edcdc&lang=css& ***!
  \********************************************************************************************************************************************************************************************************************************************************************/

.theme--dark.v-application--is-ltr.v-application {
  background: rgba(0, 0, 0, 0.70) !important;
}
.theme--light.v-application--is-ltr.v-application {
  background: rgba(240, 240, 240, 0.75) !important;
}
#animated-bg {
  position: fixed;
  top: 0;
  left: 0;
  width: 100vw;
  height: 100vh;
  z-index: -1;
  background: rgba(236, 233, 233, 0.9); /* خلفية فاتحة شبه شفافة */
}
.sf-display-none {
  display: block !important;
}


/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5jc3MiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQXFOQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQUNBO0FBRUE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBQ0E7QUFFQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQUNBO0FBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBQ0E7QUFFQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFDQTtBQUVBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUVBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBQ0E7O0FBRUE7QUFDQTtFQUNBO0VBQ0E7RUFDQTtBQUNBO0FBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFDQTtBQUNBO0VBQ0E7QUFDQTtBQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFDQTtBQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFFQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUVBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBQ0E7QUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQUNBO0FBQ0E7QUFBQTs7Ozs7O0FDcE5BO0VBQ0E7QUFDQTtBQUVBO0VBQ0E7QUFDQTs7Ozs7O0FDb0RBO0VBQ0E7QUFDQTs7Ozs7O0FDSkE7RUFDQTtFQUNBO0FBQ0E7Ozs7OztBQ0VBO0VBQ0E7RUFDQTtBQUNBOzs7Ozs7QUN4QkE7RUFDQTtFQUNBO0FBQ0E7Ozs7OztBQ29SQTtFQUNBO0FBQ0E7QUFFQTtFQUNBO0FBQ0E7Ozs7OztBQ2tEQTtFQUNBO0FBQ0E7QUFFQTtFQUNBO0FBQ0E7QUFFQTtFQUNBO0FBQ0E7QUFFQTtFQUNBO0FBQ0E7QUFFQTtFQUNBO0FBQ0E7QUFFQTtFQUNBO0FBQ0E7QUFFQTtFQUNBO0FBQ0E7Ozs7OztBQ25kQTtBQUNBO0VBQ0E7QUFDQTs7QUFFQTtBQUNBOzs7O0VBSUE7QUFDQTs7QUFFQTtBQUNBOzs7RUFHQTtBQUNBOztBQUVBO0FBQ0E7RUFDQTtFQUNBO0FBQ0E7O0FBRUE7QUFDQTs7RUFFQTtBQUNBO0FBRUE7O0VBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7SUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtFQUNBO3NDQUNBO0VBQ0E7RUFDQTtBQUNBO0FBRUE7RUFDQTtzQ0FDQTtBQUNBOztBQUVBO0FBQ0E7RUFDQTtFQUNBO0FBQ0E7O0FBRUE7QUFDQTs7O0VBR0E7QUFDQTs7Ozs7O0FDakZBO0FBQ0E7RUFDQTtBQUNBOztBQUVBO0FBQ0E7Ozs7RUFJQTtBQUNBOztBQUVBO0FBQ0E7OztFQUdBO0FBQ0E7O0FBRUE7QUFDQTtBQUVBOztJQUVBO0lBQ0E7SUFDQTtBQUNBO0FBRUE7O0lBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7RUFDQTtFQUNBO0FBQ0E7O0FBRUE7QUFDQTs7RUFFQTtBQUNBO0FBRUE7O0VBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7SUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtFQUNBO3NDQUNBO0VBQ0E7RUFDQTtBQUNBO0FBRUE7RUFDQTtzQ0FDQTtBQUNBOztBQUVBO0FBQ0E7OztFQUdBO0FBQ0E7Ozs7OztBQ21iQTtFQUNBO0FBQ0E7QUFFQTtFQUNBO0FBQ0E7Ozs7OztBQzVFQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBQ0E7O0FBRUE7QUFDQTtFQUNBO0VBQ0E7QUFDQTtBQUVBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFDQTs7Ozs7O0FDbGlCQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFDQTtBQUVBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBQ0E7QUFFQTtFQUNBO0VBQ0E7QUFDQTtBQUVBO0VBQ0E7RUFDQTtFQUNBO0FBQ0E7QUFFQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBQ0E7Ozs7O0FDakVBO0VBQ0U7RUFDQTtFQUNBO0FBQUY7QUFLQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFGRjs7QUFLQTtBQUNBO0FBQ0U7SUFDRTtJQUNBO0lBQ0E7QUFGRjtBQUNGO0FBS0E7QUFHRTs7OztFQUtFO0FBTko7QUFTRTtFQUNFO0FBUEosQzs7Ozs7QUMweUJBO0VBQ0E7RUFDQTtFQUNBO0FBQ0E7QUFFQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQUNBO0FBRUE7O0VBRUE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQUNBO0FBRUE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBQ0E7QUFFQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFDQTtBQUVBO0VBQ0E7RUFDQTtFQUNBO0FBQ0E7QUFFQTtFQUNBO0FBQ0E7QUFFQTtFQUNBO0VBQ0E7QUFDQTtBQUVBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFFQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0VBRUE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztFQUVBO0VBQ0E7RUFDQTtFQUNBO0FBQ0E7O0FBRUE7QUFDQTtFQUNBO0VBQ0E7QUFDQTs7QUFFQTtBQUNBO0VBQ0E7RUFDQTtBQUNBOztBQUVBO0FBQ0E7RUFDQTtFQUNBO0FBQ0E7QUFFQTtFQUNBO0FBQ0E7SUFDQTtBQUNBO0FBQ0E7SUFDQTtBQUNBOztFQUVBO0FBQ0E7O0lBRUE7QUFDQTtBQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7QUFDQTs7RUFFQTtBQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7QUFDQTtBQUVBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7QUFDQTs7RUFFQTtBQUNBOztJQUVBO0lBQ0E7SUFDQTtJQUNBO0FBQ0E7O0VBRUE7QUFDQTtJQUNBO0lBQ0E7SUFDQTtBQUNBOztFQUVBO0FBQ0E7SUFDQTtBQUNBOztFQUVBO0FBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7QUFDQTtBQUNBO0lBQ0E7QUFDQTtBQUNBOzs7Ozs7QUNycUJBO0FBQ0E7SUFDQTtJQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7SUFDQTtJQUNBO0lBQ0E7QUFDQTs7Ozs7O0FDa0ZBO0VBQ0E7RUFDQTs7RUFFQTtFQUNBO0VBQ0E7RUFDQTtBQUNBO0FBRUE7O0VBRUE7RUFDQTtBQUNBO0FBRUE7RUFDQTtBQUNBO0FBRUE7RUFDQTtBQUNBO0FBRUE7RUFDQTtFQUNBO0FBQ0E7QUFFQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFDQTtBQUVBO0VBQ0E7QUFDQTtBQUVBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQUNBO0FBRUE7RUFDQTtBQUNBOzs7OztBQ3RlQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFBRjtBQUdBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFBRjtBQUdBO0FBQ0U7SUFDRTtBQUFGO0FBR0E7SUFDRTtBQURGO0FBSUE7SUFDRTtBQUZGO0FBQ0Y7QUFLQTtFQUNFO0VBQ0E7QUFIRjs7QUFNQTtBQUNBO0VBQ0U7RUFDQTtFQUNBO0FBSEY7QUFNQTtFQUNFO0FBSEY7QUFNQTtFQUNFO0VBQ0E7QUFIRjtBQUtFO0VBQ0U7QUFISjs7QUFPQTtBQUNBO0VBQ0U7QUFKRjtBQU9BO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFKRjtBQU1FO0VBQ0U7RUFDQTtBQUpKO0FBUUE7RUFDRTtBQUxGO0FBT0U7RUFDRTtBQUxKO0FBU0E7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFORjtBQVFFO0VBQ0U7RUFDQTtBQU5KO0FBU0U7RUFDRTtBQVBKO0FBV0E7RUFDRTtBQVJGO0FBV0E7RUFDRTtBQVJGO0FBV0E7RUFDRTtBQVJGO0FBV0E7RUFDRTtBQVJGO0FBV0E7QUFDRTtJQUNFO0lBQ0E7QUFSRjtBQVdBO0lBQ0U7SUFDQTtBQVJGO0FBV0E7SUFDRTtBQVJGO0FBQ0YsQzs7Ozs7QUNyREE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBQ0E7Ozs7OztBQ3lGQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFDQTs7Ozs7O0FDa05BO0lBQ0E7SUFDQTtJQUNBO0FBQ0E7O0FBRUE7QUFDQTtJQUNBO0FBQ0E7QUFFQTtJQUNBO0FBQ0E7O0FBRUE7QUFDQTtJQUNBO0FBQ0E7O0FBRUE7QUFDQTtJQUNBO0FBQ0E7O0FBRUE7QUFDQTtJQUNBO0FBQ0E7Ozs7OztBQ3VEQTtJQUNBO0lBQ0E7QUFDQTs7Ozs7O0FDMU1BO0lBQ0E7QUFDQTtBQUVBO0lBQ0E7QUFDQTs7Ozs7O0FDcWhCQTtJQUNBO0FBQ0E7QUFFQTtJQUNBO0FBQ0E7QUFFQTtJQUNBO0lBQ0E7QUFDQTtBQUVBO0lBQ0E7SUFDQTtBQUNBO0FBRUE7SUFDQTtJQUNBO0FBQ0E7Ozs7OztBQ3Z5QkE7SUFDQTtBQUNBOzs7Ozs7QUM2ZkE7QUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFDQTtBQUVBO0VBQ0E7RUFDQTtBQUNBOztBQUVBO0FBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQUNBO0FBRUE7RUFDQTtBQUNBO0FBRUE7RUFDQTtFQUNBO0VBQ0E7QUFDQTtBQUVBO0VBQ0E7QUFDQTtBQUVBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFDQTtBQUVBO0VBQ0E7QUFDQTs7QUFFQTtBQUNBO0VBQ0E7QUFDQTtBQUVBO0FBQ0E7SUFDQTtJQUNBO0FBQ0E7QUFFQTtJQUNBO0lBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7RUFDQTtBQUNBO0FBRUE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBQ0E7QUFFQTtFQUNBO0VBQ0E7QUFDQTtBQUVBO0VBQ0E7RUFDQTtBQUNBO0FBRUE7RUFDQTtBQUNBO0FBRUE7RUFDQTtBQUNBO0FBRUE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBQ0E7QUFFQTtFQUNBO0FBQ0E7QUFFQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQUNBO0FBRUE7RUFDQTtBQUNBO0FBRUE7RUFDQTtFQUNBO0VBQ0E7QUFDQTtBQUVBO0VBQ0E7QUFDQTs7QUFFQTtBQUNBO0VBQ0E7RUFDQTtBQUNBO0FBRUE7RUFDQTtBQUNBOztBQUVBO0FBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFDQTtBQUVBO0VBQ0E7QUFDQTtBQUVBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQUNBO0FBRUE7RUFDQTtBQUNBO0FBRUE7RUFDQTtFQUNBO0VBQ0E7QUFDQTtBQUVBO0VBQ0E7QUFDQTs7QUFFQTtBQUNBO0VBQ0E7QUFDQTtBQUVBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFDQTtBQUVBO0VBQ0E7RUFDQTtFQUNBO0FBQ0E7QUFFQTtFQUNBO0FBQ0E7QUFFQTtFQUNBO0VBQ0E7RUFDQTtBQUNBO0FBRUE7RUFDQTtBQUNBOztBQUVBO0FBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBQ0E7QUFFQTtFQUNBO0FBQ0E7QUFFQTtFQUNBO0VBQ0E7RUFDQTtBQUNBO0FBRUE7RUFDQTtFQUNBO0FBQ0E7QUFFQTtFQUNBO0VBQ0E7RUFDQTtBQUNBO0FBRUE7RUFDQTtFQUNBO0FBQ0E7QUFFQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBQ0E7QUFFQTtFQUNBO0VBQ0E7QUFDQTtBQUVBO0FBRUE7O0lBRUE7QUFDQTtBQUVBO0lBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQUNBO0FBRUE7RUFDQTtFQUNBO0FBQ0E7QUFFQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBQ0E7QUFFQTtFQUNBO0VBQ0E7QUFDQTtBQUVBO0VBQ0E7RUFDQTtBQUNBO0FBRUE7RUFDQTtBQUNBO0FBRUE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFDQTtBQUVBO0VBQ0E7QUFDQTtBQUVBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFDQTtBQUVBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQUNBO0FBRUE7RUFDQTtBQUNBO0FBRUE7RUFDQTtFQUNBO0FBQ0E7QUFFQTtFQUNBO0FBQ0E7QUFFQTtFQUNBO0FBQ0E7QUFFQTtFQUNBO0FBQ0E7QUFFQTtFQUNBO0FBQ0E7QUFFQTtFQUNBO0FBQ0E7QUFFQTtFQUNBO0VBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7SUFDQTtJQUNBO0lBQ0E7QUFDQTtBQUVBO0lBQ0E7QUFDQTtBQUVBO0lBQ0E7SUFDQTtBQUNBO0FBRUE7SUFDQTtBQUNBO0FBQ0E7Ozs7OztBQ3BrQkE7QUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQUNBO0FBRUE7RUFDQTtFQUNBO0FBQ0E7O0FBRUE7QUFDQTtFQUNBO0FBQ0E7O0FBRUE7QUFDQTtFQUNBO0VBQ0E7RUFDQTtBQUNBO0FBRUE7RUFDQTtBQUNBO0FBRUE7RUFDQTtBQUNBOztBQUVBO0FBQ0E7RUFDQTtFQUNBO0FBQ0E7QUFFQTtFQUNBO0VBQ0E7QUFDQTs7QUFFQTtBQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFDQTtBQUVBOztFQUVBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFDQTtBQUVBOztFQUVBO0VBQ0E7RUFDQTtBQUNBOztBQUVBO0FBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFDQTtBQUVBO0VBQ0E7QUFDQTs7QUFFQTtBQUNBO0VBQ0E7RUFDQTtFQUNBO0FBQ0E7QUFFQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBQ0E7QUFFQTtFQUNBO0FBQ0E7QUFFQTtFQUNBO0FBQ0E7O0FBRUE7QUFDQTtFQUNBO0VBQ0E7QUFDQTtBQUVBO0VBQ0E7RUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtJQUNBO0lBQ0E7QUFDQTtBQUVBO0lBQ0E7QUFDQTtBQUVBO0lBQ0E7SUFDQTtBQUNBO0FBRUE7SUFDQTtBQUNBO0FBRUE7SUFDQTtBQUNBO0FBQ0E7Ozs7OztBQ3RPQTtBQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFDQTtBQUVBO0VBQ0E7RUFDQTtBQUNBO0FBRUE7RUFDQTtFQUNBO0FBQ0E7QUFFQTtFQUNBO0FBQ0E7Ozs7OztBQzlJQTtBQUNBOztFQUVBO0VBQ0E7QUFDQTs7QUFFQTtBQUNBOztFQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0lBQ0E7QUFDQTtBQUVBO0lBQ0E7QUFDQTtBQUVBO0lBQ0E7QUFDQTtBQUVBO0lBQ0E7QUFDQTtBQUVBO0lBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtJQUNBO0FBQ0E7QUFFQTtJQUNBO0FBQ0E7QUFFQTtJQUNBO0FBQ0E7QUFDQTs7Ozs7O0FDckNBO0VBQ0E7RUFDQTtFQUNBO0FBQ0E7QUFFQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBQ0E7Ozs7OztBQ3FRQTtJQUNBO0lBQ0E7SUFDQTtBQUNBOzs7Ozs7QUMxU0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtBQUNBO0FBRUE7SUFDQTtJQUNBO0lBQ0E7QUFDQTs7QUFFQTtBQUNBO0lBQ0E7SUFDQTtJQUNBO0FBQ0E7QUFFQTtJQUNBO0lBQ0E7QUFDQTtBQUVBO0lBQ0E7SUFDQTtJQUNBO0FBQ0E7QUFFQTtJQUNBO0lBQ0E7QUFDQTs7QUFFQTtBQUNBO0lBQ0E7SUFDQTtJQUNBO0FBQ0E7QUFFQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0FBQ0E7QUFFQTtJQUNBO0lBQ0E7QUFDQTtBQUVBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7QUFDQTtBQUVBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0FBQ0E7QUFFQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0FBQ0E7QUFFQTtJQUNBO0lBQ0E7SUFDQTtBQUNBOztBQUVBO0FBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtBQUNBO0FBRUE7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0FBQ0E7QUFFQTtJQUNBO0FBQ0E7QUFFQTtJQUNBO0FBQ0E7QUFFQTtJQUNBO0FBQ0E7QUFFQTtJQUNBO0lBQ0E7SUFDQTtBQUNBO0FBRUE7SUFDQTtBQUNBO0FBRUE7SUFDQTtBQUNBO0FBRUE7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0FBQ0E7O0FBRUE7QUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0FBQ0E7O0FBRUE7QUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtBQUNBO0FBRUE7SUFDQTtBQUNBO0FBRUE7SUFDQTtBQUNBO0FBRUE7SUFDQTtBQUNBOztBQUVBO0FBQ0E7SUFDQTtBQUNBOztBQUVBO0FBQ0E7SUFDQTtJQUNBO0FBQ0E7QUFFQTtJQUNBO0lBQ0E7QUFDQTtBQUVBO0lBQ0E7QUFDQTtBQUVBO0lBQ0E7QUFDQTtBQUVBO0lBQ0E7QUFDQTtBQUVBO0lBQ0E7QUFDQTtBQUVBO0lBQ0E7QUFDQTtBQUVBO0lBQ0E7QUFDQTtBQUVBO0lBQ0E7QUFDQTtBQUVBO0lBQ0E7QUFDQTtBQUVBO0lBQ0E7QUFDQTtBQUVBO0lBQ0E7QUFDQTtBQUVBO0lBQ0E7QUFDQTtBQUVBO0lBQ0E7QUFDQTtBQUVBO0lBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7UUFDQTtBQUNBO0FBRUE7UUFDQTtBQUNBO0FBRUE7UUFDQTtBQUNBO0FBRUE7UUFDQTtBQUNBO0FBQ0E7Ozs7OztBQzFRQTtFQUNBO0VBQ0E7RUFDQTtBQUNBO0FBRUE7RUFDQTtBQUNBO0FBRUE7RUFDQTtFQUNBO0FBQ0E7QUFFQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQUNBO0FBRUE7RUFDQTtBQUNBOzs7Ozs7O0FDeEZBO0VBQ0E7RUFDQTtBQUNBO0FBRUE7RUFDQTtBQUNBO0FBRUE7RUFDQTtFQUNBO0FBQ0E7QUFFQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQUNBO0FBRUE7RUFDQTtBQUNBOzs7OztBQzVFSTtFQUNFO0FBRk47QUFPQTtFQUNFO0VBQ0E7RUFDQTtBQUpGO0FBU0E7O0VBRUU7QUFORjtBQVNBO0VBQ0U7RUFDQTtBQU5GO0FBVUE7RUFDRTtBQVBGO0FBV0E7RUFDRTtFQUNBO0FBUkY7QUFVRTtFQUNFO0FBUko7QUFZQTtFQUVFO0FBVkY7QUFZRTtFQUNFO0FBVko7QUFjQTtFQUNFO0VBQ0E7QUFYRixDOzs7OztBQzhOQTtJQUNBO0lBQ0E7SUFDQTtBQUNBOzs7Ozs7QUNyT0E7RUFDQTtFQUNBO0VBQ0E7QUFDQTtBQUNBO0VBQ0E7QUFDQTs7Ozs7O0FDK1RBO0VBQ0E7QUFDQTs7Ozs7QUMxVkE7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFwQkY7QUFxQkU7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQW5CSjtBQW9CSTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0FBbEJOO0FBb0JJO0VBQ0U7QUFsQk47QUFvQkk7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBbEJOO0FBb0JJO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBbEJOO0FBb0JJO0VBQ0U7QUFsQk47QUFvQkk7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBbEJOO0FBb0JJO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFsQk47QUFvQkk7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQWxCTjtBQW9CSTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0FBbEJOO0FBb0JJO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7QUFsQk47QUFvQkk7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQWxCTjtBQW9CSTtFQUNFO0FBbEJOO0FBb0JJO0VBQ0U7QUFsQk47QUFvQkk7RUFDRTtFQUNBO0VBQ0E7QUFsQk47QUFtQk07RUFDRTtBQWpCUjtBQW1CTTtFQUNFO0FBakJSO0FBcUJFO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQW5CSjtBQXRISTtBQThIRjtJQWFJO0FBakJKO0FBQ0Y7QUFrQkk7RUFDRTtFQUNBO0FBaEJOO0FBa0JJO0VBQ0U7RUFDQTtBQWhCTjtBQWtCSTtFQUNFO0VBQ0E7RUFDQTtBQWhCTjtBQWtCSTtFQUNFO0FBaEJOO0FBa0JJO0VBQ0U7QUFoQk47QUFrQkk7RUFDRTtFQUNBO0VBQ0E7QUFoQk47QUFrQkk7RUFDRTtBQWhCTjtBQWtCSTtFQUNFO0FBaEJOO0FBa0JJO0VBQ0U7QUFoQk47QUE1Skk7QUE4SEY7SUFpREk7SUFDQTtBQWZKO0FBQ0Y7QUFnQkk7RUFDRTtFQUNBO0VBQ0E7RUFDQTtBQWROO0FBZU07RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQWJSO0FBakxJO0FBdUxFO0lBU0k7QUFYUjtBQUNGO0FBWVE7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBVlY7QUFZUTtFQUNFO0VBQ0E7RUFDQTtBQVZWO0FBYVU7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQVhaO0FBWVk7RUFDRTtBQVZkO0FBYVU7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBWFo7QUFnQlU7RUFDRTtFQUNBO0FBZFo7QUFvQkU7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBbEJKO0FBNU9JO0FBc1BGO0lBVUk7QUFoQko7QUFDRjtBQWtCRTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBaEJKO0FBa0JFO0VBQ0U7RUFDQTtBQWhCSjtBQWlCSTtFQUNFO0FBZk47QUFpQkk7RUFDRTtBQWZOO0FBZ0JNO0VBRUU7RUFDQTtBQWZSO0FBcUJNO0VBQ0U7QUFuQlI7QUF5Qk07RUFDRTtFQUFjO0VBQ2Q7RUFDQTtFQUNBO0FBdEJSO0FBeUJJO0VBQ0U7QUF2Qk47QUE0Qk07RUFDRTtBQTFCUjtBQTNSSTtBQW9URTtJQUdJO0FBeEJSO0FBQ0Y7QUEwQk07RUFDRTtBQXhCUjtBQTZCSTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBM0JOO0FBNVNJO0FBZ1VBO0lBU0k7SUFDQTtBQXpCTjtBQUNGO0FBMEJNO0VBQ0U7RUFDQTtFQUNBO0FBeEJSO0FBeUJRO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7QUF2QlY7QUE3VEk7QUFnVkk7SUFNSTtBQXJCVjtBQUNGO0FBMEJNO0VBQ0U7QUF4QlI7QUFyVUk7QUE0VkU7SUFHSTtBQXRCUjtBQUNGO0FBd0JNO0VBQ0U7QUF0QlI7QUEwQkU7RUFDRTtFQUNBO0VBQ0E7QUF4Qko7QUEwQkU7RUFDRTtFQUNBO0VBQ0E7RUFDQTtBQXhCSjtBQTJCSTs7RUFFRTtBQXpCTjtBQTRCRTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUExQko7QUF6V0k7QUF3WEY7SUFhSTtJQUNBO0FBeEJKO0FBQ0Y7QUF5Qkk7RUFDRTtFQUNBO0FBdkJOO0FBeUJJO0VBQ0U7QUF2Qk47QUF5Qkk7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBdkJOO0FBd0JNO0VBQ0U7RUFDQTtBQXRCUjtBQXlCSTtFQUNFO0FBdkJOO0FBeUJJO0VBQ0U7RUFDQTtBQXZCTjtBQXhZSTtBQTZaQTtJQUlJO0FBckJOO0FBQ0Y7QUF3QkU7RUFDRTtBQXRCSjtBQXdCRTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUF0Qko7QUF5Qkk7RUFFRTtFQUNBO0FBeEJOO0FBOVpJO0FBbWJBO0lBS0k7SUFDQTtBQXRCTjtBQUNGO0FBeUJFO0VBQ0U7RUFDQTtFQUNBO0FBdkJKO0FBd0JJO0VBQ0U7RUFDQTtBQXRCTjtBQXVCTTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQXJCUjtBQXNCUTtFQUNFO0FBcEJWO0FBeUJFO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBSUE7QUExQko7QUF1Qkk7RUFDRTtBQXJCTjtBQXdCSTtFQUNFO0FBdEJOO0FBd0JJO0VBQ0U7RUFDQTtFQUVBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBdkJOO0FBeUJJO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQXZCTjtBQTJCQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBeEJGO0FBeUJFO0VBQ0U7RUFDQTtBQXZCSjtBQXlCRTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUF2Qko7QUE3Zkk7QUFtZ0JGO0lBbUJJO0lBQ0E7SUFDQTtBQXJCSjtBQUNGO0FBc0JJO0VBQ0U7RUFDQTtBQXBCTjtBQXNCSTtFQUNFO0FBcEJOO0FBd0JBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBckJGO0FBN2hCSTtBQW1pQko7SUEwQkk7QUE1QkY7QUFDRjtBQTZCRTtFQUNFO0VBQ0E7QUEzQko7QUE2QkU7RUFDRTtFQUNBO0VBQ0E7QUEzQko7QUEzaUJJO0FBbWtCRjtJQUtJO0lBQ0E7QUF6Qko7QUFDRjtBQTJCRTtFQUNFO0VBQ0E7RUFDQTtBQXpCSjtBQXRqQkk7QUE0a0JGO0lBS0k7QUF2Qko7QUFDRjtBQXdCSTtFQUNFO0FBdEJOO0FBdUJNO0VBQ0U7QUFyQlI7QUEwQkE7O0VBRUU7QUF2QkY7QUF5QkE7O0VBRUU7QUF0QkY7QUF3QkE7O0VBRUU7QUFyQkY7QUF1QkE7O0VBRUU7QUFwQkY7QUFzQkE7RUFDRTtFQUNBO0VBQ0E7RUFDQTtBQW5CRjtBQW9CRTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBbEJKO0FBcUJBO0FBQ0U7SUFDRTtBQWxCRjtBQUNGLEM7Ozs7O0FDNWZBO0VBQ0E7QUFDQTtBQUNBO0VBQ0E7RUFDQTtBQUNBOzs7Ozs7QUM2SUE7QUFDQTtFQUNBO0FBQ0E7QUFFQTtFQUNBO0FBQ0E7Ozs7OztBQzNJQTtBQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFDQTs7QUFFQTtBQUNBOztFQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0lBQ0E7QUFDQTtBQUVBO0lBQ0E7QUFDQTtBQUVBO0lBQ0E7QUFDQTtBQUVBO0lBQ0E7QUFDQTtBQUVBO0lBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtJQUNBO0FBQ0E7QUFFQTtJQUNBO0FBQ0E7QUFFQTtJQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFDQTtBQUVBO0VBQ0E7RUFDQTtBQUNBO0FBRUE7RUFDQTtBQUNBOztBQUVBO0FBQ0E7RUFDQTtFQUNBO0FBQ0E7Ozs7OztBQ3BJQTtBQUNBO0VBQ0E7QUFDQTtBQUVBO0VBQ0E7QUFDQTs7Ozs7O0FDKzRCQTtBQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFDQTs7QUFFQTtBQUNBOztFQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0lBQ0E7QUFDQTtBQUVBO0lBQ0E7QUFDQTtBQUVBO0lBQ0E7QUFDQTtBQUVBO0lBQ0E7QUFDQTtBQUVBO0lBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtJQUNBO0FBQ0E7QUFFQTtJQUNBO0FBQ0E7QUFFQTtJQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFDQTtBQUVBO0VBQ0E7RUFDQTtBQUNBO0FBRUE7RUFDQTtBQUNBOztBQUVBO0FBQ0E7RUFDQTtFQUNBO0FBQ0E7Ozs7OztBQ2pqQkE7RUFDQTtFQUNBO0FBQ0E7QUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDQTtBQUNBO0FBQ0E7RUFDQTtBQUNBOzs7Ozs7QUMvVUE7RUFDQTtFQUNBO0FBQ0E7QUFFQTtFQUNBO0FBQ0E7Ozs7O0FDeE5BO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7QUFBRjtBQUVFO0VBQ0U7RUFDQTtBQUFKO0FBSUE7RUFDRTtFQUNBO0FBREY7QUFJQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFERjtBQUdFO0VBQ0U7QUFESjtBQUlFO0VBQ0U7QUFGSjtBQU1BO0VBQ0U7RUFDQTtBQUhGO0FBS0U7RUFDRTtBQUhKO0FBT0E7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBSkY7QUFNRTtFQUNFO0VBQ0E7QUFKSjtBQVFBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBTEY7QUFPRTtFQUNFO0VBQ0E7QUFMSjtBQVNBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBTkY7QUFRRTtFQUNFO0FBTko7QUFTRTtFQUNFO0VBQ0E7QUFQSjtBQVdBO0VBQ0U7RUFDQTtBQVJGO0FBV0E7QUFDRTtJQUNFO0FBUkY7QUFXQTtJQUNFO0FBUkY7QUFDRjtBQVdBO0FBQ0U7SUFDRTtBQVRGO0FBWUE7SUFDRTtBQVRGO0FBWUE7SUFDRTtJQUNBO0lBQ0E7QUFURjtBQUNGLEM7Ozs7QUNsSEk7RUFDSTtFQUNBO0FBRFI7QUFHUTtFQUNJO0FBRFosQzs7Ozs7QUMyS0E7RUFDQTtBQUNBO0FBRUE7RUFDQTtFQUNBO0FBQ0E7QUFFQTtFQUNBO0FBQ0E7QUFFQTtBQUNBO0lBQ0E7QUFDQTtBQUVBO0lBQ0E7QUFDQTtBQUNBOzs7Ozs7QUNpSkE7SUFDQTtJQUNBO0lBQ0E7QUFDQTtBQUVBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtBQUNBO0FBRUE7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtBQUNBO0FBRUE7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtBQUNBOztBQUVBO0FBQ0E7SUFDQTtJQUNBO0lBQ0E7QUFDQTtBQUVBO0lBQ0E7QUFDQTs7QUFFQTtBQUNBO0lBQ0E7SUFDQTtBQUNBOztBQUVBO0FBQ0E7SUFDQTtJQUNBO0lBQ0E7QUFDQTtBQUVBO0lBQ0E7QUFDQTs7QUFFQTtBQUNBO0lBQ0E7SUFDQTtJQUNBO0FBQ0E7QUFFQTtJQUNBO0FBQ0E7O0FBRUE7QUFDQTtJQUNBO0lBQ0E7SUFDQTtBQUNBO0FBRUE7SUFDQTtBQUNBOztBQUVBO0FBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtBQUNBO0FBRUE7SUFDQTtBQUNBOztBQUVBO0FBQ0E7SUFDQTtBQUNBO0FBRUE7SUFDQTtBQUNBO0FBRUE7SUFDQTtBQUNBOztBQUVBO0FBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtJQUNBO0lBQ0E7SUFDQTtBQUNBO0FBRUE7SUFDQTtJQUNBO0FBQ0E7O0FBRUE7QUFDQTtJQUNBO0lBQ0E7QUFDQTs7QUFFQTtBQUNBO0lBQ0E7SUFDQTtBQUNBO0FBRUE7SUFDQTtBQUNBOztBQUVBO0FBQ0E7SUFDQTtJQUNBO0FBQ0E7QUFFQTtJQUNBO0FBQ0E7O0FBRUE7QUFDQTtJQUNBO0lBQ0E7QUFDQTtBQUVBO0lBQ0E7QUFDQTs7QUFFQTtBQUNBO0lBQ0E7SUFDQTtJQUNBO0FBQ0E7QUFFQTtJQUNBO0FBQ0E7O0FBRUE7QUFDQTtJQUNBO0lBQ0E7QUFDQTtBQUVBO0lBQ0E7QUFDQTs7QUFFQTtBQUNBO0lBQ0E7SUFDQTtBQUNBO0FBRUE7SUFDQTtBQUNBOztBQUVBO0FBQ0E7SUFDQTtJQUNBO0lBQ0E7QUFDQTtBQUVBO0lBQ0E7SUFDQTtJQUNBO0FBQ0E7QUFFQTtJQUNBO0FBQ0E7Ozs7O0FDbGpCQTtFQUNFO0FBREY7QUFLQTtFQUNFO0VBQ0E7RUFDQTtBQUZGO0FBTUE7RUFDRTtFQUNBO0FBSEY7QUFLRTtFQUNFO0FBSEo7QUFRQTtFQUNFO0FBTEY7QUFRQTtFQUNFO0FBTEYsQzs7Ozs7QUMrT0E7O0VBRUE7QUFDQTtBQUVBO0VBQ0E7QUFDQTs7Ozs7O0FDL09BO0VBQ0E7RUFDQTtFQUNBO0FBQ0E7Ozs7Ozs7QUNvUEE7Q0FDQTtDQUNBO0NBQ0E7QUFDQTtBQUlBO0NBQ0E7QUFDQTtBQUVBO0NBQ0E7QUFDQTtBQUVBO0NBQ0E7Q0FDQTtBQUNBO0FBRUE7Q0FDQTtBQUNBO0FBRUE7Q0FDQTtBQUNBO0FBRUE7Q0FDQTtBQUNBO0FBRUE7Q0FDQTtDQUNBO0NBQ0E7QUFDQTtBQUVBO0NBQ0E7Q0FDQTtBQUNBO0FBRUE7Q0FDQTtBQUNBO0FBRUE7Q0FDQTtBQUNBO0FBRUE7Q0FDQTtBQUNBO0FBRUE7Q0FDQTtBQUNBO0FBRUE7Q0FDQTtBQUNBO0FBRUE7Q0FDQTtBQUVBOztBQUVBO0FBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtBQUNBOztBQUVBO0FBQ0E7O0NBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7RUFDQTtBQUNBO0FBRUE7RUFDQTtBQUNBO0FBRUE7RUFDQTtBQUNBO0FBRUE7RUFDQTtBQUNBO0FBRUE7RUFDQTtBQUNBO0FBQ0E7Ozs7O0FDL1hBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBREY7QUFJQTtFQUNFO0VBQ0E7RUFDQTtFQUNBLG1IQUNFO0VBR0Y7RUFDQTtFQUNBO0FBSkY7O0FBT0E7QUFDQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0FBSkY7QUFPQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQUpGO0FBT0E7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFKRjs7QUFPQTtBQUNBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7QUFKRjtBQU9BO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSwwSEFDRTtFQUdGO0VBQ0E7RUFDQTtBQVBGO0FBU0U7RUFDRTtFQUNBLG9GQUNFO0FBUk47QUFZRTtFQUNFO0VBQ0E7QUFWSjtBQWNBO0VBQ0U7RUFDQTtBQVhGO0FBY0E7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBWEY7O0FBY0E7QUFDQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBWEY7QUFjQTtFQUNFO0FBWEY7QUFjQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQVhGO0FBY0E7RUFDRTtFQUNBO0VBQ0E7RUFDQTtBQVhGOztBQWNBO0FBQ0E7RUFDRTtFQUNBO0VBQ0E7RUFDQTtBQVhGOztBQWNBO0FBQ0E7RUFDRTtBQVhGO0FBY0E7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQVhGO0FBY0E7RUFDRTtFQUNBO0VBQ0EseUhBQ0U7RUFHRjtFQUNBO0VBQ0E7QUFkRjtBQWlCQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBZEY7QUFpQkE7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBZEY7O0FBaUJBO0FBQ0E7RUFDRTtFQUNBO0VBQ0E7RUFDQSw2RUFDRTtFQUVGO0VBQ0E7RUFDQTtFQUNBO0FBaEJGOztBQW1CQTtBQUNBO0VBQ0U7RUFDQTtFQUNBO0FBaEJGO0FBbUJBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFoQkY7O0FBbUJBO0FBQ0E7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBaEJGO0FBbUJBO0VBQ0U7QUFoQkY7QUFtQkE7RUFDRTtBQWhCRjtBQW1CQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFoQkY7QUFtQkE7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBaEJGO0FBbUJBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQWhCRjtBQW1CQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFoQkY7QUFtQkE7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBaEJGO0FBbUJBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFoQkY7O0FBbUJBO0FBQ0E7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSxrRkFDRTtFQUVGO0FBbEJGO0FBcUJBO0VBQ0U7RUFDQTtBQWxCRjtBQXFCQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0FBbEJGO0FBcUJBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQWxCRjtBQXFCQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFsQkY7QUFxQkE7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFsQkY7O0FBcUJBO0FBQ0E7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBbEJGO0FBcUJBO0VBQ0U7QUFsQkY7QUFxQkE7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBbEJGO0FBcUJBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7QUFsQkY7QUFvQkU7RUFDRTtBQWxCSjs7QUFzQkE7QUFDQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBbkJGO0FBc0JBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQW5CRjtBQXFCRTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQW5CSjtBQXVCQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFwQkY7QUFzQkU7RUFDRTtFQUNBO0VBQ0E7QUFwQko7QUF3QkE7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFyQkY7QUF1QkU7RUFDRTtBQXJCSjtBQXlCQTtFQUNFO0VBQ0E7QUF0QkY7QUF5QkE7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBdEJGO0FBd0JFO0VBQ0U7RUFDQTtBQXRCSjtBQXlCRTtFQUNFO0VBQ0E7QUF2Qko7QUEwQkU7RUFDRTtBQXhCSjs7QUE0QkE7QUFFRTtFQUNFO0VBQ0EseUVBQ0U7QUEzQk47QUErQkU7RUFDRTtBQTdCSjtBQWdDRTtFQUNFO0FBOUJKO0FBaUNFO0VBQ0U7QUEvQko7QUFrQ0U7RUFDRTtBQWhDSjtBQW1DRTtFQUNFO0FBakNKO0FBb0NFO0VBQ0U7QUFsQ0o7QUFxQ0U7RUFDRTtBQW5DSjtBQXNDRTtFQUNFO0FBcENKO0FBdUNFOztFQUVFO0VBQ0EsbUZBQ0U7QUF0Q047QUEwQ0U7O0VBRUU7QUF4Q0o7QUEyQ0U7RUFDRTtBQXpDSjtBQTRDRTs7RUFFRTtBQTFDSjtBQTZDRTtFQUNFO0VBQ0E7QUEzQ0o7QUE4Q0U7RUFDRTtBQTVDSjtBQStDRTtFQUNFO0FBN0NKO0FBZ0RFO0VBQ0U7QUE5Q0o7QUFpREU7RUFDRTtFQUNBO0FBL0NKO0FBa0RFO0VBQ0U7QUFoREo7QUFrREk7RUFDRTtBQWhETjtBQW9ERTtFQUNFO0VBQ0E7RUFDQTtBQWxESjtBQXFERTtFQUNFO0VBQ0E7QUFuREo7O0FBdURBO0FBQ0E7QUFDRTtJQUNFO0lBQ0E7QUFwREY7QUF1REE7SUFDRTtJQUNBO0FBcERGO0FBdURBO0lBQ0U7SUFDQTtBQXBERjtBQXVEQTtJQUNFO0FBcERGO0FBdURBO0lBQ0U7QUFwREY7QUFDRixDOzs7OztBQ25lQTtFQUNBO0FBQ0E7Ozs7O0FDcEVFO0VBQ0U7RUFDQTtFQUVBO0FBRko7QUFHSTtFQUNFO0FBRE47QUFJSTtFQUNFO0FBRk47QUFLSTtFQUNFO0VBQ0E7QUFITjtBQUtNO0VBQ0U7QUFIUjs7QUFTQTtBQUNBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7QUFORjtBQVFFO0VBQ0U7RUFDQTtBQU5KO0FBUUk7RUFDRTtBQU5OO0FBU0k7RUFDRTtBQVBOOztBQVlBO0FBQ0E7RUFDRTtFQUNBO0VBQ0E7QUFURjtBQVdFO0VBQ0U7RUFDQTtBQVRKO0FBWUU7RUFDRTtFQUNBO0FBVko7QUFZSTtFQUNFO0FBVk47O0FBZUE7QUFFRTtFQUNFO0VBQ0E7RUFDQTtBQWJKO0FBZUk7RUFDRTtBQWJOO0FBZ0JJO0VBQ0U7QUFkTjtBQWtCRTtFQUNFO0FBaEJKOztBQW9CQTtBQUNBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7QUFqQkY7QUFtQkU7RUFDRTtFQUNBO0FBakJKO0FBbUJJO0VBQ0U7QUFqQk47QUFxQkU7RUFDRTtFQUNBO0FBbkJKO0FBcUJJO0VBQ0U7RUFDQTtBQW5CTjtBQXNCSTtFQUNFO0FBcEJOOztBQXlCQTtBQUNBO0VBQ0U7QUF0QkY7O0FBeUJBO0FBQ0E7RUFDRTtFQUNBO0VBQ0E7QUF0QkY7O0FBeUJBO0FBRUU7RUFDRTtBQXZCSjtBQTJCSTtFQUNFO0FBekJOO0FBNEJJO0VBQ0U7QUExQk47QUErQkk7RUFDRTtBQTdCTjtBQWdDSTtFQUNFO0FBOUJOO0FBbUNJO0VBQ0U7QUFqQ047QUFvQ0k7RUFDRTtBQWxDTjtBQXNDRTtFQUNFO0FBcENKLEM7Ozs7O0FDeEJBO0VBQ0E7QUFDQTtBQUVBO0VBQ0E7QUFDQTs7Ozs7O0FDOUVBO0VBQ0E7RUFDQTs7RUFFQTtBQUNBO0FBRUE7RUFDQTtBQUNBO0FBSUE7RUFDQTtFQUNBO0FBQ0E7Ozs7OztBQ2tZQTtFQUNBO0FBQ0E7Ozs7OztBQ2t3QkE7QUFDQTtFQUNBO0FBQ0E7QUFFQTtFQUNBO0VBQ0E7QUFDQTs7Ozs7O0FDbnhCQTtJQUNBO0FBQ0E7Ozs7OztBQzNEQTtJQUNBO0FBQ0E7Ozs7OztBQzVDQTtFQUNBO0FBQ0E7Ozs7OztBQ3FNQTtFQUNBO0FBQ0E7QUFFQTtFQUNBO0FBQ0E7QUFFQTtFQUNBO0VBQ0E7QUFDQTtBQUVBO0VBQ0E7QUFDQTs7Ozs7O0FDYkE7RUFDQTtBQUNBOzs7Ozs7QUNkQTtFQUNBO0FBQ0E7O0FBRUE7QUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBQ0E7O0FBRUE7QUFDQTs7RUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtJQUNBO0FBQ0E7QUFFQTtJQUNBO0FBQ0E7QUFFQTtJQUNBO0FBQ0E7QUFFQTtJQUNBO0FBQ0E7QUFFQTtJQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7SUFDQTtBQUNBO0FBRUE7SUFDQTtBQUNBO0FBRUE7SUFDQTtBQUNBO0FBQ0E7Ozs7OztBQ3ZJQTtFQUNBO0FBQ0E7Ozs7OztBQ3JFQTtFQUNBO0VBQ0E7QUFDQTs7Ozs7O0FDbFFBO0VBQ0E7RUFDQTtBQUNBOzs7OztBQ25IQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUVBO0VBYUE7QUFyQkY7QUFTRTtFQUNFO0VBQ0E7RUFBdUI7RUFDdkI7RUFBdUI7RUFDdkI7RUFBdUI7RUFDdkI7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQUpKO0FBUUU7RUFDRTtFQUNBO0VBQXVCO0VBQ3ZCO0VBQXVCO0VBQ3ZCO0VBQXVCO0VBQ3ZCO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFISjtBQVFBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7QUFMRjtBQVFBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQUxGO0FBT0U7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBTEo7QUFRRTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQU5KO0FBVUE7QUFDRTtJQUFLO0FBTkw7QUFPQTtJQUFPO0FBSlA7QUFDRjtBQU9BO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFMRjtBQVNBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBTkY7QUFVQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0FBUEY7QUFTRTtFQUFnQjtFQUFjO0FBTGhDO0FBTUU7RUFBaUI7RUFBYztBQUZqQztBQUdFO0VBQWdCO0VBQWM7QUFDaEM7QUFHQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFBRjtBQUdBO0VBQ0U7RUFBYztFQUNkO0FBQ0Y7QUFFQTtFQUNFO0VBQWM7RUFDZDtBQUVGO0FBQ0E7RUFDRTtFQUFjO0VBQ2Q7QUFHRjtBQUFBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFHRjtBQUFBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFHRjtBQUFBO0FBQ0U7SUFBSztBQUlMO0FBQ0Y7QUFGQTtBQUNFO0lBQU87SUFBd0M7QUFNL0M7QUFMQTtJQUFLO0lBQXdDO0lBQVk7QUFVekQ7QUFDRjtBQVBBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7QUFTRjtBQU5BO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQVNGO0FBTEk7RUFDRTtFQUNBO0FBT047QUFUSTtFQUNFO0VBQ0E7QUFXTjtBQWJJO0VBQ0U7RUFDQTtBQWVOO0FBakJJO0VBQ0U7RUFDQTtBQW1CTjtBQXJCSTtFQUNFO0VBQ0E7QUF1Qk47QUF6Qkk7RUFDRTtFQUNBO0FBMkJOO0FBdEJBO0FBQ0U7SUFBSztBQTBCTDtBQXpCQTtJQUFNO0FBNEJOO0FBM0JBO0lBQU07QUE4Qk47QUE3QkE7SUFBTztBQWdDUDtBQUNGO0FBN0JBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQStCRjtBQTVCQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQStCRjtBQTdCRTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQStCSjtBQTNCQTtBQUNFO0lBQUs7SUFBb0M7QUFnQ3pDO0FBL0JBO0lBQU07QUFrQ047QUFqQ0E7SUFBTztJQUF5QztBQXFDaEQ7QUFDRjtBQW5DQTtFQUNFO0VBQ0EsbUNBN09XO0VBOE9YO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQXFDRjtBQW5DRTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0FBcUNKO0FBbkNJO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFxQ047QUFqQ0k7RUFBeUI7RUFBcUI7QUFxQ2xEO0FBcENJO0VBQXlCO0VBQXVCO0FBd0NwRDtBQXZDSTtFQUF5QjtFQUF1QjtBQTJDcEQ7QUF0Q0E7QUFDRTtJQUFVO0lBQVk7QUEyQ3RCO0FBMUNBO0lBQVc7SUFBYztBQThDekI7QUE3Q0E7SUFBTztJQUFjO0lBQTZDO0lBQXVCO0FBbUR6RjtBQUNGO0FBakRBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBbURGO0FBaERBO0FBQ0U7SUFBSztJQUFTO0FBcURkO0FBcERBO0lBQU07QUF1RE47QUF0REE7SUFBTTtBQXlETjtBQXhEQTtJQUFPO0lBQVc7QUE0RGxCO0FBQ0Y7QUExREE7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQTRERjtBQXpEQTtBQUNFO0lBQVc7QUE2RFg7QUE1REE7SUFBTTtBQStETjtBQUNGO0FBNURBO0FBQ0U7SUFBbUI7QUErRG5CO0FBOURBO0lBQWlCO0lBQW1CO0FBbUVwQztBQWxFQTtJQUFnQjtBQXNFaEI7QUFDRixDOzs7OztBQ25RQTtBQUNBOzs7RUFHQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBQ0E7O0FBRUE7QUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBQ0E7O0FBRUE7QUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBQ0E7QUFFQTtFQUNBO0VBQ0E7QUFDQTs7QUFFQTtBQUNBOztFQUVBO0FBQ0E7QUFFQTs7RUFFQTtFQUNBO0FBQ0E7O0FBRUE7QUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQUNBO0FBRUE7RUFDQTtFQUNBO0VBQ0E7QUFDQTtBQUVBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFDQTs7Ozs7O0FDc0RBO0FBQ0E7RUFDQTtFQUNBO0FBQ0E7QUFDQTtJQUNBO0lBQ0E7QUFDQTtBQUNBO0VBQ0E7QUFDQTtBQUNBO0lBQ0E7SUFDQTtBQUNBO0FBRUE7SUFDQTtBQUNBOztBQUVBOzs7Ozs7QUN0SkE7RUFDQTtFQUNBO0FBQ0E7Ozs7OztBQ05BO0VBQ0E7RUFDQTtBQUNBOzs7Ozs7QUNHQTtFQUNBO0VBQ0E7QUFDQTs7Ozs7Ozs7O0FDdElBLGdCQUFnQjtBQ0FoQjtFQUNFO0lBQ0U7RURFRjtFQ0NBO0lBQ0U7RURDRjtFQ0VBO0lBQ0U7RURBRjtBQUNGO0FFQUU7RUFWQTtFQUNBO0FGYUY7O0FFQUU7RUFWQTtFQUNBO0FGY0Y7O0FFVEU7RUFWQTtFQUNBO0FGdUJGOztBRVZFO0VBVkE7RUFDQTtBRndCRjs7QUVuQkU7RUFWQTtFQUNBO0FGaUNGOztBRXBCRTtFQVZBO0VBQ0E7QUZrQ0Y7O0FFaEJRO0VBdkJOO0VBQ0E7QUYyQ0Y7O0FFakJRO0VBdkJOO0VBQ0E7QUY0Q0Y7O0FFakJRO0VBaENOO0VBQ0E7QUZxREY7O0FFbEJRO0VBaENOO0VBQ0E7QUZzREY7O0FFM0JRO0VBaENOO0VBQ0E7QUYrREY7O0FFNUJRO0VBaENOO0VBQ0E7QUZnRUY7O0FFckNRO0VBaENOO0VBQ0E7QUZ5RUY7O0FFdENRO0VBaENOO0VBQ0E7QUYwRUY7O0FFL0NRO0VBaENOO0VBQ0E7QUZtRkY7O0FFaERRO0VBaENOO0VBQ0E7QUZvRkY7O0FFekRRO0VBaENOO0VBQ0E7QUY2RkY7O0FFMURRO0VBaENOO0VBQ0E7QUY4RkY7O0FFbkVRO0VBaENOO0VBQ0E7QUZ1R0Y7O0FFcEVRO0VBaENOO0VBQ0E7QUZ3R0Y7O0FFN0VRO0VBaENOO0VBQ0E7QUZpSEY7O0FFOUVRO0VBaENOO0VBQ0E7QUZrSEY7O0FFdkZRO0VBaENOO0VBQ0E7QUYySEY7O0FFeEZRO0VBaENOO0VBQ0E7QUY0SEY7O0FFakdRO0VBaENOO0VBQ0E7QUZxSUY7O0FFbEdRO0VBaENOO0VBQ0E7QUZzSUY7O0FFM0dRO0VBaENOO0VBQ0E7QUYrSUY7O0FFNUdRO0VBaENOO0VBQ0E7QUZnSkY7O0FFckhRO0VBaENOO0VBQ0E7QUZ5SkY7O0FFdEhRO0VBaENOO0VBQ0E7QUYwSkY7O0FFL0hRO0VBaENOO0VBQ0E7QUZtS0Y7O0FFaElRO0VBaENOO0VBQ0E7QUZvS0Y7O0FFeklRO0VBaENOO0VBQ0E7QUY2S0Y7O0FFMUlRO0VBaENOO0VBQ0E7QUY4S0Y7O0FFNUpRO0VBdkJOO0VBQ0E7QUZ1TEY7O0FFN0pRO0VBdkJOO0VBQ0E7QUZ3TEY7O0FFN0pRO0VBaENOO0VBQ0E7QUZpTUY7O0FFOUpRO0VBaENOO0VBQ0E7QUZrTUY7O0FFdktRO0VBaENOO0VBQ0E7QUYyTUY7O0FFeEtRO0VBaENOO0VBQ0E7QUY0TUY7O0FFakxRO0VBaENOO0VBQ0E7QUZxTkY7O0FFbExRO0VBaENOO0VBQ0E7QUZzTkY7O0FFM0xRO0VBaENOO0VBQ0E7QUYrTkY7O0FFNUxRO0VBaENOO0VBQ0E7QUZnT0Y7O0FFck1RO0VBaENOO0VBQ0E7QUZ5T0Y7O0FFdE1RO0VBaENOO0VBQ0E7QUYwT0Y7O0FFL01RO0VBaENOO0VBQ0E7QUZtUEY7O0FFaE5RO0VBaENOO0VBQ0E7QUZvUEY7O0FFek5RO0VBaENOO0VBQ0E7QUY2UEY7O0FFMU5RO0VBaENOO0VBQ0E7QUY4UEY7O0FFbk9RO0VBaENOO0VBQ0E7QUZ1UUY7O0FFcE9RO0VBaENOO0VBQ0E7QUZ3UUY7O0FFN09RO0VBaENOO0VBQ0E7QUZpUkY7O0FFOU9RO0VBaENOO0VBQ0E7QUZrUkY7O0FFdlBRO0VBaENOO0VBQ0E7QUYyUkY7O0FFeFBRO0VBaENOO0VBQ0E7QUY0UkY7O0FFalFRO0VBaENOO0VBQ0E7QUZxU0Y7O0FFbFFRO0VBaENOO0VBQ0E7QUZzU0Y7O0FFM1FRO0VBaENOO0VBQ0E7QUYrU0Y7O0FFNVFRO0VBaENOO0VBQ0E7QUZnVEY7O0FFclJRO0VBaENOO0VBQ0E7QUZ5VEY7O0FFdFJRO0VBaENOO0VBQ0E7QUYwVEY7O0FFeFNRO0VBdkJOO0VBQ0E7QUZtVUY7O0FFelNRO0VBdkJOO0VBQ0E7QUZvVUY7O0FFelNRO0VBaENOO0VBQ0E7QUY2VUY7O0FFMVNRO0VBaENOO0VBQ0E7QUY4VUY7O0FFblRRO0VBaENOO0VBQ0E7QUZ1VkY7O0FFcFRRO0VBaENOO0VBQ0E7QUZ3VkY7O0FFN1RRO0VBaENOO0VBQ0E7QUZpV0Y7O0FFOVRRO0VBaENOO0VBQ0E7QUZrV0Y7O0FFdlVRO0VBaENOO0VBQ0E7QUYyV0Y7O0FFeFVRO0VBaENOO0VBQ0E7QUY0V0Y7O0FFalZRO0VBaENOO0VBQ0E7QUZxWEY7O0FFbFZRO0VBaENOO0VBQ0E7QUZzWEY7O0FFM1ZRO0VBaENOO0VBQ0E7QUYrWEY7O0FFNVZRO0VBaENOO0VBQ0E7QUZnWUY7O0FFcldRO0VBaENOO0VBQ0E7QUZ5WUY7O0FFdFdRO0VBaENOO0VBQ0E7QUYwWUY7O0FFL1dRO0VBaENOO0VBQ0E7QUZtWkY7O0FFaFhRO0VBaENOO0VBQ0E7QUZvWkY7O0FFelhRO0VBaENOO0VBQ0E7QUY2WkY7O0FFMVhRO0VBaENOO0VBQ0E7QUY4WkY7O0FFbllRO0VBaENOO0VBQ0E7QUZ1YUY7O0FFcFlRO0VBaENOO0VBQ0E7QUZ3YUY7O0FFN1lRO0VBaENOO0VBQ0E7QUZpYkY7O0FFOVlRO0VBaENOO0VBQ0E7QUZrYkY7O0FFdlpRO0VBaENOO0VBQ0E7QUYyYkY7O0FFeFpRO0VBaENOO0VBQ0E7QUY0YkY7O0FFamFRO0VBaENOO0VBQ0E7QUZxY0Y7O0FFbGFRO0VBaENOO0VBQ0E7QUZzY0Y7O0FFcGJRO0VBdkJOO0VBQ0E7QUYrY0Y7O0FFcmJRO0VBdkJOO0VBQ0E7QUZnZEY7O0FFcmJRO0VBaENOO0VBQ0E7QUZ5ZEY7O0FFdGJRO0VBaENOO0VBQ0E7QUYwZEY7O0FFL2JRO0VBaENOO0VBQ0E7QUZtZUY7O0FFaGNRO0VBaENOO0VBQ0E7QUZvZUY7O0FFemNRO0VBaENOO0VBQ0E7QUY2ZUY7O0FFMWNRO0VBaENOO0VBQ0E7QUY4ZUY7O0FFbmRRO0VBaENOO0VBQ0E7QUZ1ZkY7O0FFcGRRO0VBaENOO0VBQ0E7QUZ3ZkY7O0FFN2RRO0VBaENOO0VBQ0E7QUZpZ0JGOztBRTlkUTtFQWhDTjtFQUNBO0FGa2dCRjs7QUV2ZVE7RUFoQ047RUFDQTtBRjJnQkY7O0FFeGVRO0VBaENOO0VBQ0E7QUY0Z0JGOztBRWpmUTtFQWhDTjtFQUNBO0FGcWhCRjs7QUVsZlE7RUFoQ047RUFDQTtBRnNoQkY7O0FFM2ZRO0VBaENOO0VBQ0E7QUYraEJGOztBRTVmUTtFQWhDTjtFQUNBO0FGZ2lCRjs7QUVyZ0JRO0VBaENOO0VBQ0E7QUZ5aUJGOztBRXRnQlE7RUFoQ047RUFDQTtBRjBpQkY7O0FFL2dCUTtFQWhDTjtFQUNBO0FGbWpCRjs7QUVoaEJRO0VBaENOO0VBQ0E7QUZvakJGOztBRXpoQlE7RUFoQ047RUFDQTtBRjZqQkY7O0FFMWhCUTtFQWhDTjtFQUNBO0FGOGpCRjs7QUVuaUJRO0VBaENOO0VBQ0E7QUZ1a0JGOztBRXBpQlE7RUFoQ047RUFDQTtBRndrQkY7O0FFN2lCUTtFQWhDTjtFQUNBO0FGaWxCRjs7QUU5aUJRO0VBaENOO0VBQ0E7QUZrbEJGOztBRWhrQlE7RUF2Qk47RUFDQTtBRjJsQkY7O0FFamtCUTtFQXZCTjtFQUNBO0FGNGxCRjs7QUVqa0JRO0VBaENOO0VBQ0E7QUZxbUJGOztBRWxrQlE7RUFoQ047RUFDQTtBRnNtQkY7O0FFM2tCUTtFQWhDTjtFQUNBO0FGK21CRjs7QUU1a0JRO0VBaENOO0VBQ0E7QUZnbkJGOztBRXJsQlE7RUFoQ047RUFDQTtBRnluQkY7O0FFdGxCUTtFQWhDTjtFQUNBO0FGMG5CRjs7QUUvbEJRO0VBaENOO0VBQ0E7QUZtb0JGOztBRWhtQlE7RUFoQ047RUFDQTtBRm9vQkY7O0FFem1CUTtFQWhDTjtFQUNBO0FGNm9CRjs7QUUxbUJRO0VBaENOO0VBQ0E7QUY4b0JGOztBRW5uQlE7RUFoQ047RUFDQTtBRnVwQkY7O0FFcG5CUTtFQWhDTjtFQUNBO0FGd3BCRjs7QUU3bkJRO0VBaENOO0VBQ0E7QUZpcUJGOztBRTluQlE7RUFoQ047RUFDQTtBRmtxQkY7O0FFdm9CUTtFQWhDTjtFQUNBO0FGMnFCRjs7QUV4b0JRO0VBaENOO0VBQ0E7QUY0cUJGOztBRWpwQlE7RUFoQ047RUFDQTtBRnFyQkY7O0FFbHBCUTtFQWhDTjtFQUNBO0FGc3JCRjs7QUUzcEJRO0VBaENOO0VBQ0E7QUYrckJGOztBRTVwQlE7RUFoQ047RUFDQTtBRmdzQkY7O0FFcnFCUTtFQWhDTjtFQUNBO0FGeXNCRjs7QUV0cUJRO0VBaENOO0VBQ0E7QUYwc0JGOztBRS9xQlE7RUFoQ047RUFDQTtBRm10QkY7O0FFaHJCUTtFQWhDTjtFQUNBO0FGb3RCRjs7QUV6ckJRO0VBaENOO0VBQ0E7QUY2dEJGOztBRTFyQlE7RUFoQ047RUFDQTtBRjh0QkY7O0FFNXNCUTtFQXZCTjtFQUNBO0FGdXVCRjs7QUU3c0JRO0VBdkJOO0VBQ0E7QUZ3dUJGOztBRTdzQlE7RUFoQ047RUFDQTtBRml2QkY7O0FFOXNCUTtFQWhDTjtFQUNBO0FGa3ZCRjs7QUV2dEJRO0VBaENOO0VBQ0E7QUYydkJGOztBRXh0QlE7RUFoQ047RUFDQTtBRjR2QkY7O0FFanVCUTtFQWhDTjtFQUNBO0FGcXdCRjs7QUVsdUJRO0VBaENOO0VBQ0E7QUZzd0JGOztBRTN1QlE7RUFoQ047RUFDQTtBRit3QkY7O0FFNXVCUTtFQWhDTjtFQUNBO0FGZ3hCRjs7QUVydkJRO0VBaENOO0VBQ0E7QUZ5eEJGOztBRXR2QlE7RUFoQ047RUFDQTtBRjB4QkY7O0FFL3ZCUTtFQWhDTjtFQUNBO0FGbXlCRjs7QUVod0JRO0VBaENOO0VBQ0E7QUZveUJGOztBRXp3QlE7RUFoQ047RUFDQTtBRjZ5QkY7O0FFMXdCUTtFQWhDTjtFQUNBO0FGOHlCRjs7QUVueEJRO0VBaENOO0VBQ0E7QUZ1ekJGOztBRXB4QlE7RUFoQ047RUFDQTtBRnd6QkY7O0FFN3hCUTtFQWhDTjtFQUNBO0FGaTBCRjs7QUU5eEJRO0VBaENOO0VBQ0E7QUZrMEJGOztBRXZ5QlE7RUFoQ047RUFDQTtBRjIwQkY7O0FFeHlCUTtFQWhDTjtFQUNBO0FGNDBCRjs7QUVqekJRO0VBaENOO0VBQ0E7QUZxMUJGOztBRWx6QlE7RUFoQ047RUFDQTtBRnMxQkY7O0FFM3pCUTtFQWhDTjtFQUNBO0FGKzFCRjs7QUU1ekJRO0VBaENOO0VBQ0E7QUZnMkJGOztBRXIwQlE7RUFoQ047RUFDQTtBRnkyQkY7O0FFdDBCUTtFQWhDTjtFQUNBO0FGMDJCRjs7QUV4MUJRO0VBdkJOO0VBQ0E7QUZtM0JGOztBRXoxQlE7RUF2Qk47RUFDQTtBRm8zQkY7O0FFejFCUTtFQWhDTjtFQUNBO0FGNjNCRjs7QUUxMUJRO0VBaENOO0VBQ0E7QUY4M0JGOztBRW4yQlE7RUFoQ047RUFDQTtBRnU0QkY7O0FFcDJCUTtFQWhDTjtFQUNBO0FGdzRCRjs7QUU3MkJRO0VBaENOO0VBQ0E7QUZpNUJGOztBRTkyQlE7RUFoQ047RUFDQTtBRms1QkY7O0FFdjNCUTtFQWhDTjtFQUNBO0FGMjVCRjs7QUV4M0JRO0VBaENOO0VBQ0E7QUY0NUJGOztBRWo0QlE7RUFoQ047RUFDQTtBRnE2QkY7O0FFbDRCUTtFQWhDTjtFQUNBO0FGczZCRjs7QUUzNEJRO0VBaENOO0VBQ0E7QUYrNkJGOztBRTU0QlE7RUFoQ047RUFDQTtBRmc3QkY7O0FFcjVCUTtFQWhDTjtFQUNBO0FGeTdCRjs7QUV0NUJRO0VBaENOO0VBQ0E7QUYwN0JGOztBRS81QlE7RUFoQ047RUFDQTtBRm04QkY7O0FFaDZCUTtFQWhDTjtFQUNBO0FGbzhCRjs7QUV6NkJRO0VBaENOO0VBQ0E7QUY2OEJGOztBRTE2QlE7RUFoQ047RUFDQTtBRjg4QkY7O0FFbjdCUTtFQWhDTjtFQUNBO0FGdTlCRjs7QUVwN0JRO0VBaENOO0VBQ0E7QUZ3OUJGOztBRTc3QlE7RUFoQ047RUFDQTtBRmkrQkY7O0FFOTdCUTtFQWhDTjtFQUNBO0FGaytCRjs7QUV2OEJRO0VBaENOO0VBQ0E7QUYyK0JGOztBRXg4QlE7RUFoQ047RUFDQTtBRjQrQkY7O0FFajlCUTtFQWhDTjtFQUNBO0FGcS9CRjs7QUVsOUJRO0VBaENOO0VBQ0E7QUZzL0JGOztBRXArQlE7RUF2Qk47RUFDQTtBRisvQkY7O0FFcitCUTtFQXZCTjtFQUNBO0FGZ2dDRjs7QUVyK0JRO0VBaENOO0VBQ0E7QUZ5Z0NGOztBRXQrQlE7RUFoQ047RUFDQTtBRjBnQ0Y7O0FFLytCUTtFQWhDTjtFQUNBO0FGbWhDRjs7QUVoL0JRO0VBaENOO0VBQ0E7QUZvaENGOztBRXovQlE7RUFoQ047RUFDQTtBRjZoQ0Y7O0FFMS9CUTtFQWhDTjtFQUNBO0FGOGhDRjs7QUVuZ0NRO0VBaENOO0VBQ0E7QUZ1aUNGOztBRXBnQ1E7RUFoQ047RUFDQTtBRndpQ0Y7O0FFN2dDUTtFQWhDTjtFQUNBO0FGaWpDRjs7QUU5Z0NRO0VBaENOO0VBQ0E7QUZrakNGOztBRXZoQ1E7RUFoQ047RUFDQTtBRjJqQ0Y7O0FFeGhDUTtFQWhDTjtFQUNBO0FGNGpDRjs7QUVqaUNRO0VBaENOO0VBQ0E7QUZxa0NGOztBRWxpQ1E7RUFoQ047RUFDQTtBRnNrQ0Y7O0FFM2lDUTtFQWhDTjtFQUNBO0FGK2tDRjs7QUU1aUNRO0VBaENOO0VBQ0E7QUZnbENGOztBRXJqQ1E7RUFoQ047RUFDQTtBRnlsQ0Y7O0FFdGpDUTtFQWhDTjtFQUNBO0FGMGxDRjs7QUUvakNRO0VBaENOO0VBQ0E7QUZtbUNGOztBRWhrQ1E7RUFoQ047RUFDQTtBRm9tQ0Y7O0FFemtDUTtFQWhDTjtFQUNBO0FGNm1DRjs7QUUxa0NRO0VBaENOO0VBQ0E7QUY4bUNGOztBRW5sQ1E7RUFoQ047RUFDQTtBRnVuQ0Y7O0FFcGxDUTtFQWhDTjtFQUNBO0FGd25DRjs7QUU3bENRO0VBaENOO0VBQ0E7QUZpb0NGOztBRTlsQ1E7RUFoQ047RUFDQTtBRmtvQ0Y7O0FFaG5DUTtFQXZCTjtFQUNBO0FGMm9DRjs7QUVqbkNRO0VBdkJOO0VBQ0E7QUY0b0NGOztBRWpuQ1E7RUFoQ047RUFDQTtBRnFwQ0Y7O0FFbG5DUTtFQWhDTjtFQUNBO0FGc3BDRjs7QUUzbkNRO0VBaENOO0VBQ0E7QUYrcENGOztBRTVuQ1E7RUFoQ047RUFDQTtBRmdxQ0Y7O0FFcm9DUTtFQWhDTjtFQUNBO0FGeXFDRjs7QUV0b0NRO0VBaENOO0VBQ0E7QUYwcUNGOztBRS9vQ1E7RUFoQ047RUFDQTtBRm1yQ0Y7O0FFaHBDUTtFQWhDTjtFQUNBO0FGb3JDRjs7QUV6cENRO0VBaENOO0VBQ0E7QUY2ckNGOztBRTFwQ1E7RUFoQ047RUFDQTtBRjhyQ0Y7O0FFbnFDUTtFQWhDTjtFQUNBO0FGdXNDRjs7QUVwcUNRO0VBaENOO0VBQ0E7QUZ3c0NGOztBRTdxQ1E7RUFoQ047RUFDQTtBRml0Q0Y7O0FFOXFDUTtFQWhDTjtFQUNBO0FGa3RDRjs7QUV2ckNRO0VBaENOO0VBQ0E7QUYydENGOztBRXhyQ1E7RUFoQ047RUFDQTtBRjR0Q0Y7O0FFanNDUTtFQWhDTjtFQUNBO0FGcXVDRjs7QUVsc0NRO0VBaENOO0VBQ0E7QUZzdUNGOztBRTNzQ1E7RUFoQ047RUFDQTtBRit1Q0Y7O0FFNXNDUTtFQWhDTjtFQUNBO0FGZ3ZDRjs7QUVydENRO0VBaENOO0VBQ0E7QUZ5dkNGOztBRXR0Q1E7RUFoQ047RUFDQTtBRjB2Q0Y7O0FFL3RDUTtFQWhDTjtFQUNBO0FGbXdDRjs7QUVodUNRO0VBaENOO0VBQ0E7QUZvd0NGOztBRXp1Q1E7RUFoQ047RUFDQTtBRjZ3Q0Y7O0FFMXVDUTtFQWhDTjtFQUNBO0FGOHdDRjs7QUU1dkNRO0VBdkJOO0VBQ0E7QUZ1eENGOztBRTd2Q1E7RUF2Qk47RUFDQTtBRnd4Q0Y7O0FFN3ZDUTtFQWhDTjtFQUNBO0FGaXlDRjs7QUU5dkNRO0VBaENOO0VBQ0E7QUZreUNGOztBRXZ3Q1E7RUFoQ047RUFDQTtBRjJ5Q0Y7O0FFeHdDUTtFQWhDTjtFQUNBO0FGNHlDRjs7QUVqeENRO0VBaENOO0VBQ0E7QUZxekNGOztBRWx4Q1E7RUFoQ047RUFDQTtBRnN6Q0Y7O0FFM3hDUTtFQWhDTjtFQUNBO0FGK3pDRjs7QUU1eENRO0VBaENOO0VBQ0E7QUZnMENGOztBRXJ5Q1E7RUFoQ047RUFDQTtBRnkwQ0Y7O0FFdHlDUTtFQWhDTjtFQUNBO0FGMDBDRjs7QUUveUNRO0VBaENOO0VBQ0E7QUZtMUNGOztBRWh6Q1E7RUFoQ047RUFDQTtBRm8xQ0Y7O0FFenpDUTtFQWhDTjtFQUNBO0FGNjFDRjs7QUUxekNRO0VBaENOO0VBQ0E7QUY4MUNGOztBRW4wQ1E7RUFoQ047RUFDQTtBRnUyQ0Y7O0FFcDBDUTtFQWhDTjtFQUNBO0FGdzJDRjs7QUU3MENRO0VBaENOO0VBQ0E7QUZpM0NGOztBRTkwQ1E7RUFoQ047RUFDQTtBRmszQ0Y7O0FFdjFDUTtFQWhDTjtFQUNBO0FGMjNDRjs7QUV4MUNRO0VBaENOO0VBQ0E7QUY0M0NGOztBRWoyQ1E7RUFoQ047RUFDQTtBRnE0Q0Y7O0FFbDJDUTtFQWhDTjtFQUNBO0FGczRDRjs7QUUzMkNRO0VBaENOO0VBQ0E7QUYrNENGOztBRTUyQ1E7RUFoQ047RUFDQTtBRmc1Q0Y7O0FFcjNDUTtFQWhDTjtFQUNBO0FGeTVDRjs7QUV0M0NRO0VBaENOO0VBQ0E7QUYwNUNGOztBRXg0Q1E7RUF2Qk47RUFDQTtBRm02Q0Y7O0FFejRDUTtFQXZCTjtFQUNBO0FGbzZDRjs7QUV6NENRO0VBaENOO0VBQ0E7QUY2NkNGOztBRTE0Q1E7RUFoQ047RUFDQTtBRjg2Q0Y7O0FFbjVDUTtFQWhDTjtFQUNBO0FGdTdDRjs7QUVwNUNRO0VBaENOO0VBQ0E7QUZ3N0NGOztBRTc1Q1E7RUFoQ047RUFDQTtBRmk4Q0Y7O0FFOTVDUTtFQWhDTjtFQUNBO0FGazhDRjs7QUV2NkNRO0VBaENOO0VBQ0E7QUYyOENGOztBRXg2Q1E7RUFoQ047RUFDQTtBRjQ4Q0Y7O0FFajdDUTtFQWhDTjtFQUNBO0FGcTlDRjs7QUVsN0NRO0VBaENOO0VBQ0E7QUZzOUNGOztBRTM3Q1E7RUFoQ047RUFDQTtBRis5Q0Y7O0FFNTdDUTtFQWhDTjtFQUNBO0FGZytDRjs7QUVyOENRO0VBaENOO0VBQ0E7QUZ5K0NGOztBRXQ4Q1E7RUFoQ047RUFDQTtBRjArQ0Y7O0FFLzhDUTtFQWhDTjtFQUNBO0FGbS9DRjs7QUVoOUNRO0VBaENOO0VBQ0E7QUZvL0NGOztBRXo5Q1E7RUFoQ047RUFDQTtBRjYvQ0Y7O0FFMTlDUTtFQWhDTjtFQUNBO0FGOC9DRjs7QUVuK0NRO0VBaENOO0VBQ0E7QUZ1Z0RGOztBRXArQ1E7RUFoQ047RUFDQTtBRndnREY7O0FFNytDUTtFQWhDTjtFQUNBO0FGaWhERjs7QUU5K0NRO0VBaENOO0VBQ0E7QUZraERGOztBRXYvQ1E7RUFoQ047RUFDQTtBRjJoREY7O0FFeC9DUTtFQWhDTjtFQUNBO0FGNGhERjs7QUVqZ0RRO0VBaENOO0VBQ0E7QUZxaURGOztBRWxnRFE7RUFoQ047RUFDQTtBRnNpREY7O0FFcGhEUTtFQXZCTjtFQUNBO0FGK2lERjs7QUVyaERRO0VBdkJOO0VBQ0E7QUZnakRGOztBRXJoRFE7RUFoQ047RUFDQTtBRnlqREY7O0FFdGhEUTtFQWhDTjtFQUNBO0FGMGpERjs7QUUvaERRO0VBaENOO0VBQ0E7QUZta0RGOztBRWhpRFE7RUFoQ047RUFDQTtBRm9rREY7O0FFemlEUTtFQWhDTjtFQUNBO0FGNmtERjs7QUUxaURRO0VBaENOO0VBQ0E7QUY4a0RGOztBRW5qRFE7RUFoQ047RUFDQTtBRnVsREY7O0FFcGpEUTtFQWhDTjtFQUNBO0FGd2xERjs7QUU3akRRO0VBaENOO0VBQ0E7QUZpbURGOztBRTlqRFE7RUFoQ047RUFDQTtBRmttREY7O0FFdmtEUTtFQWhDTjtFQUNBO0FGMm1ERjs7QUV4a0RRO0VBaENOO0VBQ0E7QUY0bURGOztBRWpsRFE7RUFoQ047RUFDQTtBRnFuREY7O0FFbGxEUTtFQWhDTjtFQUNBO0FGc25ERjs7QUUzbERRO0VBaENOO0VBQ0E7QUYrbkRGOztBRTVsRFE7RUFoQ047RUFDQTtBRmdvREY7O0FFcm1EUTtFQWhDTjtFQUNBO0FGeW9ERjs7QUV0bURRO0VBaENOO0VBQ0E7QUYwb0RGOztBRS9tRFE7RUFoQ047RUFDQTtBRm1wREY7O0FFaG5EUTtFQWhDTjtFQUNBO0FGb3BERjs7QUV6bkRRO0VBaENOO0VBQ0E7QUY2cERGOztBRTFuRFE7RUFoQ047RUFDQTtBRjhwREY7O0FFbm9EUTtFQWhDTjtFQUNBO0FGdXFERjs7QUVwb0RRO0VBaENOO0VBQ0E7QUZ3cURGOztBRTdvRFE7RUFoQ047RUFDQTtBRmlyREY7O0FFOW9EUTtFQWhDTjtFQUNBO0FGa3JERjs7QUVocURRO0VBdkJOO0VBQ0E7QUYyckRGOztBRWpxRFE7RUF2Qk47RUFDQTtBRjRyREY7O0FFanFEUTtFQWhDTjtFQUNBO0FGcXNERjs7QUVscURRO0VBaENOO0VBQ0E7QUZzc0RGOztBRTNxRFE7RUFoQ047RUFDQTtBRitzREY7O0FFNXFEUTtFQWhDTjtFQUNBO0FGZ3RERjs7QUVyckRRO0VBaENOO0VBQ0E7QUZ5dERGOztBRXRyRFE7RUFoQ047RUFDQTtBRjB0REY7O0FFL3JEUTtFQWhDTjtFQUNBO0FGbXVERjs7QUVoc0RRO0VBaENOO0VBQ0E7QUZvdURGOztBRXpzRFE7RUFoQ047RUFDQTtBRjZ1REY7O0FFMXNEUTtFQWhDTjtFQUNBO0FGOHVERjs7QUVudERRO0VBaENOO0VBQ0E7QUZ1dkRGOztBRXB0RFE7RUFoQ047RUFDQTtBRnd2REY7O0FFN3REUTtFQWhDTjtFQUNBO0FGaXdERjs7QUU5dERRO0VBaENOO0VBQ0E7QUZrd0RGOztBRXZ1RFE7RUFoQ047RUFDQTtBRjJ3REY7O0FFeHVEUTtFQWhDTjtFQUNBO0FGNHdERjs7QUVqdkRRO0VBaENOO0VBQ0E7QUZxeERGOztBRWx2RFE7RUFoQ047RUFDQTtBRnN4REY7O0FFM3ZEUTtFQWhDTjtFQUNBO0FGK3hERjs7QUU1dkRRO0VBaENOO0VBQ0E7QUZneURGOztBRXJ3RFE7RUFoQ047RUFDQTtBRnl5REY7O0FFdHdEUTtFQWhDTjtFQUNBO0FGMHlERjs7QUUvd0RRO0VBaENOO0VBQ0E7QUZtekRGOztBRWh4RFE7RUFoQ047RUFDQTtBRm96REY7O0FFenhEUTtFQWhDTjtFQUNBO0FGNnpERjs7QUUxeERRO0VBaENOO0VBQ0E7QUY4ekRGOztBRTV5RFE7RUF2Qk47RUFDQTtBRnUwREY7O0FFN3lEUTtFQXZCTjtFQUNBO0FGdzBERjs7QUU3eURRO0VBaENOO0VBQ0E7QUZpMURGOztBRTl5RFE7RUFoQ047RUFDQTtBRmsxREY7O0FFdnpEUTtFQWhDTjtFQUNBO0FGMjFERjs7QUV4ekRRO0VBaENOO0VBQ0E7QUY0MURGOztBRWowRFE7RUFoQ047RUFDQTtBRnEyREY7O0FFbDBEUTtFQWhDTjtFQUNBO0FGczJERjs7QUUzMERRO0VBaENOO0VBQ0E7QUYrMkRGOztBRTUwRFE7RUFoQ047RUFDQTtBRmczREY7O0FFcjFEUTtFQWhDTjtFQUNBO0FGeTNERjs7QUV0MURRO0VBaENOO0VBQ0E7QUYwM0RGOztBRS8xRFE7RUFoQ047RUFDQTtBRm00REY7O0FFaDJEUTtFQWhDTjtFQUNBO0FGbzRERjs7QUV6MkRRO0VBaENOO0VBQ0E7QUY2NERGOztBRTEyRFE7RUFoQ047RUFDQTtBRjg0REY7O0FFbjNEUTtFQWhDTjtFQUNBO0FGdTVERjs7QUVwM0RRO0VBaENOO0VBQ0E7QUZ3NURGOztBRTczRFE7RUFoQ047RUFDQTtBRmk2REY7O0FFOTNEUTtFQWhDTjtFQUNBO0FGazZERjs7QUV2NERRO0VBaENOO0VBQ0E7QUYyNkRGOztBRXg0RFE7RUFoQ047RUFDQTtBRjQ2REY7O0FFajVEUTtFQWhDTjtFQUNBO0FGcTdERjs7QUVsNURRO0VBaENOO0VBQ0E7QUZzN0RGOztBRTM1RFE7RUFoQ047RUFDQTtBRis3REY7O0FFNTVEUTtFQWhDTjtFQUNBO0FGZzhERjs7QUVyNkRRO0VBaENOO0VBQ0E7QUZ5OERGOztBRXQ2RFE7RUFoQ047RUFDQTtBRjA4REY7O0FFeDdEUTtFQXZCTjtFQUNBO0FGbTlERjs7QUV6N0RRO0VBdkJOO0VBQ0E7QUZvOURGOztBRXo3RFE7RUFoQ047RUFDQTtBRjY5REY7O0FFMTdEUTtFQWhDTjtFQUNBO0FGODlERjs7QUVuOERRO0VBaENOO0VBQ0E7QUZ1K0RGOztBRXA4RFE7RUFoQ047RUFDQTtBRncrREY7O0FFNzhEUTtFQWhDTjtFQUNBO0FGaS9ERjs7QUU5OERRO0VBaENOO0VBQ0E7QUZrL0RGOztBRXY5RFE7RUFoQ047RUFDQTtBRjIvREY7O0FFeDlEUTtFQWhDTjtFQUNBO0FGNC9ERjs7QUVqK0RRO0VBaENOO0VBQ0E7QUZxZ0VGOztBRWwrRFE7RUFoQ047RUFDQTtBRnNnRUY7O0FFMytEUTtFQWhDTjtFQUNBO0FGK2dFRjs7QUU1K0RRO0VBaENOO0VBQ0E7QUZnaEVGOztBRXIvRFE7RUFoQ047RUFDQTtBRnloRUY7O0FFdC9EUTtFQWhDTjtFQUNBO0FGMGhFRjs7QUUvL0RRO0VBaENOO0VBQ0E7QUZtaUVGOztBRWhnRVE7RUFoQ047RUFDQTtBRm9pRUY7O0FFemdFUTtFQWhDTjtFQUNBO0FGNmlFRjs7QUUxZ0VRO0VBaENOO0VBQ0E7QUY4aUVGOztBRW5oRVE7RUFoQ047RUFDQTtBRnVqRUY7O0FFcGhFUTtFQWhDTjtFQUNBO0FGd2pFRjs7QUU3aEVRO0VBaENOO0VBQ0E7QUZpa0VGOztBRTloRVE7RUFoQ047RUFDQTtBRmtrRUY7O0FFdmlFUTtFQWhDTjtFQUNBO0FGMmtFRjs7QUV4aUVRO0VBaENOO0VBQ0E7QUY0a0VGOztBRWpqRVE7RUFoQ047RUFDQTtBRnFsRUY7O0FFbGpFUTtFQWhDTjtFQUNBO0FGc2xFRjs7QUVwa0VRO0VBdkJOO0VBQ0E7QUYrbEVGOztBRXJrRVE7RUF2Qk47RUFDQTtBRmdtRUY7O0FFcmtFUTtFQWhDTjtFQUNBO0FGeW1FRjs7QUV0a0VRO0VBaENOO0VBQ0E7QUYwbUVGOztBRS9rRVE7RUFoQ047RUFDQTtBRm1uRUY7O0FFaGxFUTtFQWhDTjtFQUNBO0FGb25FRjs7QUV6bEVRO0VBaENOO0VBQ0E7QUY2bkVGOztBRTFsRVE7RUFoQ047RUFDQTtBRjhuRUY7O0FFbm1FUTtFQWhDTjtFQUNBO0FGdW9FRjs7QUVwbUVRO0VBaENOO0VBQ0E7QUZ3b0VGOztBRTdtRVE7RUFoQ047RUFDQTtBRmlwRUY7O0FFOW1FUTtFQWhDTjtFQUNBO0FGa3BFRjs7QUV2bkVRO0VBaENOO0VBQ0E7QUYycEVGOztBRXhuRVE7RUFoQ047RUFDQTtBRjRwRUY7O0FFam9FUTtFQWhDTjtFQUNBO0FGcXFFRjs7QUVsb0VRO0VBaENOO0VBQ0E7QUZzcUVGOztBRTNvRVE7RUFoQ047RUFDQTtBRitxRUY7O0FFNW9FUTtFQWhDTjtFQUNBO0FGZ3JFRjs7QUVycEVRO0VBaENOO0VBQ0E7QUZ5ckVGOztBRXRwRVE7RUFoQ047RUFDQTtBRjByRUY7O0FFL3BFUTtFQWhDTjtFQUNBO0FGbXNFRjs7QUVocUVRO0VBaENOO0VBQ0E7QUZvc0VGOztBRXpxRVE7RUFoQ047RUFDQTtBRjZzRUY7O0FFMXFFUTtFQWhDTjtFQUNBO0FGOHNFRjs7QUVuckVRO0VBaENOO0VBQ0E7QUZ1dEVGOztBRXByRVE7RUFoQ047RUFDQTtBRnd0RUY7O0FFN3JFUTtFQWhDTjtFQUNBO0FGaXVFRjs7QUU5ckVRO0VBaENOO0VBQ0E7QUZrdUVGOztBRWh0RVE7RUF2Qk47RUFDQTtBRjJ1RUY7O0FFanRFUTtFQXZCTjtFQUNBO0FGNHVFRjs7QUVqdEVRO0VBaENOO0VBQ0E7QUZxdkVGOztBRWx0RVE7RUFoQ047RUFDQTtBRnN2RUY7O0FFM3RFUTtFQWhDTjtFQUNBO0FGK3ZFRjs7QUU1dEVRO0VBaENOO0VBQ0E7QUZnd0VGOztBRXJ1RVE7RUFoQ047RUFDQTtBRnl3RUY7O0FFdHVFUTtFQWhDTjtFQUNBO0FGMHdFRjs7QUUvdUVRO0VBaENOO0VBQ0E7QUZteEVGOztBRWh2RVE7RUFoQ047RUFDQTtBRm94RUY7O0FFenZFUTtFQWhDTjtFQUNBO0FGNnhFRjs7QUUxdkVRO0VBaENOO0VBQ0E7QUY4eEVGOztBRW53RVE7RUFoQ047RUFDQTtBRnV5RUY7O0FFcHdFUTtFQWhDTjtFQUNBO0FGd3lFRjs7QUU3d0VRO0VBaENOO0VBQ0E7QUZpekVGOztBRTl3RVE7RUFoQ047RUFDQTtBRmt6RUY7O0FFdnhFUTtFQWhDTjtFQUNBO0FGMnpFRjs7QUV4eEVRO0VBaENOO0VBQ0E7QUY0ekVGOztBRWp5RVE7RUFoQ047RUFDQTtBRnEwRUY7O0FFbHlFUTtFQWhDTjtFQUNBO0FGczBFRjs7QUVwekVRO0VBdkJOO0VBQ0E7QUYrMEVGOztBRXJ6RVE7RUF2Qk47RUFDQTtBRmcxRUY7O0FFcnpFUTtFQWhDTjtFQUNBO0FGeTFFRjs7QUV0ekVRO0VBaENOO0VBQ0E7QUYwMUVGOztBRS96RVE7RUFoQ047RUFDQTtBRm0yRUY7O0FFaDBFUTtFQWhDTjtFQUNBO0FGbzJFRjs7QUV6MEVRO0VBaENOO0VBQ0E7QUY2MkVGOztBRTEwRVE7RUFoQ047RUFDQTtBRjgyRUY7O0FFbjFFUTtFQWhDTjtFQUNBO0FGdTNFRjs7QUVwMUVRO0VBaENOO0VBQ0E7QUZ3M0VGOztBRTcxRVE7RUFoQ047RUFDQTtBRmk0RUY7O0FFOTFFUTtFQWhDTjtFQUNBO0FGazRFRjs7QUV2MkVRO0VBaENOO0VBQ0E7QUYyNEVGOztBRXgyRVE7RUFoQ047RUFDQTtBRjQ0RUY7O0FFajNFUTtFQWhDTjtFQUNBO0FGcTVFRjs7QUVsM0VRO0VBaENOO0VBQ0E7QUZzNUVGOztBRTMzRVE7RUFoQ047RUFDQTtBRis1RUY7O0FFNTNFUTtFQWhDTjtFQUNBO0FGZzZFRjs7QUVyNEVRO0VBaENOO0VBQ0E7QUZ5NkVGOztBRXQ0RVE7RUFoQ047RUFDQTtBRjA2RUY7O0FFeDVFUTtFQXZCTjtFQUNBO0FGbTdFRjs7QUV6NUVRO0VBdkJOO0VBQ0E7QUZvN0VGOztBRXo1RVE7RUFoQ047RUFDQTtBRjY3RUY7O0FFMTVFUTtFQWhDTjtFQUNBO0FGODdFRjs7QUVuNkVRO0VBaENOO0VBQ0E7QUZ1OEVGOztBRXA2RVE7RUFoQ047RUFDQTtBRnc4RUY7O0FFNzZFUTtFQWhDTjtFQUNBO0FGaTlFRjs7QUU5NkVRO0VBaENOO0VBQ0E7QUZrOUVGOztBRXY3RVE7RUFoQ047RUFDQTtBRjI5RUY7O0FFeDdFUTtFQWhDTjtFQUNBO0FGNDlFRjs7QUVqOEVRO0VBaENOO0VBQ0E7QUZxK0VGOztBRWw4RVE7RUFoQ047RUFDQTtBRnMrRUY7O0FFMzhFUTtFQWhDTjtFQUNBO0FGKytFRjs7QUU1OEVRO0VBaENOO0VBQ0E7QUZnL0VGOztBRXI5RVE7RUFoQ047RUFDQTtBRnkvRUY7O0FFdDlFUTtFQWhDTjtFQUNBO0FGMC9FRjs7QUUvOUVRO0VBaENOO0VBQ0E7QUZtZ0ZGOztBRWgrRVE7RUFoQ047RUFDQTtBRm9nRkY7O0FFeitFUTtFQWhDTjtFQUNBO0FGNmdGRjs7QUUxK0VRO0VBaENOO0VBQ0E7QUY4Z0ZGOztBRW4vRVE7RUFoQ047RUFDQTtBRnVoRkY7O0FFcC9FUTtFQWhDTjtFQUNBO0FGd2hGRjs7QUU3L0VRO0VBaENOO0VBQ0E7QUZpaUZGOztBRTkvRVE7RUFoQ047RUFDQTtBRmtpRkY7O0FFdmdGUTtFQWhDTjtFQUNBO0FGMmlGRjs7QUV4Z0ZRO0VBaENOO0VBQ0E7QUY0aUZGOztBR2xqRkE7Ozs7RUFBQTtBQU1BOzt3RUFBQTtBQUlBO0VBQ0U7RUFDQTtFQUFvQjtFQUNwQjtFQUFnQztFQUNoQztFQUNBO0VBQ0E7QUhxakZGOztBR2xqRkE7OztFQUdFO0VBQThCO0VBQzlCO0FIc2pGRjs7QUduakZBOztFQUVFO0VBQTBCO0VBQzFCO0FIdWpGRjs7QUdwakZBO0VBQ0U7RUFBWTtFQUNaO0FId2pGRjs7QUdyakZBOzt3RUFBQTtBQUlBO0VBQ0U7RUFBbUI7RUFDbkI7RUFBVztBSHlqRmI7O0FHdGpGQTs7RUFFRTtFQUFnQjtBSDBqRmxCOztBR3ZqRkE7RUFDRTtFQUFvQjtBSDJqRnRCOztBR3hqRkE7RUFDRTtFQUFnQjtBSDRqRmxCOztBR3pqRkE7RUFDRTtFQUFlO0FINmpGakI7O0FHMWpGQTtFQUNFO0VBQXFCO0VBQ3JCO0VBQ0E7RUFDQTtBSDhqRkY7O0FHM2pGQTtFQUNFO0VBQStCO0FIK2pGakM7O0FHNWpGQTs7RUFFRTtFQUFrQjtBSGdrRnBCOztBRzdqRkE7Ozs7RUFJRTtFQUFtQztBSGlrRnJDOztBRzlqRkE7RUFDRTtFQUFnQjtBSGtrRmxCOztBRy9qRkE7O0VBRUU7RUFBcUI7QUhta0Z2Qjs7QUdoa0ZBO0FBQ0E7O0VBRUU7RUFDQTtFQUNBO0VBQ0E7QUhta0ZGOztBR2hrRkE7RUFDRTtBSG1rRkY7O0FHaGtGQTtFQUNFO0FIbWtGRjs7QUdoa0ZBOzt3RUFBQTtBQUlBO0VBQ0U7QUhra0ZGOztBRy9qRkE7QUFDQTtFQUNFO0FIa2tGRjs7QUcvakZBOztFQUVFO0VBQWM7QUhta0ZoQjs7QUdoa0ZBO0VBQ0U7RUFBK0I7RUFDL0I7RUFBc0I7QUhxa0Z4Qjs7QUdsa0ZBOztFQUVFO0VBQTBCO0FIc2tGNUI7O0FHbmtGQTtFQUNFO0VBQWdCO0VBQ2hCO0VBQWtCO0FId2tGcEI7O0FHcmtGQTs7Ozs7RUFLRTtFQUFlO0FIeWtGakI7O0FHdGtGQTtFQUNFO0VBQW1CO0FIMGtGckI7O0FHdmtGQTtFQUNFO0VBQW1CO0FIMmtGckI7O0FHeGtGQTs7RUFFRTtFQUFzQjtBSDRrRnhCOztBR3prRkE7QUFDQTs7Ozs7RUFLRTtFQUNBO0FINGtGRjs7QUd6a0ZBO0FBQ0E7Ozs7RUFJRTtFQUNBO0FINGtGRjs7QUd6a0ZBO0FBQ0E7Ozs7RUFJRTtBSDRrRkY7O0FHemtGQTs7OztFQUlFO0VBQTRCO0FINmtGOUI7O0FHMWtGQTtBQUNBOzs7O0VBSUU7RUFDQTtBSDZrRkY7O0FHMWtGQTtBQUNBO0VBQ0U7RUFBdUI7RUFDdkI7RUFBMEI7QUgra0Y1Qjs7QUc1a0ZBO0VBQ0U7RUFBZTtBSGdsRmpCOztBRzdrRkE7RUFDRTtFQUFxQjtBSGlsRnZCOztBRzlrRkE7RUFDRTtFQUFXO0VBQ1g7RUFBZ0I7RUFDaEI7RUFBZ0I7RUFDaEI7RUFBaUI7RUFDakI7RUFBcUI7RUFDckI7RUFBaUI7QUh1bEZuQjs7QUdwbEZBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFBZTtBSHdsRmpCOztBR3JsRkE7O3dFQUFBO0FBSUE7RUFDRTtFQUFvQjtBSHdsRnRCOztBR3JsRkE7QUFDQTtFQUNFO0FId2xGRjs7QUdybEZBOzt3RUFBQTtBQUlBO0FBQ0E7RUFDRTtJQUNFO0VIdWxGRjs7RUdybEZBO0lBQ0U7SUFDQTtFSHdsRkY7QUFDRjtBR3JsRkE7QUFDQTtFQUNFO0FIdWxGRjs7QUdwbEZBO0FBQ0E7RUFDRTtBSHVsRkY7O0FHcGxGQTtBQUNBO0VBQ0U7QUh1bEZGOztBSTEyRkU7RUNIQTtBTGkzRkY7O0FJOTJGRTtFQ0hBO0FMcTNGRjs7QUlsM0ZFO0VDSEE7QUx5M0ZGOztBSXQzRkU7RUNIQTtBTDYzRkY7O0FJMTNGRTtFQ0hBO0FMaTRGRjs7QUk5M0ZFO0VDSEE7QUxxNEZGOztBSWw0RkU7RUNIQTtBTHk0RkY7O0FJdDRGRTtFQ0hBO0FMNjRGRjs7QUkxNEZFO0VDSEE7QUxpNUZGOztBSTk0RkU7RUNIQTtBTHE1RkY7O0FJbDVGRTtFQ0hBO0FMeTVGRjs7QUl0NUZFO0VDSEE7QUw2NUZGOztBSTE1RkU7RUNIQTtBTGk2RkY7O0FJOTVGRTtFQ0hBO0FMcTZGRjs7QUlsNkZFO0VDSEE7QUx5NkZGOztBSXQ2RkU7RUNIQTtBTDY2RkY7O0FJMTZGRTtFQ0hBO0FMaTdGRjs7QUk5NkZFO0VDSEE7QUxxN0ZGOztBSWw3RkU7RUNIQTtBTHk3RkY7O0FJdDdGRTtFQ0hBO0FMNjdGRjs7QUkxN0ZFO0VDSEE7QUxpOEZGOztBSTk3RkU7RUNIQTtBTHE4RkY7O0FJbDhGRTtFQ0hBO0FMeThGRjs7QUl0OEZFO0VDSEE7QUw2OEZGOztBSTE4RkU7RUNIQTtBTGk5RkY7O0FNcjhGRTtFQUNFO0FOdzhGSjtBTXI4RkU7RUFDRTtFQUNBO0VBQ0E7QU51OEZKOztBTWw4RkU7RUFDRTtBTnE4Rko7QU1sOEZFO0VBQ0U7RUFDQTtFQUNBO0FObzhGSjs7QU0vN0ZFO0VBRUU7QU5pOEZKO0FNOTdGRTtFQUNFO0VBQ0E7QU5nOEZKO0FNNzdGRTtFQUNFO0FOKzdGSjs7QU0xN0ZFO0VBQ0U7QU42N0ZKOztBTXg3RkU7RUFDRTtBTjI3Rko7O0FNcjdGRTs7O0VBRUU7QU55N0ZKO0FNdDdGRTs7O0VBRUU7QU55N0ZKO0FNdDdGRTs7OztFQUdFO0FOeTdGSjs7QU1wN0ZFO0VBQ0U7QU51N0ZKO0FNcDdGRTtFQUNFO0FOczdGSjs7QU1qN0ZFO0VBQ0U7QU5vN0ZKO0FNajdGRTtFQUNFO0FObTdGSjs7QU05NkZFO0VBRUU7QU5nN0ZKO0FNNzZGRTtFQUNFO0FOKzZGSjtBTTU2RkU7RUFDRTtFQUNBO0FOODZGSjtBTTM2RkU7RUFHRTtBTjI2Rko7O0FNdDZGRTtFQUNFO0FOeTZGSjtBTXQ2RkU7RUFDRTtFQUNBO0FOdzZGSjtBTXI2RkU7RUFDRTtFQUNBO0FOdTZGSjs7QU1sNkZFO0VBQ0U7QU5xNkZKO0FNbDZGRTtFQUNFO0VBQ0E7RUFDQTtBTm82Rko7O0FNeGpHRTtFQUVFO0FOMGpHSjtBTXZqR0U7RUFDRTtBTnlqR0o7O0FNL2pHRTtFQUVFO0FOaWtHSjtBTTlqR0U7RUFDRTtBTmdrR0o7O0FNdGtHRTtFQUVFO0FOd2tHSjtBTXJrR0U7RUFDRTtBTnVrR0o7QU16NkZFO0VBQ0U7RUFDQTtBTjI2Rko7O0FNamxHRTtFQUVFO0FObWxHSjtBTWhsR0U7RUFDRTtBTmtsR0o7QU0zNkZFO0VBQ0U7RUFDQTtBTjY2Rko7O0FNNWxHRTtFQUVFO0FOOGxHSjtBTTNsR0U7RUFDRTtBTjZsR0o7QU03NkZFO0VBQ0U7RUFDQTtBTis2Rko7O0FNdm1HRTtFQUVFO0FOeW1HSjtBTXRtR0U7RUFDRTtBTndtR0o7QU0vNkZFO0VBQ0U7RUFDQTtBTmk3Rko7QU05NkZFO0VBQ0U7QU5nN0ZKOztBTXJuR0U7RUFFRTtBTnVuR0o7QU1wbkdFO0VBQ0U7QU5zbkdKO0FNaDdGRTtFQUNFO0VBQ0E7QU5rN0ZKOztBTWhvR0U7RUFFRTtBTmtvR0o7QU0vbkdFO0VBQ0U7QU5pb0dKO0FNbDdGRTtFQUNFO0VBQ0E7QU5vN0ZKOztBTTNvR0U7RUFFRTtBTjZvR0o7QU0xb0dFO0VBQ0U7QU40b0dKO0FNcDdGRTtFQUNFO0FOczdGSjtBTW43RkU7RUFDRTtBTnE3Rko7QU1sN0ZFO0VBQ0U7QU5vN0ZKOztBTTNwR0U7RUFFRTtBTjZwR0o7QU0xcEdFO0VBQ0U7QU40cEdKO0FNcDdGRTtFQUNFO0FOczdGSjtBTW43RkU7RUFDRTtBTnE3Rko7QU1sN0ZFO0VBQ0U7QU5vN0ZKOztBTTNxR0U7RUFFRTtBTjZxR0o7QU0xcUdFO0VBQ0U7QU40cUdKO0FNcDdGRTtFQUNFO0FOczdGSjtBTW43RkU7RUFDRTtBTnE3Rko7QU1sN0ZFO0VBQ0U7QU5vN0ZKOztBTTNyR0U7RUFFRTtBTjZyR0o7QU0xckdFO0VBQ0U7QU40ckdKO0FNcDdGRTtFQUNFO0FOczdGSjtBTW43RkU7RUFDRTtBTnE3Rko7QU1sN0ZFO0VBQ0U7QU5vN0ZKOztBTTNzR0U7RUFFRTtBTjZzR0o7QU0xc0dFO0VBQ0U7QU40c0dKO0FNcDdGRTtFQUNFO0VBQ0E7QU5zN0ZKOztBTXR0R0U7RUFFRTtBTnd0R0o7QU1ydEdFO0VBQ0U7QU51dEdKO0FNdDdGRTtFQUNFO0VBQ0E7QU53N0ZKOztBTWp1R0U7RUFFRTtBTm11R0o7QU1odUdFO0VBQ0U7QU5rdUdKO0FNeDdGRTtFQUNFO0FOMDdGSjs7QU0zdUdFO0VBRUU7QU42dUdKO0FNMXVHRTtFQUNFO0FONHVHSjtBTTE3RkU7RUFDRTtBTjQ3Rko7O0FPdHZHQTtFQUNFO0VBQ0EsZUM4UHFCO0VEN1ByQixnQkM4UHVCO0FSMi9GekI7O0FTenZHRTtFQUNFLGtCRDhQcUI7RUM3UHJCLGNEOFBpQjtFQzdQakIsbUJEOFBtQjtBUjgvRnZCO0FTMXZHRTtFQUNFLG9CRDRQVztBUmdnR2Y7QVMxdkdFO0VBQ0UscUJEMFBVO0VIclFaO0FMd3dHRjs7QVN6dkdFO0VBQ0U7RUFDQTtBVDR2R0o7QVMxdkdFO0VBQ0U7RUFDQTtBVDR2R0o7O0FTbHdHRTtFQUNFO0VBQ0E7QVRxd0dKO0FTbndHRTtFQUNFO0VBQ0E7QVRxd0dKOztBVTN4R0E7RUFDRSxlRkllO0VFSGY7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVjh4R0Y7O0FVNXhHQTtFQUNFO0FWK3hHRjs7QVU3eEdBO0VBQ0UsaUNGUmlCO0VFU2pCLGdCRlBpQjtBUnV5R25CO0FVOXhHRTs7RUFFRTtBVmd5R0o7O0FVN3hHQTtFQUNFO0lBQ0U7RVZneUdGO0FBQ0Y7QVdwekdBO0VBRkU7QVh5ekdGOztBV3B6R0E7RUFMRTtBWDZ6R0Y7O0FZN3pHRTtFQUNFO0FaZzBHSjs7QWFqMEdFO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBYm8wR0o7QWFsMEdFO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBYm8wR0o7QWFsMEdFO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBYm8wR0o7QWFsMEdFO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBYm8wR0o7QWFsMEdFO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBYm8wR0o7QWFsMEdFO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBYm8wR0o7QWFsMEdFO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBYm8wR0o7QWFsMEdFO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBYm8wR0o7QWFsMEdFO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBYm8wR0o7QWFsMEdFO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBYm8wR0o7QWFsMEdFO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBYm8wR0o7QWFsMEdFO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FibzBHSjtBYWwwR0U7RUFDRTtBYm8wR0o7O0FjdjVHUTtFQURGO0lBRUk7RWQyNUdSO0FBQ0Y7QWM3NUdRO0VBREY7SUFFSTtFZGc2R1I7QUFDRjtBY2w2R1E7RUFERjtJQUVJO0VkcTZHUjtBQUNGO0FjdjZHUTtFQURGO0lBRUk7RWQwNkdSO0FBQ0Y7QWM1NkdRO0VBREY7SUFFSTtFZCs2R1I7QUFDRjtBY2o3R1E7RUFERjtJQUVJO0VkbzdHUjtBQUNGO0FjdDdHUTtFQURGO0lBRUk7RWR5N0dSO0FBQ0Y7QWMzN0dRO0VBREY7SUFFSTtFZDg3R1I7QUFDRjtBY2g4R1E7RUFERjtJQUVJO0VkbThHUjtBQUNGO0FjcjhHUTtFQURGO0lBRUk7RWR3OEdSO0FBQ0Y7QWMxOEdRO0VBREY7SUFFSTtFZDY4R1I7QUFDRjtBYy84R1E7RUFERjtJQUVJO0VkazlHUjtBQUNGO0FjcDlHUTtFQURGO0lBRUk7RWR1OUdSO0FBQ0Y7O0FlMzlHQTs7RUFFRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWY4OUdGOztBZ0J2K0dNO0VBQ0U7QWhCMCtHUjtBZ0IzK0dNO0VBQ0U7QWhCNitHUjtBZ0I5K0dNO0VBQ0U7QWhCZy9HUjtBZ0JqL0dNO0VBQ0U7QWhCbS9HUjtBZ0JwL0dNO0VBQ0U7QWhCcy9HUjtBZ0J2L0dNO0VBQ0U7QWhCeS9HUjtBZ0J2L0dFO0VBQ0U7QWhCeS9HSjs7QWlCOS9HSTtFQUNFO0FqQmlnSE47QWlCbGdISTtFQUNFO0FqQm9nSE47QWlCcmdISTtFQUNFO0FqQnVnSE47QWlCeGdISTtFQUNFO0FqQjBnSE47QWlCM2dISTtFQUNFO0FqQjZnSE47QWlCOWdISTtFQUNFO0FqQmdoSE47O0FrQmwrR0U7RUFXTTtBbEIyOUdSOztBa0J0K0dFO0VBV007QWxCKzlHUjs7QWtCMStHRTtFQVdNO0FsQm0rR1I7O0FrQjkrR0U7RUFXTTtBbEJ1K0dSOztBa0JsL0dFO0VBV007QWxCMitHUjs7QWtCdC9HRTtFQVdNO0FsQisrR1I7O0FrQjEvR0U7RUFXTTtBbEJtL0dSOztBa0I5L0dFO0VBV007QWxCdS9HUjs7QWtCbGdIRTtFQVdNO0FsQjIvR1I7O0FrQnRnSEU7RUFXTTtBbEIrL0dSOztBa0IxZ0hFO0VBV007QWxCbWdIUjs7QWtCOWdIRTtFQVdNO0FsQnVnSFI7O0FrQmxoSEU7RUFXTTtBbEIyZ0hSOztBa0J0aEhFO0VBV007QWxCK2dIUjs7QWtCMWhIRTtFQVdNO0FsQm1oSFI7O0FrQjloSEU7RUFXTTtBbEJ1aEhSOztBa0JsaUhFO0VBV007QWxCMmhIUjs7QWtCdGlIRTtFQVdNO0FsQitoSFI7O0FrQjFpSEU7RUFXTTtBbEJtaUhSOztBa0I5aUhFO0VBV007QWxCdWlIUjs7QWtCbGpIRTtFQVdNO0FsQjJpSFI7O0FrQnRqSEU7RUFXTTtBbEIraUhSOztBa0IxakhFO0VBV007QWxCbWpIUjs7QWtCOWpIRTtFQVdNO0FsQnVqSFI7O0FrQmxrSEU7RUFXTTtBbEIyakhSOztBa0J0a0hFO0VBV007QWxCK2pIUjs7QWtCMWtIRTtFQVdNO0FsQm1rSFI7O0FrQjlrSEU7RUFXTTtBbEJ1a0hSOztBa0JsbEhFO0VBV007QWxCMmtIUjs7QWtCdGxIRTtFQVdNO0FsQitrSFI7O0FrQjFsSEU7RUFXTTtBbEJtbEhSOztBa0I5bEhFO0VBV007QWxCdWxIUjs7QWtCbG1IRTtFQVdNO0FsQjJsSFI7O0FrQnRtSEU7RUFXTTtBbEIrbEhSOztBa0IxbUhFO0VBV007QWxCbW1IUjs7QWtCOW1IRTtFQVdNO0FsQnVtSFI7O0FrQmxuSEU7RUFXTTtBbEIybUhSOztBa0J0bkhFO0VBV007QWxCK21IUjs7QWtCMW5IRTtFQVdNO0FsQm1uSFI7O0FrQjluSEU7RUFXTTtBbEJ1bkhSOztBa0Jsb0hFO0VBV007QWxCMm5IUjs7QWtCdG9IRTtFQVdNO0FsQituSFI7O0FrQjFvSEU7RUFXTTtBbEJtb0hSOztBa0I5b0hFO0VBV007QWxCdW9IUjs7QWtCbHBIRTtFQVdNO0FsQjJvSFI7O0FrQnRwSEU7RUFXTTtBbEIrb0hSOztBa0IxcEhFO0VBV007QWxCbXBIUjs7QWtCOXBIRTtFQVdNO0FsQnVwSFI7O0FrQmxxSEU7RUFXTTtBbEIycEhSOztBa0J0cUhFO0VBV007QWxCK3BIUjs7QWtCMXFIRTtFQVdNO0FsQm1xSFI7O0FrQjlxSEU7RUFXTTtBbEJ1cUhSOztBa0JsckhFO0VBV007QWxCMnFIUjs7QWtCdHJIRTtFQVdNO0FsQitxSFI7O0FrQjFySEU7RUFXTTtBbEJtckhSOztBa0I5ckhFO0VBV007QWxCdXJIUjs7QWtCbHNIRTtFQVdNO0FsQjJySFI7O0FrQnRzSEU7RUFXTTtBbEIrckhSOztBa0Ixc0hFO0VBV007QWxCbXNIUjs7QWtCOXNIRTtFQVdNO0FsQnVzSFI7O0FrQmx0SEU7RUFXTTtBbEIyc0hSOztBa0J0dEhFO0VBV007QWxCK3NIUjs7QWtCMXRIRTtFQVdNO0FsQm10SFI7O0FrQjl0SEU7RUFXTTtBbEJ1dEhSOztBa0JsdUhFO0VBV007QWxCMnRIUjs7QWtCdHVIRTtFQVdNO0FsQit0SFI7O0FrQjF1SEU7RUFXTTtBbEJtdUhSOztBa0I5dUhFO0VBV007QWxCdXVIUjs7QWtCbHZIRTtFQVdNO0FsQjJ1SFI7O0FrQnR2SEU7RUFXTTtBbEIrdUhSOztBa0IxdkhFO0VBV007QWxCbXZIUjs7QWtCOXZIRTtFQVdNO0FsQnV2SFI7O0FrQmx3SEU7RUFXTTtBbEIydkhSOztBa0J0d0hFO0VBV007QWxCK3ZIUjs7QWtCMXdIRTtFQVdNO0FsQm13SFI7O0FrQjl3SEU7RUFXTTtBbEJ1d0hSOztBa0JseEhFO0VBV007QWxCMndIUjs7QWtCdHhIRTtFQVdNO0FsQit3SFI7O0FrQjF4SEU7RUFXTTtBbEJteEhSOztBa0I5eEhFO0VBV007QWxCdXhIUjs7QWtCbHlIRTtFQVdNO0FsQjJ4SFI7O0FrQnR5SEU7RUFXTTtBbEIreEhSOztBa0IxeUhFO0VBV007QWxCbXlIUjs7QWtCOXlIRTtFQVdNO0FsQnV5SFI7O0FrQmx6SEU7RUFXTTtBbEIyeUhSOztBa0J0ekhFO0VBV007QWxCK3lIUjs7QWtCMXpIRTtFQVdNO0FsQm16SFI7O0FrQjl6SEU7RUFXTTtBbEJ1ekhSOztBa0JsMEhFO0VBV007QWxCMnpIUjs7QWtCdDBIRTtFQVdNO0FsQit6SFI7O0FrQjEwSEU7RUFXTTtFQUFBO0FsQm8wSFI7O0FrQi8wSEU7RUFXTTtFQUFBO0FsQnkwSFI7O0FrQnAxSEU7RUFXTTtFQUFBO0FsQjgwSFI7O0FrQnoxSEU7RUFXTTtFQUFBO0FsQm0xSFI7O0FrQjkxSEU7RUFXTTtFQUFBO0FsQncxSFI7O0FrQm4ySEU7RUFXTTtFQUFBO0FsQjYxSFI7O0FrQngySEU7RUFXTTtFQUFBO0FsQmsySFI7O0FrQjcySEU7RUFXTTtFQUFBO0FsQnUySFI7O0FrQmwzSEU7RUFXTTtFQUFBO0FsQjQySFI7O0FrQnYzSEU7RUFXTTtFQUFBO0FsQmkzSFI7O0FrQjUzSEU7RUFXTTtFQUFBO0FsQnMzSFI7O0FrQmo0SEU7RUFXTTtFQUFBO0FsQjIzSFI7O0FrQnQ0SEU7RUFXTTtFQUFBO0FsQmc0SFI7O0FrQjM0SEU7RUFXTTtFQUFBO0FsQnE0SFI7O0FrQmg1SEU7RUFXTTtFQUFBO0FsQjA0SFI7O0FrQnI1SEU7RUFXTTtFQUFBO0FsQis0SFI7O0FrQjE1SEU7RUFXTTtFQUFBO0FsQm81SFI7O0FrQi81SEU7RUFXTTtFQUFBO0FsQnk1SFI7O0FrQnA2SEU7RUFXTTtFQUFBO0FsQjg1SFI7O0FrQno2SEU7RUFXTTtFQUFBO0FsQm02SFI7O0FrQjk2SEU7RUFXTTtFQUFBO0FsQnc2SFI7O0FrQm43SEU7RUFXTTtFQUFBO0FsQjY2SFI7O0FrQng3SEU7RUFXTTtFQUFBO0FsQms3SFI7O0FrQjc3SEU7RUFXTTtFQUFBO0FsQnU3SFI7O0FrQmw4SEU7RUFXTTtFQUFBO0FsQjQ3SFI7O0FrQnY4SEU7RUFXTTtFQUFBO0FsQmk4SFI7O0FrQjU4SEU7RUFXTTtFQUFBO0FsQnM4SFI7O0FrQmo5SEU7RUFXTTtFQUFBO0FsQjI4SFI7O0FrQnQ5SEU7RUFXTTtFQUFBO0FsQmc5SFI7O0FrQjM5SEU7RUFXTTtFQUFBO0FsQnE5SFI7O0FrQmgrSEU7RUFXTTtFQUFBO0FsQjA5SFI7O0FrQnIrSEU7RUFXTTtFQUFBO0FsQis5SFI7O0FrQjErSEU7RUFXTTtFQUFBO0FsQm8rSFI7O0FrQi8rSEU7RUFXTTtFQUFBO0FsQnkrSFI7O0FrQnAvSEU7RUFXTTtFQUFBO0FsQjgrSFI7O0FrQnovSEU7RUFXTTtFQUFBO0FsQm0vSFI7O0FrQjkvSEU7RUFXTTtBbEJ1L0hSOztBa0JsZ0lFO0VBV007QWxCMi9IUjs7QWtCdGdJRTtFQVdNO0FsQisvSFI7O0FrQjFnSUU7RUFXTTtBbEJtZ0lSOztBa0I5Z0lFO0VBV007QWxCdWdJUjs7QWtCbGhJRTtFQVdNO0FsQjJnSVI7O0FrQnRoSUU7RUFXTTtBbEIrZ0lSOztBa0IxaElFO0VBV007QWxCbWhJUjs7QWtCOWhJRTtFQVdNO0FsQnVoSVI7O0FrQmxpSUU7RUFXTTtBbEIyaElSOztBa0J0aUlFO0VBV007QWxCK2hJUjs7QWtCMWlJRTtFQVdNO0FsQm1pSVI7O0FrQjlpSUU7RUFXTTtBbEJ1aUlSOztBa0JsaklFO0VBV007QWxCMmlJUjs7QWtCdGpJRTtFQVdNO0FsQitpSVI7O0FrQjFqSUU7RUFXTTtBbEJtaklSOztBa0I5aklFO0VBV007QWxCdWpJUjs7QWtCbGtJRTtFQVdNO0FsQjJqSVI7O0FrQnRrSUU7RUFXTTtBbEIraklSOztBa0Ixa0lFO0VBV007QWxCbWtJUjs7QWtCOWtJRTtFQVdNO0FsQnVrSVI7O0FrQmxsSUU7RUFXTTtBbEIya0lSOztBa0J0bElFO0VBV007QWxCK2tJUjs7QWtCMWxJRTtFQVdNO0FsQm1sSVI7O0FrQjlsSUU7RUFXTTtBbEJ1bElSOztBa0JsbUlFO0VBV007QWxCMmxJUjs7QWtCdG1JRTtFQVdNO0FsQitsSVI7O0FrQjFtSUU7RUFXTTtBbEJtbUlSOztBa0I5bUlFO0VBV007QWxCdW1JUjs7QWtCbG5JRTtFQVdNO0FsQjJtSVI7O0FrQnRuSUU7RUFXTTtBbEIrbUlSOztBa0IxbklFO0VBV007QWxCbW5JUjs7QWtCOW5JRTtFQVdNO0FsQnVuSVI7O0FrQmxvSUU7RUFXTTtBbEIybklSOztBa0J0b0lFO0VBV007QWxCK25JUjs7QWtCMW9JRTtFQVdNO0FsQm1vSVI7O0FrQjlvSUU7RUFXTTtBbEJ1b0lSOztBa0JscElFO0VBV007QWxCMm9JUjs7QWtCdHBJRTtFQVdNO0FsQitvSVI7O0FrQjFwSUU7RUFXTTtBbEJtcElSOztBa0I5cElFO0VBV007QWxCdXBJUjs7QWtCbHFJRTtFQVdNO0FsQjJwSVI7O0FrQnRxSUU7RUFXTTtBbEIrcElSOztBa0IxcUlFO0VBV007QWxCbXFJUjs7QWtCOXFJRTtFQVdNO0FsQnVxSVI7O0FrQmxySUU7RUFXTTtBbEIycUlSOztBa0J0cklFO0VBV007QWxCK3FJUjs7QWtCMXJJRTtFQVdNO0FsQm1ySVI7O0FrQjlySUU7RUFXTTtBbEJ1cklSOztBa0Jsc0lFO0VBV007QWxCMnJJUjs7QWtCdHNJRTtFQVdNO0FsQitySVI7O0FrQjFzSUU7RUFXTTtBbEJtc0lSOztBa0I5c0lFO0VBV007QWxCdXNJUjs7QWtCbHRJRTtFQVdNO0FsQjJzSVI7O0FrQnR0SUU7RUFXTTtBbEIrc0lSOztBa0IxdElFO0VBV007QWxCbXRJUjs7QWtCOXRJRTtFQVdNO0FsQnV0SVI7O0FrQmx1SUU7RUFXTTtBbEIydElSOztBa0J0dUlFO0VBV007QWxCK3RJUjs7QWtCMXVJRTtFQVdNO0FsQm11SVI7O0FrQjl1SUU7RUFXTTtBbEJ1dUlSOztBa0JsdklFO0VBV007QWxCMnVJUjs7QWtCdHZJRTtFQVdNO0FsQit1SVI7O0FrQjF2SUU7RUFXTTtBbEJtdklSOztBa0I5dklFO0VBV007QWxCdXZJUjs7QWtCbHdJRTtFQVdNO0FsQjJ2SVI7O0FrQnR3SUU7RUFXTTtBbEIrdklSOztBa0Ixd0lFO0VBV007QWxCbXdJUjs7QWtCOXdJRTtFQVdNO0FsQnV3SVI7O0FrQmx4SUU7RUFXTTtBbEIyd0lSOztBa0J0eElFO0VBV007QWxCK3dJUjs7QWtCMXhJRTtFQVdNO0FsQm14SVI7O0FrQjl4SUU7RUFXTTtBbEJ1eElSOztBa0JseUlFO0VBV007QWxCMnhJUjs7QWtCdHlJRTtFQVdNO0FsQit4SVI7O0FrQjF5SUU7RUFXTTtBbEJteUlSOztBa0I5eUlFO0VBV007QWxCdXlJUjs7QWtCbHpJRTtFQVdNO0FsQjJ5SVI7O0FrQnR6SUU7RUFXTTtBbEIreUlSOztBa0IxeklFO0VBV007QWxCbXpJUjs7QWtCOXpJRTtFQVdNO0FsQnV6SVI7O0FrQmwwSUU7RUFXTTtBbEIyeklSOztBa0J0MElFO0VBV007QWxCK3pJUjs7QWtCMTBJRTtFQVdNO0FsQm0wSVI7O0FrQjkwSUU7RUFXTTtBbEJ1MElSOztBa0JsMUlFO0VBV007QWxCMjBJUjs7QWtCdDFJRTtFQVdNO0FsQiswSVI7O0FrQjExSUU7RUFXTTtBbEJtMUlSOztBa0I5MUlFO0VBV007QWxCdTFJUjs7QWtCbDJJRTtFQVdNO0FsQjIxSVI7O0FrQnQySUU7RUFXTTtBbEIrMUlSOztBa0IxMklFO0VBV007QWxCbTJJUjs7QWtCOTJJRTtFQVdNO0FsQnUySVI7O0FrQmwzSUU7RUFXTTtBbEIyMklSOztBa0J0M0lFO0VBV007QWxCKzJJUjs7QWtCMTNJRTtFQVdNO0FsQm0zSVI7O0FrQjkzSUU7RUFXTTtBbEJ1M0lSOztBa0JsNElFO0VBV007QWxCMjNJUjs7QWtCdDRJRTtFQVdNO0FsQiszSVI7O0FrQjE0SUU7RUFXTTtBbEJtNElSOztBa0I5NElFO0VBV007QWxCdTRJUjs7QWtCbDVJRTtFQVdNO0FsQjI0SVI7O0FrQnQ1SUU7RUFXTTtBbEIrNElSOztBa0IxNUlFO0VBV007QWxCbTVJUjs7QWtCOTVJRTtFQVdNO0FsQnU1SVI7O0FrQmw2SUU7RUFXTTtBbEIyNUlSOztBa0J0NklFO0VBV007QWxCKzVJUjs7QWtCMTZJRTtFQVdNO0FsQm02SVI7O0FrQjk2SUU7RUFXTTtBbEJ1NklSOztBa0JsN0lFO0VBV007QWxCMjZJUjs7QWtCdDdJRTtFQVdNO0FsQis2SVI7O0FrQjE3SUU7RUFXTTtBbEJtN0lSOztBa0I5N0lFO0VBV007QWxCdTdJUjs7QWtCbDhJRTtFQVdNO0FsQjI3SVI7O0FrQnQ4SUU7RUFXTTtBbEIrN0lSOztBa0IxOElFO0VBV007QWxCbThJUjs7QWtCOThJRTtFQVdNO0FsQnU4SVI7O0FrQmw5SUU7RUFXTTtBbEIyOElSOztBa0J0OUlFO0VBV007QWxCKzhJUjs7QWtCMTlJRTtFQVdNO0FsQm05SVI7O0FrQjk5SUU7RUFXTTtBbEJ1OUlSOztBa0JsK0lFO0VBV007QWxCMjlJUjs7QWtCdCtJRTtFQVdNO0FsQis5SVI7O0FrQjErSUU7RUFXTTtBbEJtK0lSOztBa0I5K0lFO0VBV007QWxCdStJUjs7QWtCbC9JRTtFQVdNO0FsQjIrSVI7O0FrQnQvSUU7RUFXTTtBbEIrK0lSOztBa0IxL0lFO0VBV007QWxCbS9JUjs7QWtCOS9JRTtFQVdNO0FsQnUvSVI7O0FrQmxnSkU7RUFXTTtBbEIyL0lSOztBa0J0Z0pFO0VBV007QWxCKy9JUjs7QWtCMWdKRTtFQVdNO0FsQm1nSlI7O0FrQjlnSkU7RUFXTTtBbEJ1Z0pSOztBa0JsaEpFO0VBV007QWxCMmdKUjs7QWtCdGhKRTtFQVdNO0FsQitnSlI7O0FrQjFoSkU7RUFXTTtBbEJtaEpSOztBa0I5aEpFO0VBV007QWxCdWhKUjs7QWtCbGlKRTtFQVdNO0FsQjJoSlI7O0FrQnRpSkU7RUFXTTtBbEIraEpSOztBa0IxaUpFO0VBV007QWxCbWlKUjs7QWtCOWlKRTtFQVdNO0FsQnVpSlI7O0FrQmxqSkU7RUFXTTtBbEIyaUpSOztBa0J0akpFO0VBV007QWxCK2lKUjs7QWtCMWpKRTtFQVdNO0FsQm1qSlI7O0FrQjlqSkU7RUFXTTtBbEJ1akpSOztBa0Jsa0pFO0VBV007QWxCMmpKUjs7QWtCdGtKRTtFQVdNO0FsQitqSlI7O0FrQjFrSkU7RUFXTTtBbEJta0pSOztBa0I5a0pFO0VBV007QWxCdWtKUjs7QWtCbGxKRTtFQVdNO0FsQjJrSlI7O0FrQnRsSkU7RUFXTTtBbEIra0pSOztBa0IxbEpFO0VBV007QWxCbWxKUjs7QWtCOWxKRTtFQVdNO0FsQnVsSlI7O0FrQmxtSkU7RUFXTTtBbEIybEpSOztBa0J0bUpFO0VBV007QWxCK2xKUjs7QWtCMW1KRTtFQVdNO0FsQm1tSlI7O0FrQjltSkU7RUFXTTtBbEJ1bUpSOztBa0JsbkpFO0VBV007QWxCMm1KUjs7QWtCdG5KRTtFQVdNO0FsQittSlI7O0FrQjFuSkU7RUFXTTtBbEJtbkpSOztBa0I5bkpFO0VBV007RUFBQTtBbEJ3bkpSOztBa0Jub0pFO0VBV007RUFBQTtBbEI2bkpSOztBa0J4b0pFO0VBV007RUFBQTtBbEJrb0pSOztBa0I3b0pFO0VBV007RUFBQTtBbEJ1b0pSOztBa0JscEpFO0VBV007RUFBQTtBbEI0b0pSOztBa0J2cEpFO0VBV007RUFBQTtBbEJpcEpSOztBa0I1cEpFO0VBV007RUFBQTtBbEJzcEpSOztBa0JqcUpFO0VBV007RUFBQTtBbEIycEpSOztBa0J0cUpFO0VBV007RUFBQTtBbEJncUpSOztBa0IzcUpFO0VBV007RUFBQTtBbEJxcUpSOztBa0JockpFO0VBV007RUFBQTtBbEIwcUpSOztBa0JyckpFO0VBV007RUFBQTtBbEIrcUpSOztBa0IxckpFO0VBV007RUFBQTtBbEJvckpSOztBa0IvckpFO0VBV007RUFBQTtBbEJ5ckpSOztBa0Jwc0pFO0VBV007RUFBQTtBbEI4ckpSOztBa0J6c0pFO0VBV007RUFBQTtBbEJtc0pSOztBa0I5c0pFO0VBV007RUFBQTtBbEJ3c0pSOztBa0JudEpFO0VBV007RUFBQTtBbEI2c0pSOztBa0J4dEpFO0VBV007RUFBQTtBbEJrdEpSOztBa0I3dEpFO0VBV007RUFBQTtBbEJ1dEpSOztBa0JsdUpFO0VBV007RUFBQTtBbEI0dEpSOztBa0J2dUpFO0VBV007RUFBQTtBbEJpdUpSOztBa0I1dUpFO0VBV007RUFBQTtBbEJzdUpSOztBa0JqdkpFO0VBV007RUFBQTtBbEIydUpSOztBa0J0dkpFO0VBV007RUFBQTtBbEJndkpSOztBa0IzdkpFO0VBV007RUFBQTtBbEJxdkpSOztBa0Jod0pFO0VBV007RUFBQTtBbEIwdkpSOztBa0Jyd0pFO0VBV007RUFBQTtBbEIrdkpSOztBa0Ixd0pFO0VBV007RUFBQTtBbEJvd0pSOztBa0Ivd0pFO0VBV007RUFBQTtBbEJ5d0pSOztBa0JweEpFO0VBV007RUFBQTtBbEI4d0pSOztBa0J6eEpFO0VBV007RUFBQTtBbEJteEpSOztBa0I5eEpFO0VBV007QWxCdXhKUjs7QWtCbHlKRTtFQVdNO0FsQjJ4SlI7O0FrQnR5SkU7RUFXTTtBbEIreEpSOztBa0IxeUpFO0VBV007QWxCbXlKUjs7QWtCOXlKRTtFQVdNO0FsQnV5SlI7O0FrQmx6SkU7RUFXTTtBbEIyeUpSOztBa0J0ekpFO0VBV007QWxCK3lKUjs7QWtCMXpKRTtFQVdNO0FsQm16SlI7O0FrQjl6SkU7RUFXTTtBbEJ1ekpSOztBa0JsMEpFO0VBV007QWxCMnpKUjs7QWtCdDBKRTtFQVdNO0FsQit6SlI7O0FrQjEwSkU7RUFXTTtBbEJtMEpSOztBa0I5MEpFO0VBV007QWxCdTBKUjs7QWtCbDFKRTtFQVdNO0FsQjIwSlI7O0FrQnQxSkU7RUFXTTtBbEIrMEpSOztBa0IxMUpFO0VBV007QWxCbTFKUjs7QWtCOTFKRTtFQVdNO0FsQnUxSlI7O0FrQmwySkU7RUFXTTtBbEIyMUpSOztBa0J0MkpFO0VBV007QWxCKzFKUjs7QWtCMTJKRTtFQVdNO0FsQm0ySlI7O0FrQjkySkU7RUFXTTtBbEJ1MkpSOztBa0JsM0pFO0VBV007QWxCMjJKUjs7QWtCdDNKRTtFQVdNO0FsQisySlI7O0FrQjEzSkU7RUFXTTtBbEJtM0pSOztBa0I5M0pFO0VBV007QWxCdTNKUjs7QWtCbDRKRTtFQVdNO0FsQjIzSlI7O0FrQnQ0SkU7RUFXTTtBbEIrM0pSOztBa0IxNEpFO0VBV007QWxCbTRKUjs7QWtCOTRKRTtFQVdNO0FsQnU0SlI7O0FrQmw1SkU7RUFXTTtBbEIyNEpSOztBa0J0NUpFO0VBV007QWxCKzRKUjs7QWtCMTVKRTtFQVdNO0FsQm01SlI7O0FrQjk1SkU7RUFXTTtBbEJ1NUpSOztBa0JsNkpFO0VBV007QWxCMjVKUjs7QWtCdDZKRTtFQVdNO0FsQis1SlI7O0FrQjE2SkU7RUFXTTtBbEJtNkpSOztBa0I5NkpFO0VBV007QWxCdTZKUjs7QWtCbDdKRTtFQVdNO0FsQjI2SlI7O0FrQnQ3SkU7RUFXTTtBbEIrNkpSOztBa0IxN0pFO0VBV007QWxCbTdKUjs7QWtCOTdKRTtFQVdNO0FsQnU3SlI7O0FrQmw4SkU7RUFXTTtBbEIyN0pSOztBa0J0OEpFO0VBV007QWxCKzdKUjs7QWtCMThKRTtFQVdNO0FsQm04SlI7O0FrQjk4SkU7RUFXTTtBbEJ1OEpSOztBa0JsOUpFO0VBV007QWxCMjhKUjs7QWtCdDlKRTtFQVdNO0FsQis4SlI7O0FrQjE5SkU7RUFXTTtBbEJtOUpSOztBa0I5OUpFO0VBV007QWxCdTlKUjs7QWtCbCtKRTtFQVdNO0FsQjI5SlI7O0FrQnQrSkU7RUFXTTtBbEIrOUpSOztBa0IxK0pFO0VBV007QWxCbStKUjs7QWtCOStKRTtFQVdNO0FsQnUrSlI7O0FrQmwvSkU7RUFXTTtBbEIyK0pSOztBa0J0L0pFO0VBV007QWxCKytKUjs7QWtCMS9KRTtFQVdNO0FsQm0vSlI7O0FrQjkvSkU7RUFXTTtBbEJ1L0pSOztBa0JsZ0tFO0VBV007QWxCMi9KUjs7QWtCdGdLRTtFQVdNO0FsQisvSlI7O0FrQjFnS0U7RUFXTTtBbEJtZ0tSOztBa0I5Z0tFO0VBV007QWxCdWdLUjs7QWtCbGhLRTtFQVdNO0FsQjJnS1I7O0FrQnRoS0U7RUFXTTtBbEIrZ0tSOztBa0IxaEtFO0VBV007QWxCbWhLUjs7QWtCOWhLRTtFQVdNO0FsQnVoS1I7O0FrQmxpS0U7RUFXTTtBbEIyaEtSOztBa0J0aUtFO0VBV007QWxCK2hLUjs7QWtCMWlLRTtFQVdNO0FsQm1pS1I7O0FrQjlpS0U7RUFXTTtBbEJ1aUtSOztBa0JsaktFO0VBV007QWxCMmlLUjs7QWtCdGpLRTtFQVdNO0FsQitpS1I7O0FrQjFqS0U7RUFXTTtBbEJtaktSOztBa0I5aktFO0VBV007QWxCdWpLUjs7QWtCbGtLRTtFQVdNO0FsQjJqS1I7O0FrQnRrS0U7RUFXTTtBbEIraktSOztBa0Ixa0tFO0VBV007QWxCbWtLUjs7QWtCOWtLRTtFQVdNO0FsQnVrS1I7O0FrQmxsS0U7RUFXTTtBbEIya0tSOztBa0J0bEtFO0VBV007QWxCK2tLUjs7QWtCMWxLRTtFQVdNO0FsQm1sS1I7O0FrQjlsS0U7RUFXTTtBbEJ1bEtSOztBa0JsbUtFO0VBV007QWxCMmxLUjs7QWtCdG1LRTtFQVdNO0FsQitsS1I7O0FrQjFtS0U7RUFXTTtBbEJtbUtSOztBa0I5bUtFO0VBV007QWxCdW1LUjs7QWtCbG5LRTtFQVdNO0FsQjJtS1I7O0FrQnRuS0U7RUFXTTtBbEIrbUtSOztBa0IxbktFO0VBV007QWxCbW5LUjs7QWtCOW5LRTtFQVdNO0FsQnVuS1I7O0FrQmxvS0U7RUFXTTtBbEIybktSOztBa0J0b0tFO0VBV007QWxCK25LUjs7QWtCMW9LRTtFQVdNO0FsQm1vS1I7O0FrQjlvS0U7RUFXTTtBbEJ1b0tSOztBa0JscEtFO0VBV007QWxCMm9LUjs7QWtCdHBLRTtFQVdNO0FsQitvS1I7O0FrQjFwS0U7RUFXTTtBbEJtcEtSOztBa0I5cEtFO0VBV007QWxCdXBLUjs7QWtCbHFLRTtFQVdNO0FsQjJwS1I7O0FrQnRxS0U7RUFXTTtBbEIrcEtSOztBa0IxcUtFO0VBV007QWxCbXFLUjs7QWtCOXFLRTtFQVdNO0FsQnVxS1I7O0FrQmxyS0U7RUFXTTtBbEIycUtSOztBa0J0cktFO0VBV007QWxCK3FLUjs7QWtCMXJLRTtFQVdNO0FsQm1yS1I7O0FrQjlyS0U7RUFXTTtBbEJ1cktSOztBa0Jsc0tFO0VBV007QWxCMnJLUjs7QWtCdHNLRTtFQVdNO0FsQityS1I7O0FrQjFzS0U7RUFXTTtBbEJtc0tSOztBa0I5c0tFO0VBV007QWxCdXNLUjs7QWtCbHRLRTtFQVdNO0FsQjJzS1I7O0FrQnR0S0U7RUFXTTtBbEIrc0tSOztBa0IxdEtFO0VBV007QWxCbXRLUjs7QWtCOXRLRTtFQVdNO0FsQnV0S1I7O0FrQmx1S0U7RUFXTTtBbEIydEtSOztBa0J0dUtFO0VBV007QWxCK3RLUjs7QWtCMXVLRTtFQVdNO0FsQm11S1I7O0FrQjl1S0U7RUFXTTtBbEJ1dUtSOztBa0JsdktFO0VBV007QWxCMnVLUjs7QWtCdHZLRTtFQVdNO0FsQit1S1I7O0FrQjF2S0U7RUFXTTtBbEJtdktSOztBa0I5dktFO0VBV007QWxCdXZLUjs7QWtCbHdLRTtFQVdNO0FsQjJ2S1I7O0FrQnR3S0U7RUFXTTtBbEIrdktSOztBa0Ixd0tFO0VBV007QWxCbXdLUjs7QWtCOXdLRTtFQVdNO0FsQnV3S1I7O0FrQmx4S0U7RUFXTTtBbEIyd0tSOztBa0J0eEtFO0VBV007QWxCK3dLUjs7QWtCMXhLRTtFQVdNO0FsQm14S1I7O0FrQjl4S0U7RUFXTTtBbEJ1eEtSOztBa0JseUtFO0VBV007QWxCMnhLUjs7QWtCdHlLRTtFQVdNO0FsQit4S1I7O0FrQjF5S0U7RUFXTTtBbEJteUtSOztBa0I5eUtFO0VBV007QWxCdXlLUjs7QWtCbHpLRTtFQVdNO0FsQjJ5S1I7O0FrQnR6S0U7RUFXTTtBbEIreUtSOztBa0IxektFO0VBV007QWxCbXpLUjs7QWtCOXpLRTtFQVdNO0FsQnV6S1I7O0FrQmwwS0U7RUFXTTtBbEIyektSOztBa0J0MEtFO0VBV007QWxCK3pLUjs7QWtCMTBLRTtFQVdNO0FsQm0wS1I7O0FrQjkwS0U7RUFXTTtBbEJ1MEtSOztBa0JsMUtFO0VBV007QWxCMjBLUjs7QWtCdDFLRTtFQVdNO0FsQiswS1I7O0FrQjExS0U7RUFXTTtBbEJtMUtSOztBa0I5MUtFO0VBV007QWxCdTFLUjs7QWtCbDJLRTtFQVdNO0VBQUE7QWxCNDFLUjs7QWtCdjJLRTtFQVdNO0VBQUE7QWxCaTJLUjs7QWtCNTJLRTtFQVdNO0VBQUE7QWxCczJLUjs7QWtCajNLRTtFQVdNO0VBQUE7QWxCMjJLUjs7QWtCdDNLRTtFQVdNO0VBQUE7QWxCZzNLUjs7QWtCMzNLRTtFQVdNO0VBQUE7QWxCcTNLUjs7QWtCaDRLRTtFQVdNO0VBQUE7QWxCMDNLUjs7QWtCcjRLRTtFQVdNO0VBQUE7QWxCKzNLUjs7QWtCMTRLRTtFQVdNO0VBQUE7QWxCbzRLUjs7QWtCLzRLRTtFQVdNO0VBQUE7QWxCeTRLUjs7QWtCcDVLRTtFQVdNO0VBQUE7QWxCODRLUjs7QWtCejVLRTtFQVdNO0VBQUE7QWxCbTVLUjs7QWtCOTVLRTtFQVdNO0VBQUE7QWxCdzVLUjs7QWtCbjZLRTtFQVdNO0VBQUE7QWxCNjVLUjs7QWtCeDZLRTtFQVdNO0VBQUE7QWxCazZLUjs7QWtCNzZLRTtFQVdNO0VBQUE7QWxCdTZLUjs7QWtCbDdLRTtFQVdNO0VBQUE7QWxCNDZLUjs7QWtCdjdLRTtFQVdNO0VBQUE7QWxCaTdLUjs7QWtCNTdLRTtFQVdNO0VBQUE7QWxCczdLUjs7QWtCajhLRTtFQVdNO0VBQUE7QWxCMjdLUjs7QWtCdDhLRTtFQVdNO0VBQUE7QWxCZzhLUjs7QWtCMzhLRTtFQVdNO0VBQUE7QWxCcThLUjs7QWtCaDlLRTtFQVdNO0VBQUE7QWxCMDhLUjs7QWtCcjlLRTtFQVdNO0VBQUE7QWxCKzhLUjs7QWtCMTlLRTtFQVdNO0VBQUE7QWxCbzlLUjs7QWtCLzlLRTtFQVdNO0VBQUE7QWxCeTlLUjs7QWtCcCtLRTtFQVdNO0VBQUE7QWxCODlLUjs7QWtCeitLRTtFQVdNO0VBQUE7QWxCbStLUjs7QWtCOStLRTtFQVdNO0VBQUE7QWxCdytLUjs7QWtCbi9LRTtFQVdNO0VBQUE7QWxCNitLUjs7QWtCeC9LRTtFQVdNO0VBQUE7QWxCay9LUjs7QWtCNy9LRTtFQVdNO0VBQUE7QWxCdS9LUjs7QWtCbGdMRTtFQVdNO0VBQUE7QWxCNC9LUjs7QWtCdmdMRTtFQVdNO0VBQUE7QWxCaWdMUjs7QWtCNWdMRTtFQVdNO0FsQnFnTFI7O0FrQmhoTEU7RUFXTTtBbEJ5Z0xSOztBa0JwaExFO0VBV007QWxCNmdMUjs7QWtCeGhMRTtFQVdNO0FsQmloTFI7O0FrQjVoTEU7RUFXTTtBbEJxaExSOztBa0JoaUxFO0VBV007QWxCeWhMUjs7QWtCcGlMRTtFQVdNO0FsQjZoTFI7O0FrQnhpTEU7RUFXTTtBbEJpaUxSOztBa0I1aUxFO0VBV007QWxCcWlMUjs7QWtCaGpMRTtFQVdNO0FsQnlpTFI7O0FrQnBqTEU7RUFXTTtBbEI2aUxSOztBa0J4akxFO0VBV007QWxCaWpMUjs7QWtCNWpMRTtFQVdNO0FsQnFqTFI7O0FrQmhrTEU7RUFXTTtBbEJ5akxSOztBa0Jwa0xFO0VBV007QWxCNmpMUjs7QWtCeGtMRTtFQVdNO0FsQmlrTFI7O0FrQjVrTEU7RUFXTTtBbEJxa0xSOztBa0JobExFO0VBV007QWxCeWtMUjs7QWtCcGxMRTtFQVdNO0FsQjZrTFI7O0FrQnhsTEU7RUFXTTtBbEJpbExSOztBa0I1bExFO0VBV007QWxCcWxMUjs7QWtCaG1MRTtFQVdNO0FsQnlsTFI7O0FrQnBtTEU7RUFXTTtBbEI2bExSOztBa0J4bUxFO0VBV007QWxCaW1MUjs7QWtCNW1MRTtFQVdNO0FsQnFtTFI7O0FrQmhuTEU7RUFXTTtBbEJ5bUxSOztBa0JwbkxFO0VBV007QWxCNm1MUjs7QWtCeG5MRTtFQVdNO0FsQmluTFI7O0FrQjVuTEU7RUFXTTtBbEJxbkxSOztBa0Job0xFO0VBV007QWxCeW5MUjs7QWtCcG9MRTtFQVdNO0FsQjZuTFI7O0FrQnhvTEU7RUFXTTtBbEJpb0xSOztBa0I1b0xFO0VBV007QWxCcW9MUjs7QWtCaHBMRTtFQVdNO0FsQnlvTFI7O0FrQnBwTEU7RUFXTTtBbEI2b0xSOztBa0J4cExFO0VBV007QWxCaXBMUjs7QWtCNXBMRTtFQVdNO0FsQnFwTFI7O0FrQmhxTEU7RUFXTTtBbEJ5cExSOztBa0JwcUxFO0VBV007QWxCNnBMUjs7QWtCeHFMRTtFQVdNO0FsQmlxTFI7O0FrQjVxTEU7RUFXTTtBbEJxcUxSOztBa0JockxFO0VBV007QWxCeXFMUjs7QWtCcHJMRTtFQVdNO0FsQjZxTFI7O0FrQnhyTEU7RUFXTTtBbEJpckxSOztBa0I1ckxFO0VBV007QWxCcXJMUjs7QWtCaHNMRTtFQVdNO0FsQnlyTFI7O0FrQnBzTEU7RUFXTTtBbEI2ckxSOztBa0J4c0xFO0VBV007QWxCaXNMUjs7QWtCNXNMRTtFQVdNO0FsQnFzTFI7O0FrQmh0TEU7RUFXTTtBbEJ5c0xSOztBa0JwdExFO0VBV007QWxCNnNMUjs7QWtCeHRMRTtFQVdNO0FsQml0TFI7O0FrQjV0TEU7RUFXTTtBbEJxdExSOztBa0JodUxFO0VBV007QWxCeXRMUjs7QWtCcHVMRTtFQVdNO0FsQjZ0TFI7O0FrQnh1TEU7RUFXTTtBbEJpdUxSOztBa0I1dUxFO0VBV007QWxCcXVMUjs7QWtCaHZMRTtFQVdNO0FsQnl1TFI7O0FrQnB2TEU7RUFXTTtBbEI2dUxSOztBa0J4dkxFO0VBV007QWxCaXZMUjs7QWtCNXZMRTtFQVdNO0FsQnF2TFI7O0FrQmh3TEU7RUFXTTtBbEJ5dkxSOztBa0Jwd0xFO0VBV007QWxCNnZMUjs7QWtCeHdMRTtFQVdNO0FsQml3TFI7O0FrQjV3TEU7RUFXTTtBbEJxd0xSOztBa0JoeExFO0VBV007QWxCeXdMUjs7QWtCcHhMRTtFQVdNO0FsQjZ3TFI7O0FrQnh4TEU7RUFXTTtBbEJpeExSOztBa0I1eExFO0VBV007QWxCcXhMUjs7QWtCaHlMRTtFQVdNO0FsQnl4TFI7O0FrQnB5TEU7RUFXTTtBbEI2eExSOztBa0J4eUxFO0VBV007QWxCaXlMUjs7QWtCNXlMRTtFQVdNO0FsQnF5TFI7O0FrQmh6TEU7RUFXTTtBbEJ5eUxSOztBa0JwekxFO0VBV007QWxCNnlMUjs7QWtCeHpMRTtFQVdNO0FsQml6TFI7O0FrQjV6TEU7RUFXTTtBbEJxekxSOztBa0JoMExFO0VBV007QWxCeXpMUjs7QWtCcDBMRTtFQVdNO0FsQjZ6TFI7O0FrQngwTEU7RUFXTTtBbEJpMExSOztBa0I1MExFO0VBV007QWxCcTBMUjs7QWtCaDFMRTtFQVdNO0FsQnkwTFI7O0FrQnAxTEU7RUFXTTtBbEI2MExSOztBa0J4MUxFO0VBV007QWxCaTFMUjs7QWtCNTFMRTtFQVdNO0FsQnExTFI7O0FrQmgyTEU7RUFXTTtBbEJ5MUxSOztBa0JwMkxFO0VBV007QWxCNjFMUjs7QWtCeDJMRTtFQVdNO0FsQmkyTFI7O0FrQjUyTEU7RUFXTTtBbEJxMkxSOztBa0JoM0xFO0VBV007QWxCeTJMUjs7QWtCcDNMRTtFQVdNO0FsQjYyTFI7O0FrQngzTEU7RUFXTTtBbEJpM0xSOztBa0I1M0xFO0VBV007QWxCcTNMUjs7QWtCaDRMRTtFQVdNO0FsQnkzTFI7O0FrQnA0TEU7RUFXTTtBbEI2M0xSOztBa0J4NExFO0VBV007QWxCaTRMUjs7QWtCNTRMRTtFQVdNO0FsQnE0TFI7O0FrQmg1TEU7RUFXTTtBbEJ5NExSOztBa0JwNUxFO0VBV007QWxCNjRMUjs7QWtCeDVMRTtFQVdNO0FsQmk1TFI7O0FrQjU1TEU7RUFXTTtBbEJxNUxSOztBa0JoNkxFO0VBV007QWxCeTVMUjs7QWtCcDZMRTtFQVdNO0FsQjY1TFI7O0FrQng2TEU7RUFXTTtBbEJpNkxSOztBa0I1NkxFO0VBV007QWxCcTZMUjs7QWtCaDdMRTtFQVdNO0FsQnk2TFI7O0FrQnA3TEU7RUFXTTtBbEI2NkxSOztBa0J4N0xFO0VBV007QWxCaTdMUjs7QWtCNTdMRTtFQVdNO0FsQnE3TFI7O0FrQmg4TEU7RUFXTTtBbEJ5N0xSOztBa0JwOExFO0VBV007QWxCNjdMUjs7QWtCeDhMRTtFQVdNO0FsQmk4TFI7O0FrQjU4TEU7RUFXTTtBbEJxOExSOztBa0JoOUxFO0VBV007QWxCeThMUjs7QWtCcDlMRTtFQVdNO0FsQjY4TFI7O0FrQng5TEU7RUFXTTtBbEJpOUxSOztBa0I1OUxFO0VBV007QWxCcTlMUjs7QWtCaCtMRTtFQVdNO0FsQnk5TFI7O0FrQnArTEU7RUFXTTtBbEI2OUxSOztBa0J4K0xFO0VBV007QWxCaStMUjs7QWtCNStMRTtFQVdNO0FsQnErTFI7O0FrQmgvTEU7RUFXTTtBbEJ5K0xSOztBa0JwL0xFO0VBV007QWxCNitMUjs7QWtCeC9MRTtFQVdNO0FsQmkvTFI7O0FrQjUvTEU7RUFXTTtBbEJxL0xSOztBa0JoZ01FO0VBV007QWxCeS9MUjs7QWtCcGdNRTtFQVdNO0FsQjYvTFI7O0FrQnhnTUU7RUFXTTtBbEJpZ01SOztBa0I1Z01FO0VBV007QWxCcWdNUjs7QWtCaGhNRTtFQVdNO0FsQnlnTVI7O0FrQnBoTUU7RUFXTTtBbEI2Z01SOztBa0J4aE1FO0VBV007QWxCaWhNUjs7QWtCNWhNRTtFQVdNO0FsQnFoTVI7O0FrQmhpTUU7RUFXTTtBbEJ5aE1SOztBa0JwaU1FO0VBV007QWxCNmhNUjs7QWtCeGlNRTtFQVdNO0FsQmlpTVI7O0FrQjVpTUU7RUFXTTtBbEJxaU1SOztBa0Joak1FO0VBV007QWxCeWlNUjs7QWtCcGpNRTtFQVdNO0FsQjZpTVI7O0FrQnhqTUU7RUFXTTtBbEJpak1SOztBa0I1ak1FO0VBV007QWxCcWpNUjs7QWtCaGtNRTtFQVdNO0FsQnlqTVI7O0FrQnBrTUU7RUFXTTtBbEI2ak1SOztBa0J4a01FO0VBV007RUFBQTtBbEJra01SOztBa0I3a01FO0VBV007RUFBQTtBbEJ1a01SOztBa0JsbE1FO0VBV007RUFBQTtBbEI0a01SOztBa0J2bE1FO0VBV007RUFBQTtBbEJpbE1SOztBa0I1bE1FO0VBV007RUFBQTtBbEJzbE1SOztBa0JqbU1FO0VBV007RUFBQTtBbEIybE1SOztBa0J0bU1FO0VBV007RUFBQTtBbEJnbU1SOztBa0IzbU1FO0VBV007RUFBQTtBbEJxbU1SOztBa0Jobk1FO0VBV007RUFBQTtBbEIwbU1SOztBa0Jybk1FO0VBV007RUFBQTtBbEIrbU1SOztBa0Ixbk1FO0VBV007RUFBQTtBbEJvbk1SOztBa0Ivbk1FO0VBV007RUFBQTtBbEJ5bk1SOztBa0Jwb01FO0VBV007RUFBQTtBbEI4bk1SOztBa0J6b01FO0VBV007RUFBQTtBbEJtb01SOztBa0I5b01FO0VBV007RUFBQTtBbEJ3b01SOztBa0JucE1FO0VBV007RUFBQTtBbEI2b01SOztBa0J4cE1FO0VBV007RUFBQTtBbEJrcE1SOztBa0I3cE1FO0VBV007RUFBQTtBbEJ1cE1SOztBa0JscU1FO0VBV007RUFBQTtBbEI0cE1SOztBa0J2cU1FO0VBV007RUFBQTtBbEJpcU1SOztBa0I1cU1FO0VBV007RUFBQTtBbEJzcU1SOztBa0Jqck1FO0VBV007RUFBQTtBbEIycU1SOztBa0J0ck1FO0VBV007RUFBQTtBbEJnck1SOztBa0Izck1FO0VBV007RUFBQTtBbEJxck1SOztBa0Joc01FO0VBV007RUFBQTtBbEIwck1SOztBa0Jyc01FO0VBV007RUFBQTtBbEIrck1SOztBa0Ixc01FO0VBV007RUFBQTtBbEJvc01SOztBa0Ivc01FO0VBV007RUFBQTtBbEJ5c01SOztBa0JwdE1FO0VBV007QWxCNnNNUjs7QWtCeHRNRTtFQVdNO0FsQml0TVI7O0FrQjV0TUU7RUFXTTtBbEJxdE1SOztBa0JodU1FO0VBV007QWxCeXRNUjs7QWtCcHVNRTtFQVdNO0FsQjZ0TVI7O0FrQnh1TUU7RUFXTTtBbEJpdU1SOztBa0I1dU1FO0VBV007QWxCcXVNUjs7QWtCaHZNRTtFQVdNO0FsQnl1TVI7O0FrQnB2TUU7RUFXTTtBbEI2dU1SOztBa0J4dk1FO0VBV007QWxCaXZNUjs7QWtCNXZNRTtFQVdNO0FsQnF2TVI7O0FrQmh3TUU7RUFXTTtBbEJ5dk1SOztBa0Jwd01FO0VBV007QWxCNnZNUjs7QWtCeHdNRTtFQVdNO0FsQml3TVI7O0FrQjV3TUU7RUFXTTtBbEJxd01SOztBa0JoeE1FO0VBV007QWxCeXdNUjs7QWtCcHhNRTtFQVdNO0FsQjZ3TVI7O0FrQnh4TUU7RUFXTTtBbEJpeE1SOztBa0I1eE1FO0VBV007QWxCcXhNUjs7QWtCaHlNRTtFQVdNO0FsQnl4TVI7O0FrQnB5TUU7RUFXTTtBbEI2eE1SOztBa0J4eU1FO0VBV007QWxCaXlNUjs7QWtCNXlNRTtFQVdNO0FsQnF5TVI7O0FrQmh6TUU7RUFXTTtBbEJ5eU1SOztBa0Jwek1FO0VBV007QWxCNnlNUjs7QWtCeHpNRTtFQVdNO0FsQml6TVI7O0FrQjV6TUU7RUFXTTtBbEJxek1SOztBa0JoME1FO0VBV007QWxCeXpNUjs7QWtCcDBNRTtFQVdNO0FsQjZ6TVI7O0FrQngwTUU7RUFXTTtBbEJpME1SOztBa0I1ME1FO0VBV007QWxCcTBNUjs7QWtCaDFNRTtFQVdNO0FsQnkwTVI7O0FrQnAxTUU7RUFXTTtBbEI2ME1SOztBa0J4MU1FO0VBV007QWxCaTFNUjs7QWtCNTFNRTtFQVdNO0FsQnExTVI7O0FrQmgyTUU7RUFXTTtBbEJ5MU1SOztBa0JwMk1FO0VBV007QWxCNjFNUjs7QWtCeDJNRTtFQVdNO0FsQmkyTVI7O0FrQjUyTUU7RUFXTTtBbEJxMk1SOztBa0JoM01FO0VBV007QWxCeTJNUjs7QWtCcDNNRTtFQVdNO0FsQjYyTVI7O0FrQngzTUU7RUFXTTtBbEJpM01SOztBa0I1M01FO0VBV007QWxCcTNNUjs7QWtCaDRNRTtFQVdNO0VBQUE7QWxCMDNNUjs7QWtCcjRNRTtFQVdNO0VBQUE7RUFBQTtBbEJnNE1SOztBa0IzNE1FO0VBV007QWxCbzRNUjs7QWtCLzRNRTtFQVdNO0FsQnc0TVI7O0FrQm41TUU7RUFXTTtBbEI0NE1SOztBa0J2NU1FO0VBV007QWxCZzVNUjs7QWtCMzVNRTtFQVdNO0VBQUE7RUFBQTtFQUFBO0VBQUE7QWxCdzVNUjs7QWtCbjZNRTtFQVdNO0VBQUE7RUFBQTtFQUFBO0VBQUE7QWxCZzZNUjs7QWtCMzZNRTtFQVdNO0VBQUE7RUFBQTtFQUFBO0VBQUE7QWxCdzZNUjs7QWtCbjdNRTtFQVdNO0VBQUE7RUFBQTtFQUFBO0VBQUE7QWxCZzdNUjs7QWtCMzdNRTtFQVdNO0VBQUE7RUFBQTtFQUFBO0VBQUE7QWxCdzdNUjs7QWtCbjhNRTtFQVdNO0VBQUE7RUFBQTtFQUFBO0VBQUE7QWxCZzhNUjs7QWtCMzhNRTtFQVdNO0VBQUE7RUFBQTtFQUFBO0VBQUE7QWxCdzhNUjs7QWtCbjlNRTtFQVdNO0VBQUE7RUFBQTtFQUFBO0VBQUE7QWxCZzlNUjs7QWtCMzlNRTtFQVdNO0VBQUE7RUFBQTtFQUFBO0VBQUE7QWxCdzlNUjs7QWtCbitNRTtFQVdNO0VBQUE7RUFBQTtFQUFBO0VBQUE7QWxCZytNUjs7QWtCMytNRTtFQVdNO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtBbEJ5K01SOztBa0JwL01FO0VBV007RUFBQTtFQUFBO0VBQUE7RUFBQTtBbEJpL01SOztBa0I1L01FO0VBV007RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0FsQjAvTVI7O0FtQnhpTkk7RURtQ0Y7SUFXTTtFbEIrL01OOztFa0IxZ05BO0lBV007RWxCbWdOTjs7RWtCOWdOQTtJQVdNO0VsQnVnTk47O0VrQmxoTkE7SUFXTTtFbEIyZ05OOztFa0J0aE5BO0lBV007RWxCK2dOTjs7RWtCMWhOQTtJQVdNO0VsQm1oTk47O0VrQjloTkE7SUFXTTtFbEJ1aE5OOztFa0JsaU5BO0lBV007RWxCMmhOTjs7RWtCdGlOQTtJQVdNO0VsQitoTk47O0VrQjFpTkE7SUFXTTtFbEJtaU5OOztFa0I5aU5BO0lBV007RWxCdWlOTjs7RWtCbGpOQTtJQVdNO0VsQjJpTk47O0VrQnRqTkE7SUFXTTtFbEIraU5OOztFa0Ixak5BO0lBV007RWxCbWpOTjs7RWtCOWpOQTtJQVdNO0VsQnVqTk47O0VrQmxrTkE7SUFXTTtFbEIyak5OOztFa0J0a05BO0lBV007RWxCK2pOTjs7RWtCMWtOQTtJQVdNO0VsQm1rTk47O0VrQjlrTkE7SUFXTTtFbEJ1a05OOztFa0JsbE5BO0lBV007RWxCMmtOTjs7RWtCdGxOQTtJQVdNO0VsQitrTk47O0VrQjFsTkE7SUFXTTtFbEJtbE5OOztFa0I5bE5BO0lBV007RWxCdWxOTjs7RWtCbG1OQTtJQVdNO0VsQjJsTk47O0VrQnRtTkE7SUFXTTtFbEIrbE5OOztFa0IxbU5BO0lBV007RWxCbW1OTjs7RWtCOW1OQTtJQVdNO0VsQnVtTk47O0VrQmxuTkE7SUFXTTtFbEIybU5OOztFa0J0bk5BO0lBV007RWxCK21OTjs7RWtCMW5OQTtJQVdNO0VsQm1uTk47O0VrQjluTkE7SUFXTTtFbEJ1bk5OOztFa0Jsb05BO0lBV007RWxCMm5OTjs7RWtCdG9OQTtJQVdNO0VsQituTk47O0VrQjFvTkE7SUFXTTtFbEJtb05OOztFa0I5b05BO0lBV007RWxCdW9OTjs7RWtCbHBOQTtJQVdNO0VsQjJvTk47O0VrQnRwTkE7SUFXTTtFbEIrb05OOztFa0IxcE5BO0lBV007RWxCbXBOTjs7RWtCOXBOQTtJQVdNO0VsQnVwTk47O0VrQmxxTkE7SUFXTTtFbEIycE5OOztFa0J0cU5BO0lBV007RWxCK3BOTjs7RWtCMXFOQTtJQVdNO0VsQm1xTk47O0VrQjlxTkE7SUFXTTtFbEJ1cU5OOztFa0Jsck5BO0lBV007RWxCMnFOTjs7RWtCdHJOQTtJQVdNO0VsQitxTk47O0VrQjFyTkE7SUFXTTtFbEJtck5OOztFa0I5ck5BO0lBV007RWxCdXJOTjs7RWtCbHNOQTtJQVdNO0VsQjJyTk47O0VrQnRzTkE7SUFXTTtFbEIrck5OOztFa0Ixc05BO0lBV007RWxCbXNOTjs7RWtCOXNOQTtJQVdNO0VsQnVzTk47O0VrQmx0TkE7SUFXTTtFbEIyc05OOztFa0J0dE5BO0lBV007RWxCK3NOTjs7RWtCMXROQTtJQVdNO0VsQm10Tk47O0VrQjl0TkE7SUFXTTtFbEJ1dE5OOztFa0JsdU5BO0lBV007RWxCMnROTjs7RWtCdHVOQTtJQVdNO0VsQit0Tk47O0VrQjF1TkE7SUFXTTtFbEJtdU5OOztFa0I5dU5BO0lBV007RWxCdXVOTjs7RWtCbHZOQTtJQVdNO0VsQjJ1Tk47O0VrQnR2TkE7SUFXTTtFbEIrdU5OOztFa0Ixdk5BO0lBV007RWxCbXZOTjs7RWtCOXZOQTtJQVdNO0VsQnV2Tk47O0VrQmx3TkE7SUFXTTtFbEIydk5OOztFa0J0d05BO0lBV007RWxCK3ZOTjs7RWtCMXdOQTtJQVdNO0VsQm13Tk47O0VrQjl3TkE7SUFXTTtFbEJ1d05OOztFa0JseE5BO0lBV007RWxCMndOTjs7RWtCdHhOQTtJQVdNO0VsQit3Tk47O0VrQjF4TkE7SUFXTTtFbEJteE5OOztFa0I5eE5BO0lBV007RWxCdXhOTjs7RWtCbHlOQTtJQVdNO0VsQjJ4Tk47O0VrQnR5TkE7SUFXTTtFbEIreE5OOztFa0IxeU5BO0lBV007RWxCbXlOTjs7RWtCOXlOQTtJQVdNO0VsQnV5Tk47O0VrQmx6TkE7SUFXTTtFbEIyeU5OOztFa0J0ek5BO0lBV007RWxCK3lOTjs7RWtCMXpOQTtJQVdNO0VsQm16Tk47O0VrQjl6TkE7SUFXTTtFbEJ1ek5OOztFa0JsME5BO0lBV007RWxCMnpOTjs7RWtCdDBOQTtJQVdNO0VsQit6Tk47O0VrQjEwTkE7SUFXTTtFbEJtME5OOztFa0I5ME5BO0lBV007RWxCdTBOTjs7RWtCbDFOQTtJQVdNO0lBQUE7RWxCNDBOTjs7RWtCdjFOQTtJQVdNO0lBQUE7RWxCaTFOTjs7RWtCNTFOQTtJQVdNO0lBQUE7RWxCczFOTjs7RWtCajJOQTtJQVdNO0lBQUE7RWxCMjFOTjs7RWtCdDJOQTtJQVdNO0lBQUE7RWxCZzJOTjs7RWtCMzJOQTtJQVdNO0lBQUE7RWxCcTJOTjs7RWtCaDNOQTtJQVdNO0lBQUE7RWxCMDJOTjs7RWtCcjNOQTtJQVdNO0lBQUE7RWxCKzJOTjs7RWtCMTNOQTtJQVdNO0lBQUE7RWxCbzNOTjs7RWtCLzNOQTtJQVdNO0lBQUE7RWxCeTNOTjs7RWtCcDROQTtJQVdNO0lBQUE7RWxCODNOTjs7RWtCejROQTtJQVdNO0lBQUE7RWxCbTROTjs7RWtCOTROQTtJQVdNO0lBQUE7RWxCdzROTjs7RWtCbjVOQTtJQVdNO0lBQUE7RWxCNjROTjs7RWtCeDVOQTtJQVdNO0lBQUE7RWxCazVOTjs7RWtCNzVOQTtJQVdNO0lBQUE7RWxCdTVOTjs7RWtCbDZOQTtJQVdNO0lBQUE7RWxCNDVOTjs7RWtCdjZOQTtJQVdNO0lBQUE7RWxCaTZOTjs7RWtCNTZOQTtJQVdNO0lBQUE7RWxCczZOTjs7RWtCajdOQTtJQVdNO0lBQUE7RWxCMjZOTjs7RWtCdDdOQTtJQVdNO0lBQUE7RWxCZzdOTjs7RWtCMzdOQTtJQVdNO0lBQUE7RWxCcTdOTjs7RWtCaDhOQTtJQVdNO0lBQUE7RWxCMDdOTjs7RWtCcjhOQTtJQVdNO0lBQUE7RWxCKzdOTjs7RWtCMThOQTtJQVdNO0lBQUE7RWxCbzhOTjs7RWtCLzhOQTtJQVdNO0lBQUE7RWxCeThOTjs7RWtCcDlOQTtJQVdNO0lBQUE7RWxCODhOTjs7RWtCejlOQTtJQVdNO0lBQUE7RWxCbTlOTjs7RWtCOTlOQTtJQVdNO0lBQUE7RWxCdzlOTjs7RWtCbitOQTtJQVdNO0lBQUE7RWxCNjlOTjs7RWtCeCtOQTtJQVdNO0lBQUE7RWxCaytOTjs7RWtCNytOQTtJQVdNO0lBQUE7RWxCdStOTjs7RWtCbC9OQTtJQVdNO0lBQUE7RWxCNCtOTjs7RWtCdi9OQTtJQVdNO0lBQUE7RWxCaS9OTjs7RWtCNS9OQTtJQVdNO0lBQUE7RWxCcy9OTjs7RWtCamdPQTtJQVdNO0lBQUE7RWxCMi9OTjs7RWtCdGdPQTtJQVdNO0VsQisvTk47O0VrQjFnT0E7SUFXTTtFbEJtZ09OOztFa0I5Z09BO0lBV007RWxCdWdPTjs7RWtCbGhPQTtJQVdNO0VsQjJnT047O0VrQnRoT0E7SUFXTTtFbEIrZ09OOztFa0IxaE9BO0lBV007RWxCbWhPTjs7RWtCOWhPQTtJQVdNO0VsQnVoT047O0VrQmxpT0E7SUFXTTtFbEIyaE9OOztFa0J0aU9BO0lBV007RWxCK2hPTjs7RWtCMWlPQTtJQVdNO0VsQm1pT047O0VrQjlpT0E7SUFXTTtFbEJ1aU9OOztFa0Jsak9BO0lBV007RWxCMmlPTjs7RWtCdGpPQTtJQVdNO0VsQitpT047O0VrQjFqT0E7SUFXTTtFbEJtak9OOztFa0I5ak9BO0lBV007RWxCdWpPTjs7RWtCbGtPQTtJQVdNO0VsQjJqT047O0VrQnRrT0E7SUFXTTtFbEIrak9OOztFa0Ixa09BO0lBV007RWxCbWtPTjs7RWtCOWtPQTtJQVdNO0VsQnVrT047O0VrQmxsT0E7SUFXTTtFbEIya09OOztFa0J0bE9BO0lBV007RWxCK2tPTjs7RWtCMWxPQTtJQVdNO0VsQm1sT047O0VrQjlsT0E7SUFXTTtFbEJ1bE9OOztFa0JsbU9BO0lBV007RWxCMmxPTjs7RWtCdG1PQTtJQVdNO0VsQitsT047O0VrQjFtT0E7SUFXTTtFbEJtbU9OOztFa0I5bU9BO0lBV007RWxCdW1PTjs7RWtCbG5PQTtJQVdNO0VsQjJtT047O0VrQnRuT0E7SUFXTTtFbEIrbU9OOztFa0Ixbk9BO0lBV007RWxCbW5PTjs7RWtCOW5PQTtJQVdNO0VsQnVuT047O0VrQmxvT0E7SUFXTTtFbEIybk9OOztFa0J0b09BO0lBV007RWxCK25PTjs7RWtCMW9PQTtJQVdNO0VsQm1vT047O0VrQjlvT0E7SUFXTTtFbEJ1b09OOztFa0JscE9BO0lBV007RWxCMm9PTjs7RWtCdHBPQTtJQVdNO0VsQitvT047O0VrQjFwT0E7SUFXTTtFbEJtcE9OOztFa0I5cE9BO0lBV007RWxCdXBPTjs7RWtCbHFPQTtJQVdNO0VsQjJwT047O0VrQnRxT0E7SUFXTTtFbEIrcE9OOztFa0IxcU9BO0lBV007RWxCbXFPTjs7RWtCOXFPQTtJQVdNO0VsQnVxT047O0VrQmxyT0E7SUFXTTtFbEIycU9OOztFa0J0ck9BO0lBV007RWxCK3FPTjs7RWtCMXJPQTtJQVdNO0VsQm1yT047O0VrQjlyT0E7SUFXTTtFbEJ1ck9OOztFa0Jsc09BO0lBV007RWxCMnJPTjs7RWtCdHNPQTtJQVdNO0VsQityT047O0VrQjFzT0E7SUFXTTtFbEJtc09OOztFa0I5c09BO0lBV007RWxCdXNPTjs7RWtCbHRPQTtJQVdNO0VsQjJzT047O0VrQnR0T0E7SUFXTTtFbEIrc09OOztFa0IxdE9BO0lBV007RWxCbXRPTjs7RWtCOXRPQTtJQVdNO0VsQnV0T047O0VrQmx1T0E7SUFXTTtFbEIydE9OOztFa0J0dU9BO0lBV007RWxCK3RPTjs7RWtCMXVPQTtJQVdNO0VsQm11T047O0VrQjl1T0E7SUFXTTtFbEJ1dU9OOztFa0Jsdk9BO0lBV007RWxCMnVPTjs7RWtCdHZPQTtJQVdNO0VsQit1T047O0VrQjF2T0E7SUFXTTtFbEJtdk9OOztFa0I5dk9BO0lBV007RWxCdXZPTjs7RWtCbHdPQTtJQVdNO0VsQjJ2T047O0VrQnR3T0E7SUFXTTtFbEIrdk9OOztFa0Ixd09BO0lBV007RWxCbXdPTjs7RWtCOXdPQTtJQVdNO0VsQnV3T047O0VrQmx4T0E7SUFXTTtFbEIyd09OOztFa0J0eE9BO0lBV007RWxCK3dPTjs7RWtCMXhPQTtJQVdNO0VsQm14T047O0VrQjl4T0E7SUFXTTtFbEJ1eE9OOztFa0JseU9BO0lBV007RWxCMnhPTjs7RWtCdHlPQTtJQVdNO0VsQit4T047O0VrQjF5T0E7SUFXTTtFbEJteU9OOztFa0I5eU9BO0lBV007RWxCdXlPTjs7RWtCbHpPQTtJQVdNO0VsQjJ5T047O0VrQnR6T0E7SUFXTTtFbEIreU9OOztFa0Ixek9BO0lBV007RWxCbXpPTjs7RWtCOXpPQTtJQVdNO0VsQnV6T047O0VrQmwwT0E7SUFXTTtFbEIyek9OOztFa0J0ME9BO0lBV007RWxCK3pPTjs7RWtCMTBPQTtJQVdNO0VsQm0wT047O0VrQjkwT0E7SUFXTTtFbEJ1ME9OOztFa0JsMU9BO0lBV007RWxCMjBPTjs7RWtCdDFPQTtJQVdNO0VsQiswT047O0VrQjExT0E7SUFXTTtFbEJtMU9OOztFa0I5MU9BO0lBV007RWxCdTFPTjs7RWtCbDJPQTtJQVdNO0VsQjIxT047O0VrQnQyT0E7SUFXTTtFbEIrMU9OOztFa0IxMk9BO0lBV007RWxCbTJPTjs7RWtCOTJPQTtJQVdNO0VsQnUyT047O0VrQmwzT0E7SUFXTTtFbEIyMk9OOztFa0J0M09BO0lBV007RWxCKzJPTjs7RWtCMTNPQTtJQVdNO0VsQm0zT047O0VrQjkzT0E7SUFXTTtFbEJ1M09OOztFa0JsNE9BO0lBV007RWxCMjNPTjs7RWtCdDRPQTtJQVdNO0VsQiszT047O0VrQjE0T0E7SUFXTTtFbEJtNE9OOztFa0I5NE9BO0lBV007RWxCdTRPTjs7RWtCbDVPQTtJQVdNO0VsQjI0T047O0VrQnQ1T0E7SUFXTTtFbEIrNE9OOztFa0IxNU9BO0lBV007RWxCbTVPTjs7RWtCOTVPQTtJQVdNO0VsQnU1T047O0VrQmw2T0E7SUFXTTtFbEIyNU9OOztFa0J0Nk9BO0lBV007RWxCKzVPTjs7RWtCMTZPQTtJQVdNO0VsQm02T047O0VrQjk2T0E7SUFXTTtFbEJ1Nk9OOztFa0JsN09BO0lBV007RWxCMjZPTjs7RWtCdDdPQTtJQVdNO0VsQis2T047O0VrQjE3T0E7SUFXTTtFbEJtN09OOztFa0I5N09BO0lBV007RWxCdTdPTjs7RWtCbDhPQTtJQVdNO0VsQjI3T047O0VrQnQ4T0E7SUFXTTtFbEIrN09OOztFa0IxOE9BO0lBV007RWxCbThPTjs7RWtCOThPQTtJQVdNO0VsQnU4T047O0VrQmw5T0E7SUFXTTtFbEIyOE9OOztFa0J0OU9BO0lBV007RWxCKzhPTjs7RWtCMTlPQTtJQVdNO0VsQm05T047O0VrQjk5T0E7SUFXTTtFbEJ1OU9OOztFa0JsK09BO0lBV007RWxCMjlPTjs7RWtCdCtPQTtJQVdNO0VsQis5T047O0VrQjErT0E7SUFXTTtFbEJtK09OOztFa0I5K09BO0lBV007RWxCdStPTjs7RWtCbC9PQTtJQVdNO0VsQjIrT047O0VrQnQvT0E7SUFXTTtFbEIrK09OOztFa0IxL09BO0lBV007RWxCbS9PTjs7RWtCOS9PQTtJQVdNO0VsQnUvT047O0VrQmxnUEE7SUFXTTtFbEIyL09OOztFa0J0Z1BBO0lBV007RWxCKy9PTjs7RWtCMWdQQTtJQVdNO0VsQm1nUE47O0VrQjlnUEE7SUFXTTtFbEJ1Z1BOOztFa0JsaFBBO0lBV007RWxCMmdQTjs7RWtCdGhQQTtJQVdNO0VsQitnUE47O0VrQjFoUEE7SUFXTTtFbEJtaFBOOztFa0I5aFBBO0lBV007RWxCdWhQTjs7RWtCbGlQQTtJQVdNO0VsQjJoUE47O0VrQnRpUEE7SUFXTTtFbEIraFBOOztFa0IxaVBBO0lBV007RWxCbWlQTjs7RWtCOWlQQTtJQVdNO0VsQnVpUE47O0VrQmxqUEE7SUFXTTtFbEIyaVBOOztFa0J0alBBO0lBV007RWxCK2lQTjs7RWtCMWpQQTtJQVdNO0VsQm1qUE47O0VrQjlqUEE7SUFXTTtFbEJ1alBOOztFa0Jsa1BBO0lBV007RWxCMmpQTjs7RWtCdGtQQTtJQVdNO0VsQitqUE47O0VrQjFrUEE7SUFXTTtFbEJta1BOOztFa0I5a1BBO0lBV007RWxCdWtQTjs7RWtCbGxQQTtJQVdNO0VsQjJrUE47O0VrQnRsUEE7SUFXTTtFbEIra1BOOztFa0IxbFBBO0lBV007RWxCbWxQTjs7RWtCOWxQQTtJQVdNO0VsQnVsUE47O0VrQmxtUEE7SUFXTTtFbEIybFBOOztFa0J0bVBBO0lBV007RWxCK2xQTjs7RWtCMW1QQTtJQVdNO0VsQm1tUE47O0VrQjltUEE7SUFXTTtFbEJ1bVBOOztFa0JsblBBO0lBV007RWxCMm1QTjs7RWtCdG5QQTtJQVdNO0VsQittUE47O0VrQjFuUEE7SUFXTTtFbEJtblBOOztFa0I5blBBO0lBV007RWxCdW5QTjs7RWtCbG9QQTtJQVdNO0VsQjJuUE47O0VrQnRvUEE7SUFXTTtJQUFBO0VsQmdvUE47O0VrQjNvUEE7SUFXTTtJQUFBO0VsQnFvUE47O0VrQmhwUEE7SUFXTTtJQUFBO0VsQjBvUE47O0VrQnJwUEE7SUFXTTtJQUFBO0VsQitvUE47O0VrQjFwUEE7SUFXTTtJQUFBO0VsQm9wUE47O0VrQi9wUEE7SUFXTTtJQUFBO0VsQnlwUE47O0VrQnBxUEE7SUFXTTtJQUFBO0VsQjhwUE47O0VrQnpxUEE7SUFXTTtJQUFBO0VsQm1xUE47O0VrQjlxUEE7SUFXTTtJQUFBO0VsQndxUE47O0VrQm5yUEE7SUFXTTtJQUFBO0VsQjZxUE47O0VrQnhyUEE7SUFXTTtJQUFBO0VsQmtyUE47O0VrQjdyUEE7SUFXTTtJQUFBO0VsQnVyUE47O0VrQmxzUEE7SUFXTTtJQUFBO0VsQjRyUE47O0VrQnZzUEE7SUFXTTtJQUFBO0VsQmlzUE47O0VrQjVzUEE7SUFXTTtJQUFBO0VsQnNzUE47O0VrQmp0UEE7SUFXTTtJQUFBO0VsQjJzUE47O0VrQnR0UEE7SUFXTTtJQUFBO0VsQmd0UE47O0VrQjN0UEE7SUFXTTtJQUFBO0VsQnF0UE47O0VrQmh1UEE7SUFXTTtJQUFBO0VsQjB0UE47O0VrQnJ1UEE7SUFXTTtJQUFBO0VsQit0UE47O0VrQjF1UEE7SUFXTTtJQUFBO0VsQm91UE47O0VrQi91UEE7SUFXTTtJQUFBO0VsQnl1UE47O0VrQnB2UEE7SUFXTTtJQUFBO0VsQjh1UE47O0VrQnp2UEE7SUFXTTtJQUFBO0VsQm12UE47O0VrQjl2UEE7SUFXTTtJQUFBO0VsQnd2UE47O0VrQm53UEE7SUFXTTtJQUFBO0VsQjZ2UE47O0VrQnh3UEE7SUFXTTtJQUFBO0VsQmt3UE47O0VrQjd3UEE7SUFXTTtJQUFBO0VsQnV3UE47O0VrQmx4UEE7SUFXTTtJQUFBO0VsQjR3UE47O0VrQnZ4UEE7SUFXTTtJQUFBO0VsQml4UE47O0VrQjV4UEE7SUFXTTtJQUFBO0VsQnN4UE47O0VrQmp5UEE7SUFXTTtJQUFBO0VsQjJ4UE47O0VrQnR5UEE7SUFXTTtFbEIreFBOOztFa0IxeVBBO0lBV007RWxCbXlQTjs7RWtCOXlQQTtJQVdNO0VsQnV5UE47O0VrQmx6UEE7SUFXTTtFbEIyeVBOOztFa0J0elBBO0lBV007RWxCK3lQTjs7RWtCMXpQQTtJQVdNO0VsQm16UE47O0VrQjl6UEE7SUFXTTtFbEJ1elBOOztFa0JsMFBBO0lBV007RWxCMnpQTjs7RWtCdDBQQTtJQVdNO0VsQit6UE47O0VrQjEwUEE7SUFXTTtFbEJtMFBOOztFa0I5MFBBO0lBV007RWxCdTBQTjs7RWtCbDFQQTtJQVdNO0VsQjIwUE47O0VrQnQxUEE7SUFXTTtFbEIrMFBOOztFa0IxMVBBO0lBV007RWxCbTFQTjs7RWtCOTFQQTtJQVdNO0VsQnUxUE47O0VrQmwyUEE7SUFXTTtFbEIyMVBOOztFa0J0MlBBO0lBV007RWxCKzFQTjs7RWtCMTJQQTtJQVdNO0VsQm0yUE47O0VrQjkyUEE7SUFXTTtFbEJ1MlBOOztFa0JsM1BBO0lBV007RWxCMjJQTjs7RWtCdDNQQTtJQVdNO0VsQisyUE47O0VrQjEzUEE7SUFXTTtFbEJtM1BOOztFa0I5M1BBO0lBV007RWxCdTNQTjs7RWtCbDRQQTtJQVdNO0VsQjIzUE47O0VrQnQ0UEE7SUFXTTtFbEIrM1BOOztFa0IxNFBBO0lBV007RWxCbTRQTjs7RWtCOTRQQTtJQVdNO0VsQnU0UE47O0VrQmw1UEE7SUFXTTtFbEIyNFBOOztFa0J0NVBBO0lBV007RWxCKzRQTjs7RWtCMTVQQTtJQVdNO0VsQm01UE47O0VrQjk1UEE7SUFXTTtFbEJ1NVBOOztFa0JsNlBBO0lBV007RWxCMjVQTjs7RWtCdDZQQTtJQVdNO0VsQis1UE47O0VrQjE2UEE7SUFXTTtFbEJtNlBOOztFa0I5NlBBO0lBV007RWxCdTZQTjs7RWtCbDdQQTtJQVdNO0VsQjI2UE47O0VrQnQ3UEE7SUFXTTtFbEIrNlBOOztFa0IxN1BBO0lBV007RWxCbTdQTjs7RWtCOTdQQTtJQVdNO0VsQnU3UE47O0VrQmw4UEE7SUFXTTtFbEIyN1BOOztFa0J0OFBBO0lBV007RWxCKzdQTjs7RWtCMThQQTtJQVdNO0VsQm04UE47O0VrQjk4UEE7SUFXTTtFbEJ1OFBOOztFa0JsOVBBO0lBV007RWxCMjhQTjs7RWtCdDlQQTtJQVdNO0VsQis4UE47O0VrQjE5UEE7SUFXTTtFbEJtOVBOOztFa0I5OVBBO0lBV007RWxCdTlQTjs7RWtCbCtQQTtJQVdNO0VsQjI5UE47O0VrQnQrUEE7SUFXTTtFbEIrOVBOOztFa0IxK1BBO0lBV007RWxCbStQTjs7RWtCOStQQTtJQVdNO0VsQnUrUE47O0VrQmwvUEE7SUFXTTtFbEIyK1BOOztFa0J0L1BBO0lBV007RWxCKytQTjs7RWtCMS9QQTtJQVdNO0VsQm0vUE47O0VrQjkvUEE7SUFXTTtFbEJ1L1BOOztFa0JsZ1FBO0lBV007RWxCMi9QTjs7RWtCdGdRQTtJQVdNO0VsQisvUE47O0VrQjFnUUE7SUFXTTtFbEJtZ1FOOztFa0I5Z1FBO0lBV007RWxCdWdRTjs7RWtCbGhRQTtJQVdNO0VsQjJnUU47O0VrQnRoUUE7SUFXTTtFbEIrZ1FOOztFa0IxaFFBO0lBV007RWxCbWhRTjs7RWtCOWhRQTtJQVdNO0VsQnVoUU47O0VrQmxpUUE7SUFXTTtFbEIyaFFOOztFa0J0aVFBO0lBV007RWxCK2hRTjs7RWtCMWlRQTtJQVdNO0VsQm1pUU47O0VrQjlpUUE7SUFXTTtFbEJ1aVFOOztFa0JsalFBO0lBV007RWxCMmlRTjs7RWtCdGpRQTtJQVdNO0VsQitpUU47O0VrQjFqUUE7SUFXTTtFbEJtalFOOztFa0I5alFBO0lBV007RWxCdWpRTjs7RWtCbGtRQTtJQVdNO0VsQjJqUU47O0VrQnRrUUE7SUFXTTtFbEIralFOOztFa0Ixa1FBO0lBV007RWxCbWtRTjs7RWtCOWtRQTtJQVdNO0VsQnVrUU47O0VrQmxsUUE7SUFXTTtFbEIya1FOOztFa0J0bFFBO0lBV007RWxCK2tRTjs7RWtCMWxRQTtJQVdNO0VsQm1sUU47O0VrQjlsUUE7SUFXTTtFbEJ1bFFOOztFa0JsbVFBO0lBV007RWxCMmxRTjs7RWtCdG1RQTtJQVdNO0VsQitsUU47O0VrQjFtUUE7SUFXTTtFbEJtbVFOOztFa0I5bVFBO0lBV007RWxCdW1RTjs7RWtCbG5RQTtJQVdNO0VsQjJtUU47O0VrQnRuUUE7SUFXTTtFbEIrbVFOOztFa0IxblFBO0lBV007RWxCbW5RTjs7RWtCOW5RQTtJQVdNO0VsQnVuUU47O0VrQmxvUUE7SUFXTTtFbEIyblFOOztFa0J0b1FBO0lBV007RWxCK25RTjs7RWtCMW9RQTtJQVdNO0VsQm1vUU47O0VrQjlvUUE7SUFXTTtFbEJ1b1FOOztFa0JscFFBO0lBV007RWxCMm9RTjs7RWtCdHBRQTtJQVdNO0VsQitvUU47O0VrQjFwUUE7SUFXTTtFbEJtcFFOOztFa0I5cFFBO0lBV007RWxCdXBRTjs7RWtCbHFRQTtJQVdNO0VsQjJwUU47O0VrQnRxUUE7SUFXTTtFbEIrcFFOOztFa0IxcVFBO0lBV007RWxCbXFRTjs7RWtCOXFRQTtJQVdNO0VsQnVxUU47O0VrQmxyUUE7SUFXTTtFbEIycVFOOztFa0J0clFBO0lBV007RWxCK3FRTjs7RWtCMXJRQTtJQVdNO0VsQm1yUU47O0VrQjlyUUE7SUFXTTtFbEJ1clFOOztFa0Jsc1FBO0lBV007RWxCMnJRTjs7RWtCdHNRQTtJQVdNO0VsQityUU47O0VrQjFzUUE7SUFXTTtFbEJtc1FOOztFa0I5c1FBO0lBV007RWxCdXNRTjs7RWtCbHRRQTtJQVdNO0VsQjJzUU47O0VrQnR0UUE7SUFXTTtFbEIrc1FOOztFa0IxdFFBO0lBV007RWxCbXRRTjs7RWtCOXRRQTtJQVdNO0VsQnV0UU47O0VrQmx1UUE7SUFXTTtFbEIydFFOOztFa0J0dVFBO0lBV007RWxCK3RRTjs7RWtCMXVRQTtJQVdNO0VsQm11UU47O0VrQjl1UUE7SUFXTTtFbEJ1dVFOOztFa0JsdlFBO0lBV007RWxCMnVRTjs7RWtCdHZRQTtJQVdNO0VsQit1UU47O0VrQjF2UUE7SUFXTTtFbEJtdlFOOztFa0I5dlFBO0lBV007RWxCdXZRTjs7RWtCbHdRQTtJQVdNO0VsQjJ2UU47O0VrQnR3UUE7SUFXTTtFbEIrdlFOOztFa0Ixd1FBO0lBV007RWxCbXdRTjs7RWtCOXdRQTtJQVdNO0VsQnV3UU47O0VrQmx4UUE7SUFXTTtFbEIyd1FOOztFa0J0eFFBO0lBV007RWxCK3dRTjs7RWtCMXhRQTtJQVdNO0VsQm14UU47O0VrQjl4UUE7SUFXTTtFbEJ1eFFOOztFa0JseVFBO0lBV007RWxCMnhRTjs7RWtCdHlRQTtJQVdNO0VsQit4UU47O0VrQjF5UUE7SUFXTTtFbEJteVFOOztFa0I5eVFBO0lBV007RWxCdXlRTjs7RWtCbHpRQTtJQVdNO0VsQjJ5UU47O0VrQnR6UUE7SUFXTTtFbEIreVFOOztFa0IxelFBO0lBV007RWxCbXpRTjs7RWtCOXpRQTtJQVdNO0VsQnV6UU47O0VrQmwwUUE7SUFXTTtFbEIyelFOOztFa0J0MFFBO0lBV007RWxCK3pRTjs7RWtCMTBRQTtJQVdNO0VsQm0wUU47O0VrQjkwUUE7SUFXTTtFbEJ1MFFOOztFa0JsMVFBO0lBV007RWxCMjBRTjs7RWtCdDFRQTtJQVdNO0VsQiswUU47O0VrQjExUUE7SUFXTTtFbEJtMVFOOztFa0I5MVFBO0lBV007RWxCdTFRTjs7RWtCbDJRQTtJQVdNO0VsQjIxUU47O0VrQnQyUUE7SUFXTTtFbEIrMVFOOztFa0IxMlFBO0lBV007SUFBQTtFbEJvMlFOOztFa0IvMlFBO0lBV007SUFBQTtFbEJ5MlFOOztFa0JwM1FBO0lBV007SUFBQTtFbEI4MlFOOztFa0J6M1FBO0lBV007SUFBQTtFbEJtM1FOOztFa0I5M1FBO0lBV007SUFBQTtFbEJ3M1FOOztFa0JuNFFBO0lBV007SUFBQTtFbEI2M1FOOztFa0J4NFFBO0lBV007SUFBQTtFbEJrNFFOOztFa0I3NFFBO0lBV007SUFBQTtFbEJ1NFFOOztFa0JsNVFBO0lBV007SUFBQTtFbEI0NFFOOztFa0J2NVFBO0lBV007SUFBQTtFbEJpNVFOOztFa0I1NVFBO0lBV007SUFBQTtFbEJzNVFOOztFa0JqNlFBO0lBV007SUFBQTtFbEIyNVFOOztFa0J0NlFBO0lBV007SUFBQTtFbEJnNlFOOztFa0IzNlFBO0lBV007SUFBQTtFbEJxNlFOOztFa0JoN1FBO0lBV007SUFBQTtFbEIwNlFOOztFa0JyN1FBO0lBV007SUFBQTtFbEIrNlFOOztFa0IxN1FBO0lBV007SUFBQTtFbEJvN1FOOztFa0IvN1FBO0lBV007SUFBQTtFbEJ5N1FOOztFa0JwOFFBO0lBV007SUFBQTtFbEI4N1FOOztFa0J6OFFBO0lBV007SUFBQTtFbEJtOFFOOztFa0I5OFFBO0lBV007SUFBQTtFbEJ3OFFOOztFa0JuOVFBO0lBV007SUFBQTtFbEI2OFFOOztFa0J4OVFBO0lBV007SUFBQTtFbEJrOVFOOztFa0I3OVFBO0lBV007SUFBQTtFbEJ1OVFOOztFa0JsK1FBO0lBV007SUFBQTtFbEI0OVFOOztFa0J2K1FBO0lBV007SUFBQTtFbEJpK1FOOztFa0I1K1FBO0lBV007SUFBQTtFbEJzK1FOOztFa0JqL1FBO0lBV007SUFBQTtFbEIyK1FOOztFa0J0L1FBO0lBV007SUFBQTtFbEJnL1FOOztFa0IzL1FBO0lBV007SUFBQTtFbEJxL1FOOztFa0JoZ1JBO0lBV007SUFBQTtFbEIwL1FOOztFa0JyZ1JBO0lBV007SUFBQTtFbEIrL1FOOztFa0IxZ1JBO0lBV007SUFBQTtFbEJvZ1JOOztFa0IvZ1JBO0lBV007SUFBQTtFbEJ5Z1JOOztFa0JwaFJBO0lBV007RWxCNmdSTjs7RWtCeGhSQTtJQVdNO0VsQmloUk47O0VrQjVoUkE7SUFXTTtFbEJxaFJOOztFa0JoaVJBO0lBV007RWxCeWhSTjs7RWtCcGlSQTtJQVdNO0VsQjZoUk47O0VrQnhpUkE7SUFXTTtFbEJpaVJOOztFa0I1aVJBO0lBV007RWxCcWlSTjs7RWtCaGpSQTtJQVdNO0VsQnlpUk47O0VrQnBqUkE7SUFXTTtFbEI2aVJOOztFa0J4alJBO0lBV007RWxCaWpSTjs7RWtCNWpSQTtJQVdNO0VsQnFqUk47O0VrQmhrUkE7SUFXTTtFbEJ5alJOOztFa0Jwa1JBO0lBV007RWxCNmpSTjs7RWtCeGtSQTtJQVdNO0VsQmlrUk47O0VrQjVrUkE7SUFXTTtFbEJxa1JOOztFa0JobFJBO0lBV007RWxCeWtSTjs7RWtCcGxSQTtJQVdNO0VsQjZrUk47O0VrQnhsUkE7SUFXTTtFbEJpbFJOOztFa0I1bFJBO0lBV007RWxCcWxSTjs7RWtCaG1SQTtJQVdNO0VsQnlsUk47O0VrQnBtUkE7SUFXTTtFbEI2bFJOOztFa0J4bVJBO0lBV007RWxCaW1STjs7RWtCNW1SQTtJQVdNO0VsQnFtUk47O0VrQmhuUkE7SUFXTTtFbEJ5bVJOOztFa0JwblJBO0lBV007RWxCNm1STjs7RWtCeG5SQTtJQVdNO0VsQmluUk47O0VrQjVuUkE7SUFXTTtFbEJxblJOOztFa0Job1JBO0lBV007RWxCeW5STjs7RWtCcG9SQTtJQVdNO0VsQjZuUk47O0VrQnhvUkE7SUFXTTtFbEJpb1JOOztFa0I1b1JBO0lBV007RWxCcW9STjs7RWtCaHBSQTtJQVdNO0VsQnlvUk47O0VrQnBwUkE7SUFXTTtFbEI2b1JOOztFa0J4cFJBO0lBV007RWxCaXBSTjs7RWtCNXBSQTtJQVdNO0VsQnFwUk47O0VrQmhxUkE7SUFXTTtFbEJ5cFJOOztFa0JwcVJBO0lBV007RWxCNnBSTjs7RWtCeHFSQTtJQVdNO0VsQmlxUk47O0VrQjVxUkE7SUFXTTtFbEJxcVJOOztFa0JoclJBO0lBV007RWxCeXFSTjs7RWtCcHJSQTtJQVdNO0VsQjZxUk47O0VrQnhyUkE7SUFXTTtFbEJpclJOOztFa0I1clJBO0lBV007RWxCcXJSTjs7RWtCaHNSQTtJQVdNO0VsQnlyUk47O0VrQnBzUkE7SUFXTTtFbEI2clJOOztFa0J4c1JBO0lBV007RWxCaXNSTjs7RWtCNXNSQTtJQVdNO0VsQnFzUk47O0VrQmh0UkE7SUFXTTtFbEJ5c1JOOztFa0JwdFJBO0lBV007RWxCNnNSTjs7RWtCeHRSQTtJQVdNO0VsQml0Uk47O0VrQjV0UkE7SUFXTTtFbEJxdFJOOztFa0JodVJBO0lBV007RWxCeXRSTjs7RWtCcHVSQTtJQVdNO0VsQjZ0Uk47O0VrQnh1UkE7SUFXTTtFbEJpdVJOOztFa0I1dVJBO0lBV007RWxCcXVSTjs7RWtCaHZSQTtJQVdNO0VsQnl1Uk47O0VrQnB2UkE7SUFXTTtFbEI2dVJOOztFa0J4dlJBO0lBV007RWxCaXZSTjs7RWtCNXZSQTtJQVdNO0VsQnF2Uk47O0VrQmh3UkE7SUFXTTtFbEJ5dlJOOztFa0Jwd1JBO0lBV007RWxCNnZSTjs7RWtCeHdSQTtJQVdNO0VsQml3Uk47O0VrQjV3UkE7SUFXTTtFbEJxd1JOOztFa0JoeFJBO0lBV007RWxCeXdSTjs7RWtCcHhSQTtJQVdNO0VsQjZ3Uk47O0VrQnh4UkE7SUFXTTtFbEJpeFJOOztFa0I1eFJBO0lBV007RWxCcXhSTjs7RWtCaHlSQTtJQVdNO0VsQnl4Uk47O0VrQnB5UkE7SUFXTTtFbEI2eFJOOztFa0J4eVJBO0lBV007RWxCaXlSTjs7RWtCNXlSQTtJQVdNO0VsQnF5Uk47O0VrQmh6UkE7SUFXTTtFbEJ5eVJOOztFa0JwelJBO0lBV007RWxCNnlSTjs7RWtCeHpSQTtJQVdNO0VsQml6Uk47O0VrQjV6UkE7SUFXTTtFbEJxelJOOztFa0JoMFJBO0lBV007RWxCeXpSTjs7RWtCcDBSQTtJQVdNO0VsQjZ6Uk47O0VrQngwUkE7SUFXTTtFbEJpMFJOOztFa0I1MFJBO0lBV007RWxCcTBSTjs7RWtCaDFSQTtJQVdNO0VsQnkwUk47O0VrQnAxUkE7SUFXTTtFbEI2MFJOOztFa0J4MVJBO0lBV007RWxCaTFSTjs7RWtCNTFSQTtJQVdNO0VsQnExUk47O0VrQmgyUkE7SUFXTTtFbEJ5MVJOOztFa0JwMlJBO0lBV007RWxCNjFSTjs7RWtCeDJSQTtJQVdNO0VsQmkyUk47O0VrQjUyUkE7SUFXTTtFbEJxMlJOOztFa0JoM1JBO0lBV007RWxCeTJSTjs7RWtCcDNSQTtJQVdNO0VsQjYyUk47O0VrQngzUkE7SUFXTTtFbEJpM1JOOztFa0I1M1JBO0lBV007RWxCcTNSTjs7RWtCaDRSQTtJQVdNO0VsQnkzUk47O0VrQnA0UkE7SUFXTTtFbEI2M1JOOztFa0J4NFJBO0lBV007RWxCaTRSTjs7RWtCNTRSQTtJQVdNO0VsQnE0Uk47O0VrQmg1UkE7SUFXTTtFbEJ5NFJOOztFa0JwNVJBO0lBV007RWxCNjRSTjs7RWtCeDVSQTtJQVdNO0VsQmk1Uk47O0VrQjU1UkE7SUFXTTtFbEJxNVJOOztFa0JoNlJBO0lBV007RWxCeTVSTjs7RWtCcDZSQTtJQVdNO0VsQjY1Uk47O0VrQng2UkE7SUFXTTtFbEJpNlJOOztFa0I1NlJBO0lBV007RWxCcTZSTjs7RWtCaDdSQTtJQVdNO0VsQnk2Uk47O0VrQnA3UkE7SUFXTTtFbEI2NlJOOztFa0J4N1JBO0lBV007RWxCaTdSTjs7RWtCNTdSQTtJQVdNO0VsQnE3Uk47O0VrQmg4UkE7SUFXTTtFbEJ5N1JOOztFa0JwOFJBO0lBV007RWxCNjdSTjs7RWtCeDhSQTtJQVdNO0VsQmk4Uk47O0VrQjU4UkE7SUFXTTtFbEJxOFJOOztFa0JoOVJBO0lBV007RWxCeThSTjs7RWtCcDlSQTtJQVdNO0VsQjY4Uk47O0VrQng5UkE7SUFXTTtFbEJpOVJOOztFa0I1OVJBO0lBV007RWxCcTlSTjs7RWtCaCtSQTtJQVdNO0VsQnk5Uk47O0VrQnArUkE7SUFXTTtFbEI2OVJOOztFa0J4K1JBO0lBV007RWxCaStSTjs7RWtCNStSQTtJQVdNO0VsQnErUk47O0VrQmgvUkE7SUFXTTtFbEJ5K1JOOztFa0JwL1JBO0lBV007RWxCNitSTjs7RWtCeC9SQTtJQVdNO0VsQmkvUk47O0VrQjUvUkE7SUFXTTtFbEJxL1JOOztFa0JoZ1NBO0lBV007RWxCeS9STjs7RWtCcGdTQTtJQVdNO0VsQjYvUk47O0VrQnhnU0E7SUFXTTtFbEJpZ1NOOztFa0I1Z1NBO0lBV007RWxCcWdTTjs7RWtCaGhTQTtJQVdNO0VsQnlnU047O0VrQnBoU0E7SUFXTTtFbEI2Z1NOOztFa0J4aFNBO0lBV007RWxCaWhTTjs7RWtCNWhTQTtJQVdNO0VsQnFoU047O0VrQmhpU0E7SUFXTTtFbEJ5aFNOOztFa0JwaVNBO0lBV007RWxCNmhTTjs7RWtCeGlTQTtJQVdNO0VsQmlpU047O0VrQjVpU0E7SUFXTTtFbEJxaVNOOztFa0JoalNBO0lBV007RWxCeWlTTjs7RWtCcGpTQTtJQVdNO0VsQjZpU047O0VrQnhqU0E7SUFXTTtFbEJpalNOOztFa0I1alNBO0lBV007RWxCcWpTTjs7RWtCaGtTQTtJQVdNO0VsQnlqU047O0VrQnBrU0E7SUFXTTtFbEI2alNOOztFa0J4a1NBO0lBV007RWxCaWtTTjs7RWtCNWtTQTtJQVdNO0lBQUE7SUFBQTtJQUFBO0lBQUE7RWxCeWtTTjs7RWtCcGxTQTtJQVdNO0lBQUE7SUFBQTtJQUFBO0lBQUE7RWxCaWxTTjs7RWtCNWxTQTtJQVdNO0lBQUE7SUFBQTtJQUFBO0lBQUE7RWxCeWxTTjs7RWtCcG1TQTtJQVdNO0lBQUE7SUFBQTtJQUFBO0lBQUE7RWxCaW1TTjs7RWtCNW1TQTtJQVdNO0lBQUE7SUFBQTtJQUFBO0lBQUE7RWxCeW1TTjs7RWtCcG5TQTtJQVdNO0lBQUE7SUFBQTtJQUFBO0lBQUE7RWxCaW5TTjs7RWtCNW5TQTtJQVdNO0lBQUE7SUFBQTtJQUFBO0lBQUE7RWxCeW5TTjs7RWtCcG9TQTtJQVdNO0lBQUE7SUFBQTtJQUFBO0lBQUE7RWxCaW9TTjs7RWtCNW9TQTtJQVdNO0lBQUE7SUFBQTtJQUFBO0lBQUE7RWxCeW9TTjs7RWtCcHBTQTtJQVdNO0lBQUE7SUFBQTtJQUFBO0lBQUE7RWxCaXBTTjs7RWtCNXBTQTtJQVdNO0lBQUE7SUFBQTtJQUFBO0lBQUE7SUFBQTtFbEIwcFNOOztFa0JycVNBO0lBV007SUFBQTtJQUFBO0lBQUE7SUFBQTtFbEJrcVNOOztFa0I3cVNBO0lBV007SUFBQTtJQUFBO0lBQUE7SUFBQTtJQUFBO0VsQjJxU047QUFDRjtBbUIxdFNJO0VEbUNGO0lBV007RWxCZ3JTTjs7RWtCM3JTQTtJQVdNO0VsQm9yU047O0VrQi9yU0E7SUFXTTtFbEJ3clNOOztFa0Juc1NBO0lBV007RWxCNHJTTjs7RWtCdnNTQTtJQVdNO0VsQmdzU047O0VrQjNzU0E7SUFXTTtFbEJvc1NOOztFa0Ivc1NBO0lBV007RWxCd3NTTjs7RWtCbnRTQTtJQVdNO0VsQjRzU047O0VrQnZ0U0E7SUFXTTtFbEJndFNOOztFa0IzdFNBO0lBV007RWxCb3RTTjs7RWtCL3RTQTtJQVdNO0VsQnd0U047O0VrQm51U0E7SUFXTTtFbEI0dFNOOztFa0J2dVNBO0lBV007RWxCZ3VTTjs7RWtCM3VTQTtJQVdNO0VsQm91U047O0VrQi91U0E7SUFXTTtFbEJ3dVNOOztFa0JudlNBO0lBV007RWxCNHVTTjs7RWtCdnZTQTtJQVdNO0VsQmd2U047O0VrQjN2U0E7SUFXTTtFbEJvdlNOOztFa0IvdlNBO0lBV007RWxCd3ZTTjs7RWtCbndTQTtJQVdNO0VsQjR2U047O0VrQnZ3U0E7SUFXTTtFbEJnd1NOOztFa0Izd1NBO0lBV007RWxCb3dTTjs7RWtCL3dTQTtJQVdNO0VsQnd3U047O0VrQm54U0E7SUFXTTtFbEI0d1NOOztFa0J2eFNBO0lBV007RWxCZ3hTTjs7RWtCM3hTQTtJQVdNO0VsQm94U047O0VrQi94U0E7SUFXTTtFbEJ3eFNOOztFa0JueVNBO0lBV007RWxCNHhTTjs7RWtCdnlTQTtJQVdNO0VsQmd5U047O0VrQjN5U0E7SUFXTTtFbEJveVNOOztFa0IveVNBO0lBV007RWxCd3lTTjs7RWtCbnpTQTtJQVdNO0VsQjR5U047O0VrQnZ6U0E7SUFXTTtFbEJnelNOOztFa0IzelNBO0lBV007RWxCb3pTTjs7RWtCL3pTQTtJQVdNO0VsQnd6U047O0VrQm4wU0E7SUFXTTtFbEI0elNOOztFa0J2MFNBO0lBV007RWxCZzBTTjs7RWtCMzBTQTtJQVdNO0VsQm8wU047O0VrQi8wU0E7SUFXTTtFbEJ3MFNOOztFa0JuMVNBO0lBV007RWxCNDBTTjs7RWtCdjFTQTtJQVdNO0VsQmcxU047O0VrQjMxU0E7SUFXTTtFbEJvMVNOOztFa0IvMVNBO0lBV007RWxCdzFTTjs7RWtCbjJTQTtJQVdNO0VsQjQxU047O0VrQnYyU0E7SUFXTTtFbEJnMlNOOztFa0IzMlNBO0lBV007RWxCbzJTTjs7RWtCLzJTQTtJQVdNO0VsQncyU047O0VrQm4zU0E7SUFXTTtFbEI0MlNOOztFa0J2M1NBO0lBV007RWxCZzNTTjs7RWtCMzNTQTtJQVdNO0VsQm8zU047O0VrQi8zU0E7SUFXTTtFbEJ3M1NOOztFa0JuNFNBO0lBV007RWxCNDNTTjs7RWtCdjRTQTtJQVdNO0VsQmc0U047O0VrQjM0U0E7SUFXTTtFbEJvNFNOOztFa0IvNFNBO0lBV007RWxCdzRTTjs7RWtCbjVTQTtJQVdNO0VsQjQ0U047O0VrQnY1U0E7SUFXTTtFbEJnNVNOOztFa0IzNVNBO0lBV007RWxCbzVTTjs7RWtCLzVTQTtJQVdNO0VsQnc1U047O0VrQm42U0E7SUFXTTtFbEI0NVNOOztFa0J2NlNBO0lBV007RWxCZzZTTjs7RWtCMzZTQTtJQVdNO0VsQm82U047O0VrQi82U0E7SUFXTTtFbEJ3NlNOOztFa0JuN1NBO0lBV007RWxCNDZTTjs7RWtCdjdTQTtJQVdNO0VsQmc3U047O0VrQjM3U0E7SUFXTTtFbEJvN1NOOztFa0IvN1NBO0lBV007RWxCdzdTTjs7RWtCbjhTQTtJQVdNO0VsQjQ3U047O0VrQnY4U0E7SUFXTTtFbEJnOFNOOztFa0IzOFNBO0lBV007RWxCbzhTTjs7RWtCLzhTQTtJQVdNO0VsQnc4U047O0VrQm45U0E7SUFXTTtFbEI0OFNOOztFa0J2OVNBO0lBV007RWxCZzlTTjs7RWtCMzlTQTtJQVdNO0VsQm85U047O0VrQi85U0E7SUFXTTtFbEJ3OVNOOztFa0JuK1NBO0lBV007RWxCNDlTTjs7RWtCditTQTtJQVdNO0VsQmcrU047O0VrQjMrU0E7SUFXTTtFbEJvK1NOOztFa0IvK1NBO0lBV007RWxCdytTTjs7RWtCbi9TQTtJQVdNO0VsQjQrU047O0VrQnYvU0E7SUFXTTtFbEJnL1NOOztFa0IzL1NBO0lBV007RWxCby9TTjs7RWtCLy9TQTtJQVdNO0VsQncvU047O0VrQm5nVEE7SUFXTTtJQUFBO0VsQjYvU047O0VrQnhnVEE7SUFXTTtJQUFBO0VsQmtnVE47O0VrQjdnVEE7SUFXTTtJQUFBO0VsQnVnVE47O0VrQmxoVEE7SUFXTTtJQUFBO0VsQjRnVE47O0VrQnZoVEE7SUFXTTtJQUFBO0VsQmloVE47O0VrQjVoVEE7SUFXTTtJQUFBO0VsQnNoVE47O0VrQmppVEE7SUFXTTtJQUFBO0VsQjJoVE47O0VrQnRpVEE7SUFXTTtJQUFBO0VsQmdpVE47O0VrQjNpVEE7SUFXTTtJQUFBO0VsQnFpVE47O0VrQmhqVEE7SUFXTTtJQUFBO0VsQjBpVE47O0VrQnJqVEE7SUFXTTtJQUFBO0VsQitpVE47O0VrQjFqVEE7SUFXTTtJQUFBO0VsQm9qVE47O0VrQi9qVEE7SUFXTTtJQUFBO0VsQnlqVE47O0VrQnBrVEE7SUFXTTtJQUFBO0VsQjhqVE47O0VrQnprVEE7SUFXTTtJQUFBO0VsQm1rVE47O0VrQjlrVEE7SUFXTTtJQUFBO0VsQndrVE47O0VrQm5sVEE7SUFXTTtJQUFBO0VsQjZrVE47O0VrQnhsVEE7SUFXTTtJQUFBO0VsQmtsVE47O0VrQjdsVEE7SUFXTTtJQUFBO0VsQnVsVE47O0VrQmxtVEE7SUFXTTtJQUFBO0VsQjRsVE47O0VrQnZtVEE7SUFXTTtJQUFBO0VsQmltVE47O0VrQjVtVEE7SUFXTTtJQUFBO0VsQnNtVE47O0VrQmpuVEE7SUFXTTtJQUFBO0VsQjJtVE47O0VrQnRuVEE7SUFXTTtJQUFBO0VsQmduVE47O0VrQjNuVEE7SUFXTTtJQUFBO0VsQnFuVE47O0VrQmhvVEE7SUFXTTtJQUFBO0VsQjBuVE47O0VrQnJvVEE7SUFXTTtJQUFBO0VsQituVE47O0VrQjFvVEE7SUFXTTtJQUFBO0VsQm9vVE47O0VrQi9vVEE7SUFXTTtJQUFBO0VsQnlvVE47O0VrQnBwVEE7SUFXTTtJQUFBO0VsQjhvVE47O0VrQnpwVEE7SUFXTTtJQUFBO0VsQm1wVE47O0VrQjlwVEE7SUFXTTtJQUFBO0VsQndwVE47O0VrQm5xVEE7SUFXTTtJQUFBO0VsQjZwVE47O0VrQnhxVEE7SUFXTTtJQUFBO0VsQmtxVE47O0VrQjdxVEE7SUFXTTtJQUFBO0VsQnVxVE47O0VrQmxyVEE7SUFXTTtJQUFBO0VsQjRxVE47O0VrQnZyVEE7SUFXTTtFbEJnclROOztFa0IzclRBO0lBV007RWxCb3JUTjs7RWtCL3JUQTtJQVdNO0VsQndyVE47O0VrQm5zVEE7SUFXTTtFbEI0clROOztFa0J2c1RBO0lBV007RWxCZ3NUTjs7RWtCM3NUQTtJQVdNO0VsQm9zVE47O0VrQi9zVEE7SUFXTTtFbEJ3c1ROOztFa0JudFRBO0lBV007RWxCNHNUTjs7RWtCdnRUQTtJQVdNO0VsQmd0VE47O0VrQjN0VEE7SUFXTTtFbEJvdFROOztFa0IvdFRBO0lBV007RWxCd3RUTjs7RWtCbnVUQTtJQVdNO0VsQjR0VE47O0VrQnZ1VEE7SUFXTTtFbEJndVROOztFa0IzdVRBO0lBV007RWxCb3VUTjs7RWtCL3VUQTtJQVdNO0VsQnd1VE47O0VrQm52VEE7SUFXTTtFbEI0dVROOztFa0J2dlRBO0lBV007RWxCZ3ZUTjs7RWtCM3ZUQTtJQVdNO0VsQm92VE47O0VrQi92VEE7SUFXTTtFbEJ3dlROOztFa0Jud1RBO0lBV007RWxCNHZUTjs7RWtCdndUQTtJQVdNO0VsQmd3VE47O0VrQjN3VEE7SUFXTTtFbEJvd1ROOztFa0Ivd1RBO0lBV007RWxCd3dUTjs7RWtCbnhUQTtJQVdNO0VsQjR3VE47O0VrQnZ4VEE7SUFXTTtFbEJneFROOztFa0IzeFRBO0lBV007RWxCb3hUTjs7RWtCL3hUQTtJQVdNO0VsQnd4VE47O0VrQm55VEE7SUFXTTtFbEI0eFROOztFa0J2eVRBO0lBV007RWxCZ3lUTjs7RWtCM3lUQTtJQVdNO0VsQm95VE47O0VrQi95VEE7SUFXTTtFbEJ3eVROOztFa0JuelRBO0lBV007RWxCNHlUTjs7RWtCdnpUQTtJQVdNO0VsQmd6VE47O0VrQjN6VEE7SUFXTTtFbEJvelROOztFa0IvelRBO0lBV007RWxCd3pUTjs7RWtCbjBUQTtJQVdNO0VsQjR6VE47O0VrQnYwVEE7SUFXTTtFbEJnMFROOztFa0IzMFRBO0lBV007RWxCbzBUTjs7RWtCLzBUQTtJQVdNO0VsQncwVE47O0VrQm4xVEE7SUFXTTtFbEI0MFROOztFa0J2MVRBO0lBV007RWxCZzFUTjs7RWtCMzFUQTtJQVdNO0VsQm8xVE47O0VrQi8xVEE7SUFXTTtFbEJ3MVROOztFa0JuMlRBO0lBV007RWxCNDFUTjs7RWtCdjJUQTtJQVdNO0VsQmcyVE47O0VrQjMyVEE7SUFXTTtFbEJvMlROOztFa0IvMlRBO0lBV007RWxCdzJUTjs7RWtCbjNUQTtJQVdNO0VsQjQyVE47O0VrQnYzVEE7SUFXTTtFbEJnM1ROOztFa0IzM1RBO0lBV007RWxCbzNUTjs7RWtCLzNUQTtJQVdNO0VsQnczVE47O0VrQm40VEE7SUFXTTtFbEI0M1ROOztFa0J2NFRBO0lBV007RWxCZzRUTjs7RWtCMzRUQTtJQVdNO0VsQm80VE47O0VrQi80VEE7SUFXTTtFbEJ3NFROOztFa0JuNVRBO0lBV007RWxCNDRUTjs7RWtCdjVUQTtJQVdNO0VsQmc1VE47O0VrQjM1VEE7SUFXTTtFbEJvNVROOztFa0IvNVRBO0lBV007RWxCdzVUTjs7RWtCbjZUQTtJQVdNO0VsQjQ1VE47O0VrQnY2VEE7SUFXTTtFbEJnNlROOztFa0IzNlRBO0lBV007RWxCbzZUTjs7RWtCLzZUQTtJQVdNO0VsQnc2VE47O0VrQm43VEE7SUFXTTtFbEI0NlROOztFa0J2N1RBO0lBV007RWxCZzdUTjs7RWtCMzdUQTtJQVdNO0VsQm83VE47O0VrQi83VEE7SUFXTTtFbEJ3N1ROOztFa0JuOFRBO0lBV007RWxCNDdUTjs7RWtCdjhUQTtJQVdNO0VsQmc4VE47O0VrQjM4VEE7SUFXTTtFbEJvOFROOztFa0IvOFRBO0lBV007RWxCdzhUTjs7RWtCbjlUQTtJQVdNO0VsQjQ4VE47O0VrQnY5VEE7SUFXTTtFbEJnOVROOztFa0IzOVRBO0lBV007RWxCbzlUTjs7RWtCLzlUQTtJQVdNO0VsQnc5VE47O0VrQm4rVEE7SUFXTTtFbEI0OVROOztFa0J2K1RBO0lBV007RWxCZytUTjs7RWtCMytUQTtJQVdNO0VsQm8rVE47O0VrQi8rVEE7SUFXTTtFbEJ3K1ROOztFa0JuL1RBO0lBV007RWxCNCtUTjs7RWtCdi9UQTtJQVdNO0VsQmcvVE47O0VrQjMvVEE7SUFXTTtFbEJvL1ROOztFa0IvL1RBO0lBV007RWxCdy9UTjs7RWtCbmdVQTtJQVdNO0VsQjQvVE47O0VrQnZnVUE7SUFXTTtFbEJnZ1VOOztFa0IzZ1VBO0lBV007RWxCb2dVTjs7RWtCL2dVQTtJQVdNO0VsQndnVU47O0VrQm5oVUE7SUFXTTtFbEI0Z1VOOztFa0J2aFVBO0lBV007RWxCZ2hVTjs7RWtCM2hVQTtJQVdNO0VsQm9oVU47O0VrQi9oVUE7SUFXTTtFbEJ3aFVOOztFa0JuaVVBO0lBV007RWxCNGhVTjs7RWtCdmlVQTtJQVdNO0VsQmdpVU47O0VrQjNpVUE7SUFXTTtFbEJvaVVOOztFa0IvaVVBO0lBV007RWxCd2lVTjs7RWtCbmpVQTtJQVdNO0VsQjRpVU47O0VrQnZqVUE7SUFXTTtFbEJnalVOOztFa0IzalVBO0lBV007RWxCb2pVTjs7RWtCL2pVQTtJQVdNO0VsQndqVU47O0VrQm5rVUE7SUFXTTtFbEI0alVOOztFa0J2a1VBO0lBV007RWxCZ2tVTjs7RWtCM2tVQTtJQVdNO0VsQm9rVU47O0VrQi9rVUE7SUFXTTtFbEJ3a1VOOztFa0JubFVBO0lBV007RWxCNGtVTjs7RWtCdmxVQTtJQVdNO0VsQmdsVU47O0VrQjNsVUE7SUFXTTtFbEJvbFVOOztFa0IvbFVBO0lBV007RWxCd2xVTjs7RWtCbm1VQTtJQVdNO0VsQjRsVU47O0VrQnZtVUE7SUFXTTtFbEJnbVVOOztFa0IzbVVBO0lBV007RWxCb21VTjs7RWtCL21VQTtJQVdNO0VsQndtVU47O0VrQm5uVUE7SUFXTTtFbEI0bVVOOztFa0J2blVBO0lBV007RWxCZ25VTjs7RWtCM25VQTtJQVdNO0VsQm9uVU47O0VrQi9uVUE7SUFXTTtFbEJ3blVOOztFa0Jub1VBO0lBV007RWxCNG5VTjs7RWtCdm9VQTtJQVdNO0VsQmdvVU47O0VrQjNvVUE7SUFXTTtFbEJvb1VOOztFa0Ivb1VBO0lBV007RWxCd29VTjs7RWtCbnBVQTtJQVdNO0VsQjRvVU47O0VrQnZwVUE7SUFXTTtFbEJncFVOOztFa0IzcFVBO0lBV007RWxCb3BVTjs7RWtCL3BVQTtJQVdNO0VsQndwVU47O0VrQm5xVUE7SUFXTTtFbEI0cFVOOztFa0J2cVVBO0lBV007RWxCZ3FVTjs7RWtCM3FVQTtJQVdNO0VsQm9xVU47O0VrQi9xVUE7SUFXTTtFbEJ3cVVOOztFa0JuclVBO0lBV007RWxCNHFVTjs7RWtCdnJVQTtJQVdNO0VsQmdyVU47O0VrQjNyVUE7SUFXTTtFbEJvclVOOztFa0IvclVBO0lBV007RWxCd3JVTjs7RWtCbnNVQTtJQVdNO0VsQjRyVU47O0VrQnZzVUE7SUFXTTtFbEJnc1VOOztFa0Izc1VBO0lBV007RWxCb3NVTjs7RWtCL3NVQTtJQVdNO0VsQndzVU47O0VrQm50VUE7SUFXTTtFbEI0c1VOOztFa0J2dFVBO0lBV007RWxCZ3RVTjs7RWtCM3RVQTtJQVdNO0VsQm90VU47O0VrQi90VUE7SUFXTTtFbEJ3dFVOOztFa0JudVVBO0lBV007RWxCNHRVTjs7RWtCdnVVQTtJQVdNO0VsQmd1VU47O0VrQjN1VUE7SUFXTTtFbEJvdVVOOztFa0IvdVVBO0lBV007RWxCd3VVTjs7RWtCbnZVQTtJQVdNO0VsQjR1VU47O0VrQnZ2VUE7SUFXTTtFbEJndlVOOztFa0IzdlVBO0lBV007RWxCb3ZVTjs7RWtCL3ZVQTtJQVdNO0VsQnd2VU47O0VrQm53VUE7SUFXTTtFbEI0dlVOOztFa0J2d1VBO0lBV007RWxCZ3dVTjs7RWtCM3dVQTtJQVdNO0VsQm93VU47O0VrQi93VUE7SUFXTTtFbEJ3d1VOOztFa0JueFVBO0lBV007RWxCNHdVTjs7RWtCdnhVQTtJQVdNO0VsQmd4VU47O0VrQjN4VUE7SUFXTTtFbEJveFVOOztFa0IveFVBO0lBV007RWxCd3hVTjs7RWtCbnlVQTtJQVdNO0VsQjR4VU47O0VrQnZ5VUE7SUFXTTtFbEJneVVOOztFa0IzeVVBO0lBV007RWxCb3lVTjs7RWtCL3lVQTtJQVdNO0VsQnd5VU47O0VrQm56VUE7SUFXTTtFbEI0eVVOOztFa0J2elVBO0lBV007SUFBQTtFbEJpelVOOztFa0I1elVBO0lBV007SUFBQTtFbEJzelVOOztFa0JqMFVBO0lBV007SUFBQTtFbEIyelVOOztFa0J0MFVBO0lBV007SUFBQTtFbEJnMFVOOztFa0IzMFVBO0lBV007SUFBQTtFbEJxMFVOOztFa0JoMVVBO0lBV007SUFBQTtFbEIwMFVOOztFa0JyMVVBO0lBV007SUFBQTtFbEIrMFVOOztFa0IxMVVBO0lBV007SUFBQTtFbEJvMVVOOztFa0IvMVVBO0lBV007SUFBQTtFbEJ5MVVOOztFa0JwMlVBO0lBV007SUFBQTtFbEI4MVVOOztFa0J6MlVBO0lBV007SUFBQTtFbEJtMlVOOztFa0I5MlVBO0lBV007SUFBQTtFbEJ3MlVOOztFa0JuM1VBO0lBV007SUFBQTtFbEI2MlVOOztFa0J4M1VBO0lBV007SUFBQTtFbEJrM1VOOztFa0I3M1VBO0lBV007SUFBQTtFbEJ1M1VOOztFa0JsNFVBO0lBV007SUFBQTtFbEI0M1VOOztFa0J2NFVBO0lBV007SUFBQTtFbEJpNFVOOztFa0I1NFVBO0lBV007SUFBQTtFbEJzNFVOOztFa0JqNVVBO0lBV007SUFBQTtFbEIyNFVOOztFa0J0NVVBO0lBV007SUFBQTtFbEJnNVVOOztFa0IzNVVBO0lBV007SUFBQTtFbEJxNVVOOztFa0JoNlVBO0lBV007SUFBQTtFbEIwNVVOOztFa0JyNlVBO0lBV007SUFBQTtFbEIrNVVOOztFa0IxNlVBO0lBV007SUFBQTtFbEJvNlVOOztFa0IvNlVBO0lBV007SUFBQTtFbEJ5NlVOOztFa0JwN1VBO0lBV007SUFBQTtFbEI4NlVOOztFa0J6N1VBO0lBV007SUFBQTtFbEJtN1VOOztFa0I5N1VBO0lBV007SUFBQTtFbEJ3N1VOOztFa0JuOFVBO0lBV007SUFBQTtFbEI2N1VOOztFa0J4OFVBO0lBV007SUFBQTtFbEJrOFVOOztFa0I3OFVBO0lBV007SUFBQTtFbEJ1OFVOOztFa0JsOVVBO0lBV007SUFBQTtFbEI0OFVOOztFa0J2OVVBO0lBV007RWxCZzlVTjs7RWtCMzlVQTtJQVdNO0VsQm85VU47O0VrQi85VUE7SUFXTTtFbEJ3OVVOOztFa0JuK1VBO0lBV007RWxCNDlVTjs7RWtCditVQTtJQVdNO0VsQmcrVU47O0VrQjMrVUE7SUFXTTtFbEJvK1VOOztFa0IvK1VBO0lBV007RWxCdytVTjs7RWtCbi9VQTtJQVdNO0VsQjQrVU47O0VrQnYvVUE7SUFXTTtFbEJnL1VOOztFa0IzL1VBO0lBV007RWxCby9VTjs7RWtCLy9VQTtJQVdNO0VsQncvVU47O0VrQm5nVkE7SUFXTTtFbEI0L1VOOztFa0J2Z1ZBO0lBV007RWxCZ2dWTjs7RWtCM2dWQTtJQVdNO0VsQm9nVk47O0VrQi9nVkE7SUFXTTtFbEJ3Z1ZOOztFa0JuaFZBO0lBV007RWxCNGdWTjs7RWtCdmhWQTtJQVdNO0VsQmdoVk47O0VrQjNoVkE7SUFXTTtFbEJvaFZOOztFa0IvaFZBO0lBV007RWxCd2hWTjs7RWtCbmlWQTtJQVdNO0VsQjRoVk47O0VrQnZpVkE7SUFXTTtFbEJnaVZOOztFa0IzaVZBO0lBV007RWxCb2lWTjs7RWtCL2lWQTtJQVdNO0VsQndpVk47O0VrQm5qVkE7SUFXTTtFbEI0aVZOOztFa0J2alZBO0lBV007RWxCZ2pWTjs7RWtCM2pWQTtJQVdNO0VsQm9qVk47O0VrQi9qVkE7SUFXTTtFbEJ3alZOOztFa0Jua1ZBO0lBV007RWxCNGpWTjs7RWtCdmtWQTtJQVdNO0VsQmdrVk47O0VrQjNrVkE7SUFXTTtFbEJva1ZOOztFa0Iva1ZBO0lBV007RWxCd2tWTjs7RWtCbmxWQTtJQVdNO0VsQjRrVk47O0VrQnZsVkE7SUFXTTtFbEJnbFZOOztFa0IzbFZBO0lBV007RWxCb2xWTjs7RWtCL2xWQTtJQVdNO0VsQndsVk47O0VrQm5tVkE7SUFXTTtFbEI0bFZOOztFa0J2bVZBO0lBV007RWxCZ21WTjs7RWtCM21WQTtJQVdNO0VsQm9tVk47O0VrQi9tVkE7SUFXTTtFbEJ3bVZOOztFa0JublZBO0lBV007RWxCNG1WTjs7RWtCdm5WQTtJQVdNO0VsQmduVk47O0VrQjNuVkE7SUFXTTtFbEJvblZOOztFa0IvblZBO0lBV007RWxCd25WTjs7RWtCbm9WQTtJQVdNO0VsQjRuVk47O0VrQnZvVkE7SUFXTTtFbEJnb1ZOOztFa0Izb1ZBO0lBV007RWxCb29WTjs7RWtCL29WQTtJQVdNO0VsQndvVk47O0VrQm5wVkE7SUFXTTtFbEI0b1ZOOztFa0J2cFZBO0lBV007RWxCZ3BWTjs7RWtCM3BWQTtJQVdNO0VsQm9wVk47O0VrQi9wVkE7SUFXTTtFbEJ3cFZOOztFa0JucVZBO0lBV007RWxCNHBWTjs7RWtCdnFWQTtJQVdNO0VsQmdxVk47O0VrQjNxVkE7SUFXTTtFbEJvcVZOOztFa0IvcVZBO0lBV007RWxCd3FWTjs7RWtCbnJWQTtJQVdNO0VsQjRxVk47O0VrQnZyVkE7SUFXTTtFbEJnclZOOztFa0IzclZBO0lBV007RWxCb3JWTjs7RWtCL3JWQTtJQVdNO0VsQndyVk47O0VrQm5zVkE7SUFXTTtFbEI0clZOOztFa0J2c1ZBO0lBV007RWxCZ3NWTjs7RWtCM3NWQTtJQVdNO0VsQm9zVk47O0VrQi9zVkE7SUFXTTtFbEJ3c1ZOOztFa0JudFZBO0lBV007RWxCNHNWTjs7RWtCdnRWQTtJQVdNO0VsQmd0Vk47O0VrQjN0VkE7SUFXTTtFbEJvdFZOOztFa0IvdFZBO0lBV007RWxCd3RWTjs7RWtCbnVWQTtJQVdNO0VsQjR0Vk47O0VrQnZ1VkE7SUFXTTtFbEJndVZOOztFa0IzdVZBO0lBV007RWxCb3VWTjs7RWtCL3VWQTtJQVdNO0VsQnd1Vk47O0VrQm52VkE7SUFXTTtFbEI0dVZOOztFa0J2dlZBO0lBV007RWxCZ3ZWTjs7RWtCM3ZWQTtJQVdNO0VsQm92Vk47O0VrQi92VkE7SUFXTTtFbEJ3dlZOOztFa0Jud1ZBO0lBV007RWxCNHZWTjs7RWtCdndWQTtJQVdNO0VsQmd3Vk47O0VrQjN3VkE7SUFXTTtFbEJvd1ZOOztFa0Ivd1ZBO0lBV007RWxCd3dWTjs7RWtCbnhWQTtJQVdNO0VsQjR3Vk47O0VrQnZ4VkE7SUFXTTtFbEJneFZOOztFa0IzeFZBO0lBV007RWxCb3hWTjs7RWtCL3hWQTtJQVdNO0VsQnd4Vk47O0VrQm55VkE7SUFXTTtFbEI0eFZOOztFa0J2eVZBO0lBV007RWxCZ3lWTjs7RWtCM3lWQTtJQVdNO0VsQm95Vk47O0VrQi95VkE7SUFXTTtFbEJ3eVZOOztFa0JuelZBO0lBV007RWxCNHlWTjs7RWtCdnpWQTtJQVdNO0VsQmd6Vk47O0VrQjN6VkE7SUFXTTtFbEJvelZOOztFa0IvelZBO0lBV007RWxCd3pWTjs7RWtCbjBWQTtJQVdNO0VsQjR6Vk47O0VrQnYwVkE7SUFXTTtFbEJnMFZOOztFa0IzMFZBO0lBV007RWxCbzBWTjs7RWtCLzBWQTtJQVdNO0VsQncwVk47O0VrQm4xVkE7SUFXTTtFbEI0MFZOOztFa0J2MVZBO0lBV007RWxCZzFWTjs7RWtCMzFWQTtJQVdNO0VsQm8xVk47O0VrQi8xVkE7SUFXTTtFbEJ3MVZOOztFa0JuMlZBO0lBV007RWxCNDFWTjs7RWtCdjJWQTtJQVdNO0VsQmcyVk47O0VrQjMyVkE7SUFXTTtFbEJvMlZOOztFa0IvMlZBO0lBV007RWxCdzJWTjs7RWtCbjNWQTtJQVdNO0VsQjQyVk47O0VrQnYzVkE7SUFXTTtFbEJnM1ZOOztFa0IzM1ZBO0lBV007RWxCbzNWTjs7RWtCLzNWQTtJQVdNO0VsQnczVk47O0VrQm40VkE7SUFXTTtFbEI0M1ZOOztFa0J2NFZBO0lBV007RWxCZzRWTjs7RWtCMzRWQTtJQVdNO0VsQm80Vk47O0VrQi80VkE7SUFXTTtFbEJ3NFZOOztFa0JuNVZBO0lBV007RWxCNDRWTjs7RWtCdjVWQTtJQVdNO0VsQmc1Vk47O0VrQjM1VkE7SUFXTTtFbEJvNVZOOztFa0IvNVZBO0lBV007RWxCdzVWTjs7RWtCbjZWQTtJQVdNO0VsQjQ1Vk47O0VrQnY2VkE7SUFXTTtFbEJnNlZOOztFa0IzNlZBO0lBV007RWxCbzZWTjs7RWtCLzZWQTtJQVdNO0VsQnc2Vk47O0VrQm43VkE7SUFXTTtFbEI0NlZOOztFa0J2N1ZBO0lBV007RWxCZzdWTjs7RWtCMzdWQTtJQVdNO0VsQm83Vk47O0VrQi83VkE7SUFXTTtFbEJ3N1ZOOztFa0JuOFZBO0lBV007RWxCNDdWTjs7RWtCdjhWQTtJQVdNO0VsQmc4Vk47O0VrQjM4VkE7SUFXTTtFbEJvOFZOOztFa0IvOFZBO0lBV007RWxCdzhWTjs7RWtCbjlWQTtJQVdNO0VsQjQ4Vk47O0VrQnY5VkE7SUFXTTtFbEJnOVZOOztFa0IzOVZBO0lBV007RWxCbzlWTjs7RWtCLzlWQTtJQVdNO0VsQnc5Vk47O0VrQm4rVkE7SUFXTTtFbEI0OVZOOztFa0J2K1ZBO0lBV007RWxCZytWTjs7RWtCMytWQTtJQVdNO0VsQm8rVk47O0VrQi8rVkE7SUFXTTtFbEJ3K1ZOOztFa0JuL1ZBO0lBV007RWxCNCtWTjs7RWtCdi9WQTtJQVdNO0VsQmcvVk47O0VrQjMvVkE7SUFXTTtFbEJvL1ZOOztFa0IvL1ZBO0lBV007RWxCdy9WTjs7RWtCbmdXQTtJQVdNO0VsQjQvVk47O0VrQnZnV0E7SUFXTTtFbEJnZ1dOOztFa0IzZ1dBO0lBV007RWxCb2dXTjs7RWtCL2dXQTtJQVdNO0VsQndnV047O0VrQm5oV0E7SUFXTTtFbEI0Z1dOOztFa0J2aFdBO0lBV007RWxCZ2hXTjs7RWtCM2hXQTtJQVdNO0lBQUE7RWxCcWhXTjs7RWtCaGlXQTtJQVdNO0lBQUE7RWxCMGhXTjs7RWtCcmlXQTtJQVdNO0lBQUE7RWxCK2hXTjs7RWtCMWlXQTtJQVdNO0lBQUE7RWxCb2lXTjs7RWtCL2lXQTtJQVdNO0lBQUE7RWxCeWlXTjs7RWtCcGpXQTtJQVdNO0lBQUE7RWxCOGlXTjs7RWtCempXQTtJQVdNO0lBQUE7RWxCbWpXTjs7RWtCOWpXQTtJQVdNO0lBQUE7RWxCd2pXTjs7RWtCbmtXQTtJQVdNO0lBQUE7RWxCNmpXTjs7RWtCeGtXQTtJQVdNO0lBQUE7RWxCa2tXTjs7RWtCN2tXQTtJQVdNO0lBQUE7RWxCdWtXTjs7RWtCbGxXQTtJQVdNO0lBQUE7RWxCNGtXTjs7RWtCdmxXQTtJQVdNO0lBQUE7RWxCaWxXTjs7RWtCNWxXQTtJQVdNO0lBQUE7RWxCc2xXTjs7RWtCam1XQTtJQVdNO0lBQUE7RWxCMmxXTjs7RWtCdG1XQTtJQVdNO0lBQUE7RWxCZ21XTjs7RWtCM21XQTtJQVdNO0lBQUE7RWxCcW1XTjs7RWtCaG5XQTtJQVdNO0lBQUE7RWxCMG1XTjs7RWtCcm5XQTtJQVdNO0lBQUE7RWxCK21XTjs7RWtCMW5XQTtJQVdNO0lBQUE7RWxCb25XTjs7RWtCL25XQTtJQVdNO0lBQUE7RWxCeW5XTjs7RWtCcG9XQTtJQVdNO0lBQUE7RWxCOG5XTjs7RWtCem9XQTtJQVdNO0lBQUE7RWxCbW9XTjs7RWtCOW9XQTtJQVdNO0lBQUE7RWxCd29XTjs7RWtCbnBXQTtJQVdNO0lBQUE7RWxCNm9XTjs7RWtCeHBXQTtJQVdNO0lBQUE7RWxCa3BXTjs7RWtCN3BXQTtJQVdNO0lBQUE7RWxCdXBXTjs7RWtCbHFXQTtJQVdNO0lBQUE7RWxCNHBXTjs7RWtCdnFXQTtJQVdNO0lBQUE7RWxCaXFXTjs7RWtCNXFXQTtJQVdNO0lBQUE7RWxCc3FXTjs7RWtCanJXQTtJQVdNO0lBQUE7RWxCMnFXTjs7RWtCdHJXQTtJQVdNO0lBQUE7RWxCZ3JXTjs7RWtCM3JXQTtJQVdNO0lBQUE7RWxCcXJXTjs7RWtCaHNXQTtJQVdNO0lBQUE7RWxCMHJXTjs7RWtCcnNXQTtJQVdNO0VsQjhyV047O0VrQnpzV0E7SUFXTTtFbEJrc1dOOztFa0I3c1dBO0lBV007RWxCc3NXTjs7RWtCanRXQTtJQVdNO0VsQjBzV047O0VrQnJ0V0E7SUFXTTtFbEI4c1dOOztFa0J6dFdBO0lBV007RWxCa3RXTjs7RWtCN3RXQTtJQVdNO0VsQnN0V047O0VrQmp1V0E7SUFXTTtFbEIwdFdOOztFa0JydVdBO0lBV007RWxCOHRXTjs7RWtCenVXQTtJQVdNO0VsQmt1V047O0VrQjd1V0E7SUFXTTtFbEJzdVdOOztFa0JqdldBO0lBV007RWxCMHVXTjs7RWtCcnZXQTtJQVdNO0VsQjh1V047O0VrQnp2V0E7SUFXTTtFbEJrdldOOztFa0I3dldBO0lBV007RWxCc3ZXTjs7RWtCandXQTtJQVdNO0VsQjB2V047O0VrQnJ3V0E7SUFXTTtFbEI4dldOOztFa0J6d1dBO0lBV007RWxCa3dXTjs7RWtCN3dXQTtJQVdNO0VsQnN3V047O0VrQmp4V0E7SUFXTTtFbEIwd1dOOztFa0JyeFdBO0lBV007RWxCOHdXTjs7RWtCenhXQTtJQVdNO0VsQmt4V047O0VrQjd4V0E7SUFXTTtFbEJzeFdOOztFa0JqeVdBO0lBV007RWxCMHhXTjs7RWtCcnlXQTtJQVdNO0VsQjh4V047O0VrQnp5V0E7SUFXTTtFbEJreVdOOztFa0I3eVdBO0lBV007RWxCc3lXTjs7RWtCanpXQTtJQVdNO0VsQjB5V047O0VrQnJ6V0E7SUFXTTtFbEI4eVdOOztFa0J6eldBO0lBV007RWxCa3pXTjs7RWtCN3pXQTtJQVdNO0VsQnN6V047O0VrQmowV0E7SUFXTTtFbEIweldOOztFa0JyMFdBO0lBV007RWxCOHpXTjs7RWtCejBXQTtJQVdNO0VsQmswV047O0VrQjcwV0E7SUFXTTtFbEJzMFdOOztFa0JqMVdBO0lBV007RWxCMDBXTjs7RWtCcjFXQTtJQVdNO0VsQjgwV047O0VrQnoxV0E7SUFXTTtFbEJrMVdOOztFa0I3MVdBO0lBV007RWxCczFXTjs7RWtCajJXQTtJQVdNO0VsQjAxV047O0VrQnIyV0E7SUFXTTtFbEI4MVdOOztFa0J6MldBO0lBV007RWxCazJXTjs7RWtCNzJXQTtJQVdNO0VsQnMyV047O0VrQmozV0E7SUFXTTtFbEIwMldOOztFa0JyM1dBO0lBV007RWxCODJXTjs7RWtCejNXQTtJQVdNO0VsQmszV047O0VrQjczV0E7SUFXTTtFbEJzM1dOOztFa0JqNFdBO0lBV007RWxCMDNXTjs7RWtCcjRXQTtJQVdNO0VsQjgzV047O0VrQno0V0E7SUFXTTtFbEJrNFdOOztFa0I3NFdBO0lBV007RWxCczRXTjs7RWtCajVXQTtJQVdNO0VsQjA0V047O0VrQnI1V0E7SUFXTTtFbEI4NFdOOztFa0J6NVdBO0lBV007RWxCazVXTjs7RWtCNzVXQTtJQVdNO0VsQnM1V047O0VrQmo2V0E7SUFXTTtFbEIwNVdOOztFa0JyNldBO0lBV007RWxCODVXTjs7RWtCejZXQTtJQVdNO0VsQms2V047O0VrQjc2V0E7SUFXTTtFbEJzNldOOztFa0JqN1dBO0lBV007RWxCMDZXTjs7RWtCcjdXQTtJQVdNO0VsQjg2V047O0VrQno3V0E7SUFXTTtFbEJrN1dOOztFa0I3N1dBO0lBV007RWxCczdXTjs7RWtCajhXQTtJQVdNO0VsQjA3V047O0VrQnI4V0E7SUFXTTtFbEI4N1dOOztFa0J6OFdBO0lBV007RWxCazhXTjs7RWtCNzhXQTtJQVdNO0VsQnM4V047O0VrQmo5V0E7SUFXTTtFbEIwOFdOOztFa0JyOVdBO0lBV007RWxCODhXTjs7RWtCejlXQTtJQVdNO0VsQms5V047O0VrQjc5V0E7SUFXTTtFbEJzOVdOOztFa0JqK1dBO0lBV007RWxCMDlXTjs7RWtCcitXQTtJQVdNO0VsQjg5V047O0VrQnorV0E7SUFXTTtFbEJrK1dOOztFa0I3K1dBO0lBV007RWxCcytXTjs7RWtCai9XQTtJQVdNO0VsQjArV047O0VrQnIvV0E7SUFXTTtFbEI4K1dOOztFa0J6L1dBO0lBV007RWxCay9XTjs7RWtCNy9XQTtJQVdNO0VsQnMvV047O0VrQmpnWEE7SUFXTTtFbEIwL1dOOztFa0JyZ1hBO0lBV007RWxCOC9XTjs7RWtCemdYQTtJQVdNO0VsQmtnWE47O0VrQjdnWEE7SUFXTTtFbEJzZ1hOOztFa0JqaFhBO0lBV007RWxCMGdYTjs7RWtCcmhYQTtJQVdNO0VsQjhnWE47O0VrQnpoWEE7SUFXTTtFbEJraFhOOztFa0I3aFhBO0lBV007RWxCc2hYTjs7RWtCamlYQTtJQVdNO0VsQjBoWE47O0VrQnJpWEE7SUFXTTtFbEI4aFhOOztFa0J6aVhBO0lBV007RWxCa2lYTjs7RWtCN2lYQTtJQVdNO0VsQnNpWE47O0VrQmpqWEE7SUFXTTtFbEIwaVhOOztFa0JyalhBO0lBV007RWxCOGlYTjs7RWtCempYQTtJQVdNO0VsQmtqWE47O0VrQjdqWEE7SUFXTTtFbEJzalhOOztFa0Jqa1hBO0lBV007RWxCMGpYTjs7RWtCcmtYQTtJQVdNO0VsQjhqWE47O0VrQnprWEE7SUFXTTtFbEJra1hOOztFa0I3a1hBO0lBV007RWxCc2tYTjs7RWtCamxYQTtJQVdNO0VsQjBrWE47O0VrQnJsWEE7SUFXTTtFbEI4a1hOOztFa0J6bFhBO0lBV007RWxCa2xYTjs7RWtCN2xYQTtJQVdNO0VsQnNsWE47O0VrQmptWEE7SUFXTTtFbEIwbFhOOztFa0JybVhBO0lBV007RWxCOGxYTjs7RWtCem1YQTtJQVdNO0VsQmttWE47O0VrQjdtWEE7SUFXTTtFbEJzbVhOOztFa0JqblhBO0lBV007RWxCMG1YTjs7RWtCcm5YQTtJQVdNO0VsQjhtWE47O0VrQnpuWEE7SUFXTTtFbEJrblhOOztFa0I3blhBO0lBV007RWxCc25YTjs7RWtCam9YQTtJQVdNO0VsQjBuWE47O0VrQnJvWEE7SUFXTTtFbEI4blhOOztFa0J6b1hBO0lBV007RWxCa29YTjs7RWtCN29YQTtJQVdNO0VsQnNvWE47O0VrQmpwWEE7SUFXTTtFbEIwb1hOOztFa0JycFhBO0lBV007RWxCOG9YTjs7RWtCenBYQTtJQVdNO0VsQmtwWE47O0VrQjdwWEE7SUFXTTtFbEJzcFhOOztFa0JqcVhBO0lBV007RWxCMHBYTjs7RWtCcnFYQTtJQVdNO0VsQjhwWE47O0VrQnpxWEE7SUFXTTtFbEJrcVhOOztFa0I3cVhBO0lBV007RWxCc3FYTjs7RWtCanJYQTtJQVdNO0VsQjBxWE47O0VrQnJyWEE7SUFXTTtFbEI4cVhOOztFa0J6clhBO0lBV007RWxCa3JYTjs7RWtCN3JYQTtJQVdNO0VsQnNyWE47O0VrQmpzWEE7SUFXTTtFbEIwclhOOztFa0Jyc1hBO0lBV007RWxCOHJYTjs7RWtCenNYQTtJQVdNO0VsQmtzWE47O0VrQjdzWEE7SUFXTTtFbEJzc1hOOztFa0JqdFhBO0lBV007RWxCMHNYTjs7RWtCcnRYQTtJQVdNO0VsQjhzWE47O0VrQnp0WEE7SUFXTTtFbEJrdFhOOztFa0I3dFhBO0lBV007RWxCc3RYTjs7RWtCanVYQTtJQVdNO0VsQjB0WE47O0VrQnJ1WEE7SUFXTTtFbEI4dFhOOztFa0J6dVhBO0lBV007RWxCa3VYTjs7RWtCN3VYQTtJQVdNO0VsQnN1WE47O0VrQmp2WEE7SUFXTTtFbEIwdVhOOztFa0JydlhBO0lBV007RWxCOHVYTjs7RWtCenZYQTtJQVdNO0VsQmt2WE47O0VrQjd2WEE7SUFXTTtJQUFBO0lBQUE7SUFBQTtJQUFBO0VsQjB2WE47O0VrQnJ3WEE7SUFXTTtJQUFBO0lBQUE7SUFBQTtJQUFBO0VsQmt3WE47O0VrQjd3WEE7SUFXTTtJQUFBO0lBQUE7SUFBQTtJQUFBO0VsQjB3WE47O0VrQnJ4WEE7SUFXTTtJQUFBO0lBQUE7SUFBQTtJQUFBO0VsQmt4WE47O0VrQjd4WEE7SUFXTTtJQUFBO0lBQUE7SUFBQTtJQUFBO0VsQjB4WE47O0VrQnJ5WEE7SUFXTTtJQUFBO0lBQUE7SUFBQTtJQUFBO0VsQmt5WE47O0VrQjd5WEE7SUFXTTtJQUFBO0lBQUE7SUFBQTtJQUFBO0VsQjB5WE47O0VrQnJ6WEE7SUFXTTtJQUFBO0lBQUE7SUFBQTtJQUFBO0VsQmt6WE47O0VrQjd6WEE7SUFXTTtJQUFBO0lBQUE7SUFBQTtJQUFBO0VsQjB6WE47O0VrQnIwWEE7SUFXTTtJQUFBO0lBQUE7SUFBQTtJQUFBO0VsQmswWE47O0VrQjcwWEE7SUFXTTtJQUFBO0lBQUE7SUFBQTtJQUFBO0lBQUE7RWxCMjBYTjs7RWtCdDFYQTtJQVdNO0lBQUE7SUFBQTtJQUFBO0lBQUE7RWxCbTFYTjs7RWtCOTFYQTtJQVdNO0lBQUE7SUFBQTtJQUFBO0lBQUE7SUFBQTtFbEI0MVhOO0FBQ0Y7QW1CMzRYSTtFRG1DRjtJQVdNO0VsQmkyWE47O0VrQjUyWEE7SUFXTTtFbEJxMlhOOztFa0JoM1hBO0lBV007RWxCeTJYTjs7RWtCcDNYQTtJQVdNO0VsQjYyWE47O0VrQngzWEE7SUFXTTtFbEJpM1hOOztFa0I1M1hBO0lBV007RWxCcTNYTjs7RWtCaDRYQTtJQVdNO0VsQnkzWE47O0VrQnA0WEE7SUFXTTtFbEI2M1hOOztFa0J4NFhBO0lBV007RWxCaTRYTjs7RWtCNTRYQTtJQVdNO0VsQnE0WE47O0VrQmg1WEE7SUFXTTtFbEJ5NFhOOztFa0JwNVhBO0lBV007RWxCNjRYTjs7RWtCeDVYQTtJQVdNO0VsQmk1WE47O0VrQjU1WEE7SUFXTTtFbEJxNVhOOztFa0JoNlhBO0lBV007RWxCeTVYTjs7RWtCcDZYQTtJQVdNO0VsQjY1WE47O0VrQng2WEE7SUFXTTtFbEJpNlhOOztFa0I1NlhBO0lBV007RWxCcTZYTjs7RWtCaDdYQTtJQVdNO0VsQnk2WE47O0VrQnA3WEE7SUFXTTtFbEI2NlhOOztFa0J4N1hBO0lBV007RWxCaTdYTjs7RWtCNTdYQTtJQVdNO0VsQnE3WE47O0VrQmg4WEE7SUFXTTtFbEJ5N1hOOztFa0JwOFhBO0lBV007RWxCNjdYTjs7RWtCeDhYQTtJQVdNO0VsQmk4WE47O0VrQjU4WEE7SUFXTTtFbEJxOFhOOztFa0JoOVhBO0lBV007RWxCeThYTjs7RWtCcDlYQTtJQVdNO0VsQjY4WE47O0VrQng5WEE7SUFXTTtFbEJpOVhOOztFa0I1OVhBO0lBV007RWxCcTlYTjs7RWtCaCtYQTtJQVdNO0VsQnk5WE47O0VrQnArWEE7SUFXTTtFbEI2OVhOOztFa0J4K1hBO0lBV007RWxCaStYTjs7RWtCNStYQTtJQVdNO0VsQnErWE47O0VrQmgvWEE7SUFXTTtFbEJ5K1hOOztFa0JwL1hBO0lBV007RWxCNitYTjs7RWtCeC9YQTtJQVdNO0VsQmkvWE47O0VrQjUvWEE7SUFXTTtFbEJxL1hOOztFa0JoZ1lBO0lBV007RWxCeS9YTjs7RWtCcGdZQTtJQVdNO0VsQjYvWE47O0VrQnhnWUE7SUFXTTtFbEJpZ1lOOztFa0I1Z1lBO0lBV007RWxCcWdZTjs7RWtCaGhZQTtJQVdNO0VsQnlnWU47O0VrQnBoWUE7SUFXTTtFbEI2Z1lOOztFa0J4aFlBO0lBV007RWxCaWhZTjs7RWtCNWhZQTtJQVdNO0VsQnFoWU47O0VrQmhpWUE7SUFXTTtFbEJ5aFlOOztFa0JwaVlBO0lBV007RWxCNmhZTjs7RWtCeGlZQTtJQVdNO0VsQmlpWU47O0VrQjVpWUE7SUFXTTtFbEJxaVlOOztFa0JoallBO0lBV007RWxCeWlZTjs7RWtCcGpZQTtJQVdNO0VsQjZpWU47O0VrQnhqWUE7SUFXTTtFbEJpallOOztFa0I1allBO0lBV007RWxCcWpZTjs7RWtCaGtZQTtJQVdNO0VsQnlqWU47O0VrQnBrWUE7SUFXTTtFbEI2allOOztFa0J4a1lBO0lBV007RWxCaWtZTjs7RWtCNWtZQTtJQVdNO0VsQnFrWU47O0VrQmhsWUE7SUFXTTtFbEJ5a1lOOztFa0JwbFlBO0lBV007RWxCNmtZTjs7RWtCeGxZQTtJQVdNO0VsQmlsWU47O0VrQjVsWUE7SUFXTTtFbEJxbFlOOztFa0JobVlBO0lBV007RWxCeWxZTjs7RWtCcG1ZQTtJQVdNO0VsQjZsWU47O0VrQnhtWUE7SUFXTTtFbEJpbVlOOztFa0I1bVlBO0lBV007RWxCcW1ZTjs7RWtCaG5ZQTtJQVdNO0VsQnltWU47O0VrQnBuWUE7SUFXTTtFbEI2bVlOOztFa0J4bllBO0lBV007RWxCaW5ZTjs7RWtCNW5ZQTtJQVdNO0VsQnFuWU47O0VrQmhvWUE7SUFXTTtFbEJ5bllOOztFa0Jwb1lBO0lBV007RWxCNm5ZTjs7RWtCeG9ZQTtJQVdNO0VsQmlvWU47O0VrQjVvWUE7SUFXTTtFbEJxb1lOOztFa0JocFlBO0lBV007RWxCeW9ZTjs7RWtCcHBZQTtJQVdNO0VsQjZvWU47O0VrQnhwWUE7SUFXTTtFbEJpcFlOOztFa0I1cFlBO0lBV007RWxCcXBZTjs7RWtCaHFZQTtJQVdNO0VsQnlwWU47O0VrQnBxWUE7SUFXTTtFbEI2cFlOOztFa0J4cVlBO0lBV007RWxCaXFZTjs7RWtCNXFZQTtJQVdNO0VsQnFxWU47O0VrQmhyWUE7SUFXTTtFbEJ5cVlOOztFa0JwcllBO0lBV007SUFBQTtFbEI4cVlOOztFa0J6cllBO0lBV007SUFBQTtFbEJtcllOOztFa0I5cllBO0lBV007SUFBQTtFbEJ3cllOOztFa0Juc1lBO0lBV007SUFBQTtFbEI2cllOOztFa0J4c1lBO0lBV007SUFBQTtFbEJrc1lOOztFa0I3c1lBO0lBV007SUFBQTtFbEJ1c1lOOztFa0JsdFlBO0lBV007SUFBQTtFbEI0c1lOOztFa0J2dFlBO0lBV007SUFBQTtFbEJpdFlOOztFa0I1dFlBO0lBV007SUFBQTtFbEJzdFlOOztFa0JqdVlBO0lBV007SUFBQTtFbEIydFlOOztFa0J0dVlBO0lBV007SUFBQTtFbEJndVlOOztFa0IzdVlBO0lBV007SUFBQTtFbEJxdVlOOztFa0JodllBO0lBV007SUFBQTtFbEIwdVlOOztFa0JydllBO0lBV007SUFBQTtFbEIrdVlOOztFa0IxdllBO0lBV007SUFBQTtFbEJvdllOOztFa0IvdllBO0lBV007SUFBQTtFbEJ5dllOOztFa0Jwd1lBO0lBV007SUFBQTtFbEI4dllOOztFa0J6d1lBO0lBV007SUFBQTtFbEJtd1lOOztFa0I5d1lBO0lBV007SUFBQTtFbEJ3d1lOOztFa0JueFlBO0lBV007SUFBQTtFbEI2d1lOOztFa0J4eFlBO0lBV007SUFBQTtFbEJreFlOOztFa0I3eFlBO0lBV007SUFBQTtFbEJ1eFlOOztFa0JseVlBO0lBV007SUFBQTtFbEI0eFlOOztFa0J2eVlBO0lBV007SUFBQTtFbEJpeVlOOztFa0I1eVlBO0lBV007SUFBQTtFbEJzeVlOOztFa0JqellBO0lBV007SUFBQTtFbEIyeVlOOztFa0J0ellBO0lBV007SUFBQTtFbEJnellOOztFa0IzellBO0lBV007SUFBQTtFbEJxellOOztFa0JoMFlBO0lBV007SUFBQTtFbEIwellOOztFa0JyMFlBO0lBV007SUFBQTtFbEIrellOOztFa0IxMFlBO0lBV007SUFBQTtFbEJvMFlOOztFa0IvMFlBO0lBV007SUFBQTtFbEJ5MFlOOztFa0JwMVlBO0lBV007SUFBQTtFbEI4MFlOOztFa0J6MVlBO0lBV007SUFBQTtFbEJtMVlOOztFa0I5MVlBO0lBV007SUFBQTtFbEJ3MVlOOztFa0JuMllBO0lBV007SUFBQTtFbEI2MVlOOztFa0J4MllBO0lBV007RWxCaTJZTjs7RWtCNTJZQTtJQVdNO0VsQnEyWU47O0VrQmgzWUE7SUFXTTtFbEJ5MllOOztFa0JwM1lBO0lBV007RWxCNjJZTjs7RWtCeDNZQTtJQVdNO0VsQmkzWU47O0VrQjUzWUE7SUFXTTtFbEJxM1lOOztFa0JoNFlBO0lBV007RWxCeTNZTjs7RWtCcDRZQTtJQVdNO0VsQjYzWU47O0VrQng0WUE7SUFXTTtFbEJpNFlOOztFa0I1NFlBO0lBV007RWxCcTRZTjs7RWtCaDVZQTtJQVdNO0VsQnk0WU47O0VrQnA1WUE7SUFXTTtFbEI2NFlOOztFa0J4NVlBO0lBV007RWxCaTVZTjs7RWtCNTVZQTtJQVdNO0VsQnE1WU47O0VrQmg2WUE7SUFXTTtFbEJ5NVlOOztFa0JwNllBO0lBV007RWxCNjVZTjs7RWtCeDZZQTtJQVdNO0VsQmk2WU47O0VrQjU2WUE7SUFXTTtFbEJxNllOOztFa0JoN1lBO0lBV007RWxCeTZZTjs7RWtCcDdZQTtJQVdNO0VsQjY2WU47O0VrQng3WUE7SUFXTTtFbEJpN1lOOztFa0I1N1lBO0lBV007RWxCcTdZTjs7RWtCaDhZQTtJQVdNO0VsQnk3WU47O0VrQnA4WUE7SUFXTTtFbEI2N1lOOztFa0J4OFlBO0lBV007RWxCaThZTjs7RWtCNThZQTtJQVdNO0VsQnE4WU47O0VrQmg5WUE7SUFXTTtFbEJ5OFlOOztFa0JwOVlBO0lBV007RWxCNjhZTjs7RWtCeDlZQTtJQVdNO0VsQmk5WU47O0VrQjU5WUE7SUFXTTtFbEJxOVlOOztFa0JoK1lBO0lBV007RWxCeTlZTjs7RWtCcCtZQTtJQVdNO0VsQjY5WU47O0VrQngrWUE7SUFXTTtFbEJpK1lOOztFa0I1K1lBO0lBV007RWxCcStZTjs7RWtCaC9ZQTtJQVdNO0VsQnkrWU47O0VrQnAvWUE7SUFXTTtFbEI2K1lOOztFa0J4L1lBO0lBV007RWxCaS9ZTjs7RWtCNS9ZQTtJQVdNO0VsQnEvWU47O0VrQmhnWkE7SUFXTTtFbEJ5L1lOOztFa0JwZ1pBO0lBV007RWxCNi9ZTjs7RWtCeGdaQTtJQVdNO0VsQmlnWk47O0VrQjVnWkE7SUFXTTtFbEJxZ1pOOztFa0JoaFpBO0lBV007RWxCeWdaTjs7RWtCcGhaQTtJQVdNO0VsQjZnWk47O0VrQnhoWkE7SUFXTTtFbEJpaFpOOztFa0I1aFpBO0lBV007RWxCcWhaTjs7RWtCaGlaQTtJQVdNO0VsQnloWk47O0VrQnBpWkE7SUFXTTtFbEI2aFpOOztFa0J4aVpBO0lBV007RWxCaWlaTjs7RWtCNWlaQTtJQVdNO0VsQnFpWk47O0VrQmhqWkE7SUFXTTtFbEJ5aVpOOztFa0JwalpBO0lBV007RWxCNmlaTjs7RWtCeGpaQTtJQVdNO0VsQmlqWk47O0VrQjVqWkE7SUFXTTtFbEJxalpOOztFa0Joa1pBO0lBV007RWxCeWpaTjs7RWtCcGtaQTtJQVdNO0VsQjZqWk47O0VrQnhrWkE7SUFXTTtFbEJpa1pOOztFa0I1a1pBO0lBV007RWxCcWtaTjs7RWtCaGxaQTtJQVdNO0VsQnlrWk47O0VrQnBsWkE7SUFXTTtFbEI2a1pOOztFa0J4bFpBO0lBV007RWxCaWxaTjs7RWtCNWxaQTtJQVdNO0VsQnFsWk47O0VrQmhtWkE7SUFXTTtFbEJ5bFpOOztFa0JwbVpBO0lBV007RWxCNmxaTjs7RWtCeG1aQTtJQVdNO0VsQmltWk47O0VrQjVtWkE7SUFXTTtFbEJxbVpOOztFa0JoblpBO0lBV007RWxCeW1aTjs7RWtCcG5aQTtJQVdNO0VsQjZtWk47O0VrQnhuWkE7SUFXTTtFbEJpblpOOztFa0I1blpBO0lBV007RWxCcW5aTjs7RWtCaG9aQTtJQVdNO0VsQnluWk47O0VrQnBvWkE7SUFXTTtFbEI2blpOOztFa0J4b1pBO0lBV007RWxCaW9aTjs7RWtCNW9aQTtJQVdNO0VsQnFvWk47O0VrQmhwWkE7SUFXTTtFbEJ5b1pOOztFa0JwcFpBO0lBV007RWxCNm9aTjs7RWtCeHBaQTtJQVdNO0VsQmlwWk47O0VrQjVwWkE7SUFXTTtFbEJxcFpOOztFa0JocVpBO0lBV007RWxCeXBaTjs7RWtCcHFaQTtJQVdNO0VsQjZwWk47O0VrQnhxWkE7SUFXTTtFbEJpcVpOOztFa0I1cVpBO0lBV007RWxCcXFaTjs7RWtCaHJaQTtJQVdNO0VsQnlxWk47O0VrQnByWkE7SUFXTTtFbEI2cVpOOztFa0J4clpBO0lBV007RWxCaXJaTjs7RWtCNXJaQTtJQVdNO0VsQnFyWk47O0VrQmhzWkE7SUFXTTtFbEJ5clpOOztFa0Jwc1pBO0lBV007RWxCNnJaTjs7RWtCeHNaQTtJQVdNO0VsQmlzWk47O0VrQjVzWkE7SUFXTTtFbEJxc1pOOztFa0JodFpBO0lBV007RWxCeXNaTjs7RWtCcHRaQTtJQVdNO0VsQjZzWk47O0VrQnh0WkE7SUFXTTtFbEJpdFpOOztFa0I1dFpBO0lBV007RWxCcXRaTjs7RWtCaHVaQTtJQVdNO0VsQnl0Wk47O0VrQnB1WkE7SUFXTTtFbEI2dFpOOztFa0J4dVpBO0lBV007RWxCaXVaTjs7RWtCNXVaQTtJQVdNO0VsQnF1Wk47O0VrQmh2WkE7SUFXTTtFbEJ5dVpOOztFa0JwdlpBO0lBV007RWxCNnVaTjs7RWtCeHZaQTtJQVdNO0VsQml2Wk47O0VrQjV2WkE7SUFXTTtFbEJxdlpOOztFa0Jod1pBO0lBV007RWxCeXZaTjs7RWtCcHdaQTtJQVdNO0VsQjZ2Wk47O0VrQnh3WkE7SUFXTTtFbEJpd1pOOztFa0I1d1pBO0lBV007RWxCcXdaTjs7RWtCaHhaQTtJQVdNO0VsQnl3Wk47O0VrQnB4WkE7SUFXTTtFbEI2d1pOOztFa0J4eFpBO0lBV007RWxCaXhaTjs7RWtCNXhaQTtJQVdNO0VsQnF4Wk47O0VrQmh5WkE7SUFXTTtFbEJ5eFpOOztFa0JweVpBO0lBV007RWxCNnhaTjs7RWtCeHlaQTtJQVdNO0VsQml5Wk47O0VrQjV5WkE7SUFXTTtFbEJxeVpOOztFa0JoelpBO0lBV007RWxCeXlaTjs7RWtCcHpaQTtJQVdNO0VsQjZ5Wk47O0VrQnh6WkE7SUFXTTtFbEJpelpOOztFa0I1elpBO0lBV007RWxCcXpaTjs7RWtCaDBaQTtJQVdNO0VsQnl6Wk47O0VrQnAwWkE7SUFXTTtFbEI2elpOOztFa0J4MFpBO0lBV007RWxCaTBaTjs7RWtCNTBaQTtJQVdNO0VsQnEwWk47O0VrQmgxWkE7SUFXTTtFbEJ5MFpOOztFa0JwMVpBO0lBV007RWxCNjBaTjs7RWtCeDFaQTtJQVdNO0VsQmkxWk47O0VrQjUxWkE7SUFXTTtFbEJxMVpOOztFa0JoMlpBO0lBV007RWxCeTFaTjs7RWtCcDJaQTtJQVdNO0VsQjYxWk47O0VrQngyWkE7SUFXTTtFbEJpMlpOOztFa0I1MlpBO0lBV007RWxCcTJaTjs7RWtCaDNaQTtJQVdNO0VsQnkyWk47O0VrQnAzWkE7SUFXTTtFbEI2MlpOOztFa0J4M1pBO0lBV007RWxCaTNaTjs7RWtCNTNaQTtJQVdNO0VsQnEzWk47O0VrQmg0WkE7SUFXTTtFbEJ5M1pOOztFa0JwNFpBO0lBV007RWxCNjNaTjs7RWtCeDRaQTtJQVdNO0VsQmk0Wk47O0VrQjU0WkE7SUFXTTtFbEJxNFpOOztFa0JoNVpBO0lBV007RWxCeTRaTjs7RWtCcDVaQTtJQVdNO0VsQjY0Wk47O0VrQng1WkE7SUFXTTtFbEJpNVpOOztFa0I1NVpBO0lBV007RWxCcTVaTjs7RWtCaDZaQTtJQVdNO0VsQnk1Wk47O0VrQnA2WkE7SUFXTTtFbEI2NVpOOztFa0J4NlpBO0lBV007RWxCaTZaTjs7RWtCNTZaQTtJQVdNO0VsQnE2Wk47O0VrQmg3WkE7SUFXTTtFbEJ5NlpOOztFa0JwN1pBO0lBV007RWxCNjZaTjs7RWtCeDdaQTtJQVdNO0VsQmk3Wk47O0VrQjU3WkE7SUFXTTtFbEJxN1pOOztFa0JoOFpBO0lBV007RWxCeTdaTjs7RWtCcDhaQTtJQVdNO0VsQjY3Wk47O0VrQng4WkE7SUFXTTtFbEJpOFpOOztFa0I1OFpBO0lBV007RWxCcThaTjs7RWtCaDlaQTtJQVdNO0VsQnk4Wk47O0VrQnA5WkE7SUFXTTtFbEI2OFpOOztFa0J4OVpBO0lBV007RWxCaTlaTjs7RWtCNTlaQTtJQVdNO0VsQnE5Wk47O0VrQmgrWkE7SUFXTTtFbEJ5OVpOOztFa0JwK1pBO0lBV007RWxCNjlaTjs7RWtCeCtaQTtJQVdNO0lBQUE7RWxCaytaTjs7RWtCNytaQTtJQVdNO0lBQUE7RWxCdStaTjs7RWtCbC9aQTtJQVdNO0lBQUE7RWxCNCtaTjs7RWtCdi9aQTtJQVdNO0lBQUE7RWxCaS9aTjs7RWtCNS9aQTtJQVdNO0lBQUE7RWxCcy9aTjs7RWtCamdhQTtJQVdNO0lBQUE7RWxCMi9aTjs7RWtCdGdhQTtJQVdNO0lBQUE7RWxCZ2dhTjs7RWtCM2dhQTtJQVdNO0lBQUE7RWxCcWdhTjs7RWtCaGhhQTtJQVdNO0lBQUE7RWxCMGdhTjs7RWtCcmhhQTtJQVdNO0lBQUE7RWxCK2dhTjs7RWtCMWhhQTtJQVdNO0lBQUE7RWxCb2hhTjs7RWtCL2hhQTtJQVdNO0lBQUE7RWxCeWhhTjs7RWtCcGlhQTtJQVdNO0lBQUE7RWxCOGhhTjs7RWtCemlhQTtJQVdNO0lBQUE7RWxCbWlhTjs7RWtCOWlhQTtJQVdNO0lBQUE7RWxCd2lhTjs7RWtCbmphQTtJQVdNO0lBQUE7RWxCNmlhTjs7RWtCeGphQTtJQVdNO0lBQUE7RWxCa2phTjs7RWtCN2phQTtJQVdNO0lBQUE7RWxCdWphTjs7RWtCbGthQTtJQVdNO0lBQUE7RWxCNGphTjs7RWtCdmthQTtJQVdNO0lBQUE7RWxCaWthTjs7RWtCNWthQTtJQVdNO0lBQUE7RWxCc2thTjs7RWtCamxhQTtJQVdNO0lBQUE7RWxCMmthTjs7RWtCdGxhQTtJQVdNO0lBQUE7RWxCZ2xhTjs7RWtCM2xhQTtJQVdNO0lBQUE7RWxCcWxhTjs7RWtCaG1hQTtJQVdNO0lBQUE7RWxCMGxhTjs7RWtCcm1hQTtJQVdNO0lBQUE7RWxCK2xhTjs7RWtCMW1hQTtJQVdNO0lBQUE7RWxCb21hTjs7RWtCL21hQTtJQVdNO0lBQUE7RWxCeW1hTjs7RWtCcG5hQTtJQVdNO0lBQUE7RWxCOG1hTjs7RWtCem5hQTtJQVdNO0lBQUE7RWxCbW5hTjs7RWtCOW5hQTtJQVdNO0lBQUE7RWxCd25hTjs7RWtCbm9hQTtJQVdNO0lBQUE7RWxCNm5hTjs7RWtCeG9hQTtJQVdNO0VsQmlvYU47O0VrQjVvYUE7SUFXTTtFbEJxb2FOOztFa0JocGFBO0lBV007RWxCeW9hTjs7RWtCcHBhQTtJQVdNO0VsQjZvYU47O0VrQnhwYUE7SUFXTTtFbEJpcGFOOztFa0I1cGFBO0lBV007RWxCcXBhTjs7RWtCaHFhQTtJQVdNO0VsQnlwYU47O0VrQnBxYUE7SUFXTTtFbEI2cGFOOztFa0J4cWFBO0lBV007RWxCaXFhTjs7RWtCNXFhQTtJQVdNO0VsQnFxYU47O0VrQmhyYUE7SUFXTTtFbEJ5cWFOOztFa0JwcmFBO0lBV007RWxCNnFhTjs7RWtCeHJhQTtJQVdNO0VsQmlyYU47O0VrQjVyYUE7SUFXTTtFbEJxcmFOOztFa0Joc2FBO0lBV007RWxCeXJhTjs7RWtCcHNhQTtJQVdNO0VsQjZyYU47O0VrQnhzYUE7SUFXTTtFbEJpc2FOOztFa0I1c2FBO0lBV007RWxCcXNhTjs7RWtCaHRhQTtJQVdNO0VsQnlzYU47O0VrQnB0YUE7SUFXTTtFbEI2c2FOOztFa0J4dGFBO0lBV007RWxCaXRhTjs7RWtCNXRhQTtJQVdNO0VsQnF0YU47O0VrQmh1YUE7SUFXTTtFbEJ5dGFOOztFa0JwdWFBO0lBV007RWxCNnRhTjs7RWtCeHVhQTtJQVdNO0VsQml1YU47O0VrQjV1YUE7SUFXTTtFbEJxdWFOOztFa0JodmFBO0lBV007RWxCeXVhTjs7RWtCcHZhQTtJQVdNO0VsQjZ1YU47O0VrQnh2YUE7SUFXTTtFbEJpdmFOOztFa0I1dmFBO0lBV007RWxCcXZhTjs7RWtCaHdhQTtJQVdNO0VsQnl2YU47O0VrQnB3YUE7SUFXTTtFbEI2dmFOOztFa0J4d2FBO0lBV007RWxCaXdhTjs7RWtCNXdhQTtJQVdNO0VsQnF3YU47O0VrQmh4YUE7SUFXTTtFbEJ5d2FOOztFa0JweGFBO0lBV007RWxCNndhTjs7RWtCeHhhQTtJQVdNO0VsQml4YU47O0VrQjV4YUE7SUFXTTtFbEJxeGFOOztFa0JoeWFBO0lBV007RWxCeXhhTjs7RWtCcHlhQTtJQVdNO0VsQjZ4YU47O0VrQnh5YUE7SUFXTTtFbEJpeWFOOztFa0I1eWFBO0lBV007RWxCcXlhTjs7RWtCaHphQTtJQVdNO0VsQnl5YU47O0VrQnB6YUE7SUFXTTtFbEI2eWFOOztFa0J4emFBO0lBV007RWxCaXphTjs7RWtCNXphQTtJQVdNO0VsQnF6YU47O0VrQmgwYUE7SUFXTTtFbEJ5emFOOztFa0JwMGFBO0lBV007RWxCNnphTjs7RWtCeDBhQTtJQVdNO0VsQmkwYU47O0VrQjUwYUE7SUFXTTtFbEJxMGFOOztFa0JoMWFBO0lBV007RWxCeTBhTjs7RWtCcDFhQTtJQVdNO0VsQjYwYU47O0VrQngxYUE7SUFXTTtFbEJpMWFOOztFa0I1MWFBO0lBV007RWxCcTFhTjs7RWtCaDJhQTtJQVdNO0VsQnkxYU47O0VrQnAyYUE7SUFXTTtFbEI2MWFOOztFa0J4MmFBO0lBV007RWxCaTJhTjs7RWtCNTJhQTtJQVdNO0VsQnEyYU47O0VrQmgzYUE7SUFXTTtFbEJ5MmFOOztFa0JwM2FBO0lBV007RWxCNjJhTjs7RWtCeDNhQTtJQVdNO0VsQmkzYU47O0VrQjUzYUE7SUFXTTtFbEJxM2FOOztFa0JoNGFBO0lBV007RWxCeTNhTjs7RWtCcDRhQTtJQVdNO0VsQjYzYU47O0VrQng0YUE7SUFXTTtFbEJpNGFOOztFa0I1NGFBO0lBV007RWxCcTRhTjs7RWtCaDVhQTtJQVdNO0VsQnk0YU47O0VrQnA1YUE7SUFXTTtFbEI2NGFOOztFa0J4NWFBO0lBV007RWxCaTVhTjs7RWtCNTVhQTtJQVdNO0VsQnE1YU47O0VrQmg2YUE7SUFXTTtFbEJ5NWFOOztFa0JwNmFBO0lBV007RWxCNjVhTjs7RWtCeDZhQTtJQVdNO0VsQmk2YU47O0VrQjU2YUE7SUFXTTtFbEJxNmFOOztFa0JoN2FBO0lBV007RWxCeTZhTjs7RWtCcDdhQTtJQVdNO0VsQjY2YU47O0VrQng3YUE7SUFXTTtFbEJpN2FOOztFa0I1N2FBO0lBV007RWxCcTdhTjs7RWtCaDhhQTtJQVdNO0VsQnk3YU47O0VrQnA4YUE7SUFXTTtFbEI2N2FOOztFa0J4OGFBO0lBV007RWxCaThhTjs7RWtCNThhQTtJQVdNO0VsQnE4YU47O0VrQmg5YUE7SUFXTTtFbEJ5OGFOOztFa0JwOWFBO0lBV007RWxCNjhhTjs7RWtCeDlhQTtJQVdNO0VsQmk5YU47O0VrQjU5YUE7SUFXTTtFbEJxOWFOOztFa0JoK2FBO0lBV007RWxCeTlhTjs7RWtCcCthQTtJQVdNO0VsQjY5YU47O0VrQngrYUE7SUFXTTtFbEJpK2FOOztFa0I1K2FBO0lBV007RWxCcSthTjs7RWtCaC9hQTtJQVdNO0VsQnkrYU47O0VrQnAvYUE7SUFXTTtFbEI2K2FOOztFa0J4L2FBO0lBV007RWxCaS9hTjs7RWtCNS9hQTtJQVdNO0VsQnEvYU47O0VrQmhnYkE7SUFXTTtFbEJ5L2FOOztFa0JwZ2JBO0lBV007RWxCNi9hTjs7RWtCeGdiQTtJQVdNO0VsQmlnYk47O0VrQjVnYkE7SUFXTTtFbEJxZ2JOOztFa0JoaGJBO0lBV007RWxCeWdiTjs7RWtCcGhiQTtJQVdNO0VsQjZnYk47O0VrQnhoYkE7SUFXTTtFbEJpaGJOOztFa0I1aGJBO0lBV007RWxCcWhiTjs7RWtCaGliQTtJQVdNO0VsQnloYk47O0VrQnBpYkE7SUFXTTtFbEI2aGJOOztFa0J4aWJBO0lBV007RWxCaWliTjs7RWtCNWliQTtJQVdNO0VsQnFpYk47O0VrQmhqYkE7SUFXTTtFbEJ5aWJOOztFa0JwamJBO0lBV007RWxCNmliTjs7RWtCeGpiQTtJQVdNO0VsQmlqYk47O0VrQjVqYkE7SUFXTTtFbEJxamJOOztFa0Joa2JBO0lBV007RWxCeWpiTjs7RWtCcGtiQTtJQVdNO0VsQjZqYk47O0VrQnhrYkE7SUFXTTtFbEJpa2JOOztFa0I1a2JBO0lBV007RWxCcWtiTjs7RWtCaGxiQTtJQVdNO0VsQnlrYk47O0VrQnBsYkE7SUFXTTtFbEI2a2JOOztFa0J4bGJBO0lBV007RWxCaWxiTjs7RWtCNWxiQTtJQVdNO0VsQnFsYk47O0VrQmhtYkE7SUFXTTtFbEJ5bGJOOztFa0JwbWJBO0lBV007RWxCNmxiTjs7RWtCeG1iQTtJQVdNO0VsQmltYk47O0VrQjVtYkE7SUFXTTtFbEJxbWJOOztFa0JobmJBO0lBV007RWxCeW1iTjs7RWtCcG5iQTtJQVdNO0VsQjZtYk47O0VrQnhuYkE7SUFXTTtFbEJpbmJOOztFa0I1bmJBO0lBV007RWxCcW5iTjs7RWtCaG9iQTtJQVdNO0VsQnluYk47O0VrQnBvYkE7SUFXTTtFbEI2bmJOOztFa0J4b2JBO0lBV007RWxCaW9iTjs7RWtCNW9iQTtJQVdNO0VsQnFvYk47O0VrQmhwYkE7SUFXTTtFbEJ5b2JOOztFa0JwcGJBO0lBV007RWxCNm9iTjs7RWtCeHBiQTtJQVdNO0VsQmlwYk47O0VrQjVwYkE7SUFXTTtFbEJxcGJOOztFa0JocWJBO0lBV007RWxCeXBiTjs7RWtCcHFiQTtJQVdNO0VsQjZwYk47O0VrQnhxYkE7SUFXTTtFbEJpcWJOOztFa0I1cWJBO0lBV007RWxCcXFiTjs7RWtCaHJiQTtJQVdNO0VsQnlxYk47O0VrQnByYkE7SUFXTTtFbEI2cWJOOztFa0J4cmJBO0lBV007RWxCaXJiTjs7RWtCNXJiQTtJQVdNO0VsQnFyYk47O0VrQmhzYkE7SUFXTTtFbEJ5cmJOOztFa0Jwc2JBO0lBV007RWxCNnJiTjs7RWtCeHNiQTtJQVdNO0VsQmlzYk47O0VrQjVzYkE7SUFXTTtJQUFBO0VsQnNzYk47O0VrQmp0YkE7SUFXTTtJQUFBO0VsQjJzYk47O0VrQnR0YkE7SUFXTTtJQUFBO0VsQmd0Yk47O0VrQjN0YkE7SUFXTTtJQUFBO0VsQnF0Yk47O0VrQmh1YkE7SUFXTTtJQUFBO0VsQjB0Yk47O0VrQnJ1YkE7SUFXTTtJQUFBO0VsQit0Yk47O0VrQjF1YkE7SUFXTTtJQUFBO0VsQm91Yk47O0VrQi91YkE7SUFXTTtJQUFBO0VsQnl1Yk47O0VrQnB2YkE7SUFXTTtJQUFBO0VsQjh1Yk47O0VrQnp2YkE7SUFXTTtJQUFBO0VsQm12Yk47O0VrQjl2YkE7SUFXTTtJQUFBO0VsQnd2Yk47O0VrQm53YkE7SUFXTTtJQUFBO0VsQjZ2Yk47O0VrQnh3YkE7SUFXTTtJQUFBO0VsQmt3Yk47O0VrQjd3YkE7SUFXTTtJQUFBO0VsQnV3Yk47O0VrQmx4YkE7SUFXTTtJQUFBO0VsQjR3Yk47O0VrQnZ4YkE7SUFXTTtJQUFBO0VsQml4Yk47O0VrQjV4YkE7SUFXTTtJQUFBO0VsQnN4Yk47O0VrQmp5YkE7SUFXTTtJQUFBO0VsQjJ4Yk47O0VrQnR5YkE7SUFXTTtJQUFBO0VsQmd5Yk47O0VrQjN5YkE7SUFXTTtJQUFBO0VsQnF5Yk47O0VrQmh6YkE7SUFXTTtJQUFBO0VsQjB5Yk47O0VrQnJ6YkE7SUFXTTtJQUFBO0VsQit5Yk47O0VrQjF6YkE7SUFXTTtJQUFBO0VsQm96Yk47O0VrQi96YkE7SUFXTTtJQUFBO0VsQnl6Yk47O0VrQnAwYkE7SUFXTTtJQUFBO0VsQjh6Yk47O0VrQnowYkE7SUFXTTtJQUFBO0VsQm0wYk47O0VrQjkwYkE7SUFXTTtJQUFBO0VsQncwYk47O0VrQm4xYkE7SUFXTTtJQUFBO0VsQjYwYk47O0VrQngxYkE7SUFXTTtJQUFBO0VsQmsxYk47O0VrQjcxYkE7SUFXTTtJQUFBO0VsQnUxYk47O0VrQmwyYkE7SUFXTTtJQUFBO0VsQjQxYk47O0VrQnYyYkE7SUFXTTtJQUFBO0VsQmkyYk47O0VrQjUyYkE7SUFXTTtJQUFBO0VsQnMyYk47O0VrQmozYkE7SUFXTTtJQUFBO0VsQjIyYk47O0VrQnQzYkE7SUFXTTtFbEIrMmJOOztFa0IxM2JBO0lBV007RWxCbTNiTjs7RWtCOTNiQTtJQVdNO0VsQnUzYk47O0VrQmw0YkE7SUFXTTtFbEIyM2JOOztFa0J0NGJBO0lBV007RWxCKzNiTjs7RWtCMTRiQTtJQVdNO0VsQm00Yk47O0VrQjk0YkE7SUFXTTtFbEJ1NGJOOztFa0JsNWJBO0lBV007RWxCMjRiTjs7RWtCdDViQTtJQVdNO0VsQis0Yk47O0VrQjE1YkE7SUFXTTtFbEJtNWJOOztFa0I5NWJBO0lBV007RWxCdTViTjs7RWtCbDZiQTtJQVdNO0VsQjI1Yk47O0VrQnQ2YkE7SUFXTTtFbEIrNWJOOztFa0IxNmJBO0lBV007RWxCbTZiTjs7RWtCOTZiQTtJQVdNO0VsQnU2Yk47O0VrQmw3YkE7SUFXTTtFbEIyNmJOOztFa0J0N2JBO0lBV007RWxCKzZiTjs7RWtCMTdiQTtJQVdNO0VsQm03Yk47O0VrQjk3YkE7SUFXTTtFbEJ1N2JOOztFa0JsOGJBO0lBV007RWxCMjdiTjs7RWtCdDhiQTtJQVdNO0VsQis3Yk47O0VrQjE4YkE7SUFXTTtFbEJtOGJOOztFa0I5OGJBO0lBV007RWxCdThiTjs7RWtCbDliQTtJQVdNO0VsQjI4Yk47O0VrQnQ5YkE7SUFXTTtFbEIrOGJOOztFa0IxOWJBO0lBV007RWxCbTliTjs7RWtCOTliQTtJQVdNO0VsQnU5Yk47O0VrQmwrYkE7SUFXTTtFbEIyOWJOOztFa0J0K2JBO0lBV007RWxCKzliTjs7RWtCMStiQTtJQVdNO0VsQm0rYk47O0VrQjkrYkE7SUFXTTtFbEJ1K2JOOztFa0JsL2JBO0lBV007RWxCMitiTjs7RWtCdC9iQTtJQVdNO0VsQisrYk47O0VrQjEvYkE7SUFXTTtFbEJtL2JOOztFa0I5L2JBO0lBV007RWxCdS9iTjs7RWtCbGdjQTtJQVdNO0VsQjIvYk47O0VrQnRnY0E7SUFXTTtFbEIrL2JOOztFa0IxZ2NBO0lBV007RWxCbWdjTjs7RWtCOWdjQTtJQVdNO0VsQnVnY047O0VrQmxoY0E7SUFXTTtFbEIyZ2NOOztFa0J0aGNBO0lBV007RWxCK2djTjs7RWtCMWhjQTtJQVdNO0VsQm1oY047O0VrQjloY0E7SUFXTTtFbEJ1aGNOOztFa0JsaWNBO0lBV007RWxCMmhjTjs7RWtCdGljQTtJQVdNO0VsQitoY047O0VrQjFpY0E7SUFXTTtFbEJtaWNOOztFa0I5aWNBO0lBV007RWxCdWljTjs7RWtCbGpjQTtJQVdNO0VsQjJpY047O0VrQnRqY0E7SUFXTTtFbEIraWNOOztFa0IxamNBO0lBV007RWxCbWpjTjs7RWtCOWpjQTtJQVdNO0VsQnVqY047O0VrQmxrY0E7SUFXTTtFbEIyamNOOztFa0J0a2NBO0lBV007RWxCK2pjTjs7RWtCMWtjQTtJQVdNO0VsQm1rY047O0VrQjlrY0E7SUFXTTtFbEJ1a2NOOztFa0JsbGNBO0lBV007RWxCMmtjTjs7RWtCdGxjQTtJQVdNO0VsQitrY047O0VrQjFsY0E7SUFXTTtFbEJtbGNOOztFa0I5bGNBO0lBV007RWxCdWxjTjs7RWtCbG1jQTtJQVdNO0VsQjJsY047O0VrQnRtY0E7SUFXTTtFbEIrbGNOOztFa0IxbWNBO0lBV007RWxCbW1jTjs7RWtCOW1jQTtJQVdNO0VsQnVtY047O0VrQmxuY0E7SUFXTTtFbEIybWNOOztFa0J0bmNBO0lBV007RWxCK21jTjs7RWtCMW5jQTtJQVdNO0VsQm1uY047O0VrQjluY0E7SUFXTTtFbEJ1bmNOOztFa0Jsb2NBO0lBV007RWxCMm5jTjs7RWtCdG9jQTtJQVdNO0VsQituY047O0VrQjFvY0E7SUFXTTtFbEJtb2NOOztFa0I5b2NBO0lBV007RWxCdW9jTjs7RWtCbHBjQTtJQVdNO0VsQjJvY047O0VrQnRwY0E7SUFXTTtFbEIrb2NOOztFa0IxcGNBO0lBV007RWxCbXBjTjs7RWtCOXBjQTtJQVdNO0VsQnVwY047O0VrQmxxY0E7SUFXTTtFbEIycGNOOztFa0J0cWNBO0lBV007RWxCK3BjTjs7RWtCMXFjQTtJQVdNO0VsQm1xY047O0VrQjlxY0E7SUFXTTtFbEJ1cWNOOztFa0JscmNBO0lBV007RWxCMnFjTjs7RWtCdHJjQTtJQVdNO0VsQitxY047O0VrQjFyY0E7SUFXTTtFbEJtcmNOOztFa0I5cmNBO0lBV007RWxCdXJjTjs7RWtCbHNjQTtJQVdNO0VsQjJyY047O0VrQnRzY0E7SUFXTTtFbEIrcmNOOztFa0Ixc2NBO0lBV007RWxCbXNjTjs7RWtCOXNjQTtJQVdNO0VsQnVzY047O0VrQmx0Y0E7SUFXTTtFbEIyc2NOOztFa0J0dGNBO0lBV007RWxCK3NjTjs7RWtCMXRjQTtJQVdNO0VsQm10Y047O0VrQjl0Y0E7SUFXTTtFbEJ1dGNOOztFa0JsdWNBO0lBV007RWxCMnRjTjs7RWtCdHVjQTtJQVdNO0VsQit0Y047O0VrQjF1Y0E7SUFXTTtFbEJtdWNOOztFa0I5dWNBO0lBV007RWxCdXVjTjs7RWtCbHZjQTtJQVdNO0VsQjJ1Y047O0VrQnR2Y0E7SUFXTTtFbEIrdWNOOztFa0IxdmNBO0lBV007RWxCbXZjTjs7RWtCOXZjQTtJQVdNO0VsQnV2Y047O0VrQmx3Y0E7SUFXTTtFbEIydmNOOztFa0J0d2NBO0lBV007RWxCK3ZjTjs7RWtCMXdjQTtJQVdNO0VsQm13Y047O0VrQjl3Y0E7SUFXTTtFbEJ1d2NOOztFa0JseGNBO0lBV007RWxCMndjTjs7RWtCdHhjQTtJQVdNO0VsQit3Y047O0VrQjF4Y0E7SUFXTTtFbEJteGNOOztFa0I5eGNBO0lBV007RWxCdXhjTjs7RWtCbHljQTtJQVdNO0VsQjJ4Y047O0VrQnR5Y0E7SUFXTTtFbEIreGNOOztFa0IxeWNBO0lBV007RWxCbXljTjs7RWtCOXljQTtJQVdNO0VsQnV5Y047O0VrQmx6Y0E7SUFXTTtFbEIyeWNOOztFa0J0emNBO0lBV007RWxCK3ljTjs7RWtCMXpjQTtJQVdNO0VsQm16Y047O0VrQjl6Y0E7SUFXTTtFbEJ1emNOOztFa0JsMGNBO0lBV007RWxCMnpjTjs7RWtCdDBjQTtJQVdNO0VsQit6Y047O0VrQjEwY0E7SUFXTTtFbEJtMGNOOztFa0I5MGNBO0lBV007RWxCdTBjTjs7RWtCbDFjQTtJQVdNO0VsQjIwY047O0VrQnQxY0E7SUFXTTtFbEIrMGNOOztFa0IxMWNBO0lBV007RWxCbTFjTjs7RWtCOTFjQTtJQVdNO0VsQnUxY047O0VrQmwyY0E7SUFXTTtFbEIyMWNOOztFa0J0MmNBO0lBV007RWxCKzFjTjs7RWtCMTJjQTtJQVdNO0VsQm0yY047O0VrQjkyY0E7SUFXTTtFbEJ1MmNOOztFa0JsM2NBO0lBV007RWxCMjJjTjs7RWtCdDNjQTtJQVdNO0VsQisyY047O0VrQjEzY0E7SUFXTTtFbEJtM2NOOztFa0I5M2NBO0lBV007RWxCdTNjTjs7RWtCbDRjQTtJQVdNO0VsQjIzY047O0VrQnQ0Y0E7SUFXTTtFbEIrM2NOOztFa0IxNGNBO0lBV007RWxCbTRjTjs7RWtCOTRjQTtJQVdNO0VsQnU0Y047O0VrQmw1Y0E7SUFXTTtFbEIyNGNOOztFa0J0NWNBO0lBV007RWxCKzRjTjs7RWtCMTVjQTtJQVdNO0VsQm01Y047O0VrQjk1Y0E7SUFXTTtFbEJ1NWNOOztFa0JsNmNBO0lBV007RWxCMjVjTjs7RWtCdDZjQTtJQVdNO0VsQis1Y047O0VrQjE2Y0E7SUFXTTtFbEJtNmNOOztFa0I5NmNBO0lBV007SUFBQTtJQUFBO0lBQUE7SUFBQTtFbEIyNmNOOztFa0J0N2NBO0lBV007SUFBQTtJQUFBO0lBQUE7SUFBQTtFbEJtN2NOOztFa0I5N2NBO0lBV007SUFBQTtJQUFBO0lBQUE7SUFBQTtFbEIyN2NOOztFa0J0OGNBO0lBV007SUFBQTtJQUFBO0lBQUE7SUFBQTtFbEJtOGNOOztFa0I5OGNBO0lBV007SUFBQTtJQUFBO0lBQUE7SUFBQTtFbEIyOGNOOztFa0J0OWNBO0lBV007SUFBQTtJQUFBO0lBQUE7SUFBQTtFbEJtOWNOOztFa0I5OWNBO0lBV007SUFBQTtJQUFBO0lBQUE7SUFBQTtFbEIyOWNOOztFa0J0K2NBO0lBV007SUFBQTtJQUFBO0lBQUE7SUFBQTtFbEJtK2NOOztFa0I5K2NBO0lBV007SUFBQTtJQUFBO0lBQUE7SUFBQTtFbEIyK2NOOztFa0J0L2NBO0lBV007SUFBQTtJQUFBO0lBQUE7SUFBQTtFbEJtL2NOOztFa0I5L2NBO0lBV007SUFBQTtJQUFBO0lBQUE7SUFBQTtJQUFBO0VsQjQvY047O0VrQnZnZEE7SUFXTTtJQUFBO0lBQUE7SUFBQTtJQUFBO0VsQm9nZE47O0VrQi9nZEE7SUFXTTtJQUFBO0lBQUE7SUFBQTtJQUFBO0lBQUE7RWxCNmdkTjtBQUNGO0FtQjVqZEk7RURtQ0Y7SUFXTTtFbEJraGROOztFa0I3aGRBO0lBV007RWxCc2hkTjs7RWtCamlkQTtJQVdNO0VsQjBoZE47O0VrQnJpZEE7SUFXTTtFbEI4aGROOztFa0J6aWRBO0lBV007RWxCa2lkTjs7RWtCN2lkQTtJQVdNO0VsQnNpZE47O0VrQmpqZEE7SUFXTTtFbEIwaWROOztFa0JyamRBO0lBV007RWxCOGlkTjs7RWtCempkQTtJQVdNO0VsQmtqZE47O0VrQjdqZEE7SUFXTTtFbEJzamROOztFa0Jqa2RBO0lBV007RWxCMGpkTjs7RWtCcmtkQTtJQVdNO0VsQjhqZE47O0VrQnprZEE7SUFXTTtFbEJra2ROOztFa0I3a2RBO0lBV007RWxCc2tkTjs7RWtCamxkQTtJQVdNO0VsQjBrZE47O0VrQnJsZEE7SUFXTTtFbEI4a2ROOztFa0J6bGRBO0lBV007RWxCa2xkTjs7RWtCN2xkQTtJQVdNO0VsQnNsZE47O0VrQmptZEE7SUFXTTtFbEIwbGROOztFa0JybWRBO0lBV007RWxCOGxkTjs7RWtCem1kQTtJQVdNO0VsQmttZE47O0VrQjdtZEE7SUFXTTtFbEJzbWROOztFa0JqbmRBO0lBV007RWxCMG1kTjs7RWtCcm5kQTtJQVdNO0VsQjhtZE47O0VrQnpuZEE7SUFXTTtFbEJrbmROOztFa0I3bmRBO0lBV007RWxCc25kTjs7RWtCam9kQTtJQVdNO0VsQjBuZE47O0VrQnJvZEE7SUFXTTtFbEI4bmROOztFa0J6b2RBO0lBV007RWxCa29kTjs7RWtCN29kQTtJQVdNO0VsQnNvZE47O0VrQmpwZEE7SUFXTTtFbEIwb2ROOztFa0JycGRBO0lBV007RWxCOG9kTjs7RWtCenBkQTtJQVdNO0VsQmtwZE47O0VrQjdwZEE7SUFXTTtFbEJzcGROOztFa0JqcWRBO0lBV007RWxCMHBkTjs7RWtCcnFkQTtJQVdNO0VsQjhwZE47O0VrQnpxZEE7SUFXTTtFbEJrcWROOztFa0I3cWRBO0lBV007RWxCc3FkTjs7RWtCanJkQTtJQVdNO0VsQjBxZE47O0VrQnJyZEE7SUFXTTtFbEI4cWROOztFa0J6cmRBO0lBV007RWxCa3JkTjs7RWtCN3JkQTtJQVdNO0VsQnNyZE47O0VrQmpzZEE7SUFXTTtFbEIwcmROOztFa0Jyc2RBO0lBV007RWxCOHJkTjs7RWtCenNkQTtJQVdNO0VsQmtzZE47O0VrQjdzZEE7SUFXTTtFbEJzc2ROOztFa0JqdGRBO0lBV007RWxCMHNkTjs7RWtCcnRkQTtJQVdNO0VsQjhzZE47O0VrQnp0ZEE7SUFXTTtFbEJrdGROOztFa0I3dGRBO0lBV007RWxCc3RkTjs7RWtCanVkQTtJQVdNO0VsQjB0ZE47O0VrQnJ1ZEE7SUFXTTtFbEI4dGROOztFa0J6dWRBO0lBV007RWxCa3VkTjs7RWtCN3VkQTtJQVdNO0VsQnN1ZE47O0VrQmp2ZEE7SUFXTTtFbEIwdWROOztFa0JydmRBO0lBV007RWxCOHVkTjs7RWtCenZkQTtJQVdNO0VsQmt2ZE47O0VrQjd2ZEE7SUFXTTtFbEJzdmROOztFa0Jqd2RBO0lBV007RWxCMHZkTjs7RWtCcndkQTtJQVdNO0VsQjh2ZE47O0VrQnp3ZEE7SUFXTTtFbEJrd2ROOztFa0I3d2RBO0lBV007RWxCc3dkTjs7RWtCanhkQTtJQVdNO0VsQjB3ZE47O0VrQnJ4ZEE7SUFXTTtFbEI4d2ROOztFa0J6eGRBO0lBV007RWxCa3hkTjs7RWtCN3hkQTtJQVdNO0VsQnN4ZE47O0VrQmp5ZEE7SUFXTTtFbEIweGROOztFa0JyeWRBO0lBV007RWxCOHhkTjs7RWtCenlkQTtJQVdNO0VsQmt5ZE47O0VrQjd5ZEE7SUFXTTtFbEJzeWROOztFa0JqemRBO0lBV007RWxCMHlkTjs7RWtCcnpkQTtJQVdNO0VsQjh5ZE47O0VrQnp6ZEE7SUFXTTtFbEJremROOztFa0I3emRBO0lBV007RWxCc3pkTjs7RWtCajBkQTtJQVdNO0VsQjB6ZE47O0VrQnIwZEE7SUFXTTtFbEI4emROOztFa0J6MGRBO0lBV007RWxCazBkTjs7RWtCNzBkQTtJQVdNO0VsQnMwZE47O0VrQmoxZEE7SUFXTTtFbEIwMGROOztFa0JyMWRBO0lBV007RWxCODBkTjs7RWtCejFkQTtJQVdNO0VsQmsxZE47O0VrQjcxZEE7SUFXTTtFbEJzMWROOztFa0JqMmRBO0lBV007RWxCMDFkTjs7RWtCcjJkQTtJQVdNO0lBQUE7RWxCKzFkTjs7RWtCMTJkQTtJQVdNO0lBQUE7RWxCbzJkTjs7RWtCLzJkQTtJQVdNO0lBQUE7RWxCeTJkTjs7RWtCcDNkQTtJQVdNO0lBQUE7RWxCODJkTjs7RWtCejNkQTtJQVdNO0lBQUE7RWxCbTNkTjs7RWtCOTNkQTtJQVdNO0lBQUE7RWxCdzNkTjs7RWtCbjRkQTtJQVdNO0lBQUE7RWxCNjNkTjs7RWtCeDRkQTtJQVdNO0lBQUE7RWxCazRkTjs7RWtCNzRkQTtJQVdNO0lBQUE7RWxCdTRkTjs7RWtCbDVkQTtJQVdNO0lBQUE7RWxCNDRkTjs7RWtCdjVkQTtJQVdNO0lBQUE7RWxCaTVkTjs7RWtCNTVkQTtJQVdNO0lBQUE7RWxCczVkTjs7RWtCajZkQTtJQVdNO0lBQUE7RWxCMjVkTjs7RWtCdDZkQTtJQVdNO0lBQUE7RWxCZzZkTjs7RWtCMzZkQTtJQVdNO0lBQUE7RWxCcTZkTjs7RWtCaDdkQTtJQVdNO0lBQUE7RWxCMDZkTjs7RWtCcjdkQTtJQVdNO0lBQUE7RWxCKzZkTjs7RWtCMTdkQTtJQVdNO0lBQUE7RWxCbzdkTjs7RWtCLzdkQTtJQVdNO0lBQUE7RWxCeTdkTjs7RWtCcDhkQTtJQVdNO0lBQUE7RWxCODdkTjs7RWtCejhkQTtJQVdNO0lBQUE7RWxCbThkTjs7RWtCOThkQTtJQVdNO0lBQUE7RWxCdzhkTjs7RWtCbjlkQTtJQVdNO0lBQUE7RWxCNjhkTjs7RWtCeDlkQTtJQVdNO0lBQUE7RWxCazlkTjs7RWtCNzlkQTtJQVdNO0lBQUE7RWxCdTlkTjs7RWtCbCtkQTtJQVdNO0lBQUE7RWxCNDlkTjs7RWtCditkQTtJQVdNO0lBQUE7RWxCaStkTjs7RWtCNStkQTtJQVdNO0lBQUE7RWxCcytkTjs7RWtCai9kQTtJQVdNO0lBQUE7RWxCMitkTjs7RWtCdC9kQTtJQVdNO0lBQUE7RWxCZy9kTjs7RWtCMy9kQTtJQVdNO0lBQUE7RWxCcS9kTjs7RWtCaGdlQTtJQVdNO0lBQUE7RWxCMC9kTjs7RWtCcmdlQTtJQVdNO0lBQUE7RWxCKy9kTjs7RWtCMWdlQTtJQVdNO0lBQUE7RWxCb2dlTjs7RWtCL2dlQTtJQVdNO0lBQUE7RWxCeWdlTjs7RWtCcGhlQTtJQVdNO0lBQUE7RWxCOGdlTjs7RWtCemhlQTtJQVdNO0VsQmtoZU47O0VrQjdoZUE7SUFXTTtFbEJzaGVOOztFa0JqaWVBO0lBV007RWxCMGhlTjs7RWtCcmllQTtJQVdNO0VsQjhoZU47O0VrQnppZUE7SUFXTTtFbEJraWVOOztFa0I3aWVBO0lBV007RWxCc2llTjs7RWtCamplQTtJQVdNO0VsQjBpZU47O0VrQnJqZUE7SUFXTTtFbEI4aWVOOztFa0J6amVBO0lBV007RWxCa2plTjs7RWtCN2plQTtJQVdNO0VsQnNqZU47O0VrQmprZUE7SUFXTTtFbEIwamVOOztFa0Jya2VBO0lBV007RWxCOGplTjs7RWtCemtlQTtJQVdNO0VsQmtrZU47O0VrQjdrZUE7SUFXTTtFbEJza2VOOztFa0JqbGVBO0lBV007RWxCMGtlTjs7RWtCcmxlQTtJQVdNO0VsQjhrZU47O0VrQnpsZUE7SUFXTTtFbEJrbGVOOztFa0I3bGVBO0lBV007RWxCc2xlTjs7RWtCam1lQTtJQVdNO0VsQjBsZU47O0VrQnJtZUE7SUFXTTtFbEI4bGVOOztFa0J6bWVBO0lBV007RWxCa21lTjs7RWtCN21lQTtJQVdNO0VsQnNtZU47O0VrQmpuZUE7SUFXTTtFbEIwbWVOOztFa0JybmVBO0lBV007RWxCOG1lTjs7RWtCem5lQTtJQVdNO0VsQmtuZU47O0VrQjduZUE7SUFXTTtFbEJzbmVOOztFa0Jqb2VBO0lBV007RWxCMG5lTjs7RWtCcm9lQTtJQVdNO0VsQjhuZU47O0VrQnpvZUE7SUFXTTtFbEJrb2VOOztFa0I3b2VBO0lBV007RWxCc29lTjs7RWtCanBlQTtJQVdNO0VsQjBvZU47O0VrQnJwZUE7SUFXTTtFbEI4b2VOOztFa0J6cGVBO0lBV007RWxCa3BlTjs7RWtCN3BlQTtJQVdNO0VsQnNwZU47O0VrQmpxZUE7SUFXTTtFbEIwcGVOOztFa0JycWVBO0lBV007RWxCOHBlTjs7RWtCenFlQTtJQVdNO0VsQmtxZU47O0VrQjdxZUE7SUFXTTtFbEJzcWVOOztFa0JqcmVBO0lBV007RWxCMHFlTjs7RWtCcnJlQTtJQVdNO0VsQjhxZU47O0VrQnpyZUE7SUFXTTtFbEJrcmVOOztFa0I3cmVBO0lBV007RWxCc3JlTjs7RWtCanNlQTtJQVdNO0VsQjByZU47O0VrQnJzZUE7SUFXTTtFbEI4cmVOOztFa0J6c2VBO0lBV007RWxCa3NlTjs7RWtCN3NlQTtJQVdNO0VsQnNzZU47O0VrQmp0ZUE7SUFXTTtFbEIwc2VOOztFa0JydGVBO0lBV007RWxCOHNlTjs7RWtCenRlQTtJQVdNO0VsQmt0ZU47O0VrQjd0ZUE7SUFXTTtFbEJzdGVOOztFa0JqdWVBO0lBV007RWxCMHRlTjs7RWtCcnVlQTtJQVdNO0VsQjh0ZU47O0VrQnp1ZUE7SUFXTTtFbEJrdWVOOztFa0I3dWVBO0lBV007RWxCc3VlTjs7RWtCanZlQTtJQVdNO0VsQjB1ZU47O0VrQnJ2ZUE7SUFXTTtFbEI4dWVOOztFa0J6dmVBO0lBV007RWxCa3ZlTjs7RWtCN3ZlQTtJQVdNO0VsQnN2ZU47O0VrQmp3ZUE7SUFXTTtFbEIwdmVOOztFa0Jyd2VBO0lBV007RWxCOHZlTjs7RWtCendlQTtJQVdNO0VsQmt3ZU47O0VrQjd3ZUE7SUFXTTtFbEJzd2VOOztFa0JqeGVBO0lBV007RWxCMHdlTjs7RWtCcnhlQTtJQVdNO0VsQjh3ZU47O0VrQnp4ZUE7SUFXTTtFbEJreGVOOztFa0I3eGVBO0lBV007RWxCc3hlTjs7RWtCanllQTtJQVdNO0VsQjB4ZU47O0VrQnJ5ZUE7SUFXTTtFbEI4eGVOOztFa0J6eWVBO0lBV007RWxCa3llTjs7RWtCN3llQTtJQVdNO0VsQnN5ZU47O0VrQmp6ZUE7SUFXTTtFbEIweWVOOztFa0JyemVBO0lBV007RWxCOHllTjs7RWtCenplQTtJQVdNO0VsQmt6ZU47O0VrQjd6ZUE7SUFXTTtFbEJzemVOOztFa0JqMGVBO0lBV007RWxCMHplTjs7RWtCcjBlQTtJQVdNO0VsQjh6ZU47O0VrQnowZUE7SUFXTTtFbEJrMGVOOztFa0I3MGVBO0lBV007RWxCczBlTjs7RWtCajFlQTtJQVdNO0VsQjAwZU47O0VrQnIxZUE7SUFXTTtFbEI4MGVOOztFa0J6MWVBO0lBV007RWxCazFlTjs7RWtCNzFlQTtJQVdNO0VsQnMxZU47O0VrQmoyZUE7SUFXTTtFbEIwMWVOOztFa0JyMmVBO0lBV007RWxCODFlTjs7RWtCejJlQTtJQVdNO0VsQmsyZU47O0VrQjcyZUE7SUFXTTtFbEJzMmVOOztFa0JqM2VBO0lBV007RWxCMDJlTjs7RWtCcjNlQTtJQVdNO0VsQjgyZU47O0VrQnozZUE7SUFXTTtFbEJrM2VOOztFa0I3M2VBO0lBV007RWxCczNlTjs7RWtCajRlQTtJQVdNO0VsQjAzZU47O0VrQnI0ZUE7SUFXTTtFbEI4M2VOOztFa0J6NGVBO0lBV007RWxCazRlTjs7RWtCNzRlQTtJQVdNO0VsQnM0ZU47O0VrQmo1ZUE7SUFXTTtFbEIwNGVOOztFa0JyNWVBO0lBV007RWxCODRlTjs7RWtCejVlQTtJQVdNO0VsQms1ZU47O0VrQjc1ZUE7SUFXTTtFbEJzNWVOOztFa0JqNmVBO0lBV007RWxCMDVlTjs7RWtCcjZlQTtJQVdNO0VsQjg1ZU47O0VrQno2ZUE7SUFXTTtFbEJrNmVOOztFa0I3NmVBO0lBV007RWxCczZlTjs7RWtCajdlQTtJQVdNO0VsQjA2ZU47O0VrQnI3ZUE7SUFXTTtFbEI4NmVOOztFa0J6N2VBO0lBV007RWxCazdlTjs7RWtCNzdlQTtJQVdNO0VsQnM3ZU47O0VrQmo4ZUE7SUFXTTtFbEIwN2VOOztFa0JyOGVBO0lBV007RWxCODdlTjs7RWtCejhlQTtJQVdNO0VsQms4ZU47O0VrQjc4ZUE7SUFXTTtFbEJzOGVOOztFa0JqOWVBO0lBV007RWxCMDhlTjs7RWtCcjllQTtJQVdNO0VsQjg4ZU47O0VrQno5ZUE7SUFXTTtFbEJrOWVOOztFa0I3OWVBO0lBV007RWxCczllTjs7RWtCaitlQTtJQVdNO0VsQjA5ZU47O0VrQnIrZUE7SUFXTTtFbEI4OWVOOztFa0J6K2VBO0lBV007RWxCaytlTjs7RWtCNytlQTtJQVdNO0VsQnMrZU47O0VrQmovZUE7SUFXTTtFbEIwK2VOOztFa0JyL2VBO0lBV007RWxCOCtlTjs7RWtCei9lQTtJQVdNO0VsQmsvZU47O0VrQjcvZUE7SUFXTTtFbEJzL2VOOztFa0JqZ2ZBO0lBV007RWxCMC9lTjs7RWtCcmdmQTtJQVdNO0VsQjgvZU47O0VrQnpnZkE7SUFXTTtFbEJrZ2ZOOztFa0I3Z2ZBO0lBV007RWxCc2dmTjs7RWtCamhmQTtJQVdNO0VsQjBnZk47O0VrQnJoZkE7SUFXTTtFbEI4Z2ZOOztFa0J6aGZBO0lBV007RWxCa2hmTjs7RWtCN2hmQTtJQVdNO0VsQnNoZk47O0VrQmppZkE7SUFXTTtFbEIwaGZOOztFa0JyaWZBO0lBV007RWxCOGhmTjs7RWtCemlmQTtJQVdNO0VsQmtpZk47O0VrQjdpZkE7SUFXTTtFbEJzaWZOOztFa0JqamZBO0lBV007RWxCMGlmTjs7RWtCcmpmQTtJQVdNO0VsQjhpZk47O0VrQnpqZkE7SUFXTTtFbEJramZOOztFa0I3amZBO0lBV007RWxCc2pmTjs7RWtCamtmQTtJQVdNO0VsQjBqZk47O0VrQnJrZkE7SUFXTTtFbEI4amZOOztFa0J6a2ZBO0lBV007RWxCa2tmTjs7RWtCN2tmQTtJQVdNO0VsQnNrZk47O0VrQmpsZkE7SUFXTTtFbEIwa2ZOOztFa0JybGZBO0lBV007RWxCOGtmTjs7RWtCemxmQTtJQVdNO0VsQmtsZk47O0VrQjdsZkE7SUFXTTtFbEJzbGZOOztFa0JqbWZBO0lBV007RWxCMGxmTjs7RWtCcm1mQTtJQVdNO0VsQjhsZk47O0VrQnptZkE7SUFXTTtFbEJrbWZOOztFa0I3bWZBO0lBV007RWxCc21mTjs7RWtCam5mQTtJQVdNO0VsQjBtZk47O0VrQnJuZkE7SUFXTTtFbEI4bWZOOztFa0J6bmZBO0lBV007RWxCa25mTjs7RWtCN25mQTtJQVdNO0VsQnNuZk47O0VrQmpvZkE7SUFXTTtFbEIwbmZOOztFa0Jyb2ZBO0lBV007RWxCOG5mTjs7RWtCem9mQTtJQVdNO0VsQmtvZk47O0VrQjdvZkE7SUFXTTtFbEJzb2ZOOztFa0JqcGZBO0lBV007RWxCMG9mTjs7RWtCcnBmQTtJQVdNO0VsQjhvZk47O0VrQnpwZkE7SUFXTTtJQUFBO0VsQm1wZk47O0VrQjlwZkE7SUFXTTtJQUFBO0VsQndwZk47O0VrQm5xZkE7SUFXTTtJQUFBO0VsQjZwZk47O0VrQnhxZkE7SUFXTTtJQUFBO0VsQmtxZk47O0VrQjdxZkE7SUFXTTtJQUFBO0VsQnVxZk47O0VrQmxyZkE7SUFXTTtJQUFBO0VsQjRxZk47O0VrQnZyZkE7SUFXTTtJQUFBO0VsQmlyZk47O0VrQjVyZkE7SUFXTTtJQUFBO0VsQnNyZk47O0VrQmpzZkE7SUFXTTtJQUFBO0VsQjJyZk47O0VrQnRzZkE7SUFXTTtJQUFBO0VsQmdzZk47O0VrQjNzZkE7SUFXTTtJQUFBO0VsQnFzZk47O0VrQmh0ZkE7SUFXTTtJQUFBO0VsQjBzZk47O0VrQnJ0ZkE7SUFXTTtJQUFBO0VsQitzZk47O0VrQjF0ZkE7SUFXTTtJQUFBO0VsQm90Zk47O0VrQi90ZkE7SUFXTTtJQUFBO0VsQnl0Zk47O0VrQnB1ZkE7SUFXTTtJQUFBO0VsQjh0Zk47O0VrQnp1ZkE7SUFXTTtJQUFBO0VsQm11Zk47O0VrQjl1ZkE7SUFXTTtJQUFBO0VsQnd1Zk47O0VrQm52ZkE7SUFXTTtJQUFBO0VsQjZ1Zk47O0VrQnh2ZkE7SUFXTTtJQUFBO0VsQmt2Zk47O0VrQjd2ZkE7SUFXTTtJQUFBO0VsQnV2Zk47O0VrQmx3ZkE7SUFXTTtJQUFBO0VsQjR2Zk47O0VrQnZ3ZkE7SUFXTTtJQUFBO0VsQml3Zk47O0VrQjV3ZkE7SUFXTTtJQUFBO0VsQnN3Zk47O0VrQmp4ZkE7SUFXTTtJQUFBO0VsQjJ3Zk47O0VrQnR4ZkE7SUFXTTtJQUFBO0VsQmd4Zk47O0VrQjN4ZkE7SUFXTTtJQUFBO0VsQnF4Zk47O0VrQmh5ZkE7SUFXTTtJQUFBO0VsQjB4Zk47O0VrQnJ5ZkE7SUFXTTtJQUFBO0VsQit4Zk47O0VrQjF5ZkE7SUFXTTtJQUFBO0VsQm95Zk47O0VrQi95ZkE7SUFXTTtJQUFBO0VsQnl5Zk47O0VrQnB6ZkE7SUFXTTtJQUFBO0VsQjh5Zk47O0VrQnp6ZkE7SUFXTTtFbEJremZOOztFa0I3emZBO0lBV007RWxCc3pmTjs7RWtCajBmQTtJQVdNO0VsQjB6Zk47O0VrQnIwZkE7SUFXTTtFbEI4emZOOztFa0J6MGZBO0lBV007RWxCazBmTjs7RWtCNzBmQTtJQVdNO0VsQnMwZk47O0VrQmoxZkE7SUFXTTtFbEIwMGZOOztFa0JyMWZBO0lBV007RWxCODBmTjs7RWtCejFmQTtJQVdNO0VsQmsxZk47O0VrQjcxZkE7SUFXTTtFbEJzMWZOOztFa0JqMmZBO0lBV007RWxCMDFmTjs7RWtCcjJmQTtJQVdNO0VsQjgxZk47O0VrQnoyZkE7SUFXTTtFbEJrMmZOOztFa0I3MmZBO0lBV007RWxCczJmTjs7RWtCajNmQTtJQVdNO0VsQjAyZk47O0VrQnIzZkE7SUFXTTtFbEI4MmZOOztFa0J6M2ZBO0lBV007RWxCazNmTjs7RWtCNzNmQTtJQVdNO0VsQnMzZk47O0VrQmo0ZkE7SUFXTTtFbEIwM2ZOOztFa0JyNGZBO0lBV007RWxCODNmTjs7RWtCejRmQTtJQVdNO0VsQms0Zk47O0VrQjc0ZkE7SUFXTTtFbEJzNGZOOztFa0JqNWZBO0lBV007RWxCMDRmTjs7RWtCcjVmQTtJQVdNO0VsQjg0Zk47O0VrQno1ZkE7SUFXTTtFbEJrNWZOOztFa0I3NWZBO0lBV007RWxCczVmTjs7RWtCajZmQTtJQVdNO0VsQjA1Zk47O0VrQnI2ZkE7SUFXTTtFbEI4NWZOOztFa0J6NmZBO0lBV007RWxCazZmTjs7RWtCNzZmQTtJQVdNO0VsQnM2Zk47O0VrQmo3ZkE7SUFXTTtFbEIwNmZOOztFa0JyN2ZBO0lBV007RWxCODZmTjs7RWtCejdmQTtJQVdNO0VsQms3Zk47O0VrQjc3ZkE7SUFXTTtFbEJzN2ZOOztFa0JqOGZBO0lBV007RWxCMDdmTjs7RWtCcjhmQTtJQVdNO0VsQjg3Zk47O0VrQno4ZkE7SUFXTTtFbEJrOGZOOztFa0I3OGZBO0lBV007RWxCczhmTjs7RWtCajlmQTtJQVdNO0VsQjA4Zk47O0VrQnI5ZkE7SUFXTTtFbEI4OGZOOztFa0J6OWZBO0lBV007RWxCazlmTjs7RWtCNzlmQTtJQVdNO0VsQnM5Zk47O0VrQmorZkE7SUFXTTtFbEIwOWZOOztFa0JyK2ZBO0lBV007RWxCODlmTjs7RWtCeitmQTtJQVdNO0VsQmsrZk47O0VrQjcrZkE7SUFXTTtFbEJzK2ZOOztFa0JqL2ZBO0lBV007RWxCMCtmTjs7RWtCci9mQTtJQVdNO0VsQjgrZk47O0VrQnovZkE7SUFXTTtFbEJrL2ZOOztFa0I3L2ZBO0lBV007RWxCcy9mTjs7RWtCamdnQkE7SUFXTTtFbEIwL2ZOOztFa0JyZ2dCQTtJQVdNO0VsQjgvZk47O0VrQnpnZ0JBO0lBV007RWxCa2dnQk47O0VrQjdnZ0JBO0lBV007RWxCc2dnQk47O0VrQmpoZ0JBO0lBV007RWxCMGdnQk47O0VrQnJoZ0JBO0lBV007RWxCOGdnQk47O0VrQnpoZ0JBO0lBV007RWxCa2hnQk47O0VrQjdoZ0JBO0lBV007RWxCc2hnQk47O0VrQmppZ0JBO0lBV007RWxCMGhnQk47O0VrQnJpZ0JBO0lBV007RWxCOGhnQk47O0VrQnppZ0JBO0lBV007RWxCa2lnQk47O0VrQjdpZ0JBO0lBV007RWxCc2lnQk47O0VrQmpqZ0JBO0lBV007RWxCMGlnQk47O0VrQnJqZ0JBO0lBV007RWxCOGlnQk47O0VrQnpqZ0JBO0lBV007RWxCa2pnQk47O0VrQjdqZ0JBO0lBV007RWxCc2pnQk47O0VrQmprZ0JBO0lBV007RWxCMGpnQk47O0VrQnJrZ0JBO0lBV007RWxCOGpnQk47O0VrQnprZ0JBO0lBV007RWxCa2tnQk47O0VrQjdrZ0JBO0lBV007RWxCc2tnQk47O0VrQmpsZ0JBO0lBV007RWxCMGtnQk47O0VrQnJsZ0JBO0lBV007RWxCOGtnQk47O0VrQnpsZ0JBO0lBV007RWxCa2xnQk47O0VrQjdsZ0JBO0lBV007RWxCc2xnQk47O0VrQmptZ0JBO0lBV007RWxCMGxnQk47O0VrQnJtZ0JBO0lBV007RWxCOGxnQk47O0VrQnptZ0JBO0lBV007RWxCa21nQk47O0VrQjdtZ0JBO0lBV007RWxCc21nQk47O0VrQmpuZ0JBO0lBV007RWxCMG1nQk47O0VrQnJuZ0JBO0lBV007RWxCOG1nQk47O0VrQnpuZ0JBO0lBV007RWxCa25nQk47O0VrQjduZ0JBO0lBV007RWxCc25nQk47O0VrQmpvZ0JBO0lBV007RWxCMG5nQk47O0VrQnJvZ0JBO0lBV007RWxCOG5nQk47O0VrQnpvZ0JBO0lBV007RWxCa29nQk47O0VrQjdvZ0JBO0lBV007RWxCc29nQk47O0VrQmpwZ0JBO0lBV007RWxCMG9nQk47O0VrQnJwZ0JBO0lBV007RWxCOG9nQk47O0VrQnpwZ0JBO0lBV007RWxCa3BnQk47O0VrQjdwZ0JBO0lBV007RWxCc3BnQk47O0VrQmpxZ0JBO0lBV007RWxCMHBnQk47O0VrQnJxZ0JBO0lBV007RWxCOHBnQk47O0VrQnpxZ0JBO0lBV007RWxCa3FnQk47O0VrQjdxZ0JBO0lBV007RWxCc3FnQk47O0VrQmpyZ0JBO0lBV007RWxCMHFnQk47O0VrQnJyZ0JBO0lBV007RWxCOHFnQk47O0VrQnpyZ0JBO0lBV007RWxCa3JnQk47O0VrQjdyZ0JBO0lBV007RWxCc3JnQk47O0VrQmpzZ0JBO0lBV007RWxCMHJnQk47O0VrQnJzZ0JBO0lBV007RWxCOHJnQk47O0VrQnpzZ0JBO0lBV007RWxCa3NnQk47O0VrQjdzZ0JBO0lBV007RWxCc3NnQk47O0VrQmp0Z0JBO0lBV007RWxCMHNnQk47O0VrQnJ0Z0JBO0lBV007RWxCOHNnQk47O0VrQnp0Z0JBO0lBV007RWxCa3RnQk47O0VrQjd0Z0JBO0lBV007RWxCc3RnQk47O0VrQmp1Z0JBO0lBV007RWxCMHRnQk47O0VrQnJ1Z0JBO0lBV007RWxCOHRnQk47O0VrQnp1Z0JBO0lBV007RWxCa3VnQk47O0VrQjd1Z0JBO0lBV007RWxCc3VnQk47O0VrQmp2Z0JBO0lBV007RWxCMHVnQk47O0VrQnJ2Z0JBO0lBV007RWxCOHVnQk47O0VrQnp2Z0JBO0lBV007RWxCa3ZnQk47O0VrQjd2Z0JBO0lBV007RWxCc3ZnQk47O0VrQmp3Z0JBO0lBV007RWxCMHZnQk47O0VrQnJ3Z0JBO0lBV007RWxCOHZnQk47O0VrQnp3Z0JBO0lBV007RWxCa3dnQk47O0VrQjd3Z0JBO0lBV007RWxCc3dnQk47O0VrQmp4Z0JBO0lBV007RWxCMHdnQk47O0VrQnJ4Z0JBO0lBV007RWxCOHdnQk47O0VrQnp4Z0JBO0lBV007RWxCa3hnQk47O0VrQjd4Z0JBO0lBV007RWxCc3hnQk47O0VrQmp5Z0JBO0lBV007RWxCMHhnQk47O0VrQnJ5Z0JBO0lBV007RWxCOHhnQk47O0VrQnp5Z0JBO0lBV007RWxCa3lnQk47O0VrQjd5Z0JBO0lBV007RWxCc3lnQk47O0VrQmp6Z0JBO0lBV007RWxCMHlnQk47O0VrQnJ6Z0JBO0lBV007RWxCOHlnQk47O0VrQnp6Z0JBO0lBV007RWxCa3pnQk47O0VrQjd6Z0JBO0lBV007RWxCc3pnQk47O0VrQmowZ0JBO0lBV007RWxCMHpnQk47O0VrQnIwZ0JBO0lBV007RWxCOHpnQk47O0VrQnowZ0JBO0lBV007RWxCazBnQk47O0VrQjcwZ0JBO0lBV007RWxCczBnQk47O0VrQmoxZ0JBO0lBV007RWxCMDBnQk47O0VrQnIxZ0JBO0lBV007RWxCODBnQk47O0VrQnoxZ0JBO0lBV007RWxCazFnQk47O0VrQjcxZ0JBO0lBV007RWxCczFnQk47O0VrQmoyZ0JBO0lBV007RWxCMDFnQk47O0VrQnIyZ0JBO0lBV007RWxCODFnQk47O0VrQnoyZ0JBO0lBV007RWxCazJnQk47O0VrQjcyZ0JBO0lBV007RWxCczJnQk47O0VrQmozZ0JBO0lBV007RWxCMDJnQk47O0VrQnIzZ0JBO0lBV007RWxCODJnQk47O0VrQnozZ0JBO0lBV007RWxCazNnQk47O0VrQjczZ0JBO0lBV007SUFBQTtFbEJ1M2dCTjs7RWtCbDRnQkE7SUFXTTtJQUFBO0VsQjQzZ0JOOztFa0J2NGdCQTtJQVdNO0lBQUE7RWxCaTRnQk47O0VrQjU0Z0JBO0lBV007SUFBQTtFbEJzNGdCTjs7RWtCajVnQkE7SUFXTTtJQUFBO0VsQjI0Z0JOOztFa0J0NWdCQTtJQVdNO0lBQUE7RWxCZzVnQk47O0VrQjM1Z0JBO0lBV007SUFBQTtFbEJxNWdCTjs7RWtCaDZnQkE7SUFXTTtJQUFBO0VsQjA1Z0JOOztFa0JyNmdCQTtJQVdNO0lBQUE7RWxCKzVnQk47O0VrQjE2Z0JBO0lBV007SUFBQTtFbEJvNmdCTjs7RWtCLzZnQkE7SUFXTTtJQUFBO0VsQnk2Z0JOOztFa0JwN2dCQTtJQVdNO0lBQUE7RWxCODZnQk47O0VrQno3Z0JBO0lBV007SUFBQTtFbEJtN2dCTjs7RWtCOTdnQkE7SUFXTTtJQUFBO0VsQnc3Z0JOOztFa0JuOGdCQTtJQVdNO0lBQUE7RWxCNjdnQk47O0VrQng4Z0JBO0lBV007SUFBQTtFbEJrOGdCTjs7RWtCNzhnQkE7SUFXTTtJQUFBO0VsQnU4Z0JOOztFa0JsOWdCQTtJQVdNO0lBQUE7RWxCNDhnQk47O0VrQnY5Z0JBO0lBV007SUFBQTtFbEJpOWdCTjs7RWtCNTlnQkE7SUFXTTtJQUFBO0VsQnM5Z0JOOztFa0JqK2dCQTtJQVdNO0lBQUE7RWxCMjlnQk47O0VrQnQrZ0JBO0lBV007SUFBQTtFbEJnK2dCTjs7RWtCMytnQkE7SUFXTTtJQUFBO0VsQnErZ0JOOztFa0JoL2dCQTtJQVdNO0lBQUE7RWxCMCtnQk47O0VrQnIvZ0JBO0lBV007SUFBQTtFbEIrK2dCTjs7RWtCMS9nQkE7SUFXTTtJQUFBO0VsQm8vZ0JOOztFa0IvL2dCQTtJQVdNO0lBQUE7RWxCeS9nQk47O0VrQnBnaEJBO0lBV007SUFBQTtFbEI4L2dCTjs7RWtCemdoQkE7SUFXTTtJQUFBO0VsQm1naEJOOztFa0I5Z2hCQTtJQVdNO0lBQUE7RWxCd2doQk47O0VrQm5oaEJBO0lBV007SUFBQTtFbEI2Z2hCTjs7RWtCeGhoQkE7SUFXTTtJQUFBO0VsQmtoaEJOOztFa0I3aGhCQTtJQVdNO0lBQUE7RWxCdWhoQk47O0VrQmxpaEJBO0lBV007SUFBQTtFbEI0aGhCTjs7RWtCdmloQkE7SUFXTTtFbEJnaWhCTjs7RWtCM2loQkE7SUFXTTtFbEJvaWhCTjs7RWtCL2loQkE7SUFXTTtFbEJ3aWhCTjs7RWtCbmpoQkE7SUFXTTtFbEI0aWhCTjs7RWtCdmpoQkE7SUFXTTtFbEJnamhCTjs7RWtCM2poQkE7SUFXTTtFbEJvamhCTjs7RWtCL2poQkE7SUFXTTtFbEJ3amhCTjs7RWtCbmtoQkE7SUFXTTtFbEI0amhCTjs7RWtCdmtoQkE7SUFXTTtFbEJna2hCTjs7RWtCM2toQkE7SUFXTTtFbEJva2hCTjs7RWtCL2toQkE7SUFXTTtFbEJ3a2hCTjs7RWtCbmxoQkE7SUFXTTtFbEI0a2hCTjs7RWtCdmxoQkE7SUFXTTtFbEJnbGhCTjs7RWtCM2xoQkE7SUFXTTtFbEJvbGhCTjs7RWtCL2xoQkE7SUFXTTtFbEJ3bGhCTjs7RWtCbm1oQkE7SUFXTTtFbEI0bGhCTjs7RWtCdm1oQkE7SUFXTTtFbEJnbWhCTjs7RWtCM21oQkE7SUFXTTtFbEJvbWhCTjs7RWtCL21oQkE7SUFXTTtFbEJ3bWhCTjs7RWtCbm5oQkE7SUFXTTtFbEI0bWhCTjs7RWtCdm5oQkE7SUFXTTtFbEJnbmhCTjs7RWtCM25oQkE7SUFXTTtFbEJvbmhCTjs7RWtCL25oQkE7SUFXTTtFbEJ3bmhCTjs7RWtCbm9oQkE7SUFXTTtFbEI0bmhCTjs7RWtCdm9oQkE7SUFXTTtFbEJnb2hCTjs7RWtCM29oQkE7SUFXTTtFbEJvb2hCTjs7RWtCL29oQkE7SUFXTTtFbEJ3b2hCTjs7RWtCbnBoQkE7SUFXTTtFbEI0b2hCTjs7RWtCdnBoQkE7SUFXTTtFbEJncGhCTjs7RWtCM3BoQkE7SUFXTTtFbEJvcGhCTjs7RWtCL3BoQkE7SUFXTTtFbEJ3cGhCTjs7RWtCbnFoQkE7SUFXTTtFbEI0cGhCTjs7RWtCdnFoQkE7SUFXTTtFbEJncWhCTjs7RWtCM3FoQkE7SUFXTTtFbEJvcWhCTjs7RWtCL3FoQkE7SUFXTTtFbEJ3cWhCTjs7RWtCbnJoQkE7SUFXTTtFbEI0cWhCTjs7RWtCdnJoQkE7SUFXTTtFbEJncmhCTjs7RWtCM3JoQkE7SUFXTTtFbEJvcmhCTjs7RWtCL3JoQkE7SUFXTTtFbEJ3cmhCTjs7RWtCbnNoQkE7SUFXTTtFbEI0cmhCTjs7RWtCdnNoQkE7SUFXTTtFbEJnc2hCTjs7RWtCM3NoQkE7SUFXTTtFbEJvc2hCTjs7RWtCL3NoQkE7SUFXTTtFbEJ3c2hCTjs7RWtCbnRoQkE7SUFXTTtFbEI0c2hCTjs7RWtCdnRoQkE7SUFXTTtFbEJndGhCTjs7RWtCM3RoQkE7SUFXTTtFbEJvdGhCTjs7RWtCL3RoQkE7SUFXTTtFbEJ3dGhCTjs7RWtCbnVoQkE7SUFXTTtFbEI0dGhCTjs7RWtCdnVoQkE7SUFXTTtFbEJndWhCTjs7RWtCM3VoQkE7SUFXTTtFbEJvdWhCTjs7RWtCL3VoQkE7SUFXTTtFbEJ3dWhCTjs7RWtCbnZoQkE7SUFXTTtFbEI0dWhCTjs7RWtCdnZoQkE7SUFXTTtFbEJndmhCTjs7RWtCM3ZoQkE7SUFXTTtFbEJvdmhCTjs7RWtCL3ZoQkE7SUFXTTtFbEJ3dmhCTjs7RWtCbndoQkE7SUFXTTtFbEI0dmhCTjs7RWtCdndoQkE7SUFXTTtFbEJnd2hCTjs7RWtCM3doQkE7SUFXTTtFbEJvd2hCTjs7RWtCL3doQkE7SUFXTTtFbEJ3d2hCTjs7RWtCbnhoQkE7SUFXTTtFbEI0d2hCTjs7RWtCdnhoQkE7SUFXTTtFbEJneGhCTjs7RWtCM3hoQkE7SUFXTTtFbEJveGhCTjs7RWtCL3hoQkE7SUFXTTtFbEJ3eGhCTjs7RWtCbnloQkE7SUFXTTtFbEI0eGhCTjs7RWtCdnloQkE7SUFXTTtFbEJneWhCTjs7RWtCM3loQkE7SUFXTTtFbEJveWhCTjs7RWtCL3loQkE7SUFXTTtFbEJ3eWhCTjs7RWtCbnpoQkE7SUFXTTtFbEI0eWhCTjs7RWtCdnpoQkE7SUFXTTtFbEJnemhCTjs7RWtCM3poQkE7SUFXTTtFbEJvemhCTjs7RWtCL3poQkE7SUFXTTtFbEJ3emhCTjs7RWtCbjBoQkE7SUFXTTtFbEI0emhCTjs7RWtCdjBoQkE7SUFXTTtFbEJnMGhCTjs7RWtCMzBoQkE7SUFXTTtFbEJvMGhCTjs7RWtCLzBoQkE7SUFXTTtFbEJ3MGhCTjs7RWtCbjFoQkE7SUFXTTtFbEI0MGhCTjs7RWtCdjFoQkE7SUFXTTtFbEJnMWhCTjs7RWtCMzFoQkE7SUFXTTtFbEJvMWhCTjs7RWtCLzFoQkE7SUFXTTtFbEJ3MWhCTjs7RWtCbjJoQkE7SUFXTTtFbEI0MWhCTjs7RWtCdjJoQkE7SUFXTTtFbEJnMmhCTjs7RWtCMzJoQkE7SUFXTTtFbEJvMmhCTjs7RWtCLzJoQkE7SUFXTTtFbEJ3MmhCTjs7RWtCbjNoQkE7SUFXTTtFbEI0MmhCTjs7RWtCdjNoQkE7SUFXTTtFbEJnM2hCTjs7RWtCMzNoQkE7SUFXTTtFbEJvM2hCTjs7RWtCLzNoQkE7SUFXTTtFbEJ3M2hCTjs7RWtCbjRoQkE7SUFXTTtFbEI0M2hCTjs7RWtCdjRoQkE7SUFXTTtFbEJnNGhCTjs7RWtCMzRoQkE7SUFXTTtFbEJvNGhCTjs7RWtCLzRoQkE7SUFXTTtFbEJ3NGhCTjs7RWtCbjVoQkE7SUFXTTtFbEI0NGhCTjs7RWtCdjVoQkE7SUFXTTtFbEJnNWhCTjs7RWtCMzVoQkE7SUFXTTtFbEJvNWhCTjs7RWtCLzVoQkE7SUFXTTtFbEJ3NWhCTjs7RWtCbjZoQkE7SUFXTTtFbEI0NWhCTjs7RWtCdjZoQkE7SUFXTTtFbEJnNmhCTjs7RWtCMzZoQkE7SUFXTTtFbEJvNmhCTjs7RWtCLzZoQkE7SUFXTTtFbEJ3NmhCTjs7RWtCbjdoQkE7SUFXTTtFbEI0NmhCTjs7RWtCdjdoQkE7SUFXTTtFbEJnN2hCTjs7RWtCMzdoQkE7SUFXTTtFbEJvN2hCTjs7RWtCLzdoQkE7SUFXTTtFbEJ3N2hCTjs7RWtCbjhoQkE7SUFXTTtFbEI0N2hCTjs7RWtCdjhoQkE7SUFXTTtFbEJnOGhCTjs7RWtCMzhoQkE7SUFXTTtFbEJvOGhCTjs7RWtCLzhoQkE7SUFXTTtFbEJ3OGhCTjs7RWtCbjloQkE7SUFXTTtFbEI0OGhCTjs7RWtCdjloQkE7SUFXTTtFbEJnOWhCTjs7RWtCMzloQkE7SUFXTTtFbEJvOWhCTjs7RWtCLzloQkE7SUFXTTtFbEJ3OWhCTjs7RWtCbitoQkE7SUFXTTtFbEI0OWhCTjs7RWtCditoQkE7SUFXTTtFbEJnK2hCTjs7RWtCMytoQkE7SUFXTTtFbEJvK2hCTjs7RWtCLytoQkE7SUFXTTtFbEJ3K2hCTjs7RWtCbi9oQkE7SUFXTTtFbEI0K2hCTjs7RWtCdi9oQkE7SUFXTTtFbEJnL2hCTjs7RWtCMy9oQkE7SUFXTTtFbEJvL2hCTjs7RWtCLy9oQkE7SUFXTTtFbEJ3L2hCTjs7RWtCbmdpQkE7SUFXTTtFbEI0L2hCTjs7RWtCdmdpQkE7SUFXTTtFbEJnZ2lCTjs7RWtCM2dpQkE7SUFXTTtFbEJvZ2lCTjs7RWtCL2dpQkE7SUFXTTtFbEJ3Z2lCTjs7RWtCbmhpQkE7SUFXTTtFbEI0Z2lCTjs7RWtCdmhpQkE7SUFXTTtFbEJnaGlCTjs7RWtCM2hpQkE7SUFXTTtFbEJvaGlCTjs7RWtCL2hpQkE7SUFXTTtFbEJ3aGlCTjs7RWtCbmlpQkE7SUFXTTtFbEI0aGlCTjs7RWtCdmlpQkE7SUFXTTtFbEJnaWlCTjs7RWtCM2lpQkE7SUFXTTtFbEJvaWlCTjs7RWtCL2lpQkE7SUFXTTtFbEJ3aWlCTjs7RWtCbmppQkE7SUFXTTtFbEI0aWlCTjs7RWtCdmppQkE7SUFXTTtFbEJnamlCTjs7RWtCM2ppQkE7SUFXTTtFbEJvamlCTjs7RWtCL2ppQkE7SUFXTTtFbEJ3amlCTjs7RWtCbmtpQkE7SUFXTTtFbEI0amlCTjs7RWtCdmtpQkE7SUFXTTtFbEJna2lCTjs7RWtCM2tpQkE7SUFXTTtFbEJva2lCTjs7RWtCL2tpQkE7SUFXTTtFbEJ3a2lCTjs7RWtCbmxpQkE7SUFXTTtFbEI0a2lCTjs7RWtCdmxpQkE7SUFXTTtFbEJnbGlCTjs7RWtCM2xpQkE7SUFXTTtFbEJvbGlCTjs7RWtCL2xpQkE7SUFXTTtJQUFBO0lBQUE7SUFBQTtJQUFBO0VsQjRsaUJOOztFa0J2bWlCQTtJQVdNO0lBQUE7SUFBQTtJQUFBO0lBQUE7RWxCb21pQk47O0VrQi9taUJBO0lBV007SUFBQTtJQUFBO0lBQUE7SUFBQTtFbEI0bWlCTjs7RWtCdm5pQkE7SUFXTTtJQUFBO0lBQUE7SUFBQTtJQUFBO0VsQm9uaUJOOztFa0IvbmlCQTtJQVdNO0lBQUE7SUFBQTtJQUFBO0lBQUE7RWxCNG5pQk47O0VrQnZvaUJBO0lBV007SUFBQTtJQUFBO0lBQUE7SUFBQTtFbEJvb2lCTjs7RWtCL29pQkE7SUFXTTtJQUFBO0lBQUE7SUFBQTtJQUFBO0VsQjRvaUJOOztFa0J2cGlCQTtJQVdNO0lBQUE7SUFBQTtJQUFBO0lBQUE7RWxCb3BpQk47O0VrQi9waUJBO0lBV007SUFBQTtJQUFBO0lBQUE7SUFBQTtFbEI0cGlCTjs7RWtCdnFpQkE7SUFXTTtJQUFBO0lBQUE7SUFBQTtJQUFBO0VsQm9xaUJOOztFa0IvcWlCQTtJQVdNO0lBQUE7SUFBQTtJQUFBO0lBQUE7SUFBQTtFbEI2cWlCTjs7RWtCeHJpQkE7SUFXTTtJQUFBO0lBQUE7SUFBQTtJQUFBO0VsQnFyaUJOOztFa0Joc2lCQTtJQVdNO0lBQUE7SUFBQTtJQUFBO0lBQUE7SUFBQTtFbEI4cmlCTjtBQUNGO0FvQjl0aUJBO0VGb0JFO0lBV007RWxCbXNpQk47O0VrQjlzaUJBO0lBV007RWxCdXNpQk47O0VrQmx0aUJBO0lBV007RWxCMnNpQk47O0VrQnR0aUJBO0lBV007RWxCK3NpQk47O0VrQjF0aUJBO0lBV007RWxCbXRpQk47O0VrQjl0aUJBO0lBV007RWxCdXRpQk47O0VrQmx1aUJBO0lBV007RWxCMnRpQk47O0VrQnR1aUJBO0lBV007RWxCK3RpQk47O0VrQjF1aUJBO0lBV007RWxCbXVpQk47O0VrQjl1aUJBO0lBV007RWxCdXVpQk47O0VrQmx2aUJBO0lBV007RWxCMnVpQk47O0VrQnR2aUJBO0lBV007RWxCK3VpQk47O0VrQjF2aUJBO0lBV007RWxCbXZpQk47O0VrQjl2aUJBO0lBV007RWxCdXZpQk47O0VrQmx3aUJBO0lBV007RWxCMnZpQk47O0VrQnR3aUJBO0lBV007RWxCK3ZpQk47QUFDRjtBQXh6aUJBOztJQUFBO0FBR0E7RUFDRTtBQTB6aUJGOztBQXh6aUJBO0VBQ0U7QUEyemlCRjs7QUF6emlCQTs7SUFBQTtBQUlBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7QUEyemlCRjtBQXp6aUJFO0VBQ0U7QUEyemlCSjtBQTF6aUJJO0VBQ0U7QUE0emlCTjtBQTN6aUJJO0VBQ0U7QUE2emlCTjs7QUExemlCQTtFQUNFO0VBQ0E7RUFDQTtBQTZ6aUJGO0FBM3ppQkU7RUFDRTtBQTZ6aUJKO0FBM3ppQkU7RUFDRTtFQUNBO0VBQ0E7RUFDQTtBQTZ6aUJKOztBQXp6aUJFO0VBQ0U7RUFjQTtBQSt5aUJKO0FBMXppQkk7RUFDRTtFQUNBO0VBQ0E7QUE0emlCTjtBQXp6aUJJO0VBQ0U7RUFDQTtFQUNBO0FBMnppQk47QUF2emlCRTtFQUNFO0FBeXppQko7QUF2emlCRTtFQUNFO0FBeXppQko7QUF4emlCSTtFQUNFO0FBMHppQk47O0FBdHppQkU7RUFDRTtFQUNBO0FBeXppQko7QUF0emlCSTtFQUNFO0FBd3ppQk47QUFyemlCSTtFQUNFO0VBQ0E7RUFDQTtBQXV6aUJOOztBQXB6aUJBO0VBQ0U7RUFDQTtFQUNBO0FBdXppQkY7QUFyemlCRTtFQUNFO0FBdXppQko7QUFwemlCSTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFzemlCTjtBQXB6aUJNO0VBQ0U7QUFzemlCUjtBQW56aUJJO0VBQ0U7QUFxemlCTjtBQW56aUJNO0VBQ0U7QUFxemlCUjtBQW56aUJNO0VBQ0U7RUFDQTtFQUNBO0FBcXppQlI7QUFsemlCRTtFQUNFO0VBQ0E7QUFvemlCSjtBQWx6aUJJO0VBQ0U7QUFvemlCTjs7QUFqemlCQTtFQUNFO0VBQ0E7QUFvemlCRjs7QUFqemlCQTtFQUNFO0VBQ0E7QUFvemlCRjs7QUFsemlCQTtFQUNFO0FBcXppQkY7QUFwemlCRTtFQUNFO0FBc3ppQko7O0FBcHppQkE7RUFDRTtFQUNBO0VBQ0E7QUF1emlCRjtBQXJ6aUJFO0VBQ0U7QUF1emlCSjtBQXJ6aUJFO0VBQ0U7QUF1emlCSjtBQXJ6aUJJO0VBQ0U7QUF1emlCTjs7QUFyemlCQTs7SUFBQTtBQUdBO0VBQ0U7QUF3emlCRjtBQXR6aUJFO0VBQ0U7RUFDQTtFQUNBO0FBd3ppQko7QUF0emlCSTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUF3emlCTjtBQXZ6aUJNO0VBQ0U7RUFDQTtBQXl6aUJSO0FBdnppQkU7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBeXppQko7QUF2emlCRTtFQUNFO0FBeXppQko7QUF4emlCSTtFQUNFO0VBQ0E7QUEwemlCTjs7QUF4emlCQTs7SUFBQTtBQUdBO0VBQ0U7QUEyemlCRjs7QUF6emlCQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBNHppQkY7QUExemlCRTtFQUNFO0FBNHppQko7QUExemlCRTtFQUNFO0FBNHppQko7QUEzemlCSTtFQUNFO0FBNnppQk47O0FBM3ppQkE7RUFDRTtFQUNBO0VBQ0E7RUFDQTtBQTh6aUJGOztBQTN6aUJFO0VBQ0U7RUFDQTtBQTh6aUJKO0FBNXppQkk7RUFDRTtBQTh6aUJOOztBQTV6aUJBOztJQUFBO0FBSUE7RUFDRTtBQTh6aUJGOztBQTV6aUJBO0VBQ0U7QUEremlCRjs7QUE3emlCQTtFQUNFO0FBZzBpQkYsQzs7Ozs7QXFCbjZpQkE7RUFDQTtBQUNBO0FBRUE7RUFDQTtBQUNBO0FBRUE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQUNBO0FBR0E7RUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vYXNzZXRzL2Zyb250ZW5kL2NvbXBvbmVudHMvQWlDaGF0QXNzaXN0YW50LnZ1ZSIsIndlYnBhY2s6Ly8vLi9hc3NldHMvZnJvbnRlbmQvdmlld3MvUmFwcHJvY2hlbWVudC9Db21wdGFiaWxpdGUvY29tcG9uZW50cy9FbnRpdHlMaXN0LnZ1ZSIsIndlYnBhY2s6Ly8vLi9hc3NldHMvZnJvbnRlbmQvdmlld3MvUmFwcHJvY2hlbWVudC9Db21wdGFiaWxpdGUvQWNjb3VudGluZ0xpbmtNYW5hZ2VyLnZ1ZSIsIndlYnBhY2s6Ly8vLi9hc3NldHMvZnJvbnRlbmQvdmlld3MvUmFwcHJvY2hlbWVudC9Db21wdGFiaWxpdGUvSm91cm5hbC52dWUiLCJ3ZWJwYWNrOi8vLy4vYXNzZXRzL2Zyb250ZW5kL3ZpZXdzL1JhcHByb2NoZW1lbnQvQ29tcHRhYmlsaXRlL0dyYW5kTGl2cmUudnVlIiwid2VicGFjazovLy8uL2Fzc2V0cy9mcm9udGVuZC92aWV3cy9SYXBwcm9jaGVtZW50L0NvbXB0YWJpbGl0ZS9CYWxhbmNlLnZ1ZSIsIndlYnBhY2s6Ly8vLi9hc3NldHMvZnJvbnRlbmQvdmlld3MvUmFwcHJvY2hlbWVudC9Db21wdGFiaWxpdGUvQmlsYW4udnVlIiwid2VicGFjazovLy8uL2Fzc2V0cy9mcm9udGVuZC92aWV3cy9SYXBwcm9jaGVtZW50L0NvbXB0YWJpbGl0ZS9UVkEudnVlIiwid2VicGFjazovLy8uL2Fzc2V0cy9mcm9udGVuZC92aWV3cy9UcmFuc2FjdGlvbnNib24vcmVsZXZlYmFuY2FpcmVzYm9uL3Nob3cudnVlIiwid2VicGFjazovLy8uL2Fzc2V0cy9mcm9udGVuZC92aWV3cy9SYXBwcm9jaGVtZW50L3JlbGV2ZWJhbmNhaXJlcy9zaG93LnZ1ZSIsIndlYnBhY2s6Ly8vLi9hc3NldHMvZnJvbnRlbmQvdmlld3MvUmFwcHJvY2hlbWVudC90dmEvc2hvdy52dWUiLCJ3ZWJwYWNrOi8vLy4vYXNzZXRzL2Zyb250ZW5kL3ZpZXdzL0JhY2t1cERCL2JhY2t1cC52dWUiLCJ3ZWJwYWNrOi8vLy4vYXNzZXRzL2Zyb250ZW5kL3ZpZXdzLzQwNC52dWUiLCJ3ZWJwYWNrOi8vLy4vYXNzZXRzL2Zyb250ZW5kL3ZpZXdzL2Rhc2hib2FyZC52dWUiLCJ3ZWJwYWNrOi8vLy4vYXNzZXRzL2Zyb250ZW5kL3ZpZXdzL3BkZi52dWUiLCJ3ZWJwYWNrOi8vLy4vYXNzZXRzL2Zyb250ZW5kL3ZpZXdzL3ByaW50LnZ1ZSIsIndlYnBhY2s6Ly8vLi9hc3NldHMvZnJvbnRlbmQvdmlld3MvaW1wb3J0ZGF0YS52dWUiLCJ3ZWJwYWNrOi8vLy4vYXNzZXRzL2Zyb250ZW5kL3ZpZXdzL2xvZ2luLnZ1ZSIsIndlYnBhY2s6Ly8vLi9hc3NldHMvZnJvbnRlbmQvdmlld3MvdXJsQmFzZVNldC52dWUiLCJ3ZWJwYWNrOi8vLy4vYXNzZXRzL2Zyb250ZW5kL3ZpZXdzL2FjY2Vzc19kZW5pZWQudnVlIiwid2VicGFjazovLy8uL2Fzc2V0cy9mcm9udGVuZC92aWV3cy9Ub29scy9FbnRpdHlPdmVycmlkZXMudnVlIiwid2VicGFjazovLy8uL2Fzc2V0cy9mcm9udGVuZC9jb21wb25lbnRzL2ZpbmFuY2UvRG9jdW1lbnRGb3JlbnNpY1ZpZXdlci52dWUiLCJ3ZWJwYWNrOi8vLy4vYXNzZXRzL2Zyb250ZW5kL2NvbXBvbmVudHMvZmluYW5jZS9GaXhBY3Rpb25EaWFsb2cudnVlIiwid2VicGFjazovLy8uL2Fzc2V0cy9mcm9udGVuZC93aWRnZXRzL1RyYW5zYWN0aW9ucy9Ucm91Ymxlc2hvb3RpbmdEYXNoYm9hcmQudnVlIiwid2VicGFjazovLy8uL2Fzc2V0cy9mcm9udGVuZC92aWV3cy9GaW5hbmNlL0FjY291bnRpbmdJc3N1ZXMudnVlIiwid2VicGFjazovLy8uL2Fzc2V0cy9mcm9udGVuZC9jb21wb25lbnRzL2JveC9pbmZvcm9vdC52dWUiLCJ3ZWJwYWNrOi8vLy4vYXNzZXRzL2Zyb250ZW5kL2NvbXBvbmVudHMvYm94L3Jvb3QudnVlIiwid2VicGFjazovLy8uL2Fzc2V0cy9mcm9udGVuZC9jb21wb25lbnRzL2J0bi9wb3MvY2Fpc3NlYmwudnVlIiwid2VicGFjazovLy8uL2Fzc2V0cy9mcm9udGVuZC9jb21wb25lbnRzL2J0bi9yZWxhdGlvbnZpZXcudnVlIiwid2VicGFjazovLy8uL2Fzc2V0cy9mcm9udGVuZC9jb21wb25lbnRzL2NhcmQvQ2FyZC52dWUiLCJ3ZWJwYWNrOi8vLy4vYXNzZXRzL2Zyb250ZW5kL2NvbXBvbmVudHMvY2FyZC9Nb250aERldGFpbERpYWxvZy52dWUiLCJ3ZWJwYWNrOi8vLy4vYXNzZXRzL2Zyb250ZW5kL2NvbXBvbmVudHMvY2FyZC9Nb250aFN1bW1hcnlDYXJkLnZ1ZSIsIndlYnBhY2s6Ly8vLi9hc3NldHMvZnJvbnRlbmQvY29tcG9uZW50cy9jYXJkL1N0YXRzLnZ1ZSIsIndlYnBhY2s6Ly8vLi9hc3NldHMvZnJvbnRlbmQvY29tcG9uZW50cy9jYXJkL2Jsb2NrLnZ1ZSIsIndlYnBhY2s6Ly8vLi9hc3NldHMvZnJvbnRlbmQvY29tcG9uZW50cy9jYXJkL2JveC52dWUiLCJ3ZWJwYWNrOi8vLy4vYXNzZXRzL2Zyb250ZW5kL2NvbXBvbmVudHMvZmluYW5jZS9HbG9iYWxJc3N1ZXNPdmVydmlldy52dWUiLCJ3ZWJwYWNrOi8vLy4vYXNzZXRzL2Zyb250ZW5kL2NvbXBvbmVudHMvaGVscGVyL29mZnNldC52dWUiLCJ3ZWJwYWNrOi8vLy4vYXNzZXRzL2Zyb250ZW5kL2NvbXBvbmVudHMvbXVsdGlzZWxlY3Qvc2VhcmNoLnZ1ZSIsIndlYnBhY2s6Ly8vLi9hc3NldHMvZnJvbnRlbmQvY29tcG9uZW50cy9yZWFkZmlsZS9jb29sbGlnaHRib3gudnVlIiwid2VicGFjazovLy8uL2Fzc2V0cy9mcm9udGVuZC9jb21wb25lbnRzL3JlYWRmaWxlL2ltYWdlY29vbGxpZ2h0Ym94LnZ1ZSIsIndlYnBhY2s6Ly8vLi9hc3NldHMvZnJvbnRlbmQvY29tcG9uZW50cy90YWJsZS9hY3Rpb24udnVlIiwid2VicGFjazovLy8uL2Fzc2V0cy9mcm9udGVuZC9jb21wb25lbnRzL3RhYmxlL2FjdGlvbnJlZ2xlbWVudHJhcGlkZWJsLnZ1ZSIsIndlYnBhY2s6Ly8vLi9hc3NldHMvZnJvbnRlbmQvY29tcG9uZW50cy90YWJsZS9hY3Rpb250YXZvaXJib252ZW50ZS52dWUiLCJ3ZWJwYWNrOi8vLy4vYXNzZXRzL2Zyb250ZW5kL2NvbXBvbmVudHMvdGFibGUvcnVuLnZ1ZSIsIndlYnBhY2s6Ly8vLi9hc3NldHMvZnJvbnRlbmQvY29tcG9uZW50cy90YWJsZS9zZXR0aW5ncy1kaWFsb2cudnVlIiwid2VicGFjazovLy8uL2Fzc2V0cy9mcm9udGVuZC9jb21wb25lbnRzL3RhYmxlL3NldHRpbmdzLWRyYXdlci52dWUiLCJ3ZWJwYWNrOi8vLy4vYXNzZXRzL2Zyb250ZW5kL2NvbXBvbmVudHMvdGhlbWUvRm9vdGVyLnZ1ZSIsIndlYnBhY2s6Ly8vLi9hc3NldHMvZnJvbnRlbmQvY29tcG9uZW50cy90aGVtZS9HbG9iYWxTZWFyY2gudnVlIiwid2VicGFjazovLy8uL2Fzc2V0cy9mcm9udGVuZC9jb21wb25lbnRzL3RoZW1lL05vdGlmaWNhdGlvbi52dWUiLCJ3ZWJwYWNrOi8vLy4vYXNzZXRzL2Zyb250ZW5kL2NvbXBvbmVudHMvdGhlbWUvU2ltcGxlQ2FsY3VsYXRvci52dWUiLCJ3ZWJwYWNrOi8vLy4vYXNzZXRzL2Zyb250ZW5kL2NvbXBvbmVudHMvdGhlbWUvVG9vbGJhci52dWUiLCJ3ZWJwYWNrOi8vLy4vYXNzZXRzL2Zyb250ZW5kL2NvbXBvbmVudHMvdGhlbWUvYWdlbmRhLnZ1ZSIsIndlYnBhY2s6Ly8vLi9hc3NldHMvZnJvbnRlbmQvY29tcG9uZW50cy90aGVtZS9idG5QYWxldHRlLnZ1ZSIsIndlYnBhY2s6Ly8vLi9hc3NldHMvZnJvbnRlbmQvY29tcG9uZW50cy90aGVtZS9jYWxjdWxhdG9yLnZ1ZSIsIndlYnBhY2s6Ly8vLi9hc3NldHMvZnJvbnRlbmQvY29tcG9uZW50cy90aGVtZS9jbG9jay52dWUiLCJ3ZWJwYWNrOi8vLy4vYXNzZXRzL2Zyb250ZW5kL2NvbXBvbmVudHMvdGhlbWUvZHJhd2VyL2NvbnRyb2xsZXJzLnZ1ZSIsIndlYnBhY2s6Ly8vLi9hc3NldHMvZnJvbnRlbmQvY29tcG9uZW50cy90aGVtZS9kcmF3ZXIvbGVmdC52dWUiLCJ3ZWJwYWNrOi8vLy4vYXNzZXRzL2Zyb250ZW5kL2NvbXBvbmVudHMvdGhlbWUvZHJhd2VyL3JpZ2h0LnZ1ZSIsIndlYnBhY2s6Ly8vLi9hc3NldHMvZnJvbnRlbmQvY29tcG9uZW50cy90aGVtZS9kcmF3ZXIvdG9nZ2xlZGFyay52dWUiLCJ3ZWJwYWNrOi8vLy4vYXNzZXRzL2Zyb250ZW5kL3dpZGdldHMvQWNoYXRzL2VudHJlcG90Qm9uc2FjaGF0cy52dWUiLCJ3ZWJwYWNrOi8vLy4vYXNzZXRzL2Zyb250ZW5kL3dpZGdldHMvVHJhbnNhY3Rpb25zL0FjY3VlaWwudnVlIiwid2VicGFjazovLy8uL2Fzc2V0cy9mcm9udGVuZC93aWRnZXRzL1RyYW5zYWN0aW9ucy9ZZWFybHlDYWxlbmRhclZpZXcudnVlIiwid2VicGFjazovLy8uL2Fzc2V0cy9mcm9udGVuZC93aWRnZXRzL1RyYW5zYWN0aW9ucy9ZZWFybHlDYWxlbmRhclZpZXdCb24udnVlIiwid2VicGFjazovLy8uL2Fzc2V0cy9mcm9udGVuZC93aWRnZXRzL1RyYW5zYWN0aW9ucy9hbmFseXNlRWNhcnRzLnZ1ZSIsIndlYnBhY2s6Ly8vLi9hc3NldHMvZnJvbnRlbmQvd2lkZ2V0cy9UcmFuc2FjdGlvbnMvYW5hbHlzZUZpbmFuY2lhbEJMLnZ1ZSIsIndlYnBhY2s6Ly8vLi9hc3NldHMvZnJvbnRlbmQvd2lkZ2V0cy9UcmFuc2FjdGlvbnMvdHJhbnNhY3Rpb25Cb25zLnZ1ZSIsIndlYnBhY2s6Ly8vLi9hc3NldHMvZnJvbnRlbmQvd2lkZ2V0cy9UcmFuc2FjdGlvbnMvdHJhbnNhY3Rpb25GYWN0dXJlLnZ1ZSIsIndlYnBhY2s6Ly8vLi9hc3NldHMvZnJvbnRlbmQvd2lkZ2V0cy9WZW50ZXMvZW50cmVwb3RCb25zdmVudGVzLnZ1ZSIsIndlYnBhY2s6Ly8vLi9hc3NldHMvZnJvbnRlbmQvd2lkZ2V0cy9Qcm9kdWl0L2ludmVudGFpcmVQaG9uZS52dWUiLCJ3ZWJwYWNrOi8vLy4vYXNzZXRzL2Zyb250ZW5kL3dpZGdldHMvUHJvZHVpdC9saXN0U3RvY2sudnVlIiwid2VicGFjazovLy8uL2Fzc2V0cy9mcm9udGVuZC9jb21wb25lbnRzL3RoZW1lL2hpYmEudnVlIiwid2VicGFjazovLy8uL2Fzc2V0cy9mcm9udGVuZC9jb21wb25lbnRzL3RoZW1lL3RvZG9saXN0LnZ1ZSIsIndlYnBhY2s6Ly8vLi9hc3NldHMvZnJvbnRlbmQvY29tcG9uZW50cy93aWRnZXRzL2FuYWx5c2VQcm9kdWl0c2JsLnZ1ZSIsIndlYnBhY2s6Ly8vLi9hc3NldHMvZnJvbnRlbmQvY29tcG9uZW50cy93aWRnZXRzL2xpc3RGYWN0dXJlSW1wZXllQ2xpZW50LnZ1ZSIsIndlYnBhY2s6Ly8vLi9hc3NldHMvZnJvbnRlbmQvY29tcG9uZW50cy93aWRnZXRzL2xpc3RGYWN0dXJlSW1wZXllRm91cm5pc3NldXIudnVlIiwid2VicGFjazovLy8uL2Fzc2V0cy9mcm9udGVuZC9jb21wb25lbnRzL3dpZGdldHMvbGlzdFJlZ2xlbWVudEVuQXR0ZW50ZS52dWUiLCJ3ZWJwYWNrOi8vLy4vYXNzZXRzL2Zyb250ZW5kL3RoZW1lL2RlZmF1bHQuc2FzcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdnVldGlmeS9zcmMvc3R5bGVzL2dlbmVyaWMvX2FuaW1hdGlvbnMuc2NzcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdnVldGlmeS9zcmMvc3R5bGVzL2dlbmVyaWMvX2NvbG9ycy5zY3NzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92dWV0aWZ5L3NyYy9zdHlsZXMvZ2VuZXJpYy9fcmVzZXQuc2NzcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdnVldGlmeS9zcmMvc3R5bGVzL2dlbmVyaWMvX2VsZXZhdGlvbi5zY3NzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92dWV0aWZ5L3NyYy9zdHlsZXMvdG9vbHMvX2VsZXZhdGlvbi5zYXNzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92dWV0aWZ5L3NyYy9zdHlsZXMvZ2VuZXJpYy9fdHJhbnNpdGlvbnMuc2NzcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdnVldGlmeS9zcmMvc3R5bGVzL2VsZW1lbnRzL19ibG9ja3F1b3RlLnNhc3MiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3Z1ZXRpZnkvc3JjL3N0eWxlcy9zZXR0aW5ncy9fdmFyaWFibGVzLnNjc3MiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3Z1ZXRpZnkvc3JjL3N0eWxlcy9lbGVtZW50cy9fY29kZS5zYXNzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92dWV0aWZ5L3NyYy9zdHlsZXMvZWxlbWVudHMvX2dsb2JhbC5zYXNzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92dWV0aWZ5L3NyYy9zdHlsZXMvZWxlbWVudHMvX2hlYWRpbmdzLnNhc3MiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3Z1ZXRpZnkvc3JjL3N0eWxlcy9lbGVtZW50cy9fbGlzdHMuc2FzcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdnVldGlmeS9zcmMvc3R5bGVzL2VsZW1lbnRzL190eXBvZ3JhcGh5LnNhc3MiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3Z1ZXRpZnkvc3JjL3N0eWxlcy91dGlsaXRpZXMvX2Rpc3BsYXkuc2FzcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdnVldGlmeS9zcmMvc3R5bGVzL3V0aWxpdGllcy9fc2NyZWVucmVhZGVycy5zYXNzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92dWV0aWZ5L3NyYy9zdHlsZXMvdXRpbGl0aWVzL190ZXh0LnNhc3MiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3Z1ZXRpZnkvc3JjL3N0eWxlcy91dGlsaXRpZXMvX3RyYW5zaXRpb24uc2FzcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdnVldGlmeS9zcmMvc3R5bGVzL3Rvb2xzL191dGlsaXRpZXMuc2FzcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdnVldGlmeS9zcmMvc3R5bGVzL3Rvb2xzL19pbmRleC5zYXNzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92dWV0aWZ5L3NyYy9zdHlsZXMvdXRpbGl0aWVzL19pbmRleC5zYXNzIiwid2VicGFjazovLy8uL2Fzc2V0cy9mcm9udGVuZC9hcHAudnVlIl0sInNvdXJjZXNDb250ZW50IjpbIjx0ZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cImFpLWNoYXQtd2lkZ2V0XCI+XG4gICAgPCEtLSBDaGF0IEJ1dHRvbiAtLT5cbiAgICA8YnV0dG9uIEBjbGljaz1cInRvZ2dsZUNoYXRcIiBjbGFzcz1cImFpLWNoYXQtYnRuXCIgOmNsYXNzPVwieyAnaXMtb3Blbic6IGlzT3BlbiB9XCIgdGl0bGU9XCLYp9mE2YXYs9in2LnYryDYp9mE2LDZg9mKXCI+XG4gICAgICA8aSBjbGFzcz1cImZhcyBmYS1yb2JvdFwiPjwvaT7wn6SWXG4gICAgPC9idXR0b24+XG5cbiAgICA8IS0tIENoYXQgV2luZG93IC0tPlxuICAgIDxkaXYgdi1pZj1cImlzT3BlblwiIGNsYXNzPVwiYWktY2hhdC13aW5kb3dcIj5cbiAgICAgIDwhLS0gSGVhZGVyIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cImFpLWNoYXQtaGVhZGVyXCI+XG4gICAgICAgIDxoND7Yp9mE2YXYs9in2LnYryDYp9mE2LDZg9mKXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJwcm92aWRlci1iYWRnZVwiIDpjbGFzcz1cInByb3ZpZGVyXCI+e3sgcHJvdmlkZXIgPT09ICdnZW1pbmknID8gJ+KcqCBHZW1pbmknIDogJ/CflqXvuI8gTG9jYWwnIH19PC9zcGFuPlxuICAgICAgICA8L2g0PlxuICAgICAgICA8ZGl2IHN0eWxlPVwiZGlzcGxheTpmbGV4O2dhcDo2cHg7YWxpZ24taXRlbXM6Y2VudGVyXCI+XG4gICAgICAgICAgPGJ1dHRvbiBAY2xpY2s9XCJzZXRQcm92aWRlcignb2xsYW1hJylcIiBjbGFzcz1cInByb3ZpZGVyLWJ0blwiIDpjbGFzcz1cInthY3RpdmU6IHByb3ZpZGVyPT09J29sbGFtYSd9XCIgdGl0bGU9XCLYp9mE2YXYs9in2LnYryDYp9mE2YXYrdmE2YogKE9sbGFtYSlcIj7wn5al77iPPC9idXR0b24+XG4gICAgICAgICAgPGJ1dHRvbiBAY2xpY2s9XCJzZXRQcm92aWRlcignZ2VtaW5pJylcIiBjbGFzcz1cInByb3ZpZGVyLWJ0blwiIDpjbGFzcz1cInthY3RpdmU6IHByb3ZpZGVyPT09J2dlbWluaSd9XCIgdGl0bGU9XCJHb29nbGUgR2VtaW5pIEFJXCI+4pyoPC9idXR0b24+XG4gICAgICAgICAgPGJ1dHRvbiBAY2xpY2s9XCJzaG93U2V0dGluZ3MgPSAhc2hvd1NldHRpbmdzXCIgY2xhc3M9XCJwcm92aWRlci1idG5cIiA6Y2xhc3M9XCJ7YWN0aXZlOiBzaG93U2V0dGluZ3N9XCIgdGl0bGU9XCLYpdi52K/Yp9iv2KfYqiDYp9mE2LDZg9in2KEg2KfZhNin2LXYt9mG2KfYudmKXCI+4pqZ77iPPC9idXR0b24+XG4gICAgICAgICAgPGJ1dHRvbiBAY2xpY2s9XCJ0b2dnbGVDaGF0XCIgY2xhc3M9XCJjbG9zZS1idG5cIj4mdGltZXM7PC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDwhLS0gU2V0dGluZ3MgUGFuZWwgLS0+XG4gICAgICA8ZGl2IHYtaWY9XCJzaG93U2V0dGluZ3NcIiBjbGFzcz1cImFpLXNldHRpbmdzLXBhbmVsXCI+XG4gICAgICAgIDxoNT7impnvuI8g2KXYudiv2KfYr9in2Kog2KfZhNiw2YPYp9ihINin2YTYp9i12LfZhtin2LnZijwvaDU+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZXR0aW5ncy1ncm91cFwiPlxuICAgICAgICAgIDxsYWJlbD7ZhdmB2KrYp9itIEdvb2dsZSBHZW1pbmkgQVBJPC9sYWJlbD5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIHYtbW9kZWw9XCJnZW1pbmlLZXlJbnB1dFwiXG4gICAgICAgICAgICB0eXBlPVwicGFzc3dvcmRcIlxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJBSXphU3kuLi5cIlxuICAgICAgICAgICAgY2xhc3M9XCJzZXR0aW5ncy1pbnB1dFwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICA8c21hbGwgdi1pZj1cInNhdmVkS2V5TWFza2VkXCIgY2xhc3M9XCJrZXktc2F2ZWRcIj7inIUg2YXZgdiq2KfYrSDZhdit2YHZiNi4OiB7eyBzYXZlZEtleU1hc2tlZCB9fTwvc21hbGw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2V0dGluZ3MtZ3JvdXBcIj5cbiAgICAgICAgICA8bGFiZWw+2YbZhdmI2LDYrCBHZW1pbmk8L2xhYmVsPlxuICAgICAgICAgIDxzZWxlY3Qgdi1tb2RlbD1cImdlbWluaU1vZGVsXCIgY2xhc3M9XCJzZXR0aW5ncy1pbnB1dFwiPlxuICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImdlbWluaS0yLjUtZmxhc2hcIj5nZW1pbmktMi41LWZsYXNoIOKchSAo2YXYrNin2YbZiik8L29wdGlvbj5cbiAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJnZW1pbmktZmxhc2gtbGF0ZXN0XCI+Z2VtaW5pLWZsYXNoLWxhdGVzdCDinIUgKNmF2KzYp9mG2YopPC9vcHRpb24+XG4gICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiZ2VtaW5pLTIuNS1wcm9cIj5nZW1pbmktMi41LXBybyDinYwgKNmF2K/ZgdmI2LkpPC9vcHRpb24+XG4gICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2V0dGluZ3MtZ3JvdXBcIj5cbiAgICAgICAgICA8bGFiZWw+2YbZhdmI2LDYrCBPbGxhbWEg2KfZhNmF2K3ZhNmKPC9sYWJlbD5cbiAgICAgICAgICA8aW5wdXQgdi1tb2RlbD1cIm9sbGFtYU1vZGVsXCIgdHlwZT1cInRleHRcIiBjbGFzcz1cInNldHRpbmdzLWlucHV0XCIgcGxhY2Vob2xkZXI9XCJxd2VuMi41LWNvZGVyOmxhdGVzdFwiIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2V0dGluZ3MtYWN0aW9uc1wiPlxuICAgICAgICAgIDxidXR0b24gQGNsaWNrPVwic2F2ZVNldHRpbmdzXCIgOmRpc2FibGVkPVwic2F2aW5nU2V0dGluZ3NcIiBjbGFzcz1cInNhdmUtYnRuXCI+XG4gICAgICAgICAgICB7eyBzYXZpbmdTZXR0aW5ncyA/ICfYrNin2LHZkCDYp9mE2K3Zgdi4Li4uJyA6ICfYrdmB2Lgg2KfZhNil2LnYr9in2K/Yp9iqJyB9fVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDxzcGFuIHYtaWY9XCJzZXR0aW5nc1NhdmVkXCIgY2xhc3M9XCJzYXZlLW9rXCI+4pyFINiq2YUg2KfZhNit2YHYuCE8L3NwYW4+XG4gICAgICAgICAgPHNwYW4gdi1pZj1cInNldHRpbmdzRXJyb3JcIiBjbGFzcz1cInNhdmUtZXJyb3JcIj7inYwge3sgc2V0dGluZ3NFcnJvciB9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBDaGF0IEJvZHkgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwiYWktY2hhdC1ib2R5XCIgcmVmPVwiY2hhdEJvZHlcIj5cbiAgICAgICAgPGRpdiB2LWZvcj1cIihtc2csIGluZGV4KSBpbiB2aXNpYmxlTWVzc2FnZXNcIiA6a2V5PVwiaW5kZXhcIlxuICAgICAgICAgICAgIDpjbGFzcz1cIlsnY2hhdC1tZXNzYWdlJywgbXNnLnJvbGUgPT09ICd1c2VyJyA/ICd1c2VyLW1zZycgOiAnYWktbXNnJ11cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibXNnLWNvbnRlbnRcIj57eyBtc2cuY29udGVudCB9fTwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiB2LWlmPVwiaXNMb2FkaW5nXCIgY2xhc3M9XCJjaGF0LW1lc3NhZ2UgYWktbXNnIGxvYWRpbmdcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibXNnLWNvbnRlbnRcIj7YrNin2LHZkCDYp9mE2KrZgdmD2YrYsSDZiNis2YTYqCDYp9mE2KjZitin2YbYp9iqLi4uPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDwhLS0gRm9vdGVyIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cImFpLWNoYXQtZm9vdGVyXCI+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICB2LW1vZGVsPVwibmV3TWVzc2FnZVwiXG4gICAgICAgICAgQGtleXVwLmVudGVyPVwic2VuZE1lc3NhZ2VcIlxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwi2KfYs9ij2YQg2KfZhNiw2YPYp9ihINin2YTYp9i12LfZhtin2LnZii4uLiAo2YXYq9in2YQ6INmD2YUg2LnYr9ivINin2YTYudmF2YTYp9ih2J8pXCJcbiAgICAgICAgICA6ZGlzYWJsZWQ9XCJpc0xvYWRpbmdcIlxuICAgICAgICAvPlxuICAgICAgICA8YnV0dG9uIEBjbGljaz1cInNlbmRNZXNzYWdlXCIgOmRpc2FibGVkPVwiaXNMb2FkaW5nIHx8ICFuZXdNZXNzYWdlLnRyaW0oKVwiPlxuICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLXBhcGVyLXBsYW5lXCI+PC9pPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG5pbXBvcnQgYXhpb3MgZnJvbSBcImF4aW9zXCI7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbmFtZTogJ0FpQ2hhdEFzc2lzdGFudCcsXG4gIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlzT3BlbjogZmFsc2UsXG4gICAgICBuZXdNZXNzYWdlOiAnJyxcbiAgICAgIG1lc3NhZ2VzOiBbXSxcbiAgICAgIGlzTG9hZGluZzogZmFsc2UsXG4gICAgICBwcm92aWRlcjogJ29sbGFtYScsXG4gICAgICAvLyBTZXR0aW5ncyBwYW5lbFxuICAgICAgc2hvd1NldHRpbmdzOiBmYWxzZSxcbiAgICAgIGdlbWluaUtleUlucHV0OiAnJyxcbiAgICAgIGdlbWluaU1vZGVsOiAnZ2VtaW5pLTIuNS1mbGFzaCcsXG4gICAgICBvbGxhbWFNb2RlbDogJ3F3ZW4yLjUtY29kZXI6bGF0ZXN0JyxcbiAgICAgIHNhdmVkS2V5TWFza2VkOiAnJyxcbiAgICAgIHNhdmluZ1NldHRpbmdzOiBmYWxzZSxcbiAgICAgIHNldHRpbmdzU2F2ZWQ6IGZhbHNlLFxuICAgICAgc2V0dGluZ3NFcnJvcjogJycsXG4gICAgfTtcbiAgfSxcbiAgY29tcHV0ZWQ6IHtcbiAgICB2aXNpYmxlTWVzc2FnZXMoKSB7XG4gICAgICByZXR1cm4gdGhpcy5tZXNzYWdlcy5maWx0ZXIobSA9PiBtLnJvbGUgIT09ICdzeXN0ZW0nICYmIG0ucm9sZSAhPT0gJ3Rvb2wnICYmICFtLnRvb2xfY2FsbHMpO1xuICAgIH1cbiAgfSxcbiAgbW91bnRlZCgpIHtcbiAgICB0aGlzLmxvYWRTZXR0aW5ncygpO1xuICB9LFxuICBtZXRob2RzOiB7XG4gICAgdG9nZ2xlQ2hhdCgpIHtcbiAgICAgIHRoaXMuaXNPcGVuID0gIXRoaXMuaXNPcGVuO1xuICAgICAgaWYgKHRoaXMuaXNPcGVuICYmIHRoaXMubWVzc2FnZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHRoaXMubWVzc2FnZXMucHVzaCh7XG4gICAgICAgICAgcm9sZTogJ2Fzc2lzdGFudCcsXG4gICAgICAgICAgY29udGVudDogJ9ij2YfZhNin2Ysg2KjZgyEg2KPZhtinINin2YTZhdiz2KfYudivINin2YTYsNmD2Yog2KfZhNiu2KfYtSDYqNin2YTZhti42KfZhSDYp9mE2YXYrdin2LPYqNmKLiDZg9mK2YEg2YrZhdmD2YbZhtmKINmF2LPYp9i52K/YqtmDINio2LHYpNmK2Kkg2KfZhNil2K3Ytdin2KbZitin2Kog2KPZiCDYqNmK2KfZhtin2Kog2KfZhNmG2LjYp9mFINin2YTZitmI2YXYnydcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5pc09wZW4pIHRoaXMuc2Nyb2xsVG9Cb3R0b20oKTtcbiAgICB9LFxuICAgIGFzeW5jIGxvYWRTZXR0aW5ncygpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGF4aW9zLmdldCgnL2FwaS9haS1zZXR0aW5ncycpO1xuICAgICAgICBjb25zdCBkID0gcmVzLmRhdGE7XG4gICAgICAgIHRoaXMucHJvdmlkZXIgPSBkLmFpX3Byb3ZpZGVyIHx8ICdvbGxhbWEnO1xuICAgICAgICB0aGlzLmdlbWluaU1vZGVsID0gZC5nZW1pbmlfbW9kZWwgfHwgJ2dlbWluaS0yLjUtZmxhc2gnO1xuICAgICAgICB0aGlzLm9sbGFtYU1vZGVsID0gZC5vbGxhbWFfbW9kZWwgfHwgJ3F3ZW4yLjUtY29kZXI6bGF0ZXN0JztcbiAgICAgICAgdGhpcy5zYXZlZEtleU1hc2tlZCA9IGQuZ2VtaW5pX2tleV9tYXNrZWQgfHwgJyc7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIC8vIFNldHRpbmdzIGVuZHBvaW50IG1heSBub3QgYmUgYXZhaWxhYmxlLCB1c2UgZGVmYXVsdHNcbiAgICAgIH1cbiAgICB9LFxuICAgIGFzeW5jIHNhdmVTZXR0aW5ncygpIHtcbiAgICAgIHRoaXMuc2F2aW5nU2V0dGluZ3MgPSB0cnVlO1xuICAgICAgdGhpcy5zZXR0aW5nc1NhdmVkID0gZmFsc2U7XG4gICAgICB0aGlzLnNldHRpbmdzRXJyb3IgPSAnJztcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHBheWxvYWQgPSB7XG4gICAgICAgICAgYWlfcHJvdmlkZXI6IHRoaXMucHJvdmlkZXIsXG4gICAgICAgICAgZ2VtaW5pX21vZGVsOiB0aGlzLmdlbWluaU1vZGVsLFxuICAgICAgICAgIG9sbGFtYV9tb2RlbDogdGhpcy5vbGxhbWFNb2RlbCxcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKHRoaXMuZ2VtaW5pS2V5SW5wdXQudHJpbSgpKSB7XG4gICAgICAgICAgcGF5bG9hZC5nZW1pbmlfYXBpX2tleSA9IHRoaXMuZ2VtaW5pS2V5SW5wdXQudHJpbSgpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGF4aW9zLnBvc3QoJy9hcGkvYWktc2V0dGluZ3MnLCBwYXlsb2FkKTtcbiAgICAgICAgaWYgKHJlcy5kYXRhLnN0YXR1cyA9PT0gJ3N1Y2Nlc3MnKSB7XG4gICAgICAgICAgdGhpcy5zZXR0aW5nc1NhdmVkID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLmdlbWluaUtleUlucHV0ID0gJyc7XG4gICAgICAgICAgYXdhaXQgdGhpcy5sb2FkU2V0dGluZ3MoKTsgLy8gUmVsb2FkIHRvIHNob3cgbWFza2VkIGtleVxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4geyB0aGlzLnNldHRpbmdzU2F2ZWQgPSBmYWxzZTsgfSwgMzAwMCk7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgdGhpcy5zZXR0aW5nc0Vycm9yID0gJ9mB2LTZhCDYp9mE2K3Zgdi4OiAnICsgKGUucmVzcG9uc2U/LmRhdGE/LmVycm9yIHx8IGUubWVzc2FnZSk7XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICB0aGlzLnNhdmluZ1NldHRpbmdzID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSxcbiAgICBhc3luYyBzZW5kTWVzc2FnZSgpIHtcbiAgICAgIGlmICghdGhpcy5uZXdNZXNzYWdlLnRyaW0oKSB8fCB0aGlzLmlzTG9hZGluZykgcmV0dXJuO1xuXG4gICAgICBjb25zdCB1c2VyTXNnID0geyByb2xlOiAndXNlcicsIGNvbnRlbnQ6IHRoaXMubmV3TWVzc2FnZS50cmltKCkgfTtcbiAgICAgIHRoaXMubWVzc2FnZXMucHVzaCh1c2VyTXNnKTtcbiAgICAgIHRoaXMubmV3TWVzc2FnZSA9ICcnO1xuICAgICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xuICAgICAgdGhpcy5zY3JvbGxUb0JvdHRvbSgpO1xuXG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGF4aW9zLnBvc3QoJy9hcGkvYWktY2hhdCcsIHtcbiAgICAgICAgICBtZXNzYWdlczogdGhpcy5tZXNzYWdlcyxcbiAgICAgICAgICBwcm92aWRlcjogdGhpcy5wcm92aWRlcixcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IGRhdGEgPSByZXNwb25zZS5kYXRhO1xuICAgICAgICBpZiAoZGF0YS5zdGF0dXMgPT09ICdzdWNjZXNzJyAmJiBkYXRhLm1lc3NhZ2UpIHtcbiAgICAgICAgICB0aGlzLm1lc3NhZ2VzLnB1c2goZGF0YS5tZXNzYWdlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLm1lc3NhZ2VzLnB1c2goeyByb2xlOiAnYXNzaXN0YW50JywgY29udGVudDogJ9i52LDYsdin2YvYjCDYrdiv2Ksg2K7Yt9ijOiAnICsgKGRhdGEuZXJyb3IgfHwgJ1Vua25vd24gZXJyb3InKSB9KTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgdGhpcy5tZXNzYWdlcy5wdXNoKHsgcm9sZTogJ2Fzc2lzdGFudCcsIGNvbnRlbnQ6ICfYudiw2LHYp9mL2Iwg2YHYtNmEINin2YTYp9iq2LXYp9mEINio2KfZhNiw2YPYp9ihINin2YTYp9i12LfZhtin2LnZii4nIH0pO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zY3JvbGxUb0JvdHRvbSgpO1xuICAgICAgfVxuICAgIH0sXG4gICAgc2Nyb2xsVG9Cb3R0b20oKSB7XG4gICAgICB0aGlzLiRuZXh0VGljaygoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLiRyZWZzLmNoYXRCb2R5KSB7XG4gICAgICAgICAgdGhpcy4kcmVmcy5jaGF0Qm9keS5zY3JvbGxUb3AgPSB0aGlzLiRyZWZzLmNoYXRCb2R5LnNjcm9sbEhlaWdodDtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSxcbiAgICBzZXRQcm92aWRlcihwKSB7XG4gICAgICB0aGlzLnByb3ZpZGVyID0gcDtcbiAgICAgIHRoaXMubWVzc2FnZXMgPSBbXTtcbiAgICAgIHRoaXMubWVzc2FnZXMucHVzaCh7XG4gICAgICAgIHJvbGU6ICdhc3Npc3RhbnQnLFxuICAgICAgICBjb250ZW50OiBwID09PSAnZ2VtaW5pJ1xuICAgICAgICAgID8gJ+KcqCDYqtmFINin2YTYqtio2K/ZitmEINil2YTZiSBHb29nbGUgR2VtaW5pIEFJLiDZg9mK2YEg2YrZhdmD2YbZhtmKINmF2LPYp9i52K/YqtmD2J8nXG4gICAgICAgICAgOiAn8J+Wpe+4jyDYqtmFINin2YTYqtio2K/ZitmEINil2YTZiSDYp9mE2YXYs9in2LnYryDYp9mE2YXYrdmE2YogKE9sbGFtYSkuINmD2YrZgSDZitmF2YPZhtmG2Yog2YXYs9in2LnYr9iq2YPYnydcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufTtcbjwvc2NyaXB0PlxuXG48c3R5bGUgc2NvcGVkPlxuLmFpLWNoYXQtd2lkZ2V0IHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICBib3R0b206IDIwcHg7XG4gIHJpZ2h0OiAyMHB4O1xuICB6LWluZGV4OiA5OTk5O1xuICBmb250LWZhbWlseTogaW5oZXJpdDtcbiAgZGlyZWN0aW9uOiBydGw7XG59XG5cbi5haS1jaGF0LWJ0biB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0ZjQ2ZTU7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgYm9yZGVyOiBub25lO1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIHdpZHRoOiA2MHB4O1xuICBoZWlnaHQ6IDYwcHg7XG4gIGZvbnQtc2l6ZTogMjRweDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBib3gtc2hhZG93OiAwIDRweCA2cHggcmdiYSgwLDAsMCwwLjEpO1xuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4ycztcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG59XG4uYWktY2hhdC1idG46aG92ZXIgeyB0cmFuc2Zvcm06IHNjYWxlKDEuMDUpOyB9XG5cbi5haS1jaGF0LXdpbmRvdyB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgYm90dG9tOiA4MHB4O1xuICByaWdodDogMDtcbiAgd2lkdGg6IDM3MHB4O1xuICBtYXgtaGVpZ2h0OiA2MDBweDtcbiAgYmFja2dyb3VuZDogd2hpdGU7XG4gIGJvcmRlci1yYWRpdXM6IDEycHg7XG4gIGJveC1zaGFkb3c6IDAgMTBweCAyNXB4IHJnYmEoMCwwLDAsMC4yKTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgYm9yZGVyOiAxcHggc29saWQgI2U1ZTdlYjtcbn1cblxuLmFpLWNoYXQtaGVhZGVyIHtcbiAgYmFja2dyb3VuZDogIzRmNDZlNTtcbiAgY29sb3I6IHdoaXRlO1xuICBwYWRkaW5nOiAxMnB4IDE1cHg7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cbi5haS1jaGF0LWhlYWRlciBoNCB7XG4gIG1hcmdpbjogMDtcbiAgZm9udC1zaXplOiAxNXB4O1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IDhweDtcbn1cblxuLnByb3ZpZGVyLWJhZGdlIHtcbiAgZm9udC1zaXplOiAxMXB4O1xuICBwYWRkaW5nOiAycHggN3B4O1xuICBib3JkZXItcmFkaXVzOiAxMHB4O1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwyNTUsMjU1LDAuMik7XG59XG5cbi5wcm92aWRlci1idG4ge1xuICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwyNTUsMjU1LDAuMTUpO1xuICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI1NSwyNTUsMjU1LDAuMyk7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgYm9yZGVyLXJhZGl1czogNnB4O1xuICB3aWR0aDogMjhweDtcbiAgaGVpZ2h0OiAyOHB4O1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjJzO1xufVxuLnByb3ZpZGVyLWJ0bi5hY3RpdmUgeyBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwyNTUsMjU1LDAuNCk7IH1cbi5wcm92aWRlci1idG46aG92ZXIgeyBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwyNTUsMjU1LDAuMyk7IH1cblxuLmNsb3NlLWJ0biB7XG4gIGJhY2tncm91bmQ6IG5vbmU7XG4gIGJvcmRlcjogbm9uZTtcbiAgY29sb3I6IHdoaXRlO1xuICBmb250LXNpemU6IDI0cHg7XG4gIGxpbmUtaGVpZ2h0OiAxO1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi8qIFNldHRpbmdzIFBhbmVsICovXG4uYWktc2V0dGluZ3MtcGFuZWwge1xuICBiYWNrZ3JvdW5kOiAjZjhmYWZjO1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2U1ZTdlYjtcbiAgcGFkZGluZzogMTJweCAxNXB4O1xufVxuLmFpLXNldHRpbmdzLXBhbmVsIGg1IHtcbiAgbWFyZ2luOiAwIDAgMTBweDtcbiAgZm9udC1zaXplOiAxM3B4O1xuICBjb2xvcjogIzM3NDE1MTtcbn1cbi5zZXR0aW5ncy1ncm91cCB7XG4gIG1hcmdpbi1ib3R0b206IDEwcHg7XG59XG4uc2V0dGluZ3MtZ3JvdXAgbGFiZWwge1xuICBkaXNwbGF5OiBibG9jaztcbiAgZm9udC1zaXplOiAxMnB4O1xuICBjb2xvcjogIzZiNzI4MDtcbiAgbWFyZ2luLWJvdHRvbTogNHB4O1xufVxuLnNldHRpbmdzLWlucHV0IHtcbiAgd2lkdGg6IDEwMCU7XG4gIHBhZGRpbmc6IDZweCAxMHB4O1xuICBib3JkZXI6IDFweCBzb2xpZCAjZDFkNWRiO1xuICBib3JkZXItcmFkaXVzOiA2cHg7XG4gIGZvbnQtc2l6ZTogMTNweDtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbn1cbi5zZXR0aW5ncy1pbnB1dDpmb2N1cyB7IGJvcmRlci1jb2xvcjogIzRmNDZlNTsgb3V0bGluZTogbm9uZTsgfVxuLmtleS1zYXZlZCB7IGZvbnQtc2l6ZTogMTFweDsgY29sb3I6ICMwNTk2Njk7IH1cbi5zZXR0aW5ncy1hY3Rpb25zIHsgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgZ2FwOiAxMHB4OyB9XG4uc2F2ZS1idG4ge1xuICBiYWNrZ3JvdW5kOiAjNGY0NmU1O1xuICBjb2xvcjogd2hpdGU7XG4gIGJvcmRlcjogbm9uZTtcbiAgcGFkZGluZzogNnB4IDE2cHg7XG4gIGJvcmRlci1yYWRpdXM6IDZweDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBmb250LXNpemU6IDEzcHg7XG59XG4uc2F2ZS1idG46ZGlzYWJsZWQgeyBiYWNrZ3JvdW5kOiAjOWNhM2FmOyBjdXJzb3I6IG5vdC1hbGxvd2VkOyB9XG4uc2F2ZS1vayAgeyBmb250LXNpemU6IDEycHg7IGNvbG9yOiAjMDU5NjY5OyB9XG4uc2F2ZS1lcnJvciB7IGZvbnQtc2l6ZTogMTJweDsgY29sb3I6ICNkYzI2MjY7IH1cblxuLmFpLWNoYXQtYm9keSB7XG4gIGhlaWdodDogMzAwcHg7XG4gIG92ZXJmbG93LXk6IGF1dG87XG4gIHBhZGRpbmc6IDE1cHg7XG4gIGJhY2tncm91bmQ6ICNmOWZhZmI7XG59XG5cbi5jaGF0LW1lc3NhZ2UgeyBtYXJnaW4tYm90dG9tOiAxMnB4OyBkaXNwbGF5OiBmbGV4OyB9XG4udXNlci1tc2cgeyBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kOyB9XG4udXNlci1tc2cgLm1zZy1jb250ZW50IHsgYmFja2dyb3VuZDogIzRmNDZlNTsgY29sb3I6IHdoaXRlOyBib3JkZXItcmFkaXVzOiAxMnB4IDEycHggMCAxMnB4OyB9XG4uYWktbXNnIHsganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0OyB9XG4uYWktbXNnIC5tc2ctY29udGVudCB7IGJhY2tncm91bmQ6IHdoaXRlOyBjb2xvcjogIzFmMjkzNzsgYm9yZGVyOiAxcHggc29saWQgI2U1ZTdlYjsgYm9yZGVyLXJhZGl1czogMTJweCAxMnB4IDEycHggMDsgfVxuXG4ubXNnLWNvbnRlbnQge1xuICBwYWRkaW5nOiAxMHB4IDE0cHg7XG4gIG1heC13aWR0aDogODAlO1xuICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgd2hpdGUtc3BhY2U6IHByZS13cmFwO1xufVxuLmxvYWRpbmcgLm1zZy1jb250ZW50IHsgY29sb3I6ICM2YjcyODA7IGZvbnQtc3R5bGU6IGl0YWxpYzsgYmFja2dyb3VuZDogI2YzZjRmNjsgYm9yZGVyOiBub25lOyB9XG5cbi5haS1jaGF0LWZvb3RlciB7XG4gIHBhZGRpbmc6IDEwcHggMTVweDtcbiAgYmFja2dyb3VuZDogd2hpdGU7XG4gIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZTVlN2ViO1xuICBkaXNwbGF5OiBmbGV4O1xuICBnYXA6IDEwcHg7XG59XG4uYWktY2hhdC1mb290ZXIgaW5wdXQge1xuICBmbGV4OiAxO1xuICBwYWRkaW5nOiA4cHggMTJweDtcbiAgYm9yZGVyOiAxcHggc29saWQgI2QxZDVkYjtcbiAgYm9yZGVyLXJhZGl1czogNnB4O1xuICBvdXRsaW5lOiBub25lO1xufVxuLmFpLWNoYXQtZm9vdGVyIGlucHV0OmZvY3VzIHsgYm9yZGVyLWNvbG9yOiAjNGY0NmU1OyB9XG4uYWktY2hhdC1mb290ZXIgYnV0dG9uIHtcbiAgYmFja2dyb3VuZDogIzRmNDZlNTtcbiAgY29sb3I6IHdoaXRlO1xuICBib3JkZXI6IG5vbmU7XG4gIHBhZGRpbmc6IDhweCAxNXB4O1xuICBib3JkZXItcmFkaXVzOiA2cHg7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG59XG4uYWktY2hhdC1mb290ZXIgYnV0dG9uOmRpc2FibGVkIHsgYmFja2dyb3VuZDogIzljYTNhZjsgY3Vyc29yOiBub3QtYWxsb3dlZDsgfVxuPC9zdHlsZT5cbiIsIjx0ZW1wbGF0ZT5cbiAgPGRpdj5cbiAgICA8di1hbGVydCB2LWlmPVwiaXRlbXMubGVuZ3RoID09PSAwXCIgdHlwZT1cImluZm9cIiB0ZXh0PlxuICAgICAgPHYtaWNvbiBsZWZ0Pm1kaS1jaGVjay1jaXJjbGU8L3YtaWNvbj5cbiAgICAgIHt7ICR0KCdUb3VzIGxlcyDDqWzDqW1lbnRzIHNvbnQgbGnDqXMgYXZlYyBzdWNjw6hzJykgfX1cbiAgICA8L3YtYWxlcnQ+XG5cbiAgICA8di1jYXJkIHYtZm9yPVwiaXRlbSBpbiBpdGVtc1wiIDprZXk9XCJpdGVtLmlkXCIgY2xhc3M9XCJtYi0zXCIgb3V0bGluZWQ+XG4gICAgICA8di1jYXJkLXRleHQ+XG4gICAgICAgIDx2LXJvdyBhbGlnbj1cImNlbnRlclwiPlxuICAgICAgICAgIDx2LWNvbCBjb2xzPVwiMTJcIiBtZD1cIjRcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWg2XCI+XG4gICAgICAgICAgICAgIDx2LWljb24gbGVmdCBjb2xvcj1cIndhcm5pbmdcIj5tZGktYWxlcnQtY2lyY2xlPC92LWljb24+XG4gICAgICAgICAgICAgIHt7IGl0ZW0ubmFtZSB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IHYtaWY9XCJpdGVtLnR5cGVcIiBjbGFzcz1cInRleHQtY2FwdGlvbiBncmV5LS10ZXh0XCI+XG4gICAgICAgICAgICAgIHt7ICR0KCdUeXBlJykgfX06IHt7IGl0ZW0udHlwZSB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC92LWNvbD5cblxuICAgICAgICAgIDx2LWNvbCBjb2xzPVwiMTJcIiBtZD1cIjRcIj5cbiAgICAgICAgICAgIDx2LWF1dG9jb21wbGV0ZSB2LW1vZGVsPVwiaXRlbS5zZWxlY3RlZEFjY291bnRcIiA6aXRlbXM9XCJhY2NvdW50c0xpc3RcIiA6bG9hZGluZz1cImxvYWRpbmdBY2NvdW50c1wiXG4gICAgICAgICAgICAgIGl0ZW0tdGV4dD1cImRpc3BsYXlcIiBpdGVtLXZhbHVlPVwiY29kZVwiIDpsYWJlbD1cIiR0KCdDb21wdGUgQ29tcHRhYmxlJylcIiBwcmVwZW5kLWljb249XCJtZGktYm9vay1vcGVuXCJcbiAgICAgICAgICAgICAgb3V0bGluZWQgZGVuc2UgY2xlYXJhYmxlIDpoaW50PVwiaXRlbS5zdWdnZXN0ZWRfYWNjb3VudCA/IGBTdWdnZXN0aW9uOiAke2l0ZW0uc3VnZ2VzdGVkX2FjY291bnR9YCA6ICcnXCJcbiAgICAgICAgICAgICAgcGVyc2lzdGVudC1oaW50PlxuICAgICAgICAgICAgICA8dGVtcGxhdGUgdi1zbG90Oml0ZW09XCJ7IGl0ZW06IGFjY291bnQgfVwiPlxuICAgICAgICAgICAgICAgIDx2LWxpc3QtaXRlbS1jb250ZW50PlxuICAgICAgICAgICAgICAgICAgPHYtbGlzdC1pdGVtLXRpdGxlPlxuICAgICAgICAgICAgICAgICAgICB7eyBhY2NvdW50LmNvZGUgfX0gLSB7eyBhY2NvdW50LmxpYmVsbGUgfX1cbiAgICAgICAgICAgICAgICAgIDwvdi1saXN0LWl0ZW0tdGl0bGU+XG4gICAgICAgICAgICAgICAgPC92LWxpc3QtaXRlbS1jb250ZW50PlxuICAgICAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICAgICAgPC92LWF1dG9jb21wbGV0ZT5cbiAgICAgICAgICA8L3YtY29sPlxuXG4gICAgICAgICAgPHYtY29sIGNvbHM9XCIxMlwiIG1kPVwiNFwiPlxuICAgICAgICAgICAgPHYtYnRuIGNvbG9yPVwic3VjY2Vzc1wiIDpkaXNhYmxlZD1cIiFpdGVtLnNlbGVjdGVkQWNjb3VudFwiIDpsb2FkaW5nPVwiaXRlbS5zYXZpbmdcIiBAY2xpY2s9XCJzYXZlTGluayhpdGVtKVwiXG4gICAgICAgICAgICAgIGJsb2NrPlxuICAgICAgICAgICAgICA8di1pY29uIGxlZnQ+bWRpLWxpbmstdmFyaWFudDwvdi1pY29uPlxuICAgICAgICAgICAgICB7eyAkdCgnTGllcicpIH19XG4gICAgICAgICAgICA8L3YtYnRuPlxuXG4gICAgICAgICAgICA8di1idG4gdi1pZj1cIml0ZW0uc3VnZ2VzdGVkX2FjY291bnRcIiBjb2xvcj1cInByaW1hcnlcIiB0ZXh0IHNtYWxsIGJsb2NrIGNsYXNzPVwibXQtMlwiXG4gICAgICAgICAgICAgIEBjbGljaz1cIml0ZW0uc2VsZWN0ZWRBY2NvdW50ID0gaXRlbS5zdWdnZXN0ZWRfYWNjb3VudFwiPlxuICAgICAgICAgICAgICA8di1pY29uIGxlZnQgc21hbGw+bWRpLWxpZ2h0YnVsYjwvdi1pY29uPlxuICAgICAgICAgICAgICB7eyAkdCgnVXRpbGlzZXIgbGEgc3VnZ2VzdGlvbicpIH19XG4gICAgICAgICAgICA8L3YtYnRuPlxuICAgICAgICAgIDwvdi1jb2w+XG4gICAgICAgIDwvdi1yb3c+XG4gICAgICA8L3YtY2FyZC10ZXh0PlxuICAgIDwvdi1jYXJkPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG5pbXBvcnQgYXhpb3MgZnJvbSBcImF4aW9zXCI7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbmFtZTogXCJFbnRpdHlMaXN0XCIsXG4gIHByb3BzOiB7XG4gICAgaXRlbXM6IHtcbiAgICAgIHR5cGU6IEFycmF5LFxuICAgICAgZGVmYXVsdDogKCkgPT4gW10sXG4gICAgfSxcbiAgICBsb2FkaW5nOiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgfSxcbiAgICBlbnRpdHlUeXBlOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICB9LFxuICB9LFxuICBkYXRhKCkge1xuICAgIHJldHVybiB7XG4gICAgICBhY2NvdW50c0xpc3Q6IFtdLFxuICAgICAgbG9hZGluZ0FjY291bnRzOiBmYWxzZSxcbiAgICB9O1xuICB9LFxuICBjb21wdXRlZDoge1xuICAgIEJhc2VfdXJsX3dlYigpIHtcbiAgICAgIHJldHVybiB0aGlzLiRzdG9yZS5nZXR0ZXJzW1wiZ2V0X0Jhc2VfdXJsXCJdO1xuICAgIH0sXG4gIH0sXG4gIG1vdW50ZWQoKSB7XG4gICAgdGhpcy5mZXRjaEFjY291bnRzKCk7XG4gIH0sXG4gIHdhdGNoOiB7XG4gICAgaXRlbXM6IHtcbiAgICAgIGhhbmRsZXIobmV3SXRlbXMpIHtcbiAgICAgICAgLy8gSW5pdGlhbGl6ZSBzZWxlY3RlZEFjY291bnQgZm9yIGVhY2ggaXRlbVxuICAgICAgICBuZXdJdGVtcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgaWYgKCFpdGVtLnNlbGVjdGVkQWNjb3VudCAmJiBpdGVtLnN1Z2dlc3RlZF9hY2NvdW50KSB7XG4gICAgICAgICAgICB0aGlzLiRzZXQoaXRlbSwgXCJzZWxlY3RlZEFjY291bnRcIiwgaXRlbS5zdWdnZXN0ZWRfYWNjb3VudCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICghaXRlbS5zYXZpbmcpIHtcbiAgICAgICAgICAgIHRoaXMuJHNldChpdGVtLCBcInNhdmluZ1wiLCBmYWxzZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgICBpbW1lZGlhdGU6IHRydWUsXG4gICAgICBkZWVwOiB0cnVlLFxuICAgIH0sXG4gIH0sXG4gIG1ldGhvZHM6IHtcbiAgICBhc3luYyBmZXRjaEFjY291bnRzKCkge1xuICAgICAgdGhpcy5sb2FkaW5nQWNjb3VudHMgPSB0cnVlO1xuXG4gICAgICB0cnkge1xuICAgICAgICAvLyBVc2UgZGF0YXNlbGVjdCBlbmRwb2ludCB3aGljaCByZXR1cm5zIGFsbCBpdGVtcyB3aXRob3V0IHBhZ2luYXRpb25cbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBheGlvcy5nZXQoXG4gICAgICAgICAgdGhpcy5CYXNlX3VybF93ZWIgKyBcIi9jb21wdGVjb21wdGFibGUvZGF0YXNlbGVjdFwiLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgQXV0aG9yaXphdGlvbjogbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJKV1RUb2tlblwiKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfVxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnNvbGUubG9nKFwiQ29tcHRlQ29tcHRhYmxlIEFQSSBSZXNwb25zZTpcIiwgcmVzcG9uc2UuZGF0YSk7XG5cbiAgICAgICAgLy8gVHJ5IG11bHRpcGxlIHBvc3NpYmxlIGRhdGEgc3RydWN0dXJlc1xuICAgICAgICBsZXQgYWNjb3VudHNEYXRhID0gW107XG5cbiAgICAgICAgaWYgKHJlc3BvbnNlLmRhdGEgJiYgcmVzcG9uc2UuZGF0YS5kYXRhU2V0KSB7XG4gICAgICAgICAgYWNjb3VudHNEYXRhID0gcmVzcG9uc2UuZGF0YS5kYXRhU2V0O1xuICAgICAgICB9IGVsc2UgaWYgKHJlc3BvbnNlLmRhdGEgJiYgQXJyYXkuaXNBcnJheShyZXNwb25zZS5kYXRhLmRhdGFTZXQpKSB7XG4gICAgICAgICAgYWNjb3VudHNEYXRhID0gcmVzcG9uc2UuZGF0YS5kYXRhU2V0O1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc29sZS5sb2coXCJBY2NvdW50cyBEYXRhOlwiLCBhY2NvdW50c0RhdGEpO1xuXG4gICAgICAgIGlmIChhY2NvdW50c0RhdGEgJiYgYWNjb3VudHNEYXRhLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICB0aGlzLmFjY291bnRzTGlzdCA9IGFjY291bnRzRGF0YS5tYXAoKGFjY291bnQpID0+ICh7XG4gICAgICAgICAgICBjb2RlOiBhY2NvdW50LmNvZGUgfHwgYWNjb3VudC5Db2RlIHx8ICcnLFxuICAgICAgICAgICAgbGliZWxsZTogYWNjb3VudC5saWJlbGxlIHx8IGFjY291bnQuTGliZWxsZSB8fCBhY2NvdW50LmxhYmVsIHx8ICcnLFxuICAgICAgICAgICAgZGlzcGxheTogYCR7YWNjb3VudC5jb2RlIHx8IGFjY291bnQuQ29kZX0gLSAke2FjY291bnQubGliZWxsZSB8fCBhY2NvdW50LkxpYmVsbGUgfHwgYWNjb3VudC5sYWJlbH1gLFxuICAgICAgICAgIH0pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnNvbGUubG9nKFwiQWNjb3VudHMgTGlzdDpcIiwgdGhpcy5hY2NvdW50c0xpc3QpO1xuXG4gICAgICAgIHRoaXMubG9hZGluZ0FjY291bnRzID0gZmFsc2U7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihcIkVycm9yIGZldGNoaW5nIGFjY291bnRzOlwiLCBlcnIpO1xuICAgICAgICBjb25zb2xlLmVycm9yKFwiRXJyb3IgcmVzcG9uc2U6XCIsIGVyci5yZXNwb25zZSk7XG4gICAgICAgIHRoaXMubG9hZGluZ0FjY291bnRzID0gZmFsc2U7XG5cbiAgICAgICAgLy8gU2hvdyBlcnJvciB0byB1c2VyXG4gICAgICAgIHRoaXMuJHN0b3JlLmRpc3BhdGNoKFwic2hvd1NuYWNrYmFyXCIsIHtcbiAgICAgICAgICB0ZXh0OiBcIkVycmV1ciBsb3JzIGR1IGNoYXJnZW1lbnQgZGVzIGNvbXB0ZXMgY29tcHRhYmxlc1wiLFxuICAgICAgICAgIGNvbG9yOiBcImVycm9yXCJcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gRmFsbGJhY2s6IGNyZWF0ZSBlbXB0eSBsaXN0XG4gICAgICAgIHRoaXMuYWNjb3VudHNMaXN0ID0gW107XG4gICAgICB9XG4gICAgfSxcblxuICAgIGFzeW5jIHNhdmVMaW5rKGl0ZW0pIHtcbiAgICAgIGlmICghaXRlbS5zZWxlY3RlZEFjY291bnQpIHJldHVybjtcblxuICAgICAgdGhpcy4kc2V0KGl0ZW0sIFwic2F2aW5nXCIsIHRydWUpO1xuXG4gICAgICBjb25zdCBwYXlsb2FkID0ge1xuICAgICAgICBlbnRpdHlfdHlwZTogdGhpcy5lbnRpdHlUeXBlLFxuICAgICAgICBlbnRpdHlfaWQ6IGl0ZW0uaWQsXG4gICAgICAgIGFjY291bnRfY29kZTogaXRlbS5zZWxlY3RlZEFjY291bnQsXG4gICAgICB9O1xuXG4gICAgICB0aGlzLiRlbWl0KFwibGlua1wiLCBwYXlsb2FkKTtcblxuICAgICAgLy8gUmVzZXQgc2F2aW5nIHN0YXRlIGFmdGVyIGEgZGVsYXkgKHBhcmVudCB3aWxsIHJlZnJlc2gpXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy4kc2V0KGl0ZW0sIFwic2F2aW5nXCIsIGZhbHNlKTtcbiAgICAgIH0sIDEwMDApO1xuICAgIH0sXG4gIH0sXG59O1xuPC9zY3JpcHQ+XG5cbjxzdHlsZSBzY29wZWQ+XG4udi1jYXJkIHtcbiAgdHJhbnNpdGlvbjogYWxsIDAuM3M7XG59XG5cbi52LWNhcmQ6aG92ZXIge1xuICBib3gtc2hhZG93OiAwIDRweCA4cHggcmdiYSgwLCAwLCAwLCAwLjEpO1xufVxuPC9zdHlsZT5cbiIsIjx0ZW1wbGF0ZT5cbiAgPHYtZGlhbG9nIHYtbW9kZWw9XCJkaWFsb2dcIiBtYXgtd2lkdGg9XCIxMjAwcHhcIiBzY3JvbGxhYmxlIHBlcnNpc3RlbnQ+XG4gICAgPHYtY2FyZD5cbiAgICAgIDx2LWNhcmQtdGl0bGUgY2xhc3M9XCJwcmltYXJ5IHdoaXRlLS10ZXh0XCI+XG4gICAgICAgIDx2LWljb24gbGVmdCBjb2xvcj1cIndoaXRlXCI+bWRpLWxpbmstdmFyaWFudDwvdi1pY29uPlxuICAgICAgICB7eyAkdCgnR2VzdGlvbiBkZXMgTGlhaXNvbnMgQ29tcHRhYmxlcycpIH19XG4gICAgICAgIDx2LXNwYWNlcj48L3Ytc3BhY2VyPlxuICAgICAgICA8di1jaGlwIHYtaWY9XCJ0b3RhbHMudG90YWwgPiAwXCIgY29sb3I9XCJ3YXJuaW5nXCIgZGFyaz5cbiAgICAgICAgICB7eyB0b3RhbHMudG90YWwgfX0ge3sgJHQoJ05vbiBsacOpcycpIH19XG4gICAgICAgIDwvdi1jaGlwPlxuICAgICAgICA8di1idG4gaWNvbiBkYXJrIEBjbGljaz1cImNsb3NlXCI+XG4gICAgICAgICAgPHYtaWNvbj5tZGktY2xvc2U8L3YtaWNvbj5cbiAgICAgICAgPC92LWJ0bj5cbiAgICAgIDwvdi1jYXJkLXRpdGxlPlxuXG4gICAgICA8di1jYXJkLXRleHQgY2xhc3M9XCJwdC00XCI+XG4gICAgICAgIDx2LWFsZXJ0IHYtaWY9XCJlcnJvclwiIHR5cGU9XCJlcnJvclwiIGRpc21pc3NpYmxlIEBpbnB1dD1cImVycm9yID0gbnVsbFwiPlxuICAgICAgICAgIHt7IGVycm9yIH19XG4gICAgICAgIDwvdi1hbGVydD5cblxuICAgICAgICA8di1hbGVydCB2LWlmPVwic3VjY2Vzc1wiIHR5cGU9XCJzdWNjZXNzXCIgZGlzbWlzc2libGUgQGlucHV0PVwic3VjY2VzcyA9IG51bGxcIj5cbiAgICAgICAgICB7eyBzdWNjZXNzIH19XG4gICAgICAgIDwvdi1hbGVydD5cblxuICAgICAgICA8di1hbGVydCB2LWlmPVwidG90YWxzLnRvdGFsID09PSAwXCIgdHlwZT1cInN1Y2Nlc3NcIiBwcm9taW5lbnQ+XG4gICAgICAgICAgPHYtcm93IGFsaWduPVwiY2VudGVyXCI+XG4gICAgICAgICAgICA8di1jb2wgY2xhc3M9XCJncm93XCI+XG4gICAgICAgICAgICAgIDx2LWljb24gbGVmdCBsYXJnZT5tZGktY2hlY2stY2lyY2xlPC92LWljb24+XG4gICAgICAgICAgICAgIHt7ICR0KCdUb3V0ZXMgbGVzIGVudGl0w6lzIHNvbnQgbGnDqWVzIGF2ZWMgc3VjY8OocyAhIOKckycpIH19XG4gICAgICAgICAgICA8L3YtY29sPlxuICAgICAgICAgIDwvdi1yb3c+XG4gICAgICAgIDwvdi1hbGVydD5cblxuICAgICAgICA8di10YWJzIHYtbW9kZWw9XCJhY3RpdmVUYWJcIiB2LWlmPVwidG90YWxzLnRvdGFsID4gMFwiPlxuICAgICAgICAgIDx2LXRhYj5cbiAgICAgICAgICAgIDx2LWJhZGdlIDpjb250ZW50PVwidG90YWxzLnBheW1lbnRfbWV0aG9kc1wiIDp2YWx1ZT1cInRvdGFscy5wYXltZW50X21ldGhvZHMgPiAwXCIgY29sb3I9XCJ3YXJuaW5nXCIgb3ZlcmxhcD5cbiAgICAgICAgICAgICAgPHYtaWNvbiBsZWZ0Pm1kaS1jcmVkaXQtY2FyZDwvdi1pY29uPlxuICAgICAgICAgICAgICB7eyAkdCgnTW9kZXMgZGUgUGFpZW1lbnQnKSB9fVxuICAgICAgICAgICAgPC92LWJhZGdlPlxuICAgICAgICAgIDwvdi10YWI+XG4gICAgICAgICAgPHYtdGFiPlxuICAgICAgICAgICAgPHYtYmFkZ2UgOmNvbnRlbnQ9XCJ0b3RhbHMuYmFua19hY2NvdW50c1wiIDp2YWx1ZT1cInRvdGFscy5iYW5rX2FjY291bnRzID4gMFwiIGNvbG9yPVwid2FybmluZ1wiIG92ZXJsYXA+XG4gICAgICAgICAgICAgIDx2LWljb24gbGVmdD5tZGktYmFuazwvdi1pY29uPlxuICAgICAgICAgICAgICB7eyAkdCgnQ29tcHRlcyBCYW5jYWlyZXMnKSB9fVxuICAgICAgICAgICAgPC92LWJhZGdlPlxuICAgICAgICAgIDwvdi10YWI+XG4gICAgICAgICAgPHYtdGFiPlxuICAgICAgICAgICAgPHYtYmFkZ2UgOmNvbnRlbnQ9XCJ0b3RhbHMuZXhwZW5zZV9jYXRlZ29yaWVzXCIgOnZhbHVlPVwidG90YWxzLmV4cGVuc2VfY2F0ZWdvcmllcyA+IDBcIiBjb2xvcj1cIndhcm5pbmdcIlxuICAgICAgICAgICAgICBvdmVybGFwPlxuICAgICAgICAgICAgICA8di1pY29uIGxlZnQ+bWRpLWFycm93LWRvd248L3YtaWNvbj5cbiAgICAgICAgICAgICAge3sgJHQoJ0NhdMOpZ29yaWVzIGRlIETDqXBlbnNlcycpIH19XG4gICAgICAgICAgICA8L3YtYmFkZ2U+XG4gICAgICAgICAgPC92LXRhYj5cbiAgICAgICAgICA8di10YWI+XG4gICAgICAgICAgICA8di1iYWRnZSA6Y29udGVudD1cInRvdGFscy5yZXZlbnVlX2NhdGVnb3JpZXNcIiA6dmFsdWU9XCJ0b3RhbHMucmV2ZW51ZV9jYXRlZ29yaWVzID4gMFwiIGNvbG9yPVwid2FybmluZ1wiXG4gICAgICAgICAgICAgIG92ZXJsYXA+XG4gICAgICAgICAgICAgIDx2LWljb24gbGVmdD5tZGktYXJyb3ctdXA8L3YtaWNvbj5cbiAgICAgICAgICAgICAge3sgJHQoJ0NhdMOpZ29yaWVzIGRlIFJlY2V0dGVzJykgfX1cbiAgICAgICAgICAgIDwvdi1iYWRnZT5cbiAgICAgICAgICA8L3YtdGFiPlxuICAgICAgICA8L3YtdGFicz5cblxuICAgICAgICA8di10YWJzLWl0ZW1zIHYtbW9kZWw9XCJhY3RpdmVUYWJcIiB2LWlmPVwidG90YWxzLnRvdGFsID4gMFwiPlxuICAgICAgICAgIDwhLS0gUGF5bWVudCBNZXRob2RzIFRhYiAtLT5cbiAgICAgICAgICA8di10YWItaXRlbT5cbiAgICAgICAgICAgIDx2LWNhcmQgZmxhdCBjbGFzcz1cIm10LTRcIj5cbiAgICAgICAgICAgICAgPGVudGl0eS1saXN0IDppdGVtcz1cImRhdGEucGF5bWVudF9tZXRob2RzXCIgOmxvYWRpbmc9XCJsb2FkaW5nXCIgZW50aXR5LXR5cGU9XCJwYXltZW50X21ldGhvZFwiXG4gICAgICAgICAgICAgICAgQGxpbms9XCJsaW5rRW50aXR5XCIgLz5cbiAgICAgICAgICAgIDwvdi1jYXJkPlxuICAgICAgICAgIDwvdi10YWItaXRlbT5cblxuICAgICAgICAgIDwhLS0gQmFuayBBY2NvdW50cyBUYWIgLS0+XG4gICAgICAgICAgPHYtdGFiLWl0ZW0+XG4gICAgICAgICAgICA8di1jYXJkIGZsYXQgY2xhc3M9XCJtdC00XCI+XG4gICAgICAgICAgICAgIDxlbnRpdHktbGlzdCA6aXRlbXM9XCJkYXRhLmJhbmtfYWNjb3VudHNcIiA6bG9hZGluZz1cImxvYWRpbmdcIiBlbnRpdHktdHlwZT1cImJhbmtfYWNjb3VudFwiXG4gICAgICAgICAgICAgICAgQGxpbms9XCJsaW5rRW50aXR5XCIgLz5cbiAgICAgICAgICAgIDwvdi1jYXJkPlxuICAgICAgICAgIDwvdi10YWItaXRlbT5cblxuICAgICAgICAgIDwhLS0gRXhwZW5zZSBDYXRlZ29yaWVzIFRhYiAtLT5cbiAgICAgICAgICA8di10YWItaXRlbT5cbiAgICAgICAgICAgIDx2LWNhcmQgZmxhdCBjbGFzcz1cIm10LTRcIj5cbiAgICAgICAgICAgICAgPGVudGl0eS1saXN0IDppdGVtcz1cImRhdGEuZXhwZW5zZV9jYXRlZ29yaWVzXCIgOmxvYWRpbmc9XCJsb2FkaW5nXCIgZW50aXR5LXR5cGU9XCJleHBlbnNlX2NhdGVnb3J5XCJcbiAgICAgICAgICAgICAgICBAbGluaz1cImxpbmtFbnRpdHlcIiAvPlxuICAgICAgICAgICAgPC92LWNhcmQ+XG4gICAgICAgICAgPC92LXRhYi1pdGVtPlxuICAgICAgICAgIFxuXG4gICAgICAgICAgPCEtLSBSZXZlbnVlIENhdGVnb3JpZXMgVGFiIC0tPlxuICAgICAgICAgIDx2LXRhYi1pdGVtPlxuICAgICAgICAgICAgPHYtY2FyZCBmbGF0IGNsYXNzPVwibXQtNFwiPlxuICAgICAgICAgICAgICA8ZW50aXR5LWxpc3QgOml0ZW1zPVwiZGF0YS5yZXZlbnVlX2NhdGVnb3JpZXNcIiA6bG9hZGluZz1cImxvYWRpbmdcIiBlbnRpdHktdHlwZT1cInJldmVudWVfY2F0ZWdvcnlcIlxuICAgICAgICAgICAgICAgIEBsaW5rPVwibGlua0VudGl0eVwiIC8+XG4gICAgICAgICAgICA8L3YtY2FyZD5cbiAgICAgICAgICA8L3YtdGFiLWl0ZW0+XG4gICAgICAgIDwvdi10YWJzLWl0ZW1zPlxuICAgICAgPC92LWNhcmQtdGV4dD5cblxuICAgICAgPHYtY2FyZC1hY3Rpb25zPlxuICAgICAgICA8di1idG4gY29sb3I9XCJwcmltYXJ5XCIgdGV4dCBAY2xpY2s9XCJmZXRjaERhdGFcIiA6bG9hZGluZz1cImxvYWRpbmdcIj5cbiAgICAgICAgICA8di1pY29uIGxlZnQ+bWRpLXJlZnJlc2g8L3YtaWNvbj5cbiAgICAgICAgICB7eyAkdCgnQWN0dWFsaXNlcicpIH19XG4gICAgICAgIDwvdi1idG4+XG4gICAgICAgIDx2LXNwYWNlcj48L3Ytc3BhY2VyPlxuICAgICAgICA8di1idG4gY29sb3I9XCJwcmltYXJ5XCIgdGV4dCBAY2xpY2s9XCJjbG9zZVwiPlxuICAgICAgICAgIHt7ICR0KCdGZXJtZXInKSB9fVxuICAgICAgICA8L3YtYnRuPlxuICAgICAgPC92LWNhcmQtYWN0aW9ucz5cbiAgICA8L3YtY2FyZD5cbiAgPC92LWRpYWxvZz5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG5pbXBvcnQgYXhpb3MgZnJvbSBcImF4aW9zXCI7XG5pbXBvcnQgRW50aXR5TGlzdCBmcm9tIFwiLi9jb21wb25lbnRzL0VudGl0eUxpc3QudnVlXCI7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbmFtZTogXCJBY2NvdW50aW5nTGlua01hbmFnZXJcIixcbiAgY29tcG9uZW50czoge1xuICAgIEVudGl0eUxpc3QsXG4gIH0sXG4gIHByb3BzOiB7XG4gICAgdmFsdWU6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICB9LFxuICB9LFxuICBkYXRhKCkge1xuICAgIHJldHVybiB7XG4gICAgICBkaWFsb2c6IGZhbHNlLFxuICAgICAgbG9hZGluZzogZmFsc2UsXG4gICAgICBhY3RpdmVUYWI6IDAsXG4gICAgICBkYXRhOiB7XG4gICAgICAgIHBheW1lbnRfbWV0aG9kczogW10sXG4gICAgICAgIGJhbmtfYWNjb3VudHM6IFtdLFxuICAgICAgICBleHBlbnNlX2NhdGVnb3JpZXM6IFtdLFxuICAgICAgICByZXZlbnVlX2NhdGVnb3JpZXM6IFtdLFxuICAgICAgfSxcbiAgICAgIHRvdGFsczoge1xuICAgICAgICBwYXltZW50X21ldGhvZHM6IDAsXG4gICAgICAgIGJhbmtfYWNjb3VudHM6IDAsXG4gICAgICAgIGV4cGVuc2VfY2F0ZWdvcmllczogMCxcbiAgICAgICAgcmV2ZW51ZV9jYXRlZ29yaWVzOiAwLFxuICAgICAgICB0b3RhbDogMCxcbiAgICAgIH0sXG4gICAgICBlcnJvcjogbnVsbCxcbiAgICAgIHN1Y2Nlc3M6IG51bGwsXG4gICAgfTtcbiAgfSxcbiAgY29tcHV0ZWQ6IHtcbiAgICBCYXNlX3VybF93ZWIoKSB7XG4gICAgICByZXR1cm4gdGhpcy4kc3RvcmUuZ2V0dGVyc1tcImdldF9CYXNlX3VybFwiXTtcbiAgICB9LFxuICB9LFxuICB3YXRjaDoge1xuICAgIHZhbHVlKHZhbCkge1xuICAgICAgdGhpcy5kaWFsb2cgPSB2YWw7XG4gICAgICBpZiAodmFsKSB7XG4gICAgICAgIHRoaXMuZmV0Y2hEYXRhKCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBkaWFsb2codmFsKSB7XG4gICAgICB0aGlzLiRlbWl0KFwiaW5wdXRcIiwgdmFsKTtcbiAgICB9LFxuICB9LFxuICBtZXRob2RzOiB7XG4gICAgYXN5bmMgZmV0Y2hEYXRhKCkge1xuICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgIHRoaXMuZXJyb3IgPSBudWxsO1xuXG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGF4aW9zLmdldChcbiAgICAgICAgICB0aGlzLkJhc2VfdXJsX3dlYiArIFwiL2FjY291bnRpbmctY29uZmlnL2NoZWNrXCIsXG4gICAgICAgICAge1xuICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICBBdXRob3JpemF0aW9uOiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcIkpXVFRva2VuXCIpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9XG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5kYXRhID0ge1xuICAgICAgICAgIHBheW1lbnRfbWV0aG9kczogcmVzcG9uc2UuZGF0YS5wYXltZW50X21ldGhvZHMgfHwgW10sXG4gICAgICAgICAgYmFua19hY2NvdW50czogcmVzcG9uc2UuZGF0YS5iYW5rX2FjY291bnRzIHx8IFtdLFxuICAgICAgICAgIGV4cGVuc2VfY2F0ZWdvcmllczogcmVzcG9uc2UuZGF0YS5leHBlbnNlX2NhdGVnb3JpZXMgfHwgW10sXG4gICAgICAgICAgcmV2ZW51ZV9jYXRlZ29yaWVzOiByZXNwb25zZS5kYXRhLnJldmVudWVfY2F0ZWdvcmllcyB8fCBbXSxcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLnRvdGFscyA9IHJlc3BvbnNlLmRhdGEudG90YWxzIHx8IHtcbiAgICAgICAgICBwYXltZW50X21ldGhvZHM6IDAsXG4gICAgICAgICAgYmFua19hY2NvdW50czogMCxcbiAgICAgICAgICBleHBlbnNlX2NhdGVnb3JpZXM6IDAsXG4gICAgICAgICAgcmV2ZW51ZV9jYXRlZ29yaWVzOiAwLFxuICAgICAgICAgIHRvdGFsOiAwLFxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgICAgdGhpcy5lcnJvciA9IFwi2K7Yt9ijINmB2Yog2KrYrdmF2YrZhCDYp9mE2KjZitin2YbYp9iqXCI7XG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICBhc3luYyBsaW5rRW50aXR5KHBheWxvYWQpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgYXhpb3MucG9zdChcbiAgICAgICAgICB0aGlzLkJhc2VfdXJsX3dlYiArIFwiL2FjY291bnRpbmctY29uZmlnL2xpbmtcIixcbiAgICAgICAgICBwYXlsb2FkLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgQXV0aG9yaXphdGlvbjogbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJKV1RUb2tlblwiKSxcbiAgICAgICAgICAgICAgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH1cbiAgICAgICAgKTtcblxuICAgICAgICBpZiAocmVzcG9uc2UuZGF0YS5zdWNjZXNzKSB7XG4gICAgICAgICAgdGhpcy5zdWNjZXNzID0gcmVzcG9uc2UuZGF0YS5tZXNzYWdlO1xuICAgICAgICAgIC8vIFJlZnJlc2ggZGF0YVxuICAgICAgICAgIGF3YWl0IHRoaXMuZmV0Y2hEYXRhKCk7XG4gICAgICAgICAgLy8gRW1pdCB1cGRhdGUgZXZlbnQgdG8gcGFyZW50XG4gICAgICAgICAgdGhpcy4kZW1pdChcInVwZGF0ZWRcIik7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgIHRoaXMuZXJyb3IgPSBlcnIucmVzcG9uc2U/LmRhdGE/LmVycm9yIHx8IFwi2K7Yt9ijINmB2Yog2K3Zgdi4INin2YTYsdio2LdcIjtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgY2xvc2UoKSB7XG4gICAgICB0aGlzLmRpYWxvZyA9IGZhbHNlO1xuICAgICAgdGhpcy5hY3RpdmVUYWIgPSAwO1xuICAgICAgdGhpcy5lcnJvciA9IG51bGw7XG4gICAgICB0aGlzLnN1Y2Nlc3MgPSBudWxsO1xuICAgIH0sXG4gIH0sXG59O1xuPC9zY3JpcHQ+XG5cbjxzdHlsZSBzY29wZWQ+XG4udi10YWIge1xuICB0ZXh0LXRyYW5zZm9ybTogbm9uZSAhaW1wb3J0YW50O1xufVxuPC9zdHlsZT5cbiIsIjx0ZW1wbGF0ZT5cbiAgPHYtY29udGFpbmVyIGZsdWlkPlxuICAgIDx2LWNhcmQ+XG4gICAgICA8di1jYXJkLXRpdGxlPlxuICAgICAgICA8di1pY29uIGxlZnQgY29sb3I9XCJwcmltYXJ5XCI+bWRpLWJvb2stb3Blbi12YXJpYW50PC92LWljb24+XG4gICAgICAgIHt7ICR0KCdKb3VybmFsIENvbXB0YWJsZScpIH19XG4gICAgICAgIDx2LXNwYWNlcj48L3Ytc3BhY2VyPlxuXG4gICAgICAgIDwhLS0gRGF0ZSBGaWx0ZXJzIC0tPlxuICAgICAgICA8di1tZW51IHYtbW9kZWw9XCJtZW51RGF0ZURlYnV0XCIgOmNsb3NlLW9uLWNvbnRlbnQtY2xpY2s9XCJmYWxzZVwiIDpudWRnZS1yaWdodD1cIjQwXCIgdHJhbnNpdGlvbj1cInNjYWxlLXRyYW5zaXRpb25cIlxuICAgICAgICAgIG9mZnNldC15IG1pbi13aWR0aD1cImF1dG9cIj5cbiAgICAgICAgICA8dGVtcGxhdGUgdi1zbG90OmFjdGl2YXRvcj1cInsgb24sIGF0dHJzIH1cIj5cbiAgICAgICAgICAgIDx2LXRleHQtZmllbGQgdi1tb2RlbD1cImRhdGVEZWJ1dFwiIDpsYWJlbD1cIiR0KCdEYXRlIETDqWJ1dCcpXCIgcHJlcGVuZC1pY29uPVwibWRpLWNhbGVuZGFyXCIgcmVhZG9ubHlcbiAgICAgICAgICAgICAgdi1iaW5kPVwiYXR0cnNcIiB2LW9uPVwib25cIiBkZW5zZSBvdXRsaW5lZCBoaWRlLWRldGFpbHMgY2xhc3M9XCJtci0yXCIgc3R5bGU9XCJtYXgtd2lkdGg6IDE1MHB4XCI+PC92LXRleHQtZmllbGQ+XG4gICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgICA8di1kYXRlLXBpY2tlciB2LW1vZGVsPVwiZGF0ZURlYnV0XCIgQGlucHV0PVwibWVudURhdGVEZWJ1dCA9IGZhbHNlXCI+PC92LWRhdGUtcGlja2VyPlxuICAgICAgICA8L3YtbWVudT5cblxuICAgICAgICA8di1tZW51IHYtbW9kZWw9XCJtZW51RGF0ZUZpblwiIDpjbG9zZS1vbi1jb250ZW50LWNsaWNrPVwiZmFsc2VcIiA6bnVkZ2UtcmlnaHQ9XCI0MFwiIHRyYW5zaXRpb249XCJzY2FsZS10cmFuc2l0aW9uXCJcbiAgICAgICAgICBvZmZzZXQteSBtaW4td2lkdGg9XCJhdXRvXCI+XG4gICAgICAgICAgPHRlbXBsYXRlIHYtc2xvdDphY3RpdmF0b3I9XCJ7IG9uLCBhdHRycyB9XCI+XG4gICAgICAgICAgICA8di10ZXh0LWZpZWxkIHYtbW9kZWw9XCJkYXRlRmluXCIgOmxhYmVsPVwiJHQoJ0RhdGUgRmluJylcIiBwcmVwZW5kLWljb249XCJtZGktY2FsZW5kYXJcIiByZWFkb25seSB2LWJpbmQ9XCJhdHRyc1wiXG4gICAgICAgICAgICAgIHYtb249XCJvblwiIGRlbnNlIG91dGxpbmVkIGhpZGUtZGV0YWlscyBjbGFzcz1cIm1yLTJcIiBzdHlsZT1cIm1heC13aWR0aDogMTUwcHhcIj48L3YtdGV4dC1maWVsZD5cbiAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICAgIDx2LWRhdGUtcGlja2VyIHYtbW9kZWw9XCJkYXRlRmluXCIgQGlucHV0PVwibWVudURhdGVGaW4gPSBmYWxzZVwiPjwvdi1kYXRlLXBpY2tlcj5cbiAgICAgICAgPC92LW1lbnU+XG5cbiAgICAgICAgPHYtYnRuIGNvbG9yPVwicHJpbWFyeVwiIEBjbGljaz1cImZldGNoRGF0YVwiIDpsb2FkaW5nPVwibG9hZGluZ1wiIGNsYXNzPVwibXItMlwiPlxuICAgICAgICAgIDx2LWljb24gbGVmdD5tZGktcmVmcmVzaDwvdi1pY29uPlxuICAgICAgICAgIHt7ICR0KCdBY3R1YWxpc2VyJykgfX1cbiAgICAgICAgPC92LWJ0bj5cblxuICAgICAgICA8IS0tIEFjY291bnRpbmcgTGluayBNYW5hZ2VyIEJ1dHRvbiAtLT5cbiAgICAgICAgPHYtYnRuIGNvbG9yPVwib3JhbmdlIGRhcmtlbi0yXCIgZGFyayBAY2xpY2s9XCJzaG93TGlua01hbmFnZXIgPSB0cnVlXCIgY2xhc3M9XCJtci0yXCI+XG4gICAgICAgICAgPHYtaWNvbiBsZWZ0Pm1kaS1saW5rLXZhcmlhbnQ8L3YtaWNvbj5cbiAgICAgICAgICB7eyAkdCgnR2VzdGlvbiBkZXMgTGlhaXNvbnMnKSB9fVxuICAgICAgICA8L3YtYnRuPlxuXG4gICAgICAgIDwhLS0gUERGIEV4cG9ydCBCdXR0b24gLS0+XG4gICAgICAgIDx2LWJ0biBjb2xvcj1cInJlZCBkYXJrZW4tMlwiIGRhcmsgQGNsaWNrPVwiZXhwb3J0UGRmXCIgOmxvYWRpbmc9XCJleHBvcnRpbmdcIj5cbiAgICAgICAgICA8di1pY29uIGxlZnQ+bWRpLWZpbGUtcGRmLWJveDwvdi1pY29uPlxuICAgICAgICAgIHt7ICR0KCdUw6lsw6ljaGFyZ2VyIFBERicpIH19XG4gICAgICAgIDwvdi1idG4+XG4gICAgICA8L3YtY2FyZC10aXRsZT5cblxuICAgICAgPHYtZGF0YS10YWJsZSA6aGVhZGVycz1cImhlYWRlcnNcIiA6aXRlbXM9XCJpdGVtc1wiIDpsb2FkaW5nPVwibG9hZGluZ1wiIDppdGVtcy1wZXItcGFnZT1cIjUwXCIgY2xhc3M9XCJlbGV2YXRpb24tMVwiPlxuICAgICAgICA8dGVtcGxhdGUgdi1zbG90Oml0ZW0uZGViaXQ9XCJ7IGl0ZW0gfVwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9udC13ZWlnaHQtYm9sZCBncmVlbi0tdGV4dFwiIHYtaWY9XCJpdGVtLmRlYml0ID4gMFwiPlxuICAgICAgICAgICAge3sgZm9ybWF0TW9uZXkoaXRlbS5kZWJpdCkgfX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPHNwYW4gdi1lbHNlPi08L3NwYW4+XG4gICAgICAgIDwvdGVtcGxhdGU+XG5cbiAgICAgICAgPHRlbXBsYXRlIHYtc2xvdDppdGVtLmNyZWRpdD1cInsgaXRlbSB9XCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJmb250LXdlaWdodC1ib2xkIHJlZC0tdGV4dFwiIHYtaWY9XCJpdGVtLmNyZWRpdCA+IDBcIj5cbiAgICAgICAgICAgIHt7IGZvcm1hdE1vbmV5KGl0ZW0uY3JlZGl0KSB9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiB2LWVsc2U+LTwvc3Bhbj5cbiAgICAgICAgPC90ZW1wbGF0ZT5cblxuICAgICAgICA8dGVtcGxhdGUgdi1zbG90OmJvZHkuYXBwZW5kPlxuICAgICAgICAgIDx0ciBjbGFzcz1cImZvbnQtd2VpZ2h0LWJsYWNrICBsaWdodGVuLTNcIj5cbiAgICAgICAgICAgIDx0ZCBjb2xzcGFuPVwiNFwiIGNsYXNzPVwidGV4dC1yaWdodFwiPnt7ICR0KCdUT1RBTCcpIH19PC90ZD5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdyZWVuLS10ZXh0XCI+e3sgZm9ybWF0TW9uZXkodG90YWxEZWJpdCkgfX08L3RkPlxuICAgICAgICAgICAgPHRkIGNsYXNzPVwicmVkLS10ZXh0XCI+e3sgZm9ybWF0TW9uZXkodG90YWxDcmVkaXQpIH19PC90ZD5cbiAgICAgICAgICA8L3RyPlxuICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgPC92LWRhdGEtdGFibGU+XG4gICAgPC92LWNhcmQ+XG5cbiAgICA8IS0tIEFjY291bnRpbmcgTGluayBNYW5hZ2VyIERpYWxvZyAtLT5cbiAgICA8QWNjb3VudGluZ0xpbmtNYW5hZ2VyIHYtbW9kZWw9XCJzaG93TGlua01hbmFnZXJcIiBAdXBkYXRlZD1cImZldGNoRGF0YVwiIC8+XG4gIDwvdi1jb250YWluZXI+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0PlxuaW1wb3J0IGF4aW9zIGZyb20gXCJheGlvc1wiO1xuaW1wb3J0IGpzUERGIGZyb20gXCJqc3BkZlwiO1xuaW1wb3J0IGF1dG9UYWJsZSBmcm9tIFwianNwZGYtYXV0b3RhYmxlXCI7XG5pbXBvcnQgQWNjb3VudGluZ0xpbmtNYW5hZ2VyIGZyb20gXCIuL0FjY291bnRpbmdMaW5rTWFuYWdlci52dWVcIjtcblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiBcIkpvdXJuYWxcIixcbiAgY29tcG9uZW50czoge1xuICAgIEFjY291bnRpbmdMaW5rTWFuYWdlcixcbiAgfSxcbiAgZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbG9hZGluZzogZmFsc2UsXG4gICAgICBleHBvcnRpbmc6IGZhbHNlLFxuICAgICAgc2hvd0xpbmtNYW5hZ2VyOiBmYWxzZSxcbiAgICAgIGl0ZW1zOiBbXSxcbiAgICAgIGRhdGVEZWJ1dDogbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpICsgJy0wMS0wMScsXG4gICAgICBkYXRlRmluOiBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCkgKyAnLTEyLTMxJyxcbiAgICAgIG1lbnVEYXRlRGVidXQ6IGZhbHNlLFxuICAgICAgbWVudURhdGVGaW46IGZhbHNlLFxuICAgICAgaGVhZGVyczogW1xuICAgICAgICB7IHRleHQ6ICdEYXRlJywgdmFsdWU6ICdkYXRlJyB9LFxuICAgICAgICB7IHRleHQ6ICdKb3VybmFsJywgdmFsdWU6ICdqb3VybmFsJyB9LFxuICAgICAgICB7IHRleHQ6ICdOwrAgUGnDqGNlJywgdmFsdWU6ICdudW1lcm8nIH0sXG4gICAgICAgIHsgdGV4dDogJ0NvbXB0ZScsIHZhbHVlOiAnY29tcHRlJyB9LFxuICAgICAgICB7IHRleHQ6ICdMaWJlbGzDqScsIHZhbHVlOiAnbGliZWxsZScgfSxcbiAgICAgICAgeyB0ZXh0OiAnRMOpYml0JywgdmFsdWU6ICdkZWJpdCcsIGFsaWduOiAncmlnaHQnIH0sXG4gICAgICAgIHsgdGV4dDogJ0Nyw6lkaXQnLCB2YWx1ZTogJ2NyZWRpdCcsIGFsaWduOiAncmlnaHQnIH0sXG4gICAgICBdXG4gICAgfTtcbiAgfSxcbiAgY29tcHV0ZWQ6IHtcbiAgICBCYXNlX3VybF93ZWIoKSB7XG4gICAgICByZXR1cm4gdGhpcy4kc3RvcmUuZ2V0dGVyc1tcImdldF9CYXNlX3VybFwiXTtcbiAgICB9LFxuICAgIHRvdGFsRGViaXQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5pdGVtcy5yZWR1Y2UoKHN1bSwgaXRlbSkgPT4gc3VtICsgKHBhcnNlRmxvYXQoaXRlbS5kZWJpdCkgfHwgMCksIDApO1xuICAgIH0sXG4gICAgdG90YWxDcmVkaXQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5pdGVtcy5yZWR1Y2UoKHN1bSwgaXRlbSkgPT4gc3VtICsgKHBhcnNlRmxvYXQoaXRlbS5jcmVkaXQpIHx8IDApLCAwKTtcbiAgICB9XG4gIH0sXG4gIG1vdW50ZWQoKSB7XG4gICAgdGhpcy5mZXRjaERhdGEoKTtcbiAgfSxcbiAgbWV0aG9kczoge1xuICAgIGZvcm1hdE1vbmV5KHZhbHVlKSB7XG4gICAgICByZXR1cm4gcGFyc2VGbG9hdCh2YWx1ZSkudG9Mb2NhbGVTdHJpbmcoJ2ZyLU1BJywgeyBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDIsIG1heGltdW1GcmFjdGlvbkRpZ2l0czogMiB9KSArICcgREgnO1xuICAgIH0sXG4gICAgZmV0Y2hEYXRhKCkge1xuICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgICAgZGF0ZV9kZWJ1dDogdGhpcy5kYXRlRGVidXQsXG4gICAgICAgIGRhdGVfZmluOiB0aGlzLmRhdGVGaW5cbiAgICAgIH07XG5cbiAgICAgIGF4aW9zLmdldCh0aGlzLkJhc2VfdXJsX3dlYiArICcvY29tcHRhYmlsaXRlL2pvdXJuYWwvYXBpJywge1xuICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgQXV0aG9yaXphdGlvbjogbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJKV1RUb2tlblwiKSxcbiAgICAgICAgfSxcbiAgICAgICAgcGFyYW1zOiBwYXJhbXNcbiAgICAgIH0pXG4gICAgICAgIC50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAvLyBGbGF0dGVuIHRoZSBuZXN0ZWQgc3RydWN0dXJlXG4gICAgICAgICAgY29uc3QgZmxhdEl0ZW1zID0gW107XG4gICAgICAgICAgaWYgKHJlc3BvbnNlLmRhdGEuZGF0YVNldCAmJiBBcnJheS5pc0FycmF5KHJlc3BvbnNlLmRhdGEuZGF0YVNldCkpIHtcbiAgICAgICAgICAgIHJlc3BvbnNlLmRhdGEuZGF0YVNldC5mb3JFYWNoKGVudHJ5ID0+IHtcbiAgICAgICAgICAgICAgaWYgKGVudHJ5LmxpZ25lcyAmJiBBcnJheS5pc0FycmF5KGVudHJ5LmxpZ25lcykpIHtcbiAgICAgICAgICAgICAgICBlbnRyeS5saWduZXMuZm9yRWFjaChsaWduZSA9PiB7XG4gICAgICAgICAgICAgICAgICBsZXQgY29tcHRlRGlzcGxheSA9ICcnO1xuICAgICAgICAgICAgICAgICAgaWYgKGxpZ25lLmNvbXB0ZV9jb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbXB0ZURpc3BsYXkgPSBsaWduZS5jb21wdGVfY29kZTtcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobGlnbmUuY29tcHRlKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgbGlnbmUuY29tcHRlID09PSAnb2JqZWN0Jykge1xuXG4gICAgICAgICAgICAgICAgICAgICAgY29tcHRlRGlzcGxheSA9IGxpZ25lLmNvbXB0ZS5jb2RlIHx8IGxpZ25lLmNvbXB0ZS5saWJlbGxlIHx8ICdOL0EnO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIGNvbXB0ZURpc3BsYXkgPSBsaWduZS5jb21wdGU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgZmxhdEl0ZW1zLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICBkYXRlOiBlbnRyeS5kYXRlLFxuICAgICAgICAgICAgICAgICAgICBqb3VybmFsOiBlbnRyeS5qb3VybmFsLFxuICAgICAgICAgICAgICAgICAgICBudW1lcm86IGVudHJ5LnJlZiB8fCBlbnRyeS5udW1lcm8sIC8vIEZhbGxiYWNrIGlmIG51bWVybyBpcyBtaXNzaW5nXG4gICAgICAgICAgICAgICAgICAgIGNvbXB0ZTogY29tcHRlRGlzcGxheSxcbiAgICAgICAgICAgICAgICAgICAgbGliZWxsZTogbGlnbmUubGliZWxsZSB8fCBlbnRyeS5saWJlbGxlLFxuICAgICAgICAgICAgICAgICAgICBkZWJpdDogbGlnbmUuZGViaXQgfHwgMCxcbiAgICAgICAgICAgICAgICAgICAgY3JlZGl0OiBsaWduZS5jcmVkaXQgfHwgMFxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLml0ZW1zID0gZmxhdEl0ZW1zO1xuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goZXJyb3IgPT4ge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuJHN0b3JlLmRpc3BhdGNoKFwic2hvd1NuYWNrYmFyXCIsIHtcbiAgICAgICAgICAgIHRleHQ6IFwiRXJyZXVyIGxvcnMgZHUgY2hhcmdlbWVudCBkZXMgZG9ubsOpZXNcIixcbiAgICAgICAgICAgIGNvbG9yOiBcImVycm9yXCJcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfSxcbiAgICBleHBvcnRQZGYoKSB7XG4gICAgICB0aGlzLmV4cG9ydGluZyA9IHRydWU7XG4gICAgICBjb25zdCBkb2MgPSBuZXcganNQREYoKTtcblxuICAgICAgLy8gSGVhZGVyXG4gICAgICBkb2Muc2V0Rm9udFNpemUoMTgpO1xuICAgICAgZG9jLnRleHQoXCJKb3VybmFsIENvbXB0YWJsZVwiLCAxNCwgMTUpO1xuXG4gICAgICBkb2Muc2V0Rm9udFNpemUoMTApO1xuICAgICAgZG9jLnRleHQoYFDDqXJpb2RlOiAke3RoaXMuZGF0ZURlYnV0fSBhdSAke3RoaXMuZGF0ZUZpbn1gLCAxNCwgMjIpO1xuICAgICAgZG9jLnRleHQoYERhdGUgZCdpbXByZXNzaW9uOiAke25ldyBEYXRlKCkudG9Mb2NhbGVEYXRlU3RyaW5nKCl9YCwgMTQsIDI3KTtcblxuICAgICAgY29uc3QgdGFibGVEYXRhID0gdGhpcy5pdGVtcy5tYXAoaXRlbSA9PiBbXG4gICAgICAgIGl0ZW0uZGF0ZSxcbiAgICAgICAgaXRlbS5qb3VybmFsLFxuICAgICAgICBpdGVtLm51bWVybyxcbiAgICAgICAgaXRlbS5jb21wdGUsXG4gICAgICAgIGl0ZW0ubGliZWxsZSxcbiAgICAgICAgdGhpcy5mb3JtYXRNb25leShpdGVtLmRlYml0KSxcbiAgICAgICAgdGhpcy5mb3JtYXRNb25leShpdGVtLmNyZWRpdClcbiAgICAgIF0pO1xuXG4gICAgICAvLyBBZGQgVG90YWwgUm93XG4gICAgICB0YWJsZURhdGEucHVzaChbXG4gICAgICAgICcnLCAnJywgJycsICdUT1RBTCcsICcnLFxuICAgICAgICB0aGlzLmZvcm1hdE1vbmV5KHRoaXMudG90YWxEZWJpdCksXG4gICAgICAgIHRoaXMuZm9ybWF0TW9uZXkodGhpcy50b3RhbENyZWRpdClcbiAgICAgIF0pO1xuXG4gICAgICBhdXRvVGFibGUoZG9jLCB7XG4gICAgICAgIGhlYWQ6IFtbJ0RhdGUnLCAnSm91cm5hbCcsICdOwrAgUGnDqGNlJywgJ0NvbXB0ZScsICdMaWJlbGzDqScsICdEw6liaXQnLCAnQ3LDqWRpdCddXSxcbiAgICAgICAgYm9keTogdGFibGVEYXRhLFxuICAgICAgICBzdGFydFk6IDM1LFxuICAgICAgICB0aGVtZTogJ2dyaWQnLFxuICAgICAgICBoZWFkU3R5bGVzOiB7IGZpbGxDb2xvcjogWzQxLCAxMjgsIDE4NV0sIHRleHRDb2xvcjogMjU1IH0sXG4gICAgICAgIGNvbHVtblN0eWxlczoge1xuICAgICAgICAgIDU6IHsgaGFsaWduOiAncmlnaHQnIH0sXG4gICAgICAgICAgNjogeyBoYWxpZ246ICdyaWdodCcgfVxuICAgICAgICB9LFxuICAgICAgICBkaWRQYXJzZUNlbGw6IGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICAgICAgLy8gU3R5bGUgdG90YWwgcm93XG4gICAgICAgICAgaWYgKGRhdGEucm93LmluZGV4ID09PSB0YWJsZURhdGEubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgZGF0YS5jZWxsLnN0eWxlcy5mb250U3R5bGUgPSAnYm9sZCc7XG4gICAgICAgICAgICBkYXRhLmNlbGwuc3R5bGVzLmZpbGxDb2xvciA9IFsyNDAsIDI0MCwgMjQwXTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBkb2Muc2F2ZShgam91cm5hbF8ke3RoaXMuZGF0ZURlYnV0fV8ke3RoaXMuZGF0ZUZpbn0ucGRmYCk7XG4gICAgICB0aGlzLmV4cG9ydGluZyA9IGZhbHNlO1xuICAgIH1cbiAgfVxufTtcbjwvc2NyaXB0PlxuXG48c3R5bGUgc2NvcGVkPlxuLnYtZGF0YS10YWJsZSA6ZGVlcCh0aCkge1xuICBmb250LXdlaWdodDogYm9sZCAhaW1wb3J0YW50O1xuICBmb250LXNpemU6IDE0cHggIWltcG9ydGFudDtcbn1cbjwvc3R5bGU+XG4iLCI8dGVtcGxhdGU+XG4gIDx2LWNvbnRhaW5lciBmbHVpZD5cbiAgICA8di1jYXJkPlxuICAgICAgPHYtY2FyZC10aXRsZT5cbiAgICAgICAgPHYtaWNvbiBsZWZ0IGNvbG9yPVwicHJpbWFyeVwiPm1kaS1ub3RlYm9vazwvdi1pY29uPlxuICAgICAgICB7eyAkdCgnR3JhbmQgTGl2cmUnKSB9fVxuICAgICAgICA8di1zcGFjZXI+PC92LXNwYWNlcj5cblxuICAgICAgICA8IS0tIEFjY291bnQgRmlsdGVyIC0tPlxuICAgICAgICA8di10ZXh0LWZpZWxkIHYtbW9kZWw9XCJjb21wdGVcIiA6bGFiZWw9XCIkdCgnQ29tcHRlIChleDogMzQyMSknKVwiIGRlbnNlIG91dGxpbmVkIGhpZGUtZGV0YWlscyBjbGFzcz1cIm1yLTJcIlxuICAgICAgICAgIHN0eWxlPVwibWF4LXdpZHRoOiAxNTBweFwiPjwvdi10ZXh0LWZpZWxkPlxuXG4gICAgICAgIDwhLS0gRGF0ZSBGaWx0ZXJzIC0tPlxuICAgICAgICA8di1tZW51IHYtbW9kZWw9XCJtZW51RGF0ZURlYnV0XCIgOmNsb3NlLW9uLWNvbnRlbnQtY2xpY2s9XCJmYWxzZVwiIDpudWRnZS1yaWdodD1cIjQwXCIgdHJhbnNpdGlvbj1cInNjYWxlLXRyYW5zaXRpb25cIlxuICAgICAgICAgIG9mZnNldC15IG1pbi13aWR0aD1cImF1dG9cIj5cbiAgICAgICAgICA8dGVtcGxhdGUgdi1zbG90OmFjdGl2YXRvcj1cInsgb24sIGF0dHJzIH1cIj5cbiAgICAgICAgICAgIDx2LXRleHQtZmllbGQgdi1tb2RlbD1cImRhdGVEZWJ1dFwiIDpsYWJlbD1cIiR0KCdEYXRlIETDqWJ1dCcpXCIgcHJlcGVuZC1pY29uPVwibWRpLWNhbGVuZGFyXCIgcmVhZG9ubHlcbiAgICAgICAgICAgICAgdi1iaW5kPVwiYXR0cnNcIiB2LW9uPVwib25cIiBkZW5zZSBvdXRsaW5lZCBoaWRlLWRldGFpbHMgY2xhc3M9XCJtci0yXCIgc3R5bGU9XCJtYXgtd2lkdGg6IDE1MHB4XCI+PC92LXRleHQtZmllbGQ+XG4gICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgICA8di1kYXRlLXBpY2tlciB2LW1vZGVsPVwiZGF0ZURlYnV0XCIgQGlucHV0PVwibWVudURhdGVEZWJ1dCA9IGZhbHNlXCI+PC92LWRhdGUtcGlja2VyPlxuICAgICAgICA8L3YtbWVudT5cblxuICAgICAgICA8di1tZW51IHYtbW9kZWw9XCJtZW51RGF0ZUZpblwiIDpjbG9zZS1vbi1jb250ZW50LWNsaWNrPVwiZmFsc2VcIiA6bnVkZ2UtcmlnaHQ9XCI0MFwiIHRyYW5zaXRpb249XCJzY2FsZS10cmFuc2l0aW9uXCJcbiAgICAgICAgICBvZmZzZXQteSBtaW4td2lkdGg9XCJhdXRvXCI+XG4gICAgICAgICAgPHRlbXBsYXRlIHYtc2xvdDphY3RpdmF0b3I9XCJ7IG9uLCBhdHRycyB9XCI+XG4gICAgICAgICAgICA8di10ZXh0LWZpZWxkIHYtbW9kZWw9XCJkYXRlRmluXCIgOmxhYmVsPVwiJHQoJ0RhdGUgRmluJylcIiBwcmVwZW5kLWljb249XCJtZGktY2FsZW5kYXJcIiByZWFkb25seSB2LWJpbmQ9XCJhdHRyc1wiXG4gICAgICAgICAgICAgIHYtb249XCJvblwiIGRlbnNlIG91dGxpbmVkIGhpZGUtZGV0YWlscyBjbGFzcz1cIm1yLTJcIiBzdHlsZT1cIm1heC13aWR0aDogMTUwcHhcIj48L3YtdGV4dC1maWVsZD5cbiAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICAgIDx2LWRhdGUtcGlja2VyIHYtbW9kZWw9XCJkYXRlRmluXCIgQGlucHV0PVwibWVudURhdGVGaW4gPSBmYWxzZVwiPjwvdi1kYXRlLXBpY2tlcj5cbiAgICAgICAgPC92LW1lbnU+XG5cbiAgICAgICAgPHYtYnRuIGNvbG9yPVwicHJpbWFyeVwiIEBjbGljaz1cImZldGNoRGF0YVwiIDpsb2FkaW5nPVwibG9hZGluZ1wiIGNsYXNzPVwibXItMlwiPlxuICAgICAgICAgIDx2LWljb24gbGVmdD5tZGktcmVmcmVzaDwvdi1pY29uPlxuICAgICAgICAgIHt7ICR0KCdBY3R1YWxpc2VyJykgfX1cbiAgICAgICAgPC92LWJ0bj5cblxuICAgICAgICA8IS0tIEFjY291bnRpbmcgTGluayBNYW5hZ2VyIEJ1dHRvbiAtLT5cbiAgICAgICAgPHYtYnRuIGNvbG9yPVwib3JhbmdlIGRhcmtlbi0yXCIgZGFyayBAY2xpY2s9XCJzaG93TGlua01hbmFnZXIgPSB0cnVlXCIgY2xhc3M9XCJtci0yXCI+XG4gICAgICAgICAgPHYtaWNvbiBsZWZ0Pm1kaS1saW5rLXZhcmlhbnQ8L3YtaWNvbj5cbiAgICAgICAgICB7eyAkdCgnR2VzdGlvbiBkZXMgTGlhaXNvbnMnKSB9fVxuICAgICAgICA8L3YtYnRuPlxuXG4gICAgICAgIDwhLS0gUERGIEV4cG9ydCBCdXR0b24gLS0+XG4gICAgICAgIDx2LWJ0biBjb2xvcj1cInJlZCBkYXJrZW4tMlwiIGRhcmsgQGNsaWNrPVwiZXhwb3J0UGRmXCIgOmxvYWRpbmc9XCJleHBvcnRpbmdcIiA6ZGlzYWJsZWQ9XCIhaXRlbXMubGVuZ3RoXCI+XG4gICAgICAgICAgPHYtaWNvbiBsZWZ0Pm1kaS1maWxlLXBkZi1ib3g8L3YtaWNvbj5cbiAgICAgICAgICB7eyAkdCgnVMOpbMOpY2hhcmdlciBQREYnKSB9fVxuICAgICAgICA8L3YtYnRuPlxuICAgICAgPC92LWNhcmQtdGl0bGU+XG5cbiAgICAgIDx2LWRhdGEtdGFibGUgOmhlYWRlcnM9XCJoZWFkZXJzXCIgOml0ZW1zPVwiaXRlbXNcIiA6bG9hZGluZz1cImxvYWRpbmdcIiA6aXRlbXMtcGVyLXBhZ2U9XCI1MFwiIGNsYXNzPVwiZWxldmF0aW9uLTFcIj5cbiAgICAgICAgPHRlbXBsYXRlIHYtc2xvdDppdGVtLmRlYml0PVwieyBpdGVtIH1cIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImZvbnQtd2VpZ2h0LWJvbGQgZ3JlZW4tLXRleHRcIiB2LWlmPVwiaXRlbS5kZWJpdCA+IDBcIj5cbiAgICAgICAgICAgIHt7IGZvcm1hdE1vbmV5KGl0ZW0uZGViaXQpIH19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxzcGFuIHYtZWxzZT4tPC9zcGFuPlxuICAgICAgICA8L3RlbXBsYXRlPlxuXG4gICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6aXRlbS5jcmVkaXQ9XCJ7IGl0ZW0gfVwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9udC13ZWlnaHQtYm9sZCByZWQtLXRleHRcIiB2LWlmPVwiaXRlbS5jcmVkaXQgPiAwXCI+XG4gICAgICAgICAgICB7eyBmb3JtYXRNb25leShpdGVtLmNyZWRpdCkgfX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPHNwYW4gdi1lbHNlPi08L3NwYW4+XG4gICAgICAgIDwvdGVtcGxhdGU+XG5cbiAgICAgICAgPHRlbXBsYXRlIHYtc2xvdDpib2R5LmFwcGVuZD5cbiAgICAgICAgICA8dHIgY2xhc3M9XCJmb250LXdlaWdodC1ibGFjayAgbGlnaHRlbi0zXCI+XG4gICAgICAgICAgICA8dGQgY29sc3Bhbj1cIjRcIiBjbGFzcz1cInRleHQtcmlnaHRcIj57eyAkdCgnVE9UQUwnKSB9fTwvdGQ+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJncmVlbi0tdGV4dFwiPnt7IGZvcm1hdE1vbmV5KHRvdGFsRGViaXQpIH19PC90ZD5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cInJlZC0tdGV4dFwiPnt7IGZvcm1hdE1vbmV5KHRvdGFsQ3JlZGl0KSB9fTwvdGQ+XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgICA8dHIgY2xhc3M9XCJmb250LXdlaWdodC1ibGFjayAgbGlnaHRlbi00XCI+XG4gICAgICAgICAgICA8dGQgY29sc3Bhbj1cIjRcIiBjbGFzcz1cInRleHQtcmlnaHRcIj57eyAkdCgnU09MREUgRklOQUwnKSB9fTwvdGQ+XG4gICAgICAgICAgICA8dGQgY29sc3Bhbj1cIjJcIiBjbGFzcz1cInRleHQtY2VudGVyXCI+e3sgZm9ybWF0TW9uZXkoc29sZGVGaW5hbCkgfX08L3RkPlxuICAgICAgICAgIDwvdHI+XG4gICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICA8L3YtZGF0YS10YWJsZT5cbiAgICA8L3YtY2FyZD5cblxuICAgIDwhLS0gQWNjb3VudGluZyBMaW5rIE1hbmFnZXIgRGlhbG9nIC0tPlxuICAgIDxBY2NvdW50aW5nTGlua01hbmFnZXIgdi1tb2RlbD1cInNob3dMaW5rTWFuYWdlclwiIEB1cGRhdGVkPVwiZmV0Y2hEYXRhXCIgLz5cbiAgPC92LWNvbnRhaW5lcj5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG5pbXBvcnQgYXhpb3MgZnJvbSBcImF4aW9zXCI7XG5pbXBvcnQganNQREYgZnJvbSBcImpzcGRmXCI7XG5pbXBvcnQgYXV0b1RhYmxlIGZyb20gXCJqc3BkZi1hdXRvdGFibGVcIjtcbmltcG9ydCBBY2NvdW50aW5nTGlua01hbmFnZXIgZnJvbSBcIi4vQWNjb3VudGluZ0xpbmtNYW5hZ2VyLnZ1ZVwiO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6IFwiR3JhbmRMaXZyZVwiLFxuICBjb21wb25lbnRzOiB7XG4gICAgQWNjb3VudGluZ0xpbmtNYW5hZ2VyLFxuICB9LFxuICBkYXRhKCkge1xuICAgIHJldHVybiB7XG4gICAgICBsb2FkaW5nOiBmYWxzZSxcbiAgICAgIGV4cG9ydGluZzogZmFsc2UsXG4gICAgICBzaG93TGlua01hbmFnZXI6IGZhbHNlLFxuICAgICAgaXRlbXM6IFtdLFxuICAgICAgc29sZGVGaW5hbDogMCxcbiAgICAgIGNvbXB0ZTogJzM0MjEnLFxuICAgICAgZGF0ZURlYnV0OiBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCkgKyAnLTAxLTAxJyxcbiAgICAgIGRhdGVGaW46IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKSArICctMTItMzEnLFxuICAgICAgbWVudURhdGVEZWJ1dDogZmFsc2UsXG4gICAgICBtZW51RGF0ZUZpbjogZmFsc2UsXG4gICAgICBoZWFkZXJzOiBbXG4gICAgICAgIHsgdGV4dDogJ0RhdGUnLCB2YWx1ZTogJ2RhdGUnIH0sXG4gICAgICAgIHsgdGV4dDogJ0pvdXJuYWwnLCB2YWx1ZTogJ2pvdXJuYWwnIH0sXG4gICAgICAgIHsgdGV4dDogJ07CsCBQacOoY2UnLCB2YWx1ZTogJ251bWVybycgfSxcbiAgICAgICAgeyB0ZXh0OiAnTGliZWxsw6knLCB2YWx1ZTogJ2xpYmVsbGUnIH0sXG4gICAgICAgIHsgdGV4dDogJ0TDqWJpdCcsIHZhbHVlOiAnZGViaXQnLCBhbGlnbjogJ3JpZ2h0JyB9LFxuICAgICAgICB7IHRleHQ6ICdDcsOpZGl0JywgdmFsdWU6ICdjcmVkaXQnLCBhbGlnbjogJ3JpZ2h0JyB9LFxuICAgICAgXVxuICAgIH07XG4gIH0sXG4gIGNvbXB1dGVkOiB7XG4gICAgQmFzZV91cmxfd2ViKCkge1xuICAgICAgcmV0dXJuIHRoaXMuJHN0b3JlLmdldHRlcnNbXCJnZXRfQmFzZV91cmxcIl07XG4gICAgfSxcbiAgICB0b3RhbERlYml0KCkge1xuICAgICAgcmV0dXJuIHRoaXMuaXRlbXMucmVkdWNlKChzdW0sIGl0ZW0pID0+IHN1bSArIChwYXJzZUZsb2F0KGl0ZW0uZGViaXQpIHx8IDApLCAwKTtcbiAgICB9LFxuICAgIHRvdGFsQ3JlZGl0KCkge1xuICAgICAgcmV0dXJuIHRoaXMuaXRlbXMucmVkdWNlKChzdW0sIGl0ZW0pID0+IHN1bSArIChwYXJzZUZsb2F0KGl0ZW0uY3JlZGl0KSB8fCAwKSwgMCk7XG4gICAgfVxuICB9LFxuICBtb3VudGVkKCkge1xuICAgIC8vIHRoaXMuZmV0Y2hEYXRhKCk7IC8vIERvbid0IGF1dG8gZmV0Y2ggd2l0aG91dCBhY2NvdW50XG4gIH0sXG4gIG1ldGhvZHM6IHtcbiAgICBmb3JtYXRNb25leSh2YWx1ZSkge1xuICAgICAgcmV0dXJuIHBhcnNlRmxvYXQodmFsdWUpLnRvTG9jYWxlU3RyaW5nKCdmci1NQScsIHsgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAyLCBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDIgfSkgKyAnIERIJztcbiAgICB9LFxuICAgIGZldGNoRGF0YSgpIHtcbiAgICAgIGlmICghdGhpcy5jb21wdGUpIHtcbiAgICAgICAgdGhpcy4kc3RvcmUuZGlzcGF0Y2goXCJzaG93U25hY2tiYXJcIiwge1xuICAgICAgICAgIHRleHQ6IFwiVmV1aWxsZXogc2Fpc2lyIHVuIG51bcOpcm8gZGUgY29tcHRlXCIsXG4gICAgICAgICAgY29sb3I6IFwid2FybmluZ1wiXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICAgIGNvbXB0ZTogdGhpcy5jb21wdGUsXG4gICAgICAgIGRhdGVfZGVidXQ6IHRoaXMuZGF0ZURlYnV0LFxuICAgICAgICBkYXRlX2ZpbjogdGhpcy5kYXRlRmluXG4gICAgICB9O1xuXG4gICAgICBheGlvcy5nZXQodGhpcy5CYXNlX3VybF93ZWIgKyAnL2NvbXB0YWJpbGl0ZS9ncmFuZGxpdnJlL2FwaScsIHtcbiAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgIEF1dGhvcml6YXRpb246IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiSldUVG9rZW5cIiksXG4gICAgICAgIH0sXG4gICAgICAgIHBhcmFtczogcGFyYW1zXG4gICAgICB9KVxuICAgICAgICAudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgICAgLy8gTWFwIGl0ZW1zIHRvIGZsYXR0ZW4gc3RydWN0dXJlXG4gICAgICAgICAgdGhpcy5pdGVtcyA9IChyZXNwb25zZS5kYXRhLmxpZ25lcyB8fCBbXSkubWFwKGl0ZW0gPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgICAgICAgZGF0ZTogaXRlbS5lY3JpdHVyZV9kYXRlIHx8IGl0ZW0uZGF0ZSxcbiAgICAgICAgICAgICAgam91cm5hbDogaXRlbS5lY3JpdHVyZV9qb3VybmFsIHx8IGl0ZW0uam91cm5hbCxcbiAgICAgICAgICAgICAgbnVtZXJvOiBpdGVtLmVjcml0dXJlX251bWVybyB8fCBpdGVtLm51bWVybyxcbiAgICAgICAgICAgICAgbGliZWxsZTogaXRlbS5saWJlbGxlLFxuICAgICAgICAgICAgICBkZWJpdDogaXRlbS5kZWJpdCxcbiAgICAgICAgICAgICAgY3JlZGl0OiBpdGVtLmNyZWRpdFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aGlzLnNvbGRlRmluYWwgPSByZXNwb25zZS5kYXRhLnNvbGRlX2ZpbmFsO1xuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goZXJyb3IgPT4ge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuJHN0b3JlLmRpc3BhdGNoKFwic2hvd1NuYWNrYmFyXCIsIHtcbiAgICAgICAgICAgIHRleHQ6IFwiRXJyZXVyIGxvcnMgZHUgY2hhcmdlbWVudCBkZXMgZG9ubsOpZXNcIixcbiAgICAgICAgICAgIGNvbG9yOiBcImVycm9yXCJcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfSxcbiAgICBleHBvcnRQZGYoKSB7XG4gICAgICB0aGlzLmV4cG9ydGluZyA9IHRydWU7XG4gICAgICBjb25zdCBkb2MgPSBuZXcganNQREYoKTtcblxuICAgICAgLy8gSGVhZGVyXG4gICAgICBkb2Muc2V0Rm9udFNpemUoMTgpO1xuICAgICAgZG9jLnRleHQoXCJHcmFuZCBMaXZyZVwiLCAxNCwgMTUpO1xuXG4gICAgICBkb2Muc2V0Rm9udFNpemUoMTApO1xuICAgICAgZG9jLnRleHQoYENvbXB0ZTogJHt0aGlzLmNvbXB0ZX1gLCAxNCwgMjIpO1xuICAgICAgZG9jLnRleHQoYFDDqXJpb2RlOiAke3RoaXMuZGF0ZURlYnV0fSBhdSAke3RoaXMuZGF0ZUZpbn1gLCAxNCwgMjcpO1xuICAgICAgZG9jLnRleHQoYERhdGUgZCdpbXByZXNzaW9uOiAke25ldyBEYXRlKCkudG9Mb2NhbGVEYXRlU3RyaW5nKCl9YCwgMTQsIDMyKTtcblxuICAgICAgY29uc3QgdGFibGVEYXRhID0gdGhpcy5pdGVtcy5tYXAoaXRlbSA9PiBbXG4gICAgICAgIGl0ZW0uZGF0ZSxcbiAgICAgICAgaXRlbS5qb3VybmFsLFxuICAgICAgICBpdGVtLm51bWVybyxcbiAgICAgICAgaXRlbS5saWJlbGxlLFxuICAgICAgICB0aGlzLmZvcm1hdE1vbmV5KGl0ZW0uZGViaXQpLFxuICAgICAgICB0aGlzLmZvcm1hdE1vbmV5KGl0ZW0uY3JlZGl0KVxuICAgICAgXSk7XG5cbiAgICAgIC8vIEFkZCBUb3RhbCBSb3dcbiAgICAgIHRhYmxlRGF0YS5wdXNoKFtcbiAgICAgICAgJycsICcnLCAnJywgJ1RPVEFMJyxcbiAgICAgICAgdGhpcy5mb3JtYXRNb25leSh0aGlzLnRvdGFsRGViaXQpLFxuICAgICAgICB0aGlzLmZvcm1hdE1vbmV5KHRoaXMudG90YWxDcmVkaXQpXG4gICAgICBdKTtcblxuICAgICAgLy8gQWRkIFNvbGRlIEZpbmFsIFJvd1xuICAgICAgdGFibGVEYXRhLnB1c2goW1xuICAgICAgICAnJywgJycsICcnLCAnU09MREUgRklOQUwnLFxuICAgICAgICB7IGNvbnRlbnQ6IHRoaXMuZm9ybWF0TW9uZXkodGhpcy5zb2xkZUZpbmFsKSwgY29sU3BhbjogMiwgc3R5bGVzOiB7IGhhbGlnbjogJ2NlbnRlcicsIGZpbGxDb2xvcjogWzIwMCwgMjMwLCAyNTVdIH0gfVxuICAgICAgXSk7XG5cbiAgICAgIGF1dG9UYWJsZShkb2MsIHtcbiAgICAgICAgaGVhZDogW1snRGF0ZScsICdKb3VybmFsJywgJ07CsCBQacOoY2UnLCAnTGliZWxsw6knLCAnRMOpYml0JywgJ0Nyw6lkaXQnXV0sXG4gICAgICAgIGJvZHk6IHRhYmxlRGF0YSxcbiAgICAgICAgc3RhcnRZOiA0MCxcbiAgICAgICAgdGhlbWU6ICdncmlkJyxcbiAgICAgICAgaGVhZFN0eWxlczogeyBmaWxsQ29sb3I6IFs0MSwgMTI4LCAxODVdLCB0ZXh0Q29sb3I6IDI1NSB9LFxuICAgICAgICBjb2x1bW5TdHlsZXM6IHtcbiAgICAgICAgICA0OiB7IGhhbGlnbjogJ3JpZ2h0JyB9LFxuICAgICAgICAgIDU6IHsgaGFsaWduOiAncmlnaHQnIH1cbiAgICAgICAgfSxcbiAgICAgICAgZGlkUGFyc2VDZWxsOiBmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgICAgIC8vIFN0eWxlIHRvdGFsIHJvd1xuICAgICAgICAgIGlmIChkYXRhLnJvdy5pbmRleCA9PT0gdGFibGVEYXRhLmxlbmd0aCAtIDIpIHtcbiAgICAgICAgICAgIGRhdGEuY2VsbC5zdHlsZXMuZm9udFN0eWxlID0gJ2JvbGQnO1xuICAgICAgICAgICAgZGF0YS5jZWxsLnN0eWxlcy5maWxsQ29sb3IgPSBbMjQwLCAyNDAsIDI0MF07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgZG9jLnNhdmUoYGdyYW5kbGl2cmVfJHt0aGlzLmNvbXB0ZX1fJHt0aGlzLmRhdGVEZWJ1dH1fJHt0aGlzLmRhdGVGaW59LnBkZmApO1xuICAgICAgdGhpcy5leHBvcnRpbmcgPSBmYWxzZTtcbiAgICB9XG4gIH1cbn07XG48L3NjcmlwdD5cblxuPHN0eWxlIHNjb3BlZD5cbi52LWRhdGEtdGFibGUgOmRlZXAodGgpIHtcbiAgZm9udC13ZWlnaHQ6IGJvbGQgIWltcG9ydGFudDtcbiAgZm9udC1zaXplOiAxNHB4ICFpbXBvcnRhbnQ7XG59XG48L3N0eWxlPlxuIiwiPHRlbXBsYXRlPlxuICA8di1jb250YWluZXIgZmx1aWQ+XG4gICAgPHYtY2FyZD5cbiAgICAgIDx2LWNhcmQtdGl0bGU+XG4gICAgICAgIDx2LWljb24gbGVmdCBjb2xvcj1cInByaW1hcnlcIj5tZGktc2NhbGUtYmFsYW5jZTwvdi1pY29uPlxuICAgICAgICB7eyAkdCgnQmFsYW5jZSBHw6luw6lyYWxlJykgfX1cbiAgICAgICAgPHYtc3BhY2VyPjwvdi1zcGFjZXI+XG5cbiAgICAgICAgPCEtLSBEYXRlIEZpbHRlcnMgLS0+XG4gICAgICAgIDx2LW1lbnUgdi1tb2RlbD1cIm1lbnVEYXRlRGVidXRcIiA6Y2xvc2Utb24tY29udGVudC1jbGljaz1cImZhbHNlXCIgOm51ZGdlLXJpZ2h0PVwiNDBcIiB0cmFuc2l0aW9uPVwic2NhbGUtdHJhbnNpdGlvblwiXG4gICAgICAgICAgb2Zmc2V0LXkgbWluLXdpZHRoPVwiYXV0b1wiPlxuICAgICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6YWN0aXZhdG9yPVwieyBvbiwgYXR0cnMgfVwiPlxuICAgICAgICAgICAgPHYtdGV4dC1maWVsZCB2LW1vZGVsPVwiZGF0ZURlYnV0XCIgOmxhYmVsPVwiJHQoJ0RhdGUgRMOpYnV0JylcIiBwcmVwZW5kLWljb249XCJtZGktY2FsZW5kYXJcIiByZWFkb25seVxuICAgICAgICAgICAgICB2LWJpbmQ9XCJhdHRyc1wiIHYtb249XCJvblwiIGRlbnNlIG91dGxpbmVkIGhpZGUtZGV0YWlscyBjbGFzcz1cIm1yLTJcIiBzdHlsZT1cIm1heC13aWR0aDogMTUwcHhcIj48L3YtdGV4dC1maWVsZD5cbiAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICAgIDx2LWRhdGUtcGlja2VyIHYtbW9kZWw9XCJkYXRlRGVidXRcIiBAaW5wdXQ9XCJtZW51RGF0ZURlYnV0ID0gZmFsc2VcIj48L3YtZGF0ZS1waWNrZXI+XG4gICAgICAgIDwvdi1tZW51PlxuXG4gICAgICAgIDx2LW1lbnUgdi1tb2RlbD1cIm1lbnVEYXRlRmluXCIgOmNsb3NlLW9uLWNvbnRlbnQtY2xpY2s9XCJmYWxzZVwiIDpudWRnZS1yaWdodD1cIjQwXCIgdHJhbnNpdGlvbj1cInNjYWxlLXRyYW5zaXRpb25cIlxuICAgICAgICAgIG9mZnNldC15IG1pbi13aWR0aD1cImF1dG9cIj5cbiAgICAgICAgICA8dGVtcGxhdGUgdi1zbG90OmFjdGl2YXRvcj1cInsgb24sIGF0dHJzIH1cIj5cbiAgICAgICAgICAgIDx2LXRleHQtZmllbGQgdi1tb2RlbD1cImRhdGVGaW5cIiA6bGFiZWw9XCIkdCgnRGF0ZSBGaW4nKVwiIHByZXBlbmQtaWNvbj1cIm1kaS1jYWxlbmRhclwiIHJlYWRvbmx5IHYtYmluZD1cImF0dHJzXCJcbiAgICAgICAgICAgICAgdi1vbj1cIm9uXCIgZGVuc2Ugb3V0bGluZWQgaGlkZS1kZXRhaWxzIGNsYXNzPVwibXItMlwiIHN0eWxlPVwibWF4LXdpZHRoOiAxNTBweFwiPjwvdi10ZXh0LWZpZWxkPlxuICAgICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgICAgPHYtZGF0ZS1waWNrZXIgdi1tb2RlbD1cImRhdGVGaW5cIiBAaW5wdXQ9XCJtZW51RGF0ZUZpbiA9IGZhbHNlXCI+PC92LWRhdGUtcGlja2VyPlxuICAgICAgICA8L3YtbWVudT5cblxuICAgICAgICA8di1idG4gY29sb3I9XCJwcmltYXJ5XCIgQGNsaWNrPVwiZmV0Y2hEYXRhXCIgOmxvYWRpbmc9XCJsb2FkaW5nXCIgY2xhc3M9XCJtci0yXCI+XG4gICAgICAgICAgPHYtaWNvbiBsZWZ0Pm1kaS1yZWZyZXNoPC92LWljb24+XG4gICAgICAgICAge3sgJHQoJ0FjdHVhbGlzZXInKSB9fVxuICAgICAgICA8L3YtYnRuPlxuXG4gICAgICAgIDwhLS0gQWNjb3VudGluZyBMaW5rIE1hbmFnZXIgQnV0dG9uIC0tPlxuICAgICAgICA8di1idG4gY29sb3I9XCJvcmFuZ2UgZGFya2VuLTJcIiBkYXJrIEBjbGljaz1cInNob3dMaW5rTWFuYWdlciA9IHRydWVcIiBjbGFzcz1cIm1yLTJcIj5cbiAgICAgICAgICA8di1pY29uIGxlZnQ+bWRpLWxpbmstdmFyaWFudDwvdi1pY29uPlxuICAgICAgICAgIHt7ICR0KCdHZXN0aW9uIGRlcyBMaWFpc29ucycpIH19XG4gICAgICAgIDwvdi1idG4+XG5cbiAgICAgICAgPCEtLSBQREYgRXhwb3J0IEJ1dHRvbiAtLT5cbiAgICAgICAgPHYtYnRuIGNvbG9yPVwicmVkIGRhcmtlbi0yXCIgZGFyayBAY2xpY2s9XCJleHBvcnRQZGZcIiA6bG9hZGluZz1cImV4cG9ydGluZ1wiIDpkaXNhYmxlZD1cIiFpdGVtcy5sZW5ndGhcIj5cbiAgICAgICAgICA8di1pY29uIGxlZnQ+bWRpLWZpbGUtcGRmLWJveDwvdi1pY29uPlxuICAgICAgICAgIHt7ICR0KCdUw6lsw6ljaGFyZ2VyIFBERicpIH19XG4gICAgICAgIDwvdi1idG4+XG4gICAgICA8L3YtY2FyZC10aXRsZT5cblxuICAgICAgPHYtZGF0YS10YWJsZSA6aGVhZGVycz1cImhlYWRlcnNcIiA6aXRlbXM9XCJpdGVtc1wiIDpsb2FkaW5nPVwibG9hZGluZ1wiIDppdGVtcy1wZXItcGFnZT1cIjUwXCIgY2xhc3M9XCJlbGV2YXRpb24tMVwiPlxuICAgICAgICA8dGVtcGxhdGUgdi1zbG90Oml0ZW0uZGViaXQ9XCJ7IGl0ZW0gfVwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9udC13ZWlnaHQtYm9sZCBncmVlbi0tdGV4dFwiIHYtaWY9XCJpdGVtLmRlYml0ID4gMFwiPlxuICAgICAgICAgICAge3sgZm9ybWF0TW9uZXkoaXRlbS5kZWJpdCkgfX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPHNwYW4gdi1lbHNlPi08L3NwYW4+XG4gICAgICAgIDwvdGVtcGxhdGU+XG5cbiAgICAgICAgPHRlbXBsYXRlIHYtc2xvdDppdGVtLmNyZWRpdD1cInsgaXRlbSB9XCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJmb250LXdlaWdodC1ib2xkIHJlZC0tdGV4dFwiIHYtaWY9XCJpdGVtLmNyZWRpdCA+IDBcIj5cbiAgICAgICAgICAgIHt7IGZvcm1hdE1vbmV5KGl0ZW0uY3JlZGl0KSB9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiB2LWVsc2U+LTwvc3Bhbj5cbiAgICAgICAgPC90ZW1wbGF0ZT5cblxuICAgICAgICA8dGVtcGxhdGUgdi1zbG90Oml0ZW0uc29sZGU9XCJ7IGl0ZW0gfVwiPlxuICAgICAgICAgIDxzcGFuIDpjbGFzcz1cIml0ZW0uc29sZGUgPj0gMCA/ICdncmVlbi0tdGV4dCcgOiAncmVkLS10ZXh0J1wiIGNsYXNzPVwiZm9udC13ZWlnaHQtYm9sZFwiPlxuICAgICAgICAgICAge3sgZm9ybWF0TW9uZXkoTWF0aC5hYnMoaXRlbS5zb2xkZSkpIH19IHt7IGl0ZW0uc29sZGUgPj0gMCA/ICcoRCknIDogJyhDKScgfX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvdGVtcGxhdGU+XG5cbiAgICAgICAgPHRlbXBsYXRlIHYtc2xvdDpib2R5LmFwcGVuZD5cbiAgICAgICAgICA8dHIgY2xhc3M9XCJmb250LXdlaWdodC1ibGFjayAgbGlnaHRlbi0zXCI+XG4gICAgICAgICAgICA8dGQgY29sc3Bhbj1cIjJcIiBjbGFzcz1cInRleHQtcmlnaHRcIj57eyAkdCgnVE9UQUwnKSB9fTwvdGQ+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJncmVlbi0tdGV4dFwiPnt7IGZvcm1hdE1vbmV5KHRvdGFsRGViaXQpIH19PC90ZD5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cInJlZC0tdGV4dFwiPnt7IGZvcm1hdE1vbmV5KHRvdGFsQ3JlZGl0KSB9fTwvdGQ+XG4gICAgICAgICAgICA8dGQ+PC90ZD5cbiAgICAgICAgICA8L3RyPlxuICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgPC92LWRhdGEtdGFibGU+XG4gICAgPC92LWNhcmQ+XG5cbiAgICA8IS0tIEFjY291bnRpbmcgTGluayBNYW5hZ2VyIERpYWxvZyAtLT5cbiAgICA8QWNjb3VudGluZ0xpbmtNYW5hZ2VyIHYtbW9kZWw9XCJzaG93TGlua01hbmFnZXJcIiBAdXBkYXRlZD1cImZldGNoRGF0YVwiIC8+XG4gIDwvdi1jb250YWluZXI+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0PlxuaW1wb3J0IGF4aW9zIGZyb20gXCJheGlvc1wiO1xuaW1wb3J0IGpzUERGIGZyb20gXCJqc3BkZlwiO1xuaW1wb3J0IGF1dG9UYWJsZSBmcm9tIFwianNwZGYtYXV0b3RhYmxlXCI7XG5pbXBvcnQgQWNjb3VudGluZ0xpbmtNYW5hZ2VyIGZyb20gXCIuL0FjY291bnRpbmdMaW5rTWFuYWdlci52dWVcIjtcblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiBcIkJhbGFuY2VcIixcbiAgY29tcG9uZW50czoge1xuICAgIEFjY291bnRpbmdMaW5rTWFuYWdlcixcbiAgfSxcbiAgZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbG9hZGluZzogZmFsc2UsXG4gICAgICBleHBvcnRpbmc6IGZhbHNlLFxuICAgICAgc2hvd0xpbmtNYW5hZ2VyOiBmYWxzZSxcbiAgICAgIGl0ZW1zOiBbXSxcbiAgICAgIGRhdGVEZWJ1dDogbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpICsgJy0wMS0wMScsXG4gICAgICBkYXRlRmluOiBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCkgKyAnLTEyLTMxJyxcbiAgICAgIG1lbnVEYXRlRGVidXQ6IGZhbHNlLFxuICAgICAgbWVudURhdGVGaW46IGZhbHNlLFxuICAgICAgaGVhZGVyczogW1xuICAgICAgICB7IHRleHQ6ICdDb21wdGUnLCB2YWx1ZTogJ2NvbXB0ZScgfSxcbiAgICAgICAgeyB0ZXh0OiAnSW50aXR1bMOpJywgdmFsdWU6ICdpbnRpdHVsZScgfSxcbiAgICAgICAgeyB0ZXh0OiAnRMOpYml0JywgdmFsdWU6ICdkZWJpdCcsIGFsaWduOiAncmlnaHQnIH0sXG4gICAgICAgIHsgdGV4dDogJ0Nyw6lkaXQnLCB2YWx1ZTogJ2NyZWRpdCcsIGFsaWduOiAncmlnaHQnIH0sXG4gICAgICAgIHsgdGV4dDogJ1NvbGRlJywgdmFsdWU6ICdzb2xkZScsIGFsaWduOiAncmlnaHQnIH0sXG4gICAgICBdXG4gICAgfTtcbiAgfSxcbiAgY29tcHV0ZWQ6IHtcbiAgICBCYXNlX3VybF93ZWIoKSB7XG4gICAgICByZXR1cm4gdGhpcy4kc3RvcmUuZ2V0dGVyc1tcImdldF9CYXNlX3VybFwiXTtcbiAgICB9LFxuICAgIHRvdGFsRGViaXQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5pdGVtcy5yZWR1Y2UoKHN1bSwgaXRlbSkgPT4gc3VtICsgKHBhcnNlRmxvYXQoaXRlbS5kZWJpdCkgfHwgMCksIDApO1xuICAgIH0sXG4gICAgdG90YWxDcmVkaXQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5pdGVtcy5yZWR1Y2UoKHN1bSwgaXRlbSkgPT4gc3VtICsgKHBhcnNlRmxvYXQoaXRlbS5jcmVkaXQpIHx8IDApLCAwKTtcbiAgICB9XG4gIH0sXG4gIG1vdW50ZWQoKSB7XG4gICAgdGhpcy5mZXRjaERhdGEoKTtcbiAgfSxcbiAgbWV0aG9kczoge1xuICAgIGZvcm1hdE1vbmV5KHZhbHVlKSB7XG4gICAgICByZXR1cm4gcGFyc2VGbG9hdCh2YWx1ZSkudG9Mb2NhbGVTdHJpbmcoJ2ZyLU1BJywgeyBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDIsIG1heGltdW1GcmFjdGlvbkRpZ2l0czogMiB9KSArICcgREgnO1xuICAgIH0sXG4gICAgZmV0Y2hEYXRhKCkge1xuICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgICAgZGF0ZV9kZWJ1dDogdGhpcy5kYXRlRGVidXQsXG4gICAgICAgIGRhdGVfZmluOiB0aGlzLmRhdGVGaW5cbiAgICAgIH07XG5cbiAgICAgIGF4aW9zLmdldCh0aGlzLkJhc2VfdXJsX3dlYiArICcvY29tcHRhYmlsaXRlL2JhbGFuY2UvYXBpJywge1xuICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgQXV0aG9yaXphdGlvbjogbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJKV1RUb2tlblwiKSxcbiAgICAgICAgfSxcbiAgICAgICAgcGFyYW1zOiBwYXJhbXNcbiAgICAgIH0pXG4gICAgICAgIC50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAvLyBNYXAgaXRlbXMgdG8gbWF0Y2ggZXhwZWN0ZWQgc3RydWN0dXJlXG4gICAgICAgICAgdGhpcy5pdGVtcyA9IChyZXNwb25zZS5kYXRhLmRhdGFTZXQgfHwgW10pLm1hcChpdGVtID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIC4uLml0ZW0sXG4gICAgICAgICAgICAgIGNvbXB0ZTogaXRlbS5jb21wdGVfY29kZSB8fCAnTi9BJyxcbiAgICAgICAgICAgICAgaW50aXR1bGU6IGl0ZW0uY29tcHRlX2xpYmVsbGUgfHwgJ04vQScsXG4gICAgICAgICAgICAgIGRlYml0OiBpdGVtLnRvdGFsX2RlYml0IHx8IDAsXG4gICAgICAgICAgICAgIGNyZWRpdDogaXRlbS50b3RhbF9jcmVkaXQgfHwgMCxcbiAgICAgICAgICAgICAgc29sZGU6IGl0ZW0uc29sZGUgfHwgMFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKGVycm9yID0+IHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLiRzdG9yZS5kaXNwYXRjaChcInNob3dTbmFja2JhclwiLCB7XG4gICAgICAgICAgICB0ZXh0OiBcIkVycmV1ciBsb3JzIGR1IGNoYXJnZW1lbnQgZGVzIGRvbm7DqWVzXCIsXG4gICAgICAgICAgICBjb2xvcjogXCJlcnJvclwiXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH0sXG4gICAgZXhwb3J0UGRmKCkge1xuICAgICAgdGhpcy5leHBvcnRpbmcgPSB0cnVlO1xuICAgICAgY29uc3QgZG9jID0gbmV3IGpzUERGKCk7XG5cbiAgICAgIC8vIEhlYWRlclxuICAgICAgZG9jLnNldEZvbnRTaXplKDE4KTtcbiAgICAgIGRvYy50ZXh0KFwiQmFsYW5jZSBHw6luw6lyYWxlXCIsIDE0LCAxNSk7XG5cbiAgICAgIGRvYy5zZXRGb250U2l6ZSgxMCk7XG4gICAgICBkb2MudGV4dChgUMOpcmlvZGU6ICR7dGhpcy5kYXRlRGVidXR9IGF1ICR7dGhpcy5kYXRlRmlufWAsIDE0LCAyMik7XG4gICAgICBkb2MudGV4dChgRGF0ZSBkJ2ltcHJlc3Npb246ICR7bmV3IERhdGUoKS50b0xvY2FsZURhdGVTdHJpbmcoKX1gLCAxNCwgMjcpO1xuXG4gICAgICBjb25zdCB0YWJsZURhdGEgPSB0aGlzLml0ZW1zLm1hcChpdGVtID0+IFtcbiAgICAgICAgaXRlbS5jb21wdGUsXG4gICAgICAgIGl0ZW0uaW50aXR1bGUsXG4gICAgICAgIHRoaXMuZm9ybWF0TW9uZXkoaXRlbS5kZWJpdCksXG4gICAgICAgIHRoaXMuZm9ybWF0TW9uZXkoaXRlbS5jcmVkaXQpLFxuICAgICAgICB0aGlzLmZvcm1hdE1vbmV5KE1hdGguYWJzKGl0ZW0uc29sZGUpKSArIChpdGVtLnNvbGRlID49IDAgPyAnIChEKScgOiAnIChDKScpXG4gICAgICBdKTtcblxuICAgICAgLy8gQWRkIFRvdGFsIFJvd1xuICAgICAgdGFibGVEYXRhLnB1c2goW1xuICAgICAgICAnJywgJ1RPVEFMJyxcbiAgICAgICAgdGhpcy5mb3JtYXRNb25leSh0aGlzLnRvdGFsRGViaXQpLFxuICAgICAgICB0aGlzLmZvcm1hdE1vbmV5KHRoaXMudG90YWxDcmVkaXQpLFxuICAgICAgICAnJ1xuICAgICAgXSk7XG5cbiAgICAgIGF1dG9UYWJsZShkb2MsIHtcbiAgICAgICAgaGVhZDogW1snQ29tcHRlJywgJ0ludGl0dWzDqScsICdEw6liaXQnLCAnQ3LDqWRpdCcsICdTb2xkZSddXSxcbiAgICAgICAgYm9keTogdGFibGVEYXRhLFxuICAgICAgICBzdGFydFk6IDM1LFxuICAgICAgICB0aGVtZTogJ2dyaWQnLFxuICAgICAgICBoZWFkU3R5bGVzOiB7IGZpbGxDb2xvcjogWzQxLCAxMjgsIDE4NV0sIHRleHRDb2xvcjogMjU1IH0sXG4gICAgICAgIGNvbHVtblN0eWxlczoge1xuICAgICAgICAgIDI6IHsgaGFsaWduOiAncmlnaHQnIH0sXG4gICAgICAgICAgMzogeyBoYWxpZ246ICdyaWdodCcgfSxcbiAgICAgICAgICA0OiB7IGhhbGlnbjogJ3JpZ2h0JyB9XG4gICAgICAgIH0sXG4gICAgICAgIGRpZFBhcnNlQ2VsbDogZnVuY3Rpb24gKGRhdGEpIHtcbiAgICAgICAgICAvLyBTdHlsZSB0b3RhbCByb3dcbiAgICAgICAgICBpZiAoZGF0YS5yb3cuaW5kZXggPT09IHRhYmxlRGF0YS5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICBkYXRhLmNlbGwuc3R5bGVzLmZvbnRTdHlsZSA9ICdib2xkJztcbiAgICAgICAgICAgIGRhdGEuY2VsbC5zdHlsZXMuZmlsbENvbG9yID0gWzI0MCwgMjQwLCAyNDBdO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIGRvYy5zYXZlKGBiYWxhbmNlXyR7dGhpcy5kYXRlRGVidXR9XyR7dGhpcy5kYXRlRmlufS5wZGZgKTtcbiAgICAgIHRoaXMuZXhwb3J0aW5nID0gZmFsc2U7XG4gICAgfVxuICB9XG59O1xuPC9zY3JpcHQ+XG5cbjxzdHlsZSBzY29wZWQ+XG4udi1kYXRhLXRhYmxlIDpkZWVwKHRoKSB7XG4gIGZvbnQtd2VpZ2h0OiBib2xkICFpbXBvcnRhbnQ7XG4gIGZvbnQtc2l6ZTogMTRweCAhaW1wb3J0YW50O1xufVxuPC9zdHlsZT5cbiIsIjx0ZW1wbGF0ZT5cbiAgPHYtY29udGFpbmVyIGZsdWlkPlxuICAgIDx2LWNhcmQ+XG4gICAgICA8di1jYXJkLXRpdGxlIGNsYXNzPVwicHJpbWFyeSB3aGl0ZS0tdGV4dFwiPlxuICAgICAgICA8di1pY29uIGxlZnQgY29sb3I9XCJ3aGl0ZVwiPm1kaS1zY2FsZS1iYWxhbmNlPC92LWljb24+XG4gICAgICAgIHt7ICR0KCdCaWxhbiBDb21wdGFibGUnKSB9fVxuICAgICAgICA8di1zcGFjZXI+PC92LXNwYWNlcj5cblxuICAgICAgICA8IS0tIFllYXIgRmlsdGVyIC0tPlxuICAgICAgICA8di10ZXh0LWZpZWxkIHYtbW9kZWw9XCJleGVyY2ljZVwiIDpsYWJlbD1cIiR0KCdFeGVyY2ljZScpXCIgdHlwZT1cIm51bWJlclwiIGRlbnNlIG91dGxpbmVkIGRhcmsgaGlkZS1kZXRhaWxzXG4gICAgICAgICAgY2xhc3M9XCJtci0yXCIgc3R5bGU9XCJtYXgtd2lkdGg6IDEyMHB4XCI+PC92LXRleHQtZmllbGQ+XG5cbiAgICAgICAgPHYtYnRuIGNvbG9yPVwid2hpdGVcIiBvdXRsaW5lZCBAY2xpY2s9XCJmZXRjaERhdGFcIiA6bG9hZGluZz1cImxvYWRpbmdcIiBjbGFzcz1cIm1yLTJcIj5cbiAgICAgICAgICA8di1pY29uIGxlZnQ+bWRpLXJlZnJlc2g8L3YtaWNvbj5cbiAgICAgICAgICB7eyAkdCgnQWN0dWFsaXNlcicpIH19XG4gICAgICAgIDwvdi1idG4+XG5cbiAgICAgICAgPCEtLSBQREYgRXhwb3J0IEJ1dHRvbiAtLT5cbiAgICAgICAgPHYtYnRuIGNvbG9yPVwicmVkIGRhcmtlbi0yXCIgQGNsaWNrPVwiZXhwb3J0UGRmXCIgOmxvYWRpbmc9XCJleHBvcnRpbmdcIiA6ZGlzYWJsZWQ9XCIhaXRlbXMuYWN0aWZcIj5cbiAgICAgICAgICA8di1pY29uIGxlZnQ+bWRpLWZpbGUtcGRmLWJveDwvdi1pY29uPlxuICAgICAgICAgIHt7ICR0KCdQREYnKSB9fVxuICAgICAgICA8L3YtYnRuPlxuICAgICAgPC92LWNhcmQtdGl0bGU+XG5cbiAgICAgIDwhLS0gQmFsYW5jZSBTdW1tYXJ5IENhcmQgLS0+XG4gICAgICA8di1jYXJkLXRleHQgdi1pZj1cIml0ZW1zLmFjdGlmXCI+XG4gICAgICAgIDx2LXJvdyBjbGFzcz1cIm1iLTRcIj5cbiAgICAgICAgICA8di1jb2wgY29scz1cIjEyXCIgbWQ9XCI0XCI+XG4gICAgICAgICAgICA8di1jYXJkIGNvbG9yPVwiZ3JlZW4gbGlnaHRlbi01XCIgZWxldmF0aW9uPVwiMlwiPlxuICAgICAgICAgICAgICA8di1jYXJkLXRleHQgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWg2IGdyZWVuLS10ZXh0IHRleHQtLWRhcmtlbi0yXCI+VE9UQUwgQUNUSUY8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1oNCBmb250LXdlaWdodC1ib2xkIGdyZWVuLS10ZXh0IHRleHQtLWRhcmtlbi0zXCI+XG4gICAgICAgICAgICAgICAgICB7eyBmb3JtYXRNb25leShpdGVtcy50b3RhbF9hY3RpZikgfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC92LWNhcmQtdGV4dD5cbiAgICAgICAgICAgIDwvdi1jYXJkPlxuICAgICAgICAgIDwvdi1jb2w+XG5cbiAgICAgICAgICA8di1jb2wgY29scz1cIjEyXCIgbWQ9XCI0XCI+XG4gICAgICAgICAgICA8di1jYXJkIGNvbG9yPVwiYmx1ZSBsaWdodGVuLTVcIiBlbGV2YXRpb249XCIyXCI+XG4gICAgICAgICAgICAgIDx2LWNhcmQtdGV4dCBjbGFzcz1cInRleHQtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtaDYgYmx1ZS0tdGV4dCB0ZXh0LS1kYXJrZW4tMlwiPlRPVEFMIFBBU1NJRjwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWg0IGZvbnQtd2VpZ2h0LWJvbGQgYmx1ZS0tdGV4dCB0ZXh0LS1kYXJrZW4tM1wiPlxuICAgICAgICAgICAgICAgICAge3sgZm9ybWF0TW9uZXkoTWF0aC5hYnMoaXRlbXMudG90YWxfcGFzc2lmKSkgfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC92LWNhcmQtdGV4dD5cbiAgICAgICAgICAgIDwvdi1jYXJkPlxuICAgICAgICAgIDwvdi1jb2w+XG5cbiAgICAgICAgICA8di1jb2wgY29scz1cIjEyXCIgbWQ9XCI0XCI+XG4gICAgICAgICAgICA8di1jYXJkIDpjb2xvcj1cIml0ZW1zLnJlc3VsdGF0ID49IDAgPyAndGVhbCBsaWdodGVuLTUnIDogJ3JlZCBsaWdodGVuLTUnXCIgZWxldmF0aW9uPVwiMlwiPlxuICAgICAgICAgICAgICA8di1jYXJkLXRleHQgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWg2XCJcbiAgICAgICAgICAgICAgICAgIDpjbGFzcz1cIml0ZW1zLnJlc3VsdGF0ID49IDAgPyAndGVhbC0tdGV4dCB0ZXh0LS1kYXJrZW4tMicgOiAncmVkLS10ZXh0IHRleHQtLWRhcmtlbi0yJ1wiPlxuICAgICAgICAgICAgICAgICAge3sgaXRlbXMucmVzdWx0YXQgPj0gMCA/ICdCw4lOw4lGSUNFJyA6ICdQRVJURScgfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1oNCBmb250LXdlaWdodC1ib2xkXCJcbiAgICAgICAgICAgICAgICAgIDpjbGFzcz1cIml0ZW1zLnJlc3VsdGF0ID49IDAgPyAndGVhbC0tdGV4dCB0ZXh0LS1kYXJrZW4tMycgOiAncmVkLS10ZXh0IHRleHQtLWRhcmtlbi0zJ1wiPlxuICAgICAgICAgICAgICAgICAge3sgZm9ybWF0TW9uZXkoTWF0aC5hYnMoaXRlbXMucmVzdWx0YXQgfHwgMCkpIH19XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvdi1jYXJkLXRleHQ+XG4gICAgICAgICAgICA8L3YtY2FyZD5cbiAgICAgICAgICA8L3YtY29sPlxuICAgICAgICA8L3Ytcm93PlxuXG4gICAgICAgIDx2LXJvdz5cbiAgICAgICAgICA8IS0tIEFDVElGIChMZWZ0IFNpZGUpIC0tPlxuICAgICAgICAgIDx2LWNvbCBjb2xzPVwiMTJcIiBtZD1cIjZcIj5cbiAgICAgICAgICAgIDx2LWNhcmQgb3V0bGluZWQgY2xhc3M9XCJtYi0yXCI+XG4gICAgICAgICAgICAgIDx2LWNhcmQtdGl0bGUgY2xhc3M9XCJzdWJ0aXRsZS0xIGZvbnQtd2VpZ2h0LWJvbGQgd2hpdGUtLXRleHQgZ3JlZW4gZGFya2VuLTFcIj5cbiAgICAgICAgICAgICAgICA8di1pY29uIGxlZnQgY29sb3I9XCJ3aGl0ZVwiPm1kaS10cmVuZGluZy11cDwvdi1pY29uPlxuICAgICAgICAgICAgICAgIEFDVElGICjYp9mE2KPYtdmI2YQpXG4gICAgICAgICAgICAgIDwvdi1jYXJkLXRpdGxlPlxuXG4gICAgICAgICAgICAgIDx2LWNhcmQtdGV4dCBjbGFzcz1cInBhLTBcIj5cbiAgICAgICAgICAgICAgICA8di1zaW1wbGUtdGFibGUgZGVuc2U+XG4gICAgICAgICAgICAgICAgICA8dGVtcGxhdGUgdi1zbG90OmRlZmF1bHQ+XG4gICAgICAgICAgICAgICAgICAgIDx0aGVhZD5cbiAgICAgICAgICAgICAgICAgICAgICA8dHIgY2xhc3M9XCIgbGlnaHRlbi0zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJ0ZXh0LWxlZnRcIiBzdHlsZT1cIndpZHRoOiAxNSVcIj5Db21wdGU8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwidGV4dC1sZWZ0XCIgc3R5bGU9XCJ3aWR0aDogMzUlXCI+TGliZWxsw6k8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwidGV4dC1yaWdodFwiIHN0eWxlPVwid2lkdGg6IDE2JVwiPkTDqWJpdDwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJ0ZXh0LXJpZ2h0XCIgc3R5bGU9XCJ3aWR0aDogMTYlXCI+Q3LDqWRpdDwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJ0ZXh0LXJpZ2h0XCIgc3R5bGU9XCJ3aWR0aDogMTglXCI+U29sZGU8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+XG4gICAgICAgICAgICAgICAgICAgIDx0Ym9keT5cbiAgICAgICAgICAgICAgICAgICAgICA8IS0tIEdyb3VwZWQgYnkgQWNjb3VudCBDbGFzcyAtLT5cbiAgICAgICAgICAgICAgICAgICAgICA8dGVtcGxhdGUgdi1mb3I9XCIoZ3JvdXAsIGNsYXNzTmFtZSkgaW4gZ3JvdXBlZEFjdGlmXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIENsYXNzIEhlYWRlciAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ciBjbGFzcz1cIiBsaWdodGVuLTRcIiA6a2V5PVwiJ2NsYXNzX2hlYWRlcl9hY3RpZl8nICsgY2xhc3NOYW1lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj1cIjVcIiBjbGFzcz1cImZvbnQtd2VpZ2h0LWJvbGQgcGEtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2LWljb24gc21hbGwgY2xhc3M9XCJtci0xXCI+bWRpLWNoZXZyb24tcmlnaHQ8L3YtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBnZXRDbGFzc0xhYmVsKGNsYXNzTmFtZSkgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gQWNjb3VudHMgaW4gdGhpcyBjbGFzcyAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ciB2LWZvcj1cIihpdGVtLCBpbmRleCkgaW4gZ3JvdXBcIiA6a2V5PVwiJ2FjdGlmXycgKyBjbGFzc05hbWUgKyAnXycgKyBpdGVtLmNvbXB0ZV9jb2RlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJob3ZlcmFibGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZm9udC13ZWlnaHQtYm9sZCB0ZXh0LS1kYXJrZW4tMlwiPnt7IGl0ZW0uY29tcHRlX2NvZGUgfX08L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LWNhcHRpb25cIj57eyBpdGVtLmNvbXB0ZV9saWJlbGxlIH19PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1yaWdodCB0ZXh0LWJvZHktMlwiPnt7IGZvcm1hdE1vbmV5KGl0ZW0udG90YWxfZGViaXQpIH19PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1yaWdodCB0ZXh0LWJvZHktMlwiPnt7IGZvcm1hdE1vbmV5KGl0ZW0udG90YWxfY3JlZGl0KSB9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRleHQtcmlnaHQgZm9udC13ZWlnaHQtbWVkaXVtIGdyZWVuLS10ZXh0IHRleHQtLWRhcmtlbi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZm9ybWF0TW9uZXkoaXRlbS5zb2xkZSkgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cblxuICAgICAgICAgICAgICAgICAgICAgIDwhLS0gVG90YWwgUm93IC0tPlxuICAgICAgICAgICAgICAgICAgICAgIDx0ciBjbGFzcz1cImdyZWVuIGRhcmtlbi0xIHdoaXRlLS10ZXh0IGZvbnQtd2VpZ2h0LWJvbGRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPVwiNFwiIGNsYXNzPVwidGV4dC1yaWdodFwiPlRPVEFMIEFDVElGPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRleHQtcmlnaHQgdGV4dC1oNlwiPnt7IGZvcm1hdE1vbmV5KGl0ZW1zLnRvdGFsX2FjdGlmKSB9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgPC90Ym9keT5cbiAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC92LXNpbXBsZS10YWJsZT5cbiAgICAgICAgICAgICAgPC92LWNhcmQtdGV4dD5cbiAgICAgICAgICAgIDwvdi1jYXJkPlxuICAgICAgICAgIDwvdi1jb2w+XG5cbiAgICAgICAgICA8IS0tIFBBU1NJRiAoUmlnaHQgU2lkZSkgLS0+XG4gICAgICAgICAgPHYtY29sIGNvbHM9XCIxMlwiIG1kPVwiNlwiPlxuICAgICAgICAgICAgPHYtY2FyZCBvdXRsaW5lZCBjbGFzcz1cIm1iLTJcIj5cbiAgICAgICAgICAgICAgPHYtY2FyZC10aXRsZSBjbGFzcz1cInN1YnRpdGxlLTEgZm9udC13ZWlnaHQtYm9sZCB3aGl0ZS0tdGV4dCBibHVlIGRhcmtlbi0xXCI+XG4gICAgICAgICAgICAgICAgPHYtaWNvbiBsZWZ0IGNvbG9yPVwid2hpdGVcIj5tZGktdHJlbmRpbmctZG93bjwvdi1pY29uPlxuICAgICAgICAgICAgICAgIFBBU1NJRiAo2KfZhNiu2LXZiNmFKVxuICAgICAgICAgICAgICA8L3YtY2FyZC10aXRsZT5cblxuICAgICAgICAgICAgICA8di1jYXJkLXRleHQgY2xhc3M9XCJwYS0wXCI+XG4gICAgICAgICAgICAgICAgPHYtc2ltcGxlLXRhYmxlIGRlbnNlPlxuICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlIHYtc2xvdDpkZWZhdWx0PlxuICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+XG4gICAgICAgICAgICAgICAgICAgICAgPHRyIGNsYXNzPVwiIGxpZ2h0ZW4tM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwidGV4dC1sZWZ0XCIgc3R5bGU9XCJ3aWR0aDogMTUlXCI+Q29tcHRlPC90aD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRleHQtbGVmdFwiIHN0eWxlPVwid2lkdGg6IDM1JVwiPkxpYmVsbMOpPC90aD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRleHQtcmlnaHRcIiBzdHlsZT1cIndpZHRoOiAxNiVcIj5Ew6liaXQ8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwidGV4dC1yaWdodFwiIHN0eWxlPVwid2lkdGg6IDE2JVwiPkNyw6lkaXQ8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwidGV4dC1yaWdodFwiIHN0eWxlPVwid2lkdGg6IDE4JVwiPlNvbGRlPC90aD5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPlxuICAgICAgICAgICAgICAgICAgICA8dGJvZHk+XG4gICAgICAgICAgICAgICAgICAgICAgPCEtLSBHcm91cGVkIGJ5IEFjY291bnQgQ2xhc3MgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlIHYtZm9yPVwiKGdyb3VwLCBjbGFzc05hbWUpIGluIGdyb3VwZWRQYXNzaWZcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gQ2xhc3MgSGVhZGVyIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRyIGNsYXNzPVwiIGxpZ2h0ZW4tNFwiIDprZXk9XCInY2xhc3NfcGFzc2lmXycgKyBjbGFzc05hbWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49XCI1XCIgY2xhc3M9XCJmb250LXdlaWdodC1ib2xkIHBhLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8di1pY29uIHNtYWxsIGNsYXNzPVwibXItMVwiPm1kaS1jaGV2cm9uLXJpZ2h0PC92LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZ2V0Q2xhc3NMYWJlbChjbGFzc05hbWUpIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEFjY291bnRzIGluIHRoaXMgY2xhc3MgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dHIgdi1mb3I9XCIoaXRlbSwgaW5kZXgpIGluIGdyb3VwXCIgOmtleT1cIidwYXNzaWZfJyArIGl0ZW0uY29tcHRlX2NvZGVcIiBjbGFzcz1cImhvdmVyYWJsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJmb250LXdlaWdodC1ib2xkIHRleHQtLWRhcmtlbi0yXCI+e3sgaXRlbS5jb21wdGVfY29kZSB9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRleHQtY2FwdGlvblwiPnt7IGl0ZW0uY29tcHRlX2xpYmVsbGUgfX08L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LXJpZ2h0IHRleHQtYm9keS0yXCI+e3sgZm9ybWF0TW9uZXkoaXRlbS50b3RhbF9kZWJpdCkgfX08L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LXJpZ2h0IHRleHQtYm9keS0yXCI+e3sgZm9ybWF0TW9uZXkoaXRlbS50b3RhbF9jcmVkaXQpIH19PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1yaWdodCBmb250LXdlaWdodC1tZWRpdW0gYmx1ZS0tdGV4dCB0ZXh0LS1kYXJrZW4tMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGZvcm1hdE1vbmV5KE1hdGguYWJzKGl0ZW0uc29sZGUpKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPlxuXG4gICAgICAgICAgICAgICAgICAgICAgPCEtLSBSw6lzdWx0YXQgUm93IChpZiBwcm9maXQpIC0tPlxuICAgICAgICAgICAgICAgICAgICAgIDx0ciB2LWlmPVwiaXRlbXMucmVzdWx0YXQgJiYgaXRlbXMucmVzdWx0YXQgPiAwXCIgY2xhc3M9XCJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImZvbnQtd2VpZ2h0LWJvbGRcIj4xMTkxPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImZvbnQtd2VpZ2h0LW1lZGl1bVwiPlLDqXN1bHRhdCBuZXQgZGUgbCdleGVyY2ljZSAoQsOpbsOpZmljZSk8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1yaWdodFwiPi08L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1yaWdodFwiPnt7IGZvcm1hdE1vbmV5KGl0ZW1zLnJlc3VsdGF0KSB9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LXJpZ2h0IGZvbnQtd2VpZ2h0LWJvbGQgdGVhbC0tdGV4dCB0ZXh0LS1kYXJrZW4tM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBmb3JtYXRNb25leShpdGVtcy5yZXN1bHRhdCkgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgPC90cj5cblxuICAgICAgICAgICAgICAgICAgICAgIDwhLS0gVG90YWwgUm93IC0tPlxuICAgICAgICAgICAgICAgICAgICAgIDx0ciBjbGFzcz1cImJsdWUgZGFya2VuLTEgd2hpdGUtLXRleHQgZm9udC13ZWlnaHQtYm9sZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49XCI0XCIgY2xhc3M9XCJ0ZXh0LXJpZ2h0XCI+VE9UQUwgUEFTU0lGPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRleHQtcmlnaHQgdGV4dC1oNlwiPnt7IGZvcm1hdE1vbmV5KE1hdGguYWJzKGl0ZW1zLnRvdGFsX3Bhc3NpZikpIH19PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L3Ytc2ltcGxlLXRhYmxlPlxuICAgICAgICAgICAgICA8L3YtY2FyZC10ZXh0PlxuICAgICAgICAgICAgPC92LWNhcmQ+XG4gICAgICAgICAgPC92LWNvbD5cbiAgICAgICAgPC92LXJvdz5cblxuICAgICAgICA8IS0tIEJhbGFuY2UgQ2hlY2sgQWxlcnQgLS0+XG4gICAgICAgIDx2LWFsZXJ0IHYtaWY9XCJNYXRoLmFicyhpdGVtcy50b3RhbF9hY3RpZiAtIGl0ZW1zLnRvdGFsX3Bhc3NpZikgPiAwLjAxXCIgdHlwZT1cImVycm9yXCIgcHJvbWluZW50IGNsYXNzPVwibXQtNFwiPlxuICAgICAgICAgIDx2LXJvdyBhbGlnbj1cImNlbnRlclwiPlxuICAgICAgICAgICAgPHYtY29sIGNsYXNzPVwiZ3Jvd1wiPlxuICAgICAgICAgICAgICA8c3Ryb25nPkTDiVPDiVFVSUxJQlJFIETDiVRFQ1TDiSE8L3N0cm9uZz5cbiAgICAgICAgICAgICAgTGUgYmlsYW4gbidlc3QgcGFzIMOpcXVpbGlicsOpLlxuICAgICAgICAgICAgPC92LWNvbD5cbiAgICAgICAgICAgIDx2LWNvbCBjbGFzcz1cInNocmlua1wiPlxuICAgICAgICAgICAgICA8c3Ryb25nPkRpZmbDqXJlbmNlOiB7eyBmb3JtYXRNb25leShNYXRoLmFicyhpdGVtcy50b3RhbF9hY3RpZiAtIGl0ZW1zLnRvdGFsX3Bhc3NpZikpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICA8L3YtY29sPlxuICAgICAgICAgIDwvdi1yb3c+XG4gICAgICAgIDwvdi1hbGVydD5cblxuICAgICAgICA8IS0tIFN1Y2Nlc3MgQWxlcnQgLS0+XG4gICAgICAgIDx2LWFsZXJ0IHYtZWxzZS1pZj1cIml0ZW1zLmFjdGlmXCIgdHlwZT1cInN1Y2Nlc3NcIiB0ZXh0IGNsYXNzPVwibXQtNFwiPlxuICAgICAgICAgIDx2LWljb24gbGVmdD5tZGktY2hlY2stY2lyY2xlPC92LWljb24+XG4gICAgICAgICAgQmlsYW4gw6lxdWlsaWJyw6k6IEFDVElGID0gUEFTU0lGID0ge3sgZm9ybWF0TW9uZXkoaXRlbXMudG90YWxfYWN0aWYpIH19XG4gICAgICAgIDwvdi1hbGVydD5cbiAgICAgIDwvdi1jYXJkLXRleHQ+XG5cbiAgICAgIDwhLS0gTG9hZGluZyBTdGF0ZSAtLT5cbiAgICAgIDx2LWNhcmQtdGV4dCB2LWlmPVwibG9hZGluZ1wiPlxuICAgICAgICA8di1wcm9ncmVzcy1saW5lYXIgaW5kZXRlcm1pbmF0ZSBjb2xvcj1cInByaW1hcnlcIj48L3YtcHJvZ3Jlc3MtbGluZWFyPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgbXQtNFwiPkNoYXJnZW1lbnQgZW4gY291cnMuLi48L2Rpdj5cbiAgICAgIDwvdi1jYXJkLXRleHQ+XG4gICAgPC92LWNhcmQ+XG4gIDwvdi1jb250YWluZXI+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0PlxuaW1wb3J0IGF4aW9zIGZyb20gXCJheGlvc1wiO1xuaW1wb3J0IGpzUERGIGZyb20gXCJqc3BkZlwiO1xuaW1wb3J0IGF1dG9UYWJsZSBmcm9tIFwianNwZGYtYXV0b3RhYmxlXCI7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbmFtZTogXCJCaWxhblwiLFxuICBkYXRhKCkge1xuICAgIHJldHVybiB7XG4gICAgICBsb2FkaW5nOiBmYWxzZSxcbiAgICAgIGV4cG9ydGluZzogZmFsc2UsXG4gICAgICBpdGVtczoge30sXG4gICAgICBleGVyY2ljZTogbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpLFxuICAgIH07XG4gIH0sXG4gIGNvbXB1dGVkOiB7XG4gICAgQmFzZV91cmxfd2ViKCkge1xuICAgICAgcmV0dXJuIHRoaXMuJHN0b3JlLmdldHRlcnNbXCJnZXRfQmFzZV91cmxcIl07XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIEdyb3VwIEFDVElGIGFjY291bnRzIGJ5IGNsYXNzXG4gICAgICovXG4gICAgZ3JvdXBlZEFjdGlmKCkge1xuICAgICAgaWYgKCF0aGlzLml0ZW1zLmFjdGlmKSByZXR1cm4ge307XG5cbiAgICAgIGNvbnN0IGdyb3VwcyA9IHt9O1xuICAgICAgdGhpcy5pdGVtcy5hY3RpZi5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICBjb25zdCBjbGFzc2UgPSBpdGVtLmNvbXB0ZV9jb2RlLmNoYXJBdCgwKTtcbiAgICAgICAgaWYgKCFncm91cHNbY2xhc3NlXSkge1xuICAgICAgICAgIGdyb3Vwc1tjbGFzc2VdID0gW107XG4gICAgICAgIH1cbiAgICAgICAgZ3JvdXBzW2NsYXNzZV0ucHVzaChpdGVtKTtcbiAgICAgIH0pO1xuXG4gICAgICAvLyBTb3J0IGJ5IGNsYXNzIG51bWJlclxuICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKGdyb3VwcylcbiAgICAgICAgLnNvcnQoKVxuICAgICAgICAucmVkdWNlKChvYmosIGtleSkgPT4ge1xuICAgICAgICAgIG9ialtrZXldID0gZ3JvdXBzW2tleV07XG4gICAgICAgICAgcmV0dXJuIG9iajtcbiAgICAgICAgfSwge30pO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBHcm91cCBQQVNTSUYgYWNjb3VudHMgYnkgY2xhc3NcbiAgICAgKi9cbiAgICBncm91cGVkUGFzc2lmKCkge1xuICAgICAgaWYgKCF0aGlzLml0ZW1zLnBhc3NpZikgcmV0dXJuIHt9O1xuXG4gICAgICBjb25zdCBncm91cHMgPSB7fTtcbiAgICAgIHRoaXMuaXRlbXMucGFzc2lmLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgIGNvbnN0IGNsYXNzZSA9IGl0ZW0uY29tcHRlX2NvZGUuY2hhckF0KDApO1xuICAgICAgICBpZiAoIWdyb3Vwc1tjbGFzc2VdKSB7XG4gICAgICAgICAgZ3JvdXBzW2NsYXNzZV0gPSBbXTtcbiAgICAgICAgfVxuICAgICAgICBncm91cHNbY2xhc3NlXS5wdXNoKGl0ZW0pO1xuICAgICAgfSk7XG5cbiAgICAgIC8vIFNvcnQgYnkgY2xhc3MgbnVtYmVyXG4gICAgICByZXR1cm4gT2JqZWN0LmtleXMoZ3JvdXBzKVxuICAgICAgICAuc29ydCgpXG4gICAgICAgIC5yZWR1Y2UoKG9iaiwga2V5KSA9PiB7XG4gICAgICAgICAgb2JqW2tleV0gPSBncm91cHNba2V5XTtcbiAgICAgICAgICByZXR1cm4gb2JqO1xuICAgICAgICB9LCB7fSk7XG4gICAgfVxuICB9LFxuICBtb3VudGVkKCkge1xuICAgIHRoaXMuZmV0Y2hEYXRhKCk7XG4gIH0sXG4gIG1ldGhvZHM6IHtcbiAgICBmb3JtYXRNb25leSh2YWx1ZSkge1xuICAgICAgaWYgKCF2YWx1ZSAmJiB2YWx1ZSAhPT0gMCkgcmV0dXJuICcwLDAwIERIJztcbiAgICAgIHJldHVybiBwYXJzZUZsb2F0KHZhbHVlKS50b0xvY2FsZVN0cmluZygnZnItTUEnLCB7XG4gICAgICAgIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMixcbiAgICAgICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAyXG4gICAgICB9KSArICcgREgnO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBHZXQgbGFiZWwgZm9yIGFjY291bnQgY2xhc3MgKE1vcm9jY2FuIENHTkMpXG4gICAgICovXG4gICAgZ2V0Q2xhc3NMYWJlbChjbGFzc2UpIHtcbiAgICAgIGNvbnN0IGxhYmVscyA9IHtcbiAgICAgICAgJzEnOiAnQ2xhc3NlIDEgLSBGaW5hbmNlbWVudCBQZXJtYW5lbnQnLFxuICAgICAgICAnMic6ICdDbGFzc2UgMiAtIEFjdGlmIEltbW9iaWxpc8OpJyxcbiAgICAgICAgJzMnOiAnQ2xhc3NlIDMgLSBBY3RpZiBDaXJjdWxhbnQnLFxuICAgICAgICAnNCc6ICdDbGFzc2UgNCAtIFBhc3NpZiBDaXJjdWxhbnQnLFxuICAgICAgICAnNSc6ICdDbGFzc2UgNSAtIFRyw6lzb3JlcmllJyxcbiAgICAgICAgJzYnOiAnQ2xhc3NlIDYgLSBDaGFyZ2VzJyxcbiAgICAgICAgJzcnOiAnQ2xhc3NlIDcgLSBQcm9kdWl0cydcbiAgICAgIH07XG4gICAgICByZXR1cm4gbGFiZWxzW2NsYXNzZV0gfHwgYENsYXNzZSAke2NsYXNzZX1gO1xuICAgIH0sXG5cbiAgICBmZXRjaERhdGEoKSB7XG4gICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICBleGVyY2ljZTogdGhpcy5leGVyY2ljZVxuICAgICAgfTtcblxuICAgICAgYXhpb3MuZ2V0KHRoaXMuQmFzZV91cmxfd2ViICsgJy9jb21wdGFiaWxpdGUvYmlsYW4vYXBpJywge1xuICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgQXV0aG9yaXphdGlvbjogbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJKV1RUb2tlblwiKSxcbiAgICAgICAgfSxcbiAgICAgICAgcGFyYW1zOiBwYXJhbXNcbiAgICAgIH0pXG4gICAgICAgIC50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICB0aGlzLml0ZW1zID0gcmVzcG9uc2UuZGF0YTtcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKGVycm9yID0+IHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLiRzdG9yZS5kaXNwYXRjaChcInNob3dTbmFja2JhclwiLCB7XG4gICAgICAgICAgICB0ZXh0OiBcIkVycmV1ciBsb3JzIGR1IGNoYXJnZW1lbnQgZGVzIGRvbm7DqWVzXCIsXG4gICAgICAgICAgICBjb2xvcjogXCJlcnJvclwiXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH0sXG5cbiAgICBleHBvcnRQZGYoKSB7XG4gICAgICB0aGlzLmV4cG9ydGluZyA9IHRydWU7XG4gICAgICBjb25zdCBkb2MgPSBuZXcganNQREYoKTtcblxuICAgICAgLy8gSGVhZGVyIHdpdGggY29tcGFueSBpbmZvXG4gICAgICBkb2Muc2V0Rm9udFNpemUoMjApO1xuICAgICAgZG9jLnNldEZvbnQodW5kZWZpbmVkLCAnYm9sZCcpO1xuICAgICAgZG9jLnRleHQoXCJCSUxBTiBDT01QVEFCTEVcIiwgMTA1LCAxNSwgeyBhbGlnbjogJ2NlbnRlcicgfSk7XG5cbiAgICAgIGRvYy5zZXRGb250U2l6ZSgxMik7XG4gICAgICBkb2Muc2V0Rm9udCh1bmRlZmluZWQsICdub3JtYWwnKTtcbiAgICAgIGRvYy50ZXh0KGBFeGVyY2ljZTogJHt0aGlzLmV4ZXJjaWNlfWAsIDEwNSwgMjMsIHsgYWxpZ246ICdjZW50ZXInIH0pO1xuICAgICAgZG9jLnRleHQoYMOJZGl0w6kgbGU6ICR7bmV3IERhdGUoKS50b0xvY2FsZURhdGVTdHJpbmcoJ2ZyLU1BJyl9YCwgMTA1LCAyOSwgeyBhbGlnbjogJ2NlbnRlcicgfSk7XG5cbiAgICAgIGxldCB5UG9zID0gNDA7XG5cbiAgICAgIC8vIFN1bW1hcnkgYm94ZXNcbiAgICAgIGRvYy5zZXRGaWxsQ29sb3IoNzYsIDE3NSwgODApO1xuICAgICAgZG9jLnJlY3QoMTQsIHlQb3MsIDYwLCAxNSwgJ0YnKTtcbiAgICAgIGRvYy5zZXRUZXh0Q29sb3IoMjU1LCAyNTUsIDI1NSk7XG4gICAgICBkb2Muc2V0Rm9udFNpemUoMTApO1xuICAgICAgZG9jLnRleHQoJ1RPVEFMIEFDVElGJywgNDQsIHlQb3MgKyA1LCB7IGFsaWduOiAnY2VudGVyJyB9KTtcbiAgICAgIGRvYy5zZXRGb250U2l6ZSgxMik7XG4gICAgICBkb2Muc2V0Rm9udCh1bmRlZmluZWQsICdib2xkJyk7XG4gICAgICBkb2MudGV4dCh0aGlzLmZvcm1hdE1vbmV5KE1hdGguYWJzKHRoaXMuaXRlbXMudG90YWxfYWN0aWYpKSwgNDQsIHlQb3MgKyAxMiwgeyBhbGlnbjogJ2NlbnRlcicgfSk7XG5cbiAgICAgIGRvYy5zZXRGaWxsQ29sb3IoMzMsIDE1MCwgMjQzKTtcbiAgICAgIGRvYy5yZWN0KDc3LCB5UG9zLCA2MCwgMTUsICdGJyk7XG4gICAgICBkb2Muc2V0VGV4dENvbG9yKDI1NSwgMjU1LCAyNTUpO1xuICAgICAgZG9jLnNldEZvbnRTaXplKDEwKTtcbiAgICAgIGRvYy5zZXRGb250KHVuZGVmaW5lZCwgJ25vcm1hbCcpO1xuICAgICAgZG9jLnRleHQoJ1RPVEFMIFBBU1NJRicsIDEwNywgeVBvcyArIDUsIHsgYWxpZ246ICdjZW50ZXInIH0pO1xuICAgICAgZG9jLnNldEZvbnRTaXplKDEyKTtcbiAgICAgIGRvYy5zZXRGb250KHVuZGVmaW5lZCwgJ2JvbGQnKTtcbiAgICAgIGRvYy50ZXh0KHRoaXMuZm9ybWF0TW9uZXkoTWF0aC5hYnModGhpcy5pdGVtcy50b3RhbF9wYXNzaWYpKSwgMTA3LCB5UG9zICsgMTIsIHsgYWxpZ246ICdjZW50ZXInIH0pO1xuXG4gICAgICBjb25zdCByZXN1bHRDb2xvciA9IHRoaXMuaXRlbXMucmVzdWx0YXQgPj0gMCA/IFswLCAxNTAsIDEzNl0gOiBbMjQ0LCA2NywgNTRdO1xuICAgICAgZG9jLnNldEZpbGxDb2xvciguLi5yZXN1bHRDb2xvcik7XG4gICAgICBkb2MucmVjdCgxNDAsIHlQb3MsIDU2LCAxNSwgJ0YnKTtcbiAgICAgIGRvYy5zZXRUZXh0Q29sb3IoMjU1LCAyNTUsIDI1NSk7XG4gICAgICBkb2Muc2V0Rm9udFNpemUoMTApO1xuICAgICAgZG9jLnNldEZvbnQodW5kZWZpbmVkLCAnbm9ybWFsJyk7XG4gICAgICBkb2MudGV4dCh0aGlzLml0ZW1zLnJlc3VsdGF0ID49IDAgPyAnQsOJTsOJRklDRScgOiAnUEVSVEUnLCAxNjgsIHlQb3MgKyA1LCB7IGFsaWduOiAnY2VudGVyJyB9KTtcbiAgICAgIGRvYy5zZXRGb250U2l6ZSgxMik7XG4gICAgICBkb2Muc2V0Rm9udCh1bmRlZmluZWQsICdib2xkJyk7XG4gICAgICBkb2MudGV4dCh0aGlzLmZvcm1hdE1vbmV5KE1hdGguYWJzKHRoaXMuaXRlbXMucmVzdWx0YXQgfHwgMCkpLCAxNjgsIHlQb3MgKyAxMiwgeyBhbGlnbjogJ2NlbnRlcicgfSk7XG5cbiAgICAgIHlQb3MgKz0gMjA7XG5cbiAgICAgIC8vIEFDVElGIFRhYmxlXG4gICAgICBkb2Muc2V0VGV4dENvbG9yKDAsIDAsIDApO1xuICAgICAgZG9jLnNldEZvbnRTaXplKDE0KTtcbiAgICAgIGRvYy5zZXRGb250KHVuZGVmaW5lZCwgJ2JvbGQnKTtcbiAgICAgIGRvYy50ZXh0KFwiQUNUSUZcIiwgMTQsIHlQb3MpO1xuXG4gICAgICBjb25zdCBhY3RpZkRhdGEgPSBbXTtcbiAgICAgIE9iamVjdC5lbnRyaWVzKHRoaXMuZ3JvdXBlZEFjdGlmKS5mb3JFYWNoKChbY2xhc3NlLCBhY2NvdW50c10pID0+IHtcbiAgICAgICAgYWN0aWZEYXRhLnB1c2goW3tcbiAgICAgICAgICBjb250ZW50OiB0aGlzLmdldENsYXNzTGFiZWwoY2xhc3NlKSxcbiAgICAgICAgICBjb2xTcGFuOiA1LFxuICAgICAgICAgIHN0eWxlczogeyBmb250U3R5bGU6ICdib2xkJywgZmlsbENvbG9yOiBbMjM4LCAyMzgsIDIzOF0gfVxuICAgICAgICB9XSk7XG5cbiAgICAgICAgYWNjb3VudHMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICBhY3RpZkRhdGEucHVzaChbXG4gICAgICAgICAgICBpdGVtLmNvbXB0ZV9jb2RlLFxuICAgICAgICAgICAgaXRlbS5jb21wdGVfbGliZWxsZSxcbiAgICAgICAgICAgIHRoaXMuZm9ybWF0TW9uZXkoaXRlbS50b3RhbF9kZWJpdCksXG4gICAgICAgICAgICB0aGlzLmZvcm1hdE1vbmV5KGl0ZW0udG90YWxfY3JlZGl0KSxcbiAgICAgICAgICAgIHRoaXMuZm9ybWF0TW9uZXkoTWF0aC5hYnMoaXRlbS5zb2xkZSkpXG4gICAgICAgICAgXSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICAgIGFjdGlmRGF0YS5wdXNoKFtcbiAgICAgICAgeyBjb250ZW50OiAnVE9UQUwgQUNUSUYnLCBjb2xTcGFuOiA0LCBzdHlsZXM6IHsgZm9udFN0eWxlOiAnYm9sZCcsIGhhbGlnbjogJ3JpZ2h0JyB9IH0sXG4gICAgICAgIHsgY29udGVudDogdGhpcy5mb3JtYXRNb25leShNYXRoLmFicyh0aGlzLml0ZW1zLnRvdGFsX2FjdGlmKSksIHN0eWxlczogeyBmb250U3R5bGU6ICdib2xkJyB9IH1cbiAgICAgIF0pO1xuXG4gICAgICBhdXRvVGFibGUoZG9jLCB7XG4gICAgICAgIGhlYWQ6IFtbJ0NvbXB0ZScsICdMaWJlbGzDqScsICdEw6liaXQnLCAnQ3LDqWRpdCcsICdTb2xkZSddXSxcbiAgICAgICAgYm9keTogYWN0aWZEYXRhLFxuICAgICAgICBzdGFydFk6IHlQb3MgKyA1LFxuICAgICAgICB0aGVtZTogJ2dyaWQnLFxuICAgICAgICBoZWFkU3R5bGVzOiB7IGZpbGxDb2xvcjogWzc2LCAxNzUsIDgwXSwgdGV4dENvbG9yOiAyNTUsIGZvbnRTdHlsZTogJ2JvbGQnIH0sXG4gICAgICAgIGNvbHVtblN0eWxlczoge1xuICAgICAgICAgIDA6IHsgY2VsbFdpZHRoOiAyMCB9LFxuICAgICAgICAgIDE6IHsgY2VsbFdpZHRoOiA2MCB9LFxuICAgICAgICAgIDI6IHsgaGFsaWduOiAncmlnaHQnLCBjZWxsV2lkdGg6IDMwIH0sXG4gICAgICAgICAgMzogeyBoYWxpZ246ICdyaWdodCcsIGNlbGxXaWR0aDogMzAgfSxcbiAgICAgICAgICA0OiB7IGhhbGlnbjogJ3JpZ2h0JywgY2VsbFdpZHRoOiAzNSB9XG4gICAgICAgIH0sXG4gICAgICAgIHN0eWxlczogeyBmb250U2l6ZTogOCB9XG4gICAgICB9KTtcblxuICAgICAgLy8gUEFTU0lGIFRhYmxlXG4gICAgICB5UG9zID0gZG9jLmxhc3RBdXRvVGFibGUuZmluYWxZICsgMTA7XG4gICAgICBkb2Muc2V0Rm9udFNpemUoMTQpO1xuICAgICAgZG9jLnNldEZvbnQodW5kZWZpbmVkLCAnYm9sZCcpO1xuICAgICAgZG9jLnRleHQoXCJQQVNTSUZcIiwgMTQsIHlQb3MpO1xuXG4gICAgICBjb25zdCBwYXNzaWZEYXRhID0gW107XG4gICAgICBPYmplY3QuZW50cmllcyh0aGlzLmdyb3VwZWRQYXNzaWYpLmZvckVhY2goKFtjbGFzc2UsIGFjY291bnRzXSkgPT4ge1xuICAgICAgICBwYXNzaWZEYXRhLnB1c2goW3tcbiAgICAgICAgICBjb250ZW50OiB0aGlzLmdldENsYXNzTGFiZWwoY2xhc3NlKSxcbiAgICAgICAgICBjb2xTcGFuOiA1LFxuICAgICAgICAgIHN0eWxlczogeyBmb250U3R5bGU6ICdib2xkJywgZmlsbENvbG9yOiBbMjM4LCAyMzgsIDIzOF0gfVxuICAgICAgICB9XSk7XG5cbiAgICAgICAgYWNjb3VudHMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICBwYXNzaWZEYXRhLnB1c2goW1xuICAgICAgICAgICAgaXRlbS5jb21wdGVfY29kZSxcbiAgICAgICAgICAgIGl0ZW0uY29tcHRlX2xpYmVsbGUsXG4gICAgICAgICAgICB0aGlzLmZvcm1hdE1vbmV5KGl0ZW0udG90YWxfZGViaXQpLFxuICAgICAgICAgICAgdGhpcy5mb3JtYXRNb25leShpdGVtLnRvdGFsX2NyZWRpdCksXG4gICAgICAgICAgICB0aGlzLmZvcm1hdE1vbmV5KE1hdGguYWJzKGl0ZW0uc29sZGUpKVxuICAgICAgICAgIF0pO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgICAvLyBBZGQgUsOpc3VsdGF0IGxpbmUgaWYgcHJvZml0XG4gICAgICBpZiAodGhpcy5pdGVtcy5yZXN1bHRhdCAmJiB0aGlzLml0ZW1zLnJlc3VsdGF0ID4gMCkge1xuICAgICAgICBwYXNzaWZEYXRhLnB1c2goW1xuICAgICAgICAgICcxMTkxJyxcbiAgICAgICAgICAnUsOpc3VsdGF0IG5ldCBkZSBsXFwnZXhlcmNpY2UgKELDqW7DqWZpY2UpJyxcbiAgICAgICAgICAnLScsXG4gICAgICAgICAgdGhpcy5mb3JtYXRNb25leSh0aGlzLml0ZW1zLnJlc3VsdGF0KSxcbiAgICAgICAgICB7IGNvbnRlbnQ6IHRoaXMuZm9ybWF0TW9uZXkodGhpcy5pdGVtcy5yZXN1bHRhdCksIHN0eWxlczogeyBmb250U3R5bGU6ICdib2xkJywgdGV4dENvbG9yOiBbMCwgMTUwLCAxMzZdIH0gfVxuICAgICAgICBdKTtcbiAgICAgIH1cblxuICAgICAgcGFzc2lmRGF0YS5wdXNoKFtcbiAgICAgICAgeyBjb250ZW50OiAnVE9UQUwgUEFTU0lGJywgY29sU3BhbjogNCwgc3R5bGVzOiB7IGZvbnRTdHlsZTogJ2JvbGQnLCBoYWxpZ246ICdyaWdodCcgfSB9LFxuICAgICAgICB7IGNvbnRlbnQ6IHRoaXMuZm9ybWF0TW9uZXkoTWF0aC5hYnModGhpcy5pdGVtcy50b3RhbF9wYXNzaWYpKSwgc3R5bGVzOiB7IGZvbnRTdHlsZTogJ2JvbGQnIH0gfVxuICAgICAgXSk7XG5cbiAgICAgIGF1dG9UYWJsZShkb2MsIHtcbiAgICAgICAgaGVhZDogW1snQ29tcHRlJywgJ0xpYmVsbMOpJywgJ0TDqWJpdCcsICdDcsOpZGl0JywgJ1NvbGRlJ11dLFxuICAgICAgICBib2R5OiBwYXNzaWZEYXRhLFxuICAgICAgICBzdGFydFk6IHlQb3MgKyA1LFxuICAgICAgICB0aGVtZTogJ2dyaWQnLFxuICAgICAgICBoZWFkU3R5bGVzOiB7IGZpbGxDb2xvcjogWzMzLCAxNTAsIDI0M10sIHRleHRDb2xvcjogMjU1LCBmb250U3R5bGU6ICdib2xkJyB9LFxuICAgICAgICBjb2x1bW5TdHlsZXM6IHtcbiAgICAgICAgICAwOiB7IGNlbGxXaWR0aDogMjAgfSxcbiAgICAgICAgICAxOiB7IGNlbGxXaWR0aDogNjAgfSxcbiAgICAgICAgICAyOiB7IGhhbGlnbjogJ3JpZ2h0JywgY2VsbFdpZHRoOiAzMCB9LFxuICAgICAgICAgIDM6IHsgaGFsaWduOiAncmlnaHQnLCBjZWxsV2lkdGg6IDMwIH0sXG4gICAgICAgICAgNDogeyBoYWxpZ246ICdyaWdodCcsIGNlbGxXaWR0aDogMzUgfVxuICAgICAgICB9LFxuICAgICAgICBzdHlsZXM6IHsgZm9udFNpemU6IDggfVxuICAgICAgfSk7XG5cbiAgICAgIGRvYy5zYXZlKGBiaWxhbl8ke3RoaXMuZXhlcmNpY2V9LnBkZmApO1xuICAgICAgdGhpcy5leHBvcnRpbmcgPSBmYWxzZTtcbiAgICB9XG4gIH1cbn07XG48L3NjcmlwdD5cblxuPHN0eWxlIHNjb3BlZD5cbi5ob3ZlcmFibGU6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1O1xufVxuXG4udi1kYXRhLXRhYmxlPj4+dGJvZHkgdHI6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xufVxuPC9zdHlsZT5cbiIsIjx0ZW1wbGF0ZT5cbiAgPHYtY29udGFpbmVyIGZsdWlkIGNsYXNzPVwicGEtMFwiPlxuICAgIDx2LWNhcmQgZmxhdCBjbGFzcz1cInJvdW5kZWQtbGdcIj5cbiAgICAgIDwhLS0gSGVhZGVyIFNlY3Rpb24gLS0+XG4gICAgICA8di1jYXJkLXRpdGxlIGNsYXNzPVwicHJpbWFyeSB3aGl0ZS0tdGV4dCBwYS00XCJcbiAgICAgICAgc3R5bGU9XCJiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjNjY3ZWVhIDAlLCAjNzY0YmEyIDEwMCUpO1wiPlxuICAgICAgICA8di1pY29uIGxlZnQgY29sb3I9XCJ3aGl0ZVwiIHNpemU9XCIzMlwiPm1kaS1maWxlLXBlcmNlbnQ8L3YtaWNvbj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWg1IGZvbnQtd2VpZ2h0LWJvbGRcIj57eyAkdCgnRMOpY2xhcmF0aW9uIFRWQScpIH19PC9zcGFuPlxuICAgICAgICA8di1zcGFjZXI+PC92LXNwYWNlcj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWNlbnRlciBmbGV4LXdyYXBcIj5cbiAgICAgICAgICA8IS0tIFllYXIgU2VsZWN0b3IgLS0+XG4gICAgICAgICAgPHYtc2VsZWN0IHYtbW9kZWw9XCJzZWxlY3RlZFllYXJcIiA6aXRlbXM9XCJhdmFpbGFibGVZZWFyc1wiIDpsYWJlbD1cIiR0KCdBbm7DqWUnKVwiIGRlbnNlIG91dGxpbmVkIGhpZGUtZGV0YWlsc1xuICAgICAgICAgICAgY2xhc3M9XCJtci0yIHdoaXRlLWlucHV0XCIgc3R5bGU9XCJtYXgtd2lkdGg6IDEyMHB4XCIgQGNoYW5nZT1cImZldGNoRGF0YVwiIGJhY2tncm91bmQtY29sb3I9XCJ3aGl0ZVwiPjwvdi1zZWxlY3Q+XG5cbiAgICAgICAgICA8IS0tIFJlZ2ltZSBUb2dnbGUgLS0+XG4gICAgICAgICAgPHYtYnRuLXRvZ2dsZSB2LW1vZGVsPVwicmVnaW1lXCIgbWFuZGF0b3J5IGNsYXNzPVwibXItMiByb3VuZGVkXCIgYmFja2dyb3VuZC1jb2xvcj1cIndoaXRlXCIgY29sb3I9XCJwcmltYXJ5XCIgZGVuc2VcbiAgICAgICAgICAgIGdyb3VwIEBjaGFuZ2U9XCJvblJlZ2ltZUNoYW5nZVwiPlxuICAgICAgICAgICAgPHYtYnRuIHZhbHVlPVwibWVuc3VlbGxlXCIgc21hbGw+XG4gICAgICAgICAgICAgIHt7ICR0KCdNZW5zdWVsbGUnKSB9fVxuICAgICAgICAgICAgPC92LWJ0bj5cbiAgICAgICAgICAgIDx2LWJ0biB2YWx1ZT1cInRyaW1lc3RyaWVsbGVcIiBzbWFsbD5cbiAgICAgICAgICAgICAge3sgJHQoJ1RyaW1lc3RyaWVsbGUnKSB9fVxuICAgICAgICAgICAgPC92LWJ0bj5cbiAgICAgICAgICA8L3YtYnRuLXRvZ2dsZT5cblxuXG4gICAgICAgICAgPHYtYnRuIGNvbG9yPVwid2hpdGVcIiBjbGFzcz1cIm1yLTJcIiBAY2xpY2s9XCJmZXRjaERhdGFcIiA6bG9hZGluZz1cImxvYWRpbmdcIiBlbGV2YXRpb249XCIyXCI+XG4gICAgICAgICAgICA8di1pY29uIGxlZnQ+bWRpLXJlZnJlc2g8L3YtaWNvbj5cbiAgICAgICAgICAgIHt7ICR0KCdBY3R1YWxpc2VyJykgfX1cbiAgICAgICAgICA8L3YtYnRuPlxuXG4gICAgICAgICAgPHYtYnRuIGNvbG9yPVwib3JhbmdlIGRhcmtlbi0yXCIgZGFyayBAY2xpY2s9XCJzaG93TGlua01hbmFnZXIgPSB0cnVlXCIgY2xhc3M9XCJtci0yXCIgZWxldmF0aW9uPVwiMlwiPlxuICAgICAgICAgICAgPHYtaWNvbiBsZWZ0Pm1kaS1saW5rLXZhcmlhbnQ8L3YtaWNvbj5cbiAgICAgICAgICAgIHt7ICR0KCdMaWFpc29ucycpIH19XG4gICAgICAgICAgPC92LWJ0bj5cblxuICAgICAgICAgIDx2LW1lbnUgb2Zmc2V0LXk+XG4gICAgICAgICAgICA8dGVtcGxhdGUgdi1zbG90OmFjdGl2YXRvcj1cInsgb24sIGF0dHJzIH1cIj5cbiAgICAgICAgICAgICAgPHYtYnRuIGNvbG9yPVwicmVkIGRhcmtlbi0yXCIgZGFyayB2LWJpbmQ9XCJhdHRyc1wiIHYtb249XCJvblwiIDpsb2FkaW5nPVwiZXhwb3J0aW5nXCJcbiAgICAgICAgICAgICAgICA6ZGlzYWJsZWQ9XCIhaXRlbXMudHZhX2NvbGxlY3RlZVwiIGVsZXZhdGlvbj1cIjJcIj5cbiAgICAgICAgICAgICAgICA8di1pY29uIGxlZnQ+bWRpLWV4cG9ydDwvdi1pY29uPlxuICAgICAgICAgICAgICAgIHt7ICR0KCdFeHBvcnRlcicpIH19XG4gICAgICAgICAgICAgIDwvdi1idG4+XG4gICAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICAgICAgPHYtbGlzdD5cbiAgICAgICAgICAgICAgPHYtbGlzdC1pdGVtIEBjbGljaz1cImV4cG9ydFBkZlwiPlxuICAgICAgICAgICAgICAgIDx2LWxpc3QtaXRlbS1pY29uPlxuICAgICAgICAgICAgICAgICAgPHYtaWNvbiBjb2xvcj1cInJlZFwiPm1kaS1maWxlLXBkZi1ib3g8L3YtaWNvbj5cbiAgICAgICAgICAgICAgICA8L3YtbGlzdC1pdGVtLWljb24+XG4gICAgICAgICAgICAgICAgPHYtbGlzdC1pdGVtLXRpdGxlPlBERjwvdi1saXN0LWl0ZW0tdGl0bGU+XG4gICAgICAgICAgICAgIDwvdi1saXN0LWl0ZW0+XG4gICAgICAgICAgICAgIDx2LWxpc3QtaXRlbSBAY2xpY2s9XCJleHBvcnRFeGNlbFwiPlxuICAgICAgICAgICAgICAgIDx2LWxpc3QtaXRlbS1pY29uPlxuICAgICAgICAgICAgICAgICAgPHYtaWNvbiBjb2xvcj1cImdyZWVuXCI+bWRpLW1pY3Jvc29mdC1leGNlbDwvdi1pY29uPlxuICAgICAgICAgICAgICAgIDwvdi1saXN0LWl0ZW0taWNvbj5cbiAgICAgICAgICAgICAgICA8di1saXN0LWl0ZW0tdGl0bGU+RXhjZWw8L3YtbGlzdC1pdGVtLXRpdGxlPlxuICAgICAgICAgICAgICA8L3YtbGlzdC1pdGVtPlxuICAgICAgICAgICAgPC92LWxpc3Q+XG4gICAgICAgICAgPC92LW1lbnU+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC92LWNhcmQtdGl0bGU+XG5cbiAgICAgIDwhLS0gUGVyaW9kIFNlbGVjdGlvbiBDaGlwcyAtLT5cbiAgICAgIDx2LWNvbnRhaW5lciBjbGFzcz1cInB4LTQgcHktMiBncmV5IGxpZ2h0ZW4tNVwiPlxuICAgICAgICA8di1pdGVtLWdyb3VwIHYtbW9kZWw9XCJzZWxlY3RlZFBlcmlvZEluZGV4XCIgbWFuZGF0b3J5IEBjaGFuZ2U9XCJjYWxjdWxhdGVEYXRlQW5kRmV0Y2hcIj5cbiAgICAgICAgICA8di1yb3cgZGVuc2U+XG4gICAgICAgICAgICA8di1jb2wgY29scz1cImF1dG9cIj5cbiAgICAgICAgICAgICAgPHYtaXRlbSB2LXNsb3Q9XCJ7IGFjdGl2ZSwgdG9nZ2xlIH1cIiA6dmFsdWU9XCJudWxsXCI+XG4gICAgICAgICAgICAgICAgPHYtY2hpcCA6Y29sb3I9XCJhY3RpdmUgPyAncHJpbWFyeScgOiAnd2hpdGUnXCIgOmNsYXNzPVwiYWN0aXZlID8gJ3doaXRlLS10ZXh0JyA6ICcnXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWEtMSBjYXB0aW9uIGZvbnQtd2VpZ2h0LWJvbGRcIiBAY2xpY2s9XCJ0b2dnbGVcIiBmaWx0ZXI+XG4gICAgICAgICAgICAgICAgICB7eyAkdCgnQW5udWVsJykgfX0ge3sgc2VsZWN0ZWRZZWFyIH19XG4gICAgICAgICAgICAgICAgPC92LWNoaXA+XG4gICAgICAgICAgICAgIDwvdi1pdGVtPlxuICAgICAgICAgICAgPC92LWNvbD5cbiAgICAgICAgICAgIDx2LWNvbCB2LWZvcj1cIihsYWJlbCwgaSkgaW4gcGVyaW9kTGFiZWxzXCIgOmtleT1cImlcIiBjb2xzPVwiYXV0b1wiPlxuICAgICAgICAgICAgICA8di1pdGVtIHYtc2xvdD1cInsgYWN0aXZlLCB0b2dnbGUgfVwiIDp2YWx1ZT1cImkgKyAxXCI+XG4gICAgICAgICAgICAgICAgPHYtY2hpcCA6Y29sb3I9XCJhY3RpdmUgPyAncHJpbWFyeScgOiAnd2hpdGUnXCIgOmNsYXNzPVwiYWN0aXZlID8gJ3doaXRlLS10ZXh0JyA6ICcnXCIgY2xhc3M9XCJtYS0xIGNhcHRpb25cIlxuICAgICAgICAgICAgICAgICAgQGNsaWNrPVwidG9nZ2xlXCIgZmlsdGVyPlxuICAgICAgICAgICAgICAgICAge3sgbGFiZWwgfX1cbiAgICAgICAgICAgICAgICA8L3YtY2hpcD5cbiAgICAgICAgICAgICAgPC92LWl0ZW0+XG4gICAgICAgICAgICA8L3YtY29sPlxuICAgICAgICAgIDwvdi1yb3c+XG4gICAgICAgIDwvdi1pdGVtLWdyb3VwPlxuICAgICAgPC92LWNvbnRhaW5lcj5cblxuXG4gICAgICA8IS0tIFN1bW1hcnkgQ2FyZHMgU2VjdGlvbiAtLT5cbiAgICAgIDx2LWNvbnRhaW5lciB2LWlmPVwiaXRlbXMudHZhX2NvbGxlY3RlZSAhPT0gdW5kZWZpbmVkXCIgY2xhc3M9XCJwYS00XCI+XG4gICAgICAgIDx2LXJvdz5cbiAgICAgICAgICA8IS0tIFRWQSBDb2xsZWN0w6llIENhcmQgLS0+XG4gICAgICAgICAgPHYtY29sIGNvbHM9XCIxMlwiIG1kPVwiNFwiPlxuICAgICAgICAgICAgPHYtY2FyZCBjbGFzcz1cInJvdW5kZWQteGwgZWxldmF0aW9uLTQgdHJhbnNpdGlvbi1zd2luZ1wiXG4gICAgICAgICAgICAgIHN0eWxlPVwiYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgIzY2N2VlYSAwJSwgIzc2NGJhMiAxMDAlKTsgb3ZlcmZsb3c6IGhpZGRlbjtcIiBob3Zlcj5cbiAgICAgICAgICAgICAgPHYtY2FyZC10ZXh0IGNsYXNzPVwid2hpdGUtLXRleHQgcGEtNlwiPlxuICAgICAgICAgICAgICAgIDxkaXYgdi1pZj1cImxvYWRpbmdcIj5cbiAgICAgICAgICAgICAgICAgIDx2LXNrZWxldG9uLWxvYWRlciB0eXBlPVwiaGVhZGluZ1wiIGNsYXNzPVwibWItMlwiIGRhcms+PC92LXNrZWxldG9uLWxvYWRlcj5cbiAgICAgICAgICAgICAgICAgIDx2LXNrZWxldG9uLWxvYWRlciB0eXBlPVwidGV4dFwiIHdpZHRoPVwiNjAlXCIgZGFyaz48L3Ytc2tlbGV0b24tbG9hZGVyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgdi1lbHNlPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1jZW50ZXIgbWItNFwiPlxuICAgICAgICAgICAgICAgICAgICA8di1pY29uIGNvbG9yPVwid2hpdGVcIiBzaXplPVwiNDBcIiBjbGFzcz1cIm1yLTNcIj5tZGktYXJyb3ctdXAtY2lyY2xlPC92LWljb24+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW92ZXJsaW5lIHdoaXRlLS10ZXh0IGZvbnQtd2VpZ2h0LWJvbGRcIj57eyAkdCgnVFZBIENPTExFQ1TDiUUnKSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1oMyBmb250LXdlaWdodC1ibGFjayB3aGl0ZS0tdGV4dCBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IGZvcm1hdE1vbmV5KGl0ZW1zLnR2YV9jb2xsZWN0ZWUpIH19XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXB0aW9uIHdoaXRlLS10ZXh0XCIgc3R5bGU9XCJvcGFjaXR5OiAwLjk7XCI+e3sgJHQoJ1RvdGFsIFRWQSBzdXIgbGVzIHZlbnRlcycpIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvdi1jYXJkLXRleHQ+XG4gICAgICAgICAgICA8L3YtY2FyZD5cbiAgICAgICAgICA8L3YtY29sPlxuXG4gICAgICAgICAgPCEtLSBUVkEgRMOpZHVjdGlibGUgQ2FyZCAtLT5cbiAgICAgICAgICA8di1jb2wgY29scz1cIjEyXCIgbWQ9XCI0XCI+XG4gICAgICAgICAgICA8di1jYXJkIGNsYXNzPVwicm91bmRlZC14bCBlbGV2YXRpb24tNCB0cmFuc2l0aW9uLXN3aW5nXCJcbiAgICAgICAgICAgICAgc3R5bGU9XCJiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjZjA5M2ZiIDAlLCAjZjU1NzZjIDEwMCUpOyBvdmVyZmxvdzogaGlkZGVuO1wiIGhvdmVyPlxuICAgICAgICAgICAgICA8di1jYXJkLXRleHQgY2xhc3M9XCJ3aGl0ZS0tdGV4dCBwYS02XCI+XG4gICAgICAgICAgICAgICAgPGRpdiB2LWlmPVwibG9hZGluZ1wiPlxuICAgICAgICAgICAgICAgICAgPHYtc2tlbGV0b24tbG9hZGVyIHR5cGU9XCJoZWFkaW5nXCIgY2xhc3M9XCJtYi0yXCIgZGFyaz48L3Ytc2tlbGV0b24tbG9hZGVyPlxuICAgICAgICAgICAgICAgICAgPHYtc2tlbGV0b24tbG9hZGVyIHR5cGU9XCJ0ZXh0XCIgd2lkdGg9XCI2MCVcIiBkYXJrPjwvdi1za2VsZXRvbi1sb2FkZXI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiB2LWVsc2U+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWNlbnRlciBtYi00XCI+XG4gICAgICAgICAgICAgICAgICAgIDx2LWljb24gY29sb3I9XCJ3aGl0ZVwiIHNpemU9XCI0MFwiIGNsYXNzPVwibXItM1wiPm1kaS1hcnJvdy1kb3duLWNpcmNsZTwvdi1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1vdmVybGluZSB3aGl0ZS0tdGV4dCBmb250LXdlaWdodC1ib2xkXCI+e3sgJHQoJ1RWQSBEw4lEVUNUSUJMRScpIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWgzIGZvbnQtd2VpZ2h0LWJsYWNrIHdoaXRlLS10ZXh0IG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgZm9ybWF0TW9uZXkoaXRlbXMudHZhX2RlZHVjdGlibGUpIH19XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXB0aW9uIHdoaXRlLS10ZXh0XCIgc3R5bGU9XCJvcGFjaXR5OiAwLjk7XCI+e3sgJHQoJ1RvdGFsIFRWQSBzdXIgbGVzIGFjaGF0cycpIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvdi1jYXJkLXRleHQ+XG4gICAgICAgICAgICA8L3YtY2FyZD5cbiAgICAgICAgICA8L3YtY29sPlxuXG4gICAgICAgICAgPCEtLSBUVkEgRHVlL0NyZWRpdCBDYXJkIC0tPlxuICAgICAgICAgIDx2LWNvbCBjb2xzPVwiMTJcIiBtZD1cIjRcIj5cbiAgICAgICAgICAgIDx2LWNhcmQgY2xhc3M9XCJyb3VuZGVkLXhsIGVsZXZhdGlvbi00IHRyYW5zaXRpb24tc3dpbmdcIiA6c3R5bGU9XCJpdGVtcy50dmFfZHVlID49IDAgP1xuICAgICAgICAgICAgICAnYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgI2ZhNzA5YSAwJSwgI2ZlZTE0MCAxMDAlKTsnIDpcbiAgICAgICAgICAgICAgJ2JhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICMzMGNmZDAgMCUsICMzMzA4NjcgMTAwJSk7J1wiIGhvdmVyPlxuICAgICAgICAgICAgICA8di1jYXJkLXRleHQgY2xhc3M9XCJ3aGl0ZS0tdGV4dCBwYS02XCI+XG4gICAgICAgICAgICAgICAgPGRpdiB2LWlmPVwibG9hZGluZ1wiPlxuICAgICAgICAgICAgICAgICAgPHYtc2tlbGV0b24tbG9hZGVyIHR5cGU9XCJoZWFkaW5nXCIgY2xhc3M9XCJtYi0yXCIgZGFyaz48L3Ytc2tlbGV0b24tbG9hZGVyPlxuICAgICAgICAgICAgICAgICAgPHYtc2tlbGV0b24tbG9hZGVyIHR5cGU9XCJ0ZXh0XCIgd2lkdGg9XCI2MCVcIiBkYXJrPjwvdi1za2VsZXRvbi1sb2FkZXI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiB2LWVsc2U+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWNlbnRlciBtYi00XCI+XG4gICAgICAgICAgICAgICAgICAgIDx2LWljb24gY29sb3I9XCJ3aGl0ZVwiIHNpemU9XCI0MFwiIGNsYXNzPVwibXItM1wiPlxuICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW1zLnR2YV9kdWUgPj0gMCA/ICdtZGktY2FzaC1taW51cycgOiAnbWRpLWNhc2gtcGx1cycgfX1cbiAgICAgICAgICAgICAgICAgICAgPC92LWljb24+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW92ZXJsaW5lIHdoaXRlLS10ZXh0IGZvbnQtd2VpZ2h0LWJvbGRcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtcy50dmFfZHVlID49IDAgPyAkdCgnVFZBIMOAIFBBWUVSJykgOiAkdCgnQ1LDiURJVCBERSBUVkEnKSB9fVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtaDMgZm9udC13ZWlnaHQtYmxhY2sgd2hpdGUtLXRleHQgbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICB7eyBmb3JtYXRNb25leShNYXRoLmFicyhpdGVtcy50dmFfZHVlKSkgfX1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcHRpb24gd2hpdGUtLXRleHRcIiBzdHlsZT1cIm9wYWNpdHk6IDAuOTtcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgaXRlbXMudHZhX2R1ZSA+PSAwID8gJHQoJ01vbnRhbnQgw6AgdmVyc2VyJykgOiAkdCgnQ3LDqWRpdCByZXBvcnRhYmxlJykgfX1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L3YtY2FyZC10ZXh0PlxuICAgICAgICAgICAgPC92LWNhcmQ+XG4gICAgICAgICAgPC92LWNvbD5cbiAgICAgICAgPC92LXJvdz5cbiAgICAgIDwvdi1jb250YWluZXI+XG5cbiAgICAgIDwhLS0gVGFicyBTZWN0aW9uIC0tPlxuICAgICAgPHYtY2FyZC10ZXh0IGNsYXNzPVwicGEtMFwiPlxuICAgICAgICA8di10YWJzIHYtbW9kZWw9XCJhY3RpdmVUYWJcIiBiYWNrZ3JvdW5kLWNvbG9yPVwidHJhbnNwYXJlbnRcIiBjb2xvcj1cInByaW1hcnlcIiBjbGFzcz1cImVsZXZhdGlvbi0wXCIgc2xpZGVyLXNpemU9XCIzXCI+XG4gICAgICAgICAgPHYtdGFiIGNsYXNzPVwidGV4dC1ub25lIGZvbnQtd2VpZ2h0LWJvbGRcIj5cbiAgICAgICAgICAgIDx2LWljb24gbGVmdD5tZGktYXJyb3ctdXAtYm9sZC1jaXJjbGU8L3YtaWNvbj5cbiAgICAgICAgICAgIHt7ICR0KCdUVkEgQ29sbGVjdMOpZScpIH19XG4gICAgICAgICAgPC92LXRhYj5cbiAgICAgICAgICA8di10YWIgY2xhc3M9XCJ0ZXh0LW5vbmUgZm9udC13ZWlnaHQtYm9sZFwiPlxuICAgICAgICAgICAgPHYtaWNvbiBsZWZ0Pm1kaS1hcnJvdy1kb3duLWJvbGQtY2lyY2xlPC92LWljb24+XG4gICAgICAgICAgICB7eyAkdCgnVFZBIETDqWR1Y3RpYmxlJykgfX1cbiAgICAgICAgICA8L3YtdGFiPlxuICAgICAgICA8L3YtdGFicz5cblxuICAgICAgICA8di1kaXZpZGVyPjwvdi1kaXZpZGVyPlxuXG4gICAgICAgIDx2LXRhYnMtaXRlbXMgdi1tb2RlbD1cImFjdGl2ZVRhYlwiIGNsYXNzPVwicGEtNFwiPlxuICAgICAgICAgIDwhLS0gVGFiIDE6IFRWQSBDb2xsZWN0w6llIERldGFpbHMgLS0+XG4gICAgICAgICAgPHYtdGFiLWl0ZW0+XG4gICAgICAgICAgICA8di1jb250YWluZXI+XG4gICAgICAgICAgICAgIDx2LWNhcmQgY2xhc3M9XCJyb3VuZGVkLWxnIGVsZXZhdGlvbi0yXCIgOmxvYWRpbmc9XCJsb2FkaW5nXCI+XG4gICAgICAgICAgICAgICAgPHYtY2FyZC10aXRsZSBjbGFzcz1cInB1cnBsZSB3aGl0ZS0tdGV4dFwiPlxuICAgICAgICAgICAgICAgICAgPHYtaWNvbiBsZWZ0IGNvbG9yPVwid2hpdGVcIj5tZGktdGFibGU8L3YtaWNvbj5cbiAgICAgICAgICAgICAgICAgIHt7ICR0KCdEw6l0YWlscyBUVkEgQ29sbGVjdMOpZScpIH19XG4gICAgICAgICAgICAgICAgPC92LWNhcmQtdGl0bGU+XG4gICAgICAgICAgICAgICAgPHYtY2FyZC10ZXh0IGNsYXNzPVwicGEtNFwiPlxuICAgICAgICAgICAgICAgICAgPHYtZGF0YS10YWJsZSA6aGVhZGVycz1cImhlYWRlcnNSZWNldHRlc1wiIDppdGVtcz1cIml0ZW1zLmRldGFpbHMgPyBpdGVtcy5kZXRhaWxzLmNvbGxlY3RlZSA6IFtdXCJcbiAgICAgICAgICAgICAgICAgICAgOmxvYWRpbmc9XCJsb2FkaW5nXCIgZGVuc2UgY2xhc3M9XCJlbGV2YXRpb24tMFwiPlxuICAgICAgICAgICAgICAgICAgICA8dGVtcGxhdGUgdi1zbG90Oml0ZW0udG90YWxfaW52b2ljZT1cInsgaXRlbSB9XCI+XG4gICAgICAgICAgICAgICAgICAgICAge3sgZm9ybWF0TW9uZXkoaXRlbS50b3RhbF9pbnZvaWNlKSB9fVxuICAgICAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICA8dGVtcGxhdGUgdi1zbG90Oml0ZW0uaHQ9XCJ7IGl0ZW0gfVwiPlxuICAgICAgICAgICAgICAgICAgICAgIHt7IGZvcm1hdE1vbmV5KGl0ZW0uaHQpIH19XG4gICAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6aXRlbS50dmE9XCJ7IGl0ZW0gfVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3VjY2Vzcy0tdGV4dCBmb250LXdlaWdodC1ib2xkXCI+e3sgZm9ybWF0TW9uZXkoaXRlbS50dmEpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICA8dGVtcGxhdGUgdi1zbG90Oml0ZW0udHRjPVwieyBpdGVtIH1cIj5cbiAgICAgICAgICAgICAgICAgICAgICB7eyBmb3JtYXRNb25leShpdGVtLnR0YykgfX1cbiAgICAgICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgIDwvdi1kYXRhLXRhYmxlPlxuICAgICAgICAgICAgICAgIDwvdi1jYXJkLXRleHQ+XG4gICAgICAgICAgICAgIDwvdi1jYXJkPlxuICAgICAgICAgICAgPC92LWNvbnRhaW5lcj5cbiAgICAgICAgICA8L3YtdGFiLWl0ZW0+XG5cbiAgICAgICAgICA8IS0tIFRhYiAyOiBUVkEgRMOpZHVjdGlibGUgRGV0YWlscyAtLT5cbiAgICAgICAgICA8di10YWItaXRlbT5cbiAgICAgICAgICAgIDx2LWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPHYtY2FyZCBjbGFzcz1cInJvdW5kZWQtbGcgZWxldmF0aW9uLTJcIiA6bG9hZGluZz1cImxvYWRpbmdcIj5cbiAgICAgICAgICAgICAgICA8di1jYXJkLXRpdGxlIGNsYXNzPVwicGluayB3aGl0ZS0tdGV4dFwiPlxuICAgICAgICAgICAgICAgICAgPHYtaWNvbiBsZWZ0IGNvbG9yPVwid2hpdGVcIj5tZGktdGFibGU8L3YtaWNvbj5cbiAgICAgICAgICAgICAgICAgIHt7ICR0KCdEw6l0YWlscyBUVkEgRMOpZHVjdGlibGUnKSB9fVxuICAgICAgICAgICAgICAgIDwvdi1jYXJkLXRpdGxlPlxuICAgICAgICAgICAgICAgIDx2LWNhcmQtdGV4dCBjbGFzcz1cInBhLTRcIj5cbiAgICAgICAgICAgICAgICAgIDx2LWRhdGEtdGFibGUgOmhlYWRlcnM9XCJoZWFkZXJzRGVwZW5zZXNcIiA6aXRlbXM9XCJpdGVtcy5kZXRhaWxzID8gaXRlbXMuZGV0YWlscy5kZWR1Y3RpYmxlIDogW11cIlxuICAgICAgICAgICAgICAgICAgICA6bG9hZGluZz1cImxvYWRpbmdcIiBkZW5zZSBjbGFzcz1cImVsZXZhdGlvbi0wXCI+XG4gICAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6aXRlbS50b3RhbF9pbnZvaWNlPVwieyBpdGVtIH1cIj5cbiAgICAgICAgICAgICAgICAgICAgICB7eyBmb3JtYXRNb25leShpdGVtLnRvdGFsX2ludm9pY2UpIH19XG4gICAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6aXRlbS5odD1cInsgaXRlbSB9XCI+XG4gICAgICAgICAgICAgICAgICAgICAge3sgZm9ybWF0TW9uZXkoaXRlbS5odCkgfX1cbiAgICAgICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlIHYtc2xvdDppdGVtLnR2YT1cInsgaXRlbSB9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJlcnJvci0tdGV4dCBmb250LXdlaWdodC1ib2xkXCI+e3sgZm9ybWF0TW9uZXkoaXRlbS50dmEpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICA8dGVtcGxhdGUgdi1zbG90Oml0ZW0udHRjPVwieyBpdGVtIH1cIj5cbiAgICAgICAgICAgICAgICAgICAgICB7eyBmb3JtYXRNb25leShpdGVtLnR0YykgfX1cbiAgICAgICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgIDwvdi1kYXRhLXRhYmxlPlxuICAgICAgICAgICAgICAgIDwvdi1jYXJkLXRleHQ+XG4gICAgICAgICAgICAgIDwvdi1jYXJkPlxuICAgICAgICAgICAgPC92LWNvbnRhaW5lcj5cbiAgICAgICAgICA8L3YtdGFiLWl0ZW0+XG4gICAgICAgIDwvdi10YWJzLWl0ZW1zPlxuICAgICAgPC92LWNhcmQtdGV4dD5cbiAgICA8L3YtY2FyZD5cblxuICAgIDwhLS0gQWNjb3VudGluZyBMaW5rIE1hbmFnZXIgRGlhbG9nIC0tPlxuICAgIDxBY2NvdW50aW5nTGlua01hbmFnZXIgdi1tb2RlbD1cInNob3dMaW5rTWFuYWdlclwiIEB1cGRhdGVkPVwiZmV0Y2hEYXRhXCIgLz5cbiAgPC92LWNvbnRhaW5lcj5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG5pbXBvcnQgYXhpb3MgZnJvbSBcImF4aW9zXCI7XG5pbXBvcnQganNQREYgZnJvbSBcImpzcGRmXCI7XG5pbXBvcnQgYXV0b1RhYmxlIGZyb20gXCJqc3BkZi1hdXRvdGFibGVcIjtcbmltcG9ydCBFeHBvcnRKc29uRXhjZWwgZnJvbSBcImpzLWV4cG9ydC1leGNlbFwiO1xuaW1wb3J0IEFjY291bnRpbmdMaW5rTWFuYWdlciBmcm9tIFwiLi9BY2NvdW50aW5nTGlua01hbmFnZXIudnVlXCI7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbmFtZTogXCJUVkFcIixcbiAgY29tcG9uZW50czoge1xuICAgIEFjY291bnRpbmdMaW5rTWFuYWdlcixcbiAgfSxcbiAgZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbG9hZGluZzogZmFsc2UsXG4gICAgICBleHBvcnRpbmc6IGZhbHNlLFxuICAgICAgc2hvd0xpbmtNYW5hZ2VyOiBmYWxzZSxcbiAgICAgIGl0ZW1zOiB7fSxcbiAgICAgIGFjdGl2ZVRhYjogMCxcblxuICAgICAgc2VsZWN0ZWRZZWFyOiBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCksXG4gICAgICByZWdpbWU6ICdtZW5zdWVsbGUnLCAvLyAnbWVuc3VlbGxlJyBvciAndHJpbWVzdHJpZWxsZSdcbiAgICAgIHNlbGVjdGVkUGVyaW9kSW5kZXg6IG51bGwsXG4gICAgICBhdmFpbGFibGVZZWFyczogWzIwMjMsIDIwMjQsIDIwMjUsIDIwMjZdLFxuXG4gICAgICBoZWFkZXJzUmVjZXR0ZXM6IFtcbiAgICAgICAgeyB0ZXh0OiB0aGlzLiR0KCdEYXRlIE9wJyksIHZhbHVlOiAnZGF0ZScsIHdpZHRoOiAnOTBweCcgfSxcbiAgICAgICAgeyB0ZXh0OiB0aGlzLiR0KCdEYXRlIEZhYycpLCB2YWx1ZTogJ2RhdGVfZmFjdHVyZScsIHdpZHRoOiAnOTBweCcgfSxcbiAgICAgICAgeyB0ZXh0OiB0aGlzLiR0KCdSw6lmJyksIHZhbHVlOiAncmVmJyB9LFxuICAgICAgICB7IHRleHQ6IHRoaXMuJHQoJ0NsaWVudCcpLCB2YWx1ZTogJ3RpZXInIH0sXG4gICAgICAgIHsgdGV4dDogdGhpcy4kdCgnQ2F0JyksIHZhbHVlOiAnY2F0ZWdvcnknIH0sXG4gICAgICAgIHsgdGV4dDogdGhpcy4kdCgnJSBSw6lnbMOpJyksIHZhbHVlOiAncGF5bWVudF9wZXJjZW50YWdlJywgYWxpZ246ICdjZW50ZXInIH0sXG4gICAgICAgIHsgdGV4dDogdGhpcy4kdCgnVG90YWwgRmFjJyksIHZhbHVlOiAndG90YWxfaW52b2ljZScsIGFsaWduOiAnZW5kJyB9LFxuICAgICAgICB7IHRleHQ6IHRoaXMuJHQoJ0hUIFBhecOpJyksIHZhbHVlOiAnaHQnLCBhbGlnbjogJ2VuZCcgfSxcbiAgICAgICAgeyB0ZXh0OiB0aGlzLiR0KCdUVkEgUGF5JyksIHZhbHVlOiAndHZhJywgYWxpZ246ICdlbmQnIH0sXG4gICAgICAgIHsgdGV4dDogdGhpcy4kdCgnVFRDIFBhecOpJyksIHZhbHVlOiAndHRjJywgYWxpZ246ICdlbmQnIH0sXG4gICAgICBdLFxuICAgICAgaGVhZGVyc0RlcGVuc2VzOiBbXG4gICAgICAgIHsgdGV4dDogdGhpcy4kdCgnRGF0ZSBPcCcpLCB2YWx1ZTogJ2RhdGUnLCB3aWR0aDogJzkwcHgnIH0sXG4gICAgICAgIHsgdGV4dDogdGhpcy4kdCgnRGF0ZSBGYWMnKSwgdmFsdWU6ICdkYXRlX2ZhY3R1cmUnLCB3aWR0aDogJzkwcHgnIH0sXG4gICAgICAgIHsgdGV4dDogdGhpcy4kdCgnUsOpZicpLCB2YWx1ZTogJ3JlZicgfSxcbiAgICAgICAgeyB0ZXh0OiB0aGlzLiR0KCdGb3Vybmlzc2V1cicpLCB2YWx1ZTogJ3RpZXInIH0sXG4gICAgICAgIHsgdGV4dDogdGhpcy4kdCgnQ2F0JyksIHZhbHVlOiAnY2F0ZWdvcnknIH0sXG4gICAgICAgIHsgdGV4dDogdGhpcy4kdCgnJSBSw6lnbMOpJyksIHZhbHVlOiAncGF5bWVudF9wZXJjZW50YWdlJywgYWxpZ246ICdjZW50ZXInIH0sXG4gICAgICAgIHsgdGV4dDogdGhpcy4kdCgnVG90YWwgRmFjJyksIHZhbHVlOiAndG90YWxfaW52b2ljZScsIGFsaWduOiAnZW5kJyB9LFxuICAgICAgICB7IHRleHQ6IHRoaXMuJHQoJ0hUIFBhecOpJyksIHZhbHVlOiAnaHQnLCBhbGlnbjogJ2VuZCcgfSxcbiAgICAgICAgeyB0ZXh0OiB0aGlzLiR0KCdUVkEgUGF5JyksIHZhbHVlOiAndHZhJywgYWxpZ246ICdlbmQnIH0sXG4gICAgICAgIHsgdGV4dDogdGhpcy4kdCgnVFRDIFBhecOpJyksIHZhbHVlOiAndHRjJywgYWxpZ246ICdlbmQnIH0sXG4gICAgICBdLFxuICAgIH07XG4gIH0sXG4gIGNvbXB1dGVkOiB7XG4gICAgQmFzZV91cmxfd2ViKCkge1xuICAgICAgcmV0dXJuIHRoaXMuJHN0b3JlLmdldHRlcnNbXCJnZXRfQmFzZV91cmxcIl07XG4gICAgfSxcbiAgICBwZXJpb2RMYWJlbHMoKSB7XG4gICAgICBpZiAodGhpcy5yZWdpbWUgPT09ICdtZW5zdWVsbGUnKSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgdGhpcy4kdCgnSmFuJyksIHRoaXMuJHQoJ0bDqXYnKSwgdGhpcy4kdCgnTWFyJyksXG4gICAgICAgICAgdGhpcy4kdCgnQXZyJyksIHRoaXMuJHQoJ01haScpLCB0aGlzLiR0KCdKdWluJyksXG4gICAgICAgICAgdGhpcy4kdCgnSnVpbCcpLCB0aGlzLiR0KCdBb8O7dCcpLCB0aGlzLiR0KCdTZXAnKSxcbiAgICAgICAgICB0aGlzLiR0KCdPY3QnKSwgdGhpcy4kdCgnTm92JyksIHRoaXMuJHQoJ0TDqWMnKVxuICAgICAgICBdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICB0aGlzLiR0KCdRMScpLFxuICAgICAgICAgIHRoaXMuJHQoJ1EyJyksXG4gICAgICAgICAgdGhpcy4kdCgnUTMnKSxcbiAgICAgICAgICB0aGlzLiR0KCdRNCcpXG4gICAgICAgIF07XG4gICAgICB9XG4gICAgfSxcbiAgfSxcbiAgY3JlYXRlZCgpIHtcbiAgICAvLyBJbml0aWFsaXplIHRoZSB2aWV3IGZvciB0YWJsZS1ydW4gY29tcG9uZW50c1xuICAgIC8vIFRoaXMgc2VjdGlvbiBpcyByZW1vdmVkIGFzIHRhYmxlLXJ1biBjb21wb25lbnRzIGFyZSBubyBsb25nZXIgdXNlZCBkaXJlY3RseSBoZXJlLlxuICB9LFxuICBtb3VudGVkKCkge1xuICAgIHRoaXMuc2VsZWN0ZWRQZXJpb2RJbmRleCA9IG51bGw7XG4gICAgdGhpcy5mZXRjaERhdGEoKTtcbiAgfSxcbiAgbWV0aG9kczoge1xuICAgIGZvcm1hdE1vbmV5KHZhbHVlKSB7XG4gICAgICByZXR1cm4gcGFyc2VGbG9hdCh2YWx1ZSB8fCAwKS50b0xvY2FsZVN0cmluZygnZnItTUEnLCB7IG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMiwgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAyIH0pICsgJyBESCc7XG4gICAgfSxcblxuICAgIG9uUmVnaW1lQ2hhbmdlKCkge1xuICAgICAgdGhpcy5zZWxlY3RlZFBlcmlvZEluZGV4ID0gbnVsbDtcbiAgICAgIHRoaXMuZmV0Y2hEYXRhKCk7XG4gICAgfSxcblxuICAgIGNhbGN1bGF0ZURhdGVBbmRGZXRjaCgpIHtcbiAgICAgIHRoaXMuZmV0Y2hEYXRhKCk7XG4gICAgfSxcblxuICAgIGZldGNoRGF0YSgpIHtcbiAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG5cbiAgICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgICAgcmVnaW1lOiB0aGlzLnJlZ2ltZSxcbiAgICAgICAgZGF0ZTogdGhpcy5zZWxlY3RlZFllYXJcbiAgICAgIH07XG5cbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkUGVyaW9kSW5kZXggIT09IG51bGwpIHtcbiAgICAgICAgaWYgKHRoaXMucmVnaW1lID09PSAndHJpbWVzdHJpZWxsZScpIHtcbiAgICAgICAgICBwYXJhbXMudHJpbWVzdHJlID0gdGhpcy5zZWxlY3RlZFBlcmlvZEluZGV4O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIEZvciBtb250aGx5LCBzZWxlY3RlZFBlcmlvZEluZGV4IGlzIDEtMTJcbiAgICAgICAgICBwYXJhbXMuZGF0ZSA9IGAke3RoaXMuc2VsZWN0ZWRZZWFyfS0ke1N0cmluZyh0aGlzLnNlbGVjdGVkUGVyaW9kSW5kZXgpLnBhZFN0YXJ0KDIsICcwJyl9YDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBheGlvcy5nZXQodGhpcy5CYXNlX3VybF93ZWIgKyAnL3R2YS9kZWNsYXJhdGlvbi9hcGknLCB7XG4gICAgICAgIHBhcmFtcyxcbiAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgIEF1dGhvcml6YXRpb246IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiSldUVG9rZW5cIilcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgICAgLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgICAgIHRoaXMuaXRlbXMgPSByZXNwb25zZS5kYXRhO1xuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goZXJyb3IgPT4ge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuJHN0b3JlLmRpc3BhdGNoKFwic2hvd1NuYWNrYmFyXCIsIHtcbiAgICAgICAgICAgIHRleHQ6IFwiRXJyZXVyIGxvcnMgZHUgY2hhcmdlbWVudCBkZXMgZG9ubsOpZXNcIixcbiAgICAgICAgICAgIGNvbG9yOiBcImVycm9yXCJcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfSxcbiAgICB0cmFuc2xpdGVyYXRlQXJhYmljVG9MYXRpbihhcmFiaWNUZXh0KSB7XG4gICAgICBpZiAodHlwZW9mIGFyYWJpY1RleHQgIT09IFwic3RyaW5nXCIpIHJldHVybiBcIlwiO1xuICAgICAgY29uc3QgYXJhYmljTWFwID0ge1xuICAgICAgICDYpzogXCJhXCIsINijOiBcImFcIiwg2KU6IFwiaVwiLCDYojogXCJhXCIsINioOiBcImJcIiwg2Ko6IFwidFwiLCDYqzogXCJ0aFwiLCDYrDogXCJqXCIsINitOiBcImhcIiwg2K46IFwia2hcIixcbiAgICAgICAg2K86IFwiZFwiLCDYsDogXCJkaFwiLCDYsTogXCJyXCIsINiyOiBcInpcIiwg2LM6IFwic1wiLCDYtDogXCJzaFwiLCDYtTogXCJzXCIsINi2OiBcImRcIiwg2Lc6IFwidFwiLCDYuDogXCJ6XCIsXG4gICAgICAgINi5OiBcImFcIiwg2Lo6IFwiZ2hcIiwg2YE6IFwiZlwiLCDZgjogXCJxXCIsINmDOiBcImtcIiwg2YQ6IFwibFwiLCDZhTogXCJtXCIsINmGOiBcIm5cIiwg2Yc6IFwiaFwiLCDZiDogXCJ3XCIsXG4gICAgICAgINmKOiBcInlcIiwg2Yk6IFwiYVwiLCDYqTogXCJhXCIsINihOiBcImFcIiwg2KQ6IFwidVwiLCDYpjogXCJlXCIsINmE2Kc6IFwibGFcIixcbiAgICAgICAgXCLZoFwiOiBcIjBcIiwgXCLZoVwiOiBcIjFcIiwgXCLZolwiOiBcIjJcIiwgXCLZo1wiOiBcIjNcIiwgXCLZpFwiOiBcIjRcIiwgXCLZpVwiOiBcIjVcIiwgXCLZplwiOiBcIjZcIiwgXCLZp1wiOiBcIjdcIiwgXCLZqFwiOiBcIjhcIiwgXCLZqVwiOiBcIjlcIixcbiAgICAgICAgXCLYjFwiOiBcIixcIiwgXCLYm1wiOiBcIjtcIiwgXCLYn1wiOiBcIj9cIiwgXCIgXCI6IFwiLVwiLCBfOiBcIi1cIlxuICAgICAgfTtcbiAgICAgIHJldHVybiBhcmFiaWNUZXh0LnJlcGxhY2UoL1teXFx3XFxzLV0vZywgKGNoYXIpID0+IGFyYWJpY01hcFtjaGFyXSB8fCBjaGFyKS5yZXBsYWNlKC9cXHMrL2csIFwiLVwiKTtcbiAgICB9LFxuXG4gICAgZXhwb3J0RXhjZWwoKSB7XG4gICAgICB0aGlzLmV4cG9ydGluZyA9IHRydWU7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBvcHRpb24gPSB7fTtcbiAgICAgICAgY29uc3QgZmlsZU5hbWUgPSBgZGVjbGFyYXRpb25fdHZhXyR7dGhpcy5zZWxlY3RlZFllYXJ9XyR7dGhpcy5yZWdpbWV9YDtcbiAgICAgICAgb3B0aW9uLmZpbGVOYW1lID0gZmlsZU5hbWU7XG5cbiAgICAgICAgLy8gU2hlZXQgMTogUsOpc3Vtw6lcbiAgICAgICAgY29uc3Qgc3VtbWFyeURhdGEgPSBbXG4gICAgICAgICAgeyBEZXNjcmlwdGlvbjogJ1RWQSBDb2xsZWN0w6llJywgTW9udGFudDogdGhpcy5pdGVtcy50dmFfY29sbGVjdGVlIH0sXG4gICAgICAgICAgeyBEZXNjcmlwdGlvbjogJ1RWQSBEw6lkdWN0aWJsZScsIE1vbnRhbnQ6IHRoaXMuaXRlbXMudHZhX2RlZHVjdGlibGUgfSxcbiAgICAgICAgICB7IERlc2NyaXB0aW9uOiB0aGlzLml0ZW1zLnR2YV9kdWUgPj0gMCA/ICdUVkEgw6AgUGF5ZXInIDogJ0Nyw6lkaXQgVFZBJywgTW9udGFudDogTWF0aC5hYnModGhpcy5pdGVtcy50dmFfZHVlKSB9XG4gICAgICAgIF07XG5cbiAgICAgICAgLy8gU2hlZXQgMjogUmVjZXR0ZXNcbiAgICAgICAgY29uc3QgcmVjZXR0ZXNEYXRhID0gKHRoaXMuaXRlbXMuZGV0YWlscz8uY29sbGVjdGVlIHx8IFtdKS5tYXAoaXRlbSA9PiAoe1xuICAgICAgICAgIERhdGVPcDogaXRlbS5kYXRlLFxuICAgICAgICAgIERhdGVGYWM6IGl0ZW0uZGF0ZV9mYWN0dXJlLFxuICAgICAgICAgIFJlZjogaXRlbS5yZWYsXG4gICAgICAgICAgQ2xpZW50OiBpdGVtLnRpZXIsXG4gICAgICAgICAgQ2F0ZWdvcmllOiBpdGVtLmNhdGVnb3J5LFxuICAgICAgICAgIFRvdGFsRmFjOiBpdGVtLnRvdGFsX2ludm9pY2UsXG4gICAgICAgICAgSFQ6IGl0ZW0uaHQsXG4gICAgICAgICAgVFZBOiBpdGVtLnR2YSxcbiAgICAgICAgICBUVEM6IGl0ZW0udHRjXG4gICAgICAgIH0pKTtcblxuICAgICAgICAvLyBTaGVldCAzOiBEw6lwZW5zZXNcbiAgICAgICAgY29uc3QgZGVwZW5zZXNEYXRhID0gKHRoaXMuaXRlbXMuZGV0YWlscz8uZGVkdWN0aWJsZSB8fCBbXSkubWFwKGl0ZW0gPT4gKHtcbiAgICAgICAgICBEYXRlT3A6IGl0ZW0uZGF0ZSxcbiAgICAgICAgICBEYXRlRmFjOiBpdGVtLmRhdGVfZmFjdHVyZSxcbiAgICAgICAgICBSZWY6IGl0ZW0ucmVmLFxuICAgICAgICAgIEZvdXJuaXNzZXVyOiBpdGVtLnRpZXIsXG4gICAgICAgICAgQ2F0ZWdvcmllOiBpdGVtLmNhdGVnb3J5LFxuICAgICAgICAgIFRvdGFsRmFjOiBpdGVtLnRvdGFsX2ludm9pY2UsXG4gICAgICAgICAgSFQ6IGl0ZW0uaHQsXG4gICAgICAgICAgVFZBOiBpdGVtLnR2YSxcbiAgICAgICAgICBUVEM6IGl0ZW0udHRjXG4gICAgICAgIH0pKTtcblxuICAgICAgICBvcHRpb24uZGF0YXMgPSBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgc2hlZXROYW1lOiBcIlLDqXN1bcOpIFRWQVwiLFxuICAgICAgICAgICAgc2hlZXREYXRhOiBzdW1tYXJ5RGF0YSxcbiAgICAgICAgICAgIHNoZWV0SGVhZGVyOiBbXCJEZXNjcmlwdGlvblwiLCBcIk1vbnRhbnRcIl1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHNoZWV0TmFtZTogXCJUVkEgQ29sbGVjdMOpZVwiLFxuICAgICAgICAgICAgc2hlZXREYXRhOiByZWNldHRlc0RhdGEsXG4gICAgICAgICAgICBzaGVldEhlYWRlcjogW1wiRGF0ZU9wXCIsIFwiRGF0ZUZhY1wiLCBcIlJlZlwiLCBcIkNsaWVudFwiLCBcIkNhdGVnb3JpZVwiLCBcIlRvdGFsRmFjXCIsIFwiSFRcIiwgXCJUVkFcIiwgXCJUVENcIl1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHNoZWV0TmFtZTogXCJUVkEgRMOpZHVjdGlibGVcIixcbiAgICAgICAgICAgIHNoZWV0RGF0YTogZGVwZW5zZXNEYXRhLFxuICAgICAgICAgICAgc2hlZXRIZWFkZXI6IFtcIkRhdGVPcFwiLCBcIkRhdGVGYWNcIiwgXCJSZWZcIiwgXCJGb3Vybmlzc2V1clwiLCBcIkNhdGVnb3JpZVwiLCBcIlRvdGFsRmFjXCIsIFwiSFRcIiwgXCJUVkFcIiwgXCJUVENcIl1cbiAgICAgICAgICB9XG4gICAgICAgIF07XG5cbiAgICAgICAgY29uc3QgdG9FeGNlbCA9IG5ldyBFeHBvcnRKc29uRXhjZWwob3B0aW9uKTtcbiAgICAgICAgdG9FeGNlbC5zYXZlRXhjZWwoKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXCJFeHBvcnQgRXhjZWwgRXJyb3I6XCIsIGVycm9yKTtcbiAgICAgICAgdGhpcy4kc3RvcmUuZGlzcGF0Y2goXCJzaG93U25hY2tiYXJcIiwgeyB0ZXh0OiBcIkVycmV1ciBleHBvcnQgRXhjZWxcIiwgY29sb3I6IFwiZXJyb3JcIiB9KTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIHRoaXMuZXhwb3J0aW5nID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSxcblxuICAgIGV4cG9ydFBkZigpIHtcbiAgICAgIHRoaXMuZXhwb3J0aW5nID0gdHJ1ZTtcbiAgICAgIGNvbnN0IGRvYyA9IG5ldyBqc1BERigpO1xuXG4gICAgICBjb25zdCB0aXRsZSA9IHRoaXMudHJhbnNsaXRlcmF0ZUFyYWJpY1RvTGF0aW4oYETDqWNsYXJhdGlvbiBUVkEgJHt0aGlzLnNlbGVjdGVkWWVhcn1gKTtcblxuICAgICAgLy8gSGVhZGVyXG4gICAgICBkb2Muc2V0Rm9udFNpemUoMTgpO1xuICAgICAgZG9jLnRleHQodGl0bGUsIDE0LCAxNSk7XG5cbiAgICAgIGRvYy5zZXRGb250U2l6ZSgxMCk7XG4gICAgICBkb2MudGV4dChgRGF0ZTogJHtuZXcgRGF0ZSgpLnRvTG9jYWxlRGF0ZVN0cmluZygpfWAsIDE0LCAyMik7XG4gICAgICBkb2MudGV4dChgUmVnaW1lOiAke3RoaXMudHJhbnNsaXRlcmF0ZUFyYWJpY1RvTGF0aW4odGhpcy5yZWdpbWUpfWAsIDE0LCAyNyk7XG5cbiAgICAgIC8vIFN1bW1hcnkgVGFibGVcbiAgICAgIGNvbnN0IHN1bW1hcnlEYXRhID0gW1xuICAgICAgICBbJ1RWQSBDb2xsZWN0ZWUnLCB0aGlzLmZvcm1hdE1vbmV5KHRoaXMuaXRlbXMudHZhX2NvbGxlY3RlZSldLFxuICAgICAgICBbJ1RWQSBEZWR1Y3RpYmxlJywgdGhpcy5mb3JtYXRNb25leSh0aGlzLml0ZW1zLnR2YV9kZWR1Y3RpYmxlKV0sXG4gICAgICAgIFtcbiAgICAgICAgICB0aGlzLml0ZW1zLnR2YV9kdWUgPj0gMCA/ICdUVkEgQSBQQVlFUicgOiAnQ1JFRElUIERFIFRWQScsXG4gICAgICAgICAgdGhpcy5mb3JtYXRNb25leShNYXRoLmFicyh0aGlzLml0ZW1zLnR2YV9kdWUpKVxuICAgICAgICBdXG4gICAgICBdO1xuXG4gICAgICBkb2MudGV4dChcIlJFU1VNRVwiLCAxNCwgMzUpO1xuICAgICAgYXV0b1RhYmxlKGRvYywge1xuICAgICAgICBoZWFkOiBbWydEZXNjcmlwdGlvbicsICdNb250YW50J11dLFxuICAgICAgICBib2R5OiBzdW1tYXJ5RGF0YSxcbiAgICAgICAgc3RhcnRZOiA0MCxcbiAgICAgICAgdGhlbWU6ICdncmlkJyxcbiAgICAgICAgaGVhZFN0eWxlczogeyBmaWxsQ29sb3I6IFsxMDMsIDEyNiwgMjM0XSwgdGV4dENvbG9yOiAyNTUgfSxcbiAgICAgICAgY29sdW1uU3R5bGVzOiB7IDE6IHsgaGFsaWduOiAncmlnaHQnIH0gfVxuICAgICAgfSk7XG5cbiAgICAgIC8vIFJlY2V0dGVzIFRhYmxlXG4gICAgICBsZXQgZmluYWxZID0gZG9jLmxhc3RBdXRvVGFibGUuZmluYWxZICsgMTA7XG4gICAgICBkb2MudGV4dChcIkRFVEFJTFMgVFZBIENPTExFQ1RFRVwiLCAxNCwgZmluYWxZKTtcblxuICAgICAgY29uc3Qgcm93c1JlY2V0dGVzID0gKHRoaXMuaXRlbXMuZGV0YWlscz8uY29sbGVjdGVlIHx8IFtdKS5tYXAoaXRlbSA9PiBbXG4gICAgICAgIGl0ZW0uZGF0ZSxcbiAgICAgICAgaXRlbS5kYXRlX2ZhY3R1cmUsXG4gICAgICAgIHRoaXMudHJhbnNsaXRlcmF0ZUFyYWJpY1RvTGF0aW4oaXRlbS5yZWYpLFxuICAgICAgICB0aGlzLnRyYW5zbGl0ZXJhdGVBcmFiaWNUb0xhdGluKGl0ZW0udGllciksXG4gICAgICAgIHRoaXMuZm9ybWF0TW9uZXkoaXRlbS5odCksXG4gICAgICAgIHRoaXMuZm9ybWF0TW9uZXkoaXRlbS50dmEpLFxuICAgICAgICB0aGlzLmZvcm1hdE1vbmV5KGl0ZW0udHRjKVxuICAgICAgXSk7XG5cbiAgICAgIGF1dG9UYWJsZShkb2MsIHtcbiAgICAgICAgc3RhcnRZOiBmaW5hbFkgKyA1LFxuICAgICAgICBoZWFkOiBbWydEYXRlJywgJ0RhdGUgRmFjJywgJ1JlZicsICdDbGllbnQnLCAnSFQnLCAnVFZBJywgJ1RUQyddXSxcbiAgICAgICAgYm9keTogcm93c1JlY2V0dGVzLFxuICAgICAgICB0aGVtZTogJ3N0cmlwZWQnLFxuICAgICAgICBzdHlsZXM6IHsgZm9udFNpemU6IDggfSxcbiAgICAgICAgaGVhZFN0eWxlczogeyBmaWxsQ29sb3I6IFs3NiwgMTc1LCA4MF0gfVxuICAgICAgfSk7XG5cbiAgICAgIC8vIERlcGVuc2VzIFRhYmxlXG4gICAgICBmaW5hbFkgPSBkb2MubGFzdEF1dG9UYWJsZS5maW5hbFkgKyAxMDtcbiAgICAgIC8vIEFkZCBuZXcgcGFnZSBpZiBub3QgZW5vdWdoIHNwYWNlXG4gICAgICBpZiAoZmluYWxZID4gMjUwKSB7XG4gICAgICAgIGRvYy5hZGRQYWdlKCk7XG4gICAgICAgIGZpbmFsWSA9IDIwO1xuICAgICAgfVxuXG4gICAgICBkb2MudGV4dChcIkRFVEFJTFMgVFZBIERFRFVDVElCTEVcIiwgMTQsIGZpbmFsWSk7XG5cbiAgICAgIGNvbnN0IHJvd3NEZXBlbnNlcyA9ICh0aGlzLml0ZW1zLmRldGFpbHM/LmRlZHVjdGlibGUgfHwgW10pLm1hcChpdGVtID0+IFtcbiAgICAgICAgaXRlbS5kYXRlLFxuICAgICAgICBpdGVtLmRhdGVfZmFjdHVyZSxcbiAgICAgICAgdGhpcy50cmFuc2xpdGVyYXRlQXJhYmljVG9MYXRpbihpdGVtLnJlZiksXG4gICAgICAgIHRoaXMudHJhbnNsaXRlcmF0ZUFyYWJpY1RvTGF0aW4oaXRlbS50aWVyKSxcbiAgICAgICAgdGhpcy5mb3JtYXRNb25leShpdGVtLmh0KSxcbiAgICAgICAgdGhpcy5mb3JtYXRNb25leShpdGVtLnR2YSksXG4gICAgICAgIHRoaXMuZm9ybWF0TW9uZXkoaXRlbS50dGMpXG4gICAgICBdKTtcblxuICAgICAgYXV0b1RhYmxlKGRvYywge1xuICAgICAgICBzdGFydFk6IGZpbmFsWSArIDUsXG4gICAgICAgIGhlYWQ6IFtbJ0RhdGUnLCAnRGF0ZSBGYWMnLCAnUmVmJywgJ0ZybnMnLCAnSFQnLCAnVFZBJywgJ1RUQyddXSxcbiAgICAgICAgYm9keTogcm93c0RlcGVuc2VzLFxuICAgICAgICB0aGVtZTogJ3N0cmlwZWQnLFxuICAgICAgICBzdHlsZXM6IHsgZm9udFNpemU6IDggfSxcbiAgICAgICAgaGVhZFN0eWxlczogeyBmaWxsQ29sb3I6IFsyNDQsIDY3LCA1NF0gfVxuICAgICAgfSk7XG5cbiAgICAgIGRvYy5zYXZlKGBkZWNsYXJhdGlvbl90dmFfJHt0aGlzLnNlbGVjdGVkWWVhcn0ucGRmYCk7XG4gICAgICB0aGlzLmV4cG9ydGluZyA9IGZhbHNlO1xuICAgIH1cbiAgfVxufTtcbjwvc2NyaXB0PlxuXG48c3R5bGUgc2NvcGVkPlxuLnRyYW5zaXRpb24tc3dpbmcge1xuICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtcbn1cblxuLnRyYW5zaXRpb24tc3dpbmc6aG92ZXIge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTVweCk7XG59XG5cbi5yb3VuZGVkLXhsIHtcbiAgYm9yZGVyLXJhZGl1czogMTZweCAhaW1wb3J0YW50O1xufVxuXG4ucm91bmRlZC1sZyB7XG4gIGJvcmRlci1yYWRpdXM6IDEycHggIWltcG9ydGFudDtcbn1cblxuLndoaXRlLWlucHV0IC52LWlucHV0X19zbG90IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGUgIWltcG9ydGFudDtcbn1cblxuLnYtYnRuLXRvZ2dsZS0tZ3JvdXA+LnYtYnRuLnYtYnRuIHtcbiAgYm9yZGVyLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMTIpO1xufVxuXG4udi10YWIge1xuICB0ZXh0LXRyYW5zZm9ybTogbm9uZSAhaW1wb3J0YW50O1xufVxuPC9zdHlsZT5cbiIsIjx0ZW1wbGF0ZT5cbiAgPHYtY29udGFpbmVyIGZsdWlkIGNsYXNzPVwicGEtMFwiPlxuICAgIDwhLS0gVGFiIFN3aXRjaGVyIC0tPlxuICAgIDx2LXJvdyBjbGFzcz1cImp1c3RpZnktY2VudGVyIG1hLTBcIj5cbiAgICAgIDx2LWNvbCBjb2xzPVwiMTJcIiBsZz1cIjExXCIgY2xhc3M9XCJwYi0wXCI+XG4gICAgICAgIDx2LXRhYnMgdi1tb2RlbD1cImFjdGl2ZVRhYlwiIGNlbnRlcmVkIGNvbG9yPVwicHJpbWFyeVwiIGNsYXNzPVwiZWxldmF0aW9uLTIgcm91bmRlZC1sZ1wiPlxuICAgICAgICAgIDx2LXRhYiBjbGFzcz1cImZvbnQtd2VpZ2h0LW1lZGl1bVwiPlxuICAgICAgICAgICAgPHYtaWNvbiBsZWZ0Pm1kaS12aWV3LWRhc2hib2FyZDwvdi1pY29uPlxuICAgICAgICAgICAgVGFibGVhdSBkZSBCb3JkXG4gICAgICAgICAgPC92LXRhYj5cbiAgICAgICAgICA8di10YWIgY2xhc3M9XCJmb250LXdlaWdodC1tZWRpdW1cIj5cbiAgICAgICAgICAgIDx2LWljb24gbGVmdD5tZGktZm9ybWF0LWxpc3QtYnVsbGV0ZWQ8L3YtaWNvbj5cbiAgICAgICAgICAgIFRyYW5zYWN0aW9uc1xuICAgICAgICAgIDwvdi10YWI+XG4gICAgICAgICAgPHYtdGFiIGNsYXNzPVwiZm9udC13ZWlnaHQtbWVkaXVtXCI+XG4gICAgICAgICAgICA8di1pY29uIGxlZnQ+bWRpLWNhbGVuZGFyLW1vbnRoPC92LWljb24+XG4gICAgICAgICAgICBDYWxlbmRyaWVyIEFubnVlbFxuICAgICAgICAgIDwvdi10YWI+XG4gICAgICAgIDwvdi10YWJzPlxuICAgICAgPC92LWNvbD5cbiAgICA8L3Ytcm93PlxuXG4gICAgPCEtLSBUYWIgSXRlbXMgLS0+XG4gICAgPHYtcm93IGNsYXNzPVwianVzdGlmeS1jZW50ZXIgbWEtMFwiPlxuICAgICAgPHYtY29sIGNvbHM9XCIxMlwiIGxnPVwiMTFcIj5cbiAgICAgICAgPHYtdGFicy1pdGVtcyB2LW1vZGVsPVwiYWN0aXZlVGFiXCIgY2xhc3M9XCJ0cmFuc3BhcmVudFwiPlxuICAgICAgICAgIDwhLS0gVGFiIDE6IERhc2hib2FyZCAoV2lkZ2V0cyArIEFsZXJ0cykgLS0+XG4gICAgICAgICAgPHYtdGFiLWl0ZW0+XG4gICAgICAgICAgICA8di1mYWRlLXRyYW5zaXRpb24gbW9kZT1cIm91dC1pblwiPlxuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDx2LXJvdyBjbGFzcz1cIm1iLTRcIj5cbiAgICAgICAgICAgICAgICAgIDwhLS0gQWxlcnRzIFNlY3Rpb24gLS0+XG4gICAgICAgICAgICAgICAgICA8di1jb2wgY29scz1cIjEyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhbGVydHMtd3JhcHBlclwiPlxuICAgICAgICAgICAgICAgICAgICAgIDx2LXJvdz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx3aWRnZXRzLWFsZXJ0c2xpc3RCbEltcGV5ZUZvdXJuaXNzZXVyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8d2lkZ2V0cy1hbGVydHNsaXN0QmxJbXBleWVDbGllbnQgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L3Ytcm93PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvdi1jb2w+XG5cbiAgICAgICAgICAgICAgICAgIDwhLS0gVHJhbnNhY3Rpb24gQm9ucyBXaWRnZXQgLS0+XG4gICAgICAgICAgICAgICAgICA8di1jb2wgY29scz1cIjEyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3aWRnZXQtd3JhcHBlclwiPlxuICAgICAgICAgICAgICAgICAgICAgIDx0cmFuc2FjdGlvbkJvbnMgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L3YtY29sPlxuICAgICAgICAgICAgICAgIDwvdi1yb3c+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC92LWZhZGUtdHJhbnNpdGlvbj5cbiAgICAgICAgICA8L3YtdGFiLWl0ZW0+XG5cbiAgICAgICAgICA8IS0tIFRhYiAyOiBUcmFuc2FjdGlvbnMgTGlzdCAtLT5cbiAgICAgICAgICA8di10YWItaXRlbT5cbiAgICAgICAgICAgIDx2LWZhZGUtdHJhbnNpdGlvbiBtb2RlPVwib3V0LWluXCI+XG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPHYtcm93PlxuICAgICAgICAgICAgICAgICAgPHYtY29sIGNvbHM9XCIxMlwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtd3JhcHBlclwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxjYXJkLWJveCBpZD1cInRhYmxlXCIgY29sb3I9XCJibHVlXCIgOnRpdGxlPVwiJHQoJ2JveF90aXRsZV9yZWxldmViYW5jYWlyZXNib24nKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA6dGV4dD1cIiR0KCdib3hfdGV4dF9yZWxldmViYW5jYWlyZXNib24nKVwiIGNsYXNzPVwiZWxldmF0aW9uLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxyZWxldmVib24tcnVuIDpjb250cm9sbGVyX3Jvb3Q9XCJjb250cm9sbGVyX3Jvb3RcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgIDwvY2FyZC1ib3g+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC92LWNvbD5cbiAgICAgICAgICAgICAgICA8L3Ytcm93PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvdi1mYWRlLXRyYW5zaXRpb24+XG4gICAgICAgICAgPC92LXRhYi1pdGVtPlxuXG4gICAgICAgICAgPCEtLSBUYWIgMzogWWVhcmx5IENhbGVuZGFyIFZpZXcgLS0+XG4gICAgICAgICAgPHYtdGFiLWl0ZW0+XG4gICAgICAgICAgICA8di1mYWRlLXRyYW5zaXRpb24gbW9kZT1cIm91dC1pblwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXItd3JhcHBlclwiPlxuICAgICAgICAgICAgICAgIDx5ZWFybHktY2FsZW5kYXItdmlldy1ib24gOmNvbnRyb2xsZXJfcm9vdD1cImNvbnRyb2xsZXJfcm9vdFwiIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC92LWZhZGUtdHJhbnNpdGlvbj5cbiAgICAgICAgICA8L3YtdGFiLWl0ZW0+XG4gICAgICAgIDwvdi10YWJzLWl0ZW1zPlxuICAgICAgPC92LWNvbD5cbiAgICA8L3Ytcm93PlxuICA8L3YtY29udGFpbmVyPlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdD5cbmltcG9ydCBWaWV3TWl4aW4gZnJvbSBcIkAvdmlld3Mvc2hvd1wiO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIG1peGluczogW1ZpZXdNaXhpbl0sXG5cbiAgZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgY29udHJvbGxlcl9yb290OiBcInJlbGV2ZWJhbmNhaXJlc2JvblwiLFxuICAgICAgbmFtZW1vZHVsZTogXCJUcmFuc2FjdGlvbnNib25cIixcbiAgICAgIGFjdGl2ZVRhYjogMCxcbiAgICAgIG9wdGlvbnNfc2hvd0RhdGE6IHtcbiAgICAgICAgdGl0bGU6IFwiTGUgcmVsZXbDqSBkZSBjb21wdGUgYm9uXCIsXG4gICAgICAgIG5vdF9hZmZpY2hlOiBbXSxcbiAgICAgICAgZXhwYW5kZWQ6IFtdLFxuICAgICAgfSxcbiAgICB9O1xuICB9LFxuXG4gIGNyZWF0ZWQoKSB7XG4gICAgdGhpcy5pbml0aWEoKTtcblxuICAgIHRoaXMuJHN0b3JlLmRpc3BhdGNoKFwicnVuX3Nob3dcIiwgeyBuYW1lc19jb250cm9sbGVyczogdW5kZWZpbmVkIH0pO1xuICAgIHRoaXMuJHN0b3JlLmRpc3BhdGNoKFwiaW5pdGlhbGl6ZV9zdHJ1Y3RfZnJvbVwiLCB7XG4gICAgICBuYW1lc19jb250cm9sbGVyczogdW5kZWZpbmVkLFxuICAgIH0pO1xuICAgIGRvY3VtZW50LnRpdGxlID0gXCJMZSByZWxldsOpIGRlIGNvbXB0ZSBib25cIjtcbiAgfSxcbn07XG48L3NjcmlwdD5cblxuPHN0eWxlIHNjb3BlZD5cbi8qIE1vZGVybiBjb250YWluZXIgc3R5bGluZyAqL1xuLnYtY29udGFpbmVyIHtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG59XG5cbi8qIFdyYXBwZXIgYW5pbWF0aW9ucyBhbmQgc3BhY2luZyAqL1xuLmFsZXJ0cy13cmFwcGVyLFxuLndpZGdldC13cmFwcGVyLFxuLnRhYmxlLXdyYXBwZXIsXG4uY2FsZW5kYXItd3JhcHBlciB7XG4gIHRyYW5zaXRpb246IGFsbCAwLjNzIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7XG59XG5cbi8qIEVuaGFuY2VkIGhvdmVyIGVmZmVjdHMgZm9yIGludGVyYWN0aXZlIGFyZWFzICovXG4uYWxlcnRzLXdyYXBwZXI6aG92ZXIsXG4ud2lkZ2V0LXdyYXBwZXI6aG92ZXIsXG4udGFibGUtd3JhcHBlcjpob3ZlciB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTtcbn1cblxuLyogVGFiIHN0eWxpbmcgaW1wcm92ZW1lbnRzICovXG4udi10YWJzIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdi1zdXJmYWNlLWJhc2UpICFpbXBvcnRhbnQ7XG4gIG1hcmdpbi1ib3R0b206IDEuNXJlbTtcbn1cblxuLyogU21vb3RoIHRyYW5zaXRpb25zICovXG4udi1mYWRlLXRyYW5zaXRpb24tZW50ZXItYWN0aXZlLFxuLnYtZmFkZS10cmFuc2l0aW9uLWxlYXZlLWFjdGl2ZSB7XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgMC4zcyBlYXNlO1xufVxuXG4udi1mYWRlLXRyYW5zaXRpb24tZW50ZXIsXG4udi1mYWRlLXRyYW5zaXRpb24tbGVhdmUtdG8ge1xuICBvcGFjaXR5OiAwO1xufVxuXG4vKiBSZXNwb25zaXZlIHNwYWNpbmcgYWRqdXN0bWVudHMgKi9cbkBtZWRpYSAobWF4LXdpZHRoOiA5NTlweCkge1xuICAud2lkZ2V0LXdyYXBwZXIge1xuICAgIG1hcmdpbi10b3A6IDFyZW07XG4gIH1cbn1cblxuLyogTW9kZXJuIHNoYWRvdyBlZmZlY3RzICovXG4udGFibGUtd3JhcHBlcj4+Pi5jYXJkLWJveCB7XG4gIGJveC1zaGFkb3c6IDAgNHB4IDZweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4xKSxcbiAgICAwIDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMDYpO1xuICBib3JkZXItcmFkaXVzOiA4cHg7XG4gIHRyYW5zaXRpb246IGJveC1zaGFkb3cgMC4zcyBlYXNlO1xufVxuXG4udGFibGUtd3JhcHBlcj4+Pi5jYXJkLWJveDpob3ZlciB7XG4gIGJveC1zaGFkb3c6IDAgMTBweCAxNXB4IC0zcHggcmdiYSgwLCAwLCAwLCAwLjEpLFxuICAgIDAgNHB4IDZweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4wNSk7XG59XG5cbi8qIENhbGVuZGFyIHdyYXBwZXIgc3BlY2lmaWMgc3R5bGluZyAqL1xuLmNhbGVuZGFyLXdyYXBwZXIge1xuICBtaW4taGVpZ2h0OiA0MDBweDtcbiAgcGFkZGluZzogOHB4IDA7XG59XG5cbi8qIERhcmsgbW9kZSBzdXBwb3J0ICovXG4udGhlbWUtLWRhcmsgLmFsZXJ0cy13cmFwcGVyLFxuLnRoZW1lLS1kYXJrIC53aWRnZXQtd3JhcHBlcixcbi50aGVtZS0tZGFyayAudGFibGUtd3JhcHBlciB7XG4gIGZpbHRlcjogYnJpZ2h0bmVzcygxLjA1KTtcbn1cbjwvc3R5bGU+XG4iLCI8dGVtcGxhdGU+XG4gIDx2LWNvbnRhaW5lciBmbHVpZCBjbGFzcz1cInBhLTBcIj5cbiAgICA8IS0tIFRhYiBTd2l0Y2hlciAtLT5cbiAgICA8di1yb3cgY2xhc3M9XCJqdXN0aWZ5LWNlbnRlciBtYS0wXCI+XG4gICAgICA8di1jb2wgY29scz1cIjEyXCIgbGc9XCIxMVwiIGNsYXNzPVwicGItMFwiPlxuICAgICAgICA8di10YWJzIHYtbW9kZWw9XCJhY3RpdmVUYWJcIiBjZW50ZXJlZCBjb2xvcj1cInByaW1hcnlcIiBjbGFzcz1cImVsZXZhdGlvbi0yIHJvdW5kZWQtbGdcIj5cbiAgICAgICAgICA8di10YWIgY2xhc3M9XCJmb250LXdlaWdodC1tZWRpdW1cIj5cbiAgICAgICAgICAgIDx2LWljb24gbGVmdD5tZGktZm9ybWF0LWxpc3QtYnVsbGV0ZWQ8L3YtaWNvbj5cbiAgICAgICAgICAgIExpc3RlIGRlcyB0cmFuc2FjdGlvbnNcbiAgICAgICAgICA8L3YtdGFiPlxuICAgICAgICAgIDx2LXRhYiBjbGFzcz1cImZvbnQtd2VpZ2h0LW1lZGl1bVwiPlxuICAgICAgICAgICAgPHYtaWNvbiBsZWZ0Pm1kaS1jYWxlbmRhci1tb250aDwvdi1pY29uPlxuICAgICAgICAgICAgVnVlIGNhbGVuZHJpZXIgYW5udWVsXG4gICAgICAgICAgPC92LXRhYj5cbiAgICAgICAgPC92LXRhYnM+XG4gICAgICA8L3YtY29sPlxuICAgIDwvdi1yb3c+XG5cbiAgICA8IS0tIFRhYiBJdGVtcyAtLT5cbiAgICA8di1yb3cgY2xhc3M9XCJqdXN0aWZ5LWNlbnRlciBtYS0wXCI+XG4gICAgICA8di1jb2wgY29scz1cIjEyXCIgbGc9XCIxMVwiPlxuICAgICAgICA8di10YWJzLWl0ZW1zIHYtbW9kZWw9XCJhY3RpdmVUYWJcIiBjbGFzcz1cInRyYW5zcGFyZW50XCI+XG4gICAgICAgICAgPCEtLSBUYWIgMTogTGlzdCBWaWV3IChSZW9yZ2FuaXplZCkgLS0+XG4gICAgICAgICAgPHYtdGFiLWl0ZW0+XG4gICAgICAgICAgICA8di1mYWRlLXRyYW5zaXRpb24gbW9kZT1cIm91dC1pblwiPlxuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDwhLS0gVG9wIFNlY3Rpb246IENoYXJ0IGFuZCBBY2NvdW50IEJhbGFuY2VzIFNpZGUgYnkgU2lkZSAtLT5cbiAgICAgICAgICAgICAgICA8di1yb3cgY2xhc3M9XCJtYi00XCI+XG4gICAgICAgICAgICAgICAgICA8IS0tIENoYXJ0IFNlY3Rpb24gKFRha2VzIG1vcmUgc3BhY2UpIC0tPlxuICAgICAgICAgICAgICAgICAgPHYtY29sIGNvbHM9XCIxMlwiIGxnPVwiOFwiIG1kPVwiN1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hhcnQtd3JhcHBlclwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxjaGFydFRyYW5zYWN0aW9ucyAvPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvdi1jb2w+XG5cbiAgICAgICAgICAgICAgICAgIDwhLS0gQWNjb3VudCBCYWxhbmNlcyBTZWN0aW9uIChDb21wYWN0IHNpZGViYXIpIC0tPlxuICAgICAgICAgICAgICAgICAgPHYtY29sIGNvbHM9XCIxMlwiIGxnPVwiNFwiIG1kPVwiNVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFsYW5jZXMtd3JhcHBlclwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxsaXN0U29sZGVzQ29tcHRlcyAvPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvdi1jb2w+XG4gICAgICAgICAgICAgICAgPC92LXJvdz5cblxuICAgICAgICAgICAgICAgIDwhLS0gQm90dG9tIFNlY3Rpb246IFRyYW5zYWN0aW9uIFRhYmxlIChGdWxsIFdpZHRoKSAtLT5cbiAgICAgICAgICAgICAgICA8di1yb3c+XG4gICAgICAgICAgICAgICAgICA8di1jb2wgY29scz1cIjEyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS13cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGNhcmQtYm94IGlkPVwidGFibGVcIiBjb2xvcj1cImJsdWVcIiA6dGl0bGU9XCIkdCgnYm94X3RpdGxlX3JlbGV2ZWJhbmNhaXJlcycpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIDp0ZXh0PVwiJHQoJ2JveF90ZXh0X3JlbGV2ZWJhbmNhaXJlcycpXCIgY2xhc3M9XCJlbGV2YXRpb24tM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHJlbGV2ZS1ydW4gOmNvbnRyb2xsZXJfcm9vdD1cImNvbnRyb2xsZXJfcm9vdFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9jYXJkLWJveD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L3YtY29sPlxuICAgICAgICAgICAgICAgIDwvdi1yb3c+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC92LWZhZGUtdHJhbnNpdGlvbj5cbiAgICAgICAgICA8L3YtdGFiLWl0ZW0+XG5cbiAgICAgICAgICA8IS0tIFRhYiAyOiBZZWFybHkgQ2FsZW5kYXIgVmlldyAtLT5cbiAgICAgICAgICA8di10YWItaXRlbT5cbiAgICAgICAgICAgIDx2LWZhZGUtdHJhbnNpdGlvbiBtb2RlPVwib3V0LWluXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci13cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgPHllYXJseS1jYWxlbmRhci12aWV3IDpjb250cm9sbGVyX3Jvb3Q9XCJjb250cm9sbGVyX3Jvb3RcIiAvPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvdi1mYWRlLXRyYW5zaXRpb24+XG4gICAgICAgICAgPC92LXRhYi1pdGVtPlxuICAgICAgICA8L3YtdGFicy1pdGVtcz5cbiAgICAgIDwvdi1jb2w+XG4gICAgPC92LXJvdz5cbiAgPC92LWNvbnRhaW5lcj5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG5pbXBvcnQgVmlld01peGluIGZyb20gXCJAL3ZpZXdzL3Nob3dcIjtcblxuZXhwb3J0IGRlZmF1bHQge1xuICBtaXhpbnM6IFtWaWV3TWl4aW5dLFxuXG4gIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbnRyb2xsZXJfcm9vdDogXCJyZWxldmViYW5jYWlyZXNcIixcbiAgICAgIG5hbWVtb2R1bGU6IFwiVHJhbnNhY3Rpb25zXCIsXG4gICAgICBhY3RpdmVUYWI6IDAsXG4gICAgICBvcHRpb25zX3Nob3dEYXRhOiB7XG4gICAgICAgIHRpdGxlOiBcIiBMZSByZWxldsOpIGRlIGNvbXB0ZSAgXCIsXG4gICAgICAgIG5vdF9hZmZpY2hlOiBbXSxcbiAgICAgICAgZXhwYW5kZWQ6IFtdLFxuICAgICAgfSxcbiAgICB9O1xuICB9LFxuICBjcmVhdGVkKCkge1xuICAgIHRoaXMuaW5pdGlhKCk7XG5cbiAgICB0aGlzLiRzdG9yZS5kaXNwYXRjaChcInJ1bl9zaG93XCIsIHsgbmFtZXNfY29udHJvbGxlcnM6IHVuZGVmaW5lZCB9KTtcbiAgICB0aGlzLiRzdG9yZS5kaXNwYXRjaChcImluaXRpYWxpemVfc3RydWN0X2Zyb21cIiwge1xuICAgICAgbmFtZXNfY29udHJvbGxlcnM6IHVuZGVmaW5lZCxcbiAgICB9KTtcbiAgICBkb2N1bWVudC50aXRsZSA9IFwiIExlIHJlbGV2w6kgZGUgY29tcHRlIFwiO1xuICB9LFxufTtcbjwvc2NyaXB0PlxuXG48c3R5bGUgc2NvcGVkPlxuLyogTW9kZXJuIGNvbnRhaW5lciBzdHlsaW5nICovXG4udi1jb250YWluZXIge1xuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbn1cblxuLyogV3JhcHBlciBhbmltYXRpb25zIGFuZCBzcGFjaW5nICovXG4uY2hhcnQtd3JhcHBlcixcbi5iYWxhbmNlcy13cmFwcGVyLFxuLnRhYmxlLXdyYXBwZXIsXG4uY2FsZW5kYXItd3JhcHBlciB7XG4gIHRyYW5zaXRpb246IGFsbCAwLjNzIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7XG59XG5cbi8qIEVuaGFuY2VkIGhvdmVyIGVmZmVjdHMgZm9yIGludGVyYWN0aXZlIGFyZWFzICovXG4uY2hhcnQtd3JhcHBlcjpob3Zlcixcbi5iYWxhbmNlcy13cmFwcGVyOmhvdmVyLFxuLnRhYmxlLXdyYXBwZXI6aG92ZXIge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7XG59XG5cbi8qIEVuc3VyZSBlcXVhbCBoZWlnaHQgZm9yIHNpZGUtYnktc2lkZSBjb21wb25lbnRzICovXG5AbWVkaWEgKG1pbi13aWR0aDogOTYwcHgpIHtcblxuICAuY2hhcnQtd3JhcHBlcixcbiAgLmJhbGFuY2VzLXdyYXBwZXIge1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIH1cblxuICAuY2hhcnQtd3JhcHBlcj4qLFxuICAuYmFsYW5jZXMtd3JhcHBlcj4qIHtcbiAgICBmbGV4OiAxO1xuICB9XG59XG5cbi8qIFRhYiBzdHlsaW5nIGltcHJvdmVtZW50cyAqL1xuLnYtdGFicyB7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXYtc3VyZmFjZS1iYXNlKSAhaW1wb3J0YW50O1xuICBtYXJnaW4tYm90dG9tOiAxLjVyZW07XG59XG5cbi8qIFNtb290aCB0cmFuc2l0aW9ucyAqL1xuLnYtZmFkZS10cmFuc2l0aW9uLWVudGVyLWFjdGl2ZSxcbi52LWZhZGUtdHJhbnNpdGlvbi1sZWF2ZS1hY3RpdmUge1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuM3MgZWFzZTtcbn1cblxuLnYtZmFkZS10cmFuc2l0aW9uLWVudGVyLFxuLnYtZmFkZS10cmFuc2l0aW9uLWxlYXZlLXRvIHtcbiAgb3BhY2l0eTogMDtcbn1cblxuLyogUmVzcG9uc2l2ZSBzcGFjaW5nIGFkanVzdG1lbnRzICovXG5AbWVkaWEgKG1heC13aWR0aDogOTU5cHgpIHtcbiAgLmJhbGFuY2VzLXdyYXBwZXIge1xuICAgIG1hcmdpbi10b3A6IDFyZW07XG4gIH1cbn1cblxuLyogTW9kZXJuIHNoYWRvdyBlZmZlY3RzICovXG4udGFibGUtd3JhcHBlcj4+Pi5jYXJkLWJveCB7XG4gIGJveC1zaGFkb3c6IDAgNHB4IDZweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4xKSxcbiAgICAwIDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMDYpO1xuICBib3JkZXItcmFkaXVzOiA4cHg7XG4gIHRyYW5zaXRpb246IGJveC1zaGFkb3cgMC4zcyBlYXNlO1xufVxuXG4udGFibGUtd3JhcHBlcj4+Pi5jYXJkLWJveDpob3ZlciB7XG4gIGJveC1zaGFkb3c6IDAgMTBweCAxNXB4IC0zcHggcmdiYSgwLCAwLCAwLCAwLjEpLFxuICAgIDAgNHB4IDZweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4wNSk7XG59XG5cbi8qIERhcmsgbW9kZSBzdXBwb3J0ICovXG4udGhlbWUtLWRhcmsgLmNoYXJ0LXdyYXBwZXIsXG4udGhlbWUtLWRhcmsgLmJhbGFuY2VzLXdyYXBwZXIsXG4udGhlbWUtLWRhcmsgLnRhYmxlLXdyYXBwZXIge1xuICBmaWx0ZXI6IGJyaWdodG5lc3MoMS4wNSk7XG59XG48L3N0eWxlPlxuIiwiPHRlbXBsYXRlPlxuICA8di1jb250YWluZXIgZmx1aWQgY2xhc3M9XCJwYS00IGZpbGwtaGVpZ2h0IGFsaWduLXN0YXJ0XCIgOmNsYXNzPVwiJHZ1ZXRpZnkudGhlbWUuZGFyayA/ICcnIDogJ2JnLWdyYXktNTAnXCI+XG4gICAgPHYtY2FyZCBjbGFzcz1cInJvdW5kZWQteGwgZWxldmF0aW9uLTAgdy0xMDAgdHJhbnNwYXJlbnRcIj5cbiAgICAgIDwhLS0gSGVhZGVyIFNlY3Rpb24gLS0+XG4gICAgICA8di10b29sYmFyIGZsYXQgY2xhc3M9XCJyb3VuZGVkLXhsIG1iLTYgcHgtNFwiIDpjb2xvcj1cIiR2dWV0aWZ5LnRoZW1lLmRhcmsgPyAnJyA6ICd3aGl0ZSdcIiBoZWlnaHQ9XCI4MFwiPlxuICAgICAgICA8di1pY29uIGNvbG9yPVwicHJpbWFyeVwiIHNpemU9XCIzNlwiIGNsYXNzPVwibXItNFwiPm1kaS1zaGllbGQtY2hlY2s8L3YtaWNvbj5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1oNSBmb250LXdlaWdodC1ibGFjayBwcmltYXJ5LS10ZXh0XCI+e3sgJHQoJ0F1ZGl0IFRWQSAmIETDqWNsYXJhdGlvbicpIH19PC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNhcHRpb24gZ3JleS0tdGV4dFwiPnt7ICR0KCdDb21wYXJhaXNvbiBBdXRvbWF0aXF1ZSA6IEVuY2Fpc3NlbWVudHMgdnMgQ29tcHRhYmlsaXTDqScpIH19PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8di1zcGFjZXI+PC92LXNwYWNlcj5cblxuICAgICAgICA8IS0tIENvbnRyb2xzIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWNlbnRlclwiPlxuICAgICAgICAgIDwhLS0gWWVhciBTZWxlY3RvciAtLT5cbiAgICAgICAgICA8di1zZWxlY3Qgdi1tb2RlbD1cInNlbGVjdGVkWWVhclwiIDppdGVtcz1cImF2YWlsYWJsZVllYXJzXCIgb3V0bGluZWQgZGVuc2UgaGlkZS1kZXRhaWxzIGNsYXNzPVwicm91bmRlZC1sZyBtci0zXCJcbiAgICAgICAgICAgIHN0eWxlPVwid2lkdGg6IDEyMHB4XCIgcHJlcGVuZC1pbm5lci1pY29uPVwibWRpLWNhbGVuZGFyXCIgQGNoYW5nZT1cImZldGNoRGVjbGFyYXRpb25cIj48L3Ytc2VsZWN0PlxuXG4gICAgICAgICAgPCEtLSBSZWdpbWUgU2VsZWN0b3IgLS0+XG4gICAgICAgICAgPHYtYnRuLXRvZ2dsZSB2LW1vZGVsPVwicmVnaW1lXCIgbWFuZGF0b3J5IGNsYXNzPVwibXItMyByb3VuZGVkLWxnXCIgY29sb3I9XCJwcmltYXJ5XCIgYm9yZGVybGVzc1xuICAgICAgICAgICAgQGNoYW5nZT1cIm9uUmVnaW1lQ2hhbmdlXCI+XG4gICAgICAgICAgICA8di1idG4gdmFsdWU9XCJtZW5zdWVsbGVcIiBzbWFsbCBjbGFzcz1cInB4LTQgZm9udC13ZWlnaHQtYm9sZFwiPlxuICAgICAgICAgICAgICA8di1pY29uIGxlZnQgc21hbGw+bWRpLWNhbGVuZGFyLW1vbnRoPC92LWljb24+IHt7ICR0KCdNZW5zdWVsbGUnKSB9fVxuICAgICAgICAgICAgPC92LWJ0bj5cbiAgICAgICAgICAgIDx2LWJ0biB2YWx1ZT1cInRyaW1lc3RyaWVsbGVcIiBzbWFsbCBjbGFzcz1cInB4LTQgZm9udC13ZWlnaHQtYm9sZFwiPlxuICAgICAgICAgICAgICA8di1pY29uIGxlZnQgc21hbGw+bWRpLWNhbGVuZGFyLXJhbmdlPC92LWljb24+IHt7ICR0KCdUcmltZXN0cmllbGxlJykgfX1cbiAgICAgICAgICAgIDwvdi1idG4+XG4gICAgICAgICAgPC92LWJ0bi10b2dnbGU+XG5cbiAgICAgICAgICA8di1idG4gY29sb3I9XCJzZWNvbmRhcnlcIiBjbGFzcz1cInJvdW5kZWQtbGcgcHgtNiBtci0zXCIgQGNsaWNrPVwiZXhwb3J0UGRmXCIgOmRpc2FibGVkPVwibG9hZGluZyB8fCAhZm9ybWF0dGVkRGF0YVwiXG4gICAgICAgICAgICBlbGV2YXRpb249XCIyXCI+XG4gICAgICAgICAgICA8di1pY29uIGxlZnQ+bWRpLWZpbGUtcGRmLWJveDwvdi1pY29uPiB7eyAkdCgnRXhwb3J0IFBERicpIH19XG4gICAgICAgICAgPC92LWJ0bj5cblxuICAgICAgICAgIDx2LWJ0biBjb2xvcj1cInByaW1hcnlcIiBjbGFzcz1cInJvdW5kZWQtbGcgcHgtNlwiIEBjbGljaz1cImZldGNoRGVjbGFyYXRpb25cIiA6bG9hZGluZz1cImxvYWRpbmdcIiBlbGV2YXRpb249XCIyXCI+XG4gICAgICAgICAgICA8di1pY29uIGxlZnQ+bWRpLXJlZnJlc2g8L3YtaWNvbj4ge3sgJHQoJ0FjdHVhbGlzZXInKSB9fVxuICAgICAgICAgIDwvdi1idG4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC92LXRvb2xiYXI+XG5cbiAgICAgIDwhLS0gUGVyaW9kIFNlbGVjdGlvbiBDaGlwcyAtLT5cbiAgICAgIDx2LWl0ZW0tZ3JvdXAgdi1tb2RlbD1cInNlbGVjdGVkUGVyaW9kSW5kZXhcIiBjbGFzcz1cIm1iLTZcIiBtYW5kYXRvcnkgQGNoYW5nZT1cImNhbGN1bGF0ZURhdGVBbmRGZXRjaFwiPlxuICAgICAgICA8di1yb3cgZGVuc2U+XG4gICAgICAgICAgPHYtY29sIGNvbHM9XCJhdXRvXCI+XG4gICAgICAgICAgICA8di1pdGVtIHYtc2xvdD1cInsgYWN0aXZlLCB0b2dnbGUgfVwiIDp2YWx1ZT1cIm51bGxcIj5cbiAgICAgICAgICAgICAgPHYtY2hpcCA6Y29sb3I9XCJhY3RpdmUgPyAncHJpbWFyeScgOiAoJHZ1ZXRpZnkudGhlbWUuZGFyayA/ICdncmV5IGRhcmtlbi0zJyA6ICd3aGl0ZScpXCJcbiAgICAgICAgICAgICAgICA6Y2xhc3M9XCJhY3RpdmUgPyAnd2hpdGUtLXRleHQnIDogKCR2dWV0aWZ5LnRoZW1lLmRhcmsgPyAnZ3JleS0tdGV4dCB0ZXh0LS1saWdodGVuLTEnIDogJ2dyZXktLXRleHQgdGV4dC0tZGFya2VuLTInKVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJweC02IHB5LTQgZm9udC13ZWlnaHQtYm9sZCBlbGV2YXRpb24tMVwiIEBjbGljaz1cInRvZ2dsZVwiIGxhYmVsIGxhcmdlPlxuICAgICAgICAgICAgICAgIDx2LWljb24gbGVmdCBzaXplPVwiMjBcIj5tZGktc2lnbWE8L3YtaWNvbj5cbiAgICAgICAgICAgICAgICB7eyAkdCgnQW5udWVsJykgfX0ge3sgc2VsZWN0ZWRZZWFyIH19XG4gICAgICAgICAgICAgIDwvdi1jaGlwPlxuICAgICAgICAgICAgPC92LWl0ZW0+XG4gICAgICAgICAgPC92LWNvbD5cbiAgICAgICAgICA8di1jb2wgdi1mb3I9XCIobGFiZWwsIGkpIGluIHBlcmlvZExhYmVsc1wiIDprZXk9XCJpXCIgY29scz1cImF1dG9cIj5cbiAgICAgICAgICAgIDx2LWl0ZW0gdi1zbG90PVwieyBhY3RpdmUsIHRvZ2dsZSB9XCIgOnZhbHVlPVwiaSArIDFcIj5cbiAgICAgICAgICAgICAgPHYtY2hpcCA6Y29sb3I9XCJhY3RpdmUgPyAncHJpbWFyeScgOiAoJHZ1ZXRpZnkudGhlbWUuZGFyayA/ICdncmV5IGRhcmtlbi0zJyA6ICd3aGl0ZScpXCJcbiAgICAgICAgICAgICAgICA6Y2xhc3M9XCJhY3RpdmUgPyAnd2hpdGUtLXRleHQnIDogKCR2dWV0aWZ5LnRoZW1lLmRhcmsgPyAnZ3JleS0tdGV4dCB0ZXh0LS1saWdodGVuLTEnIDogJ2dyZXktLXRleHQgdGV4dC0tZGFya2VuLTInKVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJweC00IHB5LTQgZm9udC13ZWlnaHQtbWVkaXVtIGVsZXZhdGlvbi0xXCIgQGNsaWNrPVwidG9nZ2xlXCIgbGFiZWwgbGFyZ2U+XG4gICAgICAgICAgICAgICAge3sgbGFiZWwgfX1cbiAgICAgICAgICAgICAgPC92LWNoaXA+XG4gICAgICAgICAgICA8L3YtaXRlbT5cbiAgICAgICAgICA8L3YtY29sPlxuICAgICAgICA8L3Ytcm93PlxuICAgICAgPC92LWl0ZW0tZ3JvdXA+XG5cbiAgICAgIDwhLS0gTWFpbiBDb250ZW50IC0tPlxuICAgICAgPHYtc2NhbGUtdHJhbnNpdGlvbiBtb2RlPVwib3V0LWluXCI+XG4gICAgICAgIDxkaXYgdi1pZj1cIiFsb2FkaW5nICYmIGZvcm1hdHRlZERhdGFcIiBrZXk9XCJjb250ZW50XCI+XG5cbiAgICAgICAgICA8IS0tIFZhbGlkYXRpb24gU3RhdHVzIEJhbm5lciAtLT5cbiAgICAgICAgICA8di1hbGVydCA6Y29sb3I9XCJzdGF0dXNDb2xvclwiIGJvcmRlcj1cImxlZnRcIiBjb2xvcmVkLWJvcmRlciBlbGV2YXRpb249XCIyXCIgY2xhc3M9XCJyb3VuZGVkLWxnIG1iLTYgcHktNFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgPHYtYXZhdGFyIDpjb2xvcj1cIiR2dWV0aWZ5LnRoZW1lLmRhcmsgPyBzdGF0dXNDb2xvciArICcgZGFya2VuLTQnIDogc3RhdHVzQ29sb3IgKyAnIGxpZ2h0ZW4tNSdcIiBzaXplPVwiNDhcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwibXItNFwiPlxuICAgICAgICAgICAgICAgIDx2LWljb24gOmNvbG9yPVwic3RhdHVzQ29sb3JcIiBzaXplPVwiMzJcIj57eyBzdGF0dXNJY29uIH19PC92LWljb24+XG4gICAgICAgICAgICAgIDwvdi1hdmF0YXI+XG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtaDYgZm9udC13ZWlnaHQtYm9sZFwiIDpjbGFzcz1cInN0YXR1c0NvbG9yICsgJy0tdGV4dCdcIj5cbiAgICAgICAgICAgICAgICAgIHt7IHZhbGlkYXRpb25NZXNzYWdlIH19XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcHRpb24gZ3JleS0tdGV4dCB0ZXh0LS1kYXJrZW4tMVwiPlxuICAgICAgICAgICAgICAgICAge3sgZGVzY3JpcHRpb25UZXh0IH19XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8di1zcGFjZXI+PC92LXNwYWNlcj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtcmlnaHRcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1oNCBmb250LXdlaWdodC1ibGFja1wiIDpjbGFzcz1cInN0YXR1c0NvbG9yICsgJy0tdGV4dCdcIj5cbiAgICAgICAgICAgICAgICAgIHt7IGZvcm1hdE1vbmV5KE1hdGguYWJzKGZvcm1hdHRlZERhdGEuZGlmZmVyZW5jZSkpIH19XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcHRpb24gZm9udC13ZWlnaHQtYm9sZFwiIDpjbGFzcz1cInN0YXR1c0NvbG9yICsgJy0tdGV4dCdcIj57eyAkdCgnw4lDQVJUJykgfX08L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L3YtYWxlcnQ+XG5cbiAgICAgICAgICA8di1yb3c+XG4gICAgICAgICAgICA8IS0tIE1ldGhvZCAxOiBPZmZpY2lhbCAoUmVsZXZlIFJlY2V0dGVzL0RlcGVuc2VzKSAtLT5cbiAgICAgICAgICAgIDx2LWNvbCBjb2xzPVwiMTJcIiBtZD1cIjZcIj5cbiAgICAgICAgICAgICAgPHYtY2FyZCBjbGFzcz1cInJvdW5kZWQteGwgb3ZlcmZsb3ctaGlkZGVuIGVsZXZhdGlvbi0zIGQtZmxleCBmbGV4LWNvbHVtbiBmaWxsLWhlaWdodFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwYS00IGQtZmxleCBhbGlnbi1jZW50ZXJcIlxuICAgICAgICAgICAgICAgICAgOmNsYXNzPVwiJHZ1ZXRpZnkudGhlbWUuZGFyayA/ICdwcmltYXJ5IGRhcmtlbi00JyA6ICdwcmltYXJ5IGxpZ2h0ZW4tNSdcIj5cbiAgICAgICAgICAgICAgICAgIDx2LWljb24gY29sb3I9XCJwcmltYXJ5XCIgY2xhc3M9XCJtci0yXCI+bWRpLWJhbmstY2hlY2s8L3YtaWNvbj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1oNiBmb250LXdlaWdodC1ib2xkXCJcbiAgICAgICAgICAgICAgICAgICAgOmNsYXNzPVwiJHZ1ZXRpZnkudGhlbWUuZGFyayA/ICd3aGl0ZS0tdGV4dCcgOiAncHJpbWFyeS0tdGV4dCdcIj57eyAkdCgnTcOpdGhvZGUgMSA6IEVuY2Fpc3NlbWVudHMgKE9mZmljaWVsKScpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDx2LWRpdmlkZXI+PC92LWRpdmlkZXI+XG4gICAgICAgICAgICAgICAgPHYtY2FyZC10ZXh0IGNsYXNzPVwicGEtNiBmbGV4LWdyb3ctMVwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LXNwYWNlLWJldHdlZW4gYWxpZ24tY2VudGVyIG1iLTZcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXN1YnRpdGxlLTFcIlxuICAgICAgICAgICAgICAgICAgICAgIDpjbGFzcz1cIiR2dWV0aWZ5LnRoZW1lLmRhcmsgPyAnZ3JleS0tdGV4dCB0ZXh0LS1saWdodGVuLTEnIDogJ2dyZXktLXRleHQgdGV4dC0tZGFya2VuLTEnXCI+e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICR0KCdUVkEgQ29sbGVjdMOpZScpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtaDUgZm9udC13ZWlnaHQtYm9sZCBzdWNjZXNzLS10ZXh0XCI+e3tcbiAgICAgICAgICAgICAgICAgICAgICBmb3JtYXRNb25leShmb3JtYXR0ZWREYXRhLm1ldGhvZF8xX29mZmljaWFsLmNvbGxlY3RlZSkgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1zcGFjZS1iZXR3ZWVuIGFsaWduLWNlbnRlciBtYi02XCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1zdWJ0aXRsZS0xXCJcbiAgICAgICAgICAgICAgICAgICAgICA6Y2xhc3M9XCIkdnVldGlmeS50aGVtZS5kYXJrID8gJ2dyZXktLXRleHQgdGV4dC0tbGlnaHRlbi0xJyA6ICdncmV5LS10ZXh0IHRleHQtLWRhcmtlbi0xJ1wiPnt7XG4gICAgICAgICAgICAgICAgICAgICAgICAkdCgnVFZBIETDqWR1Y3RpYmxlJykgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1oNSBmb250LXdlaWdodC1ib2xkIGVycm9yLS10ZXh0XCI+e3tcbiAgICAgICAgICAgICAgICAgICAgICBmb3JtYXRNb25leShmb3JtYXR0ZWREYXRhLm1ldGhvZF8xX29mZmljaWFsLmRlZHVjdGlibGUpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8di1kaXZpZGVyIGNsYXNzPVwibWItNlwiPjwvdi1kaXZpZGVyPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LXNwYWNlLWJldHdlZW4gYWxpZ24tY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1oNiBmb250LXdlaWdodC1ibGFja1wiPnt7ICR0KCdUVkEgw4AgUEFZRVInKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWg0IGZvbnQtd2VpZ2h0LWJsYWNrIHByaW1hcnktLXRleHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7eyBmb3JtYXRNb25leShmb3JtYXR0ZWREYXRhLm1ldGhvZF8xX29mZmljaWFsLm5ldF9kdWUpIH19XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvdi1jYXJkLXRleHQ+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBhLTMgY2FwdGlvbiB0ZXh0LWNlbnRlciBncmV5LS10ZXh0XCJcbiAgICAgICAgICAgICAgICAgIDpjbGFzcz1cIiR2dWV0aWZ5LnRoZW1lLmRhcmsgPyAnZ3JleSBkYXJrZW4tMycgOiAnZ3JleSBsaWdodGVuLTQnXCI+XG4gICAgICAgICAgICAgICAgICB7eyAkdCgnU291cmNlIDogUmVsZXbDqSBSZWNldHRlcyAmIETDqXBlbnNlcyAoUGFpZW1lbnRzIFLDqWVscyknKSB9fVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L3YtY2FyZD5cbiAgICAgICAgICAgIDwvdi1jb2w+XG5cbiAgICAgICAgICAgIDwhLS0gTWV0aG9kIDI6IEFjY291bnRpbmcgKEVjcml0dXJlcykgLS0+XG4gICAgICAgICAgICA8di1jb2wgY29scz1cIjEyXCIgbWQ9XCI2XCI+XG4gICAgICAgICAgICAgIDx2LWNhcmQgY2xhc3M9XCJyb3VuZGVkLXhsIG92ZXJmbG93LWhpZGRlbiBlbGV2YXRpb24tMyBkLWZsZXggZmxleC1jb2x1bW4gZmlsbC1oZWlnaHRcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGEtNCBkLWZsZXggYWxpZ24tY2VudGVyXCJcbiAgICAgICAgICAgICAgICAgIDpjbGFzcz1cIiR2dWV0aWZ5LnRoZW1lLmRhcmsgPyAnb3JhbmdlIGRhcmtlbi00JyA6ICdvcmFuZ2UgbGlnaHRlbi01J1wiPlxuICAgICAgICAgICAgICAgICAgPHYtaWNvbiBjb2xvcj1cIm9yYW5nZSBkYXJrZW4tM1wiIGNsYXNzPVwibXItMlwiPm1kaS1ib29rLW9wZW4tcGFnZS12YXJpYW50PC92LWljb24+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtaDYgZm9udC13ZWlnaHQtYm9sZFwiXG4gICAgICAgICAgICAgICAgICAgIDpjbGFzcz1cIiR2dWV0aWZ5LnRoZW1lLmRhcmsgPyAnd2hpdGUtLXRleHQnIDogJ29yYW5nZS0tdGV4dCB0ZXh0LS1kYXJrZW4tMydcIj57eyAkdCgnTcOpdGhvZGUgMiA6IENvbXB0YWJpbGl0w6knKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8di1kaXZpZGVyPjwvdi1kaXZpZGVyPlxuICAgICAgICAgICAgICAgIDx2LWNhcmQtdGV4dCBjbGFzcz1cInBhLTYgZmxleC1ncm93LTFcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1zcGFjZS1iZXR3ZWVuIGFsaWduLWNlbnRlciBtYi02XCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1zdWJ0aXRsZS0xXCJcbiAgICAgICAgICAgICAgICAgICAgICA6Y2xhc3M9XCIkdnVldGlmeS50aGVtZS5kYXJrID8gJ2dyZXktLXRleHQgdGV4dC0tbGlnaHRlbi0xJyA6ICdncmV5LS10ZXh0IHRleHQtLWRhcmtlbi0xJ1wiPnt7XG4gICAgICAgICAgICAgICAgICAgICAgICAkdCgnVFZBIENvbGxlY3TDqWUnKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWg1IGZvbnQtd2VpZ2h0LWJvbGQgc3VjY2Vzcy0tdGV4dFwiPnt7XG4gICAgICAgICAgICAgICAgICAgICAgZm9ybWF0TW9uZXkoZm9ybWF0dGVkRGF0YS5tZXRob2RfMl9hY2NvdW50aW5nLmNvbGxlY3RlZSkgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1zcGFjZS1iZXR3ZWVuIGFsaWduLWNlbnRlciBtYi02XCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1zdWJ0aXRsZS0xXCJcbiAgICAgICAgICAgICAgICAgICAgICA6Y2xhc3M9XCIkdnVldGlmeS50aGVtZS5kYXJrID8gJ2dyZXktLXRleHQgdGV4dC0tbGlnaHRlbi0xJyA6ICdncmV5LS10ZXh0IHRleHQtLWRhcmtlbi0xJ1wiPnt7XG4gICAgICAgICAgICAgICAgICAgICAgICAkdCgnVFZBIETDqWR1Y3RpYmxlJykgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1oNSBmb250LXdlaWdodC1ib2xkIGVycm9yLS10ZXh0XCI+e3tcbiAgICAgICAgICAgICAgICAgICAgICBmb3JtYXRNb25leShmb3JtYXR0ZWREYXRhLm1ldGhvZF8yX2FjY291bnRpbmcuZGVkdWN0aWJsZSkgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDx2LWRpdmlkZXIgY2xhc3M9XCJtYi02XCI+PC92LWRpdmlkZXI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktc3BhY2UtYmV0d2VlbiBhbGlnbi1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWg2IGZvbnQtd2VpZ2h0LWJsYWNrXCI+e3sgJHQoJ1RWQSBUSMOJT1JJUVVFJykgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1oNCBmb250LXdlaWdodC1ibGFjayBvcmFuZ2UtLXRleHQgdGV4dC0tZGFya2VuLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7eyBmb3JtYXRNb25leShmb3JtYXR0ZWREYXRhLm1ldGhvZF8yX2FjY291bnRpbmcubmV0X2R1ZSkgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC92LWNhcmQtdGV4dD5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGEtMyBjYXB0aW9uIHRleHQtY2VudGVyIGdyZXktLXRleHRcIlxuICAgICAgICAgICAgICAgICAgOmNsYXNzPVwiJHZ1ZXRpZnkudGhlbWUuZGFyayA/ICdncmV5IGRhcmtlbi0zJyA6ICdncmV5IGxpZ2h0ZW4tNCdcIj5cbiAgICAgICAgICAgICAgICAgIHt7ICR0KCdTb3VyY2UgOiBSw6hnbGVzIENvbXB0YWJsZXMgKFNpbXVsw6kgc3VyIFRyYW5zYWN0aW9ucyknKSB9fVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L3YtY2FyZD5cbiAgICAgICAgICAgIDwvdi1jb2w+XG4gICAgICAgICAgPC92LXJvdz5cblxuICAgICAgICAgIDwhLS0gV2FybmluZyBEZXRhaWxzIGlmIE1pc21hdGNoIC0tPlxuICAgICAgICAgIDx2LWV4cGFuZC10cmFuc2l0aW9uPlxuICAgICAgICAgICAgPHYtY2FyZCB2LWlmPVwiZm9ybWF0dGVkRGF0YS52YWxpZGF0aW9uLnN0YXR1cyA9PT0gJ1dBUk5JTkcnXCIgY2xhc3M9XCJteS02IHJvdW5kZWQteGwgYm9yZGVyLXdhcm5pbmdcIlxuICAgICAgICAgICAgICBvdXRsaW5lZD5cbiAgICAgICAgICAgICAgPHYtY2FyZC10aXRsZSBjbGFzcz1cIndhcm5pbmctLXRleHRcIj5cbiAgICAgICAgICAgICAgICA8di1pY29uIGNvbG9yPVwid2FybmluZ1wiIGNsYXNzPVwibXItMlwiPm1kaS1hbGVydDwvdi1pY29uPlxuICAgICAgICAgICAgICAgIHt7ICR0KCdEw6l0YWlscyBkZXMgw4ljYXJ0cycpIH19XG4gICAgICAgICAgICAgIDwvdi1jYXJkLXRpdGxlPlxuICAgICAgICAgICAgICA8di1jYXJkLXRleHQ+XG4gICAgICAgICAgICAgICAgPHYtc2ltcGxlLXRhYmxlPlxuICAgICAgICAgICAgICAgICAgPHRoZWFkPlxuICAgICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICAgPHRoPnt7ICR0KCdDb21wb3NhbnQnKSB9fTwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwidGV4dC1yaWdodFwiPnt7ICR0KCdEaWZmw6lyZW5jZScpIH19PC90aD5cbiAgICAgICAgICAgICAgICAgICAgICA8dGg+e3sgJHQoJ1N0YXR1dCcpIH19PC90aD5cbiAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+XG4gICAgICAgICAgICAgICAgICA8dGJvZHk+XG4gICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgJHQoJ1RWQSBDb2xsZWN0w6llJykgfX08L3RkPlxuICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRleHQtcmlnaHQgZm9udC13ZWlnaHQtYm9sZFwiPnt7IGZvcm1hdE1vbmV5KGZvcm1hdHRlZERhdGEubWV0aG9kXzFfb2ZmaWNpYWwuY29sbGVjdGVlIC1cbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlZERhdGEubWV0aG9kXzJfYWNjb3VudGluZy5jb2xsZWN0ZWUpIH19PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8di1jaGlwIHgtc21hbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgOmNvbG9yPVwiTWF0aC5hYnMoZm9ybWF0dGVkRGF0YS5tZXRob2RfMV9vZmZpY2lhbC5jb2xsZWN0ZWUgLSBmb3JtYXR0ZWREYXRhLm1ldGhvZF8yX2FjY291bnRpbmcuY29sbGVjdGVlKSA8IDEgPyAnc3VjY2VzcycgOiAnd2FybmluZydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBkYXJrPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBNYXRoLmFicyhmb3JtYXR0ZWREYXRhLm1ldGhvZF8xX29mZmljaWFsLmNvbGxlY3RlZSAtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVkRGF0YS5tZXRob2RfMl9hY2NvdW50aW5nLmNvbGxlY3RlZSkgPCAxID8gJ09LJyA6ICdEaWZmJyB9fSA8L3YtY2hpcD5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICAgPHRkPnt7ICR0KCdUVkEgRMOpZHVjdGlibGUnKSB9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1yaWdodCBmb250LXdlaWdodC1ib2xkXCI+e3sgZm9ybWF0TW9uZXkoZm9ybWF0dGVkRGF0YS5tZXRob2RfMV9vZmZpY2lhbC5kZWR1Y3RpYmxlXG4gICAgICAgICAgICAgICAgICAgICAgICAtIGZvcm1hdHRlZERhdGEubWV0aG9kXzJfYWNjb3VudGluZy5kZWR1Y3RpYmxlKSB9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHYtY2hpcCB4LXNtYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDpjb2xvcj1cIk1hdGguYWJzKGZvcm1hdHRlZERhdGEubWV0aG9kXzFfb2ZmaWNpYWwuZGVkdWN0aWJsZSAtIGZvcm1hdHRlZERhdGEubWV0aG9kXzJfYWNjb3VudGluZy5kZWR1Y3RpYmxlKSA8IDEgPyAnc3VjY2VzcycgOiAnd2FybmluZydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBkYXJrPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBNYXRoLmFicyhmb3JtYXR0ZWREYXRhLm1ldGhvZF8xX29mZmljaWFsLmRlZHVjdGlibGUgLVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlZERhdGEubWV0aG9kXzJfYWNjb3VudGluZy5kZWR1Y3RpYmxlKSA8IDEgPyAnT0snIDogJ0RpZmYnIH19IDwvdi1jaGlwPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICAgICAgICAgIDwvdi1zaW1wbGUtdGFibGU+XG4gICAgICAgICAgICAgIDwvdi1jYXJkLXRleHQ+XG4gICAgICAgICAgICA8L3YtY2FyZD5cbiAgICAgICAgICA8L3YtZXhwYW5kLXRyYW5zaXRpb24+XG5cbiAgICAgICAgICA8IS0tIERldGFpbHMgVGFibGVzIC0tPlxuICAgICAgICAgIDx2LWNhcmQgY2xhc3M9XCJtdC02IHJvdW5kZWQteGwgb3ZlcmZsb3ctaGlkZGVuIGVsZXZhdGlvbi0xXCJcbiAgICAgICAgICAgIHYtaWY9XCJmb3JtYXR0ZWREYXRhLmRldGFpbHMgJiYgKGZvcm1hdHRlZERhdGEuZGV0YWlscy5jb2xsZWN0ZWUubGVuZ3RoID4gMCB8fCBmb3JtYXR0ZWREYXRhLmRldGFpbHMuZGVkdWN0aWJsZS5sZW5ndGggPiAwKVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTQgcHktM1wiIDpjbGFzcz1cIiR2dWV0aWZ5LnRoZW1lLmRhcmsgPyAncHJpbWFyeSBkYXJrZW4tNCcgOiAncHJpbWFyeSBsaWdodGVuLTUnXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWg2IGZvbnQtd2VpZ2h0LWJvbGRcIiA6Y2xhc3M9XCIkdnVldGlmeS50aGVtZS5kYXJrID8gJ3doaXRlLS10ZXh0JyA6ICdwcmltYXJ5LS10ZXh0J1wiPnt7XG4gICAgICAgICAgICAgICAgJHQoJ2FuYWx5c2UgZMOpdGFpbGzDqWUgZGVzIGZhY3R1cmVzIGV0IHBhaWVtZW50cycpXG4gICAgICAgICAgICAgIH19PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPHYtdGFicyB2LW1vZGVsPVwidGFiXCIgZ3JvdyBjb2xvcj1cInByaW1hcnlcIj5cbiAgICAgICAgICAgICAgPHYtdGFiPnt7ICR0KCdSZWNldHRlcyAoVFZBIENvbGxlY3TDqWUpJykgfX08L3YtdGFiPlxuICAgICAgICAgICAgICA8di10YWI+e3sgJHQoJ0TDqXBlbnNlcyAoVFZBIETDqWR1Y3RpYmxlKScpIH19PC92LXRhYj5cbiAgICAgICAgICAgIDwvdi10YWJzPlxuXG4gICAgICAgICAgICA8di10YWJzLWl0ZW1zIHYtbW9kZWw9XCJ0YWJcIj5cbiAgICAgICAgICAgICAgPHYtdGFiLWl0ZW0+XG4gICAgICAgICAgICAgICAgPHYtZGF0YS10YWJsZSA6aGVhZGVycz1cImhlYWRlcnNSZWNldHRlc1wiIDppdGVtcz1cImZvcm1hdHRlZERhdGEuZGV0YWlscy5jb2xsZWN0ZWVcIiBpdGVtLWtleT1cImlkXCIgZGVuc2VcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZWxldmF0aW9uLTBcIj5cbiAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6aXRlbS5yYXRlPVwieyBpdGVtIH1cIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJibHVlLWdyZXktLXRleHQgZm9udC13ZWlnaHQtYm9sZFwiPnt7IGl0ZW0ucmF0ZSB9fSU8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlIHYtc2xvdDppdGVtLnBheW1lbnRfcGVyY2VudGFnZT1cInsgaXRlbSB9XCI+XG4gICAgICAgICAgICAgICAgICAgIDx2LWNoaXAgeC1zbWFsbCBsYWJlbCA6Y29sb3I9XCJnZXRQZXJjZW50Q29sb3IoaXRlbS5wYXltZW50X3BlcmNlbnRhZ2UpXCIgZGFyaz5cbiAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLnBheW1lbnRfcGVyY2VudGFnZS50b0ZpeGVkKDApIH19JVxuICAgICAgICAgICAgICAgICAgICA8L3YtY2hpcD5cbiAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICA8dGVtcGxhdGUgdi1zbG90Oml0ZW0udG90YWxfaW52b2ljZT1cInsgaXRlbSB9XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmV5LS10ZXh0XCI+e3sgZm9ybWF0TW9uZXkoaXRlbS50b3RhbF9pbnZvaWNlKSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6aXRlbS5odD1cInsgaXRlbSB9XCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IGZvcm1hdE1vbmV5KGl0ZW0uaHQpIH19XG4gICAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlIHYtc2xvdDppdGVtLnR2YT1cInsgaXRlbSB9XCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3VjY2Vzcy0tdGV4dCBmb250LXdlaWdodC1ib2xkXCI+e3sgZm9ybWF0TW9uZXkoaXRlbS50dmEpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6aXRlbS50dGM9XCJ7IGl0ZW0gfVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyBmb3JtYXRNb25leShpdGVtLnR0YykgfX1cbiAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC92LWRhdGEtdGFibGU+XG4gICAgICAgICAgICAgIDwvdi10YWItaXRlbT5cbiAgICAgICAgICAgICAgPHYtdGFiLWl0ZW0+XG4gICAgICAgICAgICAgICAgPHYtZGF0YS10YWJsZSA6aGVhZGVycz1cImhlYWRlcnNEZXBlbnNlc1wiIDppdGVtcz1cImZvcm1hdHRlZERhdGEuZGV0YWlscy5kZWR1Y3RpYmxlXCIgaXRlbS1rZXk9XCJpZFwiIGRlbnNlXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImVsZXZhdGlvbi0wXCI+XG4gICAgICAgICAgICAgICAgICA8dGVtcGxhdGUgdi1zbG90Oml0ZW0ucmF0ZT1cInsgaXRlbSB9XCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmx1ZS1ncmV5LS10ZXh0IGZvbnQtd2VpZ2h0LWJvbGRcIj57eyBpdGVtLnJhdGUgfX0lPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6aXRlbS5wYXltZW50X3BlcmNlbnRhZ2U9XCJ7IGl0ZW0gfVwiPlxuICAgICAgICAgICAgICAgICAgICA8di1jaGlwIHgtc21hbGwgbGFiZWwgOmNvbG9yPVwiZ2V0UGVyY2VudENvbG9yKGl0ZW0ucGF5bWVudF9wZXJjZW50YWdlKVwiIGRhcms+XG4gICAgICAgICAgICAgICAgICAgICAge3sgaXRlbS5wYXltZW50X3BlcmNlbnRhZ2UudG9GaXhlZCgwKSB9fSVcbiAgICAgICAgICAgICAgICAgICAgPC92LWNoaXA+XG4gICAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlIHYtc2xvdDppdGVtLnRvdGFsX2ludm9pY2U9XCJ7IGl0ZW0gfVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JleS0tdGV4dFwiPnt7IGZvcm1hdE1vbmV5KGl0ZW0udG90YWxfaW52b2ljZSkgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICA8dGVtcGxhdGUgdi1zbG90Oml0ZW0uaHQ9XCJ7IGl0ZW0gfVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyBmb3JtYXRNb25leShpdGVtLmh0KSB9fVxuICAgICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6aXRlbS50dmE9XCJ7IGl0ZW0gfVwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImVycm9yLS10ZXh0IGZvbnQtd2VpZ2h0LWJvbGRcIj57eyBmb3JtYXRNb25leShpdGVtLnR2YSkgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlIHYtc2xvdDppdGVtLnR0Yz1cInsgaXRlbSB9XCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IGZvcm1hdE1vbmV5KGl0ZW0udHRjKSB9fVxuICAgICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L3YtZGF0YS10YWJsZT5cbiAgICAgICAgICAgICAgPC92LXRhYi1pdGVtPlxuICAgICAgICAgICAgPC92LXRhYnMtaXRlbXM+XG4gICAgICAgICAgPC92LWNhcmQ+XG5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgdi1lbHNlLWlmPVwibG9hZGluZ1wiIGtleT1cImxvYWRpbmdcIiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNlbnRlciBhbGlnbi1jZW50ZXJcIiBzdHlsZT1cImhlaWdodDogNDAwcHg7XCI+XG4gICAgICAgICAgPHYtcHJvZ3Jlc3MtY2lyY3VsYXIgaW5kZXRlcm1pbmF0ZSBjb2xvcj1cInByaW1hcnlcIiBzaXplPVwiNjRcIiB3aWR0aD1cIjZcIj48L3YtcHJvZ3Jlc3MtY2lyY3VsYXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC92LXNjYWxlLXRyYW5zaXRpb24+XG5cbiAgICA8L3YtY2FyZD5cbiAgPC92LWNvbnRhaW5lcj5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG5pbXBvcnQgYXhpb3MgZnJvbSBcImF4aW9zXCI7XG5pbXBvcnQgaTE4biBmcm9tIFwiQC9wbHVnaW5zL2kxOG5cIjtcbmltcG9ydCBqc1BERiBmcm9tIFwianNwZGZcIjtcbmltcG9ydCBhdXRvVGFibGUgZnJvbSBcImpzcGRmLWF1dG90YWJsZVwiO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6IFwiVHZhU2hvd1wiLFxuICBkYXRhKCkge1xuICAgIHJldHVybiB7XG4gICAgICBsb2FkaW5nOiBmYWxzZSxcbiAgICAgIHJlZ2ltZTogJ21lbnN1ZWxsZScsIC8vICdtZW5zdWVsbGUnIG9yICd0cmltZXN0cmllbGxlJ1xuICAgICAgc2VsZWN0ZWRZZWFyOiBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCksXG4gICAgICBzZWxlY3RlZFBlcmlvZEluZGV4OiBudWxsLFxuICAgICAgYXZhaWxhYmxlWWVhcnM6IFsyMDIzLCAyMDI0LCAyMDI1LCAyMDI2XSxcbiAgICAgIGFwaURhdGE6IG51bGwsXG5cbiAgICAgIHRhYjogbnVsbCxcbiAgICAgIGhlYWRlcnNSZWNldHRlczogW1xuICAgICAgICB7IHRleHQ6IHRoaXMuJHQoJ0RhdGUgT3AnKSwgdmFsdWU6ICdkYXRlJywgd2lkdGg6ICc5MHB4JyB9LFxuICAgICAgICB7IHRleHQ6IHRoaXMuJHQoJ0RhdGUgRmFjJyksIHZhbHVlOiAnZGF0ZV9mYWN0dXJlJywgd2lkdGg6ICc5MHB4JyB9LFxuICAgICAgICB7IHRleHQ6IHRoaXMuJHQoJ1LDqWYnKSwgdmFsdWU6ICdyZWYnIH0sXG4gICAgICAgIHsgdGV4dDogdGhpcy4kdCgnQ2xpZW50JyksIHZhbHVlOiAndGllcicgfSxcbiAgICAgICAgeyB0ZXh0OiB0aGlzLiR0KCdDYXQnKSwgdmFsdWU6ICdjYXRlZ29yeScgfSxcbiAgICAgICAgeyB0ZXh0OiB0aGlzLiR0KCclIFLDqWdsw6knKSwgdmFsdWU6ICdwYXltZW50X3BlcmNlbnRhZ2UnLCBhbGlnbjogJ2NlbnRlcicgfSxcbiAgICAgICAgeyB0ZXh0OiB0aGlzLiR0KCdUb3RhbCBGYWN0dXJlJyksIHZhbHVlOiAndG90YWxfaW52b2ljZScsIGFsaWduOiAnZW5kJyB9LFxuICAgICAgICB7IHRleHQ6IHRoaXMuJHQoJ0hUIFBhecOpJyksIHZhbHVlOiAnaHQnLCBhbGlnbjogJ2VuZCcgfSxcbiAgICAgICAgeyB0ZXh0OiB0aGlzLiR0KCdUVkEgUGF5JyksIHZhbHVlOiAndHZhJywgYWxpZ246ICdlbmQnIH0sXG4gICAgICAgIHsgdGV4dDogdGhpcy4kdCgnVFRDIFBhecOpJyksIHZhbHVlOiAndHRjJywgYWxpZ246ICdlbmQnIH0sXG4gICAgICBdLFxuICAgICAgaGVhZGVyc0RlcGVuc2VzOiBbXG4gICAgICAgIHsgdGV4dDogdGhpcy4kdCgnRGF0ZSBPcCcpLCB2YWx1ZTogJ2RhdGUnLCB3aWR0aDogJzkwcHgnIH0sXG4gICAgICAgIHsgdGV4dDogdGhpcy4kdCgnRGF0ZSBGYWMnKSwgdmFsdWU6ICdkYXRlX2ZhY3R1cmUnLCB3aWR0aDogJzkwcHgnIH0sXG4gICAgICAgIHsgdGV4dDogdGhpcy4kdCgnUsOpZicpLCB2YWx1ZTogJ3JlZicgfSxcbiAgICAgICAgeyB0ZXh0OiB0aGlzLiR0KCdGb3Vybmlzc2V1cicpLCB2YWx1ZTogJ3RpZXInIH0sXG4gICAgICAgIHsgdGV4dDogdGhpcy4kdCgnQ2F0JyksIHZhbHVlOiAnY2F0ZWdvcnknIH0sXG4gICAgICAgIHsgdGV4dDogdGhpcy4kdCgnJSBSw6lnbMOpJyksIHZhbHVlOiAncGF5bWVudF9wZXJjZW50YWdlJywgYWxpZ246ICdjZW50ZXInIH0sXG4gICAgICAgIHsgdGV4dDogdGhpcy4kdCgnVG90YWwgRmFjdHVyZScpLCB2YWx1ZTogJ3RvdGFsX2ludm9pY2UnLCBhbGlnbjogJ2VuZCcgfSxcbiAgICAgICAgeyB0ZXh0OiB0aGlzLiR0KCdIVCBQYXnDqScpLCB2YWx1ZTogJ2h0JywgYWxpZ246ICdlbmQnIH0sXG4gICAgICAgIHsgdGV4dDogdGhpcy4kdCgnVFZBIFBheScpLCB2YWx1ZTogJ3R2YScsIGFsaWduOiAnZW5kJyB9LFxuICAgICAgICB7IHRleHQ6IHRoaXMuJHQoJ1RUQyBQYXnDqScpLCB2YWx1ZTogJ3R0YycsIGFsaWduOiAnZW5kJyB9LFxuICAgICAgXSxcbiAgICB9O1xuICB9LFxuICBjb21wdXRlZDoge1xuICAgIEJhc2VfdXJsX3dlYigpIHtcbiAgICAgIHJldHVybiB0aGlzLiRzdG9yZS5nZXR0ZXJzW1wiZ2V0X0Jhc2VfdXJsXCJdO1xuICAgIH0sXG5cbiAgICBkZXNjcmlwdGlvblRleHQoKSB7XG4gICAgICByZXR1cm4gdGhpcy4kdCgnTGUgc3lzdMOobWUgY29tcGFyZSBsZXMgVFZBIGNhbGN1bMOpZXMgc2Vsb24gbGVzIGVuY2Fpc3NlbWVudHMgcsOpZWxzIChPZmZpY2llbCkgZXQgbGVzIMOpY3JpdHVyZXMgY29tcHRhYmxlcy4nKTtcbiAgICB9LFxuXG4gICAgZm9ybWF0dGVkRGF0YSgpIHtcbiAgICAgIGlmICghdGhpcy5hcGlEYXRhIHx8ICF0aGlzLmFwaURhdGEudmFsaWRhdGlvbiB8fCAhdGhpcy5hcGlEYXRhLnZhbGlkYXRpb24ubWV0aG9kcykge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgbTEgPSB0aGlzLmFwaURhdGEudmFsaWRhdGlvbi5tZXRob2RzLm1ldGhvZF8xX2VuY2Fpc3NlbWVudDtcbiAgICAgICAgY29uc3QgbTIgPSB0aGlzLmFwaURhdGEudmFsaWRhdGlvbi5tZXRob2RzLm1ldGhvZF8yX2NvbXB0YWJpbGl0ZTtcblxuICAgICAgICBjb25zdCBtMV9uZXQgPSBtMS50dmFfY29sbGVjdGVlIC0gbTEudHZhX2RlZHVjdGlibGU7XG4gICAgICAgIGNvbnN0IG0yX25ldCA9IG0yLnR2YV9jb2xsZWN0ZWUgLSBtMi50dmFfZGVkdWN0aWJsZTtcblxuICAgICAgICBsZXQgZGV0YWlscyA9IHRoaXMuYXBpRGF0YS5kZXRhaWxzIHx8IHsgY29sbGVjdGVlOiBbXSwgZGVkdWN0aWJsZTogW10gfTtcblxuICAgICAgICAvLyBIZWxwZXIgdG8gZW5yaWNoIGRhdGEgd2l0aCBQYXltZW50IFBlcmNlbnRhZ2VcbiAgICAgICAgY29uc3QgZW5yaWNoID0gKGxpc3QpID0+IGxpc3QubWFwKGl0ZW0gPT4ge1xuICAgICAgICAgIGxldCBwY3QgPSAwO1xuICAgICAgICAgIGlmIChpdGVtLnRvdGFsX2ludm9pY2UgJiYgcGFyc2VGbG9hdChpdGVtLnRvdGFsX2ludm9pY2UpICE9PSAwKSB7XG4gICAgICAgICAgICBwY3QgPSAocGFyc2VGbG9hdChpdGVtLnR0YykgLyBwYXJzZUZsb2F0KGl0ZW0udG90YWxfaW52b2ljZSkpICogMTAwO1xuICAgICAgICAgICAgaWYgKHBjdCA+IDEwMCkgcGN0ID0gMTAwOyAvLyBDYXAgYXQgMTAwIHVzdWFsbHlcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGN0ID0gMTAwO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgICAgIHBheW1lbnRfcGVyY2VudGFnZTogcGN0XG4gICAgICAgICAgfTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBtZXRob2RfMV9vZmZpY2lhbDoge1xuICAgICAgICAgICAgY29sbGVjdGVlOiBwYXJzZUZsb2F0KG0xLnR2YV9jb2xsZWN0ZWUgfHwgMCksXG4gICAgICAgICAgICBkZWR1Y3RpYmxlOiBwYXJzZUZsb2F0KG0xLnR2YV9kZWR1Y3RpYmxlIHx8IDApLFxuICAgICAgICAgICAgbmV0X2R1ZTogcGFyc2VGbG9hdChtMV9uZXQpXG4gICAgICAgICAgfSxcbiAgICAgICAgICBtZXRob2RfMl9hY2NvdW50aW5nOiB7XG4gICAgICAgICAgICBjb2xsZWN0ZWU6IHBhcnNlRmxvYXQobTIudHZhX2NvbGxlY3RlZSB8fCAwKSxcbiAgICAgICAgICAgIGRlZHVjdGlibGU6IHBhcnNlRmxvYXQobTIudHZhX2RlZHVjdGlibGUgfHwgMCksXG4gICAgICAgICAgICBuZXRfZHVlOiBwYXJzZUZsb2F0KG0yX25ldClcbiAgICAgICAgICB9LFxuICAgICAgICAgIGRpZmZlcmVuY2U6IG0xX25ldCAtIG0yX25ldCxcbiAgICAgICAgICB2YWxpZGF0aW9uOiB0aGlzLmFwaURhdGEudmFsaWRhdGlvbixcbiAgICAgICAgICBkZXRhaWxzOiB7XG4gICAgICAgICAgICBjb2xsZWN0ZWU6IGVucmljaChkZXRhaWxzLmNvbGxlY3RlZSksXG4gICAgICAgICAgICBkZWR1Y3RpYmxlOiBlbnJpY2goZGV0YWlscy5kZWR1Y3RpYmxlKVxuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihcIkVycm9yIHBhcnNpbmcgVFZBIGRhdGEgc3RydWN0dXJlXCIsIGUpO1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgcGVyaW9kTGFiZWxzKCkge1xuICAgICAgaWYgKHRoaXMucmVnaW1lID09PSAnbWVuc3VlbGxlJykge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgIHRoaXMuJHQoJ0phbicpLCB0aGlzLiR0KCdGw6l2JyksIHRoaXMuJHQoJ01hcicpLFxuICAgICAgICAgIHRoaXMuJHQoJ0F2cicpLCB0aGlzLiR0KCdNYWknKSwgdGhpcy4kdCgnSnVpbicpLFxuICAgICAgICAgIHRoaXMuJHQoJ0p1aWwnKSwgdGhpcy4kdCgnQW/Du3QnKSwgdGhpcy4kdCgnU2VwJyksXG4gICAgICAgICAgdGhpcy4kdCgnT2N0JyksIHRoaXMuJHQoJ05vdicpLCB0aGlzLiR0KCdEw6ljJylcbiAgICAgICAgXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgdGhpcy4kdCgnUTEgKEphbi1NYXIpJyksXG4gICAgICAgICAgdGhpcy4kdCgnUTIgKEF2ci1KdWluKScpLFxuICAgICAgICAgIHRoaXMuJHQoJ1EzIChKdWlsLVNlcCknKSxcbiAgICAgICAgICB0aGlzLiR0KCdRNCAoT2N0LUTDqWMpJylcbiAgICAgICAgXTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgc3RhdHVzQ29sb3IoKSB7XG4gICAgICBpZiAoIXRoaXMuZm9ybWF0dGVkRGF0YSkgcmV0dXJuICdncmV5JztcbiAgICAgIHJldHVybiB0aGlzLmZvcm1hdHRlZERhdGEudmFsaWRhdGlvbi5zdGF0dXMgPT09ICdDT1JSRUNUJyA/ICdzdWNjZXNzJyA6ICd3YXJuaW5nJztcbiAgICB9LFxuXG4gICAgc3RhdHVzSWNvbigpIHtcbiAgICAgIGlmICghdGhpcy5mb3JtYXR0ZWREYXRhKSByZXR1cm4gJ21kaS1oZWxwJztcbiAgICAgIHJldHVybiB0aGlzLmZvcm1hdHRlZERhdGEudmFsaWRhdGlvbi5zdGF0dXMgPT09ICdDT1JSRUNUJyA/ICdtZGktY2hlY2stY2lyY2xlJyA6ICdtZGktYWxlcnQtY2lyY2xlJztcbiAgICB9LFxuXG4gICAgdmFsaWRhdGlvbk1lc3NhZ2UoKSB7XG4gICAgICBpZiAoIXRoaXMuZm9ybWF0dGVkRGF0YSkgcmV0dXJuICcnO1xuICAgICAgaWYgKHRoaXMuZm9ybWF0dGVkRGF0YS52YWxpZGF0aW9uLnN0YXR1cyA9PT0gJ0NPUlJFQ1QnKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiR0KCdBdWRpdCBSw6l1c3NpIDogRG9ubsOpZXMgVmFsaWRlcycpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMuJHQoJ0F0dGVudGlvbiA6IMOJY2FydCBEw6l0ZWN0w6knKTtcbiAgICB9XG4gIH0sXG4gIG1vdW50ZWQoKSB7XG4gICAgdGhpcy5zZWxlY3RlZFBlcmlvZEluZGV4ID0gbnVsbDtcbiAgICB0aGlzLmZldGNoRGVjbGFyYXRpb24oKTtcbiAgICBkb2N1bWVudC50aXRsZSA9IGkxOG4udChcIkF1ZGl0IFRWQVwiKTtcbiAgfSxcbiAgbWV0aG9kczoge1xuICAgIGdldFBlcmNlbnRDb2xvcihwY3QpIHtcbiAgICAgIGlmIChwY3QgPj0gOTkpIHJldHVybiAnc3VjY2Vzcyc7XG4gICAgICBpZiAocGN0ID49IDUwKSByZXR1cm4gJ2luZm8nO1xuICAgICAgcmV0dXJuICd3YXJuaW5nJztcbiAgICB9LFxuXG4gICAgb25SZWdpbWVDaGFuZ2UoKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkUGVyaW9kSW5kZXggPSBudWxsO1xuICAgICAgdGhpcy5mZXRjaERlY2xhcmF0aW9uKCk7XG4gICAgfSxcblxuICAgIGZvcm1hdE1vbmV5KHZhbHVlKSB7XG4gICAgICBjb25zdCBudW0gPSBwYXJzZUZsb2F0KHZhbHVlKSB8fCAwO1xuICAgICAgcmV0dXJuIG51bS50b0xvY2FsZVN0cmluZygnZnItTUEnLCB7XG4gICAgICAgIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMixcbiAgICAgICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAyLFxuICAgICAgICBzdHlsZTogJ2N1cnJlbmN5JyxcbiAgICAgICAgY3VycmVuY3k6ICdNQUQnXG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgY2FsY3VsYXRlRGF0ZUFuZEZldGNoKCkge1xuICAgICAgdGhpcy5mZXRjaERlY2xhcmF0aW9uKCk7XG4gICAgfSxcblxuICAgIGV4cG9ydFBkZigpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGRvYyA9IG5ldyBqc1BERignbCcsICdtbScsICdhNCcpO1xuXG4gICAgICAgIC8vIFRpdGxlXG4gICAgICAgIGRvYy5zZXRGb250U2l6ZSgxOCk7XG4gICAgICAgIGRvYy50ZXh0KFwiQXVkaXQgVFZBICYgRMOpY2xhcmF0aW9uIC0gRMOpdGFpbCBkZXMgRmFjdHVyZXNcIiwgMTQsIDIwKTtcblxuICAgICAgICAvLyBNZXRhXG4gICAgICAgIGRvYy5zZXRGb250U2l6ZSgxMCk7XG4gICAgICAgIGRvYy50ZXh0KGBQw6lyaW9kZTogJHt0aGlzLnNlbGVjdGVkWWVhcn0gJHt0aGlzLnNlbGVjdGVkUGVyaW9kSW5kZXggPyAnLSAnICsgdGhpcy5yZWdpbWUgKyAnICcgKyB0aGlzLnNlbGVjdGVkUGVyaW9kSW5kZXggOiAnLSBBbm51ZWwnfWAsIDE0LCAyOCk7XG4gICAgICAgIGRvYy50ZXh0KGBHw6luw6lyw6kgbGU6ICR7bmV3IERhdGUoKS50b0xvY2FsZURhdGVTdHJpbmcoKX1gLCAyNTAsIDIwKTtcblxuICAgICAgICAvLyBTdW1tYXJ5XG4gICAgICAgIGF1dG9UYWJsZShkb2MsIHtcbiAgICAgICAgICBzdGFydFk6IDM1LFxuICAgICAgICAgIGhlYWQ6IFtbJ0TDqXNpZ25hdGlvbicsICdNw6l0aG9kZSAxIChPZmZpY2llbCknLCAnTcOpdGhvZGUgMiAoQ29tcHRhKScsICfDiWNhcnQnXV0sXG4gICAgICAgICAgYm9keTogW1xuICAgICAgICAgICAgWydUVkEgQ29sbGVjdMOpZScsXG4gICAgICAgICAgICAgIHRoaXMuZm9ybWF0dGVkRGF0YS5tZXRob2RfMV9vZmZpY2lhbC5jb2xsZWN0ZWUudG9GaXhlZCgyKSxcbiAgICAgICAgICAgICAgdGhpcy5mb3JtYXR0ZWREYXRhLm1ldGhvZF8yX2FjY291bnRpbmcuY29sbGVjdGVlLnRvRml4ZWQoMiksXG4gICAgICAgICAgICAgICh0aGlzLmZvcm1hdHRlZERhdGEubWV0aG9kXzFfb2ZmaWNpYWwuY29sbGVjdGVlIC0gdGhpcy5mb3JtYXR0ZWREYXRhLm1ldGhvZF8yX2FjY291bnRpbmcuY29sbGVjdGVlKS50b0ZpeGVkKDIpXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgWydUVkEgRMOpZHVjdGlibGUnLFxuICAgICAgICAgICAgICB0aGlzLmZvcm1hdHRlZERhdGEubWV0aG9kXzFfb2ZmaWNpYWwuZGVkdWN0aWJsZS50b0ZpeGVkKDIpLFxuICAgICAgICAgICAgICB0aGlzLmZvcm1hdHRlZERhdGEubWV0aG9kXzJfYWNjb3VudGluZy5kZWR1Y3RpYmxlLnRvRml4ZWQoMiksXG4gICAgICAgICAgICAgICh0aGlzLmZvcm1hdHRlZERhdGEubWV0aG9kXzFfb2ZmaWNpYWwuZGVkdWN0aWJsZSAtIHRoaXMuZm9ybWF0dGVkRGF0YS5tZXRob2RfMl9hY2NvdW50aW5nLmRlZHVjdGlibGUpLnRvRml4ZWQoMilcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBbJ1RWQSBEVUUnLFxuICAgICAgICAgICAgICB0aGlzLmZvcm1hdHRlZERhdGEubWV0aG9kXzFfb2ZmaWNpYWwubmV0X2R1ZS50b0ZpeGVkKDIpLFxuICAgICAgICAgICAgICB0aGlzLmZvcm1hdHRlZERhdGEubWV0aG9kXzJfYWNjb3VudGluZy5uZXRfZHVlLnRvRml4ZWQoMiksXG4gICAgICAgICAgICAgIHRoaXMuZm9ybWF0dGVkRGF0YS5kaWZmZXJlbmNlLnRvRml4ZWQoMilcbiAgICAgICAgICAgIF1cbiAgICAgICAgICBdLFxuICAgICAgICAgIHRoZW1lOiAnZ3JpZCcsXG4gICAgICAgICAgaGVhZFN0eWxlczogeyBmaWxsQ29sb3I6IFs0NCwgNjIsIDgwXSB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIERldGFpbHMgUmVjZXR0ZXNcbiAgICAgICAgbGV0IGZpbmFsWSA9IGRvYy5sYXN0QXV0b1RhYmxlLmZpbmFsWSArIDEwO1xuICAgICAgICBkb2Muc2V0Rm9udFNpemUoMTIpO1xuICAgICAgICBkb2MudGV4dChcIkTDqXRhaWxzIFRWQSBDb2xsZWN0w6llIChSZWNldHRlcylcIiwgMTQsIGZpbmFsWSk7XG5cbiAgICAgICAgY29uc3Qgcm93c1JlY2V0dGVzID0gdGhpcy5mb3JtYXR0ZWREYXRhLmRldGFpbHMuY29sbGVjdGVlLm1hcChpdGVtID0+IFtcbiAgICAgICAgICBpdGVtLmRhdGUsXG4gICAgICAgICAgaXRlbS5kYXRlX2ZhY3R1cmUsXG4gICAgICAgICAgaXRlbS5yZWYsXG4gICAgICAgICAgaXRlbS50aWVyLnN1YnN0cmluZygwLCAyMCksXG4gICAgICAgICAgaXRlbS5jYXRlZ29yeSxcbiAgICAgICAgICBpdGVtLnBheW1lbnRfcGVyY2VudGFnZS50b0ZpeGVkKDApICsgJyUnLFxuICAgICAgICAgIHRoaXMuZm9ybWF0TW9uZXkoaXRlbS50b3RhbF9pbnZvaWNlKSxcbiAgICAgICAgICB0aGlzLmZvcm1hdE1vbmV5KGl0ZW0uaHQpLFxuICAgICAgICAgIHRoaXMuZm9ybWF0TW9uZXkoaXRlbS50dmEpLFxuICAgICAgICAgIHRoaXMuZm9ybWF0TW9uZXkoaXRlbS50dGMpXG4gICAgICAgIF0pO1xuXG4gICAgICAgIGF1dG9UYWJsZShkb2MsIHtcbiAgICAgICAgICBzdGFydFk6IGZpbmFsWSArIDUsXG4gICAgICAgICAgaGVhZDogW1snRGF0ZSBPcCcsICdEYXRlIEZhYycsICdSZWYnLCAnQ2xpZW50JywgJ0NhdCcsICclIFJlZycsICdUb3RhbCBGYWMnLCAnSFQgUGF5w6knLCAnVFZBIFBheScsICdUVEMgUGF5J11dLFxuICAgICAgICAgIGJvZHk6IHJvd3NSZWNldHRlcyxcbiAgICAgICAgICBzdHlsZXM6IHsgZm9udFNpemU6IDgsIGNlbGxQYWRkaW5nOiAyIH0sXG4gICAgICAgICAgaGVhZFN0eWxlczogeyBmaWxsQ29sb3I6IFszOSwgMTc0LCA5Nl0gfSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gRGV0YWlscyBEZXBlbnNlc1xuICAgICAgICBmaW5hbFkgPSBkb2MubGFzdEF1dG9UYWJsZS5maW5hbFkgKyAxMDtcbiAgICAgICAgZG9jLnRleHQoXCJEw6l0YWlscyBUVkEgRMOpZHVjdGlibGUgKETDqXBlbnNlcylcIiwgMTQsIGZpbmFsWSk7XG5cbiAgICAgICAgY29uc3Qgcm93c0RlcGVuc2VzID0gdGhpcy5mb3JtYXR0ZWREYXRhLmRldGFpbHMuZGVkdWN0aWJsZS5tYXAoaXRlbSA9PiBbXG4gICAgICAgICAgaXRlbS5kYXRlLFxuICAgICAgICAgIGl0ZW0uZGF0ZV9mYWN0dXJlLFxuICAgICAgICAgIGl0ZW0ucmVmLFxuICAgICAgICAgIGl0ZW0udGllci5zdWJzdHJpbmcoMCwgMjApLFxuICAgICAgICAgIGl0ZW0uY2F0ZWdvcnksXG4gICAgICAgICAgaXRlbS5wYXltZW50X3BlcmNlbnRhZ2UudG9GaXhlZCgwKSArICclJyxcbiAgICAgICAgICB0aGlzLmZvcm1hdE1vbmV5KGl0ZW0udG90YWxfaW52b2ljZSksXG4gICAgICAgICAgdGhpcy5mb3JtYXRNb25leShpdGVtLmh0KSxcbiAgICAgICAgICB0aGlzLmZvcm1hdE1vbmV5KGl0ZW0udHZhKSxcbiAgICAgICAgICB0aGlzLmZvcm1hdE1vbmV5KGl0ZW0udHRjKVxuICAgICAgICBdKTtcblxuICAgICAgICBhdXRvVGFibGUoZG9jLCB7XG4gICAgICAgICAgc3RhcnRZOiBmaW5hbFkgKyA1LFxuICAgICAgICAgIGhlYWQ6IFtbJ0RhdGUgT3AnLCAnRGF0ZSBGYWMnLCAnUmVmJywgJ0ZvdXJuaXNzZXVyJywgJ0NhdCcsICclIFJlZycsICdUb3RhbCBGYWMnLCAnSFQgUGF5w6knLCAnVFZBIFBheScsICdUVEMgUGF5J11dLFxuICAgICAgICAgIGJvZHk6IHJvd3NEZXBlbnNlcyxcbiAgICAgICAgICBzdHlsZXM6IHsgZm9udFNpemU6IDgsIGNlbGxQYWRkaW5nOiAyIH0sXG4gICAgICAgICAgaGVhZFN0eWxlczogeyBmaWxsQ29sb3I6IFsxOTIsIDU3LCA0M10gfSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgZG9jLnNhdmUoYGF1ZGl0X3R2YV8ke3RoaXMuc2VsZWN0ZWRZZWFyfS5wZGZgKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXCJQREYgRXhwb3J0IEVycm9yOlwiLCBlcnJvcik7XG4gICAgICAgIHRoaXMuJHN0b3JlLmRpc3BhdGNoKFwic2hvd1NuYWNrYmFyXCIsIHtcbiAgICAgICAgICB0ZXh0OiB0aGlzLiR0KFwiRXJyZXVyIGxvcnMgZGUgbGEgY3LDqWF0aW9uIGR1IFBERlwiKSxcbiAgICAgICAgICBjb2xvcjogXCJlcnJvclwiXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICBhc3luYyBmZXRjaERlY2xhcmF0aW9uKCkge1xuICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgIHRoaXMuYXBpRGF0YSA9IG51bGw7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgICAgICByZWdpbWU6IHRoaXMucmVnaW1lLFxuICAgICAgICAgIGRhdGU6IHRoaXMuc2VsZWN0ZWRZZWFyXG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRQZXJpb2RJbmRleCAhPT0gbnVsbCkge1xuICAgICAgICAgIGlmICh0aGlzLnJlZ2ltZSA9PT0gJ3RyaW1lc3RyaWVsbGUnKSB7XG4gICAgICAgICAgICBwYXJhbXMudHJpbWVzdHJlID0gdGhpcy5zZWxlY3RlZFBlcmlvZEluZGV4O1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwYXJhbXMuZGF0ZSA9IGAke3RoaXMuc2VsZWN0ZWRZZWFyfS0ke1N0cmluZyh0aGlzLnNlbGVjdGVkUGVyaW9kSW5kZXgpLnBhZFN0YXJ0KDIsICcwJyl9YDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGF4aW9zLmdldCh0aGlzLkJhc2VfdXJsX3dlYiArICcvdHZhL2RlY2xhcmF0aW9uL2FwaScsIHtcbiAgICAgICAgICBwYXJhbXMsXG4gICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgQXV0aG9yaXphdGlvbjogbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJKV1RUb2tlblwiKVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5hcGlEYXRhID0gcmVzcG9uc2UuZGF0YTtcblxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihcIkVycm9yIGZldGNoaW5nIFRWQSBEZWNsYXJhdGlvbjpcIiwgZXJyb3IpO1xuICAgICAgICB0aGlzLiRzdG9yZS5kaXNwYXRjaChcInNob3dTbmFja2JhclwiLCB7XG4gICAgICAgICAgdGV4dDogdGhpcy4kdChcIkVycmV1ciBsb3JzIGRlIGwnYXVkaXQgVFZBXCIpLFxuICAgICAgICAgIGNvbG9yOiBcImVycm9yXCJcbiAgICAgICAgfSk7XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG48L3NjcmlwdD5cblxuPHN0eWxlIHNjb3BlZD5cbi5ib3JkZXItd2FybmluZyB7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNmYjhjMDA7XG59XG5cbi5iZy1ncmF5LTUwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y5ZmFmYjtcbn1cbjwvc3R5bGU+XG4iLCI8dGVtcGxhdGU+XG4gIDxkaXY+XG4gICAgPHYtcm93IGNsYXNzPVwianVzdGlmeS1jZW50ZXJcIj5cbiAgICAgIDx2LWNvbCBjb2xzPVwiMTJcIiBsZz1cIjVcIiBjbGFzcz1cImp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgIDxoMj57eyAkdChcIkFkbWluaXN0cmF0ZXVyIGRlIGJhc2UgZGUgZG9ubsOpZXNcIikgfX08L2gyPlxuICAgICAgPC92LWNvbD5cbiAgICA8L3Ytcm93PlxuXG4gICAgPHYtcm93IGNsYXNzPVwianVzdGlmeS1jZW50ZXJcIj5cbiAgICAgIDx2LWNvbCBjb2xzPVwiMTFcIiBsZz1cIjVcIj5cbiAgICAgICAgPHYtY29sIGNvbHM9XCIxMlwiPlxuICAgICAgICAgIDx2LWRhdGUtcGlja2VyIDpkaXNhYmxlZD1cImxvYWQgfHwgdmFsdWVQcm9ncmVzcyA+IDBcIiA6ZXZlbnRzPVwiZGF0ZUV2ZW50c1wiIGZ1bGwtd2lkdGggdi1tb2RlbD1cImRhdGVcIlxuICAgICAgICAgICAgOmxvY2FsZT1cIiR0KCdsb2NhbGUnKVwiPjwvdi1kYXRlLXBpY2tlcj5cbiAgICAgICAgPC92LWNvbD5cbiAgICAgICAgPHYtY29sIGNvbHM9XCIxMlwiPlxuICAgICAgICAgIDx2LWZpbGUtaW5wdXQgOmxhYmVsPVwiJHQoJ2ltcG9ydGVyIGJhc2UgZG9ubsOpZXMgZm9ybWF0IHNxbCAnKVwiIEBjaGFuZ2U9XCJtb2RlbGJpbmRmaWxlKCRldmVudClcIiBzaG93LXNpemVcbiAgICAgICAgICAgIGNvdW50ZXIgY2hpcHMgaWNvbj1cIm1kaS1kYXRhYmFzZS1pbXBvcnQtb3V0bGluZVwiPjwvdi1maWxlLWlucHV0PlxuICAgICAgICAgIDxiciAvPjxiciAvPlxuICAgICAgICA8L3YtY29sPlxuICAgICAgPC92LWNvbD5cblxuICAgICAgPHYtY29sIGNvbHM9XCIxMVwiIGxnPVwiNVwiIGNsYXNzPVwianVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgPHYtcm93IGNsYXNzPVwianVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgICA8di1jb2wgY29scz1cIjEwXCI+XG4gICAgICAgICAgICA8aDM+e3sgJHQoXCJHZXN0aW9uIGJhc2UgZGUgZG9ubsOpZXNcIikgfX08L2gzPlxuICAgICAgICAgIDwvdi1jb2w+XG4gICAgICAgIDwvdi1yb3c+XG5cbiAgICAgICAgPHYtcm93PlxuICAgICAgICAgIDx2LWNvbCBjb2xzPVwiM1wiPlxuICAgICAgICAgICAgPHYtdG9vbHRpcCB0b3A+XG4gICAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6YWN0aXZhdG9yPVwieyBvbiB9XCI+XG4gICAgICAgICAgICAgICAgPHYtYnRuIEBjbGljaz1cInNhdmVfYmFja3VwZGIoKVwiIHYtb249XCJvblwiPlxuICAgICAgICAgICAgICAgICAgPHYtaWNvbiBjb2xvcj1cInByaW1hcnlcIj5tZGktY29udGVudC1zYXZlPC92LWljb24+XG4gICAgICAgICAgICAgICAgPC92LWJ0bj5cbiAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgPHNwYW4+IHt7ICR0KFwic2F2YW5nYXJkZXIgYmFzZSBkb25uw6llIGFcIikgfX0gPC9zcGFuPlxuICAgICAgICAgICAgICA8c3Ryb25nPnt7IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKS5zdWJzdHIoMCwgMTApIH19PC9zdHJvbmc+XG4gICAgICAgICAgICA8L3YtdG9vbHRpcD5cbiAgICAgICAgICA8L3YtY29sPlxuICAgICAgICAgIDx2LWNvbCBjb2xzPVwiM1wiPlxuICAgICAgICAgICAgPHYtdG9vbHRpcCB0b3A+XG4gICAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6YWN0aXZhdG9yPVwieyBvbiB9XCI+XG4gICAgICAgICAgICAgICAgPHYtYnRuIEBjbGljaz1cInJlc3RvcmVkYigpXCIgdi1vbj1cIm9uXCIgOmRpc2FibGVkPVwicmFkaW9Hcm91cERhdGUgPT0gJydcIj5cbiAgICAgICAgICAgICAgICAgIDx2LWljb24gY29sb3I9XCJvcmFuZ2VcIj5tZGktZmlsZS1yZXN0b3JlLW91dGxpbmU8L3YtaWNvbj5cbiAgICAgICAgICAgICAgICA8L3YtYnRuPlxuICAgICAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICAgICAgICA8c3Bhbj4ge3sgJHQoXCJyZXN0YXVyYXRpb24gYmFzZSBkb25uw6llIGFcIikgfX0gPC9zcGFuPlxuICAgICAgICAgICAgICA8c3Ryb25nPnt7IHJhZGlvR3JvdXBEYXRlIH19PC9zdHJvbmc+XG4gICAgICAgICAgICA8L3YtdG9vbHRpcD5cbiAgICAgICAgICA8L3YtY29sPlxuXG4gICAgICAgICAgPHYtY29sIGNvbHM9XCIzXCI+XG4gICAgICAgICAgICA8di10b29sdGlwIHRvcD5cbiAgICAgICAgICAgICAgPHRlbXBsYXRlIHYtc2xvdDphY3RpdmF0b3I9XCJ7IG9uIH1cIj5cbiAgICAgICAgICAgICAgICA8di1idG4gQGNsaWNrPVwiZG93bG9hZF9yZXN0b3JlZGIoKVwiIHYtb249XCJvblwiIDpkaXNhYmxlZD1cInJhZGlvR3JvdXBEYXRlID09ICcnXCI+XG4gICAgICAgICAgICAgICAgICA8di1pY29uIGNvbG9yPVwib3JhbmdlXCI+bWRpLWRvd25sb2FkPC92LWljb24+XG4gICAgICAgICAgICAgICAgPC92LWJ0bj5cbiAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgPHNwYW4+IHt7ICR0KFwidGVsZWNoYXJnZXIgYmFzZSBkb25uw6llIGFcIikgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxzdHJvbmc+e3sgcmFkaW9Hcm91cERhdGUgfX08L3N0cm9uZz5cbiAgICAgICAgICAgIDwvdi10b29sdGlwPlxuICAgICAgICAgIDwvdi1jb2w+XG4gICAgICAgICAgPHYtY29sIGNvbHM9XCIzXCI+XG4gICAgICAgICAgICA8di10b29sdGlwIHRvcD5cbiAgICAgICAgICAgICAgPHRlbXBsYXRlIHYtc2xvdDphY3RpdmF0b3I9XCJ7IG9uIH1cIj5cbiAgICAgICAgICAgICAgICA8di1idG4gQGNsaWNrPVwiZG93bG9hZF9hbGwoKVwiIHYtb249XCJvblwiIDpsb2FkaW5nPVwibG9hZGJ0blwiIDpkaXNhYmxlZD1cImxvYWRidG5cIj5cbiAgICAgICAgICAgICAgICAgIDx2LWljb24gY29sb3I9XCJyZWRcIj5tZGktZG93bmxvYWQtbG9jay1vdXRsaW5lPC92LWljb24+XG4gICAgICAgICAgICAgICAgPC92LWJ0bj5cbiAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgPHNwYW4+e3sgJHQoXCJ0ZWxlY2hhcmdlciB0b3VzXCIpIH19IDwvc3Bhbj5cbiAgICAgICAgICAgIDwvdi10b29sdGlwPlxuICAgICAgICAgIDwvdi1jb2w+XG4gICAgICAgIDwvdi1yb3c+XG5cbiAgICAgICAgPHYtcm93PlxuICAgICAgICAgIDx2LWNvbCBjb2xzPVwiMTFcIiB2LXNob3c9XCJ2YWx1ZVByb2dyZXNzID4gMFwiPlxuICAgICAgICAgICAgPHYtcHJvZ3Jlc3MtbGluZWFyIHdoaXRlPVwiMTAwJVwiIDp2YWx1ZT1cInZhbHVlUHJvZ3Jlc3NcIiBjb2xvcj1cInN1Y2Nlc3NcIiB2LXNob3c9XCJ2YWx1ZVByb2dyZXNzID4gMFwiIC8+XG4gICAgICAgICAgPC92LWNvbD5cblxuICAgICAgICAgIDx2LWNvbCBjb2xzPVwiMTFcIiB2LXNob3c9XCJsb2FkXCI+XG4gICAgICAgICAgICA8dGhlbWUtcHJvZ3Jlc3NmdWsgdi1pZj1cImxvYWRcIiB3aGl0ZT1cIjEwMCVcIiAvPlxuICAgICAgICAgICAgPCEtLSA8di1wcm9ncmVzcy1jaXJjdWxhclxuICAgICAgICAgICAgICAgIHNpemU9XCIyMDBcIlxuICAgICAgICAgICAgICAgIHYtaWY9XCJsb2FkXCJcbiAgICAgICAgICAgICAgICBpbmRldGVybWluYXRlXG4gICAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICB3aWR0aD1cIjE3XCJcbiAgICAgICAgICAgICAgPjwvdi1wcm9ncmVzcy1jaXJjdWxhcj4gLS0+XG4gICAgICAgICAgPC92LWNvbD5cblxuICAgICAgICAgIDx2LWNvbCBjb2xzPVwiMTFcIj5cbiAgICAgICAgICAgIDxkaXYgdi1odG1sPVwibWVzc2FnZVwiPjwvZGl2PlxuICAgICAgICAgIDwvdi1jb2w+XG4gICAgICAgIDwvdi1yb3c+XG5cbiAgICAgICAgPHYtcm93PlxuICAgICAgICAgIDx2LWNvbD5cbiAgICAgICAgICAgIDx2LXJhZGlvLWdyb3VwIHYtbW9kZWw9XCJyYWRpb0dyb3VwRGF0ZVwiIDpkaXNhYmxlZD1cImxvYWQgfHwgdmFsdWVQcm9ncmVzcyA+IDBcIj5cbiAgICAgICAgICAgICAgPHYtcmFkaW8gdi1mb3I9XCJsaXN0RmlsZSBpbiBsaXN0RmlsZXNcIiA6a2V5PVwibGlzdEZpbGUuaWRcIiA6dmFsdWU9XCJsaXN0RmlsZS5pZFwiPlxuICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6bGFiZWw+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWNlbnRlclwiIHN0eWxlPVwid2lkdGg6IDEwMCU7XCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGxpc3RGaWxlLmZvcm1hdGlvbiB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHYtaWNvbiB2LWlmPVwiaGFzU3RvY2tFcnJvckZvckZpbGUobGlzdEZpbGUuaWQpXCIgY29sb3I9XCJ3YXJuaW5nXCIgY2xhc3M9XCJtbC0yXCIgc21hbGw+XG4gICAgICAgICAgICAgICAgICAgICAgbWRpLWFsZXJ0LWNpcmNsZVxuICAgICAgICAgICAgICAgICAgICA8L3YtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPHYtc3BhY2VyPjwvdi1zcGFjZXI+XG4gICAgICAgICAgICAgICAgICAgIDx2LWJ0biB2LWlmPVwiaGFzU3RvY2tFcnJvckZvckZpbGUobGlzdEZpbGUuaWQpXCIgeC1zbWFsbCBjb2xvcj1cIndhcm5pbmdcIiBvdXRsaW5lZFxuICAgICAgICAgICAgICAgICAgICAgIEBjbGljay5zdG9wPVwidmlld0Vycm9yc0ZvckZpbGUobGlzdEZpbGUuaWQpXCIgY2xhc3M9XCJtbC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHYtaWNvbiB4LXNtYWxsIGNsYXNzPVwibXItMVwiPm1kaS1hbGVydC1jaXJjbGU8L3YtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICB7eyAkdChcIlZvaXIgbGVzIGVycmV1cnNcIikgfX1cbiAgICAgICAgICAgICAgICAgICAgPC92LWJ0bj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgICAgICAgIDwvdi1yYWRpbz5cbiAgICAgICAgICAgIDwvdi1yYWRpby1ncm91cD5cbiAgICAgICAgICA8L3YtY29sPlxuICAgICAgICA8L3Ytcm93PlxuXG4gICAgICAgIDwhLS0g2YLYs9mFINi52LHYtiDZhdmE2YHYp9iqINin2YTYo9iu2LfYp9ihINmE2YTYqtin2LHZitiuINin2YTZhdiu2KrYp9ixINmB2YLYtyAtLT5cbiAgICAgICAgPHYtcm93IHYtaWY9XCJzZWxlY3RlZERhdGVFcnJvckxvZ3MubGVuZ3RoID4gMFwiPlxuICAgICAgICAgIDx2LWNvbCBjb2xzPVwiMTFcIj5cbiAgICAgICAgICAgIDx2LWNhcmQgb3V0bGluZWQgY29sb3I9XCJ3YXJuaW5nXCIgY2xhc3M9XCJtdC0yXCI+XG4gICAgICAgICAgICAgIDx2LWNhcmQtdGl0bGUgY2xhc3M9XCJ0ZXh0LXN1YnRpdGxlLTFcIj5cbiAgICAgICAgICAgICAgICA8di1pY29uIGNvbG9yPVwid2FybmluZ1wiIGNsYXNzPVwibXItMlwiPm1kaS1hbGVydDwvdi1pY29uPlxuICAgICAgICAgICAgICAgIHt7ICR0KFwiRXJyZXVycyBkZSBzdG9jayBwb3VyXCIpIH19IHt7IGRhdGUgfHwgJ2NldHRlIGRhdGUnIH19XG4gICAgICAgICAgICAgIDwvdi1jYXJkLXRpdGxlPlxuICAgICAgICAgICAgICA8di1jYXJkLXRleHQ+XG4gICAgICAgICAgICAgICAgPHYtbGlzdCBkZW5zZT5cbiAgICAgICAgICAgICAgICAgIDx2LWxpc3QtaXRlbSB2LWZvcj1cImxvZyBpbiBzZWxlY3RlZERhdGVFcnJvckxvZ3NcIiA6a2V5PVwibG9nLmZpbGVuYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgQGNsaWNrPVwidmlld0xvZ0NvbnRlbnQobG9nLmZpbGVuYW1lKVwiIHN0eWxlPVwiY3Vyc29yOiBwb2ludGVyO1wiPlxuICAgICAgICAgICAgICAgICAgICA8di1saXN0LWl0ZW0taWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8di1pY29uIGNvbG9yPVwiZXJyb3JcIj5tZGktZmlsZS1hbGVydC1vdXRsaW5lPC92LWljb24+XG4gICAgICAgICAgICAgICAgICAgIDwvdi1saXN0LWl0ZW0taWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPHYtbGlzdC1pdGVtLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgPHYtbGlzdC1pdGVtLXRpdGxlPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgbG9nLnRpbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgICA8L3YtbGlzdC1pdGVtLXRpdGxlPlxuICAgICAgICAgICAgICAgICAgICAgIDx2LWxpc3QtaXRlbS1zdWJ0aXRsZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGZvcm1hdEZpbGVTaXplKGxvZy5zaXplKSB9fVxuICAgICAgICAgICAgICAgICAgICAgIDwvdi1saXN0LWl0ZW0tc3VidGl0bGU+XG4gICAgICAgICAgICAgICAgICAgIDwvdi1saXN0LWl0ZW0tY29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgPHYtbGlzdC1pdGVtLWFjdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8di1idG4gaWNvbiBzbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx2LWljb24gc21hbGw+bWRpLWV5ZTwvdi1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdi1idG4+XG4gICAgICAgICAgICAgICAgICAgIDwvdi1saXN0LWl0ZW0tYWN0aW9uPlxuICAgICAgICAgICAgICAgICAgPC92LWxpc3QtaXRlbT5cbiAgICAgICAgICAgICAgICA8L3YtbGlzdD5cbiAgICAgICAgICAgICAgPC92LWNhcmQtdGV4dD5cbiAgICAgICAgICAgIDwvdi1jYXJkPlxuICAgICAgICAgIDwvdi1jb2w+XG4gICAgICAgIDwvdi1yb3c+XG4gICAgICA8L3YtY29sPlxuICAgIDwvdi1yb3c+XG5cbiAgICA8IS0tIERpYWxvZyDZhNi52LHYtiDZhdit2KrZiNmJINin2YTYo9iu2LfYp9ihIC0tPlxuICAgIDx2LWRpYWxvZyB2LW1vZGVsPVwic2hvd0xvZ0RpYWxvZ1wiIG1heC13aWR0aD1cIjkwMHB4XCIgc2Nyb2xsYWJsZT5cbiAgICAgIDx2LWNhcmQ+XG4gICAgICAgIDx2LWNhcmQtdGl0bGUgY2xhc3M9XCJoZWFkbGluZVwiPlxuICAgICAgICAgIDx2LWljb24gY29sb3I9XCJ3YXJuaW5nXCIgY2xhc3M9XCJtci0yXCI+bWRpLWFsZXJ0LWNpcmNsZTwvdi1pY29uPlxuICAgICAgICAgIHt7ICR0KFwiRMOpdGFpbHMgZGVzIGVycmV1cnMgZGUgc3RvY2tcIikgfX1cbiAgICAgICAgICA8di1zcGFjZXI+PC92LXNwYWNlcj5cbiAgICAgICAgICA8di1idG4gaWNvbiBjb2xvcj1cImVycm9yXCIgQGNsaWNrPVwiY29uZmlybURlbGV0ZUxvZ1wiIDpkaXNhYmxlZD1cImxvYWRpbmdMb2dcIj5cbiAgICAgICAgICAgIDx2LWljb24+bWRpLWRlbGV0ZTwvdi1pY29uPlxuICAgICAgICAgIDwvdi1idG4+XG4gICAgICAgICAgPHYtYnRuIGljb24gQGNsaWNrPVwic2hvd0xvZ0RpYWxvZyA9IGZhbHNlXCI+XG4gICAgICAgICAgICA8di1pY29uPm1kaS1jbG9zZTwvdi1pY29uPlxuICAgICAgICAgIDwvdi1idG4+XG4gICAgICAgIDwvdi1jYXJkLXRpdGxlPlxuICAgICAgICA8di1kaXZpZGVyPjwvdi1kaXZpZGVyPlxuICAgICAgICA8di1jYXJkLXRleHQgc3R5bGU9XCJtYXgtaGVpZ2h0OiA2MDBweDtcIj5cbiAgICAgICAgICA8ZGl2IHYtaWY9XCJsb2FkaW5nTG9nXCIgY2xhc3M9XCJ0ZXh0LWNlbnRlciBwYS00XCI+XG4gICAgICAgICAgICA8di1wcm9ncmVzcy1jaXJjdWxhciBpbmRldGVybWluYXRlIGNvbG9yPVwicHJpbWFyeVwiPjwvdi1wcm9ncmVzcy1jaXJjdWxhcj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IHYtZWxzZT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsb2ctY29udGVudFwiIHYtaHRtbD1cImxvZ0Zvcm1hdHRlZENvbnRlbnRcIj48L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC92LWNhcmQtdGV4dD5cbiAgICAgICAgPHYtZGl2aWRlcj48L3YtZGl2aWRlcj5cbiAgICAgICAgPHYtY2FyZC1hY3Rpb25zPlxuICAgICAgICAgIDx2LXNwYWNlcj48L3Ytc3BhY2VyPlxuICAgICAgICAgIDx2LWJ0biBjb2xvcj1cInByaW1hcnlcIiB0ZXh0IEBjbGljaz1cInNob3dMb2dEaWFsb2cgPSBmYWxzZVwiPlxuICAgICAgICAgICAge3sgJHQoXCJGZXJtZXJcIikgfX1cbiAgICAgICAgICA8L3YtYnRuPlxuICAgICAgICA8L3YtY2FyZC1hY3Rpb25zPlxuICAgICAgPC92LWNhcmQ+XG4gICAgPC92LWRpYWxvZz5cblxuICAgIDwhLS0gQ29uZmlybWF0aW9uIERpYWxvZyBwb3VyIHN1cHByZXNzaW9uIC0tPlxuICAgIDx2LWRpYWxvZyB2LW1vZGVsPVwic2hvd0RlbGV0ZUNvbmZpcm1cIiBtYXgtd2lkdGg9XCI0MDBweFwiPlxuICAgICAgPHYtY2FyZD5cbiAgICAgICAgPHYtY2FyZC10aXRsZSBjbGFzcz1cImhlYWRsaW5lXCI+XG4gICAgICAgICAgPHYtaWNvbiBjb2xvcj1cImVycm9yXCIgY2xhc3M9XCJtci0yXCI+bWRpLWFsZXJ0PC92LWljb24+XG4gICAgICAgICAge3sgJHQoXCJDb25maXJtZXIgbGEgc3VwcHJlc3Npb25cIikgfX1cbiAgICAgICAgPC92LWNhcmQtdGl0bGU+XG4gICAgICAgIDx2LWNhcmQtdGV4dD5cbiAgICAgICAgICB7eyAkdChcIsOKdGVzLXZvdXMgc8O7ciBkZSB2b3Vsb2lyIHN1cHByaW1lciBjZSBmaWNoaWVyIGQnZXJyZXVyID9cIikgfX1cbiAgICAgICAgICA8YnI+XG4gICAgICAgICAgPHN0cm9uZz57eyBzZWxlY3RlZExvZ0ZpbGUgfX08L3N0cm9uZz5cbiAgICAgICAgPC92LWNhcmQtdGV4dD5cbiAgICAgICAgPHYtY2FyZC1hY3Rpb25zPlxuICAgICAgICAgIDx2LXNwYWNlcj48L3Ytc3BhY2VyPlxuICAgICAgICAgIDx2LWJ0biB0ZXh0IEBjbGljaz1cInNob3dEZWxldGVDb25maXJtID0gZmFsc2VcIj5cbiAgICAgICAgICAgIHt7ICR0KFwiQW5udWxlclwiKSB9fVxuICAgICAgICAgIDwvdi1idG4+XG4gICAgICAgICAgPHYtYnRuIGNvbG9yPVwiZXJyb3JcIiBAY2xpY2s9XCJkZWxldGVMb2dGaWxlXCI+XG4gICAgICAgICAgICB7eyAkdChcIlN1cHByaW1lclwiKSB9fVxuICAgICAgICAgIDwvdi1idG4+XG4gICAgICAgIDwvdi1jYXJkLWFjdGlvbnM+XG4gICAgICA8L3YtY2FyZD5cbiAgICA8L3YtZGlhbG9nPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG48c2NyaXB0PlxuaW1wb3J0IGF4aW9zIGZyb20gXCJheGlvc1wiO1xuZXhwb3J0IGRlZmF1bHQge1xuICBkYXRhKCkge1xuICAgIHJldHVybiB7XG4gICAgICAvLyAgZGF0ZTogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLnN1YnN0cigwLCAxMCksXG4gICAgICBkYXRlOiBcIlwiLFxuICAgICAgbG9hZGJ0bjogZmFsc2UsXG4gICAgICBsb2FkOiBmYWxzZSxcbiAgICAgIHJhZGlvR3JvdXBEYXRlOiBcIlwiLFxuXG4gICAgICBsaXN0RGF0ZTogW10sXG4gICAgICBhbGxGaWxlczoge30sXG4gICAgICBsaXN0RmlsZXM6IFtdLFxuICAgICAgc3RvY2tFcnJvcnM6IHt9LCAvLyBNYXAgb2YgZGF0ZXMgd2l0aCBzdG9jayBlcnJvcnNcbiAgICAgIHN0b2NrRXJyb3JMb2dzOiBbXSwgLy8gTGlzdCBvZiBhbGwgZXJyb3IgbG9nIGZpbGVzXG5cbiAgICAgIG1lc3NhZ2U6IFwiXCIsXG4gICAgICB2YWx1ZVByb2dyZXNzOiAwLFxuXG4gICAgICAvLyBEaWFsb2cg2YTZhNij2K7Yt9in2KFcbiAgICAgIHNob3dMb2dEaWFsb2c6IGZhbHNlLFxuICAgICAgc2VsZWN0ZWRMb2dGaWxlOiBudWxsLFxuICAgICAgbG9nQ29udGVudDogXCJcIixcbiAgICAgIGxvZ0Zvcm1hdHRlZENvbnRlbnQ6IFwiXCIsXG4gICAgICBsb2FkaW5nTG9nOiBmYWxzZSxcblxuICAgICAgLy8gQ29uZmlybWF0aW9uIGRpYWxvZ1xuICAgICAgc2hvd0RlbGV0ZUNvbmZpcm06IGZhbHNlLFxuICAgICAgZmlsZVRvRGVsZXRlOiBudWxsLFxuICAgIH07XG4gIH0sXG5cbiAgbWV0aG9kczoge1xuICAgIHNhdmVfYmFja3VwZGIoKSB7XG4gICAgICB0aGlzLmxvYWQgPSB0cnVlO1xuICAgICAgdGhpcy5kYXRlID0gXCJcIjtcbiAgICAgIHRoaXMubWVzc2FnZSA9IFwiXCI7XG4gICAgICBheGlvcy5wb3N0KHRoaXMuQmFzZV91cmxfd2ViICsgXCIvYmFja3VwL2JhY2t1cGRiXCIsIHt9LCB7XG4gICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICBBdXRob3JpemF0aW9uOiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcIkpXVFRva2VuXCIpLFxuICAgICAgICB9LFxuICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgdGhpcy5sb2FkID0gZmFsc2U7XG5cbiAgICAgICAgLy8gSGFuZGxlIG5ldyBKU09OIHJlc3BvbnNlIGZvcm1hdFxuICAgICAgICBjb25zdCBkYXRhID0gcmVzcG9uc2UuZGF0YTtcbiAgICAgICAgaWYgKHR5cGVvZiBkYXRhID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgIHRoaXMubWVzc2FnZSA9IGRhdGEubWVzc2FnZSB8fCAnJztcblxuICAgICAgICAgIC8vINil2LDYpyDZg9in2YbYqiDZh9mG2KfZgyDYo9iu2LfYp9ih2Iwg2YbYudix2LYg2KrZhtio2YrZh1xuICAgICAgICAgIGlmIChkYXRhLmhhc1N0b2NrRXJyb3JzICYmIGRhdGEuc3RvY2tFcnJvckZpbGUpIHtcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZSArPSAnPGJyPjxzdHJvbmcgc3R5bGU9XCJjb2xvcjogI2ZmOTgwMDtcIj7imqDvuI8gJyArXG4gICAgICAgICAgICAgIHRoaXMuJHQoXCJEZXMgZXJyZXVycyBkZSBzdG9jayBvbnQgw6l0w6kgZMOpdGVjdMOpZXNcIikgK1xuICAgICAgICAgICAgICAnPC9zdHJvbmc+JztcblxuICAgICAgICAgICAgLy8g2KrYrdmF2YrZhCDZgtin2KbZhdipINin2YTYo9iu2LfYp9ihINmI2YHYqtitINin2YTZgCBkaWFsb2cg2KrZhNmC2KfYptmK2KfZi1xuICAgICAgICAgICAgdGhpcy5sb2FkU3RvY2tFcnJvckxvZ3MoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgLy8g2YHYqtitINii2K7YsSDZhdmE2YEg2K7Yt9ijINiq2YTZgtin2KbZitin2YtcbiAgICAgICAgICAgICAgaWYgKGRhdGEuc3RvY2tFcnJvckZpbGUpIHtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgIHRoaXMudmlld0xvZ0NvbnRlbnQoZGF0YS5zdG9ja0Vycm9yRmlsZSk7XG4gICAgICAgICAgICAgICAgfSwgNTAwKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIEJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2l0aCBvbGQgc3RyaW5nIHJlc3BvbnNlXG4gICAgICAgICAgdGhpcy5tZXNzYWdlID0gZGF0YTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMubGlzdGJhY2t1cCgpO1xuICAgICAgfSk7XG4gICAgfSxcbiAgICByZXN0b3JlZGIoKSB7XG4gICAgICB0aGlzLmxvYWQgPSB0cnVlO1xuICAgICAgdGhpcy5tZXNzYWdlID0gXCJcIjtcbiAgICAgIGxldCBmb3JtZGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgICAgZm9ybWRhdGEuYXBwZW5kKFwiZGF0ZVwiLCB0aGlzLnJhZGlvR3JvdXBEYXRlKTtcblxuICAgICAgYXhpb3MucG9zdCh0aGlzLkJhc2VfdXJsX3dlYiArIFwiL2JhY2t1cC9yZXN0b3JlZGJcIiwgZm9ybWRhdGEsIHtcbiAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgIEF1dGhvcml6YXRpb246IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiSldUVG9rZW5cIiksXG4gICAgICAgIH0sXG4gICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICB0aGlzLm1lc3NhZ2UgPSByZXNwb25zZS5kYXRhO1xuICAgICAgICB0aGlzLmxvYWQgPSBmYWxzZTtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgbGlzdGJhY2t1cCgpIHtcbiAgICAgIHRoaXMubG9hZCA9IHRydWU7XG4gICAgICB0aGlzLm1lc3NhZ2UgPSBcIlwiO1xuICAgICAgYXhpb3MucG9zdCh0aGlzLkJhc2VfdXJsX3dlYiArIFwiL2JhY2t1cC9saXN0YmFja3VwXCIsIHt9LCB7XG4gICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICBBdXRob3JpemF0aW9uOiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcIkpXVFRva2VuXCIpLFxuICAgICAgICB9LFxuICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgdGhpcy5saXN0RGF0ZSA9IHJlc3BvbnNlLmRhdGFbXCJsaXN0RGF0ZVwiXTtcbiAgICAgICAgdGhpcy5hbGxGaWxlcyA9IHJlc3BvbnNlLmRhdGFbXCJhbGxGaWxlc1wiXTtcbiAgICAgICAgdGhpcy5zdG9ja0Vycm9ycyA9IHJlc3BvbnNlLmRhdGFbXCJzdG9ja0Vycm9yc1wiXSB8fCB7fTtcbiAgICAgICAgdGhpcy5sb2FkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZGF0ZSA9IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKS5zdWJzdHIoMCwgMTApO1xuXG4gICAgICAgIC8vINiq2K3ZhdmK2YQg2YLYp9im2YXYqSDZhdmE2YHYp9iqINin2YTYo9iu2LfYp9ihXG4gICAgICAgIHRoaXMubG9hZFN0b2NrRXJyb3JMb2dzKCk7XG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgZGF0ZUV2ZW50cyhkYXRlKSB7XG4gICAgICBpZiAodGhpcy5saXN0RGF0ZS5pbmRleE9mKGRhdGUpICE9IC0xKSB7XG4gICAgICAgIC8vINil2LDYpyDZg9in2YYg2KfZhNiq2KfYsdmK2K4g2KjZhyDYo9iu2LfYp9ihINmF2K7YstmI2YbYjCDZhti52LHYttmHINio2YTZiNmGINiq2K3YsNmK2LHZilxuICAgICAgICBpZiAodGhpcy5zdG9ja0Vycm9yc1tkYXRlXSkge1xuICAgICAgICAgIHJldHVybiBcIndhcm5pbmdcIjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gXCJzdWNjZXNzXCI7XG4gICAgICB9XG5cbiAgICAgIC8vIGNvbnN0IFssICwgZGF5XSA9IGRhdGUuc3BsaXQoXCItXCIpO1xuXG4gICAgICAvLyBpZiAoWzEyLCAxNywgMjhdLmluY2x1ZGVzKHBhcnNlSW50KGRheSwgMTApKSkgcmV0dXJuIHRydWU7XG4gICAgICAvLyBpZiAoWzEsIDE5LCAyMl0uaW5jbHVkZXMocGFyc2VJbnQoZGF5LCAxMCkpKSByZXR1cm4gW1wicmVkXCIsIFwiIzAwZlwiXTtcblxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0sXG4gICAgZG93bG9hZF9yZXN0b3JlZGIoKSB7XG4gICAgICB0aGlzLmxvYWQgPSB0cnVlO1xuICAgICAgdGhpcy5tZXNzYWdlID0gXCJcIjtcbiAgICAgIGxldCBmb3JtZGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgICAgZm9ybWRhdGEuYXBwZW5kKFwiZGF0ZVwiLCB0aGlzLnJhZGlvR3JvdXBEYXRlKTtcblxuICAgICAgYXhpb3MucG9zdCh0aGlzLkJhc2VfdXJsX3dlYiArIFwiL2JhY2t1cC9wYXRocmVzdG9yZWRiXCIsIGZvcm1kYXRhLCB7XG4gICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICBBdXRob3JpemF0aW9uOiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcIkpXVFRva2VuXCIpLFxuICAgICAgICB9LFxuICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgdGhpcy5tZXNzYWdlID0gcmVzcG9uc2UuZGF0YVtcInBhdGhcIl07XG4gICAgICAgIHRoaXMubG9hZCA9IGZhbHNlO1xuICAgICAgICBsZXQgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJhXCIpO1xuICAgICAgICBhLmhyZWYgPSByZXNwb25zZS5kYXRhW1wicGF0aFwiXTtcbiAgICAgICAgYS5kb3dubG9hZCA9IHJlc3BvbnNlLmRhdGFbXCJuYW1lXCJdO1xuICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGEpO1xuICAgICAgICBhLmNsaWNrKCk7XG4gICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoYSk7XG4gICAgICB9KTtcbiAgICB9LFxuICAgIGRvd2xvYWRfYWxsKCkge1xuICAgICAgdGhpcy5sb2FkYnRuID0gdHJ1ZTtcbiAgICAgIGxldCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImFcIik7XG4gICAgICBhLmhyZWYgPSBcImRvd2xvYWR6aXBcIjtcbiAgICAgIGEuZG93bmxvYWQgPSBcImRvd2xvYWR6aXBcIjtcbiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYSk7XG4gICAgICBhLmNsaWNrKCk7XG4gICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGEpO1xuICAgIH0sXG5cbiAgICBtb2RlbGJpbmRmaWxlKGV2ZW50KSB7XG4gICAgICAvKiAgaWYgKGV2ZW50ID09IHVuZGVmaW5lZCkge1xuICAgICAgIH0gKi9cbiAgICAgIHRoaXMudmFsdWVQcm9ncmVzcyA9IDA7XG4gICAgICBpZiAodHlwZW9mIGV2ZW50ID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAgIC8vLyBzZW5kIGZpbGVzIHRvIHNlcnZlciBhbmQgcmVzcG9ucyByZWZncm91cFxuICAgICAgICBsZXQgZm9ybWRhdGEgPSBuZXcgRm9ybURhdGEoKTtcblxuICAgICAgICBmb3JtZGF0YS5hcHBlbmQoXCJiYWNrdXBcIiwgZXZlbnQpO1xuXG4gICAgICAgIGxldCBwYXJhbSA9IHtcbiAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICBcIkNvbnRlbnQtVHlwZVwiOiBcIm11bHRpcGFydC9mb3JtLWRhdGFcIixcblxuICAgICAgICAgICAgQXV0aG9yaXphdGlvbjogbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJKV1RUb2tlblwiKSxcblxuICAgICAgICAgIH0sXG4gICAgICAgICAgb25VcGxvYWRQcm9ncmVzczogKHByb2dyZXNzRXZlbnQpID0+IHtcbiAgICAgICAgICAgIGxldCBldGF0ID0gTWF0aC5yb3VuZChcbiAgICAgICAgICAgICAgKHByb2dyZXNzRXZlbnQubG9hZGVkICogMTAwKSAvIHByb2dyZXNzRXZlbnQudG90YWxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLnZhbHVlUHJvZ3Jlc3MgPSBldGF0O1xuICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgICAgIGF4aW9zLnBvc3QodGhpcy5CYXNlX3VybF93ZWIgKyBcIi9iYWNrdXAvdXBsb2FkcmVzdG9yZWRiXCIsIGZvcm1kYXRhLCBwYXJhbSkudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICB0aGlzLmxpc3RiYWNrdXAoKTtcbiAgICAgICAgICB0aGlzLnZhbHVlUHJvZ3Jlc3MgPSAwO1xuICAgICAgICAgIHRoaXMubWVzc2FnZSA9IHJlc3BvbnNlLmRhdGE7XG4gICAgICAgICAgLy8gIGZ1bl9maW5hbGx5KHJlc3BvbnNlLmRhdGEpO1xuXG5cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSxcblxuICAgIC8vIE1ldGhvZHMg2KzYr9mK2K/YqSDZhNmE2KPYrti32KfYoVxuICAgIGxvYWRTdG9ja0Vycm9yTG9ncygpIHtcbiAgICAgIHJldHVybiBheGlvcy5wb3N0KHRoaXMuQmFzZV91cmxfd2ViICsgXCIvYmFja3VwL3N0b2NrLWVycm9yLWxvZ3NcIiwge30sIHtcbiAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgIEF1dGhvcml6YXRpb246IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiSldUVG9rZW5cIiksXG4gICAgICAgIH0sXG4gICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICB0aGlzLnN0b2NrRXJyb3JMb2dzID0gcmVzcG9uc2UuZGF0YSB8fCBbXTtcbiAgICAgIH0pLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBsb2FkaW5nIHN0b2NrIGVycm9yIGxvZ3M6JywgZXJyb3IpO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHZpZXdMb2dDb250ZW50KGZpbGVuYW1lKSB7XG4gICAgICB0aGlzLmxvYWRpbmdMb2cgPSB0cnVlO1xuICAgICAgdGhpcy5zaG93TG9nRGlhbG9nID0gdHJ1ZTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRMb2dGaWxlID0gZmlsZW5hbWU7XG5cbiAgICAgIGxldCBmb3JtZGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgICAgZm9ybWRhdGEuYXBwZW5kKFwiZmlsZW5hbWVcIiwgZmlsZW5hbWUpO1xuXG4gICAgICBheGlvcy5wb3N0KHRoaXMuQmFzZV91cmxfd2ViICsgXCIvYmFja3VwL3N0b2NrLWVycm9yLWxvZy1jb250ZW50XCIsIGZvcm1kYXRhLCB7XG4gICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICBBdXRob3JpemF0aW9uOiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcIkpXVFRva2VuXCIpLFxuICAgICAgICB9LFxuICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgdGhpcy5sb2dDb250ZW50ID0gcmVzcG9uc2UuZGF0YS5jb250ZW50IHx8ICcnO1xuICAgICAgICB0aGlzLmxvZ0Zvcm1hdHRlZENvbnRlbnQgPSByZXNwb25zZS5kYXRhLmZvcm1hdHRlZENvbnRlbnQgfHwgJyc7XG4gICAgICAgIHRoaXMubG9hZGluZ0xvZyA9IGZhbHNlO1xuICAgICAgfSkuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGxvYWRpbmcgbG9nIGNvbnRlbnQ6JywgZXJyb3IpO1xuICAgICAgICB0aGlzLmxvZ0Zvcm1hdHRlZENvbnRlbnQgPSAnPHAgc3R5bGU9XCJjb2xvcjogcmVkO1wiPkVycmV1ciBsb3JzIGR1IGNoYXJnZW1lbnQgZHUgZmljaGllcjwvcD4nO1xuICAgICAgICB0aGlzLmxvYWRpbmdMb2cgPSBmYWxzZTtcbiAgICAgIH0pO1xuICAgIH0sXG5cbiAgICBoYXNTdG9ja0Vycm9yRm9yRmlsZShmaWxlbmFtZSkge1xuICAgICAgLy8g2KfYs9iq2K7Ysdin2Kwg2KfZhNiq2KfYsdmK2K4g2YXZhiDYp9iz2YUg2KfZhNmF2YTZgVxuICAgICAgY29uc3QgZGF0ZVN0ciA9IGZpbGVuYW1lLnN1YnN0cigwLCAxMCk7XG4gICAgICByZXR1cm4gdGhpcy5zdG9ja0Vycm9yc1tkYXRlU3RyXSA9PT0gdHJ1ZTtcbiAgICB9LFxuXG4gICAgdmlld0Vycm9yc0ZvckZpbGUoZmlsZW5hbWUpIHtcbiAgICAgIC8vINin2LPYqtiu2LHYp9isINin2YTYqtin2LHZitiuINmF2YYg2KfYs9mFINin2YTZhdmE2YFcbiAgICAgIGNvbnN0IGRhdGVTdHIgPSBmaWxlbmFtZS5zdWJzdHIoMCwgMTApO1xuXG4gICAgICAvLyDYp9mE2KjYrdirINi52YYg2KPZiNmEINmF2YTZgSDYrti32KMg2YXYsdiq2KjYtyDYqNmH2LDYpyDYp9mE2KrYp9ix2YrYrlxuICAgICAgY29uc3QgcmVsYXRlZEVycm9yID0gdGhpcy5zdG9ja0Vycm9yTG9ncy5maW5kKGxvZyA9PiBsb2cuZGF0ZSA9PT0gZGF0ZVN0cik7XG5cbiAgICAgIGlmIChyZWxhdGVkRXJyb3IpIHtcbiAgICAgICAgdGhpcy52aWV3TG9nQ29udGVudChyZWxhdGVkRXJyb3IuZmlsZW5hbWUpO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICBmb3JtYXRGaWxlU2l6ZShieXRlcykge1xuICAgICAgaWYgKGJ5dGVzIDwgMTAyNCkgcmV0dXJuIGJ5dGVzICsgJyBCJztcbiAgICAgIGlmIChieXRlcyA8IDEwMjQgKiAxMDI0KSByZXR1cm4gKGJ5dGVzIC8gMTAyNCkudG9GaXhlZCgxKSArICcgS0InO1xuICAgICAgcmV0dXJuIChieXRlcyAvICgxMDI0ICogMTAyNCkpLnRvRml4ZWQoMSkgKyAnIE1CJztcbiAgICB9LFxuXG4gICAgY29uZmlybURlbGV0ZUxvZygpIHtcbiAgICAgIHRoaXMuc2hvd0RlbGV0ZUNvbmZpcm0gPSB0cnVlO1xuICAgIH0sXG5cbiAgICBkZWxldGVMb2dGaWxlKCkge1xuICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkTG9nRmlsZSkge1xuICAgICAgICB0aGlzLnNob3dEZWxldGVDb25maXJtID0gZmFsc2U7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgbGV0IGZvcm1kYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgICBmb3JtZGF0YS5hcHBlbmQoXCJmaWxlbmFtZVwiLCB0aGlzLnNlbGVjdGVkTG9nRmlsZSk7XG5cbiAgICAgIGF4aW9zLnBvc3QodGhpcy5CYXNlX3VybF93ZWIgKyBcIi9iYWNrdXAvZGVsZXRlLXN0b2NrLWVycm9yLWxvZ1wiLCBmb3JtZGF0YSwge1xuICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgQXV0aG9yaXphdGlvbjogbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJKV1RUb2tlblwiKSxcbiAgICAgICAgfSxcbiAgICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgIGlmIChyZXNwb25zZS5kYXRhLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAvLyDYpdi62YTYp9mCINmD2YQg2KfZhNmAIGRpYWxvZ3NcbiAgICAgICAgICB0aGlzLnNob3dEZWxldGVDb25maXJtID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5zaG93TG9nRGlhbG9nID0gZmFsc2U7XG5cbiAgICAgICAgICAvLyDYqtit2K/ZitirINin2YTZgtmI2KfYptmFXG4gICAgICAgICAgdGhpcy5sb2FkU3RvY2tFcnJvckxvZ3MoKTtcbiAgICAgICAgICB0aGlzLmxpc3RiYWNrdXAoKTtcblxuICAgICAgICAgIC8vINix2LPYp9mE2Kkg2YbYrNin2K1cbiAgICAgICAgICB0aGlzLm1lc3NhZ2UgPSAnPHNwYW4gc3R5bGU9XCJjb2xvcjogIzRjYWY1MDtcIj7inJMgJyArXG4gICAgICAgICAgICB0aGlzLiR0KFwiRmljaGllciBzdXBwcmltw6kgYXZlYyBzdWNjw6hzXCIpICtcbiAgICAgICAgICAgICc8L3NwYW4+JztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLm1lc3NhZ2UgPSAnPHNwYW4gc3R5bGU9XCJjb2xvcjogI2ZmNTI1MjtcIj7inJcgJyArXG4gICAgICAgICAgICAocmVzcG9uc2UuZGF0YS5lcnJvciB8fCB0aGlzLiR0KFwiRXJyZXVyIGxvcnMgZGUgbGEgc3VwcHJlc3Npb25cIikpICtcbiAgICAgICAgICAgICc8L3NwYW4+JztcbiAgICAgICAgfVxuICAgICAgfSkuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGRlbGV0aW5nIGxvZyBmaWxlOicsIGVycm9yKTtcbiAgICAgICAgdGhpcy5zaG93RGVsZXRlQ29uZmlybSA9IGZhbHNlO1xuICAgICAgICB0aGlzLm1lc3NhZ2UgPSAnPHNwYW4gc3R5bGU9XCJjb2xvcjogI2ZmNTI1MjtcIj7inJcgJyArXG4gICAgICAgICAgdGhpcy4kdChcIkVycmV1ciBsb3JzIGRlIGxhIHN1cHByZXNzaW9uIGR1IGZpY2hpZXJcIikgK1xuICAgICAgICAgICc8L3NwYW4+JztcbiAgICAgIH0pO1xuICAgIH0sXG4gIH0sXG4gIGNvbXB1dGVkOiB7XG4gICAgQmFzZV91cmxfd2ViKCkge1xuICAgICAgcmV0dXJuIHRoaXMuJHN0b3JlLmdldHRlcnNbXCJnZXRfQmFzZV91cmxcIl07XG4gICAgfSxcblxuICAgIC8vINmB2YTYqtix2Kkg2YXZhNmB2KfYqiDYp9mE2KPYrti32KfYoSDYrdiz2Kgg2KfZhNiq2KfYsdmK2K4g2KfZhNmF2K7Yqtin2LFcbiAgICBzZWxlY3RlZERhdGVFcnJvckxvZ3MoKSB7XG4gICAgICBpZiAoIXRoaXMuZGF0ZSkgcmV0dXJuIFtdO1xuXG4gICAgICByZXR1cm4gdGhpcy5zdG9ja0Vycm9yTG9ncy5maWx0ZXIobG9nID0+IGxvZy5kYXRlID09PSB0aGlzLmRhdGUpO1xuICAgIH0sXG4gIH0sXG4gIHdhdGNoOiB7XG4gICAgZGF0ZShuZXdWYWx1ZSwgb2xkVmFsdWUpIHtcbiAgICAgIGxldCBsaXN0RmlsZXMgPSBbXTtcblxuICAgICAgZm9yIChjb25zdCBmaWxlbmFtZSBpbiB0aGlzLmFsbEZpbGVzKSB7XG4gICAgICAgIGxldCByZXMgPSBmaWxlbmFtZS5zdWJzdHIoMCwgMTApO1xuICAgICAgICBpZiAocmVzID09IHRoaXMuZGF0ZSkge1xuICAgICAgICAgIGNvbnN0IGZvcm1hdGlvbiA9IHRoaXMuYWxsRmlsZXNbZmlsZW5hbWVdO1xuXG4gICAgICAgICAgbGlzdEZpbGVzLnB1c2goe1xuICAgICAgICAgICAgaWQ6IGZpbGVuYW1lLFxuICAgICAgICAgICAgZm9ybWF0aW9uOiBmb3JtYXRpb24sXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMubGlzdEZpbGVzID0gbGlzdEZpbGVzO1xuICAgIH0sXG4gIH0sXG5cbiAgbW91bnRlZCgpIHtcbiAgICB0aGlzLmxpc3RiYWNrdXAoKTtcbiAgfSxcbn07XG48L3NjcmlwdD5cbjxzdHlsZSBzY29wZWQ+XG4ubG9nLWNvbnRlbnQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1O1xuICBwYWRkaW5nOiAxNnB4O1xuICBib3JkZXItcmFkaXVzOiA0cHg7XG4gIGZvbnQtZmFtaWx5OiAnQ291cmllciBOZXcnLCAnQ29uc29sYXMnLCBtb25vc3BhY2U7XG4gIGZvbnQtc2l6ZTogMTNweDtcbiAgbGluZS1oZWlnaHQ6IDEuNjtcbiAgd2hpdGUtc3BhY2U6IHByZS13cmFwO1xuICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XG4gIGRpcmVjdGlvbjogbHRyO1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xufVxuXG4vKiBEYXJrIG1vZGUgc3VwcG9ydCAqL1xuLnRoZW1lLS1kYXJrIC5sb2ctY29udGVudCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxZTFlMWU7XG4gIGNvbG9yOiAjZTBlMGUwO1xufVxuXG4uZXJyb3ItaW5kaWNhdG9yIHtcbiAgY29sb3I6ICNmZjUyNTI7XG4gIGZvbnQtc2l6ZTogMjBweDtcbiAgbWFyZ2luLWxlZnQ6IDhweDtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbn1cbjwvc3R5bGU+XG4iLCI8dGVtcGxhdGU+XG4gIDx2LXJvdyB3cmFwIGp1c3RpZnk9XCJzcGFjZS1hcm91bmRcIiBjbGFzcz1cImVycm9ybm90XCIgPlxuICAgIDxkaXYgY2xhc3M9XCJlcnJvcm5vdFwiPlxuICAgICAgPGgxPiBXaG9vcHMhIDwvaDE+XG4gICBcbiAgICAgIDxoMT40MDQhIDwvaDE+XG5cbiAgXG4gICAgICA8YSBjbGFzcz1cImJ1dHRvblwiIGhyZWY9XCIvXCI+XG4gICAgICAgIDxpIGNsYXNzPVwiaWNvbi1ob21lXCI+PC9pPlxuICAgICAgICB7eyR0KCdNb24gdGFibGVhdSBkZSBib3JkJyl9fVxuICAgICAgPC9hPlxuICAgIDwvZGl2PlxuICA8L3Ytcm93PlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdD5cbmV4cG9ydCBkZWZhdWx0IHt9XG48L3NjcmlwdD5cblxuPHN0eWxlIHNjb3BlZD5cblxuQGltcG9ydCB1cmwoaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3M/ZmFtaWx5PVJvYm90bzo0MDAsMTAwLDMwMCw1MDApO1xuXG4uZXJyb3Jub3QgeyBcbiAgaGVpZ2h0OiAxMDAlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA3YWZmOyBcbiAgY29sb3I6ICNmZmY7XG4gIGZvbnQtc2l6ZTogMTAwJTtcbiAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgZm9udC1mYW1pbHk6IFwiUm9ib3RvXCIsIHNhbnMtc2VyaWY7XG4gIG1hcmdpbjogMCwwO1xuICBwYWRkaW5nOiAwLDA7XG59XG5cbi5idXR0b24ge1xuICBmb250LXdlaWdodDogMzAwO1xuICBjb2xvcjogI2ZmZjtcbiAgZm9udC1zaXplOiAxLjJlbTtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBib3JkZXI6IDFweCBzb2xpZCAjZWZlZmVmO1xuICBwYWRkaW5nOiAuNWVtO1xuICBib3JkZXItcmFkaXVzOiAzcHg7XG4gIGZsb2F0OiBsZWZ0O1xuICBtYXJnaW46IDZlbSAwIDAgLTE1NXB4O1xuICBsZWZ0OiA1MCU7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgdHJhbnNpdGlvbjogYWxsIC4zcyBsaW5lYXI7XG59XG5cbi5idXR0b246aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA3YWZmO1xuICBjb2xvcjogI2ZmZjtcbn1cblxucCB7XG4gIGZvbnQtc2l6ZTogMmVtO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGZvbnQtd2VpZ2h0OiAxMDA7XG59XG5cbmgxIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBmb250LXNpemU6IDE1ZW07XG4gIGZvbnQtd2VpZ2h0OiAxMDA7XG4gIHRleHQtc2hhZG93OiAjMDA2MmNjIDFweCAxcHgsICMwMDYyY2MgMnB4IDJweCwgIzAwNjJjYyAzcHggM3B4LCAjMDA2MmNkIDRweCA0cHgsICMwMDYyY2QgNXB4IDVweCwgIzAwNjJjZCA2cHggNnB4LCAjMDA2MmNkIDdweCA3cHgsICMwMDYyY2UgOHB4IDhweCwgIzAwNjNjZSA5cHggOXB4LCAjMDA2M2NlIDEwcHggMTBweCwgIzAwNjNjZSAxMXB4IDExcHgsICMwMDYzY2YgMTJweCAxMnB4LCAjMDA2M2NmIDEzcHggMTNweCwgIzAwNjNjZiAxNHB4IDE0cHgsICMwMDYzY2YgMTVweCAxNXB4LCAjMDA2M2QwIDE2cHggMTZweCwgIzAwNjRkMCAxN3B4IDE3cHgsICMwMDY0ZDAgMThweCAxOHB4LCAjMDA2NGQwIDE5cHggMTlweCwgIzAwNjRkMSAyMHB4IDIwcHgsICMwMDY0ZDEgMjFweCAyMXB4LCAjMDA2NGQxIDIycHggMjJweCwgIzAwNjRkMSAyM3B4IDIzcHgsICMwMDY0ZDIgMjRweCAyNHB4LCAjMDA2NWQyIDI1cHggMjVweCwgIzAwNjVkMiAyNnB4IDI2cHgsICMwMDY1ZDIgMjdweCAyN3B4LCAjMDA2NWQzIDI4cHggMjhweCwgIzAwNjVkMyAyOXB4IDI5cHgsICMwMDY1ZDMgMzBweCAzMHB4LCAjMDA2NWQzIDMxcHggMzFweCwgIzAwNjVkNCAzMnB4IDMycHgsICMwMDY1ZDQgMzNweCAzM3B4LCAjMDA2NmQ0IDM0cHggMzRweCwgIzAwNjZkNCAzNXB4IDM1cHgsICMwMDY2ZDUgMzZweCAzNnB4LCAjMDA2NmQ1IDM3cHggMzdweCwgIzAwNjZkNSAzOHB4IDM4cHgsICMwMDY2ZDUgMzlweCAzOXB4LCAjMDA2NmQ2IDQwcHggNDBweCwgIzAwNjZkNiA0MXB4IDQxcHgsICMwMDY3ZDYgNDJweCA0MnB4LCAjMDA2N2Q2IDQzcHggNDNweCwgIzAwNjdkNyA0NHB4IDQ0cHgsICMwMDY3ZDcgNDVweCA0NXB4LCAjMDA2N2Q3IDQ2cHggNDZweCwgIzAwNjdkNyA0N3B4IDQ3cHgsICMwMDY3ZDggNDhweCA0OHB4LCAjMDA2N2Q4IDQ5cHggNDlweCwgIzAwNjhkOCA1MHB4IDUwcHgsICMwMDY4ZDkgNTFweCA1MXB4LCAjMDA2OGQ5IDUycHggNTJweCwgIzAwNjhkOSA1M3B4IDUzcHgsICMwMDY4ZDkgNTRweCA1NHB4LCAjMDA2OGRhIDU1cHggNTVweCwgIzAwNjhkYSA1NnB4IDU2cHgsICMwMDY4ZGEgNTdweCA1N3B4LCAjMDA2OGRhIDU4cHggNThweCwgIzAwNjlkYiA1OXB4IDU5cHgsICMwMDY5ZGIgNjBweCA2MHB4LCAjMDA2OWRiIDYxcHggNjFweCwgIzAwNjlkYiA2MnB4IDYycHgsICMwMDY5ZGMgNjNweCA2M3B4LCAjMDA2OWRjIDY0cHggNjRweCwgIzAwNjlkYyA2NXB4IDY1cHgsICMwMDY5ZGMgNjZweCA2NnB4LCAjMDA2YWRkIDY3cHggNjdweCwgIzAwNmFkZCA2OHB4IDY4cHgsICMwMDZhZGQgNjlweCA2OXB4LCAjMDA2YWRkIDcwcHggNzBweCwgIzAwNmFkZSA3MXB4IDcxcHgsICMwMDZhZGUgNzJweCA3MnB4LCAjMDA2YWRlIDczcHggNzNweCwgIzAwNmFkZSA3NHB4IDc0cHgsICMwMDZiZGYgNzVweCA3NXB4LCAjMDA2YmRmIDc2cHggNzZweCwgIzAwNmJkZiA3N3B4IDc3cHgsICMwMDZiZGYgNzhweCA3OHB4LCAjMDA2YmUwIDc5cHggNzlweCwgIzAwNmJlMCA4MHB4IDgwcHgsICMwMDZiZTAgODFweCA4MXB4LCAjMDA2YmUwIDgycHggODJweCwgIzAwNmJlMSA4M3B4IDgzcHgsICMwMDZjZTEgODRweCA4NHB4LCAjMDA2Y2UxIDg1cHggODVweCwgIzAwNmNlMSA4NnB4IDg2cHgsICMwMDZjZTIgODdweCA4N3B4LCAjMDA2Y2UyIDg4cHggODhweCwgIzAwNmNlMiA4OXB4IDg5cHgsICMwMDZjZTIgOTBweCA5MHB4LCAjMDA2Y2UzIDkxcHggOTFweCwgIzAwNmRlMyA5MnB4IDkycHgsICMwMDZkZTMgOTNweCA5M3B4LCAjMDA2ZGUzIDk0cHggOTRweCwgIzAwNmRlNCA5NXB4IDk1cHgsICMwMDZkZTQgOTZweCA5NnB4LCAjMDA2ZGU0IDk3cHggOTdweCwgIzAwNmRlNCA5OHB4IDk4cHgsICMwMDZkZTUgOTlweCA5OXB4LCAjMDA2ZWU1IDEwMHB4IDEwMHB4LCAjMDA2ZWU1IDEwMXB4IDEwMXB4LCAjMDA2ZWU2IDEwMnB4IDEwMnB4LCAjMDA2ZWU2IDEwM3B4IDEwM3B4LCAjMDA2ZWU2IDEwNHB4IDEwNHB4LCAjMDA2ZWU2IDEwNXB4IDEwNXB4LCAjMDA2ZWU3IDEwNnB4IDEwNnB4LCAjMDA2ZWU3IDEwN3B4IDEwN3B4LCAjMDA2ZWU3IDEwOHB4IDEwOHB4LCAjMDA2ZmU3IDEwOXB4IDEwOXB4LCAjMDA2ZmU4IDExMHB4IDExMHB4LCAjMDA2ZmU4IDExMXB4IDExMXB4LCAjMDA2ZmU4IDExMnB4IDExMnB4LCAjMDA2ZmU4IDExM3B4IDExM3B4LCAjMDA2ZmU5IDExNHB4IDExNHB4LCAjMDA2ZmU5IDExNXB4IDExNXB4LCAjMDA2ZmU5IDExNnB4IDExNnB4LCAjMDA3MGU5IDExN3B4IDExN3B4LCAjMDA3MGVhIDExOHB4IDExOHB4LCAjMDA3MGVhIDExOXB4IDExOXB4LCAjMDA3MGVhIDEyMHB4IDEyMHB4LCAjMDA3MGVhIDEyMXB4IDEyMXB4LCAjMDA3MGViIDEyMnB4IDEyMnB4LCAjMDA3MGViIDEyM3B4IDEyM3B4LCAjMDA3MGViIDEyNHB4IDEyNHB4LCAjMDA3MWViIDEyNXB4IDEyNXB4LCAjMDA3MWVjIDEyNnB4IDEyNnB4LCAjMDA3MWVjIDEyN3B4IDEyN3B4LCAjMDA3MWVjIDEyOHB4IDEyOHB4LCAjMDA3MWVjIDEyOXB4IDEyOXB4LCAjMDA3MWVkIDEzMHB4IDEzMHB4LCAjMDA3MWVkIDEzMXB4IDEzMXB4LCAjMDA3MWVkIDEzMnB4IDEzMnB4LCAjMDA3MWVkIDEzM3B4IDEzM3B4LCAjMDA3MmVlIDEzNHB4IDEzNHB4LCAjMDA3MmVlIDEzNXB4IDEzNXB4LCAjMDA3MmVlIDEzNnB4IDEzNnB4LCAjMDA3MmVlIDEzN3B4IDEzN3B4LCAjMDA3MmVmIDEzOHB4IDEzOHB4LCAjMDA3MmVmIDEzOXB4IDEzOXB4LCAjMDA3MmVmIDE0MHB4IDE0MHB4LCAjMDA3MmVmIDE0MXB4IDE0MXB4LCAjMDA3M2YwIDE0MnB4IDE0MnB4LCAjMDA3M2YwIDE0M3B4IDE0M3B4LCAjMDA3M2YwIDE0NHB4IDE0NHB4LCAjMDA3M2YwIDE0NXB4IDE0NXB4LCAjMDA3M2YxIDE0NnB4IDE0NnB4LCAjMDA3M2YxIDE0N3B4IDE0N3B4LCAjMDA3M2YxIDE0OHB4IDE0OHB4LCAjMDA3M2YxIDE0OXB4IDE0OXB4LCAjMDA3NGYyIDE1MHB4IDE1MHB4LCAjMDA3NGYyIDE1MXB4IDE1MXB4LCAjMDA3NGYyIDE1MnB4IDE1MnB4LCAjMDA3NGYzIDE1M3B4IDE1M3B4LCAjMDA3NGYzIDE1NHB4IDE1NHB4LCAjMDA3NGYzIDE1NXB4IDE1NXB4LCAjMDA3NGYzIDE1NnB4IDE1NnB4LCAjMDA3NGY0IDE1N3B4IDE1N3B4LCAjMDA3NGY0IDE1OHB4IDE1OHB4LCAjMDA3NWY0IDE1OXB4IDE1OXB4LCAjMDA3NWY0IDE2MHB4IDE2MHB4LCAjMDA3NWY1IDE2MXB4IDE2MXB4LCAjMDA3NWY1IDE2MnB4IDE2MnB4LCAjMDA3NWY1IDE2M3B4IDE2M3B4LCAjMDA3NWY1IDE2NHB4IDE2NHB4LCAjMDA3NWY2IDE2NXB4IDE2NXB4LCAjMDA3NWY2IDE2NnB4IDE2NnB4LCAjMDA3NmY2IDE2N3B4IDE2N3B4LCAjMDA3NmY2IDE2OHB4IDE2OHB4LCAjMDA3NmY3IDE2OXB4IDE2OXB4LCAjMDA3NmY3IDE3MHB4IDE3MHB4LCAjMDA3NmY3IDE3MXB4IDE3MXB4LCAjMDA3NmY3IDE3MnB4IDE3MnB4LCAjMDA3NmY4IDE3M3B4IDE3M3B4LCAjMDA3NmY4IDE3NHB4IDE3NHB4LCAjMDA3N2Y4IDE3NXB4IDE3NXB4LCAjMDA3N2Y4IDE3NnB4IDE3NnB4LCAjMDA3N2Y5IDE3N3B4IDE3N3B4LCAjMDA3N2Y5IDE3OHB4IDE3OHB4LCAjMDA3N2Y5IDE3OXB4IDE3OXB4LCAjMDA3N2Y5IDE4MHB4IDE4MHB4LCAjMDA3N2ZhIDE4MXB4IDE4MXB4LCAjMDA3N2ZhIDE4MnB4IDE4MnB4LCAjMDA3N2ZhIDE4M3B4IDE4M3B4LCAjMDA3OGZhIDE4NHB4IDE4NHB4LCAjMDA3OGZiIDE4NXB4IDE4NXB4LCAjMDA3OGZiIDE4NnB4IDE4NnB4LCAjMDA3OGZiIDE4N3B4IDE4N3B4LCAjMDA3OGZiIDE4OHB4IDE4OHB4LCAjMDA3OGZjIDE4OXB4IDE4OXB4LCAjMDA3OGZjIDE5MHB4IDE5MHB4LCAjMDA3OGZjIDE5MXB4IDE5MXB4LCAjMDA3OWZjIDE5MnB4IDE5MnB4LCAjMDA3OWZkIDE5M3B4IDE5M3B4LCAjMDA3OWZkIDE5NHB4IDE5NHB4LCAjMDA3OWZkIDE5NXB4IDE5NXB4LCAjMDA3OWZkIDE5NnB4IDE5NnB4LCAjMDA3OWZlIDE5N3B4IDE5N3B4LCAjMDA3OWZlIDE5OHB4IDE5OHB4LCAjMDA3OWZlIDE5OXB4IDE5OXB4LCAjMDA3YWZmIDIwMHB4IDIwMHB4O1xufVxuPC9zdHlsZT5cbiIsIlxuLmRhc2hib2FyZC1jb250YWluZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgLyogTGV0IHRoZSBhcHAgYmFja2dyb3VuZCBzaG93IHRocm91Z2ggb3Igc2V0IGEgbGlnaHQgZ3JheSAqL1xuICBtaW4taGVpZ2h0OiAxMDB2aDtcbn1cblxuXG5cbi5zaWRlYmFyLXRpdGxlIHtcbiAgZm9udC1zaXplOiAxLjFyZW07XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIGNvbG9yOiAjNDI0MjQyO1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICBsZXR0ZXItc3BhY2luZzogMC41cHg7XG59XG5cbi8qIFN0aWNreSBTaWRlYmFyIGZvciBsYXJnZSBzY3JlZW5zICovXG5AbWVkaWEgKG1pbi13aWR0aDogMTI2NHB4KSB7XG4gIC5zdGlja3ktc2lkZWJhciB7XG4gICAgcG9zaXRpb246IHN0aWNreTtcbiAgICB0b3A6IDkwcHg7XG4gICAgLyogQWRqdXN0IGJhc2VkIG9uIHlvdXIgdG9vbGJhciBoZWlnaHQgKi9cbiAgfVxufVxuXG4vKiBEYXJrIE1vZGUgU3VwcG9ydCAqL1xuLnRoZW1lLS1kYXJrIHtcblxuICAuc3RhdHMtY2FyZCxcbiAgLndpZGdldC1jYXJkLFxuICAuc2lkZWJhci1jYXJkLFxuICAuY2xvY2stY2FyZCB7XG5cbiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDUpO1xuICB9XG5cbiAgLnNpZGViYXItdGl0bGUge1xuICAgIGNvbG9yOiAjRTBFMEUwO1xuICB9XG59XG4iLCI8dGVtcGxhdGU+XG4gIDxkaXYgc3R5bGU9XCJtYXJnaW4tdG9wOiA2NnB4OyBtYXJnaW4tbGVmdDogMzdweFwiPlxuICAgIDxkaXYgY2xhc3M9XCJidXR0b24tY29udGFpbmVyIG5vLXByaW50XCI+XG4gICAgICA8IS0tINmF2KzZhdmI2LnYqSDYp9mE2LfYqNin2LnYqSDZiNin2YTYqti12K/ZitixINin2YTYo9iz2KfYs9mK2KkgLS0+XG4gICAgICA8di1idG5cbiAgICAgICAgY29sb3I9XCJsaWdodC1ibHVlIGxpZ2h0ZW4tMVwiXG4gICAgICAgIEBjbGljaz1cInByaW50RG9jdW1lbnRcIlxuICAgICAgICBkYXJrXG4gICAgICAgIG91dGxpbmVkXG4gICAgICAgIGVsZXZhdGlvbj1cIjJcIlxuICAgICAgPlxuICAgICAgICA8di1pY29uIGxlZnQ+bWRpLXByaW50ZXI8L3YtaWNvbj5cbiAgICAgICAgUHJpbnRlclxuICAgICAgPC92LWJ0bj5cbiAgICAgIDx2LWJ0biBjb2xvcj1cImJsdWUgZGFya2VuLTJcIiBAY2xpY2s9XCJpbWFnZXRvXCIgZGFyayBvdXRsaW5lZCBlbGV2YXRpb249XCIyXCI+XG4gICAgICAgIDx2LWljb24gbGVmdD5tZGktaW1hZ2U8L3YtaWNvbj5cbiAgICAgICAgSW1hZ2VcbiAgICAgIDwvdi1idG4+XG5cbiAgICAgIDx2LWRpdmlkZXIgdmVydGljYWwgY2xhc3M9XCJteC0yXCI+PC92LWRpdmlkZXI+XG5cbiAgICAgIDwhLS0g2YXYrNmF2YjYudipINiq2LXYr9mK2LEgUERGIC0tPlxuICAgICAgPHYtYnRuXG4gICAgICAgIGNvbG9yPVwicmVkIGRhcmtlbi0yXCJcbiAgICAgICAgQGNsaWNrPVwiZXhwb3J0UGRmQWR2YW5jZWRcIlxuICAgICAgICBkYXJrXG4gICAgICAgIG91dGxpbmVkXG4gICAgICAgIGVsZXZhdGlvbj1cIjJcIlxuICAgICAgPlxuICAgICAgICA8di1pY29uIGxlZnQ+bWRpLWZpbGUtcGRmLWJveDwvdi1pY29uPlxuICAgICAgICBQREZcbiAgICAgIDwvdi1idG4+XG4gICAgICA8di1idG5cbiAgICAgICAgY29sb3I9XCJyZWQgZGFya2VuLTNcIlxuICAgICAgICBAY2xpY2s9XCJwZGZfaW1wcm92ZWRfaW1hZ2VfYmFzZWRcIlxuICAgICAgICBkYXJrXG4gICAgICAgIG91dGxpbmVkXG4gICAgICAgIGVsZXZhdGlvbj1cIjJcIlxuICAgICAgPlxuICAgICAgICA8di1pY29uIGxlZnQ+bWRpLWZpbGUtcGRmLWJveDwvdi1pY29uPlxuICAgICAgICBQREYgUGx1c1xuICAgICAgPC92LWJ0bj5cbiAgICAgIDx2LWJ0blxuICAgICAgICBjb2xvcj1cInB1cnBsZSBkYXJrZW4tMlwiXG4gICAgICAgIEBjbGljaz1cInByZXZpZXdfcGRmX2RldGFpbHNcIlxuICAgICAgICA6bG9hZGluZz1cImxvYWRpbmdQZGZcIlxuICAgICAgICBkYXJrXG4gICAgICAgIG91dGxpbmVkXG4gICAgICAgIGVsZXZhdGlvbj1cIjJcIlxuICAgICAgPlxuICAgICAgICA8di1pY29uIGxlZnQ+bWRpLWZpbGUtcGRmLWJveC1vdXRsaW5lPC92LWljb24+XG4gICAgICAgIFBERiBEZXRhaWxzXG4gICAgICA8L3YtYnRuPlxuXG4gICAgICA8di1kaXZpZGVyIHZlcnRpY2FsIGNsYXNzPVwibXgtMlwiPjwvdi1kaXZpZGVyPlxuXG4gICAgICA8IS0tINmF2KzZhdmI2LnYqSDYqti12K/ZitixINin2YTYqNmK2KfZhtin2KogLS0+XG4gICAgICA8di1idG5cbiAgICAgICAgY29sb3I9XCJncmVlbiBkYXJrZW4tMlwiXG4gICAgICAgIEBjbGljaz1cImV4Y2VsanNcIlxuICAgICAgICBkYXJrXG4gICAgICAgIG91dGxpbmVkXG4gICAgICAgIGVsZXZhdGlvbj1cIjJcIlxuICAgICAgPlxuICAgICAgICA8di1pY29uIGxlZnQ+bWRpLW1pY3Jvc29mdC1leGNlbDwvdi1pY29uPlxuICAgICAgICBFeGNlbFxuICAgICAgPC92LWJ0bj5cbiAgICAgIDx2LWJ0biBjb2xvcj1cIm9yYW5nZSBkYXJrZW4tMlwiIEBjbGljaz1cImNzdlwiIGRhcmsgb3V0bGluZWQgZWxldmF0aW9uPVwiMlwiPlxuICAgICAgICA8di1pY29uIGxlZnQ+bWRpLWZpbGUtZGVsaW1pdGVkPC92LWljb24+XG4gICAgICAgIENTVlxuICAgICAgPC92LWJ0bj5cbiAgICAgIDx2LWJ0blxuICAgICAgICBjb2xvcj1cInB1cnBsZSBkYXJrZW4tMlwiXG4gICAgICAgIEBjbGljaz1cImNzdmFsbFwiXG4gICAgICAgIGRhcmtcbiAgICAgICAgb3V0bGluZWRcbiAgICAgICAgZWxldmF0aW9uPVwiMlwiXG4gICAgICA+XG4gICAgICAgIDx2LWljb24gbGVmdD5tZGktZmlsZS10YWJsZTwvdi1pY29uPlxuICAgICAgICBDU1YgRGV0YWlsc1xuICAgICAgPC92LWJ0bj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0g4pyFINin2YTYrti32YjYqSAxOiDYpdi22KfZgdipINin2YTZhtin2YHYsNipINin2YTZhdmG2KjYq9mC2KkgKERpYWxvZykg2YTZhNmF2LnYp9mK2YbYqSAtLT5cbiAgICA8di1kaWFsb2dcbiAgICAgIGNsYXNzPVwibm8tcHJpbnRcIlxuICAgICAgdi1tb2RlbD1cImRpYWxvZ1ByZXZpZXdcIlxuICAgICAgd2lkdGg9XCI5MCVcIlxuICAgICAgaGlkZS1vdmVybGF5XG4gICAgICB0cmFuc2l0aW9uPVwiZGlhbG9nLWJvdHRvbS10cmFuc2l0aW9uXCJcbiAgICA+XG4gICAgICA8di1jYXJkPlxuICAgICAgICA8di10b29sYmFyIGRhcmsgY29sb3I9XCJwcmltYXJ5XCI+XG4gICAgICAgICAgPHYtYnRuIGljb24gZGFyayBAY2xpY2s9XCJkaWFsb2dQcmV2aWV3ID0gZmFsc2VcIj5cbiAgICAgICAgICAgIDx2LWljb24+bWRpLWNsb3NlPC92LWljb24+XG4gICAgICAgICAgPC92LWJ0bj5cbiAgICAgICAgICA8di10b29sYmFyLXRpdGxlPiBQcmV2aWV3IFBERiBEZXRhaWxzIDwvdi10b29sYmFyLXRpdGxlPlxuICAgICAgICAgIDx2LXNwYWNlcj48L3Ytc3BhY2VyPlxuICAgICAgICAgIDx2LXRvb2xiYXItaXRlbXM+XG4gICAgICAgICAgICA8di1idG4gZGFyayB0ZXh0IEBjbGljaz1cInBkZl9kZXRhaWxzXCIgOmxvYWRpbmc9XCJsb2FkaW5nUGRmRG93bmxvYWRcIj5cbiAgICAgICAgICAgICAgPHYtaWNvbiBsZWZ0Pm1kaS1kb3dubG9hZDwvdi1pY29uPlxuICAgICAgICAgICAgICBUZWxlY2hhcmdlciBQREZcbiAgICAgICAgICAgIDwvdi1idG4+XG4gICAgICAgICAgICA8di1idG4gZGFyayB0ZXh0IEBjbGljaz1cInByaW50UHJldmlld1wiPlxuICAgICAgICAgICAgICA8di1pY29uIGxlZnQ+bWRpLXByaW50ZXI8L3YtaWNvbj5cbiAgICAgICAgICAgICAgUHJpbnRlclxuICAgICAgICAgICAgPC92LWJ0bj5cbiAgICAgICAgICA8L3YtdG9vbGJhci1pdGVtcz5cbiAgICAgICAgPC92LXRvb2xiYXI+XG5cbiAgICAgICAgPGlmcmFtZVxuICAgICAgICAgIHJlZj1cInByZXZpZXdGcmFtZVwiXG4gICAgICAgICAgc3R5bGU9XCJ3aWR0aDogMTAwJTsgaGVpZ2h0OiBjYWxjKDEwMHZoIC0gNjRweCk7IGJvcmRlcjogbm9uZVwiXG4gICAgICAgID48L2lmcmFtZT5cbiAgICAgIDwvdi1jYXJkPlxuICAgIDwvdi1kaWFsb2c+XG5cbiAgICA8IS0tIDx2LWJ0biBAY2xpY2s9XCJleGNlbFwiPmV4Y2VsIChNb3ppbGxhIEZpcmVmb3gpPC92LWJ0bj4gLS0+XG5cbiAgICA8ZGl2IHJlZj1cImRvY3VtZW50XCIgY2xhc3M9XCJ0YWJsZS1jb250YWluZXIgcHJpbnRhYmxlLWFyZWFcIj5cbiAgICAgIDxoMT57eyAkdChjb250cm9sbGVyKSB9fTwvaDE+XG5cbiAgICAgIDx0YWJsZSBjbGFzcz1cInBhbGVCbHVlUm93c1wiIHJlZj1cImRvY3VtZW50dGFibGVcIj5cbiAgICAgICAgPHRoZWFkPlxuICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgIDx0aCB2LWZvcj1cIih2YWwsIGkpIGluIGhlYWRlcnNcIiA6a2V5PVwiaVwiPnt7IHZhbC50ZXh0IH19PC90aD5cbiAgICAgICAgICA8L3RyPlxuICAgICAgICA8L3RoZWFkPlxuXG4gICAgICAgIDx0Ym9keT5cbiAgICAgICAgICA8dHIgdi1mb3I9XCIocm93LCBsKSBpbiBzZWxlY3RlZHNcIiA6a2V5PVwibFwiPlxuICAgICAgICAgICAgPHRkIHYtZm9yPVwiKGhlZCwgaikgaW4gaGVhZGVyc1wiIDprZXk9XCJqXCI+e3sgcm93W2hlZC52YWx1ZV0gfX08L3RkPlxuICAgICAgICAgIDwvdHI+XG4gICAgICAgIDwvdGJvZHk+XG4gICAgICA8L3RhYmxlPlxuXG4gICAgICA8di1hbGVydFxuICAgICAgICBjbGFzcz1cImJ1dHRvbi1jb250YWluZXJcIlxuICAgICAgICBib3JkZXI9XCJsZWZ0XCJcbiAgICAgICAgY29sb3JlZC1ib3JkZXJcbiAgICAgICAgY29sb3I9XCJvcmFuZ2VcIlxuICAgICAgICBkZW5zZVxuICAgICAgICB0eXBlPVwic3VjY2Vzc1wiXG4gICAgICA+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgdi1mb3I9XCIobW9udGFudCwgaW5kZXhtb250YW50dCkgaW4gY2FsY3VsZW1vbnRhbnRpdGVtXCJcbiAgICAgICAgICA6a2V5PVwiaW5kZXhtb250YW50dFwiXG4gICAgICAgID5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgdi1zaG93PVwiXG4gICAgICAgICAgICAgIG5vdGFmZmljaGUuaW5jbHVkZXMobW9udGFudCkgPT0gZmFsc2UgJiZcbiAgICAgICAgICAgICAgY2FsY3VsZW1vbnRhbnQoc2VsZWN0ZWRzLCBtb250YW50KSA+IDBcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgJHQoXCJUT1RBTCBcIiArIG1vbnRhbnQpIH19IDpcbiAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgIGNhbGN1bGVtb250YW50KHNlbGVjdGVkcywgbW9udGFudCkudG9Mb2NhbGVTdHJpbmcodW5kZWZpbmVkLCB7XG4gICAgICAgICAgICAgICAgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAyLFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIERIPGJyIC8+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L3YtYWxlcnQ+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cbjxzY3JpcHQ+XG5pbXBvcnQganNQREYgZnJvbSBcImpzcGRmXCI7IC8vINin2LPYqtmK2LHYp9ivINin2YTYp9mB2KrYsdin2LbZilxuaW1wb3J0IGF1dG9UYWJsZSBmcm9tIFwianNwZGYtYXV0b3RhYmxlXCI7IC8vINin2LPYqtmK2LHYp9ivINin2YTYr9in2YTYqSDZhtmB2LPZh9inXG5pbXBvcnQgaHRtbDJwZGYgZnJvbSBcImh0bWwycGRmLmpzXCI7XG5pbXBvcnQgaHRtbDJjYW52YXMgZnJvbSBcImh0bWwyY2FudmFzXCI7XG5cbmltcG9ydCBFeHBvcnRKc29uRXhjZWwgZnJvbSBcImpzLWV4cG9ydC1leGNlbFwiO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxvYWRpbmdQZGY6IGZhbHNlLFxuICAgICAgbG9hZGluZ1BkZkRvd25sb2FkOiBmYWxzZSxcbiAgICAgIGRpYWxvZ1ByZXZpZXc6IGZhbHNlLFxuICAgICAgcHJldmlld0h0bWw6IFwiXCIsXG5cbiAgICAgIGNhbGN1bGVtb250YW50aXRlbTogW1xuICAgICAgICBcIm1vbnRhbnRIdFwiLFxuICAgICAgICBcIm1vbnRhbnRUdmFcIixcbiAgICAgICAgXCJtb250YW50VHRjXCIsXG4gICAgICAgIFwiZGVqYXJlZ2xlXCIsXG4gICAgICAgIFwibW9udGFudGVuY291cnNcIixcbiAgICAgICAgXCJzb2xkZWFjdHVlbFwiLFxuICAgICAgICBcIm1vbnRhbnRcIixcbiAgICAgIF0sXG4gICAgfTtcbiAgfSxcbiAgd2F0Y2g6IHtcbiAgICBkaWFsb2dQcmV2aWV3KGlzT3BlbmluZykge1xuICAgICAgLy8g2YfYsNinINin2YTZg9mI2K8g2LPZiti52YXZhCDZgdmC2Lcg2LnZhtiv2YXYpyDZitiq2YUg2YHYqtitINin2YTZhtin2YHYsNipICjZhdmGIGZhbHNlINil2YTZiSB0cnVlKVxuICAgICAgaWYgKGlzT3BlbmluZykge1xuICAgICAgICB0aGlzLiRuZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgY29uc3QgaWZyYW1lID0gdGhpcy4kcmVmcy5wcmV2aWV3RnJhbWU7XG4gICAgICAgICAgaWYgKGlmcmFtZSkge1xuICAgICAgICAgICAgLy8g4pyFINin2YTYrti32YjYqSAzOiDYpdi22KfZgdipINmF2LPYqtmF2Lkg2YTYrdiv2KsgXCJsb2FkXCJcbiAgICAgICAgICAgIC8vINmH2LDYpyDZiti22YXZhiDYo9mGINin2YTZg9mI2K8g2KfZhNiq2KfZhNmKINmE2YYg2YrYudmF2YQg2KXZhNinINio2LnYryDYo9mGINmK2YPZiNmGINin2YTZgCBpZnJhbWUg2KzYp9mH2LLZi9inINiq2YXYp9mF2YvYp1xuICAgICAgICAgICAgaWZyYW1lLm9ubG9hZCA9ICgpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgZG9jID0gaWZyYW1lLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQ7XG4gICAgICAgICAgICAgIGRvYy5vcGVuKCk7XG4gICAgICAgICAgICAgIGRvYy53cml0ZSh0aGlzLnByZXZpZXdIdG1sKTsgLy8g2YbYs9iq2K7Yr9mFINin2YTZgCBIVE1MINin2YTZhdiu2LLZhlxuICAgICAgICAgICAgICBkb2MuY2xvc2UoKTtcbiAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nUGRmID0gZmFsc2U7IC8vINmG2YjZgtmBINin2YTYqtit2YXZitmEINio2LnYryDYudix2LYg2KfZhNmF2K3YqtmI2YlcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICAvLyDZgdmKINio2LnYtiDYp9mE2K3Yp9mE2KfYqtiMINmC2K8g2YrZg9mI2YYg2KfZhNmAIGlmcmFtZSDZgtivINiq2YUg2KrYrdmF2YrZhNmHINio2KfZhNmB2LnZhCDYqNiz2LHYudipXG4gICAgICAgICAgICAvLyDZhNiw2Kcg2YbZgtmI2YUg2KjYp9mE2YPYqtin2KjYqSDZgdmK2Ycg2YXYqNin2LTYsdipINil2LDYpyDZg9in2YYg2KzYp9mH2LLZi9inXG4gICAgICAgICAgICBpZiAoaWZyYW1lLmNvbnRlbnRXaW5kb3cgJiYgaWZyYW1lLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQpIHtcbiAgICAgICAgICAgICAgY29uc3QgZG9jID0gaWZyYW1lLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQ7XG4gICAgICAgICAgICAgIGRvYy5vcGVuKCk7XG4gICAgICAgICAgICAgIGRvYy53cml0ZSh0aGlzLnByZXZpZXdIdG1sKTtcbiAgICAgICAgICAgICAgZG9jLmNsb3NlKCk7XG4gICAgICAgICAgICAgIHRoaXMubG9hZGluZ1BkZiA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSxcbiAgfSxcblxuICBjb21wdXRlZDoge1xuICAgIGNvbnRyb2xsZXIoKSB7XG4gICAgICByZXR1cm4gdGhpcy4kcm91dGUucGFyYW1zLmNvbnRyb2xsZXI7XG4gICAgfSxcblxuICAgIHNlbGVjdGVkcygpIHtcbiAgICAgIHJldHVybiB0aGlzLiRzdG9yZS5nZXR0ZXJzW1wic2hvd19kYXRhL2dfc2VsZWN0ZWRcIl0oe1xuICAgICAgICBjb250cm9sbGVyX3Jvb3Q6IHRoaXMuY29udHJvbGxlcixcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgbm90YWZmaWNoZSgpIHtcbiAgICAgIHJldHVybiB0aGlzLiRzdG9yZS5nZXR0ZXJzW1wic2hvd19kYXRhL2dfbm90X2FmZmljaGVcIl0oe1xuICAgICAgICBjb250cm9sbGVyX3Jvb3Q6IHRoaXMuY29udHJvbGxlcixcbiAgICAgIH0pO1xuICAgIH0sXG5cbiAgICBuYW1lc2V4cGFuZGVkKCkge1xuICAgICAgbGV0IGNvbnRyb2xsZXIgPSB0aGlzLmNvbnRyb2xsZXI7XG4gICAgICBsZXQgZXhwYW5kZWQgPSB0aGlzLiRzdG9yZS5nZXR0ZXJzW1wic2hvd19kYXRhL2dfZXhwYW5kZWRcIl0oe1xuICAgICAgICBjb250cm9sbGVyX3Jvb3Q6IGNvbnRyb2xsZXIsXG4gICAgICB9KTtcblxuICAgICAgbGV0IG5hbWVzZXhwYW5kZWQgPSBbXTtcbiAgICAgIGZvciAoY29uc3Qga2V5IGluIGV4cGFuZGVkKSB7XG4gICAgICAgIG5hbWVzZXhwYW5kZWQucHVzaChleHBhbmRlZFtrZXldW1wiY29udHJvbGxlcl9hdHRhY2hcIl0pO1xuICAgICAgfVxuICAgICAgY29uc29sZS5sb2cobmFtZXNleHBhbmRlZCk7XG4gICAgICByZXR1cm4gbmFtZXNleHBhbmRlZDtcbiAgICB9LFxuXG4gICAgaGVhZGVycygpIHtcbiAgICAgIGxldCBjb250cm9sbGVyID0gdGhpcy5jb250cm9sbGVyO1xuXG4gICAgICBsZXQgbm90X2FmZmljaGVzID0gW107XG4gICAgICBub3RfYWZmaWNoZXMgPSB0aGlzLiRzdG9yZS5nZXR0ZXJzW1wic2hvd19kYXRhL2dfbm90X2FmZmljaGVcIl0oe1xuICAgICAgICBjb250cm9sbGVyX3Jvb3Q6IGNvbnRyb2xsZXIsXG4gICAgICB9KTtcblxuICAgICAgbGV0IGhlYWRlcnMgPSB0aGlzLiRzdG9yZS5nZXR0ZXJzW1wic2hvd19kYXRhL2dfaGVhZGVyc1wiXSh7XG4gICAgICAgIGNvbnRyb2xsZXJfcm9vdDogY29udHJvbGxlcixcbiAgICAgICAgbmFtZXNleHBhbmRlZDogdGhpcy5uYW1lc2V4cGFuZGVkLFxuICAgICAgICBub3RhZmZpY2hlOiBub3RfYWZmaWNoZXMsXG4gICAgICAgIG5hbWVfaW5wdXRfZmlsZXM6IFtdLFxuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBoZWFkZXJzO1xuICAgIH0sXG5cbiAgICB2aXNpYmxlT3JkZXJlZEhlYWRlcnMoKSB7XG4gICAgICBjb25zdCBhbGxIZWFkZXJzID1cbiAgICAgICAgdGhpcy4kc3RvcmUuc3RhdGUuc2hvd19kYXRhLmhlYWRlcnNbdGhpcy5jb250cm9sbGVyXSB8fCBbXTtcbiAgICAgIGlmIChhbGxIZWFkZXJzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIFtdO1xuXG4gICAgICBjb25zdCBvcmRlciA9XG4gICAgICAgIHRoaXMuJHN0b3JlLnN0YXRlLnNob3dfZGF0YS5oZWFkZXJzX29yZGVyW3RoaXMuY29udHJvbGxlcl0gfHxcbiAgICAgICAgYWxsSGVhZGVycy5tYXAoKGgpID0+IGgudmFsdWUpO1xuICAgICAgY29uc3Qgbm90QWZmaWNoZUxpc3QgPSB0aGlzLiRzdG9yZS5nZXR0ZXJzW1wic2hvd19kYXRhL2dfbm90X2FmZmljaGVcIl0oe1xuICAgICAgICBjb250cm9sbGVyX3Jvb3Q6IHRoaXMuY29udHJvbGxlcixcbiAgICAgIH0pO1xuICAgICAgY29uc3QgbmFtZXNleHBhbmRlZCA9IHRoaXMubmFtZXNleHBhbmRlZDtcblxuICAgICAgY29uc3QgaGVhZGVyTWFwID0gbmV3IE1hcChhbGxIZWFkZXJzLm1hcCgoaCkgPT4gW2gudmFsdWUsIGhdKSk7XG4gICAgICBjb25zdCBmaW5hbEhlYWRlcnMgPSBbXTtcblxuICAgICAgb3JkZXIuZm9yRWFjaCgoaGVhZGVyVmFsdWUpID0+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGhlYWRlck1hcC5oYXMoaGVhZGVyVmFsdWUpICYmXG4gICAgICAgICAgIW5vdEFmZmljaGVMaXN0LmluY2x1ZGVzKGhlYWRlclZhbHVlKSAmJlxuICAgICAgICAgICFuYW1lc2V4cGFuZGVkLmluY2x1ZGVzKGhlYWRlclZhbHVlKVxuICAgICAgICApIHtcbiAgICAgICAgICBmaW5hbEhlYWRlcnMucHVzaChoZWFkZXJNYXAuZ2V0KGhlYWRlclZhbHVlKSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gZmluYWxIZWFkZXJzO1xuICAgIH0sXG4gIH0sXG5cbiAgbWV0aG9kczoge1xuICAgIC8qKlxuICAgICAqINiv2KfZhNipINmE2KrYrdmI2YrZhCDYs9mE2LPZhNipINmG2LXZitipINmF2YYg2KfZhNi52LHYqNmK2Kkg2KXZhNmJINin2YTZhNin2KrZitmG2YrYqSAoVHJhbnNsaXRlcmF0aW9uKS5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gYXJhYmljVGV4dCAtINin2YTZhti1INin2YTYudix2KjZiiDYp9mE2YXYsdin2K8g2KrYrdmI2YrZhNmHLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9INin2YTZhti1INio2LnYryDYqtit2YjZitmE2Ycg2KXZhNmJINit2LHZiNmBINmE2KfYqtmK2YbZitipINmI2KPYsdmC2KfZhS5cbiAgICAgKi9cbiAgICB0cmFuc2xpdGVyYXRlQXJhYmljVG9MYXRpbihhcmFiaWNUZXh0KSB7XG4gICAgICAvLyDYp9mE2KrYo9mD2K8g2YXZhiDYo9mGINin2YTZhdiv2K7ZhCDZh9mIINiz2YTYs9mE2Kkg2YbYtdmK2KlcbiAgICAgIGlmICh0eXBlb2YgYXJhYmljVGV4dCAhPT0gXCJzdHJpbmdcIikge1xuICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgYXJhYmljTWFwID0ge1xuICAgICAgICDYpzogXCJhXCIsXG4gICAgICAgINijOiBcImFcIixcbiAgICAgICAg2KU6IFwiaVwiLFxuICAgICAgICDYojogXCJhXCIsXG4gICAgICAgINioOiBcImJcIixcbiAgICAgICAg2Ko6IFwidFwiLFxuICAgICAgICDYqzogXCJ0aFwiLFxuICAgICAgICDYrDogXCJqXCIsXG4gICAgICAgINitOiBcImhcIixcbiAgICAgICAg2K46IFwia2hcIixcbiAgICAgICAg2K86IFwiZFwiLFxuICAgICAgICDYsDogXCJkaFwiLFxuICAgICAgICDYsTogXCJyXCIsXG4gICAgICAgINiyOiBcInpcIixcbiAgICAgICAg2LM6IFwic1wiLFxuICAgICAgICDYtDogXCJzaFwiLFxuICAgICAgICDYtTogXCJzXCIsXG4gICAgICAgINi2OiBcImRcIixcbiAgICAgICAg2Lc6IFwidFwiLFxuICAgICAgICDYuDogXCJ6XCIsXG4gICAgICAgINi5OiBcImFcIixcbiAgICAgICAg2Lo6IFwiZ2hcIixcbiAgICAgICAg2YE6IFwiZlwiLFxuICAgICAgICDZgjogXCJxXCIsXG4gICAgICAgINmDOiBcImtcIixcbiAgICAgICAg2YQ6IFwibFwiLFxuICAgICAgICDZhTogXCJtXCIsXG4gICAgICAgINmGOiBcIm5cIixcbiAgICAgICAg2Yc6IFwiaFwiLFxuICAgICAgICDZiDogXCJ3XCIsXG4gICAgICAgINmKOiBcInlcIixcbiAgICAgICAg2Yk6IFwiYVwiLFxuICAgICAgICDYqTogXCJhXCIsXG4gICAgICAgINihOiBcImFcIixcbiAgICAgICAg2KQ6IFwidVwiLFxuICAgICAgICDYpjogXCJlXCIsXG4gICAgICAgINmE2Kc6IFwibGFcIixcbiAgICAgICAgLy8g2KfZhNij2LHZgtin2YUg2KfZhNmH2YbYr9mK2KlcbiAgICAgICAgXCLZoFwiOiBcIjBcIixcbiAgICAgICAgXCLZoVwiOiBcIjFcIixcbiAgICAgICAgXCLZolwiOiBcIjJcIixcbiAgICAgICAgXCLZo1wiOiBcIjNcIixcbiAgICAgICAgXCLZpFwiOiBcIjRcIixcbiAgICAgICAgXCLZpVwiOiBcIjVcIixcbiAgICAgICAgXCLZplwiOiBcIjZcIixcbiAgICAgICAgXCLZp1wiOiBcIjdcIixcbiAgICAgICAgXCLZqFwiOiBcIjhcIixcbiAgICAgICAgXCLZqVwiOiBcIjlcIixcbiAgICAgICAgLy8g2LnZhNin2YXYp9iqINin2YTYqtix2YLZitmFXG4gICAgICAgIFwi2IxcIjogXCIsXCIsXG4gICAgICAgIFwi2JtcIjogXCI7XCIsXG4gICAgICAgIFwi2J9cIjogXCI/XCIsXG4gICAgICAgIC8vINmF2LPYp9mB2KfYqiDZiNix2YXZiNiyINi02KfYpti52KlcbiAgICAgICAgXCIgXCI6IFwiLVwiLFxuICAgICAgICBfOiBcIi1cIixcbiAgICAgIH07XG5cbiAgICAgIC8vINin2LPYqtiu2K/Yp9mFINiq2LnYqNmK2LEg2YbZhdi32YogKFJlZ2V4KSDZhNin2LPYqtio2K/Yp9mEINmD2YQg2K3YsdmBINio2YbYp9ih2Ysg2LnZhNmJINin2YTYrtix2YrYt9ipXG4gICAgICByZXR1cm4gYXJhYmljVGV4dFxuICAgICAgICAucmVwbGFjZSgvW15cXHdcXHMtXS9nLCAoY2hhcikgPT4ge1xuICAgICAgICAgIHJldHVybiBhcmFiaWNNYXBbY2hhcl0gfHwgY2hhcjtcbiAgICAgICAgfSlcbiAgICAgICAgLnJlcGxhY2UoL1xccysvZywgXCItXCIpIC8vINin2LPYqtio2K/Yp9mEINij2Yog2YXYs9in2YHYp9iqINmF2KrYudiv2K/YqSDYqNi02LHYt9ipINmI2KfYrdiv2KlcbiAgICAgICAgLnRvTG93ZXJDYXNlKCk7IC8vINiq2K3ZiNmK2YQg2YPZhCDYp9mE2K3YsdmI2YEg2KXZhNmJINi12LrZitix2KlcbiAgICB9LFxuICAgIHByaW50RG9jdW1lbnQoKSB7XG4gICAgICAvLyDZh9iw2Kcg2KfZhNiz2LfYsSDYp9mE2KjYs9mK2Lcg2YrYs9iq2K/YudmKINmG2KfZgdiw2Kkg2KfZhNi32KjYp9i52Kkg2KfZhNiu2KfYtdipINio2KfZhNmF2KrYtdmB2K1cbiAgICAgIHdpbmRvdy5wcmludCgpO1xuICAgIH0sXG4gICAgaGFuZGxlS2V5UHJlc3MoZXZlbnQpIHtcbiAgICAgIC8vINin2YTYqtit2YLZgiDZhdmF2Kcg2KXYsNinINmD2KfZhiDYp9mE2YXYs9iq2K7Yr9mFINi22LrYtyDYudmE2YkgQ3RybCArIFBcbiAgICAgIGlmIChldmVudC5jdHJsS2V5ICYmIGV2ZW50LmtleSA9PT0gXCJwXCIpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsgLy8g2YXZhti5INin2YTYt9io2KfYudipINin2YTYp9mB2KrYsdin2LbZitipINmE2YTZhdiq2LXZgditXG4gICAgICAgIHRoaXMucGRmKCk7IC8vINin2LPYqtiv2LnYp9ihINiv2KfZhNipINin2YTYt9io2KfYudipINin2YTYrtin2LXYqSDYqNmDXG4gICAgICB9XG4gICAgfSxcblxuICAgIGNhbGN1bGVtb250YW50KGl0ZW1zLCBwb3VyKSB7XG4gICAgICBsZXQgYSA9IDA7XG4gICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgaXRlbXMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSBpdGVtc1tpbmRleF07XG4gICAgICAgIGEgPSBhICsgZWxlbWVudFtwb3VyXSAqIDE7XG4gICAgICB9XG4gICAgICByZXR1cm4gYTtcbiAgICB9LFxuXG4gICAgYXN5bmMgaW1hZ2V0bygpIHtcbiAgICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLiRyZWZzW1wiZG9jdW1lbnRcIl07XG4gICAgICBjb25zdCB0YWJsZSA9IHRoaXMuJHJlZnNbXCJkb2N1bWVudHRhYmxlXCJdO1xuXG4gICAgICAvLyDYqti12LrZitixINio2LPZiti3INmE2YTYrti3INmE2KrZgtmE2YrZhCDYp9mE2K3Yp9is2Kkg2YTZhNiq2YXYsdmK2LEg2KfZhNij2YHZgtmKXG4gICAgICB0YWJsZS5zdHlsZS5mb250U2l6ZSA9IFwiN3B4XCI7XG5cbiAgICAgIC8vINmG2KPYrtiwINin2YTYudix2LYg2YjYp9mE2LfZiNmEINin2YTZg9in2YXZhNmK2YYg2YTZhNmF2K3YqtmI2YlcbiAgICAgIGNvbnN0IGZ1bGxXaWR0aCA9IGVsZW1lbnQuc2Nyb2xsV2lkdGg7XG4gICAgICBjb25zdCBmdWxsSGVpZ2h0ID0gZWxlbWVudC5zY3JvbGxIZWlnaHQ7XG5cbiAgICAgIC8vINit2YHYuCDZgtmK2YUgQ1NTINin2YTYrdin2YTZitipINmF2KTZgtiq2YvYpyDZhNiq2KzZhtioINij2Yog2KrYo9ir2YrYsVxuICAgICAgY29uc3Qgb3JpZ2luYWxXaWR0aCA9IGVsZW1lbnQuc3R5bGUud2lkdGg7XG4gICAgICBjb25zdCBvcmlnaW5hbEhlaWdodCA9IGVsZW1lbnQuc3R5bGUuaGVpZ2h0O1xuICAgICAgY29uc3Qgb3JpZ2luYWxPdmVyZmxvdyA9IGVsZW1lbnQuc3R5bGUub3ZlcmZsb3c7XG5cbiAgICAgIC8vINil2KzYqNin2LEg2KfZhNi52YbYtdixINi52YTZiSDYo9iu2LAg2K3YrNmF2Ycg2KfZhNmD2KfZhdmEINmC2KjZhCDYp9mE2KfZhNiq2YLYp9i3XG4gICAgICBlbGVtZW50LnN0eWxlLndpZHRoID0gZnVsbFdpZHRoICsgXCJweFwiO1xuICAgICAgZWxlbWVudC5zdHlsZS5oZWlnaHQgPSBmdWxsSGVpZ2h0ICsgXCJweFwiO1xuICAgICAgZWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9IFwidmlzaWJsZVwiO1xuXG4gICAgICAvLyDZhtiz2KrYrtiv2YUgaHRtbDJjYW52YXMg2YXYuSBzY2FsZSDZhdix2KrZgdi5INmE2KfZhNiq2YLYp9i3INij2YjYttitINi12YjYsdipINmF2YXZg9mG2KlcbiAgICAgIGNvbnN0IGNhbnZhcyA9IGF3YWl0IGh0bWwyY2FudmFzKGVsZW1lbnQsIHtcbiAgICAgICAgc2NhbGU6IDMsIC8vINis2YjYr9ipINi52KfZhNmK2Kkg2KzYr9mL2KdcbiAgICAgICAgdXNlQ09SUzogdHJ1ZSxcbiAgICAgICAgYmFja2dyb3VuZENvbG9yOiBcIiNmZmZmZmZcIiwgLy8g2K7ZhNmB2YrYqSDYqNmK2LbYp9ihINmE2KrZiNi22YrYrSDYp9mE2KzYr9mI2YRcbiAgICAgICAgc2Nyb2xsWDogMCxcbiAgICAgICAgc2Nyb2xsWTogMCxcbiAgICAgICAgd2luZG93V2lkdGg6IGZ1bGxXaWR0aCxcbiAgICAgICAgd2luZG93SGVpZ2h0OiBmdWxsSGVpZ2h0LFxuICAgICAgfSk7XG5cbiAgICAgIC8vINin2LPYqtix2KzYp9i5INin2YTZgtmK2YUg2KfZhNij2LXZhNmK2KlcbiAgICAgIGVsZW1lbnQuc3R5bGUud2lkdGggPSBvcmlnaW5hbFdpZHRoO1xuICAgICAgZWxlbWVudC5zdHlsZS5oZWlnaHQgPSBvcmlnaW5hbEhlaWdodDtcbiAgICAgIGVsZW1lbnQuc3R5bGUub3ZlcmZsb3cgPSBvcmlnaW5hbE92ZXJmbG93O1xuXG4gICAgICAvLyDYqtit2YjZitmEINin2YTYtdmI2LHYqSDYpdmE2YkgQmFzZTY0XG4gICAgICBjb25zdCBpbWFnZSA9IGNhbnZhcy50b0RhdGFVUkwoXCJpbWFnZS9wbmdcIiwgMS4wKTtcblxuICAgICAgLy8g2KXZhti02KfYoSDYsdin2KjYtyDYqtit2YXZitmEINmE2YTYtdmI2LHYqVxuICAgICAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJhXCIpO1xuICAgICAgbGluay5ocmVmID0gaW1hZ2U7XG4gICAgICBsaW5rLmRvd25sb2FkID0gYCR7dGhpcy5jb250cm9sbGVyfV90YWJsZS5wbmdgO1xuICAgICAgbGluay5jbGljaygpO1xuICAgIH0sXG5cbiAgICAvLyDYp9iz2KrYqNiv2YQg2KfZhNiv2KfZhNipINin2YTZgtiv2YrZhdipINio2YfYsNmHINin2YTZhtiz2K7YqSDYp9mE2YXYrdiz2ZHZhtipXG4gICAgZXhwb3J0UGRmQWR2YW5jZWQoKSB7XG4gICAgICAvLyAxLiDYpdmG2LTYp9ihINin2YTZhdiz2KrZhtivICjZhNinINiq2LrZitmK2LEg2YfZhtinKVxuICAgICAgY29uc3QgZG9jID0gbmV3IGpzUERGKHtcbiAgICAgICAgb3JpZW50YXRpb246IFwibGFuZHNjYXBlXCIsXG4gICAgICAgIHVuaXQ6IFwibW1cIixcbiAgICAgICAgZm9ybWF0OiBcImE0XCIsXG4gICAgICB9KTtcblxuICAgICAgLy8gLS0tIOKcqCDYp9mE2K7Yt9mI2KkgMjog2KrYrdmI2YrZhCDZg9mEINin2YTYqNmK2KfZhtin2Kog2KXZhNmJINin2YTZhNin2KrZitmG2YrYqSDinKggLS0tXG5cbiAgICAgIC8vIDIuMTog2KrYrdmI2YrZhCDYudmG2YjYp9mGINin2YTZhdiz2KrZhtivINin2YTYsdim2YrYs9mKXG4gICAgICBjb25zdCBsYXRpblRpdGxlID0gdGhpcy50cmFuc2xpdGVyYXRlQXJhYmljVG9MYXRpbihcbiAgICAgICAgdGhpcy4kdCh0aGlzLmNvbnRyb2xsZXIpXG4gICAgICApO1xuXG4gICAgICAvLyAyLjI6INiq2K3ZiNmK2YQg2LnZhtin2YjZitmGINin2YTYo9i52YXYr9ipIChIZWFkZXJzKVxuICAgICAgY29uc3QgbGF0aW5UYWJsZUhlYWRlcnMgPSB0aGlzLmhlYWRlcnMubWFwKChoZWFkZXIpID0+XG4gICAgICAgIHRoaXMudHJhbnNsaXRlcmF0ZUFyYWJpY1RvTGF0aW4oaGVhZGVyLnRleHQpXG4gICAgICApO1xuXG4gICAgICAvLyAyLjM6INiq2K3ZiNmK2YQg2KjZitin2YbYp9iqINin2YTYrNiv2YjZhCAoQm9keSlcbiAgICAgIGNvbnN0IGxhdGluVGFibGVEYXRhID0gdGhpcy5zZWxlY3RlZHMubWFwKChpdGVtKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmhlYWRlcnMubWFwKChoZWFkZXIpID0+IHtcbiAgICAgICAgICBjb25zdCB2YWx1ZSA9IGl0ZW1baGVhZGVyLnZhbHVlXSB8fCBcIlwiO1xuICAgICAgICAgIC8vINiq2KPZg9ivINmF2YYg2KrYrdmI2YrZhCDYp9mE2YLZitmF2Kkg2KXZhNmJINmG2LUg2YLYqNmEINiq2YXYsdmK2LHZh9inXG4gICAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsaXRlcmF0ZUFyYWJpY1RvTGF0aW4odmFsdWUudG9TdHJpbmcoKSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICAgIC8vIDMuINil2LbYp9mB2Kkg2KfZhNi52YbZiNin2YYg2KfZhNix2KbZitiz2YogKNin2YTZhNin2KrZitmG2YopINmC2KjZhCDYp9mE2KzYr9mI2YRcbiAgICAgIGRvYy5zZXRGb250U2l6ZSgxNik7XG4gICAgICBkb2Muc2V0VGV4dENvbG9yKDQwKTtcbiAgICAgIGRvYy50ZXh0KGxhdGluVGl0bGUsIDE0LCAxNSk7XG5cbiAgICAgIC8vIDQuINin2LPYqtiv2LnYp9ihIGF1dG9UYWJsZSDZhdi5INin2YTYqNmK2KfZhtin2Kog2KfZhNmF2K3ZiNmR2YTYqSDYpdmE2Ykg2KfZhNmE2KfYqtmK2YbZitipXG4gICAgICBhdXRvVGFibGUoZG9jLCB7XG4gICAgICAgIGhlYWQ6IFtsYXRpblRhYmxlSGVhZGVyc10sIC8vINin2LPYqtiu2K/Yp9mFINin2YTYudmG2KfZiNmK2YYg2KfZhNmE2KfYqtmK2YbZitipXG4gICAgICAgIGJvZHk6IGxhdGluVGFibGVEYXRhLCAvLyDYp9iz2KrYrtiv2KfZhSDYqNmK2KfZhtin2Kog2KfZhNis2K/ZiNmEINin2YTZhNin2KrZitmG2YrYqVxuICAgICAgICBzdGFydFk6IDIwLFxuICAgICAgICB0aGVtZTogXCJncmlkXCIsXG4gICAgICAgIHN0eWxlczoge1xuICAgICAgICAgIGZvbnRTaXplOiA4LFxuICAgICAgICAgIGNlbGxQYWRkaW5nOiAyLFxuICAgICAgICB9LFxuICAgICAgICBoZWFkU3R5bGVzOiB7XG4gICAgICAgICAgZmlsbENvbG9yOiBbNDEsIDEyOCwgMTg1XSxcbiAgICAgICAgICB0ZXh0Q29sb3I6IDI1NSxcbiAgICAgICAgICBmb250U3R5bGU6IFwiYm9sZFwiLFxuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICAgIC8vIC0tLSDYp9mE2K7Yt9mI2KkgNTog2KXZhti02KfYoSDYp9iz2YUg2YXZhNmBINii2YXZhiDZiNit2YHYuNmHIC0tLVxuICAgICAgY29uc3Qgc2FmZUZpbGVOYW1lID0gdGhpcy50cmFuc2xpdGVyYXRlQXJhYmljVG9MYXRpbihcbiAgICAgICAgYCR7dGhpcy5jb250cm9sbGVyfS5wZGZgXG4gICAgICApO1xuICAgICAgZG9jLnNhdmUoc2FmZUZpbGVOYW1lKTtcbiAgICB9LFxuXG4gICAgLy8g2K/Yp9mE2KrZgyDYp9mE2YLYr9mK2YXYqSDZhdi5INio2LnYtiDYp9mE2KrYrdiz2YrZhtin2KogKNin2YTYrdmEINin2YTYq9in2YbZiilcbiAgICBwZGZfaW1wcm92ZWRfaW1hZ2VfYmFzZWQoKSB7XG4gICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy4kcmVmc1tcImRvY3VtZW50XCJdO1xuICAgICAgY29uc3QgdGFibGUgPSB0aGlzLiRyZWZzW1wiZG9jdW1lbnR0YWJsZVwiXTtcblxuICAgICAgLy8g2YTYpyDYqtmC2YUg2KjYqti12LrZitixINin2YTYrti3INio2LTZg9mEINmD2KjZitixINis2K/Zi9in2Iwg2KfYudiq2YXYryDYudmE2Ykg2KfZhNmF2YPYqtio2KlcbiAgICAgIHRhYmxlLnN0eWxlLmZvbnRTaXplID0gXCIxMHB4XCI7XG5cbiAgICAgIGNvbnN0IG9wdCA9IHtcbiAgICAgICAgbWFyZ2luOiBbMTAsIDUsIDEwLCA1XSwgLy8g2YfZiNin2YXYtCBb2KPYudmE2YksINmK2LPYp9ixLCDYo9iz2YHZhCwg2YrZhdmK2YZdINio2KfZhNmF2YTZitmF2KrYsVxuICAgICAgICBmaWxlbmFtZTogYCR7dGhpcy5jb250cm9sbGVyfV9wbHVzLnBkZmAsXG4gICAgICAgIGltYWdlOiB7IHR5cGU6IFwianBlZ1wiLCBxdWFsaXR5OiAwLjk4IH0sXG4gICAgICAgIGh0bWwyY2FudmFzOiB7XG4gICAgICAgICAgc2NhbGU6IDIsIC8vIHNjYWxlIDIg2YPYp9mB2Y0g2YTZhdi52LjZhSDYp9mE2LTYp9i02KfYqiDZiNmK2YjZgdixINiq2YjYp9iy2YbZi9inINis2YrYr9mL2KdcbiAgICAgICAgICB1c2VDT1JTOiB0cnVlLFxuICAgICAgICAgIC8vINiq2KzZhtioINiq2K3Yr9mK2K8g2KfZhNi52LHYtiDZiNin2YTYp9ix2KrZgdin2Lkg2YrYr9mI2YrZi9in2Iwg2K/YuSDYp9mE2YXZg9iq2KjYqSDYqtiq2LnYp9mF2YQg2YXYudmH2KdcbiAgICAgICAgfSxcbiAgICAgICAganNQREY6IHtcbiAgICAgICAgICB1bml0OiBcIm1tXCIsXG4gICAgICAgICAgZm9ybWF0OiBcImE0XCIsXG4gICAgICAgICAgb3JpZW50YXRpb246IFwibGFuZHNjYXBlXCIsIC8vINmF2YfZhSDYrNiv2YvYpyDZhNmE2KzYr9in2YjZhCDYp9mE2LnYsdmK2LbYqVxuICAgICAgICB9LFxuICAgICAgICAvLyDYrtmK2KfYsSDZhdmH2YUg2YTYqtmC2LPZitmFINin2YTYtdmB2K3Yp9iqXG4gICAgICAgIHBhZ2VicmVhazogeyBtb2RlOiBbXCJhdm9pZC1hbGxcIiwgXCJjc3NcIiwgXCJsZWdhY3lcIl0gfSxcbiAgICAgIH07XG5cbiAgICAgIGh0bWwycGRmKClcbiAgICAgICAgLnNldChvcHQpXG4gICAgICAgIC5mcm9tKGVsZW1lbnQpXG4gICAgICAgIC5zYXZlKClcbiAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIC8vINij2LnYryDYp9mE2K7YtyDYpdmE2Ykg2K3YrNmF2Ycg2KfZhNi32KjZiti52Yog2KjYudivINin2YTYp9mG2KrZh9in2KFcbiAgICAgICAgICB0YWJsZS5zdHlsZS5mb250U2l6ZSA9IFwiXCI7XG4gICAgICAgIH0pO1xuICAgIH0sXG5cbiAgICBleGNlbGpzKCkge1xuICAgICAgbGV0IHNoZWV0aGVhZGVyID0gW107XG4gICAgICBsZXQgc2hlZXRoZWFkZXJ2YWx1ZSA9IFtdO1xuICAgICAgbGV0IHJvdyA9IHt9O1xuICAgICAgbGV0IGRhdGFzZWxlY3RlZHMgPSB0aGlzLnNlbGVjdGVkcztcbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLmhlYWRlcnMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLmhlYWRlcnNbaW5kZXhdO1xuXG4gICAgICAgIGlmIChlbGVtZW50LnZhbHVlICE9IFwiaWRcIiAmJiBlbGVtZW50LnZhbHVlICE9IFwiSURcIikge1xuICAgICAgICAgIHNoZWV0aGVhZGVyLnB1c2goZWxlbWVudC52YWx1ZSk7XG4gICAgICAgICAgc2hlZXRoZWFkZXJ2YWx1ZS5wdXNoKGVsZW1lbnQudmFsdWUpO1xuXG4gICAgICAgICAgcm93W2VsZW1lbnQudmFsdWVdID0gZWxlbWVudC50ZXh0O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBkYXRhc2VsZWN0ZWRzLnVuc2hpZnQocm93KTtcblxuICAgICAgdmFyIG9wdGlvbiA9IHt9O1xuICAgICAgbGV0IG5hbWVjb250cm9sbGVyID0gdGhpcy5jb250cm9sbGVyO1xuICAgICAgb3B0aW9uLmZpbGVOYW1lID0gbmFtZWNvbnRyb2xsZXI7XG5cbiAgICAgIG9wdGlvbi5kYXRhcyA9IFtcbiAgICAgICAge1xuICAgICAgICAgIHNoZWV0TmFtZTogbmFtZWNvbnRyb2xsZXIsXG4gICAgICAgICAgLy8gICBzaGVldEZpbHRlcjogWyBcIm9uZVwiLFwidHdvXCJdLFxuICAgICAgICAgIC8vIHNoZWV0SGVhZGVyOiBbIFwib25lXCIsXCJ0d29cIl0sXG4gICAgICAgICAgc2hlZXRIZWFkZXI6IHNoZWV0aGVhZGVyLFxuICAgICAgICAgIHNoZWV0RmlsdGVyOiBzaGVldGhlYWRlcnZhbHVlLFxuICAgICAgICAgIC8vIGNvbHVtbldpZHRoczogWzIwLCAyMF0sXG4gICAgICAgICAgc2hlZXREYXRhOiBkYXRhc2VsZWN0ZWRzLFxuICAgICAgICB9LFxuICAgICAgXTtcblxuICAgICAgdmFyIHRvRXhjZWwgPSBuZXcgRXhwb3J0SnNvbkV4Y2VsKG9wdGlvbik7IC8vbmV3XG4gICAgICB0b0V4Y2VsLnNhdmVFeGNlbCgpO1xuICAgIH0sXG5cbiAgICBleGNlbCgpIHtcbiAgICAgIHZhciB0YWJfdGV4dCA9IFwiPHRhYmxlIGJvcmRlcj0nMnB4Jz48dHIgYmdjb2xvcj0nIzg3QUZDNic+XCI7XG5cbiAgICAgIHZhciBqID0gMDtcbiAgICAgIGxldCB0YWIgPSB0aGlzLiRyZWZzW1wiZG9jdW1lbnR0YWJsZVwiXTsgLy8gaWQgb2YgdGFibGVcblxuICAgICAgZm9yIChqID0gMDsgaiA8IHRhYi5yb3dzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgIHRhYl90ZXh0ID0gdGFiX3RleHQgKyB0YWIucm93c1tqXS5pbm5lckhUTUwgKyBcIjwvdHI+XCI7XG4gICAgICAgIC8vdGFiX3RleHQ9dGFiX3RleHQrXCI8L3RyPlwiO1xuICAgICAgfVxuXG4gICAgICB0YWJfdGV4dCA9IHRhYl90ZXh0ICsgXCI8L3RhYmxlPlwiO1xuICAgICAgdGFiX3RleHQgPSB0YWJfdGV4dC5yZXBsYWNlKC88QVtePl0qPnw8XFwvQT4vZywgXCJcIik7IC8vcmVtb3ZlIGlmIHUgd2FudCBsaW5rcyBpbiB5b3VyIHRhYmxlXG4gICAgICB0YWJfdGV4dCA9IHRhYl90ZXh0LnJlcGxhY2UoLzxpbWdbXj5dKj4vZ2ksIFwiXCIpOyAvLyByZW1vdmUgaWYgdSB3YW50IGltYWdlcyBpbiB5b3VyIHRhYmxlXG4gICAgICB0YWJfdGV4dCA9IHRhYl90ZXh0LnJlcGxhY2UoLzxpbnB1dFtePl0qPnw8XFwvaW5wdXQ+L2dpLCBcIlwiKTsgLy8gcmVvbXZlcyBpbnB1dCBwYXJhbXNcblxuICAgICAgLy9vdGhlciBicm93c2VyIG5vdCB0ZXN0ZWQgb24gSUUgMTFcbiAgICAgIGxldCBzYSA9IHdpbmRvdy5vcGVuKFxuICAgICAgICBcImRhdGE6YXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLFwiICsgZW5jb2RlVVJJQ29tcG9uZW50KHRhYl90ZXh0KVxuICAgICAgKTtcblxuICAgICAgcmV0dXJuIHNhO1xuICAgIH0sXG5cbiAgICBjc3YoKSB7XG4gICAgICB2YXIgY3N2ID0gW107XG5cbiAgICAgIHZhciByb3dzID0gdGhpcy4kcmVmc1tcImRvY3VtZW50XCJdLnF1ZXJ5U2VsZWN0b3JBbGwoXCJ0YWJsZSB0clwiKTtcblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByb3dzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciByb3cgPSBbXSxcbiAgICAgICAgICBjb2xzID0gcm93c1tpXS5xdWVyeVNlbGVjdG9yQWxsKFwidGQsIHRoXCIpO1xuXG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgY29scy5sZW5ndGg7IGorKykgcm93LnB1c2goY29sc1tqXS5pbm5lclRleHQpO1xuXG4gICAgICAgIGNzdi5wdXNoKHJvdy5qb2luKFwiIDsgXCIpKTtcbiAgICAgIH1cblxuICAgICAgLy8gRG93bmxvYWQgQ1NWIGZpbGVcbiAgICAgIGxldCBuYW1lQ1NWID0gdGhpcy5jb250cm9sbGVyICsgXCIuY3N2XCI7XG4gICAgICB0aGlzLmRvd25sb2FkQ1NWKGNzdi5qb2luKFwiIFxcbiBcIiksIG5hbWVDU1YpO1xuICAgIH0sXG4gICAgY3N2YWxsKCkge1xuICAgICAgbGV0IGhlYWRlcnMgPSB0aGlzLmhlYWRlcnM7XG4gICAgICBsZXQgbmFtZXNleHBhbmRlZCA9IHRoaXMubmFtZXNleHBhbmRlZDtcbiAgICAgIGxldCBzZWxlY3RlZHMgPSB0aGlzLnNlbGVjdGVkcztcbiAgICAgIGxldCBjc3YgPSB0aGlzLnRhYmxlQ1NWKGhlYWRlcnMsIHNlbGVjdGVkcywgbmFtZXNleHBhbmRlZCk7XG5cbiAgICAgIC8vIERvd25sb2FkIENTViBmaWxlXG4gICAgICBsZXQgbmFtZUNTViA9IHRoaXMuY29udHJvbGxlciArIFwiLmNzdlwiO1xuICAgICAgbGV0IGQgPSBjc3Yuam9pbihcIiBcXG4gXCIpO1xuICAgICAgdGhpcy5kb3dubG9hZENTVihkLCBuYW1lQ1NWKTtcbiAgICB9LFxuICAgIHRhYmxlQ1NWKGhlYWRlcnMsIHNlbGVjdGVkcywgbmFtZXNleHBhbmRlZCkge1xuICAgICAgbGV0IHJvdyA9IFtdO1xuICAgICAgbGV0IGNzdiA9IFtdO1xuXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGhlYWRlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcm93LnB1c2goaGVhZGVyc1tpXS50ZXh0KTtcbiAgICAgIH1cbiAgICAgIGNzdi5wdXNoKHJvdy5qb2luKFwiIDsgXCIpKTtcblxuICAgICAgcm93ID0gW107XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGhlYWRlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcm93LnB1c2goXCIqKioqKioqKioqKipcIik7XG4gICAgICB9XG4gICAgICBjc3YucHVzaChyb3cuam9pbihcIiA7IFwiKSk7XG5cbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2VsZWN0ZWRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGxldCBpdGVtID0gc2VsZWN0ZWRzW2ldO1xuICAgICAgICByb3cgPSBbXTtcblxuICAgICAgICBmb3IgKGxldCBrID0gMDsgayA8IGhlYWRlcnMubGVuZ3RoOyBrKyspIHtcbiAgICAgICAgICByb3cucHVzaChpdGVtW2hlYWRlcnNba10udmFsdWVdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNzdi5wdXNoKHJvdy5qb2luKFwiIDsgXCIpKTtcblxuICAgICAgICBmb3IgKGxldCBrID0gMDsgayA8IG5hbWVzZXhwYW5kZWQubGVuZ3RoOyBrKyspIHtcbiAgICAgICAgICBjc3YucHVzaChbXCJcIl0pO1xuXG4gICAgICAgICAgbGV0IGMgPSBbXTtcbiAgICAgICAgICBsZXQgc2VsID0gaXRlbVtuYW1lc2V4cGFuZGVkW2tdXTtcblxuICAgICAgICAgIGMgPSB0aGlzLnRhYmxlQ1NWKHNlbFtcInRpdGxlc1wiXSwgc2VsW1wiZGF0YVNldFwiXSwgW10pO1xuXG4gICAgICAgICAgY3N2LnB1c2goYy5qb2luKFwiIFxcbiBcIikpO1xuXG4gICAgICAgICAgcm93ID0gW107XG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBoZWFkZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICByb3cucHVzaChcIiBcIik7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNzdi5wdXNoKHJvdy5qb2luKFwiIDsgXCIpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChuYW1lc2V4cGFuZGVkLmxlbmd0aCA+IDAgJiYgaSA8IHNlbGVjdGVkcy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgcm93ID0gW107XG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBoZWFkZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICByb3cucHVzaChoZWFkZXJzW2ldLnRleHQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjc3YucHVzaChyb3cuam9pbihcIiA7IFwiKSk7XG5cbiAgICAgICAgICByb3cgPSBbXTtcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGhlYWRlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHJvdy5wdXNoKFwiKioqKioqKioqKioqXCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjc3YucHVzaChyb3cuam9pbihcIiA7IFwiKSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNzdjtcbiAgICB9LFxuXG4gICAgZG93bmxvYWRDU1YoY3N2LCBmaWxlbmFtZSkge1xuICAgICAgdmFyIGNzdkZpbGU7XG4gICAgICB2YXIgZG93bmxvYWRMaW5rO1xuXG4gICAgICAvLyBDU1YgZmlsZVxuICAgICAgY3N2RmlsZSA9IG5ldyBCbG9iKFtjc3ZdLCB7IHR5cGU6IFwidGV4dC9jc3ZcIiB9KTtcblxuICAgICAgLy8gRG93bmxvYWQgbGlua1xuICAgICAgZG93bmxvYWRMaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImFcIik7XG5cbiAgICAgIC8vIEZpbGUgbmFtZVxuICAgICAgZG93bmxvYWRMaW5rLmRvd25sb2FkID0gZmlsZW5hbWU7XG5cbiAgICAgIC8vIENyZWF0ZSBhIGxpbmsgdG8gdGhlIGZpbGVcbiAgICAgIGRvd25sb2FkTGluay5ocmVmID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoY3N2RmlsZSk7XG5cbiAgICAgIC8vIEhpZGUgZG93bmxvYWQgbGlua1xuICAgICAgZG93bmxvYWRMaW5rLnN0eWxlLmRpc3BsYXkgPSBcIm5vbmVcIjtcblxuICAgICAgLy8gQWRkIHRoZSBsaW5rIHRvIERPTVxuICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkb3dubG9hZExpbmspO1xuXG4gICAgICAvLyBDbGljayBkb3dubG9hZCBsaW5rXG4gICAgICBkb3dubG9hZExpbmsuY2xpY2soKTtcbiAgICB9LFxuICAgIGdldFZpc2libGVFeHBhbmRlZEhlYWRlcnMoZXhwYW5kZWRDb25maWcsIGZpcnN0SXRlbSkge1xuICAgICAgY29uc3QgY29udHJvbGxlckF0dGFjaCA9IGV4cGFuZGVkQ29uZmlnLmNvbnRyb2xsZXJfYXR0YWNoO1xuICAgICAgaWYgKFxuICAgICAgICAhZmlyc3RJdGVtIHx8XG4gICAgICAgICFmaXJzdEl0ZW1bY29udHJvbGxlckF0dGFjaF0gfHxcbiAgICAgICAgIWZpcnN0SXRlbVtjb250cm9sbGVyQXR0YWNoXS50aXRsZXNcbiAgICAgICkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGFsbFN1YkhlYWRlcnMgPSBmaXJzdEl0ZW1bY29udHJvbGxlckF0dGFjaF0udGl0bGVzO1xuICAgICAgY29uc3Qgbm90QWZmaWNoZVN1YiA9IGV4cGFuZGVkQ29uZmlnLm5vdF9hZmZpY2hlIHx8IFtdO1xuXG4gICAgICByZXR1cm4gYWxsU3ViSGVhZGVycy5maWx0ZXIoKGgpID0+ICFub3RBZmZpY2hlU3ViLmluY2x1ZGVzKGgudmFsdWUpKTtcbiAgICB9LFxuICAgIGdlbmVyYXRlRGV0YWlsZWRIdG1sKCkge1xuICAgICAgbGV0IGh0bWwgPSBgPHN0eWxlPlxuICAgICAgICAgICAgICAgICAgICBib2R5IHsgZm9udC1mYW1pbHk6ICdIZWx2ZXRpY2EnLCAnQXJpYWwnLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHg7IH1cbiAgICAgICAgICAgICAgICAgICAgdGFibGUgeyB3aWR0aDogMTAwJTsgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTsgbWFyZ2luLWJvdHRvbTogMTVweDsgfVxuICAgICAgICAgICAgICAgICAgICB0aCwgdGQgeyBib3JkZXI6IDFweCBzb2xpZCAjZGRkOyBwYWRkaW5nOiA2cHg7IHRleHQtYWxpZ246IGxlZnQ7IHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7IH1cbiAgICAgICAgICAgICAgICAgICAgdGhlYWQgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjNENBRjUwOyBjb2xvcjogd2hpdGU7IH1cbiAgICAgICAgICAgICAgICAgICAgLm1haW4taXRlbS10YWJsZSB7IGJhY2tncm91bmQtY29sb3I6ICNmMmYyZjI7IH1cbiAgICAgICAgICAgICAgICAgICAgLm1haW4taXRlbS10YWJsZSB0ZDpmaXJzdC1jaGlsZCB7IGZvbnQtd2VpZ2h0OiBib2xkOyB3aWR0aDogMzAlOyB9XG4gICAgICAgICAgICAgICAgICAgIGgxIHsgdGV4dC1hbGlnbjogY2VudGVyOyBjb2xvcjogIzMzMzsgfVxuICAgICAgICAgICAgICAgICAgICBoMyB7IGNvbG9yOiAjNDQ0OyBib3JkZXItYm90dG9tOiAycHggc29saWQgIzRDQUY1MDsgcGFkZGluZy1ib3R0b206IDVweDsgbWFyZ2luLXRvcDogMjBweDsgfVxuICAgICAgICAgICAgICAgICAgICBociB7IGJvcmRlcjogMDsgYm9yZGVyLXRvcDogMXB4IGRhc2hlZCAjY2NjOyBtYXJnaW46IDIwcHggMDsgfVxuICAgICAgICAgICAgICAgICAgPC9zdHlsZT5gO1xuXG4gICAgICBodG1sICs9IGA8aDE+JHt0aGlzLiR0KHRoaXMuY29udHJvbGxlcil9PC9oMT5gO1xuXG4gICAgICAvLyDZhtiz2KrYrtiv2YUg2KfZhNij2LnZhdiv2Kkg2KfZhNmF2LHYptmK2Kkg2YjYp9mE2YXZj9ix2KrYqNipINmH2YbYp1xuICAgICAgY29uc3QgbWFpbkhlYWRlcnMgPSB0aGlzLnZpc2libGVPcmRlcmVkSGVhZGVycztcbiAgICAgIGNvbnN0IGV4cGFuZGVkQ29uZmlncyA9IHRoaXMuJHN0b3JlLmdldHRlcnNbXCJzaG93X2RhdGEvZ19leHBhbmRlZFwiXSh7XG4gICAgICAgIGNvbnRyb2xsZXJfcm9vdDogdGhpcy5jb250cm9sbGVyLFxuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuc2VsZWN0ZWRzLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgaHRtbCArPSAnPHRhYmxlIGNsYXNzPVwibWFpbi1pdGVtLXRhYmxlXCI+JztcbiAgICAgICAgbWFpbkhlYWRlcnMuZm9yRWFjaCgoaGVhZGVyKSA9PiB7XG4gICAgICAgICAgaHRtbCArPSBgPHRyPjx0ZD4ke2hlYWRlci50ZXh0fTwvdGQ+PHRkPiR7XG4gICAgICAgICAgICBpdGVtW2hlYWRlci52YWx1ZV0gfHwgXCJcIlxuICAgICAgICAgIH08L3RkPjwvdHI+YDtcbiAgICAgICAgfSk7XG4gICAgICAgIGh0bWwgKz0gXCI8L3RhYmxlPlwiO1xuXG4gICAgICAgIGV4cGFuZGVkQ29uZmlncy5mb3JFYWNoKChjb25maWcpID0+IHtcbiAgICAgICAgICBjb25zdCBleHBhbmRlZEtleSA9IGNvbmZpZy5jb250cm9sbGVyX2F0dGFjaDtcbiAgICAgICAgICBpZiAoaXRlbVtleHBhbmRlZEtleV0gJiYgaXRlbVtleHBhbmRlZEtleV0uZGF0YVNldC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAvLyDZhtiz2KrYrtiv2YUg2KfZhNiv2KfZhNipINin2YTZhdiz2KfYudiv2Kkg2YTYrNmE2Kgg2KPYudmF2K/YqSDYp9mE2KzYr9mI2YQg2KfZhNmB2LHYudmKXG4gICAgICAgICAgICBjb25zdCBzdWJUYWJsZUhlYWRlcnMgPSB0aGlzLmdldFZpc2libGVFeHBhbmRlZEhlYWRlcnMoXG4gICAgICAgICAgICAgIGNvbmZpZyxcbiAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgaHRtbCArPSBgPGgzPiR7dGhpcy4kdChjb25maWcudGl0bGUgfHwgZXhwYW5kZWRLZXkpfTwvaDM+YDtcbiAgICAgICAgICAgIGh0bWwgKz0gXCI8dGFibGU+PHRoZWFkPjx0cj5cIjtcbiAgICAgICAgICAgIHN1YlRhYmxlSGVhZGVycy5mb3JFYWNoKCh0aCkgPT4ge1xuICAgICAgICAgICAgICBodG1sICs9IGA8dGg+JHt0aC50ZXh0fTwvdGg+YDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaHRtbCArPSBcIjwvdHI+PC90aGVhZD48dGJvZHk+XCI7XG5cbiAgICAgICAgICAgIGl0ZW1bZXhwYW5kZWRLZXldLmRhdGFTZXQuZm9yRWFjaCgoc3ViSXRlbSkgPT4ge1xuICAgICAgICAgICAgICBodG1sICs9IFwiPHRyPlwiO1xuICAgICAgICAgICAgICBzdWJUYWJsZUhlYWRlcnMuZm9yRWFjaCgodGgpID0+IHtcbiAgICAgICAgICAgICAgICBodG1sICs9IGA8dGQ+JHtzdWJJdGVtW3RoLnZhbHVlXSB8fCBcIlwifTwvdGQ+YDtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIGh0bWwgKz0gXCI8L3RyPlwiO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBodG1sICs9IFwiPC90Ym9keT48L3RhYmxlPlwiO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgaHRtbCArPSBcIjxocj5cIjtcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gaHRtbDtcbiAgICB9LFxuXG4gICAgLy8g2K/Yp9mE2KkgcGRmX2RldGFpbHMg2KrYqNmC2Ykg2YPZhdinINmH2YrYjCDZgdmC2Lcg2KrYs9iq2K/YudmKINin2YTYr9in2YTYqSDYp9mE2YXZj9it2LPZkdmG2KlcbiAgICBwZGZfZGV0YWlscygpIHtcbiAgICAgIHRoaXMubG9hZGluZ1BkZiA9IHRydWU7XG4gICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5nZW5lcmF0ZURldGFpbGVkSHRtbCgpO1xuICAgICAgY29uc3Qgb3B0ID0ge1xuICAgICAgICBtYXJnaW46IDUsXG4gICAgICAgIGZpbGVuYW1lOiBgJHt0aGlzLmNvbnRyb2xsZXJ9X2RldGFpbHMucGRmYCxcbiAgICAgICAgaW1hZ2U6IHsgdHlwZTogXCJqcGVnXCIsIHF1YWxpdHk6IDAuOTggfSxcbiAgICAgICAgaHRtbDJjYW52YXM6IHsgc2NhbGU6IDIsIHVzZUNPUlM6IHRydWUgfSxcbiAgICAgICAganNQREY6IHsgdW5pdDogXCJtbVwiLCBmb3JtYXQ6IFwiYTRcIiwgb3JpZW50YXRpb246IFwicG9ydHJhaXRcIiB9LFxuICAgICAgfTtcbiAgICAgIGh0bWwycGRmKClcbiAgICAgICAgLnNldChvcHQpXG4gICAgICAgIC5mcm9tKGVsZW1lbnQpXG4gICAgICAgIC5zYXZlKClcbiAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIHRoaXMubG9hZGluZ1BkZiA9IGZhbHNlO1xuICAgICAgICB9KTtcbiAgICB9LFxuICAgIHByZXZpZXdfcGRmX2RldGFpbHMoKSB7XG4gICAgICB0aGlzLmxvYWRpbmdQZGYgPSB0cnVlO1xuICAgICAgdGhpcy5wcmV2aWV3SHRtbCA9IHRoaXMuZ2VuZXJhdGVEZXRhaWxlZEh0bWwoKTsgLy8g2YHZgti3INmC2YUg2KjYpdmG2LTYp9ihINmI2KrYrtiy2YrZhiDYp9mE2YAgSFRNTFxuICAgICAgdGhpcy5kaWFsb2dQcmV2aWV3ID0gdHJ1ZTsgLy8g2KvZhSDYp9mB2KrYrSDYp9mE2YbYp9mB2LDYqSAo2KfZhNmF2LHYp9mC2Kgg2LPZitiq2YjZhNmJINin2YTYqNin2YLZiilcbiAgICB9LFxuXG4gICAgcHJpbnRQcmV2aWV3KCkge1xuICAgICAgY29uc3QgaWZyYW1lID0gdGhpcy4kcmVmcy5wcmV2aWV3RnJhbWU7XG4gICAgICBpZiAoaWZyYW1lKSB7XG4gICAgICAgIGlmcmFtZS5jb250ZW50V2luZG93LmZvY3VzKCk7XG4gICAgICAgIGlmcmFtZS5jb250ZW50V2luZG93LnByaW50KCk7XG4gICAgICB9XG4gICAgfSxcbiAgfSxcblxuICBtb3VudGVkKCkge1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLCB0aGlzLmhhbmRsZUtleVByZXNzKTtcbiAgfSxcbiAgYmVmb3JlVW5tb3VudCgpIHtcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIiwgdGhpcy5oYW5kbGVLZXlQcmVzcyk7XG4gIH0sXG59O1xuPC9zY3JpcHQ+XG5cbjxzdHlsZT5cbi50YWJsZS1jb250YWluZXIge1xuICB3aWR0aDogMTAwJTtcbiAgb3ZlcmZsb3cteDogYXV0bztcbiAgLyog2YrYttmK2YEg2LTYsdmK2Lcg2KrZhdix2YrYsSDYo9mB2YLZiiDYudmG2K8g2KfZhNit2KfYrNipICovXG59XG5cbnRhYmxlLnBhbGVCbHVlUm93cyB7XG4gIGZvbnQtZmFtaWx5OiBcIkFyaWFsXCIsIHNhbnMtc2VyaWY7XG4gIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XG4gIG1hcmdpbjogMTBweCBhdXRvO1xuICB3aWR0aDogMTAwJTtcbiAgbWF4LXdpZHRoOiAxMDAlO1xuICBtaW4td2lkdGg6IDgwMHB4O1xuICAvKiDZiti22YXZhiDYudiv2YUg2KrYtdi62YrYsSDYp9mE2KzYr9mI2YQg2KPZg9ir2LEg2YXZhiDYp9mE2YTYp9iy2YUgKi9cbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y5ZjlmOTtcbiAgYm94LXNoYWRvdzogMHB4IDJweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEpO1xufVxuXG50YWJsZS5wYWxlQmx1ZVJvd3MgdGQsXG50YWJsZS5wYWxlQmx1ZVJvd3MgdGgge1xuICBib3JkZXI6IDFweCBzb2xpZCAjZGRkO1xuICBwYWRkaW5nOiA4cHg7XG4gIGZvbnQtc2l6ZTogOXB4O1xuICAvKiDYqti12LrZitixINin2YTYrti3INmE2YrZg9mI2YYg2YXZhtin2LPYqNmL2KcgKi9cbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG50YWJsZS5wYWxlQmx1ZVJvd3MgdGhlYWQge1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsICMwMDdiZmYsICMwMDU2YjMpO1xuICBjb2xvcjogd2hpdGU7XG4gIGZvbnQtc2l6ZTogOXB4O1xuICAvKiDYqtmC2YTZitmEINit2KzZhSDYp9mE2LnZhtin2YjZitmGICovXG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG59XG5cbnRhYmxlLnBhbGVCbHVlUm93cyB0aGVhZCB0aCB7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7XG4gIHBhZGRpbmc6IDhweDtcbiAgZm9udC1zaXplOiA5cHg7XG4gIC8qINiq2LXYutmK2LEg2KfZhNiu2Lcg2YTZitmD2YjZhiDZhdmG2KfYs9io2YvYpyAqL1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbnRhYmxlLnBhbGVCbHVlUm93cyB0Ym9keSB0ZCB7XG4gIGZvbnQtc2l6ZTogOXB4O1xuICAvKiDYqti12LrZitixINit2KzZhSDYp9mE2YbYtdmI2LUg2YHZiiDYp9mE2KzYs9mFICovXG4gIGNvbG9yOiAjMzMzO1xufVxuXG50YWJsZS5wYWxlQmx1ZVJvd3MgdHI6bnRoLWNoaWxkKGV2ZW4pIHtcbiAgYmFja2dyb3VuZDogI2UzZjJmZDtcbn1cblxudGFibGUucGFsZUJsdWVSb3dzIHRyOmhvdmVyIHtcbiAgYmFja2dyb3VuZDogI2QwZWJmZjtcbiAgdHJhbnNpdGlvbjogMC4zcyBlYXNlLWluLW91dDtcbn1cblxudGFibGUucGFsZUJsdWVSb3dzIHRmb290IHtcbiAgZm9udC1zaXplOiA5cHg7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBiYWNrZ3JvdW5kOiAjY2NlNWZmO1xuICBib3JkZXItdG9wOiAycHggc29saWQgIzAwNTZiMztcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiA9PT09INij2YbZhdin2Lcg2KfYrdiq2LHYp9mB2YrYqSDZhNi02LHZiti3INij2LLYsdin2LEg2KfZhNil2KzYsdin2KHYp9iqID09PT0gKi9cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4uYnV0dG9uLWNvbnRhaW5lciB7XG4gIC8qIDEuINin2YTYqtmG2LPZitmCINin2YTYr9in2K7ZhNmKINmE2YTYo9iy2LHYp9ixIChGbGV4Ym94KSAqL1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LXdyYXA6IHdyYXA7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyOyAvKiA8PDwg2KXYttin2YHYqSDYrNiv2YrYr9ipINmE2KrZiNiz2YrYtyDYp9mE2KPYstix2KfYsSDYr9in2K7ZhCDYp9mE2K3Yp9mI2YrYqSDYudmG2K8g2KfZhNin2YTYqtmB2KfZgSAqL1xuICBnYXA6IDEycHg7XG5cbiAgLyogMi4g2KrYtdmF2YrZhSDYp9mE2K3Yp9mI2YrYqSDZhtmB2LPZh9inICovXG4gIGJhY2tncm91bmQtY29sb3I6ICNmN2Y5ZmM7XG4gIHBhZGRpbmc6IDE2cHg7XG4gIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgYm9yZGVyOiAxcHggc29saWQgI2UwZTRlOTtcbiAgYm94LXNoYWRvdzogMCA0cHggMTJweCByZ2JhKDAsIDAsIDAsIDAuMDUpO1xuXG4gIC8qIDMuIOKcqCDYp9mE2KzYstihINin2YTYs9it2LHZiiDZhNmE2KrZiNiz2YrYtyDZiNin2LPYqti62YTYp9mEINin2YTZhdiz2KfYrdipIOKcqCAqL1xuICB3aWR0aDogZml0LWNvbnRlbnQ7IC8qINin2KzYudmEINi52LHYtiDYp9mE2K3Yp9mI2YrYqSDZitiq2YbYp9iz2Kgg2YXYuSDZhdit2KrZiNin2YfYpyDZgdmC2LcgKi9cbiAgbWF4LXdpZHRoOiAxMDAlOyAvKiDYqtij2YPYryDZhdmGINij2YbZh9inINmE2Kcg2KrYqtis2KfZiNiyINi52LHYtiDYp9mE2LTYp9i02Kkg2LnZhNmJINin2YTZhdmI2KjYp9mK2YQgKi9cbiAgbWFyZ2luOiAyNHB4IGF1dG87IC8qINmH2KfZhdi0INi52YTZiNmKL9iz2YHZhNmKIDI0cHjYjCDZiNiq2YjYs9mK2Lcg2KPZgdmC2Yog2KrZhNmC2KfYptmKICovXG59XG5cbi8qIDIuINiq2K3Ys9mK2YYg2KrYtdmF2YrZhSDYp9mE2KPYstix2KfYsSDZiNin2YTYqtij2KvZitix2KfYqiDYp9mE2KrZgdin2LnZhNmK2KkgKi9cbi5idXR0b24tY29udGFpbmVyIC52LWJ0biB7XG4gIC8qINmE2KXYttin2YHYqSDYqtij2KvZitixINin2YbYqtmC2KfZhCDZhtin2LnZhSAqL1xuICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlLWluLW91dCAhaW1wb3J0YW50O1xufVxuXG4vKiAzLiDYpdi22KfZgdipINiq2KPYq9mK2LEgXCLYsdmB2LlcIiDYqtmB2KfYudmE2Yog2LnZhtivINin2YTYqtmF2LHZitixICovXG4uYnV0dG9uLWNvbnRhaW5lciAudi1idG46aG92ZXIge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTNweCk7IC8qINiq2K3YsdmK2YMg2KfZhNiy2LEg2YTZhNij2LnZhNmJINmC2YTZitmE2KfZiyAqL1xuICBib3gtc2hhZG93OiAwIDZweCAxNnB4IHJnYmEoMCwgMCwgMCwgMC4xMikgIWltcG9ydGFudDsgLyog2LLZitin2K/YqSDYp9mE2LjZhCDZhNiq2LnYstmK2LIg2KfZhNiq2KPYq9mK2LEgKi9cbn1cblxuLyogNC4g2KrYo9ir2YrYsSDYp9mE2LbYuti3INi52YTZiSDYp9mE2LLYsSAqL1xuLmJ1dHRvbi1jb250YWluZXIgLnYtYnRuOmFjdGl2ZSB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMXB4KTsgLyog2KXYsdis2KfYuSDYp9mE2LLYsSDZgtmE2YrZhNin2Ysg2YTZiti52LfZiiDYpdit2LPYp9izINin2YTYtti62LcgKi9cbiAgYm94LXNoYWRvdzogMCAzcHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xKSAhaW1wb3J0YW50O1xufVxuXG5AbWVkaWEgcHJpbnQge1xuICAvKiDYp9mE2K7Yt9mI2KkgMTog2KXYrtmB2KfYoSDZg9mEINi02YrYoSDZhNinINmG2LHZitiv2YcgKi9cbiAgYm9keSAqIHtcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gIH1cbiAgLm5vLXByaW50IHtcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gIH1cblxuICAvKiDYp9mE2K7Yt9mI2KkgMjog2KXYuNmH2KfYsSDYp9mE2YXZhti32YLYqSDYp9mE2YLYp9io2YTYqSDZhNmE2LfYqNin2LnYqSDZgdmC2Lcg2YjYpdi52K/Yp9iv2YfYpyAqL1xuICAucHJpbnRhYmxlLWFyZWEsXG4gIC5wcmludGFibGUtYXJlYSAqIHtcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICB9XG4gIC5wcmludGFibGUtYXJlYSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGxlZnQ6IDA7XG4gICAgdG9wOiAwO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIGZvbnQtZmFtaWx5OiBBcmlhbCwgc2Fucy1zZXJpZjsgLyog2KfYs9iq2K7Yr9in2YUg2K7YtyDYqNiz2YrYtyDZiNmI2KfYttitINmE2YTYt9io2KfYudipICovXG4gIH1cblxuICAvKiDYp9mE2K7Yt9mI2KkgMzog2KrZhtiz2YrZgiDYp9mE2KzYr9mI2YQg2KjYtNmD2YQg2K7Yp9i1INmE2YTYt9io2KfYudipICovXG4gIGgxIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgY29sb3I6ICMwMDAgIWltcG9ydGFudDsgLyog2YTZiNmGINij2LPZiNivINmI2KfYttitICovXG4gICAgZm9udC1zaXplOiAxNnB0O1xuICAgIG1hcmdpbi1ib3R0b206IDIwcHg7XG4gIH1cblxuICB0YWJsZS5wYWxlQmx1ZVJvd3Mge1xuICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7XG4gICAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZSAhaW1wb3J0YW50OyAvKiDZhNi22YXYp9mGINin2KrYtdin2YQg2KfZhNit2K/ZiNivICovXG4gICAgZm9udC1zaXplOiAxMHB0OyAvKiDYrdis2YUg2K7YtyDZhdmG2KfYs9ioINmE2YTZgtix2KfYodipINi52YTZiSDYp9mE2YjYsdmCICovXG4gICAgYm94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50OyAvKiDYpdiy2KfZhNipINin2YTYuNmEICovXG4gIH1cblxuICAvKiDYrNi52YQg2KfZhNit2K/ZiNivINmI2KfYttit2Kkg2KzYr9in2Ysg2KjYp9mE2YTZiNmGINin2YTYo9iz2YjYryAqL1xuICB0YWJsZS5wYWxlQmx1ZVJvd3MgdGgsXG4gIHRhYmxlLnBhbGVCbHVlUm93cyB0ZCB7XG4gICAgYm9yZGVyOiAxcHggc29saWQgIzAwMCAhaW1wb3J0YW50OyAvKiDYrdiv2YjYryDYs9mI2K/Yp9ihINmI2YLZiNmK2KkgKi9cbiAgICBwYWRkaW5nOiA4cHggIWltcG9ydGFudDtcbiAgICBjb2xvcjogIzAwMCAhaW1wb3J0YW50OyAvKiDZhti1INij2LPZiNivICovXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB9XG5cbiAgLyog2KrZhtiz2YrZgiDYsdij2LMg2KfZhNis2K/ZiNmEINmE2YTYt9io2KfYudipICovXG4gIHRhYmxlLnBhbGVCbHVlUm93cyB0aGVhZCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2UwZTBlMCAhaW1wb3J0YW50OyAvKiDYrtmE2YHZitipINix2YXYp9iv2YrYqSDZgdin2KrYrdipINio2K/ZhNin2Ysg2YXZhiDYp9mE2KrYr9ix2Kwg2KfZhNmE2YjZhtmKICovXG4gICAgLXdlYmtpdC1wcmludC1jb2xvci1hZGp1c3Q6IGV4YWN0OyAvKiDZhdit2KfZiNmE2Kkg2KXYrNio2KfYsSDYp9mE2YXYqti12YHYrSDYudmE2Ykg2LfYqNin2LnYqSDZhNmI2YYg2KfZhNiu2YTZgdmK2KkgKi9cbiAgICBjb2xvcjogIzAwMCAhaW1wb3J0YW50O1xuICB9XG5cbiAgLyog2KXYstin2YTYqSDZhNmI2YYg2KfZhNiu2YTZgdmK2Kkg2YXZhiDYp9mE2LXZgdmI2YEg2KfZhNmB2LHYr9mK2Kkg2YTYstmK2KfYr9ipINin2YTZiNi22YjYrSAqL1xuICB0YWJsZS5wYWxlQmx1ZVJvd3MgdHI6bnRoLWNoaWxkKGV2ZW4pIHtcbiAgICBiYWNrZ3JvdW5kOiBub25lICFpbXBvcnRhbnQ7XG4gIH1cblxuICAvKiDYqtmG2LPZitmCINi12YbYr9mI2YIg2KfZhNiq2YbYqNmK2YfYp9iqICh2LWFsZXJ0KSDZhNmE2LfYqNin2LnYqSAqL1xuICAudi1hbGVydCB7XG4gICAgYm9yZGVyOiAxcHggc29saWQgIzAwMCAhaW1wb3J0YW50O1xuICAgIHBhZGRpbmc6IDEwcHggIWltcG9ydGFudDtcbiAgICBtYXJnaW4tdG9wOiAyMHB4ICFpbXBvcnRhbnQ7XG4gICAgYmFja2dyb3VuZDogbm9uZSAhaW1wb3J0YW50O1xuICAgIGNvbG9yOiAjMDAwICFpbXBvcnRhbnQ7XG4gICAgYm94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50O1xuICB9XG4gIC52LWFsZXJ0IC52LWljb24ge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgLyog2KXYrtmB2KfYoSDYp9mE2KPZitmC2YjZhtipICovXG4gIH1cbn1cbjwvc3R5bGU+XG4iLCI8dGVtcGxhdGU+XG48ZGl2PlxuICAgIDxjYXJkLWJsb2NrIGljb249XCJtZGktcHJpbnRlci1zZXR0aW5nc1wiIGlkPVwiZ3JvdXByb290MVwiIGNvbG9yPVwicHJpbWFyeVwiIDp0aXRsZT1cIiR0KCdDb25maWd1cmF0aW9uIGRcXCdJbXByZXNzaW9uJylcIiA6dGV4dD1cIiR0KCdQZXJzb25uYWxpc2V6IGxcXCdhcHBhcmVuY2UgZXQgbGUgY29udGVudSBkZSB2b3RyZSBkb2N1bWVudCBhdmFudCBkZSBsXFwnaW1wcmltZXIgb3UgZGUgbGUgdMOpbMOpY2hhcmdlci4nKVwiPlxuICAgICAgICA8di1yb3c+XG4gICAgICAgICAgICA8IS0tIENvbG9ubmUgZGVzIHBhcmFtw6h0cmVzIC0tPlxuICAgICAgICAgICAgPHYtY29sIGNvbHM9XCIxMlwiIGxnPVwiNFwiIG1kPVwiNVwiPlxuICAgICAgICAgICAgICAgIDx2LWNhcmQgY2xhc3M9XCJlbGV2YXRpb24tMlwiIHN0eWxlPVwiYm9yZGVyLXJhZGl1czogMTJweDsgb3ZlcmZsb3c6IGhpZGRlbjsgYm9yZGVyOiAxcHggc29saWQgI2UwZTBlMDtcIj5cbiAgICAgICAgICAgICAgICAgICAgPHYtdG9vbGJhciBjb2xvcj1cImluZGlnbyBkYXJrZW4tMVwiIGRhcmsgZmxhdCBkZW5zZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx2LWljb24gbGVmdD5tZGktdHVuZTwvdi1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHYtdG9vbGJhci10aXRsZSBjbGFzcz1cInRleHQtc3VidGl0bGUtMSBmb250LXdlaWdodC1tZWRpdW1cIj5QYXJhbcOodHJlcyBkdSBEb2N1bWVudDwvdi10b29sYmFyLXRpdGxlPlxuICAgICAgICAgICAgICAgICAgICA8L3YtdG9vbGJhcj5cbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIDx2LWV4cGFuc2lvbi1wYW5lbHMgdi1tb2RlbD1cInBhbmVsXCIgYWNjb3JkaW9uIG11bHRpcGxlIGNsYXNzPVwiY3VzdG9tLXBhbmVsc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBTZWN0aW9uIDE6IENvbnRlbnUgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8di1leHBhbnNpb24tcGFuZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHYtZXhwYW5zaW9uLXBhbmVsLWhlYWRlciBjbGFzcz1cImZvbnQtd2VpZ2h0LW1lZGl1bVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8di1pY29uIGxlZnQgY29sb3I9XCJibHVlXCIgY2xhc3M9XCJtci0yXCI+bWRpLWZpbGUtZG9jdW1lbnQtZWRpdC1vdXRsaW5lPC92LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnUgYWZmaWNow6lcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3YtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8di1leHBhbnNpb24tcGFuZWwtY29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LWNhcHRpb24gdGV4dC0tc2Vjb25kYXJ5IG1iLTRcIj5Tw6lsZWN0aW9ubmV6IGxlcyDDqWzDqW1lbnRzIMOgIGluY2x1cmUgZGFucyBsZSBkb2N1bWVudCBnw6luw6lyw6kuPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHYtc3dpdGNoIHYtbW9kZWw9XCJlbnRpdGVcIiA6bGFiZWw9XCIkdChgRW4tdMOqdGUgZGUgbCdlbnRyZXByaXNlYClcIiBmYWxzZS12YWx1ZT1cIjBcIiB0cnVlLXZhbHVlPVwiMVwiIGNvbG9yPVwicHJpbWFyeVwiIGhpZGUtZGV0YWlscyBjbGFzcz1cIm1iLTMgbXQtMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlIHYtc2xvdDphcHBlbmQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHYtdG9vbHRpcCB0b3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6YWN0aXZhdG9yPVwieyBvbiwgYXR0cnMgfVwiPjx2LWljb24gdi1iaW5kPVwiYXR0cnNcIiB2LW9uPVwib25cIiBzbWFsbCBjb2xvcj1cImdyZXlcIiBjbGFzcz1cIm10LTFcIj5tZGktaW5mb3JtYXRpb248L3YtaWNvbj48L3RlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5BZmZpY2hlIGxlIGxvZ28gZXQgbGVzIGNvb3Jkb25uw6llcyBkZSB2b3RyZSBlbnRyZXByaXNlIGVuIGhhdXQgZGUgbGEgcGFnZS48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92LXRvb2x0aXA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Ytc3dpdGNoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHYtc3dpdGNoIHYtbW9kZWw9XCJhZmZpY2hlcHJpeFwiIDpsYWJlbD1cIiR0KGBBZmZpY2hlciBsZXMgcHJpeGApXCIgZmFsc2UtdmFsdWU9XCIwXCIgdHJ1ZS12YWx1ZT1cIjFcIiBjb2xvcj1cInByaW1hcnlcIiBoaWRlLWRldGFpbHMgY2xhc3M9XCJtYi0zIG10LTBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGVtcGxhdGUgdi1zbG90OmFwcGVuZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8di10b29sdGlwIHRvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlIHYtc2xvdDphY3RpdmF0b3I9XCJ7IG9uLCBhdHRycyB9XCI+PHYtaWNvbiB2LWJpbmQ9XCJhdHRyc1wiIHYtb249XCJvblwiIHNtYWxsIGNvbG9yPVwiZ3JleVwiIGNsYXNzPVwibXQtMVwiPm1kaS1pbmZvcm1hdGlvbjwvdi1pY29uPjwvdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPk1hc3F1ZXogY2V0dGUgb3B0aW9uIHNpIHZvdXMgc291aGFpdGV6IGfDqW7DqXJlciB1biBib24gc2FucyBsZXMgbW9udGFudHMgZmluYW5jaWVycy48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92LXRvb2x0aXA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Ytc3dpdGNoPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2LXN3aXRjaCB2LW1vZGVsPVwiYWZmaWNoZXR2YVwiIDpsYWJlbD1cIiR0KGBEw6l0YWlscyBkZSBsYSBUVkFgKVwiIGZhbHNlLXZhbHVlPVwiMFwiIHRydWUtdmFsdWU9XCIxXCIgY29sb3I9XCJwcmltYXJ5XCIgaGlkZS1kZXRhaWxzIGNsYXNzPVwibWItMyBtdC0wXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlIHYtc2xvdDphcHBlbmQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHYtdG9vbHRpcCB0b3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6YWN0aXZhdG9yPVwieyBvbiwgYXR0cnMgfVwiPjx2LWljb24gdi1iaW5kPVwiYXR0cnNcIiB2LW9uPVwib25cIiBzbWFsbCBjb2xvcj1cImdyZXlcIiBjbGFzcz1cIm10LTFcIj5tZGktaW5mb3JtYXRpb248L3YtaWNvbj48L3RlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5JbmNsdXQgbGVzIGNvbG9ubmVzIGV0IGxlIHLDqWNhcGl0dWxhdGlmIGRlcyB0YXhlcyBhcHBsaXF1w6llcyBzdXIgbGVzIGFydGljbGVzLjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3YtdG9vbHRpcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdi1zd2l0Y2g+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHYtc3dpdGNoIHYtbW9kZWw9XCJhZmZpY2hlcGllY2VcIiA6bGFiZWw9XCIkdChgRMOpdGFpbHMgc3VwcGzDqW1lbnRhaXJlc2ApXCIgZmFsc2UtdmFsdWU9XCIwXCIgdHJ1ZS12YWx1ZT1cIjFcIiBjb2xvcj1cInByaW1hcnlcIiBoaWRlLWRldGFpbHMgY2xhc3M9XCJtYi0zIG10LTBcIj48L3Ytc3dpdGNoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHYtc3dpdGNoIHYtaWY9XCJbJ2JvbnN2ZW50ZXMnLCAnZmFjdHVyZXN2ZW50ZXMnLCAnYXZvaXJzdmVudGVzJywgJ2RldmlzJywgJ2NvbW1hbmRlcyddLmluY2x1ZGVzKGNvbnRyb2xsZXIpXCIgdi1tb2RlbD1cImFmZmljaGVxcmNvZGVcIiBsYWJlbD1cIlNpZ25hdHVyZSDDiWxlY3Ryb25pcXVlIChRUiBDb2RlKVwiIGZhbHNlLXZhbHVlPVwiMFwiIHRydWUtdmFsdWU9XCIxXCIgY29sb3I9XCJwcmltYXJ5XCIgaGlkZS1kZXRhaWxzIGNsYXNzPVwibWItMyBtdC0wXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlIHYtc2xvdDphcHBlbmQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHYtdG9vbHRpcCB0b3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6YWN0aXZhdG9yPVwieyBvbiwgYXR0cnMgfVwiPjx2LWljb24gdi1iaW5kPVwiYXR0cnNcIiB2LW9uPVwib25cIiBzbWFsbCBjb2xvcj1cImdyZXlcIiBjbGFzcz1cIm10LTFcIj5tZGktaW5mb3JtYXRpb248L3YtaWNvbj48L3RlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5Bam91dGUgdW4gY29kZSBRUiBvZmZpY2llbCBwb3VyIHbDqXJpZmllciBsJ2F1dGhlbnRpY2l0w6kgZHUgZG9jdW1lbnQgw6AgcG9ydMOpZSBkZSBzY2FuLjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3YtdG9vbHRpcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdi1zd2l0Y2g+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiB2LWlmPVwiWydib25zdmVudGVzJ10uaW5jbHVkZXMoY29udHJvbGxlcilcIiBjbGFzcz1cIm10LTVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNhcHRpb24gZm9udC13ZWlnaHQtYm9sZCBtYi0yXCI+VXNhZ2UgcHLDqXZ1IGR1IGRvY3VtZW50IDo8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2LXNlbGVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2LW1vZGVsPVwicGRmVHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDppdGVtcz1cIlt7dGV4dDonU3RhbmRhcmQgKERlc3RpbsOpIGF1IENsaWVudCknLCB2YWx1ZTonc3RhbmRhcmQnfSwge3RleHQ6J1RpY2tldCBkZSBQcsOpcGFyYXRpb24gKFN0b2NrKScsIHZhbHVlOidzdG9jayd9LCB7dGV4dDonQm9uIHBvdXIgTGl2cmV1cicsIHZhbHVlOidkZWxpdmVyeSd9XVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dGxpbmVkIGRlbnNlIGhpZGUtZGV0YWlsc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLWNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlIHYtc2xvdDphcHBlbmQtb3V0ZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHYtdG9vbHRpcCB0b3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6YWN0aXZhdG9yPVwieyBvbiwgYXR0cnMgfVwiPjx2LWljb24gdi1iaW5kPVwiYXR0cnNcIiB2LW9uPVwib25cIiBzbWFsbCBjb2xvcj1cImdyZXlcIiBjbGFzcz1cIm10LTFcIj5tZGktaW5mb3JtYXRpb248L3YtaWNvbj48L3RlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5BZGFwdGUgYXV0b21hdGlxdWVtZW50IGxhIGRpc3Bvc2l0aW9uIGRlcyBjb2xvbm5lcyBzZWxvbiBsZSBkZXN0aW5hdGFpcmUgKENsaWVudCwgTWFnYXNpbmllciwgTGl2cmV1cikuPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdi10b29sdGlwPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdi1zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdi1leHBhbnNpb24tcGFuZWwtY29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdi1leHBhbnNpb24tcGFuZWw+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gU2VjdGlvbiAyOiBNaXNlIGVuIHBhZ2UgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8di1leHBhbnNpb24tcGFuZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHYtZXhwYW5zaW9uLXBhbmVsLWhlYWRlciBjbGFzcz1cImZvbnQtd2VpZ2h0LW1lZGl1bVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8di1pY29uIGxlZnQgY29sb3I9XCJncmVlblwiIGNsYXNzPVwibXItMlwiPm1kaS1wYWdlLWxheW91dC1oZWFkZXItZm9vdGVyPC92LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1pc2UgZW4gZm9ybWUgJiBNYXJnZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3YtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8di1leHBhbnNpb24tcGFuZWwtY29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LWNhcHRpb24gdGV4dC0tc2Vjb25kYXJ5IG1iLTRcIj5BanVzdGV6IGxlcyBkaW1lbnNpb25zIGRlIGxhIHBhZ2UgZXQgbCdlc3BhY2UgYXV0b3VyIGR1IGNvbnRlbnUgcG91ciBsJ2ltcHJlc3Npb24uPC9wPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2LXJvdyBkZW5zZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2LWNvbCBjb2xzPVwiNlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2LXNlbGVjdCB2LW1vZGVsPVwicGFnZWZvcm1hdFwiIDppdGVtcz1cIlsnQTMnLCAnQTQnLCAnQTUnXVwiIGxhYmVsPVwiRm9ybWF0IHBhcGllclwiIG91dGxpbmVkIGRlbnNlIGhpZGUtZGV0YWlscyBjb2xvcj1cInByaW1hcnlcIiBpdGVtLWNvbG9yPVwicHJpbWFyeVwiPjwvdi1zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3YtY29sPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHYtY29sIGNvbHM9XCI2XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHYtc2VsZWN0IHYtbW9kZWw9XCJvcmllbnRhdGlvblwiIDppdGVtcz1cIlt7dGV4dDonUG9ydHJhaXQnLCB2YWx1ZTonUCd9LCB7dGV4dDonUGF5c2FnZScsIHZhbHVlOidMJ31dXCIgbGFiZWw9XCJPcmllbnRhdGlvblwiIG91dGxpbmVkIGRlbnNlIGhpZGUtZGV0YWlscyBjb2xvcj1cInByaW1hcnlcIiBpdGVtLWNvbG9yPVwicHJpbWFyeVwiPjwvdi1zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3YtY29sPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Ytcm93PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2LWRpdmlkZXIgY2xhc3M9XCJteS01XCI+PC92LWRpdmlkZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jYXB0aW9uIGZvbnQtd2VpZ2h0LWJvbGQgbWItM1wiPk1hcmdlcyBkdSBkb2N1bWVudCAoZW4gbW0pIDo8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2LXNsaWRlciB2LW1vZGVsPVwiYmFja3RvcFwiIDptYXg9XCIxMDBcIiBjbGFzcz1cImFsaWduLWNlbnRlciBtdC0yXCIgcHJlcGVuZC1pY29uPVwibWRpLWJvcmRlci10b3BcIiBoaWRlLWRldGFpbHMgY29sb3I9XCJwcmltYXJ5XCIgdHJhY2stY29sb3I9XCJncmV5IGxpZ2h0ZW4tMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlIHYtc2xvdDphcHBlbmQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHYtdGV4dC1maWVsZCB2LW1vZGVsPVwiYmFja3RvcFwiIGNsYXNzPVwibXQtMCBwdC0wXCIgdHlwZT1cIm51bWJlclwiIHN0eWxlPVwid2lkdGg6IDU1cHhcIiBkZW5zZSBoaWRlLWRldGFpbHMgb3V0bGluZWQ+PC92LXRleHQtZmllbGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHYtdG9vbHRpcCB0b3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6YWN0aXZhdG9yPVwieyBvbiwgYXR0cnMgfVwiPjx2LWljb24gdi1iaW5kPVwiYXR0cnNcIiB2LW9uPVwib25cIiBzbWFsbCBjb2xvcj1cImdyZXlcIiBjbGFzcz1cIm1sLTIgbXQtMVwiPm1kaS1pbmZvcm1hdGlvbjwvdi1pY29uPjwvdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPk1hcmdlIHN1cMOpcmlldXJlIChVdGlsZSBwb3VyIGxlIGZhbWV1eCBwYXBpZXIgw6AgZW4tdMOqdGUgZGUgdm90cmUgZW50cmVwcmlzZSk8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92LXRvb2x0aXA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Ytc2xpZGVyPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2LXNsaWRlciB2LW1vZGVsPVwiYmFja2JvdHRvbVwiIDptYXg9XCIxMDBcIiBjbGFzcz1cImFsaWduLWNlbnRlciBtdC00XCIgcHJlcGVuZC1pY29uPVwibWRpLWJvcmRlci1ib3R0b21cIiBoaWRlLWRldGFpbHMgY29sb3I9XCJwcmltYXJ5XCIgdHJhY2stY29sb3I9XCJncmV5IGxpZ2h0ZW4tMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlIHYtc2xvdDphcHBlbmQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHYtdGV4dC1maWVsZCB2LW1vZGVsPVwiYmFja2JvdHRvbVwiIGNsYXNzPVwibXQtMCBwdC0wXCIgdHlwZT1cIm51bWJlclwiIHN0eWxlPVwid2lkdGg6IDU1cHhcIiBkZW5zZSBoaWRlLWRldGFpbHMgb3V0bGluZWQ+PC92LXRleHQtZmllbGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHYtdG9vbHRpcCB0b3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6YWN0aXZhdG9yPVwieyBvbiwgYXR0cnMgfVwiPjx2LWljb24gdi1iaW5kPVwiYXR0cnNcIiB2LW9uPVwib25cIiBzbWFsbCBjb2xvcj1cImdyZXlcIiBjbGFzcz1cIm1sLTIgbXQtMVwiPm1kaS1pbmZvcm1hdGlvbjwvdi1pY29uPjwvdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPk1hcmdlIGluZsOpcmlldXJlIChFc3BhY2UgdmlkZSBlbiBiYXMgZGUgbGEgcGFnZSk8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92LXRvb2x0aXA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Ytc2xpZGVyPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2LXNsaWRlciB2LW1vZGVsPVwiYmFja2xlZnRcIiA6bWF4PVwiMTAwXCIgY2xhc3M9XCJhbGlnbi1jZW50ZXIgbXQtNFwiIHByZXBlbmQtaWNvbj1cIm1kaS1mb3JtYXQtYWxpZ24tbGVmdFwiIGhpZGUtZGV0YWlscyBjb2xvcj1cInByaW1hcnlcIiB0cmFjay1jb2xvcj1cImdyZXkgbGlnaHRlbi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGVtcGxhdGUgdi1zbG90OmFwcGVuZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8di10ZXh0LWZpZWxkIHYtbW9kZWw9XCJiYWNrbGVmdFwiIGNsYXNzPVwibXQtMCBwdC0wXCIgdHlwZT1cIm51bWJlclwiIHN0eWxlPVwid2lkdGg6IDU1cHhcIiBkZW5zZSBoaWRlLWRldGFpbHMgb3V0bGluZWQ+PC92LXRleHQtZmllbGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHYtdG9vbHRpcCB0b3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6YWN0aXZhdG9yPVwieyBvbiwgYXR0cnMgfVwiPjx2LWljb24gdi1iaW5kPVwiYXR0cnNcIiB2LW9uPVwib25cIiBzbWFsbCBjb2xvcj1cImdyZXlcIiBjbGFzcz1cIm1sLTIgbXQtMVwiPm1kaS1pbmZvcm1hdGlvbjwvdi1pY29uPjwvdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPk1hcmdlIGdhdWNoZTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3YtdG9vbHRpcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdi1zbGlkZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHYtc2xpZGVyIHYtbW9kZWw9XCJiYWNrcmlnaHRcIiA6bWF4PVwiMTAwXCIgY2xhc3M9XCJhbGlnbi1jZW50ZXIgbXQtNFwiIHByZXBlbmQtaWNvbj1cIm1kaS1mb3JtYXQtYWxpZ24tcmlnaHRcIiBoaWRlLWRldGFpbHMgY29sb3I9XCJwcmltYXJ5XCIgdHJhY2stY29sb3I9XCJncmV5IGxpZ2h0ZW4tMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlIHYtc2xvdDphcHBlbmQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHYtdGV4dC1maWVsZCB2LW1vZGVsPVwiYmFja3JpZ2h0XCIgY2xhc3M9XCJtdC0wIHB0LTBcIiB0eXBlPVwibnVtYmVyXCIgc3R5bGU9XCJ3aWR0aDogNTVweFwiIGRlbnNlIGhpZGUtZGV0YWlscyBvdXRsaW5lZD48L3YtdGV4dC1maWVsZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8di10b29sdGlwIHRvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlIHYtc2xvdDphY3RpdmF0b3I9XCJ7IG9uLCBhdHRycyB9XCI+PHYtaWNvbiB2LWJpbmQ9XCJhdHRyc1wiIHYtb249XCJvblwiIHNtYWxsIGNvbG9yPVwiZ3JleVwiIGNsYXNzPVwibWwtMiBtdC0xXCI+bWRpLWluZm9ybWF0aW9uPC92LWljb24+PC90ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+TWFyZ2UgZHJvaXRlPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdi10b29sdGlwPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92LXNsaWRlcj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdi1leHBhbnNpb24tcGFuZWwtY29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdi1leHBhbnNpb24tcGFuZWw+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gU2VjdGlvbiAzOiBBcHBhcmVuY2UgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8di1leHBhbnNpb24tcGFuZWwgdi1pZj1cIlsnYm9uc3ZlbnRlcycsICdmYWN0dXJlc3ZlbnRlcycsICdhdm9pcnN2ZW50ZXMnLCAnZGV2aXMnLCAnY29tbWFuZGVzJ10uaW5jbHVkZXMoY29udHJvbGxlcilcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8di1leHBhbnNpb24tcGFuZWwtaGVhZGVyIGNsYXNzPVwiZm9udC13ZWlnaHQtbWVkaXVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2LWljb24gbGVmdCBjb2xvcj1cInB1cnBsZVwiIGNsYXNzPVwibXItMlwiPm1kaS1wYWxldHRlLW91dGxpbmU8L3YtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXBwYXJlbmNlIHZpc3VlbGxlIChUaMOobWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHYtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidGV4dC1jYXB0aW9uIHRleHQtLXNlY29uZGFyeSBtYi00XCI+TWV0dGV6IGVuIHZhbGV1ciB2b3RyZSBpbWFnZSBkZSBtYXJxdWUgw6AgdHJhdmVycyB1biBkZXNpZ24gdGjDqW1hdGlxdWUgw6lsw6lnYW50LjwvcD5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jYXB0aW9uIGZvbnQtd2VpZ2h0LWJvbGQgbWItMlwiPlRow6htZSBkZSBjb3VsZXVycyBldCBkZSBzdHJ1Y3R1cmUgOjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8di1zZWxlY3Qgdi1tb2RlbD1cInRoZW1lXCIgOml0ZW1zPVwiW3t0ZXh0OidTdGFuZGFyZCAoTWluaW1hbGlzdGUpJywgdmFsdWU6J29yaWdpbmFsJ30sIHt0ZXh0OidDbGFzc2lxdWUgKFByb2Zlc3Npb25uZWwpJywgdmFsdWU6J2NsYXNzaXF1ZSd9LCB7dGV4dDonTW9kZXJuZSAoRGVzaWduIMOpcHVyw6kpJywgdmFsdWU6J21vZGVybmUnfSwge3RleHQ6J8OJbMOpZ2FudCAoUHJlbWl1bSknLCB2YWx1ZTonZWxlZ2FudCd9XVwiIG91dGxpbmVkIGRlbnNlIGhpZGUtZGV0YWlscyBjbGFzcz1cIm1iLTVcIiBjb2xvcj1cInByaW1hcnlcIiBpdGVtLWNvbG9yPVwicHJpbWFyeVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Ytc2VsZWN0PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2LWRpdmlkZXIgY2xhc3M9XCJteS01XCIgdi1pZj1cImNvbnRyb2xsZXIgPT0gJ2JvbnN2ZW50ZXMnIHx8IGNvbnRyb2xsZXIgPT0gJ2ZhY3R1cmVzdmVudGVzJ1wiPjwvdi1kaXZpZGVyPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LWlmPVwiY29udHJvbGxlciA9PSAnYm9uc3ZlbnRlcycgfHwgY29udHJvbGxlciA9PSAnZmFjdHVyZXN2ZW50ZXMnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jYXB0aW9uIGZvbnQtd2VpZ2h0LWJvbGQgbWItM1wiPlN0eWxlcyBkZXMgYm9yZHVyZXMgKFRhYmxlYXV4KSA6PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtY2FwdGlvbiB0ZXh0LS1zZWNvbmRhcnkgZC1mbGV4IGFsaWduLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJheW9uIGRlIGNvdXJidXJlIChBcnJvbmRpcylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8di10b29sdGlwIHRvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlIHYtc2xvdDphY3RpdmF0b3I9XCJ7IG9uLCBhdHRycyB9XCI+PHYtaWNvbiB2LWJpbmQ9XCJhdHRyc1wiIHYtb249XCJvblwiIHNtYWxsIGNvbG9yPVwiZ3JleVwiIGNsYXNzPVwibWwtMVwiPm1kaS1pbmZvcm1hdGlvbjwvdi1pY29uPjwvdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlJlbmQgbGVzIGNvaW5zIGRlcyB0YWJsZWF1eCBwbHVzIG91IG1vaW5zIGFycm9uZGlzLjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3YtdG9vbHRpcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2LXNsaWRlciB2LW1vZGVsPVwiYm9yZGVycmFkaXVzXCIgOm1heD1cIjIwXCIgY2xhc3M9XCJhbGlnbi1jZW50ZXIgbXQtMVwiIHByZXBlbmQtaWNvbj1cIm1kaS1zaGFwZS1yZWN0YW5nbGUtcGx1c1wiIGhpZGUtZGV0YWlscyBjb2xvcj1cInB1cnBsZVwiIHRyYWNrLWNvbG9yPVwicHVycGxlIGxpZ2h0ZW4tNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6YXBwZW5kPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8di10ZXh0LWZpZWxkIHYtbW9kZWw9XCJib3JkZXJyYWRpdXNcIiBjbGFzcz1cIm10LTAgcHQtMFwiIHR5cGU9XCJudW1iZXJcIiBzdHlsZT1cIndpZHRoOiA1NXB4XCIgZGVuc2UgaGlkZS1kZXRhaWxzIG91dGxpbmVkPjwvdi10ZXh0LWZpZWxkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Ytc2xpZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtY2FwdGlvbiB0ZXh0LS1zZWNvbmRhcnkgbXQtNCBkLWZsZXggYWxpZ24tY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgw4lwYWlzc2V1ciBkZXMgYm9yZHVyZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8di10b29sdGlwIHRvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlIHYtc2xvdDphY3RpdmF0b3I9XCJ7IG9uLCBhdHRycyB9XCI+PHYtaWNvbiB2LWJpbmQ9XCJhdHRyc1wiIHYtb249XCJvblwiIHNtYWxsIGNvbG9yPVwiZ3JleVwiIGNsYXNzPVwibWwtMVwiPm1kaS1pbmZvcm1hdGlvbjwvdi1pY29uPjwvdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPkFkYXB0ZXogbCfDqXBhaXNzZXVyIGRlcyBsaWduZXMgZGVzIHRhYmxlYXV4Ljwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3YtdG9vbHRpcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2LXNsaWRlciB2LW1vZGVsPVwiYm9yZGVyd2lkdGhcIiA6bWF4PVwiNVwiIGNsYXNzPVwiYWxpZ24tY2VudGVyIG10LTFcIiBwcmVwZW5kLWljb249XCJtZGktYm9yZGVyLWFsbFwiIGhpZGUtZGV0YWlscyBjb2xvcj1cInB1cnBsZVwiIHRyYWNrLWNvbG9yPVwicHVycGxlIGxpZ2h0ZW4tNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6YXBwZW5kPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8di10ZXh0LWZpZWxkIHYtbW9kZWw9XCJib3JkZXJ3aWR0aFwiIGNsYXNzPVwibXQtMCBwdC0wXCIgdHlwZT1cIm51bWJlclwiIHN0eWxlPVwid2lkdGg6IDU1cHhcIiBkZW5zZSBoaWRlLWRldGFpbHMgb3V0bGluZWQ+PC92LXRleHQtZmllbGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdi1zbGlkZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3YtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3YtZXhwYW5zaW9uLXBhbmVsPlxuICAgICAgICAgICAgICAgICAgICA8L3YtZXhwYW5zaW9uLXBhbmVscz5cbiAgICAgICAgICAgICAgICA8L3YtY2FyZD5cbiAgICAgICAgICAgIDwvdi1jb2w+XG5cbiAgICAgICAgICAgIDwhLS0gQ29sb25uZSBWaXN1YWxpc2F0aW9uIC0tPlxuICAgICAgICAgICAgPHYtY29sIGNvbHM9XCIxMlwiIGxnPVwiOFwiIG1kPVwiN1wiPlxuICAgICAgICAgICAgICAgIDx2LWNhcmQgZWxldmF0aW9uPVwiNFwiIHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlOyBtaW4taGVpZ2h0OiA5MDBweDsgYm9yZGVyLXJhZGl1czogMTJweDsgb3ZlcmZsb3c6IGhpZGRlbjsgYm9yZGVyOiAxcHggc29saWQgI2UwZTBlMDsgYmFja2dyb3VuZC1jb2xvcjogIzUyNTY1OTtcIj5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBUb29sYmFyIHBvdXIgbCdhcGVyw6d1IFBERiAtLT5cbiAgICAgICAgICAgICAgICAgICAgPHYtdG9vbGJhciBkZW5zZSBmbGF0IGNvbG9yPVwiIzNiM2U0MFwiIGRhcmsgc3R5bGU9XCJib3JkZXItYm90dG9tOiAxcHggc29saWQgIzJkMmYzMTtcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx2LWljb24gY29sb3I9XCJyZWQgbGlnaHRlbi0xXCIgY2xhc3M9XCJtci0zXCI+bWRpLWZpbGUtcGRmLWJveDwvdi1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmb250LXdlaWdodC1tZWRpdW0gdGV4dC1zdWJ0aXRsZS0xXCI+QXBlcsOndSBlbiBkaXJlY3QgZHUgZG9jdW1lbnQ8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8di1zcGFjZXI+PC92LXNwYWNlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx2LXRvb2x0aXAgYm90dG9tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6YWN0aXZhdG9yPVwieyBvbiwgYXR0cnMgfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8di1idG4gaWNvbiBjb2xvcj1cIndoaXRlXCIgQGNsaWNrPVwicmFmcmFpY2hpckFwZXJjdVwiIDpkaXNhYmxlZD1cImxvYWRpbmdQZGZcIiB2LWJpbmQ9XCJhdHRyc1wiIHYtb249XCJvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHYtaWNvbj5tZGktcmVmcmVzaDwvdi1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3YtYnRuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+Rm9yY2VyIGwnYWN0dWFsaXNhdGlvbjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdi10b29sdGlwPlxuICAgICAgICAgICAgICAgICAgICA8L3YtdG9vbGJhcj5cblxuICAgICAgICAgICAgICAgICAgICA8IS0tIE92ZXJsYXkgZGUgY2hhcmdlbWVudCBtb2Rlcm5lIC0tPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IHYtaWY9XCJsb2FkaW5nUGRmXCIgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4ganVzdGlmeS1jZW50ZXIgYWxpZ24tY2VudGVyXCIgc3R5bGU9XCJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogNDhweDsgbGVmdDogMDsgcmlnaHQ6IDA7IGJvdHRvbTogMDsgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjg4KTsgei1pbmRleDogMTA7IGJhY2tkcm9wLWZpbHRlcjogYmx1cig4cHgpO1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHYtcHJvZ3Jlc3MtY2lyY3VsYXIgaW5kZXRlcm1pbmF0ZSBjb2xvcj1cImluZGlnb1wiIHNpemU9XCI4MFwiIHdpZHRoPVwiN1wiPjwvdi1wcm9ncmVzcy1jaXJjdWxhcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cIm10LTZcIiBzdHlsZT1cImNvbG9yOiAjMzk0OUFCOyBmb250LXdlaWdodDogNjAwOyBsZXR0ZXItc3BhY2luZzogMC41cHg7XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgR8OpbsOpcmF0aW9uIGR1IGRvY3VtZW50IGVuIGNvdXJzLi4uXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2gzPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtdC0yXCIgc3R5bGU9XCJjb2xvcjogIzYxNjE2MTsgZm9udC1zaXplOiAxNXB4O1wiPkFwcGxpY2F0aW9uIGRlIHZvcyBub3V2ZWF1eCBwYXJhbcOodHJlcywgdmV1aWxsZXogcGF0aWVudGVyLjwvcD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICA8aWZyYW1lIFxuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxMDAlXCIgXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCI4NTJweFwiIFxuICAgICAgICAgICAgICAgICAgICAgICAgOnNyYz1cInVybFBhZ2VwZGZcIiBcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiYm9yZGVyOiBub25lOyBkaXNwbGF5OiBibG9jaztcIlxuICAgICAgICAgICAgICAgICAgICAgICAgQGxvYWQ9XCJsb2FkaW5nUGRmID0gZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvdi1jYXJkPlxuICAgICAgICAgICAgPC92LWNvbD5cbiAgICAgICAgPC92LXJvdz5cbiAgICA8L2NhcmQtYmxvY2s+XG48L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG5leHBvcnQgZGVmYXVsdCB7XG4gICAgY29tcHV0ZWQ6IHtcbiAgICAgICAgdXJsUGFnZXBkZigpIHtcbiAgICAgICAgICAgIC8vIFZhcmlhYmxlIHV0aWxpc8OpZSBwb3VyIGZvcmNlciBsJ2lmcmFtZSDDoCBzZSByZWNoYXJnZXIgKGVuIGFqb3V0YW50IHVuIHRpbWUgc3RhbXApXG4gICAgICAgICAgICBsZXQgcmVmcmVzaFRyaWdnZXIgPSB0aGlzLnJlZnJlc2hLZXk7IFxuICAgICAgICAgICAgbGV0IHVybFBhZ2UgPSB0aGlzLiRzdG9yZS5nZXR0ZXJzW1wiZ2V0X3BkZlwiXSh0aGlzLmNvbnRyb2xsZXIpO1xuICAgICAgICAgICAgbGV0IGlkID0gdGhpcy5pZDtcblxuICAgICAgICAgICAgcmV0dXJuIHVybFBhZ2UgKyBcIj9pZD1cIiArIGlkICtcbiAgICAgICAgICAgICAgICBcIiZlbnRpdGU9XCIgKyB0aGlzLmVudGl0ZSArXG4gICAgICAgICAgICAgICAgXCImYWZmaWNoZXByaXg9XCIgKyB0aGlzLmFmZmljaGVwcml4ICtcbiAgICAgICAgICAgICAgICBcIiZhZmZpY2hldHZhPVwiICsgdGhpcy5hZmZpY2hldHZhICsgXG4gICAgICAgICAgICAgICAgXCImYWZmaWNoZXBpZWNlPVwiICsgdGhpcy5hZmZpY2hlcGllY2UgK1xuICAgICAgICAgICAgICAgIFwiJm9yaWVudGF0aW9uPVwiICsgdGhpcy5vcmllbnRhdGlvbiArXG4gICAgICAgICAgICAgICAgXCImcGFnZWZvcm1hdD1cIiArIHRoaXMucGFnZWZvcm1hdCArXG4gICAgICAgICAgICAgICAgXCImYmFja3RvcD1cIiArIHRoaXMuYmFja3RvcCArXG4gICAgICAgICAgICAgICAgXCImYmFja2JvdHRvbT1cIiArIHRoaXMuYmFja2JvdHRvbSArXG4gICAgICAgICAgICAgICAgXCImYmFja2xlZnQ9XCIgKyB0aGlzLmJhY2tsZWZ0ICtcbiAgICAgICAgICAgICAgICBcIiZiYWNrcmlnaHQ9XCIgKyB0aGlzLmJhY2tyaWdodCArXG4gICAgICAgICAgICAgICAgXCImYWZmaWNoZXFyY29kZT1cIiArIHRoaXMuYWZmaWNoZXFyY29kZSArXG4gICAgICAgICAgICAgICAgXCImdGhlbWU9XCIgKyB0aGlzLnRoZW1lICtcbiAgICAgICAgICAgICAgICBcIiZib3JkZXJyYWRpdXM9XCIgKyB0aGlzLmJvcmRlcnJhZGl1cyArXG4gICAgICAgICAgICAgICAgXCImYm9yZGVyd2lkdGg9XCIgKyB0aGlzLmJvcmRlcndpZHRoICtcbiAgICAgICAgICAgICAgICBcIiZ0eXBlPVwiICsgdGhpcy5wZGZUeXBlICsgXG4gICAgICAgICAgICAgICAgXCImX3Q9XCIgKyByZWZyZXNoVHJpZ2dlcjtcbiAgICAgICAgfSxcbiAgICAgICAgaWQoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy4kcm91dGUucGFyYW1zLmlkO1xuICAgICAgICB9LFxuICAgICAgICBjb250cm9sbGVyKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuJHJvdXRlLnBhcmFtcy5jb250cm9sbGVyO1xuICAgICAgICB9LFxuICAgIH0sXG4gICAgZGF0YTogKCkgPT4gKHtcbiAgICAgICAgbG9hZGluZ1BkZjogdHJ1ZSxcbiAgICAgICAgcGFuZWw6IFswXSwgLy8gT3V2cmUgbGUgcHJlbWllciBwYW5lbCAoQ29udGVudSkgcGFyIGTDqWZhdXRcbiAgICAgICAgcmVmcmVzaEtleTogMCxcbiAgICAgICAgXG4gICAgICAgIG9yaWVudGF0aW9uOlwiUFwiLFxuICAgICAgICBwYWdlZm9ybWF0OlwiQTRcIixcbiAgICAgICAgZW50aXRlOiBcIjFcIixcbiAgICAgICAgYmFja3RvcDogMzgsXG4gICAgICAgIGJhY2tib3R0b206IDQ0LFxuICAgICAgICBiYWNrbGVmdDogMTIsXG4gICAgICAgIGJhY2tyaWdodDogMTIsXG4gICAgICAgIGFmZmljaGVwcml4OiBcIjFcIixcbiAgICAgICAgYWZmaWNoZXR2YTogXCIxXCIsXG4gICAgICAgIGFmZmljaGVwaWVjZTpcIjFcIixcbiAgICAgICAgYWZmaWNoZXFyY29kZTogXCIwXCIsXG4gICAgICAgIHRoZW1lOiBcIm9yaWdpbmFsXCIsXG4gICAgICAgIGJvcmRlcnJhZGl1czogNSxcbiAgICAgICAgYm9yZGVyd2lkdGg6IDEsXG4gICAgICAgIHBkZlR5cGU6IFwic3RhbmRhcmRcIixcbiAgICB9KSxcblxuICAgIHdhdGNoOiB7XG4gICAgICAgIHVybFBhZ2VwZGYoKSB7XG4gICAgICAgICAgICAvLyBBZmZpY2hlIGwnw6ljcmFuIGRlIGNoYXJnZW1lbnQgY2hhcXVlIGZvaXMgcXUndW4gcGFyYW3DqHRyZSBjaGFuZ2UgbCdVUkxcbiAgICAgICAgICAgIHRoaXMubG9hZGluZ1BkZiA9IHRydWU7XG4gICAgICAgIH0sXG4gICAgICAgIC8vIFNhdXZlZ2FyZGUgZGVzIHByw6lmw6lyZW5jZXMgbG9jYWxlc1xuICAgICAgICBvcmllbnRhdGlvbih2YWwpIHsgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXCJwcmludF9mb3Jfb3JpZW50YXRpb25cIiwgdmFsKTsgfSxcbiAgICAgICAgcGFnZWZvcm1hdCh2YWwpIHsgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFwicHJpbnRfZm9yX3BhZ2Vmb3JtYXRcIiwgdmFsKTt9LFxuICAgICAgICBlbnRpdGUodmFsKSB7ICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcInByaW50X2Zvcl9lbnRpdGVcIiwgdmFsKTt9LFxuICAgICAgICBiYWNrdG9wKHZhbCkgeyAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXCJwcmludF9mb3JfYmFja3RvcFwiLCB2YWwpO30sXG4gICAgICAgIGJhY2tib3R0b20odmFsKSB7ICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcInByaW50X2Zvcl9iYWNrYm90dG9tXCIsIHZhbCk7fSxcbiAgICAgICAgYmFja2xlZnQodmFsKSB7ICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcInByaW50X2Zvcl9iYWNrbGVmdFwiLCB2YWwpO30sXG4gICAgICAgIGJhY2tyaWdodCh2YWwpIHsgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXCJwcmludF9mb3JfYmFja3JpZ2h0XCIsIHZhbCk7IH0sXG4gICAgICAgIGFmZmljaGVwcml4KHZhbCkgeyBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcInByaW50X2Zvcl9hZmZpY2hlcHJpeFwiLCB2YWwpOyB9LFxuICAgICAgICBhZmZpY2hldHZhKHZhbCkgeyBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcInByaW50X2Zvcl9hZmZpY2hldHZhXCIsIHZhbCk7IH0sXG4gICAgICAgIGFmZmljaGVwaWVjZSh2YWwpIHsgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFwicHJpbnRfZm9yX2FmZmljaGVwaWVjZVwiLCB2YWwpO30sXG4gICAgICAgIGFmZmljaGVxcmNvZGUodmFsKSB7IGxvY2FsU3RvcmFnZS5zZXRJdGVtKFwicHJpbnRfZm9yX2FmZmljaGVxcmNvZGVcIiwgdmFsKTsgfSxcbiAgICAgICAgdGhlbWUodmFsKSB7IGxvY2FsU3RvcmFnZS5zZXRJdGVtKFwicHJpbnRfZm9yX3RoZW1lXCIsIHZhbCk7IH0sXG4gICAgICAgIGJvcmRlcnJhZGl1cyh2YWwpIHsgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXCJwcmludF9mb3JfYm9yZGVycmFkaXVzXCIsIHZhbCk7IH0sXG4gICAgICAgIGJvcmRlcndpZHRoKHZhbCkgeyBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcInByaW50X2Zvcl9ib3JkZXJ3aWR0aFwiLCB2YWwpOyB9LFxuICAgICAgICBwZGZUeXBlKHZhbCkgeyBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcInByaW50X2Zvcl9wZGZUeXBlXCIsIHZhbCk7IH0sXG4gICAgfSxcblxuICAgIG1ldGhvZHM6IHtcbiAgICAgICAgcmFmcmFpY2hpckFwZXJjdSgpIHtcbiAgICAgICAgICAgIC8vIEZvcmNlIGxhIG1pc2Ugw6Agam91ciBkZSBsJ1VSTCBwb3VyIHJlLWfDqW7DqXJlciBsJ2lmcmFtZVxuICAgICAgICAgICAgdGhpcy5yZWZyZXNoS2V5ICs9IDE7XG4gICAgICAgIH1cbiAgICB9LFxuICAgIG1vdW50ZWQoKSB7XG4gICAgICAgIC8vIFJlc3RhdXJhdGlvbiBkZXMgcHLDqWbDqXJlbmNlcyBkZXB1aXMgbGUgbG9jYWxTdG9yYWdlIGF1IGNoYXJnZW1lbnQgaW5pdGlhbFxuICAgICAgICB0aGlzLm9yaWVudGF0aW9uID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJwcmludF9mb3Jfb3JpZW50YXRpb25cIikgPz8gXCJQXCI7XG4gICAgICAgIHRoaXMucGFnZWZvcm1hdCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwicHJpbnRfZm9yX3BhZ2Vmb3JtYXRcIikgPz8gXCJBNFwiO1xuICAgICAgICB0aGlzLmVudGl0ZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwicHJpbnRfZm9yX2VudGl0ZVwiKSA/PyBcIjFcIjtcbiAgICAgICAgdGhpcy5iYWNrdG9wID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJwcmludF9mb3JfYmFja3RvcFwiKSA/PyAzODtcbiAgICAgICAgdGhpcy5iYWNrYm90dG9tID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJwcmludF9mb3JfYmFja2JvdHRvbVwiKSA/PyA0NDtcbiAgICAgICAgdGhpcy5iYWNrbGVmdCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwicHJpbnRfZm9yX2JhY2tsZWZ0XCIpID8/IDEyO1xuICAgICAgICB0aGlzLmJhY2tyaWdodCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwicHJpbnRfZm9yX2JhY2tyaWdodFwiKSA/PyAxMjtcbiAgICAgICAgdGhpcy5hZmZpY2hlcHJpeCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwicHJpbnRfZm9yX2FmZmljaGVwcml4XCIpID8/IFwiMVwiO1xuICAgICAgICB0aGlzLmFmZmljaGV0dmEgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcInByaW50X2Zvcl9hZmZpY2hldHZhXCIpID8/IFwiMVwiO1xuICAgICAgICB0aGlzLmFmZmljaGVwaWVjZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwicHJpbnRfZm9yX2FmZmljaGVwaWVjZVwiKSA/PyBcIjFcIjtcbiAgICAgICAgdGhpcy5hZmZpY2hlcXJjb2RlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJwcmludF9mb3JfYWZmaWNoZXFyY29kZVwiKSA/PyBcIjBcIjtcbiAgICAgICAgdGhpcy50aGVtZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwicHJpbnRfZm9yX3RoZW1lXCIpID8/IFwib3JpZ2luYWxcIjtcbiAgICAgICAgdGhpcy5ib3JkZXJyYWRpdXMgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcInByaW50X2Zvcl9ib3JkZXJyYWRpdXNcIikgPz8gNTtcbiAgICAgICAgdGhpcy5ib3JkZXJ3aWR0aCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwicHJpbnRfZm9yX2JvcmRlcndpZHRoXCIpID8/IDE7XG4gICAgICAgIHRoaXMucGRmVHlwZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwicHJpbnRfZm9yX3BkZlR5cGVcIikgPz8gXCJzdGFuZGFyZFwiO1xuICAgIH0sXG59O1xuPC9zY3JpcHQ+XG5cbjxzdHlsZSBzY29wZWQ+XG4vKiBBbmltYXRpb25zIGV0IHN0eWxlcyBQcmVtaXVtIHBvdXIgbGVzIHBhbm5lYXV4IGQnZXhwYW5zaW9uICovXG4uY3VzdG9tLXBhbmVscyAudi1leHBhbnNpb24tcGFuZWwtaGVhZGVyIHtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2YwZjBmMDtcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuM3MgZWFzZSwgcGFkZGluZyAwLjNzIGVhc2U7XG59XG4uY3VzdG9tLXBhbmVscyAudi1leHBhbnNpb24tcGFuZWwtaGVhZGVyOmhvdmVyIHtcbn1cbi5jdXN0b20tcGFuZWxzIC52LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50X193cmFwIHtcbiAgICBwYWRkaW5nLXRvcDogMjBweDtcbiAgICBwYWRkaW5nLWJvdHRvbTogMjBweDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmO1xufVxuPC9zdHlsZT5cbiIsIjx0ZW1wbGF0ZT5cbiAgPGRpdiBzdHlsZT1cIm1hcmdpbi10b3A6IDYwcHg7IG1hcmdpbi1sZWZ0OiAzN3B4IDsgICAgbWFyZ2luLWJvdHRvbTogNDRweFwiPlxuICAgIDxoMSBjbGFzcz1cImp1c3RpZnktY2VudGVyXCI+e3sgJHQoY29udHJvbGxlcikgfX08L2gxPlxuXG4gICAgPHYtcm93IGNsYXNzPVwianVzdGlmeS1jZW50ZXJcIj5cbiAgICAgIDx2LWNvbCA6Y29scz1cIjEyXCIgOmxnPVwiMTFcIj5cbiAgICAgICAgPHYtYnRuIEBjbGljaz1cImV4Y2VsanNcIj5tb2R1bGUgZXhjZWwgZGUge3sgJHQoY29udHJvbGxlcikgfX08L3YtYnRuPlxuXG4gICAgICAgIDx2LWZpbGUtaW5wdXQgOmxhYmVsPVwiJ2V4Y2VsIGRlICcgKyAkdChjb250cm9sbGVyKVwiIEBjaGFuZ2U9XCJyZWQoJGV2ZW50KVwiIHNob3ctc2l6ZSBjb3VudGVyIGNoaXBzPlxuICAgICAgICA8L3YtZmlsZS1pbnB1dD5cblxuXG5cbiAgICAgICAgPGRpdiByZWY9XCJkb2N1bWVudFwiPlxuICAgICAgICAgIDxwPiogY2hhbXAgb2JsaWdhdG9pcjwvcD5cbiAgICAgICAgICA8dGFibGUgY2xhc3M9XCJwYWxlQmx1ZVJvd3NcIiByZWY9XCJkb2N1bWVudHRhYmxlXCI+XG4gICAgICAgICAgICA8dGhlYWQ+XG4gICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICA8dGggdi1mb3I9XCIodmFsLCBpKSBpbiBoZWFkZXJzXCIgOmtleT1cImlcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIHYtaWY9XCJvYmxpZ2F0b2lyLmluZGV4T2YodmFsLnZhbHVlKSA+IC0xXCIgY2xhc3M9XCJvcmFuZ2UtLXRleHRcIj5cbiAgICAgICAgICAgICAgICAgICAgPHU+IHt7IHZhbC50ZXh0IH19ICo8L3U+XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8c3BhbiB2LWVsc2U+XG4gICAgICAgICAgICAgICAgICAgIHt7IHZhbC50ZXh0IH19XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgIDwvdGhlYWQ+XG5cbiAgICAgICAgICAgIDx0Ym9keT5cbiAgICAgICAgICAgICAgPHRyIHYtZm9yPVwiKHJvdywgbCkgaW4gc2VsZWN0ZWRzX3Nob3dfdGFibGVcIiA6a2V5PVwibFwiPlxuICAgICAgICAgICAgICAgIDx0ZCB2LWZvcj1cIihoZWQsIGopIGluIGhlYWRlcnNcIiA6a2V5PVwialwiIDpjbGFzcz1cInJvd1toZWQudmFsdWVdID09IHVuZGVmaW5lZCA/ICcnIDogcm93W2hlZC52YWx1ZV1bJ2NvbG9yJ11cbiAgICAgICAgICAgICAgICAgIFwiPlxuICAgICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICAgcm93W2hlZC52YWx1ZV0gPT0gdW5kZWZpbmVkID8gXCJcIiA6IHJvd1toZWQudmFsdWVdW1widGV4dFwiXVxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgPC90Ym9keT5cbiAgICAgICAgICA8L3RhYmxlPlxuXG4gICAgICAgICAgPHYtYnRuIEBjbGljaz1cInNlbmRcIiBjb2xvcj1cInN1Y2Nlc3NcIiB2LXNob3c9XCJzZWxlY3RlZHMubGVuZ3RoID4gMFwiIDpkaXNhYmxlZD1cIiF2YWxpZFwiPlxuICAgICAgICAgICAgRW5yZWdpc3RyZXIgPHYtaWNvbj5tZGktY29udGVudC1zYXZlPC92LWljb24+XG4gICAgICAgICAgPC92LWJ0bj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L3YtY29sPlxuICAgICAgPGJyIC8+PGJyIC8+PGJyIC8+PGJyIC8+PGJyIC8+XG4gICAgICA8cD4uPC9wPlxuICAgIDwvdi1yb3c+XG5cbiAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIganVzdGlmeS1jZW50ZXJcIj5cbiAgICAgIDx2LWRpYWxvZyB2LW1vZGVsPVwiZGlhbG9nX2VycmV1clwiIGhpZGUtb3ZlcmxheSBwZXJzaXN0ZW50PlxuICAgICAgICA8di1jYXJkIGNvbG9yPVwiZXJyb3JcIiBkYXJrIGNsYXNzPVwianVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgICA8di1jYXJkLXRleHQgc3R5bGU9XCJ3aWR0aDogbWF4LWNvbnRlbnQ7IG1hcmdpbjogMCBhdXRvXCIgY2xhc3M9XCJqdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICAgICAgaWwgeSBhIGRlcyB2YWxldXJzIGVudHLDqWUgbidlc3QgcGFzIGFwcHJvcHJpw6llIGF1IG1hc3F1ZSBkZSBzYWlzaWUgOlxuICAgICAgICAgICAgPGJyIC8+XG4gICAgICAgICAgICA8aDM+e3sgbWVzc2FnZWVycm9ycyB9fTwvaDM+XG5cbiAgICAgICAgICAgIDx2LWRhdGEtdGFibGUgc3R5bGU9XCJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHdpZHRoOiBtYXgtY29udGVudDsgbWFyZ2luOiAwIGF1dG9cIiBsb2FkaW5nIDpoZWFkZXJzPVwiaGVhZGVyc1wiXG4gICAgICAgICAgICAgIDppdGVtcz1cImRhdGFfZXJyb3JcIiA6aXRlbXMtcGVyLXBhZ2U9XCI1XCIgY2xhc3M9XCJlbGV2YXRpb24tMVwiIGxvY2FsZT1cImZyXCJcbiAgICAgICAgICAgICAgaGlkZS1kZWZhdWx0LWZvb3Rlcj48L3YtZGF0YS10YWJsZT5cblxuICAgICAgICAgIDwvdi1jYXJkLXRleHQ+XG4gICAgICAgICAgPHYtY2FyZC1hY3Rpb25zPlxuICAgICAgICAgICAgPHYtc3BhY2VyPjwvdi1zcGFjZXI+XG4gICAgICAgICAgICA8di1idG4gQGNsaWNrPVwiZGlhbG9nX2VycmV1ciA9IGZhbHNlXCI+XG4gICAgICAgICAgICAgIDx2LWljb24gY29sb3I9XCJvcmFuZ2VcIj5tZGktY2xvc2UtYm94PC92LWljb24+XG4gICAgICAgICAgICA8L3YtYnRuPlxuICAgICAgICAgIDwvdi1jYXJkLWFjdGlvbnM+XG4gICAgICAgIDwvdi1jYXJkPlxuICAgICAgPC92LWRpYWxvZz5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlxuICAgICAgPHYtZGlhbG9nIHYtbW9kZWw9XCJkaWFsb2dfc2hvd1wiIGhpZGUtb3ZlcmxheSBwZXJzaXN0ZW50PlxuICAgICAgICA8di1jYXJkPlxuICAgICAgICAgIDx2LWNhcmQtdGV4dD5cbiAgICAgICAgICAgIDx2LXJvdyBjbGFzcz1cImp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgICAgICAgIDx2LWNvbCBjb2xzPVwiMTJcIiBsZz1cIjZcIiB2LWlmPVwiZGF0YV91cGRhdGUubGVuZ3RoID4gMFwiPlxuICAgICAgICAgICAgICAgIDx2LWRhdGEtdGFibGUgc3R5bGU9XCJkaXNwbGF5OiBpbmxpbmUtYmxvY2tcIiA6aGVhZGVycz1cIltcbiAgICAgICAgICAgICAgICAgIHsgdGV4dDogJ2V0YXQnLCB2YWx1ZTogJ2V0YXQnIH0sXG4gICAgICAgICAgICAgICAgICB7IHRleHQ6ICdwb3VyICcsIHZhbHVlOiAncG91ciAnIH0sXG4gICAgICAgICAgICAgICAgXVwiIDppdGVtcz1cImRhdGFfdXBkYXRlXCIgOml0ZW1zLXBlci1wYWdlPVwiNVwiIGNsYXNzPVwiZWxldmF0aW9uLTFcIiBsb2NhbGU9XCJmclwiIDpmb290ZXItcHJvcHM9XCJ7XG4gICAgICAgICAgICAgICAgICBpdGVtc1BlclBhZ2VUZXh0OiAnw4lsZW1lbnRzIHBhciBwYWdlOicsXG4gICAgICAgICAgICAgICAgICBpdGVtc1BlclBhZ2VBbGw6ICdUb3VzJyxcbiAgICAgICAgICAgICAgICAgIG5leHRQYWdlOiAnUGFnZSBzdWl2YW50ZScsXG4gICAgICAgICAgICAgICAgICBwcmV2UGFnZTogJ1BhZ2UgcHLDqWPDqWRlbnRlJyxcbiAgICAgICAgICAgICAgICAgIGZpcnN0UGFnZTogJ1ByZW1pw6hyZSBwYWdlJyxcbiAgICAgICAgICAgICAgICAgIGxhc3RQYWdlOiAnRGVybmnDqHJlIHBhZ2UnLFxuICAgICAgICAgICAgICAgICAgcGFnZVRleHQ6ICd7MH0tezF9IGRlIHsyfScsXG4gICAgICAgICAgICAgICAgfVwiPjwvdi1kYXRhLXRhYmxlPjwvdi1jb2w+XG5cbiAgICAgICAgICAgICAgPHYtY29sIGNvbHM9XCIxMlwiIGxnPVwiNlwiIHYtaWY9XCJkYXRhX2FkZC5sZW5ndGggPiAwXCI+XG4gICAgICAgICAgICAgICAgPHYtZGF0YS10YWJsZSBzdHlsZT1cImRpc3BsYXk6IGlubGluZS1ibG9ja1wiIDpoZWFkZXJzPVwiW1xuICAgICAgICAgICAgICAgICAgeyB0ZXh0OiAnZXRhdCcsIHZhbHVlOiAnZXRhdCcgfSxcbiAgICAgICAgICAgICAgICAgIHsgdGV4dDogJ3BvdXIgJywgdmFsdWU6ICdwb3VyICcgfSxcbiAgICAgICAgICAgICAgICBdXCIgOml0ZW1zPVwiZGF0YV9hZGRcIiA6aXRlbXMtcGVyLXBhZ2U9XCI1XCIgY2xhc3M9XCJlbGV2YXRpb24tMVwiIGxvY2FsZT1cImZyXCIgOmZvb3Rlci1wcm9wcz1cIntcbiAgICAgICAgICAgICAgICAgIGl0ZW1zUGVyUGFnZVRleHQ6ICfDiWxlbWVudHMgcGFyIHBhZ2U6JyxcbiAgICAgICAgICAgICAgICAgIGl0ZW1zUGVyUGFnZUFsbDogJ1RvdXMnLFxuICAgICAgICAgICAgICAgICAgbmV4dFBhZ2U6ICdQYWdlIHN1aXZhbnRlJyxcbiAgICAgICAgICAgICAgICAgIHByZXZQYWdlOiAnUGFnZSBwcsOpY8OpZGVudGUnLFxuICAgICAgICAgICAgICAgICAgZmlyc3RQYWdlOiAnUHJlbWnDqHJlIHBhZ2UnLFxuICAgICAgICAgICAgICAgICAgbGFzdFBhZ2U6ICdEZXJuacOocmUgcGFnZScsXG4gICAgICAgICAgICAgICAgICBwYWdlVGV4dDogJ3swfS17MX0gZGUgezJ9JyxcbiAgICAgICAgICAgICAgICB9XCI+PC92LWRhdGEtdGFibGU+XG4gICAgICAgICAgICAgIDwvdi1jb2w+XG4gICAgICAgICAgICA8L3Ytcm93PlxuICAgICAgICAgIDwvdi1jYXJkLXRleHQ+XG4gICAgICAgICAgPHYtY2FyZC1hY3Rpb25zPlxuICAgICAgICAgICAgPHYtc3BhY2VyPjwvdi1zcGFjZXI+XG4gICAgICAgICAgICA8di1idG4gQGNsaWNrPVwidGVybWluZSgpXCI+XG4gICAgICAgICAgICAgIDx2LWljb24+bWRpLWNsb3NlLWJveDwvdi1pY29uPlxuICAgICAgICAgICAgPC92LWJ0bj5cbiAgICAgICAgICA8L3YtY2FyZC1hY3Rpb25zPlxuICAgICAgICA8L3YtY2FyZD5cbiAgICAgIDwvdi1kaWFsb2c+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cbjxzY3JpcHQ+XG5cbmltcG9ydCBFeHBvcnRKc29uRXhjZWwgZnJvbSBcImpzLWV4cG9ydC1leGNlbFwiO1xuaW1wb3J0IHJlYWRYbHN4RmlsZSBmcm9tIFwicmVhZC1leGNlbC1maWxlXCI7XG5pbXBvcnQgYXhpb3MgZnJvbSBcImF4aW9zXCI7XG5pbXBvcnQgcm91dGVyIGZyb20gXCJAL3JvdXRlclwiO1xuY29uc3QgQWp2ID0gcmVxdWlyZShcImFqdlwiKTtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc2VsZWN0ZWRzOiBbXSxcbiAgICAgIHNlbGVjdGVkc19zaG93X3RhYmxlOiBbXSxcbiAgICAgIGRpYWxvZ19lcnJldXI6IGZhbHNlLFxuICAgICAgZGF0YV9hZGQ6IFtdLFxuICAgICAgZGF0YV91cGRhdGU6IFtdLFxuICAgICAgZGF0YV9lcnJvcjogW10sXG4gICAgICBtZXNzYWdlZXJyb3JzOiBcIlwiLFxuICAgICAgdmFsaWQ6IGZhbHNlLFxuICAgICAgZGlhbG9nX3Nob3c6IGZhbHNlLFxuICAgICAgZXhjZWxDb2x1bW5zOiBbXSwgLy8g2KPYs9mF2KfYoSDYp9mE2KPYudmF2K/YqSDYp9mE2YXZiNis2YjYr9ipINmB2Yog2YXZhNmBIEV4Y2VsINin2YTZhdix2YHZiNi5XG4gICAgfTtcbiAgfSxcblxuICBjb21wdXRlZDoge1xuICAgIGNvbnRyb2xsZXIoKSB7XG4gICAgICByZXR1cm4gdGhpcy4kcm91dGUucGFyYW1zLmNvbnRyb2xsZXI7XG4gICAgfSxcblxuICAgIC8vIHNlbGVjdGVkcygpIHtcbiAgICAvLyAgIHJldHVybiB0aGlzLiRzdG9yZS5nZXR0ZXJzW1wic2hvd19kYXRhL2dfc2VsZWN0ZWRcIl0oe1xuICAgIC8vICAgICBjb250cm9sbGVyX3Jvb3Q6IHRoaXMuY29udHJvbGxlcixcbiAgICAvLyAgIH0pO1xuICAgIC8vIH0sXG5cbiAgICBuYW1lc2V4cGFuZGVkKCkge1xuICAgICAgbGV0IGNvbnRyb2xsZXIgPSB0aGlzLmNvbnRyb2xsZXI7XG5cbiAgICAgIGxldCBleHBhbmRlZCA9IHRoaXMuJHN0b3JlLmdldHRlcnNbXCJzaG93X2RhdGEvZ19leHBhbmRlZFwiXSh7XG4gICAgICAgIGNvbnRyb2xsZXJfcm9vdDogY29udHJvbGxlcixcbiAgICAgIH0pO1xuXG4gICAgICBsZXQgbmFtZXNleHBhbmRlZCA9IFtdO1xuICAgICAgZm9yIChjb25zdCBrZXkgaW4gZXhwYW5kZWQpIHtcbiAgICAgICAgbmFtZXNleHBhbmRlZC5wdXNoKGV4cGFuZGVkW2tleV1bXCJjb250cm9sbGVyX2F0dGFjaFwiXSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBuYW1lc2V4cGFuZGVkO1xuICAgIH0sXG4gICAgb2JsaWdhdG9pcigpIHtcbiAgICAgIGxldCBjb250cm9sbGVyID0gdGhpcy5jb250cm9sbGVyO1xuICAgICAgbGV0IG9ibGlnYXRvaXIgPSB0aGlzLiRzdG9yZS5nZXR0ZXJzW1wic2hvd19kYXRhL2dfb2JsaWdhdG9pclwiXSh7XG4gICAgICAgIGNvbnRyb2xsZXJfcm9vdDogY29udHJvbGxlcixcbiAgICAgIH0pO1xuXG4gICAgICAvLyBjb25zb2xlLmxvZyhvYmxpZ2F0b2lyKTtcbiAgICAgIHJldHVybiBvYmxpZ2F0b2lyO1xuICAgIH0sXG5cbiAgICBoZWFkZXJzKCkge1xuICAgICAgbGV0IGNvbnRyb2xsZXIgPSB0aGlzLmNvbnRyb2xsZXI7XG5cbiAgICAgIC8vINin2YTYrdi12YjZhCDYudmE2Ykg2KzZhdmK2Lkg2KfZhNmAIHNjaGVtYXMg2YTZhNiq2K3ZgtmCINmF2YYg2K7Yp9i12YrYqSBpc0NhbGN1bGF0ZWRcbiAgICAgIGxldCBzY2hlbWFzID0gdGhpcy4kc3RvcmUuZ2V0dGVyc1tcInNob3dfZGF0YS9nX3NjaGVtYXNcIl0oe1xuICAgICAgICBjb250cm9sbGVyX3Jvb3Q6IGNvbnRyb2xsZXIsXG4gICAgICB9KSB8fCBbXTtcblxuICAgICAgLy8g2KfYs9iq2K7Ysdin2Kwg2KPYs9mF2KfYoSDYp9mE2K3ZgtmI2YQg2KfZhNiq2Yog2YTZh9inIGlzQ2FsY3VsYXRlZDogdHJ1ZVxuICAgICAgLy8g2YfYsNmHINin2YTYo9i52YXYr9ipINmK2KzYqCDYo9mGINiq2YPZiNmGINmF2K7ZgdmK2Kkg2K/Yp9im2YXYp9mLINio2LrYtiDYp9mE2YbYuNixINi52YYg2YjYrNmI2K/Zh9inINmB2YogRXhjZWxcbiAgICAgIGxldCBjYWxjdWxhdGVkRmllbGRzID0gW107XG4gICAgICBzY2hlbWFzLmZvckVhY2goKHNjaGVtYSkgPT4ge1xuICAgICAgICBpZiAoc2NoZW1hLmlzQ2FsY3VsYXRlZCA9PT0gdHJ1ZSkge1xuICAgICAgICAgIGNhbGN1bGF0ZWRGaWVsZHMucHVzaChzY2hlbWEubmFtZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBsZXQgbm90X2FmZmljaGVzID0gW107XG4gICAgICBub3RfYWZmaWNoZXMgPSB0aGlzLiRzdG9yZS5nZXR0ZXJzW1wic2hvd19kYXRhL2dfbm90X2FmZmljaGVcIl0oe1xuICAgICAgICBjb250cm9sbGVyX3Jvb3Q6IGNvbnRyb2xsZXIsXG4gICAgICB9KTtcblxuICAgICAgLy8g2KfZhNmF2YbYt9mCINin2YTYrNiv2YrYrzpcbiAgICAgIC8vIDEuINin2YTYo9i52YXYr9ipINin2YTZhdit2LPZiNio2Kk6INiv2KfYptmF2KfZiyDZhdiu2YHZitipICjYqNi62LYg2KfZhNmG2LjYsSDYudmGINmI2KzZiNiv2YfYpyDZgdmKIEV4Y2VsKVxuICAgICAgLy8gMi4g2KfZhNij2LnZhdiv2Kkg2KfZhNmF2K7ZgdmK2Kkg2KfZhNi52KfYr9mK2Kk6INmG2LjZh9ix2YfYpyDZgdmC2Lcg2KXYsNinINmD2KfZhtiqINmF2YjYrNmI2K/YqSDZgdmKINmF2YTZgSBFeGNlbCDYp9mE2YXYsdmB2YjYuVxuICAgICAgbGV0IGZpbHRlcmVkX25vdF9hZmZpY2hlcyA9IFsuLi5jYWxjdWxhdGVkRmllbGRzXTsgLy8g2KfZhNij2LnZhdiv2Kkg2KfZhNmF2K3Ys9mI2KjYqSDYr9in2KbZhdin2Ysg2YXYrtmB2YrYqVxuXG4gICAgICBpZiAodGhpcy5leGNlbENvbHVtbnMubGVuZ3RoID4gMCkge1xuICAgICAgICAvLyDYqNi52K8g2LHZgdi5INmF2YTZgSBFeGNlbDog2YbYrtmB2Yog2YHZgti3INin2YTYo9i52YXYr9ipINin2YTYudin2K/ZitipINin2YTZhdiu2YHZitipINi62YrYsSDYp9mE2YXZiNis2YjYr9ipINmB2Yog2KfZhNmF2YTZgVxuICAgICAgICBub3RfYWZmaWNoZXMuZm9yRWFjaCgoZmllbGQpID0+IHtcbiAgICAgICAgICBpZiAoIXRoaXMuZXhjZWxDb2x1bW5zLmluY2x1ZGVzKGZpZWxkKSkge1xuICAgICAgICAgICAgZmlsdGVyZWRfbm90X2FmZmljaGVzLnB1c2goZmllbGQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyDZgtio2YQg2LHZgdi5INin2YTZhdmE2YE6INmG2K7ZgdmKINis2YXZiti5INin2YTYo9i52YXYr9ipINin2YTZhdiu2YHZitipICsg2KfZhNmF2K3Ys9mI2KjYqVxuICAgICAgICBmaWx0ZXJlZF9ub3RfYWZmaWNoZXMgPSBbLi4ubm90X2FmZmljaGVzLCAuLi5jYWxjdWxhdGVkRmllbGRzXTtcbiAgICAgIH1cblxuICAgICAgbGV0IGhlYWRlcnMgPSB0aGlzLiRzdG9yZS5nZXR0ZXJzW1wic2hvd19kYXRhL2dfaGVhZGVyc1wiXSh7XG4gICAgICAgIGNvbnRyb2xsZXJfcm9vdDogY29udHJvbGxlcixcbiAgICAgICAgbmFtZXNleHBhbmRlZDogdGhpcy5uYW1lc2V4cGFuZGVkLFxuICAgICAgICBub3RhZmZpY2hlOiBmaWx0ZXJlZF9ub3RfYWZmaWNoZXMsXG4gICAgICAgIG5hbWVfaW5wdXRfZmlsZXM6IFtdLFxuICAgICAgICBvYmxpZ2F0b2lyOiB0aGlzLm9ibGlnYXRvaXIsXG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIGhlYWRlcnM7XG4gICAgfSxcbiAgfSxcblxuICBtZXRob2RzOiB7XG4gICAgcmVkKGV2KSB7XG4gICAgICByZWFkWGxzeEZpbGUoZXYpLnRoZW4oKHJvd3MpID0+IHtcbiAgICAgICAgLy8g2KfZhNit2LXZiNmEINi52YTZiSDYo9iz2YXYp9ihINin2YTYo9i52YXYr9ipINmF2YYg2YXZhNmBIEV4Y2VsXG4gICAgICAgIGxldCBoZWFkZXJzID0gcm93c1swXTtcblxuICAgICAgICAvLyDYp9mE2K3YtdmI2YQg2LnZhNmJINmC2KfYptmF2Kkg2KfZhNij2LnZhdiv2Kkg2KfZhNmF2K3Ys9mI2KjYqSDZhNiq2KzYp9mH2YTZh9inXG4gICAgICAgIGxldCBjb250cm9sbGVyID0gdGhpcy5jb250cm9sbGVyO1xuICAgICAgICBsZXQgc2NoZW1hcyA9IHRoaXMuJHN0b3JlLmdldHRlcnNbXCJzaG93X2RhdGEvZ19zY2hlbWFzXCJdKHtcbiAgICAgICAgICBjb250cm9sbGVyX3Jvb3Q6IGNvbnRyb2xsZXIsXG4gICAgICAgIH0pIHx8IFtdO1xuXG4gICAgICAgIGxldCBjYWxjdWxhdGVkRmllbGRzID0gW107XG4gICAgICAgIHNjaGVtYXMuZm9yRWFjaCgoc2NoZW1hKSA9PiB7XG4gICAgICAgICAgaWYgKHNjaGVtYS5pc0NhbGN1bGF0ZWQgPT09IHRydWUpIHtcbiAgICAgICAgICAgIGNhbGN1bGF0ZWRGaWVsZHMucHVzaChzY2hlbWEubmFtZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICAvLyDYqti12YHZitipINij2LPZhdin2KEg2KfZhNij2LnZhdiv2Kk6INil2LLYp9mE2Kkg2KfZhNij2LnZhdiv2Kkg2KfZhNmF2K3Ys9mI2KjYqSDZhtmH2KfYptmK2KfZi1xuICAgICAgICBsZXQgZmlsdGVyZWRIZWFkZXJzID0gaGVhZGVycy5maWx0ZXIoaGVhZGVyID0+ICFjYWxjdWxhdGVkRmllbGRzLmluY2x1ZGVzKGhlYWRlcikpO1xuICAgICAgICB0aGlzLmV4Y2VsQ29sdW1ucyA9IGZpbHRlcmVkSGVhZGVyczsgLy8g2K3Zgdi4INmB2YLYtyDYp9mE2KPYudmF2K/YqSDYp9mE2LnYp9iv2YrYqVxuXG4gICAgICAgIGxldCBkYXRhID0gW107XG4gICAgICAgIGxldCBkYXRhX3Nob3dfdGFibGUgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaW5kZXggPSAyOyBpbmRleCA8IHJvd3MubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgICAgbGV0IGQgPSB7fTtcbiAgICAgICAgICBsZXQgZDIgPSB7fTtcbiAgICAgICAgICBjb25zdCByb3cgPSByb3dzW2luZGV4XTtcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGhlYWRlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGtleSA9IGhlYWRlcnNbaV07XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHJvd1tpXTtcblxuICAgICAgICAgICAgLy8g2KrYrNin2YfZhCDYp9mE2KjZitin2YbYp9iqINmB2Yog2KfZhNij2LnZhdiv2Kkg2KfZhNmF2K3Ys9mI2KjYqSDZhtmH2KfYptmK2KfZi1xuICAgICAgICAgICAgaWYgKGNhbGN1bGF0ZWRGaWVsZHMuaW5jbHVkZXMoa2V5KSkge1xuICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZFtrZXldID0gdmFsdWU7XG4gICAgICAgICAgICBkMltrZXldID0ge307XG4gICAgICAgICAgICBkMltrZXldW1widGV4dFwiXSA9IHZhbHVlO1xuICAgICAgICAgICAgZDJba2V5XVtcImNvbG9yXCJdID0gXCJcIjtcbiAgICAgICAgICB9XG4gICAgICAgICAgZGF0YS5wdXNoKGQpO1xuICAgICAgICAgIGRhdGFfc2hvd190YWJsZS5wdXNoKGQyKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNlbGVjdGVkc19zaG93X3RhYmxlID0gZGF0YV9zaG93X3RhYmxlO1xuICAgICAgICB0aGlzLnNlbGVjdGVkcyA9IGRhdGE7XG4gICAgICAgIHRoaXMudmFsaWRhdGUoZGF0YSk7XG5cbiAgICAgICAgLy8gYHJvd3NgIGlzIGFuIGFycmF5IG9mIHJvd3NcbiAgICAgICAgLy8gZWFjaCByb3cgYmVpbmcgYW4gYXJyYXkgb2YgY2VsbHMuXG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgdmFsaWRhdGUoZGF0YSkge1xuICAgICAgdGhpcy5zY2hlbWFzX3ZhbGlkYXRlKGRhdGEpO1xuICAgIH0sXG4gICAgc2NoZW1hc192YWxpZGF0ZShkYXRhKSB7XG4gICAgICBsZXQgY29udHJvbGxlciA9IHRoaXMuY29udHJvbGxlcjtcblxuICAgICAgbGV0IHNjaGVtYXMgPSBbXTtcbiAgICAgIHNjaGVtYXMgPSB0aGlzLiRzdG9yZS5nZXR0ZXJzW1wic2hvd19kYXRhL2dfc2NoZW1hc1wiXSh7XG4gICAgICAgIGNvbnRyb2xsZXJfcm9vdDogY29udHJvbGxlcixcbiAgICAgIH0pO1xuXG4gICAgICBsZXQgcHJvcGVydGllcyA9IHt9O1xuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHNjaGVtYXMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgIGNvbnN0IHNjaGVtYSA9IHNjaGVtYXNbaW5kZXhdO1xuICAgICAgICBjb25zdCBwcm9wZXJ0aWVfbmFtZSA9IHNjaGVtYVtcImZyb21cIl07XG5cbiAgICAgICAgbGV0IHNjaGVtYV92YWxpZGF0ZSA9IHt9O1xuICAgICAgICBzY2hlbWFfdmFsaWRhdGVbXCJ0eXBlXCJdID0gc2NoZW1hW1widHlwZVZhbGlkYXRlXCJdO1xuICAgICAgICBzY2hlbWFfdmFsaWRhdGVbXCJudWxsYWJsZVwiXSA9IHRydWU7XG4gICAgICAgIGlmIChzY2hlbWFbXCJwYXR0ZXJuVmFsaWRhdGVcIl0gIT0gZmFsc2UpIHtcbiAgICAgICAgICBzY2hlbWFfdmFsaWRhdGVbXCJwYXR0ZXJuXCJdID0gc2NoZW1hW1wicGF0dGVyblZhbGlkYXRlXCJdWzBdO1xuICAgICAgICB9XG4gICAgICAgIHByb3BlcnRpZXNbcHJvcGVydGllX25hbWVdID0gc2NoZW1hX3ZhbGlkYXRlO1xuICAgICAgfVxuXG4gICAgICBsZXQgc2ggPSB7XG4gICAgICAgIHR5cGU6IFwib2JqZWN0XCIsXG4gICAgICAgIHByb3BlcnRpZXM6IHByb3BlcnRpZXMsXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBhanYgPSBuZXcgQWp2KHsgYWxsRXJyb3JzOiB0cnVlIH0pOyAvLyBvcHRpb25zIGNhbiBiZSBwYXNzZWQsIGUuZy4ge2FsbEVycm9yczogdHJ1ZX1cblxuICAgICAgY29uc3Qgc2NoZW1hID0ge1xuICAgICAgICB0eXBlOiBcImFycmF5XCIsXG4gICAgICAgIGl0ZW1zOiBzaCxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHZhbGlkYXRlID0gYWp2LmNvbXBpbGUoc2NoZW1hKTtcblxuICAgICAgdGhpcy52YWxpZCA9IHZhbGlkYXRlKGRhdGEpO1xuICAgICAgY29uc29sZS5sb2coc2NoZW1hKVxuICAgICAgY29uc29sZS5sb2codGhpcy52YWxpZCk7XG4gICAgICBpZiAoIXRoaXMudmFsaWQpIHtcbiAgICAgICAgbGV0IGVycm9ycyA9IHZhbGlkYXRlLmVycm9ycztcbiAgICAgICAgZXJyb3JzLmZvckVhY2goKGVycm9yKSA9PiB7XG4gICAgICAgICAgbGV0IGRhdGFQYXRoID0gZXJyb3IuZGF0YVBhdGg7XG4gICAgICAgICAgbGV0IFhZID0gdGhpcy5jb29yZG9ubmVlcyhkYXRhUGF0aCk7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZHNfc2hvd190YWJsZVtYWVswXV1bWFlbMV1dW1wiY29sb3JcIl0gPSBcIndoaXRlLS10ZXh0IHJlZCBkYXJrZW4tMiB0ZXh0LWNlbnRlciBmb250LXdlaWdodC1ib2xkXCI7XG5cblxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGNvb3Jkb25uZWVzKGRhdGFQYXRoKSB7XG4gICAgICBsZXQgWCA9IGRhdGFQYXRoLnNwbGl0KFwiLlwiKVsxXTtcbiAgICAgIGxldCBZID0gcGFyc2VJbnQoXG4gICAgICAgIGRhdGFQYXRoLnNwbGl0KFwiLlwiKVswXS5yZXBsYWNlQWxsKFwiW1wiLCBcIlwiKS5yZXBsYWNlQWxsKFwiXVwiLCBcIlwiKSxcbiAgICAgICAgMTBcbiAgICAgICk7XG4gICAgICByZXR1cm4gW1ksIFhdO1xuICAgIH0sXG5cbiAgICBleGNlbGpzKCkge1xuICAgICAgbGV0IHNoZWV0aGVhZGVyID0gW107XG4gICAgICBsZXQgc2hlZXRoZWFkZXJ2YWx1ZSA9IFtdO1xuICAgICAgLy8gIGxldCBkYXRhc2VsZWN0ZWRzPSB0aGlzLnNlbGVjdGVkc1xuICAgICAgLy9jb25zb2xlLmxvZyh0aGlzLnNlbGVjdGVkcyk7XG4gICAgICBsZXQgcm93ID0ge307XG4gICAgICBsZXQgcm93ZXhlbXBsZSA9IHt9O1xuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHRoaXMuaGVhZGVycy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IHRoaXMuaGVhZGVyc1tpbmRleF07XG4gICAgICAgIGlmIChlbGVtZW50LnZhbHVlICE9IFwiaWRcIiAmJiBlbGVtZW50LnZhbHVlICE9IFwiSURcIikge1xuICAgICAgICAgIHNoZWV0aGVhZGVyLnB1c2goZWxlbWVudC52YWx1ZSk7XG4gICAgICAgICAgc2hlZXRoZWFkZXJ2YWx1ZS5wdXNoKGVsZW1lbnQudmFsdWUpO1xuXG4gICAgICAgICAgcm93W2VsZW1lbnQudmFsdWVdID0gZWxlbWVudC50ZXh0O1xuICAgICAgICAgIHJvd2V4ZW1wbGVbZWxlbWVudC52YWx1ZV0gPSBcImFqb3V0ZXIgLi5cIjtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB2YXIgb3B0aW9uID0ge307XG4gICAgICBsZXQgbmFtZWNvbnRyb2xsZXIgPSB0aGlzLmNvbnRyb2xsZXI7XG4gICAgICBvcHRpb24uZmlsZU5hbWUgPSBcIm1vZHVsZV9cIiArIG5hbWVjb250cm9sbGVyO1xuXG4gICAgICBvcHRpb24uZGF0YXMgPSBbXG4gICAgICAgIHtcbiAgICAgICAgICBzaGVldE5hbWU6IFwibW9kdWxlX1wiICsgbmFtZWNvbnRyb2xsZXIsXG4gICAgICAgICAgLy8gICBzaGVldEZpbHRlcjogWyBcIm9uZVwiLFwidHdvXCJdLFxuICAgICAgICAgIC8vIHNoZWV0SGVhZGVyOiBbIFwib25lXCIsXCJ0d29cIl0sXG4gICAgICAgICAgc2hlZXRIZWFkZXI6IHNoZWV0aGVhZGVyLFxuICAgICAgICAgIHNoZWV0RmlsdGVyOiBzaGVldGhlYWRlcnZhbHVlLFxuICAgICAgICAgIC8vIGNvbHVtbldpZHRoczogWzIwLCAyMF0sXG4gICAgICAgICAgc2hlZXREYXRhOiBbcm93LCByb3dleGVtcGxlXSxcbiAgICAgICAgfSxcbiAgICAgIF07XG5cbiAgICAgIHZhciB0b0V4Y2VsID0gbmV3IEV4cG9ydEpzb25FeGNlbChvcHRpb24pOyAvL25ld1xuICAgICAgdG9FeGNlbC5zYXZlRXhjZWwoKTtcbiAgICB9LFxuICAgIHNlbmQoKSB7XG4gICAgICAvL3Nob3dcbiAgICAgIHRoaXMuJHN0b3JlLmNvbW1pdChcImRpYWxvZy9zZXRfZGlhbG9nX2J0bl9zZW5kXCIsIHsgZmxhZzogdHJ1ZSB9KTtcblxuICAgICAgbGV0IHN0b3JlID0gdGhpcy4kc3RvcmU7XG5cbiAgICAgIHZhciBqc29uX2FyciA9IEpTT04uc3RyaW5naWZ5KHRoaXMuc2VsZWN0ZWRzKTtcblxuICAgICAgY29uc3QgZm9ybWRhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICAgIGZvcm1kYXRhLmFwcGVuZChcImRhdGFfbGlzdF9leGNlbFwiLCBqc29uX2Fycik7XG4gICAgICBmb3JtZGF0YS5hcHBlbmQoXCJuYW1lX2NvbnRyb2xsZXJcIiwgdGhpcy5jb250cm9sbGVyKTtcbiAgICAgIGxldCB1cmxQYWdlID0gdGhpcy4kc3RvcmUuZ2V0dGVyc1tcImdldF9pbXBvcnRleGNlbFwiXSh0aGlzLmNvbnRyb2xsZXIpO1xuXG4gICAgICBheGlvc1xuICAgICAgICAucG9zdCh1cmxQYWdlLCBmb3JtZGF0YSwge1xuICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgIEF1dGhvcml6YXRpb246IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiSldUVG9rZW5cIiksXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgc3RvcmUuY29tbWl0KFwiZGlhbG9nL3NldF9kaWFsb2dfYnRuX3NlbmRcIiwgeyBmbGFnOiBmYWxzZSB9KTtcbiAgICAgICAgICB0aGlzLmRpYWxvZ19zaG93ID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLmRhdGFfYWRkID0gcmVzcG9uc2UuZGF0YS5hZGQ7XG4gICAgICAgICAgdGhpcy5kYXRhX3VwZGF0ZSA9IHJlc3BvbnNlLmRhdGEudXBkYXRlO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgICAgc3RvcmUuY29tbWl0KFwiZGlhbG9nL3NldF9kaWFsb2dfYnRuX3NlbmRcIiwgeyBmbGFnOiBmYWxzZSB9KTtcbiAgICAgICAgICB0aGlzLmRpYWxvZ19lcnJldXIgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuZGF0YV9hZGQgPSBlcnJvci5yZXNwb25zZS5kYXRhLmFkZDtcbiAgICAgICAgICB0aGlzLmRhdGFfdXBkYXRlID0gZXJyb3IucmVzcG9uc2UuZGF0YS51cGRhdGU7XG4gICAgICAgICAgdGhpcy5kYXRhX2Vycm9yID0gZXJyb3IucmVzcG9uc2UuZGF0YS5lcnJvcjtcbiAgICAgICAgICB0aGlzLm1lc3NhZ2VlcnJvcnMgPSBlcnJvci5yZXNwb25zZS5kYXRhLm1lc3NhZ2VlcnJvcnM7XG5cbiAgICAgICAgICBjb25zb2xlLmxvZyhlcnJvci5yZXNwb25zZS5kYXRhKTtcbiAgICAgICAgICBjb25zb2xlLmxvZyhlcnJvci5yZXNwb25zZS5zdGF0dXMpO1xuICAgICAgICAgIGNvbnNvbGUubG9nKGVycm9yLnJlc3BvbnNlLmhlYWRlcnMpO1xuICAgICAgICAgIGNvbnNvbGUubG9nKFwiRXJyb3JcIiwgZXJyb3IubWVzc2FnZSk7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihcImVycm9yIHRvIFBPU1QgZGF0YSA9PlwiICsgZXJyb3IpO1xuICAgICAgICB9KTtcbiAgICB9LFxuICAgIHRlcm1pbmUoKSB7XG4gICAgICB0aGlzLmRpYWxvZ19zaG93ID0gZmFsc2U7XG4gICAgICBsZXQgdG8gPSB0aGlzLmNvbnRyb2xsZXIgKyBcIl9zaG93XCI7XG4gICAgICByb3V0ZXIucHVzaCh7IG5hbWU6IHRvIH0pO1xuICAgIH0sXG4gIH0sXG59O1xuPC9zY3JpcHQ+XG5cblxuXG5cblxuPHN0eWxlPlxudGFibGUucGFsZUJsdWVSb3dzIHtcbiAgZm9udC1mYW1pbHk6IFwiVGltZXMgTmV3IFJvbWFuXCIsIFRpbWVzLCBzZXJpZjtcbiAgYm9yZGVyOiAxcHggc29saWQgI2ZmZmZmZjtcblxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XG4gIG1hcmdpbjogMjBweCBhdXRvO1xuICB3aWR0aDogOTAlO1xufVxuXG50YWJsZS5wYWxlQmx1ZVJvd3MgdGQsXG50YWJsZS5wYWxlQmx1ZVJvd3MgdGgge1xuICBib3JkZXI6IDFweCBzb2xpZCAjZmZmZmZmO1xuICBwYWRkaW5nOiAzcHggMnB4O1xufVxuXG50YWJsZS5wYWxlQmx1ZVJvd3MgdGJvZHkgdGQge1xuICBmb250LXNpemU6IDEzcHg7XG59XG5cbnRhYmxlLnBhbGVCbHVlUm93cyB0cjpudGgtY2hpbGQoZXZlbikge1xuICBiYWNrZ3JvdW5kOiAjZDBlNGY1O1xufVxuXG50YWJsZS5wYWxlQmx1ZVJvd3MgdGhlYWQge1xuICBiYWNrZ3JvdW5kOiAjMGI2ZmE0O1xuICBib3JkZXItYm90dG9tOiA1cHggc29saWQgI2ZmZmZmZjtcbn1cblxudGFibGUucGFsZUJsdWVSb3dzIHRoZWFkIHRoIHtcbiAgZm9udC1zaXplOiAxM3B4O1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgY29sb3I6ICNmZmZmZmY7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCAjZmZmZmZmO1xufVxuXG50YWJsZS5wYWxlQmx1ZVJvd3MgdGhlYWQgdGg6Zmlyc3QtY2hpbGQge1xuICBib3JkZXItbGVmdDogbm9uZTtcbn1cblxudGFibGUucGFsZUJsdWVSb3dzIHRmb290IHtcbiAgZm9udC1zaXplOiAxM3B4O1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgY29sb3I6ICMzMzMzMzM7XG4gIGJhY2tncm91bmQ6ICNkMGU0ZjU7XG4gIGJvcmRlci10b3A6IDNweCBzb2xpZCAjNDQ0NDQ0O1xufVxuXG50YWJsZS5wYWxlQmx1ZVJvd3MgdGZvb3QgdGQge1xuICBmb250LXNpemU6IDEzcHg7XG59XG48L3N0eWxlPlxuIiwiXG4ucGFnZS1sb2dpbiB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgaGVpZ2h0OiAxMDB2aDtcbiAgd2lkdGg6IDEwMHZ3O1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmN2ZhO1xufVxuXG4uYW5pbWF0ZWQtYmFja2dyb3VuZCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICB6LWluZGV4OiAwO1xuICBhbmltYXRpb246IGdyYWRpZW50U2hpZnQgMjBzIGVhc2UgaW5maW5pdGU7XG59XG5cbkBrZXlmcmFtZXMgZ3JhZGllbnRTaGlmdCB7XG4gIDAlIHtcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwJSA1MCU7XG4gIH1cblxuICA1MCUge1xuICAgIGJhY2tncm91bmQtcG9zaXRpb246IDEwMCUgNTAlO1xuICB9XG5cbiAgMTAwJSB7XG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogMCUgNTAlO1xuICB9XG59XG5cbi5sb2dpbi1jb250YWluZXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDE7XG59XG5cbi8qIExlZnQgUGFuZWwgKi9cbi5sZWZ0LXBhbmVsIHtcbiAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpO1xuICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMTBweCk7XG4gIHBhZGRpbmc6IDQwcHg7XG59XG5cbi5icmFuZGluZy13cmFwcGVyIHtcbiAgbWF4LXdpZHRoOiA0NTBweDtcbn1cblxuLmxvZ28tYXZhdGFyIHtcbiAgYm9yZGVyOiAzcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpO1xuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4zcyBlYXNlO1xuXG4gICY6aG92ZXIge1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMS4wNSk7XG4gIH1cbn1cblxuLyogUmlnaHQgUGFuZWwgKi9cbi5yaWdodC1wYW5lbCB7XG4gIHBhZGRpbmc6IDIwcHg7XG59XG5cbi5sb2dpbi1jYXJkIHtcbiAgd2lkdGg6IDEwMCU7XG4gIG1heC13aWR0aDogNDAwcHg7XG4gIGJvcmRlci1yYWRpdXM6IDE2cHggIWltcG9ydGFudDtcbiAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjk2KSAhaW1wb3J0YW50O1xuICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMjBweCk7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KTtcbiAgYm94LXNoYWRvdzogMCAxMHB4IDQwcHggcmdiYSgwLCAwLCAwLCAwLjEpICFpbXBvcnRhbnQ7XG5cbiAgLnRoZW1lLS1kYXJrICYge1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMzAsIDQxLCA1OSwgMC45NikgIWltcG9ydGFudDtcbiAgICBib3JkZXItY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOCk7XG4gIH1cbn1cblxuLmlucHV0LWZpZWxkIHtcbiAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTtcblxuICAmOmZvY3VzLXdpdGhpbiB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpO1xuICB9XG59XG5cbi5sb2dpbi1idXR0b24ge1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjNEY0NkU1IDAlLCAjNjM2NkYxIDEwMCUpICFpbXBvcnRhbnQ7XG4gIGNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50O1xuICBsZXR0ZXItc3BhY2luZzogMC41cHg7XG4gIHRleHQtdHJhbnNmb3JtOiBub25lO1xuICBmb250LXNpemU6IDFyZW07XG4gIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7XG5cbiAgJjpob3ZlciB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpO1xuICAgIGJveC1zaGFkb3c6IDAgNHB4IDEycHggcmdiYSg3OSwgNzAsIDIyOSwgMC4zKTtcbiAgfVxuXG4gICY6YWN0aXZlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG4gIH1cbn1cblxuLmdhcC0yIHtcbiAgZ2FwOiA4cHg7XG59XG5cbi5ib3JkZXItdG9wIHtcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4wNik7XG59XG5cbi5vcGFjaXR5LTcwIHtcbiAgb3BhY2l0eTogMC43O1xufVxuXG4ub3BhY2l0eS05MCB7XG4gIG9wYWNpdHk6IDAuOTtcbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDk2MHB4KSB7XG4gIC5wYWdlLWxvZ2luIHtcbiAgICBoZWlnaHQ6IGF1dG87XG4gICAgbWluLWhlaWdodDogMTAwdmg7XG4gIH1cblxuICAucmlnaHQtcGFuZWwge1xuICAgIG1pbi1oZWlnaHQ6IDEwMHZoO1xuICAgIHBhZGRpbmc6IDQwcHggMjBweDtcbiAgfVxuXG4gIC5sb2dpbi1jYXJkIHtcbiAgICBtYXgtd2lkdGg6IDM4MHB4O1xuICB9XG59XG4iLCI8dGVtcGxhdGU+XG4gIDx2LWNvbnRhaW5lciBjbGFzcz1cInBhZ2UtbG9naW4ganVzdGlmeS1jZW50ZXIgYWxpZ24tY2VudGVyXCIgZmlsbC1oZWlnaHQ+XG4gICAgPHYtcm93IGNsYXNzPVwianVzdGlmeS1jZW50ZXIgYWxpZ24tY2VudGVyXCIgc3R5bGU9XCJtYXJnaW4tdG9wOiAxMHB4XCI+XG4gICAgICA8di1jb2wgY2xhc3M9XCJqdXN0aWZ5LWNlbnRlciBhbGlnbi1jZW50ZXJcIj5cbiAgICAgICAgPHYtY2FyZFxuICAgICAgICAgIGNsYXNzPVwiZWxldmF0aW9uLTMgcGEtMlwiXG4gICAgICAgICAgc3R5bGU9XCJtYXgtd2lkdGg6IDYwMHB4OyBtYXJnaW46IDAgYXV0b1wiXG4gICAgICAgID5cbiAgICAgICAgICA8di1jYXJkLXRleHQ+XG4gICAgICAgICAgICA8di10ZXh0LWZpZWxkXG4gICAgICAgICAgICAgIGFwcGVuZC1pY29uPVwibWRpLWlwLW5ldHdvcmtcIlxuICAgICAgICAgICAgICBuYW1lPVwibG9naW5cIlxuICAgICAgICAgICAgICA6bGFiZWw9XCIkdCgnbmFtZSBhcHAnKVwiXG4gICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgdi1tb2RlbD1cIkJhc2VfbmFtZVwiXG4gICAgICAgICAgICA+PC92LXRleHQtZmllbGQ+XG4gICAgICAgICAgPC92LWNhcmQtdGV4dD5cblxuICAgICAgICAgIDx2LWNhcmQtYWN0aW9ucz5cbiAgICAgICAgICAgIDx2LXNwYWNlciAvPlxuICAgICAgICAgICAgPHYtYnRuIGNvbG9yPVwicHJpbWFyeVwiIEBjbGljaz1cInN1Ym1pdFwiIDpsb2FkaW5nPVwibG9hZGluZ1wiIHJpZ2h0Pnt7XG4gICAgICAgICAgICAgICR0KFwic2F2ZSBuYW1lIGFwcFwiKVxuICAgICAgICAgICAgfX08L3YtYnRuPlxuICAgICAgICAgIDwvdi1jYXJkLWFjdGlvbnM+XG4gICAgICAgIDwvdi1jYXJkPlxuICAgICAgPC92LWNvbD5cbiAgICA8L3Ytcm93PlxuICA8L3YtY29udGFpbmVyPlxuPC90ZW1wbGF0ZT5cbjxzY3JpcHQ+XG5pbXBvcnQgYXhpb3MgZnJvbSBcImF4aW9zXCI7XG5pbXBvcnQgcm91dGVyIGZyb20gXCJAL3JvdXRlclwiO1xuZXhwb3J0IGRlZmF1bHQge1xuICBkYXRhOiAoKSA9PiAoe1xuICAgIEJhc2VfbmFtZTogXCJcIixcblxuICAgIGxvYWRpbmc6IGZhbHNlLFxuICB9KSxcbiAgY29tcHV0ZWQ6IHtcbiAgICBJbmRleF91cmwoKSB7XG4gICAgICByZXR1cm4gdGhpcy4kc3RvcmUuc3RhdGUuSW5kZXhfdXJsO1xuICAgIH0sXG4gIH0sXG5cbiAgbWV0aG9kczoge1xuICAgIHN1Ym1pdCgpIHtcbiAgICAgIC8vICBsZXQgdXJsID0gXCJodHRwczovL1wiICsgdGhpcy5CYXNlX25hbWUgKyBcIi5hcHBjb21wdGFibGUuY29tXCI7XG4gICAgICBsZXQgdXJsID0gdGhpcy5CYXNlX25hbWU7XG4gICAgICBheGlvc1xuICAgICAgICAuZ2V0KHVybCArIHRoaXMuSW5kZXhfdXJsLCB7fSlcblxuICAgICAgICAudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcIkJhc2VfdXJsX2J5X3NldFwiLCB1cmwpO1xuXG4gICAgICAgICAgdGhpcy4kc3RvcmUuc3RhdGUuQmFzZV91cmwgPSB1cmw7XG4gICAgICAgICAgdGhpcy4kc3RvcmUuZGlzcGF0Y2goXCJydW5fZ2V0X21ldGFEYXRhXCIpO1xuXG4gICAgICAgICAgLy8gIHJvdXRlci5wdXNoKFwiL1wiKTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgIGFsZXJ0KFwiZXJyZXVyIG5hbWVcIik7XG4gICAgICAgICAgcm91dGVyLnB1c2goeyBuYW1lOiBcInVybEJhc2VTZXRcIiB9KTtcbiAgICAgICAgICB0aGlzLkJhc2VfbmFtZSA9IFwiXCI7XG4gICAgICAgIH0pO1xuICAgIH0sXG4gICAgY2xlYXIoKSB7XG4gICAgICB0aGlzLkJhc2VfbmFtZSA9IFwiXCI7XG4gICAgfSxcbiAgfSxcbn07XG48L3NjcmlwdD5cbjxzdHlsZSBzY29wZWQgbGFuZz1cImNzc1wiPlxuI2xvZ2luIHtcbiAgbWFyZ2luOiAwO1xuICBoZWlnaHQ6IDUwJTtcbiAgd2lkdGg6IDEwMCU7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICBjb250ZW50OiBcIlwiO1xuICB6LWluZGV4OiAwO1xufVxuPC9zdHlsZT4iLCI8dGVtcGxhdGU+XG4gIDx2LWNvbnRhaW5lciBjbGFzcz1cInBhZ2UtbG9naW5cIiBmaWxsLWhlaWdodD5cbiAgICA8di1yb3cgY2xhc3M9XCJqdXN0aWZ5LWNlbnRlciBhbGlnbi1jZW50ZXJcIiBzdHlsZT1cIm1hcmdpbi10b3A6IDEwcHhcIj5cbiAgICAgIDx2LWNvbCBjbGFzcz1cImp1c3RpZnktY2VudGVyIGFsaWduLWNlbnRlclwiPlxuICAgICAgICA8di1jYXJkXG4gICAgICAgICAgY2xhc3M9XCJlbGV2YXRpb24tMyBwYS0yXCJcbiAgICAgICAgICBzdHlsZT1cIm1heC13aWR0aDogNjAwcHg7IG1hcmdpbjogMCBhdXRvXCJcbiAgICAgICAgPlxuICAgICAgICAgIDx2LWNhcmQtdGV4dD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXQgY29sdW1uIGFsaWduLWNlbnRlclwiPlxuICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgc3JjPVwiL3NyYy9pbWcvdXNlci5wbmdcIlxuICAgICAgICAgICAgICAgIGFsdD1cImxvZ291c2VyXCJcbiAgICAgICAgICAgICAgICB3aWR0aD1cIjEwMFwiXG4gICAgICAgICAgICAgICAgaGVpZ2h0PVwiMTAwXCJcbiAgICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgICA8aDEgY2xhc3M9XCJyZWQtLXRleHQgZGlzcGxheS0xIHBhZ2UtbG9naW5fdGl0bGVcIj5cbiAgICAgICAgICAgICAgICBBY2Nlc3MgRGVuaWVkXG4gICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgPC9oMT5cbiAgICAgICAgICAgICAgPGgzPiB7eyBzdGVfb3JnYW5pc2F0aW9uKCkgfX08L2gzPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8di1mb3JtIGNsYXNzPVwibXktM1wiPlxuICAgICAgICAgICAgICA8di10ZXh0LWZpZWxkXG4gICAgICAgICAgICAgICAgYXBwZW5kLWljb249XCJtZGktYWNjb3VudFwiXG4gICAgICAgICAgICAgICAgbmFtZT1cImxvZ2luXCJcbiAgICAgICAgICAgICAgICA6bGFiZWw9XCIkdCgnTG9naW4nKVwiXG4gICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgIHYtbW9kZWw9XCJuYW1lXCJcbiAgICAgICAgICAgICAgPjwvdi10ZXh0LWZpZWxkPlxuICAgICAgICAgICAgICA8di10ZXh0LWZpZWxkXG4gICAgICAgICAgICAgICAgOmFwcGVuZC1pY29uPVwic2hvdzEgPyAnbWRpLWV5ZScgOiAnbWRpLWV5ZS1vZmYnXCJcbiAgICAgICAgICAgICAgICA6dHlwZT1cInNob3cxID8gJ3RleHQnIDogJ3Bhc3N3b3JkJ1wiXG4gICAgICAgICAgICAgICAgY291bnRlclxuICAgICAgICAgICAgICAgIEBjbGljazphcHBlbmQ9XCJzaG93MSA9ICFzaG93MVwiXG4gICAgICAgICAgICAgICAgbmFtZT1cInBhc3N3b3JkXCJcbiAgICAgICAgICAgICAgICA6bGFiZWw9XCIkdCgnUGFzc3dvcmQnKVwiXG4gICAgICAgICAgICAgICAgaWQ9XCJwYXNzd29yZFwiXG4gICAgICAgICAgICAgICAgdi1tb2RlbD1cInBhc3N3b3JkXCJcbiAgICAgICAgICAgICAgICB2LW9uOmtleXVwLmVudGVyPVwic3VibWl0XCJcbiAgICAgICAgICAgICAgPjwvdi10ZXh0LWZpZWxkPlxuICAgICAgICAgICAgPC92LWZvcm0+XG4gICAgICAgICAgPC92LWNhcmQtdGV4dD5cblxuICAgICAgICAgIDx2LWNhcmQtYWN0aW9ucz5cbiAgICAgICAgICAgIDx2LXNwYWNlciAvPlxuICAgICAgICAgICAgPHYtYnRuIGNvbG9yPVwib3JhbmdlXCIgQGNsaWNrPVwic3VibWl0XCIgOmxvYWRpbmc9XCJsb2FkaW5nXCIgcmlnaHQ+e3tcbiAgICAgICAgICAgICAgJHQoXCJMb2dpblwiKVxuICAgICAgICAgICAgfX08L3YtYnRuPlxuICAgICAgICAgIDwvdi1jYXJkLWFjdGlvbnM+XG4gICAgICAgICAgPHYtcm93PlxuICAgICAgICAgICAgPHYtY29sIGNvbHM9XCIxMlwiIHN0eWxlPVwibWFyZ2luOiAwOyBwYWRkaW5nOiAwXCJcbiAgICAgICAgICAgICAgPjxtYXJxdWVlPnt7IHRleHR2aWV3IH19IDwvbWFycXVlZT48L3YtY29sXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8di1jb2wgY29scz1cIjEyXCI+XG4gICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJvdmVyZmxvdzogYXV0b1wiPlxuICAgICAgICAgICAgICAgIDx2LWJ0biBpY29uPlxuICAgICAgICAgICAgICAgICAgPHYtaWNvbiBjb2xvcj1cIm9yYW5nZVwiIEBjbGljaz1cImVtYWlsXCI+bWRpLWVtYWlsPC92LWljb24+XG4gICAgICAgICAgICAgICAgPC92LWJ0bj5cbiAgICAgICAgICAgICAgICA8di1idG4gaWNvbj5cbiAgICAgICAgICAgICAgICAgIDx2LWljb24gY29sb3I9XCJvcmFuZ2VcIiBAY2xpY2s9XCJmYWNlYm9va1wiPm1kaS1mYWNlYm9vazwvdi1pY29uPlxuICAgICAgICAgICAgICAgIDwvdi1idG4+XG4gICAgICAgICAgICAgICAgPHYtYnRuIGljb24+XG4gICAgICAgICAgICAgICAgICA8di1pY29uIGNvbG9yPVwib3JhbmdlXCIgQGNsaWNrPVwibGlua2VkaW5cIj5tZGktbGlua2VkaW48L3YtaWNvbj5cbiAgICAgICAgICAgICAgICA8L3YtYnRuPlxuICAgICAgICAgICAgICAgIDx2LWJ0biBpY29uPlxuICAgICAgICAgICAgICAgICAgPHYtaWNvbiBjb2xvcj1cIm9yYW5nZVwiIEBjbGljaz1cInR3aXR0ZXJcIj5tZGktdHdpdHRlcjwvdi1pY29uPlxuICAgICAgICAgICAgICAgIDwvdi1idG4+XG4gICAgICAgICAgICAgICAgPHYtYnRuIGljb24+XG4gICAgICAgICAgICAgICAgICA8di1pY29uIGNvbG9yPVwib3JhbmdlXCIgQGNsaWNrPVwiaW5zdGFncmFtXCI+bWRpLWluc3RhZ3JhbTwvdi1pY29uPlxuICAgICAgICAgICAgICAgIDwvdi1idG4+XG5cbiAgICAgICAgICAgICAgICA8di1idG4gaWNvbj5cbiAgICAgICAgICAgICAgICAgIDx2LWljb24gY29sb3I9XCJvcmFuZ2VcIiBAY2xpY2s9XCJ5b3V0dWJlXCI+bWRpLXlvdXR1YmU8L3YtaWNvbj5cbiAgICAgICAgICAgICAgICA8L3YtYnRuPlxuXG4gICAgICAgICAgICAgICAgPHYtYnRuIGljb24+XG4gICAgICAgICAgICAgICAgICA8di1pY29uIGNvbG9yPVwib3JhbmdlXCIgIEBjbGljaz1cInBob25lXCI+bWRpLXBob25lPC92LWljb24+XG4gICAgICAgICAgICAgICAgPC92LWJ0bj5cbiAgICAgICAgICAgICAgICA8di1idG4gaWNvbj5cbiAgICAgICAgICAgICAgICAgIDx2LWljb24gY29sb3I9XCJvcmFuZ2VcIiAgQGNsaWNrPVwiZmF4XCI+bWRpLWZheDwvdi1pY29uPlxuICAgICAgICAgICAgICAgIDwvdi1idG4+XG4gICAgICAgICAgICAgIDwvZGl2Pjwvdi1jb2xcbiAgICAgICAgICAgID5cbiAgICAgICAgICA8L3Ytcm93PlxuICAgICAgICA8L3YtY2FyZD5cbiAgICAgIDwvdi1jb2w+XG4gICAgPC92LXJvdz5cbiAgPC92LWNvbnRhaW5lcj5cbjwvdGVtcGxhdGU+XG48c2NyaXB0PlxuIGltcG9ydCBheGlvcyBmcm9tIFwiYXhpb3NcIjtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgZGF0YTogKCkgPT4gKHtcbiAgICBzaG93MTogZmFsc2UsXG4gICAgdGV4dHZpZXc6IFwiXCIsXG4gICAgdmFsOiBcIlwiLFxuICAgIG5hbWU6IFwiXCIsXG4gICAgcGFzc3dvcmQ6IFwiXCIsXG4gICAgY2hlY2tib3g6IFwiXCIsXG4gICAgbG9hZGluZzogZmFsc2UsXG4gICAgbW9kZWw6IHtcbiAgICAgIHVzZXJuYW1lOiBcImFkbWluQGV4YW1wbGUuY29tXCIsXG4gICAgICBwYXNzd29yZDogXCJwYXNzd29yZFwiXG4gICAgfVxuICB9KSxcbiAgY29tcHV0ZWQ6IHtcbiAgICBpbmZvX29yZ2FuaXNhdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLiRzdG9yZS5nZXR0ZXJzW1widGhlbWUvb3JnYW5pc2F0aW9uXCJdO1xuICAgIH0sICBsb2dvKCkge1xuICAgICAgcmV0dXJuIHRoaXMuJHN0b3JlLmdldHRlcnNbXCJzZWN1cml0eS9sb2dvXCJdO1xuICAgIH0sXG4gIH0sXG5cbiAgbWV0aG9kczoge1xuICAgICAgc3RlX29yZ2FuaXNhdGlvbigpIHtcbiAgICAgIGlmICh0eXBlb2YgdGhpcy5pbmZvX29yZ2FuaXNhdGlvbltcInRvU3RyaW5nXCJdICE9IFwic3RyaW5nXCIpIHtcbiAgICAgICAgcmV0dXJuIFwiU1RFOiBBUFBcIjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIFwiU1RFIDpcIiArIHRoaXMuaW5mb19vcmdhbmlzYXRpb25bXCJ0b1N0cmluZ1wiXTtcbiAgICB9LFxuICAgIHN1Ym1pdCgpIHtcbiAgICAgIGxldCBmb3JtZGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgICAgZm9ybWRhdGEuYXBwZW5kKFwiZW1haWxcIiwgdGhpcy5uYW1lKTtcbiAgICAgIGZvcm1kYXRhLmFwcGVuZChcImlkZW50aWZpYW50XCIsIHRoaXMubmFtZSk7XG4gICAgICBmb3JtZGF0YS5hcHBlbmQoXCJwYXNzd29yZFwiLCB0aGlzLnBhc3N3b3JkKTtcbiAgICAgICAgbGV0IEJhc2VfdXJsID0gdGhpcy4kc3RvcmUuc3RhdGUuQmFzZV91cmw7XG4gICAgICBheGlvc1xuICAgICAgICAucG9zdChCYXNlX3VybCtcIi9sb2dpblwiLCBmb3JtZGF0YSlcbiAgICAgICAgLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gXCIvXCI7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaChlcnJvciA9PiB7XG4gICAgICAgICAgdGhpcy5jbGVhcigpO1xuICAgICAgICB9KTtcbiAgICB9LFxuICAgIGNsZWFyKCkge1xuICAgICAgdGhpcy5uYW1lID0gXCJcIjtcbiAgICAgIHRoaXMucGFzc3dvcmQgPSBcIlwiO1xuICAgIH0sXG4gICAgZW1haWwoKSB7XG4gICAgICB0aGlzLnRleHR2aWV3ID0gXCJlbWFpbCA6XCIgKyB0aGlzLmluZm9fb3JnYW5pc2F0aW9uW1wiZW1haWxcIl07XG4gICAgfSxcbiAgICBmYWNlYm9vaygpIHtcbiAgICAgIHRoaXMudGV4dHZpZXcgPSBcImZhY2Vib29rIDpcIiArIHRoaXMuaW5mb19vcmdhbmlzYXRpb25bXCJ1cmxGYWNlYm9va1wiXTtcbiAgICB9LFxuICAgIGxpbmtlZGluKCkge1xuICAgICAgdGhpcy50ZXh0dmlldyA9IFwibGlua2VkaW4gOlwiICsgdGhpcy5pbmZvX29yZ2FuaXNhdGlvbltcInVybExpbmtlZGluXCJdO1xuICAgIH0sXG4gICAgdHdpdHRlcigpIHtcbiAgICAgIHRoaXMudGV4dHZpZXcgPSBcInR3aXR0ZXIgOlwiICsgdGhpcy5pbmZvX29yZ2FuaXNhdGlvbltcInVybFR3aXR0ZXJcIl07XG4gICAgfSxcbiAgICBpbnN0YWdyYW0oKSB7XG4gICAgICB0aGlzLnRleHR2aWV3ID0gXCJpbnN0YWdyYW0gOlwiICsgdGhpcy5pbmZvX29yZ2FuaXNhdGlvbltcInVybEluc3RhZ3JhbVwiXTtcbiAgICB9LFxuICAgIHlvdXR1YmUoKSB7XG4gICAgICB0aGlzLnRleHR2aWV3ID0gXCJ5b3V0dWJlIDpcIiArIHRoaXMuaW5mb19vcmdhbmlzYXRpb25bXCJ1cmxZb3V0dWJlXCJdO1xuICAgIH0sXG4gICAgcGhvbmUoKSB7XG4gICAgICB0aGlzLnRleHR2aWV3ID0gXCJwaG9uZSA6XCIgKyB0aGlzLmluZm9fb3JnYW5pc2F0aW9uW1widGVsZXBob25lXCJdO1xuICAgIH0sXG4gICAgZmF4KCkge1xuICAgICAgdGhpcy50ZXh0dmlldyA9IFwiZmF4IDpcIiArIHRoaXMuaW5mb19vcmdhbmlzYXRpb25bXCJmYXhcIl07XG4gICAgfVxuICB9XG59O1xuPC9zY3JpcHQ+XG48c3R5bGUgc2NvcGVkIGxhbmc9XCJjc3NcIj5cbiNsb2dpbiB7XG4gIG1hcmdpbjogMDtcbiAgaGVpZ2h0OiA1MCU7XG4gIHdpZHRoOiAxMDAlO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgY29udGVudDogXCJcIjtcbiAgei1pbmRleDogMDtcbn1cbjwvc3R5bGU+IiwiPHRlbXBsYXRlPlxuICAgIDxkaXYgY2xhc3M9XCJlbnRpdHktb3ZlcnJpZGVzLWNvbnRhaW5lclwiPlxuICAgICAgICA8Y2FyZC1ibG9jayBpY29uPVwibWRpLWNvZ3NcIiBpZD1cImdyb3Vwcm9vdDFcIiBjb2xvcj1cInByaW1hcnlcIiA6dGl0bGU9XCIkdCgndGl0bGUnKVwiPlxuXG4gICAgICAgICAgICA8IS0tIFNlbGVjdGlvbiBCYXIgLS0+XG4gICAgICAgICAgICA8di1jYXJkIGNsYXNzPVwibWItNFwiIGVsZXZhdGlvbj1cIjNcIj5cbiAgICAgICAgICAgICAgICA8di1jYXJkLXRleHQgY2xhc3M9XCJwYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgIDx2LXJvdyBhbGlnbj1cImNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHYtY29sIGNvbHM9XCIxMlwiIG1kPVwiNVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2LWNvbWJvYm94IHYtbW9kZWw9XCJzZWxlY3RlZEVudGl0eVwiIDppdGVtcz1cImF2YWlsYWJsZUVudGl0aWVzXCIgaXRlbS10ZXh0PVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0tdmFsdWU9XCJ2YWx1ZVwiIDpsYWJlbD1cIiR0KCdwYWdlJylcIiBwcmVwZW5kLWlubmVyLWljb249XCJtZGktZGF0YWJhc2VcIiBvdXRsaW5lZCBkZW5zZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWRlLWRldGFpbHMgQGNoYW5nZT1cImxvYWRTY2hlbWFcIj48L3YtY29tYm9ib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3YtY29sPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHYtY29sIGNvbHM9XCIxMlwiIG1kPVwiMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2LWJ0biBjb2xvcj1cInByaW1hcnlcIiBAY2xpY2s9XCJsb2FkU2NoZW1hXCIgOmRpc2FibGVkPVwiIXNlbGVjdGVkRW50aXR5XCIgOmxvYWRpbmc9XCJsb2FkaW5nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2s+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2LWljb24gbGVmdCBzbWFsbD5tZGktcmVsb2FkPC92LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICR0KCdlbiBjaGFyZ2UnKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdi1idG4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3YtY29sPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHYtY29sIGNvbHM9XCIxMlwiIG1kPVwiM1wiIHYtaWY9XCJzY2hlbWFMb2FkZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8di10ZXh0LWZpZWxkIHYtbW9kZWw9XCJzZWFyY2hcIiA6bGFiZWw9XCIkdCgnc2VhcmNoJylcIiBwcmVwZW5kLWlubmVyLWljb249XCJtZGktbWFnbmlmeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dGxpbmVkIGRlbnNlIGhpZGUtZGV0YWlscyBjbGVhcmFibGU+PC92LXRleHQtZmllbGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3YtY29sPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHYtY29sIGNvbHM9XCIxMlwiIG1kPVwiMlwiIHYtaWY9XCJzY2hlbWFMb2FkZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8di1idG4gY29sb3I9XCJzdWNjZXNzXCIgQGNsaWNrPVwic2F2ZU92ZXJyaWRlc1wiIDpsb2FkaW5nPVwic2F2aW5nXCIgYmxvY2s+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2LWljb24gbGVmdCBzbWFsbD5tZGktY29udGVudC1zYXZlPC92LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICR0KCdlbnJlZ2lzdHJlcicpIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92LWJ0bj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdi1jb2w+XG4gICAgICAgICAgICAgICAgICAgIDwvdi1yb3c+XG4gICAgICAgICAgICAgICAgPC92LWNhcmQtdGV4dD5cbiAgICAgICAgICAgIDwvdi1jYXJkPlxuXG4gICAgICAgICAgICA8IS0tIEluZm8gQWxlcnQgLS0+XG4gICAgICAgICAgICA8di1hbGVydCB2LWlmPVwic2NoZW1hTG9hZGVkXCIgdHlwZT1cImluZm9cIiBkZW5zZSBib3JkZXI9XCJsZWZ0XCIgY29sb3JlZC1ib3JkZXIgY2xhc3M9XCJtYi00XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPHYtaWNvbiBzbWFsbCBjb2xvcj1cImluZm9cIiBjbGFzcz1cIm1sLTJcIj5tZGktaW5mb3JtYXRpb248L3YtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWJvZHktMlwiPnt7ICR0KCdpbmZvX3RleHQnKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvdi1hbGVydD5cblxuICAgICAgICAgICAgPCEtLSBGaWVsZHMgQ2FyZCAtLT5cbiAgICAgICAgICAgIDx2LWNhcmQgdi1pZj1cInNjaGVtYUxvYWRlZFwiIGVsZXZhdGlvbj1cIjNcIj5cbiAgICAgICAgICAgICAgICA8di1jYXJkLXRpdGxlIGNsYXNzPVwicHJpbWFyeSB3aGl0ZS0tdGV4dCBweS0zXCI+XG4gICAgICAgICAgICAgICAgICAgIDx2LWljb24gbGVmdCBjb2xvcj1cIndoaXRlXCI+bWRpLXRhYmxlLWVkaXQ8L3YtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgJHQoc2VsZWN0ZWRFbnRpdHkudGV4dCkgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDx2LXNwYWNlcj48L3Ytc3BhY2VyPlxuICAgICAgICAgICAgICAgICAgICA8di1jaGlwIHNtYWxsIG91dGxpbmVkIGRhcms+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBmaWx0ZXJlZEZpZWxkcy5sZW5ndGggfX0ge3sgJHQoJ25vbSBkdSBjaGFtcCcpIH19XG4gICAgICAgICAgICAgICAgICAgIDwvdi1jaGlwPlxuICAgICAgICAgICAgICAgIDwvdi1jYXJkLXRpdGxlPlxuXG4gICAgICAgICAgICAgICAgPHYtZGl2aWRlcj48L3YtZGl2aWRlcj5cblxuICAgICAgICAgICAgICAgIDx2LWRhdGEtdGFibGUgOmhlYWRlcnM9XCJoZWFkZXJzXCIgOml0ZW1zPVwiZmlsdGVyZWRGaWVsZHNcIiA6aXRlbXMtcGVyLXBhZ2U9XCItMVwiIGhpZGUtZGVmYXVsdC1mb290ZXJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJlbGV2YXRpb24tMFwiPlxuICAgICAgICAgICAgICAgICAgICA8IS0tIEZpZWxkIE5hbWUgLS0+XG4gICAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6aXRlbS5uYW1lPVwieyBpdGVtIH1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24tY2VudGVyIHB5LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8di1hdmF0YXIgc2l6ZT1cIjMyXCIgOmNvbG9yPVwiaXNGaWVsZE1vZGlmaWVkKGl0ZW0pID8gJ3ByaW1hcnknIDogJ2dyZXkgbGlnaHRlbi0yJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWwtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8di1pY29uIHNtYWxsIDpjb2xvcj1cImlzRmllbGRNb2RpZmllZChpdGVtKSA/ICd3aGl0ZScgOiAnZ3JleSBkYXJrZW4tMSdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGdldEZpZWxkSWNvbihpdGVtKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3YtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3YtYXZhdGFyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtci0zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjbGFzcz1cInsgJ3ByaW1hcnktLXRleHQgZm9udC13ZWlnaHQtYm9sZCc6IGlzRmllbGRNb2RpZmllZChpdGVtKSwgJ2ZvbnQtd2VpZ2h0LW1lZGl1bSc6IHRydWUgfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJHQoaXRlbS5uYW1lKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcHRpb24gZ3JleS0tdGV4dFwiPnt7IGl0ZW0udHlwZUh0bWwgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPlxuXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gU3RhdHVzIC0tPlxuICAgICAgICAgICAgICAgICAgICA8dGVtcGxhdGUgdi1zbG90Oml0ZW0uc3RhdHVzPVwieyBpdGVtIH1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx2LWJ0bi10b2dnbGUgdi1tb2RlbD1cIml0ZW0ubW9kZWwuaXNSZXF1aXJlZFwiIEBjaGFuZ2U9XCJvblJlcXVpcmVkQ2hhbmdlKGl0ZW0pXCIgbWFuZGF0b3J5IGRlbnNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVybGVzcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8di1idG4gOnZhbHVlPVwidHJ1ZVwiIHNtYWxsIDpjb2xvcj1cIml0ZW0ubW9kZWwuaXNSZXF1aXJlZCA/ICdwcmltYXJ5JyA6ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOmNsYXNzPVwieyAnd2hpdGUtLXRleHQnOiBpdGVtLm1vZGVsLmlzUmVxdWlyZWQgfVwiIDpvdXRsaW5lZD1cIiFpdGVtLm1vZGVsLmlzUmVxdWlyZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJHQoJ29ibGlnYXRvaXJlJykgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3YtYnRuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2LWJ0biA6dmFsdWU9XCJmYWxzZVwiIHNtYWxsIDpjb2xvcj1cIiFpdGVtLm1vZGVsLmlzUmVxdWlyZWQgPyAncHJpbWFyeScgOiAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjbGFzcz1cInsgJ3doaXRlLS10ZXh0JzogIWl0ZW0ubW9kZWwuaXNSZXF1aXJlZCB9XCIgOm91dGxpbmVkPVwiaXRlbS5tb2RlbC5pc1JlcXVpcmVkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICR0KCdvcHRpb25hbCcpIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92LWJ0bj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdi1idG4tdG9nZ2xlPlxuICAgICAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPlxuXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gT3B0aW9ucyAtLT5cbiAgICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlIHYtc2xvdDppdGVtLm9wdGlvbnM9XCJ7IGl0ZW0gfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiB2LWlmPVwiaXRlbS50eXBlSHRtbCA9PSAndGV4dCcgfHwgaXRlbS50eXBlSHRtbCA9PSAnZW1haWwnIHx8IGl0ZW0udHlwZUh0bWwgPT0gJ3RlbCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8di1zd2l0Y2ggdi1tb2RlbD1cIml0ZW0ubW9kZWwuaXNVbmlxdWVcIiA6bGFiZWw9XCIkdCgndW5pcXVlJylcIiBjb2xvcj1cInByaW1hcnlcIiBoaWRlLWRldGFpbHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVuc2UgaW5zZXQgQGNoYW5nZT1cIm1hcmtDaGFuZ2VkKGl0ZW0pXCI+PC92LXN3aXRjaD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiB2LWVsc2UgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2LWljb24gc21hbGwgY29sb3I9XCJncmV5IGxpZ2h0ZW4tMVwiPm1kaS1taW51czwvdi1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+XG5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBBY3Rpb25zIC0tPlxuICAgICAgICAgICAgICAgICAgICA8dGVtcGxhdGUgdi1zbG90Oml0ZW0uYWN0aW9ucz1cInsgaXRlbSB9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8di1idG4gdi1pZj1cImlzRmllbGRNb2RpZmllZChpdGVtKVwiIGNvbG9yPVwid2FybmluZ1wiIEBjbGljaz1cInJlc2V0RmllbGQoaXRlbSlcIiBzbWFsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGV2YXRpb249XCIyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2LWljb24gc21hbGwgbGVmdD5tZGktcmVmcmVzaDwvdi1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAkdCgncsOpaW5pdGlhbGlzZXInKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdi1idG4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHYtY2hpcCB2LWVsc2UgY29sb3I9XCJzdWNjZXNzXCIgb3V0bGluZWQgc21hbGw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2LWljb24gc21hbGwgbGVmdD5tZGktY2hlY2s8L3YtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJHQoJ3BhciBkw6lmYXV0JykgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3YtY2hpcD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPlxuXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gTm8gZGF0YSAtLT5cbiAgICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlIHYtc2xvdDpuby1kYXRhPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIHB5LTEyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHYtaWNvbiBzaXplPVwiNjRcIiBjb2xvcj1cImdyZXkgbGlnaHRlbi0yXCI+bWRpLWZpbGUtc2VhcmNoLW91dGxpbmU8L3YtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JleS0tdGV4dCB0ZXh0LWg2IG10LTRcIj57eyAkdCgnYXVjdW4gY2hhbXAgdHJvdXbDqScpIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L3YtZGF0YS10YWJsZT5cbiAgICAgICAgICAgIDwvdi1jYXJkPlxuXG4gICAgICAgICAgICA8IS0tIFNuYWNrYmFyIC0tPlxuICAgICAgICAgICAgPHYtc25hY2tiYXIgdi1tb2RlbD1cInNuYWNrYmFyXCIgOmNvbG9yPVwic25hY2tiYXJDb2xvclwiIHRpbWVvdXQ9XCIzMDAwXCIgdG9wPlxuICAgICAgICAgICAgICAgIDx2LWljb24gbGVmdCBzbWFsbD57eyBzbmFja2JhckNvbG9yID09PSAnc3VjY2VzcycgPyAnbWRpLWNoZWNrLWNpcmNsZScgOiAnbWRpLWFsZXJ0LWNpcmNsZScgfX08L3YtaWNvbj5cbiAgICAgICAgICAgICAgICB7eyBzbmFja2JhclRleHQgfX1cbiAgICAgICAgICAgIDwvdi1zbmFja2Jhcj5cblxuICAgICAgICA8L2NhcmQtYmxvY2s+XG4gICAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0PlxuaW1wb3J0IGF4aW9zIGZyb20gXCJheGlvc1wiO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gICAgZGF0YTogKCkgPT4gKHtcbiAgICAgICAgc2VsZWN0ZWRFbnRpdHk6IG51bGwsXG4gICAgICAgIGF2YWlsYWJsZUVudGl0aWVzOiBbXSxcbiAgICAgICAgc2NoZW1hTG9hZGVkOiBmYWxzZSxcbiAgICAgICAgbG9hZGluZzogZmFsc2UsXG4gICAgICAgIHNhdmluZzogZmFsc2UsXG4gICAgICAgIHNlYXJjaDogJycsXG4gICAgICAgIGZpZWxkczogW10sXG4gICAgICAgIGhlYWRlcnM6IFtcbiAgICAgICAgICAgIHsgdGV4dDogJycsIHZhbHVlOiAnbmFtZScsIGFsaWduOiAnc3RhcnQnLCBzb3J0YWJsZTogdHJ1ZSwgd2lkdGg6ICczMCUnIH0sXG4gICAgICAgICAgICB7IHRleHQ6ICcnLCB2YWx1ZTogJ3N0YXR1cycsIGFsaWduOiAnY2VudGVyJywgc29ydGFibGU6IGZhbHNlLCB3aWR0aDogJzMwJScgfSxcbiAgICAgICAgICAgIHsgdGV4dDogJycsIHZhbHVlOiAnb3B0aW9ucycsIGFsaWduOiAnY2VudGVyJywgc29ydGFibGU6IGZhbHNlLCB3aWR0aDogJzIwJScgfSxcbiAgICAgICAgICAgIHsgdGV4dDogJycsIHZhbHVlOiAnYWN0aW9ucycsIGFsaWduOiAnY2VudGVyJywgc29ydGFibGU6IGZhbHNlLCB3aWR0aDogJzIwJScgfVxuICAgICAgICBdLFxuICAgICAgICBzbmFja2JhcjogZmFsc2UsXG4gICAgICAgIHNuYWNrYmFyVGV4dDogJycsXG4gICAgICAgIHNuYWNrYmFyQ29sb3I6ICdzdWNjZXNzJ1xuICAgIH0pLFxuXG4gICAgY29tcHV0ZWQ6IHtcbiAgICAgICAgZmlsdGVyZWRGaWVsZHMoKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuc2VhcmNoKSByZXR1cm4gdGhpcy5maWVsZHM7XG5cbiAgICAgICAgICAgIGNvbnN0IHNlYXJjaExvd2VyID0gdGhpcy5zZWFyY2gudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmZpZWxkcy5maWx0ZXIoZmllbGQgPT5cbiAgICAgICAgICAgICAgICBmaWVsZC5uYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoTG93ZXIpIHx8XG4gICAgICAgICAgICAgICAgZmllbGQudHlwZUh0bWwudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2hMb3dlcikgXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfSxcblxuICAgIG1vdW50ZWQoKSB7XG4gICAgICAgIHRoaXMucG9wdWxhdGVFbnRpdGllc0Zyb21BcGkoKTtcbiAgICAgICAgLy8gU2V0IGhlYWRlciB0ZXh0cyBmcm9tIHRyYW5zbGF0aW9uc1xuICAgICAgICB0aGlzLnVwZGF0ZUhlYWRlcnMoKTtcbiAgICB9LFxuXG4gICAgbWV0aG9kczoge1xuICAgICAgICB1cGRhdGVIZWFkZXJzKCkge1xuICAgICAgICAgICAgdGhpcy5oZWFkZXJzWzBdLnRleHQgPSB0aGlzLiR0KCdub20gZHUgY2hhbXAnKTtcbiAgICAgICAgICAgIHRoaXMuaGVhZGVyc1sxXS50ZXh0ID0gdGhpcy4kdCgnc3RhdHV0Jyk7XG4gICAgICAgICAgICB0aGlzLmhlYWRlcnNbMl0udGV4dCA9IHRoaXMuJHQoJ29wdGlvbnMnKTtcbiAgICAgICAgICAgIHRoaXMuaGVhZGVyc1szXS50ZXh0ID0gdGhpcy4kdCgnYWN0aW9ucycpO1xuICAgICAgICB9LFxuXG4gICAgICAgIHBvcHVsYXRlRW50aXRpZXNGcm9tQXBpKCkge1xuICAgICAgICAgICAgbGV0IEJhc2VfdXJsID0gdGhpcy4kc3RvcmUuc3RhdGUuQmFzZV91cmw7XG5cbiAgICAgICAgICAgIGF4aW9zLmdldChCYXNlX3VybCArIFwiL2FwaS9lbnRpdHktb3ZlcnJpZGVzL2xpc3QtY3VzdG9taXphYmxlXCIsIHtcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiB7IEF1dGhvcml6YXRpb246IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiSldUVG9rZW5cIikgfVxuICAgICAgICAgICAgfSkudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZW50aXRpZXMgPSByZXNwb25zZS5kYXRhIHx8IFtdO1xuICAgICAgICAgICAgICAgIC8vIFRyYW5zbGF0ZSBlbnRpdHkgbmFtZXNcbiAgICAgICAgICAgICAgICB0aGlzLmF2YWlsYWJsZUVudGl0aWVzID0gZW50aXRpZXMubWFwKGVudGl0eSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICB0ZXh0OiB0aGlzLiR0KGVudGl0eS52YWx1ZSksXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBlbnRpdHkudmFsdWVcbiAgICAgICAgICAgICAgICB9KSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoZW50aXRpZXMubGVuZ3RoID4gMCAmJiAhdGhpcy5zZWxlY3RlZEVudGl0eSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRW50aXR5ID0gZW50aXRpZXNbMF0udmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZFNjaGVtYSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLmNhdGNoKGVycm9yID0+IHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiRmFpbGVkIHRvIGxvYWQgZW50aXR5IGxpc3RcIiwgZXJyb3IpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2hvd1NuYWNrYmFyKHRoaXMuJHQoJ2VycmV1ciBsb3JzIGR1IGNoYXJnZW1lbnQnKSwgJ2Vycm9yJyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcblxuICAgICAgICBsb2FkU2NoZW1hKCkge1xuICAgICAgICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkRW50aXR5KSByZXR1cm47XG5cbiAgICAgICAgICAgIGNvbnN0IGVudGl0eU5hbWUgPSAodHlwZW9mIHRoaXMuc2VsZWN0ZWRFbnRpdHkgPT09ICdvYmplY3QnICYmIHRoaXMuc2VsZWN0ZWRFbnRpdHkgIT09IG51bGwpXG4gICAgICAgICAgICAgICAgPyB0aGlzLnNlbGVjdGVkRW50aXR5LnZhbHVlXG4gICAgICAgICAgICAgICAgOiB0aGlzLnNlbGVjdGVkRW50aXR5O1xuXG4gICAgICAgICAgICBpZiAoIWVudGl0eU5hbWUpIHJldHVybjtcblxuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgIGxldCBCYXNlX3VybCA9IHRoaXMuJHN0b3JlLnN0YXRlLkJhc2VfdXJsO1xuXG4gICAgICAgICAgICBjb25zdCBwMSA9IGF4aW9zLmdldChCYXNlX3VybCArIGAvYXBpL2VudGl0eS1vdmVycmlkZXMvc2NoZW1hLyR7ZW50aXR5TmFtZX1gLCB7XG4gICAgICAgICAgICAgICAgaGVhZGVyczogeyBBdXRob3JpemF0aW9uOiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcIkpXVFRva2VuXCIpIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBjb25zdCBwMiA9IGF4aW9zLmdldChCYXNlX3VybCArIGAvYXBpL2VudGl0eS1vdmVycmlkZXMvZ2V0LyR7ZW50aXR5TmFtZX1gLCB7XG4gICAgICAgICAgICAgICAgaGVhZGVyczogeyBBdXRob3JpemF0aW9uOiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcIkpXVFRva2VuXCIpIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBQcm9taXNlLmFsbChbcDEsIHAyXSkudGhlbihyZXN1bHRzID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBzY2hlbWEgPSByZXN1bHRzWzBdLmRhdGE7XG4gICAgICAgICAgICAgICAgY29uc3Qgb3ZlcnJpZGVzID0gcmVzdWx0c1sxXS5kYXRhO1xuXG4gICAgICAgICAgICAgICAgbGV0IG1lcmdlZEZpZWxkcyA9IFtdO1xuXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gc2NoZW1hKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBmaWVsZCA9IHNjaGVtYVtrZXldO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChmaWVsZC50eXBlSHRtbCA9PT0gJ2hpZGRlbicpIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZmllbGQuaXNDYWxjdWxhdGVkID09PSB0cnVlKSBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpZWxkLmxvY2tlZCA9PT0gdHJ1ZSkgY29udGludWU7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgb3YgPSBvdmVycmlkZXNba2V5XTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGVmYXVsdFJlcXVpcmVkID0gZmllbGQucmVxdWlyZWQgIT09IHVuZGVmaW5lZCA/IGZpZWxkLnJlcXVpcmVkIDogZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRlZmF1bHRVbmlxdWUgPSBmaWVsZC51bmlxdWUgIT09IHVuZGVmaW5lZCA/IGZpZWxkLnVuaXF1ZSA6IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgICAgIGxldCByb3cgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBrZXksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlSHRtbDogZmllbGQudHlwZUh0bWwsXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0czoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzUmVxdWlyZWQ6IGRlZmF1bHRSZXF1aXJlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1VuaXF1ZTogZGVmYXVsdFVuaXF1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogZGVmYXVsdFJlcXVpcmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxhYmxlOiAhZGVmYXVsdFJlcXVpcmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXF1ZTogZGVmYXVsdFVuaXF1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vZGVsOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNSZXF1aXJlZDogZGVmYXVsdFJlcXVpcmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzVW5pcXVlOiBkZWZhdWx0VW5pcXVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiBkZWZhdWx0UmVxdWlyZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbGFibGU6ICFkZWZhdWx0UmVxdWlyZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pcXVlOiBkZWZhdWx0VW5pcXVlXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgaGFzT3ZlcnJpZGU6ICEhb3ZcbiAgICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAob3YpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvdi5yZXF1aXJlZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93Lm1vZGVsLmlzUmVxdWlyZWQgPSBvdi5yZXF1aXJlZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3cubW9kZWwucmVxdWlyZWQgPSBvdi5yZXF1aXJlZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3cubW9kZWwubnVsbGFibGUgPSAhb3YucmVxdWlyZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAob3YudW5pcXVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3cubW9kZWwuaXNVbmlxdWUgPSBvdi51bmlxdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93Lm1vZGVsLnVuaXF1ZSA9IG92LnVuaXF1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIG1lcmdlZEZpZWxkcy5wdXNoKHJvdyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5maWVsZHMgPSBtZXJnZWRGaWVsZHM7XG4gICAgICAgICAgICAgICAgdGhpcy5zY2hlbWFMb2FkZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuXG4gICAgICAgICAgICB9KS5jYXRjaChlcnJvciA9PiB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICAgICAgICAgICAgdGhpcy5zaG93U25hY2tiYXIodGhpcy4kdCgnZXJyZXVyIGxvcnMgZHUgY2hhcmdlbWVudCcpLCAnZXJyb3InKTtcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuXG4gICAgICAgIG9uUmVxdWlyZWRDaGFuZ2UoZmllbGQpIHtcbiAgICAgICAgICAgIGZpZWxkLm1vZGVsLnJlcXVpcmVkID0gZmllbGQubW9kZWwuaXNSZXF1aXJlZDtcbiAgICAgICAgICAgIGZpZWxkLm1vZGVsLm51bGxhYmxlID0gIWZpZWxkLm1vZGVsLmlzUmVxdWlyZWQ7XG5cbiAgICAgICAgICAgIGlmICghZmllbGQubW9kZWwuaXNSZXF1aXJlZCkge1xuICAgICAgICAgICAgICAgIGZpZWxkLm1vZGVsLmlzVW5pcXVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgZmllbGQubW9kZWwudW5pcXVlID0gZmFsc2U7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMubWFya0NoYW5nZWQoZmllbGQpO1xuICAgICAgICB9LFxuXG4gICAgICAgIG1hcmtDaGFuZ2VkKGZpZWxkKSB7XG4gICAgICAgICAgICBmaWVsZC5tb2RlbC51bmlxdWUgPSBmaWVsZC5tb2RlbC5pc1VuaXF1ZTtcbiAgICAgICAgfSxcblxuICAgICAgICBpc0ZpZWxkTW9kaWZpZWQoZmllbGQpIHtcbiAgICAgICAgICAgIHJldHVybiBmaWVsZC5tb2RlbC5pc1JlcXVpcmVkICE9PSBmaWVsZC5kZWZhdWx0cy5pc1JlcXVpcmVkIHx8XG4gICAgICAgICAgICAgICAgZmllbGQubW9kZWwuaXNVbmlxdWUgIT09IGZpZWxkLmRlZmF1bHRzLmlzVW5pcXVlO1xuICAgICAgICB9LFxuXG4gICAgICAgIHJlc2V0RmllbGQoZmllbGQpIHtcbiAgICAgICAgICAgIGZpZWxkLm1vZGVsLmlzUmVxdWlyZWQgPSBmaWVsZC5kZWZhdWx0cy5pc1JlcXVpcmVkO1xuICAgICAgICAgICAgZmllbGQubW9kZWwuaXNVbmlxdWUgPSBmaWVsZC5kZWZhdWx0cy5pc1VuaXF1ZTtcbiAgICAgICAgICAgIGZpZWxkLm1vZGVsLnJlcXVpcmVkID0gZmllbGQuZGVmYXVsdHMucmVxdWlyZWQ7XG4gICAgICAgICAgICBmaWVsZC5tb2RlbC5udWxsYWJsZSA9IGZpZWxkLmRlZmF1bHRzLm51bGxhYmxlO1xuICAgICAgICAgICAgZmllbGQubW9kZWwudW5pcXVlID0gZmllbGQuZGVmYXVsdHMudW5pcXVlO1xuICAgICAgICAgICAgdGhpcy5zYXZlT3ZlcnJpZGVzKCk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgc2F2ZU92ZXJyaWRlcygpIHtcbiAgICAgICAgICAgIHRoaXMuc2F2aW5nID0gdHJ1ZTtcbiAgICAgICAgICAgIGxldCBCYXNlX3VybCA9IHRoaXMuJHN0b3JlLnN0YXRlLkJhc2VfdXJsO1xuXG4gICAgICAgICAgICBjb25zdCBlbnRpdHlOYW1lID0gKHR5cGVvZiB0aGlzLnNlbGVjdGVkRW50aXR5ID09PSAnb2JqZWN0JyAmJiB0aGlzLnNlbGVjdGVkRW50aXR5ICE9PSBudWxsKVxuICAgICAgICAgICAgICAgID8gdGhpcy5zZWxlY3RlZEVudGl0eS52YWx1ZVxuICAgICAgICAgICAgICAgIDogdGhpcy5zZWxlY3RlZEVudGl0eTtcblxuICAgICAgICAgICAgbGV0IHBheWxvYWQgPSB7fTtcblxuICAgICAgICAgICAgdGhpcy5maWVsZHMuZm9yRWFjaChmaWVsZCA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IGZpZWxkUGF5bG9hZCA9IHt9O1xuXG4gICAgICAgICAgICAgICAgaWYgKGZpZWxkLm1vZGVsLnJlcXVpcmVkICE9PSBmaWVsZC5kZWZhdWx0cy5yZXF1aXJlZCkge1xuICAgICAgICAgICAgICAgICAgICBmaWVsZFBheWxvYWQucmVxdWlyZWQgPSBmaWVsZC5tb2RlbC5yZXF1aXJlZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGZpZWxkLm1vZGVsLm51bGxhYmxlICE9PSBmaWVsZC5kZWZhdWx0cy5udWxsYWJsZSkge1xuICAgICAgICAgICAgICAgICAgICBmaWVsZFBheWxvYWQubnVsbGFibGUgPSBmaWVsZC5tb2RlbC5udWxsYWJsZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGZpZWxkLm1vZGVsLnVuaXF1ZSAhPT0gZmllbGQuZGVmYXVsdHMudW5pcXVlKSB7XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkUGF5bG9hZC51bmlxdWUgPSBmaWVsZC5tb2RlbC51bmlxdWU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKE9iamVjdC5rZXlzKGZpZWxkUGF5bG9hZCkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBwYXlsb2FkW2ZpZWxkLm5hbWVdID0gZmllbGRQYXlsb2FkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBheGlvcy5wb3N0KEJhc2VfdXJsICsgYC9hcGkvZW50aXR5LW92ZXJyaWRlcy9zYXZlLyR7ZW50aXR5TmFtZX1gLCBwYXlsb2FkLCB7XG4gICAgICAgICAgICAgICAgaGVhZGVyczogeyBBdXRob3JpemF0aW9uOiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcIkpXVFRva2VuXCIpIH1cbiAgICAgICAgICAgIH0pLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc2hvd1NuYWNrYmFyKHRoaXMuJHQoJ2VucmVnaXN0csOpIGF2ZWMgc3VjY8OocycpLCAnc3VjY2VzcycpO1xuICAgICAgICAgICAgICAgIHRoaXMubG9hZFNjaGVtYSgpO1xuICAgICAgICAgICAgfSkuY2F0Y2goZXJyb3IgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc2hvd1NuYWNrYmFyKHRoaXMuJHQoJ2VycmV1ciBsb3JzIGRlIGxcXCdlbnJlZ2lzdHJlbWVudCcpLCAnZXJyb3InKTtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgICAgICAgIH0pLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc2F2aW5nID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcblxuICAgICAgICBnZXRGaWVsZEljb24oZmllbGQpIHtcbiAgICAgICAgICAgIGNvbnN0IHR5cGVJY29ucyA9IHtcbiAgICAgICAgICAgICAgICAndGV4dCc6ICdtZGktZm9ybS10ZXh0Ym94JyxcbiAgICAgICAgICAgICAgICAndGV4dGFyZWEnOiAnbWRpLXRleHQtYm94JyxcbiAgICAgICAgICAgICAgICAnbnVtYmVyJzogJ21kaS1udW1lcmljJyxcbiAgICAgICAgICAgICAgICAnZW1haWwnOiAnbWRpLWVtYWlsJyxcbiAgICAgICAgICAgICAgICAnZGF0ZSc6ICdtZGktY2FsZW5kYXInLFxuICAgICAgICAgICAgICAgICdkYXRldGltZSc6ICdtZGktY2FsZW5kYXItY2xvY2snLFxuICAgICAgICAgICAgICAgICdib29sZWFuJzogJ21kaS1jaGVja2JveC1tYXJrZWQnLFxuICAgICAgICAgICAgICAgICdzZWxlY3QnOiAnbWRpLWZvcm0tZHJvcGRvd24nLFxuICAgICAgICAgICAgICAgICdzZWxlY3RhamF4JzogJ21kaS1mb3JtLWRyb3Bkb3duJyxcbiAgICAgICAgICAgICAgICAnZm9yZWlnbmtleSc6ICdtZGkta2V5LWxpbmsnXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgcmV0dXJuIHR5cGVJY29uc1tmaWVsZC50eXBlSHRtbF0gfHwgJ21kaS1mb3JtLXRleHRib3gnO1xuICAgICAgICB9LFxuXG4gICAgICAgIHNob3dTbmFja2Jhcih0ZXh0LCBjb2xvcikge1xuICAgICAgICAgICAgdGhpcy5zbmFja2JhclRleHQgPSB0ZXh0O1xuICAgICAgICAgICAgdGhpcy5zbmFja2JhckNvbG9yID0gY29sb3I7XG4gICAgICAgICAgICB0aGlzLnNuYWNrYmFyID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cbn07XG48L3NjcmlwdD5cblxuPHN0eWxlIHNjb3BlZD5cbi5lbnRpdHktb3ZlcnJpZGVzLWNvbnRhaW5lciB7XG4gICAgbWFyZ2luLXRvcDogNjZweDtcbiAgICBtYXJnaW4tbGVmdDogMzdweDtcbiAgICBtYXJnaW4tcmlnaHQ6IDIwcHg7XG59XG5cbi8qIERhdGEgdGFibGUgcm93IGhvdmVyICovXG46ZGVlcCgudi1kYXRhLXRhYmxlIHRib2R5IHRyOmhvdmVyKSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjAyKSAhaW1wb3J0YW50O1xufVxuXG4udGhlbWUtLWRhcmsgOmRlZXAoLnYtZGF0YS10YWJsZSB0Ym9keSB0cjpob3Zlcikge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNSkgIWltcG9ydGFudDtcbn1cblxuLyogQ2FyZCBzdHlsaW5nICovXG46ZGVlcCgudi1jYXJkX190aXRsZSkge1xuICAgIGJvcmRlci1yYWRpdXM6IDRweCA0cHggMCAwO1xufVxuXG4vKiBDaGlwIGdyb3VwICovXG46ZGVlcCgudi1jaGlwLWdyb3VwKSB7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG59XG5cbi8qIEF2YXRhciB0cmFuc2l0aW9uICovXG4udi1hdmF0YXIge1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7XG59XG48L3N0eWxlPlxuIiwiPHRlbXBsYXRlPlxuICAgIDx2LWNhcmQ+XG4gICAgICAgIDx2LWNhcmQtdGl0bGUgY2xhc3M9XCJkLWZsZXggYWxpZ24tY2VudGVyXCI+XG4gICAgICAgICAgICA8di1pY29uIGxlZnQgY29sb3I9XCJpbmZvXCI+bWRpLWZpbGUtZG9jdW1lbnQtb3V0bGluZTwvdi1pY29uPlxuICAgICAgICAgICAge3sgVC50aXRsZSB9fVxuICAgICAgICAgICAgPHYtc3BhY2VyPjwvdi1zcGFjZXI+XG4gICAgICAgICAgICA8di1idG4gaWNvbiBAY2xpY2s9XCIkZW1pdCgnY2xvc2UnKVwiPlxuICAgICAgICAgICAgICAgIDx2LWljb24+bWRpLWNsb3NlPC92LWljb24+XG4gICAgICAgICAgICA8L3YtYnRuPlxuICAgICAgICA8L3YtY2FyZC10aXRsZT5cblxuICAgICAgICA8di1kaXZpZGVyPjwvdi1kaXZpZGVyPlxuXG4gICAgICAgIDx2LWNhcmQtdGV4dCBjbGFzcz1cInBhLTBcIj5cbiAgICAgICAgICAgIDx2LWNvbnRhaW5lciB2LWlmPVwibG9hZGluZ1wiIGNsYXNzPVwidGV4dC1jZW50ZXIgcHktMTBcIj5cbiAgICAgICAgICAgICAgICA8di1wcm9ncmVzcy1jaXJjdWxhciBpbmRldGVybWluYXRlIGNvbG9yPVwicHJpbWFyeVwiIHNpemU9XCI2NFwiPjwvdi1wcm9ncmVzcy1jaXJjdWxhcj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtM1wiPnt7IFQubG9hZGluZyB9fTwvZGl2PlxuICAgICAgICAgICAgPC92LWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgPHYtY29udGFpbmVyIHYtZWxzZS1pZj1cImZvcmVuc2ljRGF0YVwiIGZsdWlkPlxuICAgICAgICAgICAgICAgIDwhLS0gQUkgQWR2aWNlIEFsZXJ0IC0tPlxuICAgICAgICAgICAgICAgIDx2LWFsZXJ0IHYtaWY9XCJmb3JlbnNpY0RhdGEuYW5hbHlzZSAmJiBmb3JlbnNpY0RhdGEuYW5hbHlzZS5jb25zZWlsX3Jlc29sdXRpb25fYnlfQUlcIlxuICAgICAgICAgICAgICAgICAgICA6dHlwZT1cImdldEFsZXJ0VHlwZShmb3JlbnNpY0RhdGEuYW5hbHlzZS5uaXZlYXVfYWxlcnRlX2J5X0FJKVwiIHByb21pbmVudCBib3JkZXI9XCJsZWZ0XCIgY2xhc3M9XCJtYi00XCI+XG4gICAgICAgICAgICAgICAgICAgIDx2LXJvdyBhbGlnbj1cImNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHYtY29sIGNsYXNzPVwiZ3Jvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWg2IG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHYtaWNvbiBsZWZ0Pm1kaS1saWdodGJ1bGItb248L3YtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgVC5haUFkdmljZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgdi1odG1sPVwiZm9ybWF0QWR2aWNlKGZvcmVuc2ljRGF0YS5hbmFseXNlLmNvbnNlaWxfcmVzb2x1dGlvbl9ieV9BSSlcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdi1jb2w+XG4gICAgICAgICAgICAgICAgICAgIDwvdi1yb3c+XG4gICAgICAgICAgICAgICAgPC92LWFsZXJ0PlxuXG4gICAgICAgICAgICAgICAgPCEtLSBEb2N1bWVudCBJbmZvcm1hdGlvbiAtLT5cbiAgICAgICAgICAgICAgICA8di1jYXJkIGNsYXNzPVwibWItNFwiIG91dGxpbmVkPlxuICAgICAgICAgICAgICAgICAgICA8di1jYXJkLXRpdGxlIGNsYXNzPVwic3VidGl0bGUtMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHYtaWNvbiBsZWZ0IHNtYWxsPm1kaS1pbmZvcm1hdGlvbjwvdi1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgVC5kb2N1bWVudEluZm8gfX1cbiAgICAgICAgICAgICAgICAgICAgPC92LWNhcmQtdGl0bGU+XG4gICAgICAgICAgICAgICAgICAgIDx2LWNhcmQtdGV4dD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx2LXNpbXBsZS10YWJsZSBkZW5zZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48c3Ryb25nPnt7IFQuZmllbGRzLmlkIH19Ojwvc3Ryb25nPjwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgZm9yZW5zaWNEYXRhLmRldGFpbHNfaW5mby5pZCB9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PHN0cm9uZz57eyBULmZpZWxkcy5yZWYgfX06PC9zdHJvbmc+PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyBmb3JlbnNpY0RhdGEuZGV0YWlsc19pbmZvLnJlZiB9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48c3Ryb25nPnt7IFQuZmllbGRzLmVudGl0eSB9fTo8L3N0cm9uZz48L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7IGZvcmVuc2ljRGF0YS5kZXRhaWxzX2luZm8uY2xpZW50X25vbSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVuc2ljRGF0YS5kZXRhaWxzX2luZm8uZm91cm5pc3NldXJfbm9tIH19PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48c3Ryb25nPnt7IFQuZmllbGRzLm1vbnRhbnRfdHRjIH19Ojwvc3Ryb25nPjwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PHN0cm9uZz57eyBmb3JtYXRDdXJyZW5jeShmb3JlbnNpY0RhdGEuZGV0YWlsc19pbmZvLm1vbnRhbnRfdHRjKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyIHYtaWY9XCJmb3JlbnNpY0RhdGEuZGV0YWlsc19pbmZvLmRhdGVfY3JlYXRpb25fc3lzdGVtZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxzdHJvbmc+e3sgVC5maWVsZHMuY3JlYXRlZCB9fTo8L3N0cm9uZz48L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7IGZvcm1hdERhdGUoZm9yZW5zaWNEYXRhLmRldGFpbHNfaW5mby5kYXRlX2NyZWF0aW9uX3N5c3RlbWUpIH19PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48c3Ryb25nPnt7IFQuZmllbGRzLm1vZGlmaWVkIH19Ojwvc3Ryb25nPjwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZm9ybWF0RGF0ZShmb3JlbnNpY0RhdGEuZGV0YWlsc19pbmZvLmRhdGVfbW9kaWZpY2F0aW9uX3N5c3RlbWUpIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHYtY2hpcCB2LWlmPVwiaXNNb2RpZmllZCgpXCIgeC1zbWFsbCBjb2xvcj1cIndhcm5pbmdcIiBjbGFzcz1cIm1sLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgVC5tb2RpZmllZCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdi1jaGlwPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC92LXNpbXBsZS10YWJsZT5cbiAgICAgICAgICAgICAgICAgICAgPC92LWNhcmQtdGV4dD5cbiAgICAgICAgICAgICAgICA8L3YtY2FyZD5cblxuICAgICAgICAgICAgICAgIDwhLS0gRmluYW5jaWFsIEFuYWx5c2lzIC0tPlxuICAgICAgICAgICAgICAgIDx2LWNhcmQgY2xhc3M9XCJtYi00XCIgb3V0bGluZWQ+XG4gICAgICAgICAgICAgICAgICAgIDx2LWNhcmQtdGl0bGUgY2xhc3M9XCJzdWJ0aXRsZS0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8di1pY29uIGxlZnQgc21hbGw+bWRpLWNhbGN1bGF0b3I8L3YtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IFQuZmluYW5jaWFsQW5hbHlzaXMgfX1cbiAgICAgICAgICAgICAgICAgICAgPC92LWNhcmQtdGl0bGU+XG4gICAgICAgICAgICAgICAgICAgIDx2LWNhcmQtdGV4dD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx2LXJvdyBkZW5zZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8di1jb2wgY29scz1cIjEyXCIgc209XCI2XCIgbWQ9XCIzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2LWNhcmQgY29sb3I9XCJibHVlLWdyZXkgbGlnaHRlbi00XCIgZmxhdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2LWNhcmQtdGV4dCBjbGFzcz1cInRleHQtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcHRpb25cIj57eyBULmZpZWxkcy50b3RhbFR0YyB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWg2XCI+e3sgZm9ybWF0Q3VycmVuY3koZm9yZW5zaWNEYXRhLmFuYWx5c2UudG90YWxfdHRjKSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92LWNhcmQtdGV4dD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92LWNhcmQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92LWNvbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8di1jb2wgY29scz1cIjEyXCIgc209XCI2XCIgbWQ9XCIzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2LWNhcmQgOmNvbG9yPVwiZ2V0RGlhZ25vc3RpY0NvbG9yKCdyZWNvcmRlZCcpXCIgZmxhdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2LWNhcmQtdGV4dCBjbGFzcz1cInRleHQtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcHRpb25cIj57eyBULmZpZWxkcy5yZWNvcmRlZCB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWg2XCI+e3sgZm9ybWF0Q3VycmVuY3koZm9yZW5zaWNEYXRhLmFuYWx5c2UubW9udGFudF9lbnJlZ2lzdHJlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92LWNhcmQtdGV4dD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92LWNhcmQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92LWNvbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8di1jb2wgY29scz1cIjEyXCIgc209XCI2XCIgbWQ9XCIzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2LWNhcmQgOmNvbG9yPVwiZ2V0RGlhZ25vc3RpY0NvbG9yKCdyZWFsJylcIiBmbGF0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHYtY2FyZC10ZXh0IGNsYXNzPVwidGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FwdGlvblwiPnt7IFQuZmllbGRzLnJlYWxQYWlkIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtaDZcIj57eyBmb3JtYXRDdXJyZW5jeShmb3JlbnNpY0RhdGEuYW5hbHlzZS50b3RhbF9wYXllX3JlZWwpIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3YtY2FyZC10ZXh0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3YtY2FyZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3YtY29sPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2LWNvbCBjb2xzPVwiMTJcIiBzbT1cIjZcIiBtZD1cIjNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHYtY2FyZCA6Y29sb3I9XCJnZXREaWFnbm9zdGljQ29sb3IoJ2RpZmZlcmVuY2UnKVwiIGZsYXQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8di1jYXJkLXRleHQgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXB0aW9uXCI+e3sgVC5maWVsZHMuZGlmZmVyZW5jZSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWg2XCI+e3sgZm9ybWF0Q3VycmVuY3koZm9yZW5zaWNEYXRhLmFuYWx5c2UuZWNhcnQpIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHYtY2hpcCB4LXNtYWxsIDpjb2xvcj1cImdldERpYWdub3N0aWNDaGlwQ29sb3IoKVwiIGRhcmsgY2xhc3M9XCJtdC0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGdldERpYWdub3N0aWNMYWJlbCgpIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92LWNoaXA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3YtY2FyZC10ZXh0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3YtY2FyZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3YtY29sPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC92LXJvdz5cbiAgICAgICAgICAgICAgICAgICAgPC92LWNhcmQtdGV4dD5cbiAgICAgICAgICAgICAgICA8L3YtY2FyZD5cblxuICAgICAgICAgICAgICAgIDwhLS0gUGF5bWVudCBIaXN0b3J5IC0tPlxuICAgICAgICAgICAgICAgIDx2LWNhcmQgb3V0bGluZWQ+XG4gICAgICAgICAgICAgICAgICAgIDx2LWNhcmQtdGl0bGUgY2xhc3M9XCJzdWJ0aXRsZS0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8di1pY29uIGxlZnQgc21hbGw+bWRpLWhpc3Rvcnk8L3YtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IFQucGF5bWVudEhpc3RvcnkgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDx2LWNoaXAgc21hbGwgY2xhc3M9XCJtbC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZm9yZW5zaWNEYXRhLmhpc3RvcmlxdWVfcGFpZW1lbnRzLmxlbmd0aCB9fSB7eyBULnBheW1lbnRzIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3YtY2hpcD5cbiAgICAgICAgICAgICAgICAgICAgPC92LWNhcmQtdGl0bGU+XG4gICAgICAgICAgICAgICAgICAgIDx2LWNhcmQtdGV4dD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx2LWFsZXJ0IHYtaWY9XCJmb3JlbnNpY0RhdGEuaGlzdG9yaXF1ZV9wYWllbWVudHMubGVuZ3RoID09PSAwXCIgdHlwZT1cImluZm9cIiBkZW5zZSB0ZXh0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IFQubm9QYXltZW50cyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC92LWFsZXJ0PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8di1kYXRhLXRhYmxlIHYtZWxzZSA6aGVhZGVycz1cInBheW1lbnRIZWFkZXJzXCIgOml0ZW1zPVwiZm9yZW5zaWNEYXRhLmhpc3RvcmlxdWVfcGFpZW1lbnRzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6aXRlbXMtcGVyLXBhZ2U9XCI1XCIgZGVuc2UgY2xhc3M9XCJlbGV2YXRpb24tMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gU2V0dGxlbWVudCBJRCBDb2x1bW4gLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlIHYtc2xvdDppdGVtLnBhaWVtZW50c19pZD1cInsgaXRlbSB9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24tY2VudGVyXCIgc3R5bGU9XCJnYXA6IDRweDtcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2LXRvb2x0aXAgYm90dG9tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6YWN0aXZhdG9yPVwieyBvbiB9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2LWNoaXAgY29sb3I9XCJwcmltYXJ5XCIgb3V0bGluZWQgY2xpY2thYmxlIHYtb249XCJvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHYtaWNvbiBsZWZ0Pm1kaS1pZGVudGlmaWVyPC92LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLnBhaWVtZW50c19pZCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3YtY2hpcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+PHN0cm9uZz57eyBULnNldHRsZW1lbnRJZCB9fTo8L3N0cm9uZz4gI3t7IGl0ZW0ucGFpZW1lbnRzX2lkIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+PHN0cm9uZz57eyBULmZpZWxkcy5kYXRlIH19Ojwvc3Ryb25nPiB7eyBmb3JtYXREYXRlKGl0ZW0uZGF0ZV9wYWllbWVudClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgdi1pZj1cIml0ZW0udXRpbGlzYXRldXJfbm9tXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IFQuZmllbGRzLnVzZXIgfX06PC9zdHJvbmc+IHt7IGl0ZW0udXRpbGlzYXRldXJfbm9tIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92LXRvb2x0aXA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8di10b29sdGlwIGJvdHRvbT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGVtcGxhdGUgdi1zbG90OmFjdGl2YXRvcj1cInsgb24gfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8di1idG4gaWNvbiB4LXNtYWxsIHYtb249XCJvblwiIEBjbGljaz1cImNvcHlTZXR0bGVtZW50SWQoaXRlbS5wYWllbWVudHNfaWQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8di1pY29uIGNvbG9yPVwiZ3JleVwiPm1kaS1jb250ZW50LWNvcHk8L3YtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92LWJ0bj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IFQuY29weVNldHRsZW1lbnRJZCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdi10b29sdGlwPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBEYXRlIENvbHVtbiAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGVtcGxhdGUgdi1zbG90Oml0ZW0uZGF0ZV9wYWllbWVudD1cInsgaXRlbSB9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGZvcm1hdERhdGUoaXRlbS5kYXRlX3BhaWVtZW50KSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEFtb3VudCBDb2x1bW4gLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlIHYtc2xvdDppdGVtLm1vbnRhbnRfcmVnbGVtZW50PVwieyBpdGVtIH1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBmb3JtYXRDdXJyZW5jeShpdGVtLm1vbnRhbnRfcmVnbGVtZW50KSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIENyZWF0ZWQgQXQgQ29sdW1uIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6aXRlbS5kYXRlX2NyZWF0aW9uX3N5c3RlbWU9XCJ7IGl0ZW0gfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBmb3JtYXREYXRlVGltZShpdGVtLmRhdGVfY3JlYXRpb25fc3lzdGVtZSkgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBEdXBsaWNhdGUgRGV0ZWN0aW9uIENvbHVtbiAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGVtcGxhdGUgdi1zbG90Oml0ZW0uaXNfc3VzcGVjdGVkX2R1cGxpY2F0ZT1cInsgaXRlbSB9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2LWNoaXAgdi1pZj1cIml0ZW0uaXNfc3VzcGVjdGVkX2R1cGxpY2F0ZVwiIHgtc21hbGwgY29sb3I9XCJlcnJvclwiIGRhcms+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8di1pY29uIHgtc21hbGwgbGVmdD5tZGktY29udGVudC1kdXBsaWNhdGU8L3YtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IFQuZHVwbGljYXRlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdi1jaGlwPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiB2LWVsc2UgY2xhc3M9XCJncmV5LS10ZXh0XCI+4oCUPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFVzZXIgQ29sdW1uIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6aXRlbS51dGlsaXNhdGV1cl9lbWFpbD1cInsgaXRlbSB9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXB0aW9uXCIgdi1pZj1cIml0ZW0udXRpbGlzYXRldXJfbm9tXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLnV0aWxpc2F0ZXVyX25vbSB9fSB7eyBpdGVtLnV0aWxpc2F0ZXVyX3ByZW5vbSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyZXktLXRleHQgdGV4dC0tZGFya2VuLTFcIj57eyBpdGVtLnV0aWxpc2F0ZXVyX2VtYWlsIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiB2LWVsc2UgY2xhc3M9XCJncmV5LS10ZXh0XCI+4oCUPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3YtZGF0YS10YWJsZT5cbiAgICAgICAgICAgICAgICAgICAgPC92LWNhcmQtdGV4dD5cbiAgICAgICAgICAgICAgICA8L3YtY2FyZD5cbiAgICAgICAgICAgIDwvdi1jb250YWluZXI+XG4gICAgICAgIDwvdi1jYXJkLXRleHQ+XG5cbiAgICAgICAgPHYtZGl2aWRlcj48L3YtZGl2aWRlcj5cblxuICAgICAgICA8di1jYXJkLWFjdGlvbnM+XG4gICAgICAgICAgICA8di1zcGFjZXI+PC92LXNwYWNlcj5cbiAgICAgICAgICAgIDx2LWJ0biB0ZXh0IEBjbGljaz1cIiRlbWl0KCdjbG9zZScpXCI+XG4gICAgICAgICAgICAgICAge3sgVC5jbG9zZSB9fVxuICAgICAgICAgICAgPC92LWJ0bj5cbiAgICAgICAgICAgIDx2LWJ0biBjb2xvcj1cInN1Y2Nlc3NcIiBAY2xpY2s9XCIkZW1pdCgnZml4JywgZG9jdW1lbnQpXCIgOmRpc2FibGVkPVwiIWNhbkZpeFwiPlxuICAgICAgICAgICAgICAgIDx2LWljb24gbGVmdD5tZGktd3JlbmNoPC92LWljb24+XG4gICAgICAgICAgICAgICAge3sgVC5maXhOb3cgfX1cbiAgICAgICAgICAgIDwvdi1idG4+XG4gICAgICAgIDwvdi1jYXJkLWFjdGlvbnM+XG4gICAgPC92LWNhcmQ+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0PlxuY29uc3QgdHJhbnNsYXRpb25zID0ge1xuICAgIGZyOiB7XG4gICAgICAgIHRpdGxlOiBcIvCfpJYgQW5hbHlzZSBDb21wbMOodGUgcGFyIGwnSUFcIixcbiAgICAgICAgbG9hZGluZzogXCJMJ0lBIGFuYWx5c2UgbGUgZG9jdW1lbnQuLi5cIixcbiAgICAgICAgYWlBZHZpY2U6IFwi8J+SoSBSZWNvbW1hbmRhdGlvbiBkZSBsJ0lBXCIsXG4gICAgICAgIGRvY3VtZW50SW5mbzogXCJJbmZvcm1hdGlvbnMgZHUgRG9jdW1lbnRcIixcbiAgICAgICAgZmluYW5jaWFsQW5hbHlzaXM6IFwiQW5hbHlzZSBGaW5hbmNpw6hyZSBwYXIgbCdJQVwiLFxuICAgICAgICBwYXltZW50SGlzdG9yeTogXCJIaXN0b3JpcXVlIGRlcyBQYWllbWVudHMgRMOpdGVjdMOpc1wiLFxuICAgICAgICBwYXltZW50czogXCJwYWllbWVudHNcIixcbiAgICAgICAgbm9QYXltZW50czogXCJBdWN1biBwYWllbWVudCBkw6l0ZWN0w6kgcGFyIGwnSUFcIixcbiAgICAgICAgZHVwbGljYXRlOiBcIkRvdWJsb24gc3VzcGVjdFwiLFxuICAgICAgICBtb2RpZmllZDogXCJNb2RpZmnDqVwiLFxuICAgICAgICBjbG9zZTogXCJGZXJtZXJcIixcbiAgICAgICAgZml4Tm93OiBcIlbDqXJpZmllciBldCBWYWxpZGVyXCIsXG4gICAgICAgIGZpZWxkczoge1xuICAgICAgICAgICAgaWQ6IFwiSURcIixcbiAgICAgICAgICAgIHJlZjogXCJSw6lmw6lyZW5jZVwiLFxuICAgICAgICAgICAgZW50aXR5OiBcIkVudGl0w6lcIixcbiAgICAgICAgICAgIG1vbnRhbnRfdHRjOiBcIk1vbnRhbnQgVFRDXCIsXG4gICAgICAgICAgICBjcmVhdGVkOiBcIkNyw6nDqSBsZVwiLFxuICAgICAgICAgICAgbW9kaWZpZWQ6IFwiTW9kaWZpw6kgbGVcIixcbiAgICAgICAgICAgIHRvdGFsVHRjOiBcIlRvdGFsIFRUQ1wiLFxuICAgICAgICAgICAgcmVjb3JkZWQ6IFwiRW5yZWdpc3Ryw6lcIixcbiAgICAgICAgICAgIHJlYWxQYWlkOiBcIlBhecOpIFLDqWVsIChJQSlcIixcbiAgICAgICAgICAgIGRpZmZlcmVuY2U6IFwiw4ljYXJ0IETDqXRlY3TDqVwiLFxuICAgICAgICAgICAgc2V0dGxlbWVudElkOiBcIk7CsCBSw6hnbGVtZW50XCIsXG4gICAgICAgICAgICBkYXRlOiBcIkRhdGVcIixcbiAgICAgICAgICAgIGFtb3VudDogXCJNb250YW50XCIsXG4gICAgICAgICAgICBjcmVhdGVkQXQ6IFwiQ3LDqcOpIGxlXCIsXG4gICAgICAgICAgICBzdGF0dXM6IFwiU3RhdHV0XCIsXG4gICAgICAgICAgICB1c2VyOiBcIlV0aWxpc2F0ZXVyXCJcbiAgICAgICAgfSxcbiAgICAgICAgY29weVNldHRsZW1lbnRJZDogXCJDb3BpZXIgbGUgTsKwIGRlIHLDqGdsZW1lbnRcIixcbiAgICAgICAgc2V0dGxlbWVudENvcGllZDogXCJOwrAgZGUgcsOoZ2xlbWVudCBjb3Bpw6khXCIsXG4gICAgICAgIGRpYWdub3N0aWM6IHtcbiAgICAgICAgICAgIENPTkZPUk1FOiBcIkNvbmZvcm1lXCIsXG4gICAgICAgICAgICBTT1VTX0VWQUxVRTogXCJTb3VzLcOpdmFsdcOpXCIsXG4gICAgICAgICAgICBTVVJfRVZBTFVFOiBcIlN1ci3DqXZhbHXDqVwiXG4gICAgICAgIH1cbiAgICB9LFxuICAgIGFyOiB7XG4gICAgICAgIHRpdGxlOiBcIvCfpJYg2KrYrdmE2YrZhCDYtNin2YXZhCDYqNmI2KfYs9i32Kkg2KfZhNiw2YPYp9ihINin2YTYp9i12LfZhtin2LnZilwiLFxuICAgICAgICBsb2FkaW5nOiBcItin2YTYsNmD2KfYoSDYp9mE2KfYtdi32YbYp9i52Yog2YrYrdmE2YQg2KfZhNmI2KvZitmC2KkuLi5cIixcbiAgICAgICAgYWlBZHZpY2U6IFwi8J+SoSDYqtmI2LXZitipINin2YTYsNmD2KfYoSDYp9mE2KfYtdi32YbYp9i52YpcIixcbiAgICAgICAgZG9jdW1lbnRJbmZvOiBcItmF2LnZhNmI2YXYp9iqINin2YTZiNir2YrZgtipXCIsXG4gICAgICAgIGZpbmFuY2lhbEFuYWx5c2lzOiBcItin2YTYqtit2YTZitmEINin2YTZhdin2YTZiiDYqNin2YTYsNmD2KfYoSDYp9mE2KfYtdi32YbYp9i52YpcIixcbiAgICAgICAgcGF5bWVudEhpc3Rvcnk6IFwi2KfZhNmF2K/ZgdmI2LnYp9iqINin2YTZhdmD2KrYtNmB2KlcIixcbiAgICAgICAgcGF5bWVudHM6IFwi2YXYr9mB2YjYudin2KpcIixcbiAgICAgICAgbm9QYXltZW50czogXCLZhNmFINmK2YPYqti02YEg2KfZhNiw2YPYp9ihINin2YTYp9i12LfZhtin2LnZiiDYo9mKINmF2K/ZgdmI2LnYp9iqXCIsXG4gICAgICAgIGR1cGxpY2F0ZTogXCLZhdmD2LHYsSDZhdi02KrYqNmHXCIsXG4gICAgICAgIG1vZGlmaWVkOiBcItmF2LnYr9mEXCIsXG4gICAgICAgIGNsb3NlOiBcItil2LrZhNin2YJcIixcbiAgICAgICAgZml4Tm93OiBcItin2YTYqtit2YLZgiDZiNin2YTZhdi12KfYr9mC2KlcIixcbiAgICAgICAgZmllbGRzOiB7XG4gICAgICAgICAgICBpZDogXCLYp9mE2YXYudix2YFcIixcbiAgICAgICAgICAgIHJlZjogXCLYp9mE2YXYsdis2LlcIixcbiAgICAgICAgICAgIGVudGl0eTogXCLYp9mE2KzZh9ipXCIsXG4gICAgICAgICAgICBtb250YW50X3R0YzogXCLYp9mE2YXYqNmE2Log2KfZhNil2KzZhdin2YTZilwiLFxuICAgICAgICAgICAgY3JlYXRlZDogXCLYqtin2LHZitiuINin2YTYpdmG2LTYp9ihXCIsXG4gICAgICAgICAgICBtb2RpZmllZDogXCLYqtin2LHZitiuINin2YTYqti52K/ZitmEXCIsXG4gICAgICAgICAgICB0b3RhbFR0YzogXCLYp9mE2KXYrNmF2KfZhNmKXCIsXG4gICAgICAgICAgICByZWNvcmRlZDogXCLYp9mE2YXYs9is2YRcIixcbiAgICAgICAgICAgIHJlYWxQYWlkOiBcItin2YTZhdiv2YHZiNi5INin2YTZgdi52YTZiiAo2KfZhNiw2YPYp9ihINin2YTYp9i12LfZhtin2LnZiilcIixcbiAgICAgICAgICAgIGRpZmZlcmVuY2U6IFwi2KfZhNmB2LHZgiDYp9mE2YXZg9iq2LTZgVwiLFxuICAgICAgICAgICAgc2V0dGxlbWVudElkOiBcItix2YLZhSDYp9mE2KrYs9mI2YrYqVwiLFxuICAgICAgICAgICAgZGF0ZTogXCLYp9mE2KrYp9ix2YrYrlwiLFxuICAgICAgICAgICAgYW1vdW50OiBcItin2YTZhdio2YTYulwiLFxuICAgICAgICAgICAgY3JlYXRlZEF0OiBcItiq2KfYsdmK2K4g2KfZhNil2YbYtNin2KFcIixcbiAgICAgICAgICAgIHN0YXR1czogXCLYp9mE2K3Yp9mE2KlcIixcbiAgICAgICAgICAgIHVzZXI6IFwi2KfZhNmF2LPYqtiu2K/ZhVwiXG4gICAgICAgIH0sXG4gICAgICAgIGNvcHlTZXR0bGVtZW50SWQ6IFwi2YbYs9iuINix2YLZhSDYp9mE2KrYs9mI2YrYqVwiLFxuICAgICAgICBzZXR0bGVtZW50Q29waWVkOiBcItiq2YUg2YbYs9iuINix2YLZhSDYp9mE2KrYs9mI2YrYqSFcIixcbiAgICAgICAgZGlhZ25vc3RpYzoge1xuICAgICAgICAgICAgQ09ORk9STUU6IFwi2YXYt9in2KjZglwiLFxuICAgICAgICAgICAgU09VU19FVkFMVUU6IFwi2KPZgtmEINmF2YYg2KfZhNmC2YrZhdipXCIsXG4gICAgICAgICAgICBTVVJfRVZBTFVFOiBcItij2LnZhNmJINmF2YYg2KfZhNmC2YrZhdipXCJcbiAgICAgICAgfVxuICAgIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgICBwcm9wczoge1xuICAgICAgICBkb2N1bWVudDoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgZm9yZW5zaWNEYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICBkZWZhdWx0OiBudWxsXG4gICAgICAgIH0sXG4gICAgICAgIGxvYWRpbmc6IHtcbiAgICAgICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgICAgICBkZWZhdWx0OiBmYWxzZVxuICAgICAgICB9LFxuICAgICAgICBsYW5nOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICBkZWZhdWx0OiAnZnInXG4gICAgICAgIH1cbiAgICB9LFxuICAgIGNvbXB1dGVkOiB7XG4gICAgICAgIFQoKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJhbnNsYXRpb25zW3RoaXMubGFuZ10gfHwgdHJhbnNsYXRpb25zLmZyO1xuICAgICAgICB9LFxuICAgICAgICBwYXltZW50SGVhZGVycygpIHtcbiAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgeyB0ZXh0OiB0aGlzLlQuZmllbGRzLnNldHRsZW1lbnRJZCwgdmFsdWU6ICdwYWllbWVudHNfaWQnLCBhbGlnbjogJ2NlbnRlcicgfSxcbiAgICAgICAgICAgICAgICB7IHRleHQ6IHRoaXMuVC5maWVsZHMuZGF0ZSwgdmFsdWU6ICdkYXRlX3BhaWVtZW50JyB9LFxuICAgICAgICAgICAgICAgIHsgdGV4dDogdGhpcy5ULmZpZWxkcy5hbW91bnQsIHZhbHVlOiAnbW9udGFudF9yZWdsZW1lbnQnLCBhbGlnbjogJ2VuZCcgfSxcbiAgICAgICAgICAgICAgICB7IHRleHQ6IHRoaXMuVC5maWVsZHMuY3JlYXRlZEF0LCB2YWx1ZTogJ2RhdGVfY3JlYXRpb25fc3lzdGVtZScgfSxcbiAgICAgICAgICAgICAgICB7IHRleHQ6IHRoaXMuVC5maWVsZHMuc3RhdHVzLCB2YWx1ZTogJ2lzX3N1c3BlY3RlZF9kdXBsaWNhdGUnLCBhbGlnbjogJ2NlbnRlcicgfSxcbiAgICAgICAgICAgICAgICB7IHRleHQ6IHRoaXMuVC5maWVsZHMudXNlciwgdmFsdWU6ICd1dGlsaXNhdGV1cl9lbWFpbCcgfVxuICAgICAgICAgICAgXTtcbiAgICAgICAgfSxcbiAgICAgICAgY2FuRml4KCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZm9yZW5zaWNEYXRhICYmXG4gICAgICAgICAgICAgICAgdGhpcy5mb3JlbnNpY0RhdGEuYW5hbHlzZSAmJlxuICAgICAgICAgICAgICAgIHRoaXMuZm9yZW5zaWNEYXRhLmFuYWx5c2UuZGlhZ25vc3RpYyAhPT0gJ0NPTkZPUk1FJztcbiAgICAgICAgfVxuICAgIH0sXG4gICAgbWV0aG9kczoge1xuICAgICAgICBmb3JtYXRDdXJyZW5jeSh2YWx1ZSkge1xuICAgICAgICAgICAgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQpIHJldHVybiAnTi9BJztcbiAgICAgICAgICAgIGNvbnN0IG51bWJlciA9IHBhcnNlRmxvYXQodmFsdWUpO1xuICAgICAgICAgICAgaWYgKGlzTmFOKG51bWJlcikpIHJldHVybiAnTi9BJztcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIudG9GaXhlZCgyKS5yZXBsYWNlKC9cXGQoPz0oXFxkezN9KStcXC4pL2csICckJiwnKTtcbiAgICAgICAgfSxcbiAgICAgICAgZm9ybWF0RGF0ZShkYXRlU3RyaW5nKSB7XG4gICAgICAgICAgICBpZiAoIWRhdGVTdHJpbmcpIHJldHVybiAnTi9BJztcbiAgICAgICAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZShkYXRlU3RyaW5nKTtcbiAgICAgICAgICAgIHJldHVybiBkYXRlLnRvTG9jYWxlRGF0ZVN0cmluZyh0aGlzLmxhbmcgPT09ICdhcicgPyAnYXItTUEnIDogJ2ZyLUZSJyk7XG4gICAgICAgIH0sXG4gICAgICAgIGZvcm1hdERhdGVUaW1lKGRhdGVTdHJpbmcpIHtcbiAgICAgICAgICAgIGlmICghZGF0ZVN0cmluZykgcmV0dXJuICdOL0EnO1xuICAgICAgICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKGRhdGVTdHJpbmcpO1xuICAgICAgICAgICAgcmV0dXJuIGRhdGUudG9Mb2NhbGVTdHJpbmcodGhpcy5sYW5nID09PSAnYXInID8gJ2FyLU1BJyA6ICdmci1GUicpO1xuICAgICAgICB9LFxuICAgICAgICBmb3JtYXRBZHZpY2UoYWR2aWNlKSB7XG4gICAgICAgICAgICBpZiAoIWFkdmljZSkgcmV0dXJuICcnO1xuICAgICAgICAgICAgLy8gQ29udmVydCBsaW5lIGJyZWFrcyB0byA8YnI+IGZvciBIVE1MIGRpc3BsYXlcbiAgICAgICAgICAgIHJldHVybiBhZHZpY2UucmVwbGFjZSgvXFxuL2csICc8YnI+Jyk7XG4gICAgICAgIH0sXG4gICAgICAgIGlzTW9kaWZpZWQoKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuZm9yZW5zaWNEYXRhIHx8ICF0aGlzLmZvcmVuc2ljRGF0YS5kZXRhaWxzX2luZm8pIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmZvcmVuc2ljRGF0YS5kZXRhaWxzX2luZm8uZGF0ZV9jcmVhdGlvbl9zeXN0ZW1lICE9PVxuICAgICAgICAgICAgICAgIHRoaXMuZm9yZW5zaWNEYXRhLmRldGFpbHNfaW5mby5kYXRlX21vZGlmaWNhdGlvbl9zeXN0ZW1lO1xuICAgICAgICB9LFxuICAgICAgICBnZXRBbGVydFR5cGUobGV2ZWwpIHtcbiAgICAgICAgICAgIGNvbnN0IHR5cGVzID0ge1xuICAgICAgICAgICAgICAgICdzdWNjZXNzJzogJ3N1Y2Nlc3MnLFxuICAgICAgICAgICAgICAgICdpbmZvJzogJ2luZm8nLFxuICAgICAgICAgICAgICAgICd3YXJuaW5nJzogJ3dhcm5pbmcnLFxuICAgICAgICAgICAgICAgICdkYW5nZXInOiAnZXJyb3InXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgcmV0dXJuIHR5cGVzW2xldmVsXSB8fCAnaW5mbyc7XG4gICAgICAgIH0sXG4gICAgICAgIGdldERpYWdub3N0aWNDb2xvcih0eXBlKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuZm9yZW5zaWNEYXRhIHx8ICF0aGlzLmZvcmVuc2ljRGF0YS5hbmFseXNlKSByZXR1cm4gJ2dyZXkgbGlnaHRlbi0zJztcblxuICAgICAgICAgICAgY29uc3QgZGlhZ25vc3RpYyA9IHRoaXMuZm9yZW5zaWNEYXRhLmFuYWx5c2UuZGlhZ25vc3RpYztcblxuICAgICAgICAgICAgaWYgKHR5cGUgPT09ICdyZWNvcmRlZCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGlhZ25vc3RpYyA9PT0gJ1NPVVNfRVZBTFVFJyA/ICdyZWQgbGlnaHRlbi00JyA6XG4gICAgICAgICAgICAgICAgICAgIGRpYWdub3N0aWMgPT09ICdTVVJfRVZBTFVFJyA/ICdvcmFuZ2UgbGlnaHRlbi00JyA6XG4gICAgICAgICAgICAgICAgICAgICAgICAnZ3JleSBsaWdodGVuLTMnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHR5cGUgPT09ICdyZWFsJykge1xuICAgICAgICAgICAgICAgIHJldHVybiAnZ3JlZW4gbGlnaHRlbi00JztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0eXBlID09PSAnZGlmZmVyZW5jZScpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGlhZ25vc3RpYyA9PT0gJ0NPTkZPUk1FJyA/ICdncmVlbiBsaWdodGVuLTQnIDogJ3JlZCBsaWdodGVuLTQnO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gJ2dyZXkgbGlnaHRlbi0zJztcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0RGlhZ25vc3RpY0NoaXBDb2xvcigpIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5mb3JlbnNpY0RhdGEgfHwgIXRoaXMuZm9yZW5zaWNEYXRhLmFuYWx5c2UpIHJldHVybiAnZ3JleSc7XG4gICAgICAgICAgICBjb25zdCBkaWFnbm9zdGljID0gdGhpcy5mb3JlbnNpY0RhdGEuYW5hbHlzZS5kaWFnbm9zdGljO1xuICAgICAgICAgICAgcmV0dXJuIGRpYWdub3N0aWMgPT09ICdDT05GT1JNRScgPyAnc3VjY2VzcycgOiAnZXJyb3InO1xuICAgICAgICB9LFxuICAgICAgICBnZXREaWFnbm9zdGljTGFiZWwoKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuZm9yZW5zaWNEYXRhIHx8ICF0aGlzLmZvcmVuc2ljRGF0YS5hbmFseXNlKSByZXR1cm4gJ04vQSc7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5ULmRpYWdub3N0aWNbdGhpcy5mb3JlbnNpY0RhdGEuYW5hbHlzZS5kaWFnbm9zdGljXSB8fCB0aGlzLmZvcmVuc2ljRGF0YS5hbmFseXNlLmRpYWdub3N0aWM7XG4gICAgICAgIH0sXG4gICAgICAgIG5hdmlnYXRlVG9TZXR0bGVtZW50KHBheW1lbnQpIHtcbiAgICAgICAgICAgIGlmICghcGF5bWVudC5wYWllbWVudHNfaWQpIHJldHVybjtcblxuICAgICAgICAgICAgLy8g2KrYrdiv2YrYryDZhtmI2Lkg2KfZhNiq2LPZiNmK2Kkg2KjZhtin2KHZiyDYudmE2Ykg2YbZiNi5INin2YTZiNir2YrZgtipXG4gICAgICAgICAgICBjb25zdCBpc0NsaWVudCA9IHRoaXMuZG9jdW1lbnQuY2xpZW50X2lkICE9PSB1bmRlZmluZWQ7XG4gICAgICAgICAgICBjb25zdCBwYXRoID0gaXNDbGllbnRcbiAgICAgICAgICAgICAgICA/IGAvcmVjZXR0ZXMvc2hvdy8ke3BheW1lbnQucGFpZW1lbnRzX2lkfWBcbiAgICAgICAgICAgICAgICA6IGAvZGVwZW5zZXMvc2hvdy8ke3BheW1lbnQucGFpZW1lbnRzX2lkfWA7XG5cbiAgICAgICAgICAgIC8vINmB2KrYrSDZgdmKINiq2KjZiNmK2Kgg2KzYr9mK2K9cbiAgICAgICAgICAgIHdpbmRvdy5vcGVuKHBhdGgsICdfYmxhbmsnKTtcbiAgICAgICAgfSxcbiAgICAgICAgY29weVNldHRsZW1lbnRJZChzZXR0bGVtZW50SWQpIHtcbiAgICAgICAgICAgIGlmICghc2V0dGxlbWVudElkKSByZXR1cm47XG5cbiAgICAgICAgICAgIC8vINmG2LPYriDYp9mE2YbYtSDYpdmE2Ykg2KfZhNit2KfZgdi42KlcbiAgICAgICAgICAgIGNvbnN0IHRleHRUb0NvcHkgPSBgaWQ9PT0ke3NldHRsZW1lbnRJZH1+JHtzZXR0bGVtZW50SWR9YDtcblxuICAgICAgICAgICAgLy8g2KfYs9iq2K7Yr9in2YUgQ2xpcGJvYXJkIEFQSSDYp9mE2K3Yr9mK2KtcbiAgICAgICAgICAgIGlmIChuYXZpZ2F0b3IuY2xpcGJvYXJkICYmIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KSB7XG4gICAgICAgICAgICAgICAgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQodGV4dFRvQ29weSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd0NvcHlOb3RpZmljYXRpb24oKTtcbiAgICAgICAgICAgICAgICB9KS5jYXRjaChlcnIgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gY29weTonLCBlcnIpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZhbGxiYWNrQ29weVRvQ2xpcGJvYXJkKHRleHRUb0NvcHkpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZhbGxiYWNrQ29weVRvQ2xpcGJvYXJkKHRleHRUb0NvcHkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBmYWxsYmFja0NvcHlUb0NsaXBib2FyZCh0ZXh0KSB7XG4gICAgICAgICAgICAvLyDYt9ix2YrZgtipINio2K/ZitmE2Kkg2YTZhNmF2KrYtdmB2K3Yp9iqINin2YTZgtiv2YrZhdipXG4gICAgICAgICAgICBjb25zdCB0ZXh0QXJlYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RleHRhcmVhJyk7XG4gICAgICAgICAgICB0ZXh0QXJlYS52YWx1ZSA9IHRleHQ7XG4gICAgICAgICAgICB0ZXh0QXJlYS5zdHlsZS5wb3NpdGlvbiA9ICdmaXhlZCc7XG4gICAgICAgICAgICB0ZXh0QXJlYS5zdHlsZS5sZWZ0ID0gJy05OTk5OTlweCc7XG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRleHRBcmVhKTtcbiAgICAgICAgICAgIHRleHRBcmVhLnNlbGVjdCgpO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgnY29weScpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2hvd0NvcHlOb3RpZmljYXRpb24oKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZhbGxiYWNrIGNvcHkgZmFpbGVkOicsIGVycik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHRleHRBcmVhKTtcbiAgICAgICAgfSxcbiAgICAgICAgc2hvd0NvcHlOb3RpZmljYXRpb24oKSB7XG4gICAgICAgICAgICAvLyDYudix2LYg2KXYtNi52KfYsSAo2YrZhdmD2YYg2KfYs9iq2K7Yr9in2YUgdnVldGlmeSBzbmFja2JhciDYo9mIIGFsZXJ0INio2LPZiti3KVxuICAgICAgICAgICAgLy8g2YHZiiDYrdin2YQg2YPYp9mGIHZ1ZXRpZnkg2YXYqtin2K3Yp9mL2Iwg2KfYs9iq2K7Yr9mFOlxuICAgICAgICAgICAgLy8gdGhpcy4kcm9vdC4kZW1pdCgnc2hvdy1zbmFja2JhcicsIHsgdGV4dDogdGhpcy5ULnNldHRsZW1lbnRDb3BpZWQsIGNvbG9yOiAnc3VjY2VzcycgfSk7XG5cbiAgICAgICAgICAgIC8vINit2KfZhNmK2KfZi9iMINin2LPYqtiu2K/Yp9mFIGFsZXJ0INio2LPZiti3XG4gICAgICAgICAgICAvLyDZgdmKINin2YTYqNmK2KbYqSDYp9mE2K3ZgtmK2YLZitip2Iwg2YrZj9mB2LbZhCDYp9iz2KrYrtiv2KfZhSBzbmFja2JhclxuICAgICAgICAgICAgaWYgKHRoaXMuJHJvb3QgJiYgdGhpcy4kcm9vdC4kZW1pdCkge1xuICAgICAgICAgICAgICAgIHRoaXMuJHJvb3QuJGVtaXQoJ3Nob3ctc25hY2tiYXInLCB7XG4gICAgICAgICAgICAgICAgICAgIHRleHQ6IHRoaXMuVC5zZXR0bGVtZW50Q29waWVkLFxuICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ3N1Y2Nlc3MnLFxuICAgICAgICAgICAgICAgICAgICB0aW1lb3V0OiAyMDAwXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59O1xuPC9zY3JpcHQ+XG5cbjxzdHlsZSBzY29wZWQ+XG4udi1jYXJkX190ZXh0IHtcbiAgICBtYXgtaGVpZ2h0OiA3MHZoO1xuICAgIG92ZXJmbG93LXk6IGF1dG87XG59XG48L3N0eWxlPlxuIiwiPHRlbXBsYXRlPlxuICAgIDx2LWNhcmQ+XG4gICAgICAgIDx2LWNhcmQtdGl0bGUgY2xhc3M9XCJoZWFkbGluZVwiPlxuICAgICAgICAgICAgPHYtaWNvbiBsZWZ0IGNvbG9yPVwid2FybmluZ1wiPm1kaS1hbGVydDwvdi1pY29uPlxuICAgICAgICAgICAge3sgVC50aXRsZSB9fVxuICAgICAgICA8L3YtY2FyZC10aXRsZT5cblxuICAgICAgICA8di1kaXZpZGVyPjwvdi1kaXZpZGVyPlxuXG4gICAgICAgIDx2LWNhcmQtdGV4dCBjbGFzcz1cInB0LTRcIj5cbiAgICAgICAgICAgIDwhLS0gRG9jdW1lbnQgU3VtbWFyeSAtLT5cbiAgICAgICAgICAgIDx2LWFsZXJ0IHR5cGU9XCJpbmZvXCIgdGV4dCBib3JkZXI9XCJsZWZ0XCIgY2xhc3M9XCJtYi00XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtc3VidGl0bGUtMSBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgVC5kb2N1bWVudFJlZiB9fTo8L3N0cm9uZz4ge3sgZG9jdW1lbnQucmVmIH19XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtc3VidGl0bGUtMlwiPlxuICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IFQuZG9jdW1lbnRJZCB9fTo8L3N0cm9uZz4ge3sgZG9jdW1lbnQuaWQgfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvdi1hbGVydD5cblxuICAgICAgICAgICAgPCEtLSBDdXJyZW50IHZzIFByb3Bvc2VkIENoYW5nZXMgLS0+XG4gICAgICAgICAgICA8di1jYXJkIG91dGxpbmVkIGNsYXNzPVwibWItNFwiPlxuICAgICAgICAgICAgICAgIDx2LWNhcmQtdGl0bGUgY2xhc3M9XCJzdWJ0aXRsZS0xXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IFQucHJvcG9zZWRDaGFuZ2VzIH19XG4gICAgICAgICAgICAgICAgPC92LWNhcmQtdGl0bGU+XG4gICAgICAgICAgICAgICAgPHYtY2FyZC10ZXh0PlxuICAgICAgICAgICAgICAgICAgICA8di1zaW1wbGUtdGFibGUgZGVuc2U+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGVtcGxhdGUgdi1zbG90OmRlZmF1bHQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoZWFkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+e3sgVC5maWVsZCB9fTwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJ0ZXh0LXJpZ2h0XCI+e3sgVC5jdXJyZW50VmFsdWUgfX08L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwidGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8di1pY29uIHNtYWxsPm1kaS1hcnJvdy1yaWdodDwvdi1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRleHQtcmlnaHRcIj57eyBULm5ld1ZhbHVlIH19PC90aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxzdHJvbmc+e3sgVC5kZWphcmVnbGUgfX08L3N0cm9uZz48L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1yaWdodCBlcnJvci0tdGV4dFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgZm9ybWF0Q3VycmVuY3koZG9jdW1lbnQub2xkX2RlamFyZWdsZSkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2LWljb24gc21hbGwgY29sb3I9XCJwcmltYXJ5XCI+bWRpLWFycm93LXJpZ2h0PC92LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1yaWdodCBzdWNjZXNzLS10ZXh0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBmb3JtYXRDdXJyZW5jeShkb2N1bWVudC5uZXdfZGVqYXJlZ2xlKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxzdHJvbmc+e3sgVC5kaWZmZXJlbmNlIH19PC9zdHJvbmc+PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPVwiM1wiIGNsYXNzPVwidGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8di1jaGlwIDpjb2xvcj1cImRvY3VtZW50LmRpZmZlcmVuY2UgPiAwID8gJ3dhcm5pbmcnIDogJ2luZm8nXCIgZGFyaz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZm9ybWF0Q3VycmVuY3koZG9jdW1lbnQuZGlmZmVyZW5jZSkgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3YtY2hpcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgIDwvdi1zaW1wbGUtdGFibGU+XG4gICAgICAgICAgICAgICAgPC92LWNhcmQtdGV4dD5cbiAgICAgICAgICAgIDwvdi1jYXJkPlxuXG4gICAgICAgICAgICA8IS0tIFdhcm5pbmcgTWVzc2FnZSAtLT5cbiAgICAgICAgICAgIDx2LWFsZXJ0IHR5cGU9XCJ3YXJuaW5nXCIgcHJvbWluZW50IGJvcmRlcj1cImxlZnRcIiB2LWlmPVwiIWZpeGluZyAmJiAhZml4ZWRcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1zdWJ0aXRsZS0xIG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgPHYtaWNvbiBsZWZ0Pm1kaS1pbmZvcm1hdGlvbjwvdi1pY29uPlxuICAgICAgICAgICAgICAgICAgICB7eyBULndhcm5pbmdUaXRsZSB9fVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXY+e3sgVC53YXJuaW5nTWVzc2FnZSB9fTwvZGl2PlxuICAgICAgICAgICAgPC92LWFsZXJ0PlxuXG4gICAgICAgICAgICA8IS0tIExvYWRpbmcgU3RhdGUgLS0+XG4gICAgICAgICAgICA8di1hbGVydCB2LWlmPVwiZml4aW5nXCIgdHlwZT1cImluZm9cIiB0ZXh0IGNsYXNzPVwibWItMFwiPlxuICAgICAgICAgICAgICAgIDx2LXJvdyBhbGlnbj1cImNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICA8di1jb2wgY2xhc3M9XCJncm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBULmZpeGluZyB9fVxuICAgICAgICAgICAgICAgICAgICA8L3YtY29sPlxuICAgICAgICAgICAgICAgICAgICA8di1jb2wgY2xhc3M9XCJzaHJpbmtcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx2LXByb2dyZXNzLWNpcmN1bGFyIGluZGV0ZXJtaW5hdGUgY29sb3I9XCJwcmltYXJ5XCI+PC92LXByb2dyZXNzLWNpcmN1bGFyPlxuICAgICAgICAgICAgICAgICAgICA8L3YtY29sPlxuICAgICAgICAgICAgICAgIDwvdi1yb3c+XG4gICAgICAgICAgICA8L3YtYWxlcnQ+XG5cbiAgICAgICAgICAgIDwhLS0gU3VjY2VzcyBTdGF0ZSAtLT5cbiAgICAgICAgICAgIDx2LWFsZXJ0IHYtaWY9XCJmaXhlZFwiIHR5cGU9XCJzdWNjZXNzXCIgcHJvbWluZW50IGJvcmRlcj1cImxlZnRcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1zdWJ0aXRsZS0xIG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgPHYtaWNvbiBsZWZ0Pm1kaS1jaGVjay1jaXJjbGU8L3YtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAge3sgVC5zdWNjZXNzVGl0bGUgfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2Pnt7IFQuc3VjY2Vzc01lc3NhZ2UgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IHYtaWY9XCJmaXhSZXN1bHRcIiBjbGFzcz1cIm10LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IFQub2xkVmFsdWUgfX06IHt7IGZvcm1hdEN1cnJlbmN5KGZpeFJlc3VsdC5vbGRfZGVqYXJlZ2xlKSB9fTwvc21hbGw+PGJyPlxuICAgICAgICAgICAgICAgICAgICA8c21hbGw+e3sgVC5uZXdWYWx1ZSB9fToge3sgZm9ybWF0Q3VycmVuY3koZml4UmVzdWx0Lm5ld19kZWphcmVnbGUpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvdi1hbGVydD5cblxuICAgICAgICAgICAgPCEtLSBFcnJvciBTdGF0ZSAtLT5cbiAgICAgICAgICAgIDx2LWFsZXJ0IHYtaWY9XCJlcnJvclwiIHR5cGU9XCJlcnJvclwiIHByb21pbmVudCBib3JkZXI9XCJsZWZ0XCIgZGlzbWlzc2libGUgQGlucHV0PVwiZXJyb3IgPSBudWxsXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtc3VidGl0bGUtMSBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgIDx2LWljb24gbGVmdD5tZGktYWxlcnQtY2lyY2xlPC92LWljb24+XG4gICAgICAgICAgICAgICAgICAgIHt7IFQuZXJyb3JUaXRsZSB9fVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXY+e3sgZXJyb3IgfX08L2Rpdj5cbiAgICAgICAgICAgIDwvdi1hbGVydD5cbiAgICAgICAgPC92LWNhcmQtdGV4dD5cblxuICAgICAgICA8di1kaXZpZGVyPjwvdi1kaXZpZGVyPlxuXG4gICAgICAgIDx2LWNhcmQtYWN0aW9ucz5cbiAgICAgICAgICAgIDx2LXNwYWNlcj48L3Ytc3BhY2VyPlxuICAgICAgICAgICAgPHYtYnRuIHRleHQgQGNsaWNrPVwiaGFuZGxlQ2xvc2VcIiA6ZGlzYWJsZWQ9XCJmaXhpbmdcIj5cbiAgICAgICAgICAgICAgICB7eyBmaXhlZCA/IFQuY2xvc2UgOiBULmNhbmNlbCB9fVxuICAgICAgICAgICAgPC92LWJ0bj5cbiAgICAgICAgICAgIDx2LWJ0biB2LWlmPVwiIWZpeGVkXCIgY29sb3I9XCJzdWNjZXNzXCIgQGNsaWNrPVwiZXhlY3V0ZUZpeFwiIDpsb2FkaW5nPVwiZml4aW5nXCIgOmRpc2FibGVkPVwiZml4aW5nXCI+XG4gICAgICAgICAgICAgICAgPHYtaWNvbiBsZWZ0Pm1kaS13cmVuY2g8L3YtaWNvbj5cbiAgICAgICAgICAgICAgICB7eyBULmNvbmZpcm0gfX1cbiAgICAgICAgICAgIDwvdi1idG4+XG4gICAgICAgIDwvdi1jYXJkLWFjdGlvbnM+XG4gICAgPC92LWNhcmQ+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0PlxuaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcblxuY29uc3QgdHJhbnNsYXRpb25zID0ge1xuICAgIGZyOiB7XG4gICAgICAgIHRpdGxlOiBcIvCfpJYgQW5vbWFsaWUgRMOpdGVjdMOpZSBwYXIgbCdJQVwiLFxuICAgICAgICBkb2N1bWVudFJlZjogXCJSw6lmw6lyZW5jZVwiLFxuICAgICAgICBkb2N1bWVudElkOiBcIklEIERvY3VtZW50XCIsXG4gICAgICAgIHByb3Bvc2VkQ2hhbmdlczogXCJBbmFseXNlIGRlIGwnSUEgLSBSw6ljb25jaWxpYXRpb24gRMOpdGVjdMOpZVwiLFxuICAgICAgICBmaWVsZDogXCJDaGFtcFwiLFxuICAgICAgICBjdXJyZW50VmFsdWU6IFwiVmFsZXVyIEVucmVnaXN0csOpZVwiLFxuICAgICAgICBuZXdWYWx1ZTogXCJWYWxldXIgQ2FsY3Vsw6llIHBhciBsJ0lBIChzZWxvbiBwYWllbWVudHMpXCIsXG4gICAgICAgIGRlamFyZWdsZTogXCJEw6lqw6AgUsOpZ2zDqVwiLFxuICAgICAgICBkaWZmZXJlbmNlOiBcIsOJY2FydCBEw6l0ZWN0w6kgcGFyIGwnSUFcIixcbiAgICAgICAgd2FybmluZ1RpdGxlOiBcIuKaoO+4jyBMJ0lBIGEgZMOpdGVjdMOpIHVuZSBpbmNvaMOpcmVuY2UgZmluYW5jacOocmVcIixcbiAgICAgICAgd2FybmluZ01lc3NhZ2U6IFwiTm90cmUgaW50ZWxsaWdlbmNlIGFydGlmaWNpZWxsZSBhIGFuYWx5c8OpIGNlIGRvY3VtZW50IGV0IGTDqXRlY3TDqSB1biDDqWNhcnQgZW50cmUgbGVzIHBhaWVtZW50cyBlbnJlZ2lzdHLDqXMgZXQgbGUgc29sZGUuIFZldWlsbGV6IHbDqXJpZmllciBsZXMgZG9ubsOpZXMgZGFucyBsZSBzeXN0w6htZSBzb3VyY2UuIEVuIGNvbmZpcm1hbnQsIHZvdXMgdmFsaWRleiBxdWUgbGVzIGluZm9ybWF0aW9ucyBjaS1kZXNzdXMgc29udCBDT1JSRUNURVMuIFNpIGwnSUEgcydlc3QgdHJvbXDDqWUgb3Ugc2kgbGVzIGRvbm7DqWVzIHNvbnQgaW5jb3JyZWN0ZXMsIGNvcnJpZ2V6LWxlcyBkJ2Fib3JkIGRhbnMgbGUgc3lzdMOobWUgc291cmNlIGF2YW50IGRlIHZhbGlkZXIuXCIsXG4gICAgICAgIGZpeGluZzogXCJFbnJlZ2lzdHJlbWVudCBkZSB2b3RyZSB2YWxpZGF0aW9uLi4uXCIsXG4gICAgICAgIHN1Y2Nlc3NUaXRsZTogXCLinJMgVmFsaWRhdGlvbiBFbnJlZ2lzdHLDqWVcIixcbiAgICAgICAgc3VjY2Vzc01lc3NhZ2U6IFwiVm91cyBhdmV6IHZhbGlkw6kgY2V0dGUgcsOpY29uY2lsaWF0aW9uLiBMJ0lBIGNvbnRpbnVlcmEgw6AgYXBwcmVuZHJlIGRlIHZvcyBkw6ljaXNpb25zLlwiLFxuICAgICAgICBlcnJvclRpdGxlOiBcIkVycmV1clwiLFxuICAgICAgICBvbGRWYWx1ZTogXCJBbmNpZW5uZSB2YWxldXJcIixcbiAgICAgICAgY2FuY2VsOiBcIkFubnVsZXJcIixcbiAgICAgICAgY2xvc2U6IFwiRmVybWVyXCIsXG4gICAgICAgIGNvbmZpcm06IFwi4pyTIEonYWkgdsOpcmlmacOpIDogSmUgdmFsaWRlIGNldHRlIHLDqWNvbmNpbGlhdGlvbiBmaW5hbmNpw6hyZVwiXG4gICAgfSxcbiAgICBhcjoge1xuICAgICAgICB0aXRsZTogXCLwn6SWINmF2LTZg9mE2Kkg2KfZg9iq2LTZgdmH2Kcg2KfZhNiw2YPYp9ihINin2YTYp9i12LfZhtin2LnZilwiLFxuICAgICAgICBkb2N1bWVudFJlZjogXCLYp9mE2YXYsdis2LlcIixcbiAgICAgICAgZG9jdW1lbnRJZDogXCLZhdi52LHZgSDYp9mE2YjYq9mK2YLYqVwiLFxuICAgICAgICBwcm9wb3NlZENoYW5nZXM6IFwi2KrYrdmE2YrZhCDYp9mE2LDZg9in2KEg2KfZhNin2LXYt9mG2KfYudmKIC0g2KrYs9mI2YrYqSDZhdmD2KrYtNmB2KlcIixcbiAgICAgICAgZmllbGQ6IFwi2KfZhNit2YLZhFwiLFxuICAgICAgICBjdXJyZW50VmFsdWU6IFwi2KfZhNmC2YrZhdipINin2YTZhdiz2KzZhNipXCIsXG4gICAgICAgIG5ld1ZhbHVlOiBcItin2YTZgtmK2YXYqSDYp9mE2YXYrdiz2YjYqNipINio2YjYp9iz2LfYqSDYp9mE2LDZg9in2KEg2KfZhNin2LXYt9mG2KfYudmKICjYrdiz2Kgg2KfZhNmF2K/ZgdmI2LnYp9iqKVwiLFxuICAgICAgICBkZWphcmVnbGU6IFwi2KfZhNmF2K/ZgdmI2LlcIixcbiAgICAgICAgZGlmZmVyZW5jZTogXCLYp9mE2YHYsdmCINin2YTZhdmD2KrYtNmBINio2YjYp9iz2LfYqSDYp9mE2LDZg9in2KEg2KfZhNin2LXYt9mG2KfYudmKXCIsXG4gICAgICAgIHdhcm5pbmdUaXRsZTogXCLimqDvuI8g2KfZhNiw2YPYp9ihINin2YTYp9i12LfZhtin2LnZiiDYp9mD2KrYtNmBINi52K/ZhSDYqti32KfYqNmCINmF2KfZhNmKXCIsXG4gICAgICAgIHdhcm5pbmdNZXNzYWdlOiBcItmC2KfZhSDYp9mE2LDZg9in2KEg2KfZhNin2LXYt9mG2KfYudmKINmE2K/ZitmG2Kcg2KjYqtit2YTZitmEINmH2LDZhyDYp9mE2YjYq9mK2YLYqSDZiNin2YPYqti02YEg2YHYsdmC2KfZiyDYqNmK2YYg2KfZhNmF2K/ZgdmI2LnYp9iqINin2YTZhdiz2KzZhNipINmI2KfZhNix2LXZitivLiDZitix2KzZiSDYp9mE2KrYrdmC2YIg2YXZhiDYp9mE2KjZitin2YbYp9iqINmB2Yog2KfZhNmG2LjYp9mFINin2YTYo9i12YTZii4g2KjYp9mE2KrYo9mD2YrYr9iMINij2YbYqiDYqtmI2KfZgdmCINi52YTZiSDYo9mGINin2YTZhdi52YTZiNmF2KfYqiDYo9i52YTYp9mHINi12K3Zitit2KkuINil2LDYpyDZg9in2YYg2KfZhNiw2YPYp9ihINin2YTYp9i12LfZhtin2LnZiiDZhdiu2LfYptin2Ysg2KPZiCDZg9in2YbYqiDYp9mE2KjZitin2YbYp9iqINi62YrYsSDYtdit2YrYrdip2Iwg2YLZhSDYqNiq2LXYrdmK2K3Zh9inINij2YjZhNin2Ysg2YHZiiDYp9mE2YbYuNin2YUg2KfZhNij2LXZhNmKINmC2KjZhCDYp9mE2KrYo9mD2YrYry5cIixcbiAgICAgICAgZml4aW5nOiBcItis2KfYsdmKINiq2LPYrNmK2YQg2KrYo9mD2YrYr9mDLi4uXCIsXG4gICAgICAgIHN1Y2Nlc3NUaXRsZTogXCLinJMg2KrZhSDYp9mE2KrYs9is2YrZhFwiLFxuICAgICAgICBzdWNjZXNzTWVzc2FnZTogXCLZhNmC2K8g2LXYp9iv2YLYqiDYudmE2Ykg2YfYsNmHINin2YTYqtiz2YjZitipLiDYs9mK2LPYqtmF2LEg2KfZhNiw2YPYp9ihINin2YTYp9i12LfZhtin2LnZiiDZgdmKINin2YTYqti52YTZhSDZhdmGINmC2LHYp9ix2KfYqtmDLlwiLFxuICAgICAgICBlcnJvclRpdGxlOiBcItiu2LfYo1wiLFxuICAgICAgICBvbGRWYWx1ZTogXCLYp9mE2YLZitmF2Kkg2KfZhNmC2K/ZitmF2KlcIixcbiAgICAgICAgY2FuY2VsOiBcItil2YTYutin2KFcIixcbiAgICAgICAgY2xvc2U6IFwi2KXYutmE2KfZglwiLFxuICAgICAgICBjb25maXJtOiBcIuKckyDYsdin2KzYudiqINin2YTYqNmK2KfZhtin2Ko6INij2LXYp9iv2YIg2LnZhNmJINmH2LDZhyDYp9mE2KrYs9mI2YrYqSDYp9mE2YXYp9mE2YrYqVwiXG4gICAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQge1xuICAgIHByb3BzOiB7XG4gICAgICAgIGRvY3VtZW50OiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBkb2N1bWVudFR5cGU6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIGxhbmc6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIGRlZmF1bHQ6ICdmcidcbiAgICAgICAgfVxuICAgIH0sXG4gICAgZGF0YSgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGZpeGluZzogZmFsc2UsXG4gICAgICAgICAgICBmaXhlZDogZmFsc2UsXG4gICAgICAgICAgICBlcnJvcjogbnVsbCxcbiAgICAgICAgICAgIGZpeFJlc3VsdDogbnVsbFxuICAgICAgICB9O1xuICAgIH0sXG4gICAgY29tcHV0ZWQ6IHtcbiAgICAgICAgVCgpIHtcbiAgICAgICAgICAgIHJldHVybiB0cmFuc2xhdGlvbnNbdGhpcy5sYW5nXSB8fCB0cmFuc2xhdGlvbnMuZnI7XG4gICAgICAgIH1cbiAgICB9LFxuICAgIHdhdGNoOiB7XG4gICAgICAgIGRvY3VtZW50OiB7XG4gICAgICAgICAgICBoYW5kbGVyKCkge1xuICAgICAgICAgICAgICAgIC8vIFJlc2V0IHN0YXRlIHdoZW4gZG9jdW1lbnQgY2hhbmdlc1xuICAgICAgICAgICAgICAgIHRoaXMuZml4aW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5maXhlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMuZXJyb3IgPSBudWxsO1xuICAgICAgICAgICAgICAgIHRoaXMuZml4UmVzdWx0ID0gbnVsbDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBkZWVwOiB0cnVlLFxuICAgICAgICAgICAgaW1tZWRpYXRlOiBmYWxzZVxuICAgICAgICB9XG4gICAgfSxcbiAgICBtZXRob2RzOiB7XG4gICAgICAgIGZvcm1hdEN1cnJlbmN5KHZhbHVlKSB7XG4gICAgICAgICAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCkgcmV0dXJuICdOL0EnO1xuICAgICAgICAgICAgY29uc3QgbnVtYmVyID0gcGFyc2VGbG9hdCh2YWx1ZSk7XG4gICAgICAgICAgICBpZiAoaXNOYU4obnVtYmVyKSkgcmV0dXJuICdOL0EnO1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlci50b0ZpeGVkKDIpLnJlcGxhY2UoL1xcZCg/PShcXGR7M30pK1xcLikvZywgJyQmLCcpO1xuICAgICAgICB9LFxuICAgICAgICBnZXRSZWNhbGN1bGF0ZUVuZHBvaW50KCkge1xuICAgICAgICAgICAgY29uc3QgZW5kcG9pbnRzID0ge1xuICAgICAgICAgICAgICAgICdib25zX3ZlbnRlcyc6ICcvYW5hbHlzZS9yZWNhbGN1bGF0ZS1ib25zLXZlbnRlcycsXG4gICAgICAgICAgICAgICAgJ2ZhY3R1cmVzX3ZlbnRlcyc6ICcvYW5hbHlzZS9yZWNhbGN1bGF0ZS1mYWN0dXJlcy12ZW50ZXMnLFxuICAgICAgICAgICAgICAgICdhdm9pcnNfdmVudGVzJzogJy9hbmFseXNlL3JlY2FsY3VsYXRlLWF2b2lycy12ZW50ZXMnLFxuICAgICAgICAgICAgICAgICdib25zX2FjaGF0cyc6ICcvYW5hbHlzZS9yZWNhbGN1bGF0ZS1ib25zLWFjaGF0cycsXG4gICAgICAgICAgICAgICAgJ2ZhY3R1cmVzX2FjaGF0cyc6ICcvYW5hbHlzZS9yZWNhbGN1bGF0ZS1mYWN0dXJlcy1hY2hhdHMnLFxuICAgICAgICAgICAgICAgICdhdm9pcnNfYWNoYXRzJzogJy9hbmFseXNlL3JlY2FsY3VsYXRlLWF2b2lycy1hY2hhdHMnXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgcmV0dXJuIGVuZHBvaW50c1t0aGlzLmRvY3VtZW50VHlwZV07XG4gICAgICAgIH0sXG4gICAgICAgIGFzeW5jIGV4ZWN1dGVGaXgoKSB7XG4gICAgICAgICAgICB0aGlzLmZpeGluZyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmVycm9yID0gbnVsbDtcblxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25zdCBlbmRwb2ludCA9IHRoaXMuZ2V0UmVjYWxjdWxhdGVFbmRwb2ludCgpO1xuICAgICAgICAgICAgICAgIGlmICghZW5kcG9pbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGRvY3VtZW50IHR5cGUnKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCB1cmwgPSBgJHtlbmRwb2ludH0vJHt0aGlzLmRvY3VtZW50LmlkfWA7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBheGlvcy5wb3N0KHVybCk7XG5cbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UuZGF0YS5zdGF0dXMgPT09ICdzdWNjZXNzJykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZpeGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maXhSZXN1bHQgPSByZXNwb25zZS5kYXRhLmRhdGE7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gRW1pdCBldmVudCB0byBwYXJlbnQgdG8gcmVmcmVzaCBkYXRhXG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kZW1pdCgnZml4ZWQnLCB0aGlzLmZpeFJlc3VsdCk7XG4gICAgICAgICAgICAgICAgICAgIH0sIDE1MDApO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihyZXNwb25zZS5kYXRhLm1lc3NhZ2UgfHwgJ0ZpeCBmYWlsZWQnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGZpeGluZyBkb2N1bWVudDonLCBlcnJvcik7XG4gICAgICAgICAgICAgICAgdGhpcy5lcnJvciA9IGVycm9yLnJlc3BvbnNlPy5kYXRhPy5tZXNzYWdlIHx8IGVycm9yLm1lc3NhZ2UgfHwgJ0FuIGVycm9yIG9jY3VycmVkJztcbiAgICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICAgICAgdGhpcy5maXhpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgaGFuZGxlQ2xvc2UoKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5maXhlZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuJGVtaXQoJ2ZpeGVkJywgdGhpcy5maXhSZXN1bHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy4kZW1pdCgnY2xvc2UnKTtcbiAgICAgICAgfVxuICAgIH1cbn07XG48L3NjcmlwdD5cblxuPHN0eWxlIHNjb3BlZD5cbi5lcnJvci0tdGV4dCB7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG5cbi5zdWNjZXNzLS10ZXh0IHtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbn1cbjwvc3R5bGU+XG4iLCI8dGVtcGxhdGU+XG4gICAgPGNhcmQtY2FyZCBpY29uPVwibWRpLXRvb2xzXCIgOnRpdGxlPVwiVC5tYWluVGl0bGVcIiA6dGV4dD1cIlQubWFpblN1YnRpdGxlXCIgY2xhc3M9XCJweC01IHB5LTMgZC1pbmxpbmUtYmxvY2sgbXgtYXV0b1wiXG4gICAgICAgIGNvbG9yPVwiZGVlcC1vcmFuZ2VcIiA6Y2xvc2U9XCJjbG9zZVwiIEBjbG9zZT1cImNsb3NlZXZlbnRcIiB3aWR0aD1cIjEwMCVcIj5cbiAgICAgICAgPHYtY29udGFpbmVyIGZsdWlkPlxuXG4gICAgICAgICAgICA8IS0tIEdsb2JhbCBPdmVydmlldyBDYXJkIC0tPlxuICAgICAgICAgICAgPHYtY2FyZCBjbGFzcz1cIm1iLTVcIiBlbGV2YXRpb249XCIyXCI+XG4gICAgICAgICAgICAgICAgPHYtY2FyZC10aXRsZSBjbGFzcz1cImQtZmxleCBhbGlnbi1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPHYtaWNvbiBsZWZ0IGNvbG9yPVwiaW5mb1wiPm1kaS1jaGFydC1ib3gtb3V0bGluZTwvdi1pY29uPlxuICAgICAgICAgICAgICAgICAgICB7eyBULmdsb2JhbE92ZXJ2aWV3IH19XG4gICAgICAgICAgICAgICAgICAgIDx2LXNwYWNlcj48L3Ytc3BhY2VyPlxuICAgICAgICAgICAgICAgICAgICA8di1idG4gb3V0bGluZWQgc21hbGwgY29sb3I9XCJwcmltYXJ5XCIgQGNsaWNrPVwicmVmcmVzaEdsb2JhbERhdGFcIiA6bG9hZGluZz1cImxvYWRpbmdHbG9iYWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtci0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8di1pY29uIGxlZnQgc21hbGw+bWRpLXJlZnJlc2g8L3YtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IFQucmVmcmVzaERhdGEgfX1cbiAgICAgICAgICAgICAgICAgICAgPC92LWJ0bj5cbiAgICAgICAgICAgICAgICAgICAgPHYtYnRuIG91dGxpbmVkIHNtYWxsIEBjbGljaz1cInRvZ2dsZUxhbmd1YWdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8di1pY29uIGxlZnQgc21hbGw+bWRpLXRyYW5zbGF0ZTwvdi1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgY3VycmVudExhbmcgPT09ICdmcicgPyAn2KfZhNi52LHYqNmK2KknIDogJ0ZyYW7Dp2FpcycgfX1cbiAgICAgICAgICAgICAgICAgICAgPC92LWJ0bj5cbiAgICAgICAgICAgICAgICA8L3YtY2FyZC10aXRsZT5cbiAgICAgICAgICAgICAgICA8di1jYXJkLXRleHQ+XG4gICAgICAgICAgICAgICAgICAgIDx2LXJvdyB2LWlmPVwibG9hZGluZ0dsb2JhbFwiIGp1c3RpZnk9XCJjZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx2LXByb2dyZXNzLWNpcmN1bGFyIGluZGV0ZXJtaW5hdGUgY29sb3I9XCJwcmltYXJ5XCI+PC92LXByb2dyZXNzLWNpcmN1bGFyPlxuICAgICAgICAgICAgICAgICAgICA8L3Ytcm93PlxuICAgICAgICAgICAgICAgICAgICA8di1hbGVydCB2LWVsc2UtaWY9XCIhZ2xvYmFsRGF0YVwiIHR5cGU9XCJpbmZvXCIgdGV4dD5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IFQuY2xpY2tDYXJkVG9WaWV3IH19XG4gICAgICAgICAgICAgICAgICAgIDwvdi1hbGVydD5cbiAgICAgICAgICAgICAgICAgICAgPHYtcm93IHYtZWxzZSBkZW5zZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx2LWNvbCB2LWZvcj1cIihpdGVtLCBrZXkpIGluIGdsb2JhbERhdGEucmVwb3J0XCIgOmtleT1cImtleVwiIGNvbHM9XCIxMlwiIHNtPVwiNlwiIG1kPVwiNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2LWNhcmQgOmNvbG9yPVwiZ2V0Q2FyZENvbG9yKGl0ZW0uY291bnQpXCIgZGFyayBob3ZlciBjbGFzcz1cImNsaWNrYWJsZS1jYXJkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGNsaWNrPVwibG9hZERvY3VtZW50VHlwZURhdGEoa2V5KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjbGFzcz1cInsgJ3NlbGVjdGVkLWNhcmQnOiBzZWxlY3RlZERvY3VtZW50VHlwZSA9PT0ga2V5IH1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHYtY2FyZC10ZXh0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1jZW50ZXIgbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2LWljb24gbGVmdD57eyBnZXREb2N1bWVudEljb24oa2V5KSB9fTwvdi1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXN1YnRpdGxlLTFcIj57eyBULmRvY3VtZW50VHlwZXNba2V5XSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1oNFwiPnt7IGl0ZW0uY291bnQgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNhcHRpb24gbXQtMlwiPnt7IFQudG90YWxEaWZmIH19OiB7eyBmb3JtYXRDdXJyZW5jeShpdGVtLnRvdGFsX2RpZmYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2LWRpdmlkZXIgY2xhc3M9XCJteS0yXCIgZGFyaz48L3YtZGl2aWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNhcHRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8di1pY29uIHgtc21hbGw+bWRpLWN1cnNvci1wb2ludGVyPC92LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgVC5jbGlja1RvVmlldyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdi1jYXJkLXRleHQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92LWNhcmQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3YtY29sPlxuICAgICAgICAgICAgICAgICAgICA8L3Ytcm93PlxuICAgICAgICAgICAgICAgIDwvdi1jYXJkLXRleHQ+XG4gICAgICAgICAgICA8L3YtY2FyZD5cblxuICAgICAgICAgICAgPCEtLSBFbnRpdHkgU2VsZWN0aW9uIChzaG93biBhZnRlciBkb2N1bWVudCB0eXBlIGlzIHNlbGVjdGVkKSAtLT5cbiAgICAgICAgICAgIDx2LWNhcmQgdi1pZj1cInNlbGVjdGVkRG9jdW1lbnRUeXBlXCIgY2xhc3M9XCJtYi01XCIgZWxldmF0aW9uPVwiMlwiPlxuICAgICAgICAgICAgICAgIDx2LWNhcmQtdGl0bGU+XG4gICAgICAgICAgICAgICAgICAgIDx2LWljb24gbGVmdD5tZGktYWNjb3VudC1ncm91cDwvdi1pY29uPlxuICAgICAgICAgICAgICAgICAgICB7eyBULnNlbGVjdEVudGl0eSB9fVxuICAgICAgICAgICAgICAgICAgICA8di1jaGlwIHNtYWxsIGNsYXNzPVwibWwtMlwiIGNvbG9yPVwicHJpbWFyeVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgVC5kb2N1bWVudFR5cGVzW3NlbGVjdGVkRG9jdW1lbnRUeXBlXSB9fVxuICAgICAgICAgICAgICAgICAgICA8L3YtY2hpcD5cbiAgICAgICAgICAgICAgICAgICAgPHYtc3BhY2VyPjwvdi1zcGFjZXI+XG4gICAgICAgICAgICAgICAgICAgIDx2LWJ0biBvdXRsaW5lZCBzbWFsbCBjb2xvcj1cInByaW1hcnlcIiBAY2xpY2s9XCJyZWZyZXNoQ3VycmVudFZpZXdcIiA6bG9hZGluZz1cImxvYWRpbmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx2LWljb24gbGVmdCBzbWFsbD5tZGktcmVmcmVzaDwvdi1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgVC5yZWZyZXNoRGF0YSB9fVxuICAgICAgICAgICAgICAgICAgICA8L3YtYnRuPlxuICAgICAgICAgICAgICAgIDwvdi1jYXJkLXRpdGxlPlxuICAgICAgICAgICAgICAgIDx2LWNhcmQtdGV4dD5cbiAgICAgICAgICAgICAgICAgICAgPHYtcm93IHYtaWY9XCJsb2FkaW5nXCIganVzdGlmeT1cImNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHYtcHJvZ3Jlc3MtY2lyY3VsYXIgaW5kZXRlcm1pbmF0ZSBjb2xvcj1cInByaW1hcnlcIj48L3YtcHJvZ3Jlc3MtY2lyY3VsYXI+XG4gICAgICAgICAgICAgICAgICAgIDwvdi1yb3c+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgdi1lbHNlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHYtYWxlcnQgdi1pZj1cImVudGl0aWVzTGlzdC5sZW5ndGggPT09IDBcIiB0eXBlPVwic3VjY2Vzc1wiIHRleHQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgVC5ub0VudGl0aWVzV2l0aElzc3VlcyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC92LWFsZXJ0PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiB2LWVsc2U+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBFbnRpdHkgRHJvcGRvd24gU2VsZWN0b3IgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHYtcm93IGRlbnNlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8di1jb2wgY29scz1cIjEyXCIgbWQ9XCI4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8di1hdXRvY29tcGxldGUgdi1tb2RlbD1cInNlbGVjdGVkRW50aXR5SWRcIiA6aXRlbXM9XCJlbnRpdGllc0xpc3RcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpsYWJlbD1cIlQuc2VsZWN0RnJvbUxpc3RcIiBpdGVtLXRleHQ9XCJuYW1lXCIgaXRlbS12YWx1ZT1cImlkXCIgb3V0bGluZWQgZGVuc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhcmFibGUgcHJlcGVuZC1pbm5lci1pY29uPVwibWRpLW1hZ25pZnlcIiBAY2hhbmdlPVwib25FbnRpdHlTZWxlY3RlZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6aXRlbT1cInsgaXRlbSB9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2LWxpc3QtaXRlbS1hdmF0YXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8di1pY29uIDpjb2xvcj1cIml0ZW0uY291bnQgPiA1ID8gJ2Vycm9yJyA6ICd3YXJuaW5nJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGlzQ2xpZW50VHlwZSA/ICdtZGktYWNjb3VudCcgOiAnbWRpLXN0b3JlJyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdi1saXN0LWl0ZW0tYXZhdGFyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8di1saXN0LWl0ZW0tY29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2LWxpc3QtaXRlbS10aXRsZT57eyBpdGVtLm5hbWUgfX08L3YtbGlzdC1pdGVtLXRpdGxlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHYtbGlzdC1pdGVtLXN1YnRpdGxlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0uY291bnQgfX0ge3sgVC5pc3N1ZXMgfX0g4oCiIHt7IGZvcm1hdEN1cnJlbmN5KGl0ZW0udG90YWxfZGlmZilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92LWxpc3QtaXRlbS1zdWJ0aXRsZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92LWxpc3QtaXRlbS1jb250ZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8di1saXN0LWl0ZW0tYWN0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHYtY2hpcCB4LXNtYWxsIDpjb2xvcj1cIml0ZW0uY291bnQgPiA1ID8gJ2Vycm9yJyA6ICd3YXJuaW5nJ1wiIGRhcms+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbS5jb3VudCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92LWNoaXA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdi1saXN0LWl0ZW0tYWN0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3YtYXV0b2NvbXBsZXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3YtY29sPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8di1jb2wgY29scz1cIjEyXCIgbWQ9XCI0XCIgY2xhc3M9XCJkLWZsZXggYWxpZ24tY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jYXB0aW9uIGdyZXktLXRleHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBULnRvdGFsRW50aXRpZXMgfX06IDxzdHJvbmc+e3sgZW50aXRpZXNMaXN0Lmxlbmd0aCB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdi1jb2w+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92LXJvdz5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gU2VsZWN0ZWQgRW50aXR5IEluZm8gQ2FyZCAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8di1jYXJkIHYtaWY9XCJzZWxlY3RlZEVudGl0eUlkICYmIHNlbGVjdGVkRW50aXR5SW5mb1wiIG91dGxpbmVkIGNsYXNzPVwibXQtM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8di1jYXJkLXRleHQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8di1yb3cgZGVuc2UgYWxpZ249XCJjZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8di1jb2wgY29scz1cImF1dG9cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHYtYXZhdGFyIHNpemU9XCI0OFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Y29sb3I9XCJzZWxlY3RlZEVudGl0eUluZm8uY291bnQgPiA1ID8gJ2Vycm9yJyA6ICd3YXJuaW5nJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHYtaWNvbiBkYXJrPnt7IGlzQ2xpZW50VHlwZSA/ICdtZGktYWNjb3VudCcgOiAnbWRpLXN0b3JlJyB9fTwvdi1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3YtYXZhdGFyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdi1jb2w+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHYtY29sPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1oNlwiPnt7IHNlbGVjdGVkRW50aXR5SW5mby5uYW1lIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNhcHRpb24gZ3JleS0tdGV4dFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXNDbGllbnRUeXBlID8gVC5jbGllbnQgOiBULnN1cHBsaWVyIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdi1jb2w+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHYtY29sIGNvbHM9XCJhdXRvXCIgY2xhc3M9XCJ0ZXh0LXJpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2LWNoaXAgY29sb3I9XCJlcnJvclwiIGRhcms+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8di1pY29uIGxlZnQgc21hbGw+bWRpLWFsZXJ0LWNpcmNsZTwvdi1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgc2VsZWN0ZWRFbnRpdHlJbmZvLmNvdW50IH19IHt7IFQuaXNzdWVzIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdi1jaGlwPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdi1jb2w+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHYtY29sIGNvbHM9XCJhdXRvXCIgY2xhc3M9XCJ0ZXh0LXJpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNhcHRpb25cIj57eyBULnRvdGFsVG9SZXZpZXcgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtaDYgZXJyb3ItLXRleHRcIj57e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0Q3VycmVuY3koc2VsZWN0ZWRFbnRpdHlJbmZvLnRvdGFsX2RpZmYpIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92LWNvbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdi1yb3c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdi1jYXJkLXRleHQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92LWNhcmQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC92LWNhcmQtdGV4dD5cbiAgICAgICAgICAgIDwvdi1jYXJkPlxuXG4gICAgICAgICAgICA8IS0tIERpc2NyZXBhbmNpZXMgVGFibGUgLS0+XG4gICAgICAgICAgICA8di1jYXJkIGVsZXZhdGlvbj1cIjJcIj5cbiAgICAgICAgICAgICAgICA8di1jYXJkLXRpdGxlPlxuICAgICAgICAgICAgICAgICAgICA8di1pY29uIGxlZnQ+bWRpLWFsZXJ0LWNpcmNsZTwvdi1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiB2LWlmPVwic2VsZWN0ZWREb2N1bWVudFR5cGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IFQuZG9jdW1lbnRUeXBlc1tzZWxlY3RlZERvY3VtZW50VHlwZV0gfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHYtaWY9XCJzZWxlY3RlZEVudGl0eU5hbWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIHt7IHNlbGVjdGVkRW50aXR5TmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgLSB7eyBULmRpc2NyZXBhbmNpZXNGb3VuZCB9fVxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIHYtZWxzZT57eyBULnNlbGVjdERvY3VtZW50VHlwZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHYtY2hpcCB2LWlmPVwiZGlzY3JlcGFuY2llcy5sZW5ndGggPiAwXCIgc21hbGwgY2xhc3M9XCJtbC0yXCIgY29sb3I9XCJlcnJvclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgZGlzY3JlcGFuY2llcy5sZW5ndGggfX1cbiAgICAgICAgICAgICAgICAgICAgPC92LWNoaXA+XG4gICAgICAgICAgICAgICAgICAgIDx2LXNwYWNlcj48L3Ytc3BhY2VyPlxuICAgICAgICAgICAgICAgICAgICA8di1jaGlwIHYtaWY9XCJzZWxlY3RlZEVudGl0eVRvdGFsXCIgc21hbGwgY29sb3I9XCJ3YXJuaW5nXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBULnRvdGFsIH19OiB7eyBmb3JtYXRDdXJyZW5jeShzZWxlY3RlZEVudGl0eVRvdGFsKSB9fVxuICAgICAgICAgICAgICAgICAgICA8L3YtY2hpcD5cbiAgICAgICAgICAgICAgICA8L3YtY2FyZC10aXRsZT5cbiAgICAgICAgICAgICAgICA8di1jYXJkLXRleHQ+XG4gICAgICAgICAgICAgICAgICAgIDx2LXJvdyB2LWlmPVwibG9hZGluZ1wiIGp1c3RpZnk9XCJjZW50ZXJcIiBjbGFzcz1cIm15LTVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx2LXByb2dyZXNzLWNpcmN1bGFyIGluZGV0ZXJtaW5hdGUgY29sb3I9XCJwcmltYXJ5XCIgc2l6ZT1cIjY0XCI+PC92LXByb2dyZXNzLWNpcmN1bGFyPlxuICAgICAgICAgICAgICAgICAgICA8L3Ytcm93PlxuXG4gICAgICAgICAgICAgICAgICAgIDx2LWFsZXJ0IHYtaWY9XCJlcnJvclwiIHR5cGU9XCJlcnJvclwiIGRlbnNlIG91dGxpbmVkIGNsYXNzPVwibXktM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgVC5sb2FkaW5nRXJyb3IgfX06IHt7IGVycm9yIH19XG4gICAgICAgICAgICAgICAgICAgIDwvdi1hbGVydD5cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2IHYtaWY9XCIhbG9hZGluZyAmJiAhZXJyb3JcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx2LWFsZXJ0IHYtaWY9XCJkaXNjcmVwYW5jaWVzLmxlbmd0aCA9PT0gMFwiIHR5cGU9XCJzdWNjZXNzXCIgZGVuc2Ugb3V0bGluZWQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgVC5ub0Rpc2NyZXBhbmNpZXMgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdi1hbGVydD5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiB2LWVsc2U+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBTZXR0bGVtZW50IElEIFNlYXJjaCBGaWx0ZXIgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHYtcm93IGRlbnNlIGNsYXNzPVwibWItM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8di1jb2wgY29scz1cIjEyXCIgbWQ9XCI2XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8di10ZXh0LWZpZWxkIHYtbW9kZWw9XCJzZXR0bGVtZW50SWRGaWx0ZXJcIiA6bGFiZWw9XCJULnNlYXJjaEJ5U2V0dGxlbWVudElkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVwZW5kLWlubmVyLWljb249XCJtZGktaWRlbnRpZmllclwiIGNsZWFyYWJsZSBkZW5zZSBvdXRsaW5lZCBoaWRlLWRldGFpbHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaW5wdXQ9XCJhcHBseUZpbHRlcnNcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3YtY29sPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8di1jb2wgY29scz1cIjEyXCIgbWQ9XCI2XCIgY2xhc3M9XCJkLWZsZXggYWxpZ24tY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8di1jaGlwIHYtaWY9XCJzZXR0bGVtZW50SWRGaWx0ZXJcIiBzbWFsbCBjb2xvcj1cInByaW1hcnlcIiBjbGFzcz1cIm1sLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8di1pY29uIHgtc21hbGwgbGVmdD5tZGktZmlsdGVyPC92LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgVC5maWx0ZXJpbmcgfX06ICN7eyBzZXR0bGVtZW50SWRGaWx0ZXIgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdi1jaGlwPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHYtY2hpcCB2LWlmPVwiZmlsdGVyZWREaXNjcmVwYW5jaWVzLmxlbmd0aCAhPT0gZGlzY3JlcGFuY2llcy5sZW5ndGhcIiBzbWFsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPVwiaW5mb1wiIGNsYXNzPVwibWwtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGZpbHRlcmVkRGlzY3JlcGFuY2llcy5sZW5ndGggfX0gLyB7eyBkaXNjcmVwYW5jaWVzLmxlbmd0aCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92LWNoaXA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdi1jb2w+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92LXJvdz5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2LWRhdGEtdGFibGUgOmhlYWRlcnM9XCJkaXNjcmVwYW5jeUhlYWRlcnNcIiA6aXRlbXM9XCJmaWx0ZXJlZERpc2NyZXBhbmNpZXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6aXRlbXMtcGVyLXBhZ2U9XCIxMFwiIGNsYXNzPVwiZWxldmF0aW9uLTFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Zm9vdGVyLXByb3BzPVwieyAnaXRlbXMtcGVyLXBhZ2UtdGV4dCc6IFQuaXRlbXNQZXJQYWdlIH1cIiBkZW5zZT5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFJlZmVyZW5jZSBDb2x1bW4gLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6aXRlbS5yZWY9XCJ7IGl0ZW0gfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbm8td3JhcFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgaXRlbS5yZWYgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHYtaWY9XCJpdGVtLmRldGFpbHM/LmRldGFpbHNfaW5mbz8uZGF0ZVwiIGNsYXNzPVwidGV4dC1jYXB0aW9uIGdyZXktLXRleHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZm9ybWF0RGF0ZShpdGVtLmRldGFpbHMuZGV0YWlsc19pbmZvLmRhdGUpIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEVudGl0eSBDb2x1bW4gLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6aXRlbS5lbnRpdHlfbmFtZT1cInsgaXRlbSB9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0uZW50aXR5X25hbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHYtaWY9XCJpdGVtLmRldGFpbHM/LmRldGFpbHNfaW5mbz8uY2xpZW50X3RlbGVwaG9uZSB8fCBpdGVtLmRldGFpbHM/LmRldGFpbHNfaW5mbz8uZm91cm5pc3NldXJfdGVsZXBob25lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LWNhcHRpb24gZ3JleS0tdGV4dFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLmRldGFpbHMuZGV0YWlsc19pbmZvLmNsaWVudF90ZWxlcGhvbmUgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uZGV0YWlscy5kZXRhaWxzX2luZm8uZm91cm5pc3NldXJfdGVsZXBob25lIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEFtb3VudCBDb2x1bW4gLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6aXRlbS5tb250YW50X3R0Yz1cInsgaXRlbSB9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IGZvcm1hdEN1cnJlbmN5KGl0ZW0ubW9udGFudF90dGMpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBQYXltZW50cyBDb3VudCBDb2x1bW4gLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6aXRlbS5wYXltZW50c19jb3VudD1cInsgaXRlbSB9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8di10b29sdGlwIGJvdHRvbSB2LWlmPVwiaXRlbS5kZXRhaWxzPy5hbmFseXNlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlIHYtc2xvdDphY3RpdmF0b3I9XCJ7IG9uLCBhdHRycyB9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2LWNoaXAgc21hbGwgdi1iaW5kPVwiYXR0cnNcIiB2LW9uPVwib25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOmNvbG9yPVwiaXRlbS5kZXRhaWxzLmFuYWx5c2Uubm9tYnJlX3BhaWVtZW50cyA+IDMgPyAnd2FybmluZycgOiAnaW5mbydcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2LWljb24gbGVmdCB4LXNtYWxsPm1kaS1jYXNoLW11bHRpcGxlPC92LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLmRldGFpbHMuYW5hbHlzZS5ub21icmVfcGFpZW1lbnRzIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdi1jaGlwPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgaXRlbS5kZXRhaWxzLmFuYWx5c2Uubm9tYnJlX3BhaWVtZW50cyB9fSB7eyBULnBheW1lbnRzUmVnaXN0ZXJlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92LXRvb2x0aXA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiB2LWVsc2UgY2xhc3M9XCJncmV5LS10ZXh0XCI+LTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIERpZmZlcmVuY2UgQ29sdW1uIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGVtcGxhdGUgdi1zbG90Oml0ZW0uZGlmZmVyZW5jZT1cInsgaXRlbSB9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8di1jaGlwIHNtYWxsIDpjb2xvcj1cIk1hdGguYWJzKGl0ZW0uZGlmZmVyZW5jZSkgPiAxMDAwID8gJ2Vycm9yJyA6ICd3YXJuaW5nJ1wiIGRhcms+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHYtaWNvbiBsZWZ0IHgtc21hbGw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0uZGlmZmVyZW5jZSA+IDAgPyAnbWRpLWFycm93LXVwJyA6ICdtZGktYXJyb3ctZG93bicgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3YtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBmb3JtYXRDdXJyZW5jeShNYXRoLmFicyhpdGVtLmRpZmZlcmVuY2UpKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92LWNoaXA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBEaWFnbm9zdGljIENvbHVtbiAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlIHYtc2xvdDppdGVtLmRpYWdub3N0aWM9XCJ7IGl0ZW0gfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHYtdG9vbHRpcCBib3R0b20gdi1pZj1cIml0ZW0uZGV0YWlscz8uYW5hbHlzZT8uZGlhZ25vc3RpY1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6YWN0aXZhdG9yPVwieyBvbiwgYXR0cnMgfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8di1jaGlwIHgtc21hbGwgdi1iaW5kPVwiYXR0cnNcIiB2LW9uPVwib25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOmNvbG9yPVwiZ2V0RGlhZ25vc3RpY0NvbG9yKGl0ZW0uZGV0YWlscy5hbmFseXNlLmRpYWdub3N0aWMpXCIgZGFyaz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IFQuZGlhZ25vc3RpY3NbaXRlbS5kZXRhaWxzLmFuYWx5c2UuZGlhZ25vc3RpY10gfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmRldGFpbHMuYW5hbHlzZS5kaWFnbm9zdGljIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdi1jaGlwPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cIm1heC13aWR0aDogMzAwcHg7XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+PHN0cm9uZz57eyBULnJlYWxQYWlkIH19Ojwvc3Ryb25nPiB7e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0Q3VycmVuY3koaXRlbS5kZXRhaWxzLmFuYWx5c2UudG90YWxfcGF5ZV9yZWVsKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj48c3Ryb25nPnt7IFQucmVjb3JkZWQgfX06PC9zdHJvbmc+IHt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXRDdXJyZW5jeShpdGVtLmRldGFpbHMuYW5hbHlzZS5tb250YW50X2VucmVnaXN0cmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3YtdG9vbHRpcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEFJIEFsZXJ0IExldmVsIENvbHVtbiAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlIHYtc2xvdDppdGVtLmFpX2FsZXJ0PVwieyBpdGVtIH1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2LXRvb2x0aXAgYm90dG9tIHYtaWY9XCJpdGVtLmRldGFpbHM/LmFuYWx5c2U/LmNvbnNlaWxfcmVzb2x1dGlvbl9ieV9BSVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6YWN0aXZhdG9yPVwieyBvbiwgYXR0cnMgfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8di1pY29uIHYtYmluZD1cImF0dHJzXCIgdi1vbj1cIm9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjb2xvcj1cImdldEFJQWxlcnRDb2xvcihpdGVtLmRldGFpbHMuYW5hbHlzZS5uaXZlYXVfYWxlcnRlX2J5X0FJKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplPVwiMjhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGdldEFJQWxlcnRJY29uKGl0ZW0uZGV0YWlscy5hbmFseXNlLm5pdmVhdV9hbGVydGVfYnlfQUkpIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdi1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cIm1heC13aWR0aDogNDAwcHg7IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDtcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbS5kZXRhaWxzLmFuYWx5c2UuY29uc2VpbF9yZXNvbHV0aW9uX2J5X0FJIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3YtdG9vbHRpcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIExhc3QgTW9kaWZpZWQgQ29sdW1uIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGVtcGxhdGUgdi1zbG90Oml0ZW0ubGFzdF9tb2RpZmllZD1cInsgaXRlbSB9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHYtaWY9XCJpdGVtLmRldGFpbHM/LmRldGFpbHNfaW5mb1wiIGNsYXNzPVwidGV4dC1jYXB0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiB2LWlmPVwiaXNNb2RpZmllZEFmdGVyQ3JlYXRpb24oaXRlbS5kZXRhaWxzLmRldGFpbHNfaW5mbylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIndhcm5pbmctLXRleHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHYtaWNvbiB4LXNtYWxsIGNvbG9yPVwid2FybmluZ1wiPm1kaS1hbGVydDwvdi1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBmb3JtYXREYXRlVGltZShpdGVtLmRldGFpbHMuZGV0YWlsc19pbmZvLmRhdGVfbW9kaWZpY2F0aW9uX3N5c3RlbWUpIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiB2LWVsc2UgY2xhc3M9XCJncmV5LS10ZXh0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGZvcm1hdERhdGVUaW1lKGl0ZW0uZGV0YWlscy5kZXRhaWxzX2luZm8uZGF0ZV9jcmVhdGlvbl9zeXN0ZW1lKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBBY3Rpb25zIENvbHVtbiAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlIHYtc2xvdDppdGVtLmFjdGlvbnM9XCJ7IGl0ZW0gfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHYtYnRuIGljb24gc21hbGwgY29sb3I9XCJpbmZvXCIgQGNsaWNrPVwidmlld0RldGFpbHMoaXRlbSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8di1pY29uIHNtYWxsPm1kaS1leWU8L3YtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdi1idG4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8di1idG4gaWNvbiBzbWFsbCBjb2xvcj1cInN1Y2Nlc3NcIiBAY2xpY2s9XCJmaXhEb2N1bWVudChpdGVtKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2LWljb24gc21hbGw+bWRpLXdyZW5jaDwvdi1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92LWJ0bj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3YtZGF0YS10YWJsZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L3YtY2FyZC10ZXh0PlxuICAgICAgICAgICAgPC92LWNhcmQ+XG5cbiAgICAgICAgICAgIDwhLS0gRm9yZW5zaWMgVmlld2VyIERpYWxvZyAtLT5cbiAgICAgICAgICAgIDx2LWRpYWxvZyB2LW1vZGVsPVwiZm9yZW5zaWNEaWFsb2dcIiBtYXgtd2lkdGg9XCIxMjAwcHhcIiBzY3JvbGxhYmxlPlxuICAgICAgICAgICAgICAgIDxkb2N1bWVudC1mb3JlbnNpYy12aWV3ZXIgdi1pZj1cInNlbGVjdGVkRG9jdW1lbnRcIiA6ZG9jdW1lbnQ9XCJzZWxlY3RlZERvY3VtZW50XCJcbiAgICAgICAgICAgICAgICAgICAgOmZvcmVuc2ljLWRhdGE9XCJmb3JlbnNpY0RhdGFcIiA6bG9hZGluZz1cImxvYWRpbmdGb3JlbnNpY1wiIDpsYW5nPVwiY3VycmVudExhbmdcIlxuICAgICAgICAgICAgICAgICAgICBAY2xvc2U9XCJmb3JlbnNpY0RpYWxvZyA9IGZhbHNlXCIgQGZpeD1cImZpeERvY3VtZW50XCIgLz5cbiAgICAgICAgICAgIDwvdi1kaWFsb2c+XG5cbiAgICAgICAgICAgIDwhLS0gRml4IEFjdGlvbiBEaWFsb2cgLS0+XG4gICAgICAgICAgICA8di1kaWFsb2cgdi1tb2RlbD1cImZpeERpYWxvZ1wiIG1heC13aWR0aD1cIjYwMHB4XCI+XG4gICAgICAgICAgICAgICAgPGZpeC1hY3Rpb24tZGlhbG9nIHYtaWY9XCJkb2N1bWVudFRvRml4XCIgOmRvY3VtZW50PVwiZG9jdW1lbnRUb0ZpeFwiIDpkb2N1bWVudC10eXBlPVwiY3VycmVudERvY3VtZW50VHlwZVwiXG4gICAgICAgICAgICAgICAgICAgIDpsYW5nPVwiY3VycmVudExhbmdcIiBAY2xvc2U9XCJmaXhEaWFsb2cgPSBmYWxzZVwiIEBmaXhlZD1cIm9uRG9jdW1lbnRGaXhlZFwiIC8+XG4gICAgICAgICAgICA8L3YtZGlhbG9nPlxuICAgICAgICA8L3YtY29udGFpbmVyPlxuICAgIDwvY2FyZC1jYXJkPlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdD5cbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XG5pbXBvcnQgd2lkZ2V0c01peGluIGZyb20gJy4vLi4vd2lkZ2V0c01peGluJztcbmltcG9ydCBEb2N1bWVudEZvcmVuc2ljVmlld2VyIGZyb20gJy4vLi4vLi4vY29tcG9uZW50cy9maW5hbmNlL0RvY3VtZW50Rm9yZW5zaWNWaWV3ZXIudnVlJztcbmltcG9ydCBGaXhBY3Rpb25EaWFsb2cgZnJvbSAnLi8uLi8uLi9jb21wb25lbnRzL2ZpbmFuY2UvRml4QWN0aW9uRGlhbG9nLnZ1ZSc7XG5cbmNvbnN0IHRyYW5zbGF0aW9ucyA9IHtcbiAgICBmcjoge1xuICAgICAgICBtYWluVGl0bGU6IFwiQ2VudHJlIGRlIERpYWdub3N0aWMgRmluYW5jaWVyXCIsXG4gICAgICAgIG1haW5TdWJ0aXRsZTogXCJEw6l0ZWN0ZXogZXQgY29ycmlnZXogbGVzIHByb2Jsw6htZXMgZGUgcsOpY29uY2lsaWF0aW9uIGZpbmFuY2nDqHJlXCIsXG4gICAgICAgIGdsb2JhbE92ZXJ2aWV3OiBcIlZ1ZSBkJ2Vuc2VtYmxlIGdsb2JhbGUgLSBDbGlxdWV6IHN1ciB1bmUgY2FydGUgcG91ciBhZmZpY2hlciBsZXMgZMOpdGFpbHNcIixcbiAgICAgICAgcmVmcmVzaERhdGE6IFwiQWN0dWFsaXNlciBsZXMgZG9ubsOpZXNcIixcbiAgICAgICAgY2xpY2tUb1ZpZXc6IFwiQ2xpcXVlciBwb3VyIHZvaXIgbGVzIGTDqXRhaWxzXCIsXG4gICAgICAgIGNsaWNrQ2FyZFRvVmlldzogXCJDbGlxdWV6IHN1ciB1bmUgY2FydGUgY2ktZGVzc3VzIHBvdXIgYWZmaWNoZXIgbGVzIGFub21hbGllc1wiLFxuICAgICAgICBzZWxlY3REb2N1bWVudFR5cGU6IFwiU8OpbGVjdGlvbm5leiB1biB0eXBlIGRlIGRvY3VtZW50XCIsXG4gICAgICAgIHNlbGVjdEVudGl0eTogXCJTw6lsZWN0aW9ubmV6IHVuZSBlbnRpdMOpIGFmZmVjdMOpZVwiLFxuICAgICAgICBzZWxlY3RGcm9tTGlzdDogXCJSZWNoZXJjaGVyIGV0IHPDqWxlY3Rpb25uZXIuLi5cIixcbiAgICAgICAgdG90YWxFbnRpdGllczogXCJOb21icmUgdG90YWwgZCdlbnRpdMOpc1wiLFxuICAgICAgICBjbGllbnQ6IFwiQ2xpZW50XCIsXG4gICAgICAgIHN1cHBsaWVyOiBcIkZvdXJuaXNzZXVyXCIsXG4gICAgICAgIHRvdGFsVG9SZXZpZXc6IFwiTW9udGFudCDDoCByw6l2aXNlclwiLFxuICAgICAgICBub0VudGl0aWVzV2l0aElzc3VlczogXCJBdWN1bmUgZW50aXTDqSBhdmVjIGRlcyBwcm9ibMOobWVzXCIsXG4gICAgICAgIGlzc3VlczogXCJwcm9ibMOobWVzXCIsXG4gICAgICAgIHRvdGFsQW1vdW50OiBcIk1vbnRhbnQgdG90YWxcIixcbiAgICAgICAgdG90YWw6IFwiVG90YWxcIixcbiAgICAgICAgZGlzY3JlcGFuY2llc0ZvdW5kOiBcIkFub21hbGllc1wiLFxuICAgICAgICBsb2FkaW5nRXJyb3I6IFwiRXJyZXVyIGRlIGNoYXJnZW1lbnRcIixcbiAgICAgICAgbm9EaXNjcmVwYW5jaWVzOiBcIkF1Y3VuZSBhbm9tYWxpZSBkw6l0ZWN0w6llLiBUb3VzIGxlcyBzb2xkZXMgc29udCBjb3JyZWN0cyAhXCIsXG4gICAgICAgIGl0ZW1zUGVyUGFnZTogXCLDiWzDqW1lbnRzIHBhciBwYWdlOlwiLFxuICAgICAgICB0b3RhbERpZmY6IFwiRGlmZi4gdG90YWxlXCIsXG4gICAgICAgIHNlYXJjaEJ5U2V0dGxlbWVudElkOiBcIlJlY2hlcmNoZXIgcGFyIE7CsCBkZSBSw6hnbGVtZW50XCIsXG4gICAgICAgIGZpbHRlcmluZzogXCJGaWx0cmFnZVwiLFxuICAgICAgICBkb2N1bWVudFR5cGVzOiB7XG4gICAgICAgICAgICBib25zX3ZlbnRlczogXCJCb25zIGRlIFZlbnRlXCIsXG4gICAgICAgICAgICBmYWN0dXJlc192ZW50ZXM6IFwiRmFjdHVyZXMgZGUgVmVudGVcIixcbiAgICAgICAgICAgIGF2b2lyc192ZW50ZXM6IFwiQXZvaXJzIGRlIFZlbnRlXCIsXG4gICAgICAgICAgICBib25zX2FjaGF0czogXCJCb25zIGQnQWNoYXRcIixcbiAgICAgICAgICAgIGZhY3R1cmVzX2FjaGF0czogXCJGYWN0dXJlcyBkJ0FjaGF0XCIsXG4gICAgICAgICAgICBhdm9pcnNfYWNoYXRzOiBcIkF2b2lycyBkJ0FjaGF0XCJcbiAgICAgICAgfSxcbiAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgcmVmOiBcIlLDqWbDqXJlbmNlXCIsXG4gICAgICAgICAgICBlbnRpdHk6IFwiRW50aXTDqVwiLFxuICAgICAgICAgICAgbW9udGFudF90dGM6IFwiTW9udGFudCBUVENcIixcbiAgICAgICAgICAgIHBheW1lbnRzX2NvdW50OiBcIlBhaWVtZW50c1wiLFxuICAgICAgICAgICAgZGlmZmVyZW5jZTogXCLDiWNhcnRcIixcbiAgICAgICAgICAgIGRpYWdub3N0aWM6IFwiRGlhZ25vc3RpY1wiLFxuICAgICAgICAgICAgYWlfYWxlcnQ6IFwiQUlcIixcbiAgICAgICAgICAgIGxhc3RfbW9kaWZpZWQ6IFwiTW9kaWZpw6kgbGVcIixcbiAgICAgICAgICAgIGFjdGlvbnM6IFwiQWN0aW9uc1wiXG4gICAgICAgIH0sXG4gICAgICAgIGRpYWdub3N0aWNzOiB7XG4gICAgICAgICAgICAnU09VU19FVkFMVUUnOiAnU291cy3DqXZhbHXDqScsXG4gICAgICAgICAgICAnU1VSX0VWQUxVRSc6ICdTdXItw6l2YWx1w6knLFxuICAgICAgICAgICAgJ0VRVUlMSUJSRSc6ICfDiXF1aWxpYnLDqSdcbiAgICAgICAgfSxcbiAgICAgICAgcGF5bWVudHNSZWdpc3RlcmVkOiBcInBhaWVtZW50cyBlbnJlZ2lzdHLDqXNcIixcbiAgICAgICAgcmVhbFBhaWQ6IFwiUGF5w6kgcsOpZWxsZW1lbnRcIixcbiAgICAgICAgcmVjb3JkZWQ6IFwiRW5yZWdpc3Ryw6lcIixcbiAgICAgICAgYWxlcnRMZXZlbHM6IHtcbiAgICAgICAgICAgIGxvdzogXCJGYWlibGVcIixcbiAgICAgICAgICAgIG1lZGl1bTogXCJNb3llblwiLFxuICAgICAgICAgICAgaGlnaDogXCLDiWxldsOpXCIsXG4gICAgICAgICAgICBjcml0aWNhbDogXCJDcml0aXF1ZVwiXG4gICAgICAgIH1cbiAgICB9LFxuICAgIGFyOiB7XG4gICAgICAgIG1haW5UaXRsZTogXCLZhdix2YPYsiDYp9mE2KrYtNiu2YrYtSDYp9mE2YXYp9mE2YpcIixcbiAgICAgICAgbWFpblN1YnRpdGxlOiBcItin2YPYqti02YEg2YjYtdit2K0g2YXYtNin2YPZhCDYp9mE2KrYs9mI2YrYqSDYp9mE2YXYp9mE2YrYqVwiLFxuICAgICAgICBnbG9iYWxPdmVydmlldzogXCLZhti42LHYqSDYudin2YXYqSDYtNin2YXZhNipIC0g2KfZhtmC2LEg2LnZhNmJINio2LfYp9mC2Kkg2YTYudix2LYg2KfZhNiq2YHYp9i12YrZhFwiLFxuICAgICAgICByZWZyZXNoRGF0YTogXCLYqtit2K/ZitirINin2YTYqNmK2KfZhtin2KpcIixcbiAgICAgICAgY2xpY2tUb1ZpZXc6IFwi2KfZhtmC2LEg2YTYudix2LYg2KfZhNiq2YHYp9i12YrZhFwiLFxuICAgICAgICBjbGlja0NhcmRUb1ZpZXc6IFwi2KfZhtmC2LEg2LnZhNmJINio2LfYp9mC2Kkg2KPYudmE2KfZhyDZhNi52LHYtiDYp9mE2YXYtNin2YPZhFwiLFxuICAgICAgICBzZWxlY3REb2N1bWVudFR5cGU6IFwi2KfYrtiq2LEg2YbZiNi5INin2YTZiNir2YrZgtipXCIsXG4gICAgICAgIHNlbGVjdEVudGl0eTogXCLYp9iu2KrYsSDYp9mE2KzZh9ipINin2YTZhdiq2KPYq9ix2KlcIixcbiAgICAgICAgc2VsZWN0RnJvbUxpc3Q6IFwi2KfYqNit2Ksg2YjYp9iu2KrYsS4uLlwiLFxuICAgICAgICB0b3RhbEVudGl0aWVzOiBcItil2KzZhdin2YTZiiDYudiv2K8g2KfZhNis2YfYp9iqXCIsXG4gICAgICAgIGNsaWVudDogXCLYudmF2YrZhFwiLFxuICAgICAgICBzdXBwbGllcjogXCLZhdmI2LHYr1wiLFxuICAgICAgICB0b3RhbFRvUmV2aWV3OiBcItin2YTZhdio2YTYuiDYp9mE2YXYt9mE2YjYqCDZhdix2KfYrNi52KrZh1wiLFxuICAgICAgICBub0VudGl0aWVzV2l0aElzc3VlczogXCLZhNinINiq2YjYrNivINis2YfYp9iqINio2YfYpyDZhdi02KfZg9mEXCIsXG4gICAgICAgIGlzc3VlczogXCLZhdi02KfZg9mEXCIsXG4gICAgICAgIHRvdGFsQW1vdW50OiBcItin2YTZhdio2YTYuiDYp9mE2KXYrNmF2KfZhNmKXCIsXG4gICAgICAgIHRvdGFsOiBcItin2YTYpdis2YXYp9mE2YpcIixcbiAgICAgICAgZGlzY3JlcGFuY2llc0ZvdW5kOiBcItin2YTZhdi02KfZg9mEXCIsXG4gICAgICAgIGxvYWRpbmdFcnJvcjogXCLYrti32KMg2YHZiiDYp9mE2KrYrdmF2YrZhFwiLFxuICAgICAgICBub0Rpc2NyZXBhbmNpZXM6IFwi2YTYpyDYqtmI2KzYryDZhdi02KfZg9mEISDYrNmF2YrYuSDYp9mE2KPYsdi12K/YqSDYtdit2YrYrdipIVwiLFxuICAgICAgICBpdGVtc1BlclBhZ2U6IFwi2LnZhtin2LXYsSDZhNmD2YQg2LXZgdit2Kk6XCIsXG4gICAgICAgIHRvdGFsRGlmZjogXCLYp9mE2YHYsdmCINin2YTZg9mE2YpcIixcbiAgICAgICAgc2VhcmNoQnlTZXR0bGVtZW50SWQ6IFwi2KfZhNio2K3YqyDYqNix2YLZhSDYp9mE2KrYs9mI2YrYqVwiLFxuICAgICAgICBmaWx0ZXJpbmc6IFwi2KrYtdmB2YrYqVwiLFxuICAgICAgICBkb2N1bWVudFR5cGVzOiB7XG4gICAgICAgICAgICBib25zX3ZlbnRlczogXCLZiNi12YjZhNin2Kog2KfZhNio2YrYuVwiLFxuICAgICAgICAgICAgZmFjdHVyZXNfdmVudGVzOiBcItmB2YjYp9iq2YrYsSDYp9mE2KjZiti5XCIsXG4gICAgICAgICAgICBhdm9pcnNfdmVudGVzOiBcItij2YHZiNin2LEg2KfZhNio2YrYuVwiLFxuICAgICAgICAgICAgYm9uc19hY2hhdHM6IFwi2YjYtdmI2YTYp9iqINin2YTYtNix2KfYoVwiLFxuICAgICAgICAgICAgZmFjdHVyZXNfYWNoYXRzOiBcItmB2YjYp9iq2YrYsSDYp9mE2LTYsdin2KFcIixcbiAgICAgICAgICAgIGF2b2lyc19hY2hhdHM6IFwi2KPZgdmI2KfYsSDYp9mE2LTYsdin2KFcIlxuICAgICAgICB9LFxuICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICByZWY6IFwi2KfZhNmF2LHYrNi5XCIsXG4gICAgICAgICAgICBlbnRpdHk6IFwi2KfZhNis2YfYqVwiLFxuICAgICAgICAgICAgbW9udGFudF90dGM6IFwi2KfZhNmF2KjZhNi6INin2YTYpdis2YXYp9mE2YpcIixcbiAgICAgICAgICAgIHBheW1lbnRzX2NvdW50OiBcItin2YTYr9mB2LnYp9iqXCIsXG4gICAgICAgICAgICBkaWZmZXJlbmNlOiBcItin2YTZgdix2YJcIixcbiAgICAgICAgICAgIGRpYWdub3N0aWM6IFwi2KfZhNiq2LTYrtmK2LVcIixcbiAgICAgICAgICAgIGFpX2FsZXJ0OiBcItin2YTYsNmD2KfYoSDYp9mE2KfYtdi32YbYp9i52YpcIixcbiAgICAgICAgICAgIGxhc3RfbW9kaWZpZWQ6IFwi2KLYrtixINiq2LnYr9mK2YRcIixcbiAgICAgICAgICAgIGFjdGlvbnM6IFwi2KfZhNil2KzYsdin2KHYp9iqXCJcbiAgICAgICAgfSxcbiAgICAgICAgZGlhZ25vc3RpY3M6IHtcbiAgICAgICAgICAgICdTT1VTX0VWQUxVRSc6ICfYo9mC2YQg2YXZhiDYp9mE2YLZitmF2KknLFxuICAgICAgICAgICAgJ1NVUl9FVkFMVUUnOiAn2KPZg9ir2LEg2YXZhiDYp9mE2YLZitmF2KknLFxuICAgICAgICAgICAgJ0VRVUlMSUJSRSc6ICfZhdiq2YjYp9iy2YYnXG4gICAgICAgIH0sXG4gICAgICAgIHBheW1lbnRzUmVnaXN0ZXJlZDogXCLYr9mB2LnYp9iqINmF2LPYrNmE2KlcIixcbiAgICAgICAgcmVhbFBhaWQ6IFwi2KfZhNmF2K/ZgdmI2Lkg2YHYudmE2YrYp9mLXCIsXG4gICAgICAgIHJlY29yZGVkOiBcItin2YTZhdiz2KzZhFwiLFxuICAgICAgICBhbGVydExldmVsczoge1xuICAgICAgICAgICAgbG93OiBcItmF2YbYrtmB2LZcIixcbiAgICAgICAgICAgIG1lZGl1bTogXCLZhdiq2YjYs9i3XCIsXG4gICAgICAgICAgICBoaWdoOiBcItmF2LHYqtmB2LlcIixcbiAgICAgICAgICAgIGNyaXRpY2FsOiBcItit2LHYrFwiXG4gICAgICAgIH1cbiAgICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gICAgbWl4aW5zOiBbd2lkZ2V0c01peGluXSxcbiAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIERvY3VtZW50Rm9yZW5zaWNWaWV3ZXIsXG4gICAgICAgIEZpeEFjdGlvbkRpYWxvZ1xuICAgIH0sXG4gICAgZGF0YSgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGN1cnJlbnRMYW5nOiAnZnInLFxuICAgICAgICAgICAgbG9hZGluZzogZmFsc2UsXG4gICAgICAgICAgICBsb2FkaW5nR2xvYmFsOiBmYWxzZSxcbiAgICAgICAgICAgIGxvYWRpbmdGb3JlbnNpYzogZmFsc2UsXG4gICAgICAgICAgICBlcnJvcjogbnVsbCxcbiAgICAgICAgICAgIGdsb2JhbERhdGE6IG51bGwsXG4gICAgICAgICAgICBkaXNjcmVwYW5jaWVzOiBbXSxcbiAgICAgICAgICAgIHNlbGVjdGVkRG9jdW1lbnRUeXBlOiBudWxsLFxuICAgICAgICAgICAgZW50aXRpZXNMaXN0OiBbXSxcbiAgICAgICAgICAgIHNlbGVjdGVkRW50aXR5SWQ6IG51bGwsXG4gICAgICAgICAgICBzZWxlY3RlZEVudGl0eU5hbWU6IG51bGwsXG4gICAgICAgICAgICBzZWxlY3RlZEVudGl0eVRvdGFsOiBudWxsLFxuICAgICAgICAgICAgZm9yZW5zaWNEaWFsb2c6IGZhbHNlLFxuICAgICAgICAgICAgZml4RGlhbG9nOiBmYWxzZSxcbiAgICAgICAgICAgIHNlbGVjdGVkRG9jdW1lbnQ6IG51bGwsXG4gICAgICAgICAgICBmb3JlbnNpY0RhdGE6IG51bGwsXG4gICAgICAgICAgICBkb2N1bWVudFRvRml4OiBudWxsLFxuICAgICAgICAgICAgY3VycmVudERvY3VtZW50VHlwZTogbnVsbCxcbiAgICAgICAgICAgIHNldHRsZW1lbnRJZEZpbHRlcjogJydcbiAgICAgICAgfTtcbiAgICB9LFxuICAgIGNvbXB1dGVkOiB7XG4gICAgICAgIFQoKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJhbnNsYXRpb25zW3RoaXMuY3VycmVudExhbmddIHx8IHRyYW5zbGF0aW9ucy5mcjtcbiAgICAgICAgfSxcbiAgICAgICAgaXNDbGllbnRUeXBlKCkge1xuICAgICAgICAgICAgcmV0dXJuIFsnYm9uc192ZW50ZXMnLCAnZmFjdHVyZXNfdmVudGVzJywgJ2F2b2lyc192ZW50ZXMnXS5pbmNsdWRlcyh0aGlzLnNlbGVjdGVkRG9jdW1lbnRUeXBlKTtcbiAgICAgICAgfSxcbiAgICAgICAgc2VsZWN0ZWRFbnRpdHlJbmZvKCkge1xuICAgICAgICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkRW50aXR5SWQgfHwgIXRoaXMuZW50aXRpZXNMaXN0Lmxlbmd0aCkgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5lbnRpdGllc0xpc3QuZmluZChlID0+IGUuaWQgPT09IHRoaXMuc2VsZWN0ZWRFbnRpdHlJZCk7XG4gICAgICAgIH0sXG4gICAgICAgIGRpc2NyZXBhbmN5SGVhZGVycygpIHtcbiAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgeyB0ZXh0OiB0aGlzLlQuaGVhZGVycy5yZWYsIHZhbHVlOiAncmVmJywgc29ydGFibGU6IGZhbHNlLCB3aWR0aDogJzE4MHB4JyB9LFxuICAgICAgICAgICAgICAgIHsgdGV4dDogdGhpcy5ULmhlYWRlcnMuZW50aXR5LCB2YWx1ZTogJ2VudGl0eV9uYW1lJywgc29ydGFibGU6IGZhbHNlIH0sXG4gICAgICAgICAgICAgICAgeyB0ZXh0OiB0aGlzLlQuaGVhZGVycy5tb250YW50X3R0YywgdmFsdWU6ICdtb250YW50X3R0YycsIHNvcnRhYmxlOiB0cnVlLCBhbGlnbjogJ3JpZ2h0JyB9LFxuICAgICAgICAgICAgICAgIHsgdGV4dDogdGhpcy5ULmhlYWRlcnMucGF5bWVudHNfY291bnQsIHZhbHVlOiAncGF5bWVudHNfY291bnQnLCBzb3J0YWJsZTogdHJ1ZSwgYWxpZ246ICdjZW50ZXInLCB3aWR0aDogJzEwMHB4JyB9LFxuICAgICAgICAgICAgICAgIHsgdGV4dDogdGhpcy5ULmhlYWRlcnMuZGlmZmVyZW5jZSwgdmFsdWU6ICdkaWZmZXJlbmNlJywgc29ydGFibGU6IHRydWUsIGFsaWduOiAncmlnaHQnIH0sXG4gICAgICAgICAgICAgICAgeyB0ZXh0OiB0aGlzLlQuaGVhZGVycy5kaWFnbm9zdGljLCB2YWx1ZTogJ2RpYWdub3N0aWMnLCBzb3J0YWJsZTogZmFsc2UsIGFsaWduOiAnY2VudGVyJywgd2lkdGg6ICcxMjBweCcgfSxcbiAgICAgICAgICAgICAgICB7IHRleHQ6IHRoaXMuVC5oZWFkZXJzLmFpX2FsZXJ0LCB2YWx1ZTogJ2FpX2FsZXJ0Jywgc29ydGFibGU6IGZhbHNlLCBhbGlnbjogJ2NlbnRlcicsIHdpZHRoOiAnMTAwcHgnIH0sXG4gICAgICAgICAgICAgICAgeyB0ZXh0OiB0aGlzLlQuaGVhZGVycy5sYXN0X21vZGlmaWVkLCB2YWx1ZTogJ2xhc3RfbW9kaWZpZWQnLCBzb3J0YWJsZTogdHJ1ZSwgd2lkdGg6ICcxNDBweCcgfSxcbiAgICAgICAgICAgICAgICB7IHRleHQ6IHRoaXMuVC5oZWFkZXJzLmFjdGlvbnMsIHZhbHVlOiAnYWN0aW9ucycsIHNvcnRhYmxlOiBmYWxzZSwgYWxpZ246ICdjZW50ZXInLCB3aWR0aDogJzEwMHB4JyB9XG4gICAgICAgICAgICBdO1xuICAgICAgICB9LFxuICAgICAgICBmaWx0ZXJlZERpc2NyZXBhbmNpZXMoKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuc2V0dGxlbWVudElkRmlsdGVyKSByZXR1cm4gdGhpcy5kaXNjcmVwYW5jaWVzO1xuXG4gICAgICAgICAgICBjb25zdCBmaWx0ZXIgPSB0aGlzLnNldHRsZW1lbnRJZEZpbHRlci50b1N0cmluZygpLnRyaW0oKTtcbiAgICAgICAgICAgIGlmICghZmlsdGVyKSByZXR1cm4gdGhpcy5kaXNjcmVwYW5jaWVzO1xuXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5kaXNjcmVwYW5jaWVzLmZpbHRlcihpdGVtID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIWl0ZW0uZGV0YWlscykgcmV0dXJuIGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgLy8gQ2hlY2sgaGlzdG9yaXF1ZV9wYWllbWVudHNcbiAgICAgICAgICAgICAgICBpZiAoaXRlbS5kZXRhaWxzLmhpc3RvcmlxdWVfcGFpZW1lbnRzICYmIEFycmF5LmlzQXJyYXkoaXRlbS5kZXRhaWxzLmhpc3RvcmlxdWVfcGFpZW1lbnRzKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXRlbS5kZXRhaWxzLmhpc3RvcmlxdWVfcGFpZW1lbnRzLnNvbWUocCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgcC5wYWllbWVudHNfaWQgJiYgcC5wYWllbWVudHNfaWQudG9TdHJpbmcoKS5pbmNsdWRlcyhmaWx0ZXIpXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9LFxuICAgIG1ldGhvZHM6IHtcbiAgICAgICAgYXBwbHlGaWx0ZXJzKCkge1xuICAgICAgICAgICAgLy8gVHJpZ2dlcmVkIG9uIGlucHV0LCB1c2VmdWwgZm9yIGRlYm91bmNpbmcgaWYgbmVlZGVkLCBvciByZXNldHRpbmcgcGFnaW5hdGlvblxuICAgICAgICAgICAgLy8gVnVlIGRhdGEgdGFibGUgaGFuZGxlcyBwYWdpbmF0aW9uIGF1dG9tYXRpY2FsbHkgd2hlbiBpdGVtcyBjaGFuZ2VcbiAgICAgICAgfSxcbiAgICAgICAgdG9nZ2xlTGFuZ3VhZ2UoKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRMYW5nID0gdGhpcy5jdXJyZW50TGFuZyA9PT0gJ2ZyJyA/ICdhcicgOiAnZnInO1xuICAgICAgICB9LFxuICAgICAgICBmb3JtYXRDdXJyZW5jeSh2YWx1ZSkge1xuICAgICAgICAgICAgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQpIHJldHVybiAnTi9BJztcbiAgICAgICAgICAgIGNvbnN0IG51bWJlciA9IHBhcnNlRmxvYXQodmFsdWUpO1xuICAgICAgICAgICAgaWYgKGlzTmFOKG51bWJlcikpIHJldHVybiAnTi9BJztcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIudG9GaXhlZCgyKS5yZXBsYWNlKC9cXGQoPz0oXFxkezN9KStcXC4pL2csICckJiwnKTtcbiAgICAgICAgfSxcbiAgICAgICAgZm9ybWF0RGF0ZShkYXRlU3RyaW5nKSB7XG4gICAgICAgICAgICBpZiAoIWRhdGVTdHJpbmcpIHJldHVybiAnLSc7XG4gICAgICAgICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoZGF0ZVN0cmluZyk7XG4gICAgICAgICAgICByZXR1cm4gZGF0ZS50b0xvY2FsZURhdGVTdHJpbmcoJ2ZyLUZSJyk7XG4gICAgICAgIH0sXG4gICAgICAgIGZvcm1hdERhdGVUaW1lKGRhdGVTdHJpbmcpIHtcbiAgICAgICAgICAgIGlmICghZGF0ZVN0cmluZykgcmV0dXJuICctJztcbiAgICAgICAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZShkYXRlU3RyaW5nKTtcbiAgICAgICAgICAgIHJldHVybiBkYXRlLnRvTG9jYWxlU3RyaW5nKCdmci1GUicsIHtcbiAgICAgICAgICAgICAgICB5ZWFyOiAnbnVtZXJpYycsXG4gICAgICAgICAgICAgICAgbW9udGg6ICcyLWRpZ2l0JyxcbiAgICAgICAgICAgICAgICBkYXk6ICcyLWRpZ2l0JyxcbiAgICAgICAgICAgICAgICBob3VyOiAnMi1kaWdpdCcsXG4gICAgICAgICAgICAgICAgbWludXRlOiAnMi1kaWdpdCdcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBpc01vZGlmaWVkQWZ0ZXJDcmVhdGlvbihkZXRhaWxzSW5mbykge1xuICAgICAgICAgICAgaWYgKCFkZXRhaWxzSW5mby5kYXRlX2NyZWF0aW9uX3N5c3RlbWUgfHwgIWRldGFpbHNJbmZvLmRhdGVfbW9kaWZpY2F0aW9uX3N5c3RlbWUpIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIHJldHVybiBkZXRhaWxzSW5mby5kYXRlX2NyZWF0aW9uX3N5c3RlbWUgIT09IGRldGFpbHNJbmZvLmRhdGVfbW9kaWZpY2F0aW9uX3N5c3RlbWU7XG4gICAgICAgIH0sXG4gICAgICAgIGdldERpYWdub3N0aWNDb2xvcihkaWFnbm9zdGljKSB7XG4gICAgICAgICAgICBjb25zdCBjb2xvcnMgPSB7XG4gICAgICAgICAgICAgICAgJ1NPVVNfRVZBTFVFJzogJ2Vycm9yJyxcbiAgICAgICAgICAgICAgICAnU1VSX0VWQUxVRSc6ICd3YXJuaW5nJyxcbiAgICAgICAgICAgICAgICAnRVFVSUxJQlJFJzogJ3N1Y2Nlc3MnXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgcmV0dXJuIGNvbG9yc1tkaWFnbm9zdGljXSB8fCAnZ3JleSc7XG4gICAgICAgIH0sXG4gICAgICAgIGdldEFJQWxlcnRDb2xvcihhbGVydExldmVsKSB7XG4gICAgICAgICAgICBjb25zdCBjb2xvcnMgPSB7XG4gICAgICAgICAgICAgICAgJ2Rhbmdlcic6ICdlcnJvcicsXG4gICAgICAgICAgICAgICAgJ3dhcm5pbmcnOiAnd2FybmluZycsXG4gICAgICAgICAgICAgICAgJ2luZm8nOiAnaW5mbycsXG4gICAgICAgICAgICAgICAgJ3N1Y2Nlc3MnOiAnc3VjY2VzcydcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICByZXR1cm4gY29sb3JzW2FsZXJ0TGV2ZWxdIHx8ICdncmV5JztcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0QUlBbGVydEljb24oYWxlcnRMZXZlbCkge1xuICAgICAgICAgICAgY29uc3QgaWNvbnMgPSB7XG4gICAgICAgICAgICAgICAgJ2Rhbmdlcic6ICdtZGktYWxlcnQtb2N0YWdvbicsXG4gICAgICAgICAgICAgICAgJ3dhcm5pbmcnOiAnbWRpLWFsZXJ0JyxcbiAgICAgICAgICAgICAgICAnaW5mbyc6ICdtZGktaW5mb3JtYXRpb24nLFxuICAgICAgICAgICAgICAgICdzdWNjZXNzJzogJ21kaS1jaGVjay1jaXJjbGUnXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgcmV0dXJuIGljb25zW2FsZXJ0TGV2ZWxdIHx8ICdtZGktaGVscC1jaXJjbGUnO1xuICAgICAgICB9LFxuICAgICAgICBnZXRDYXJkQ29sb3IoY291bnQpIHtcbiAgICAgICAgICAgIGlmIChjb3VudCA9PT0gMCkgcmV0dXJuICdzdWNjZXNzJztcbiAgICAgICAgICAgIGlmIChjb3VudCA8IDUpIHJldHVybiAnd2FybmluZyc7XG4gICAgICAgICAgICByZXR1cm4gJ2Vycm9yJztcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0QWxlcnRDb2xvcihpdGVtKSB7XG4gICAgICAgICAgICBjb25zdCBhYnNEaWZmID0gTWF0aC5hYnMoaXRlbS5kaWZmZXJlbmNlKTtcbiAgICAgICAgICAgIGlmIChhYnNEaWZmIDwgMTApIHJldHVybiAnaW5mbyc7XG4gICAgICAgICAgICBpZiAoYWJzRGlmZiA8IDEwMCkgcmV0dXJuICd3YXJuaW5nJztcbiAgICAgICAgICAgIHJldHVybiAnZXJyb3InO1xuICAgICAgICB9LFxuICAgICAgICBnZXRBbGVydExhYmVsKGl0ZW0pIHtcbiAgICAgICAgICAgIGNvbnN0IGFic0RpZmYgPSBNYXRoLmFicyhpdGVtLmRpZmZlcmVuY2UpO1xuICAgICAgICAgICAgaWYgKGFic0RpZmYgPCAxMCkgcmV0dXJuIHRoaXMuVC5hbGVydExldmVscy5sb3c7XG4gICAgICAgICAgICBpZiAoYWJzRGlmZiA8IDEwMCkgcmV0dXJuIHRoaXMuVC5hbGVydExldmVscy5tZWRpdW07XG4gICAgICAgICAgICBpZiAoYWJzRGlmZiA8IDEwMDApIHJldHVybiB0aGlzLlQuYWxlcnRMZXZlbHMuaGlnaDtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLlQuYWxlcnRMZXZlbHMuY3JpdGljYWw7XG4gICAgICAgIH0sXG4gICAgICAgIGFzeW5jIGxvYWRHbG9iYWxPdmVydmlldygpIHtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZ0dsb2JhbCA9IHRydWU7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgYXhpb3MuZ2V0KCcvYW5hbHlzZS9jaGVjaycpO1xuICAgICAgICAgICAgICAgIHRoaXMuZ2xvYmFsRGF0YSA9IHJlc3BvbnNlLmRhdGE7XG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGxvYWRpbmcgZ2xvYmFsIG92ZXJ2aWV3OicsIGVycm9yKTtcbiAgICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nR2xvYmFsID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGFzeW5jIGxvYWREb2N1bWVudFR5cGVEYXRhKGRvY3VtZW50VHlwZSkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERvY3VtZW50VHlwZSA9IGRvY3VtZW50VHlwZTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRFbnRpdHlJZCA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRW50aXR5TmFtZSA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRW50aXR5VG90YWwgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuZXJyb3IgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5kaXNjcmVwYW5jaWVzID0gW107XG4gICAgICAgICAgICB0aGlzLmVudGl0aWVzTGlzdCA9IFtdO1xuXG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGVuZHBvaW50ID0gdGhpcy5nZXRFbmRwb2ludEZvckRvY3VtZW50VHlwZShkb2N1bWVudFR5cGUpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgYXhpb3MuZ2V0KGVuZHBvaW50KTtcblxuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5kYXRhLnN0YXR1cyA9PT0gJ3N1Y2Nlc3MnKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIEdyb3VwIGRpc2NyZXBhbmNpZXMgYnkgZW50aXR5XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGVudGl0aWVzTWFwID0ge307XG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLmRhdGEuZGlzY3JlcGFuY2llcy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZW50aXR5SWQgPSBpdGVtLmNsaWVudF9pZCB8fCBpdGVtLmZvdXJuaXNzZXVyX2lkO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZW50aXR5TmFtZSA9IGl0ZW0uY2xpZW50X25hbWUgfHwgaXRlbS5mb3Vybmlzc2V1cl9uYW1lO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWVudGl0aWVzTWFwW2VudGl0eUlkXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudGl0aWVzTWFwW2VudGl0eUlkXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGVudGl0eUlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBlbnRpdHlOYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudDogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxfZGlmZjogMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGVudGl0aWVzTWFwW2VudGl0eUlkXS5jb3VudCsrO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW50aXRpZXNNYXBbZW50aXR5SWRdLnRvdGFsX2RpZmYgKz0gTWF0aC5hYnMoaXRlbS5kaWZmZXJlbmNlKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gQ29udmVydCB0byBhcnJheSBhbmQgc29ydCBieSBjb3VudCBkZXNjZW5kaW5nXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZW50aXRpZXNMaXN0ID0gT2JqZWN0LnZhbHVlcyhlbnRpdGllc01hcClcbiAgICAgICAgICAgICAgICAgICAgICAgIC5zb3J0KChhLCBiKSA9PiBiLmNvdW50IC0gYS5jb3VudCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBsb2FkaW5nIGRvY3VtZW50IHR5cGUgZGF0YTonLCBlcnJvcik7XG4gICAgICAgICAgICAgICAgdGhpcy5lcnJvciA9IGVycm9yLnJlc3BvbnNlPy5kYXRhPy5tZXNzYWdlIHx8IGVycm9yLm1lc3NhZ2U7XG4gICAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBhc3luYyBsb2FkRW50aXR5RGF0YShlbnRpdHlJZCkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEVudGl0eUlkID0gZW50aXR5SWQ7XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5lcnJvciA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLmRpc2NyZXBhbmNpZXMgPSBbXTtcblxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25zdCBlbmRwb2ludCA9IHRoaXMuZ2V0RW5kcG9pbnRGb3JEb2N1bWVudFR5cGUodGhpcy5zZWxlY3RlZERvY3VtZW50VHlwZSk7XG4gICAgICAgICAgICAgICAgY29uc3QgdXJsID0gYCR7ZW5kcG9pbnR9LyR7ZW50aXR5SWR9YDtcbiAgICAgICAgICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGF4aW9zLmdldCh1cmwpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmRhdGEuc3RhdHVzID09PSAnc3VjY2VzcycpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kaXNjcmVwYW5jaWVzID0gcmVzcG9uc2UuZGF0YS5kaXNjcmVwYW5jaWVzLm1hcChpdGVtID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgZW50aXR5X25hbWU6IHRoaXMuZ2V0RW50aXR5TmFtZShpdGVtKVxuICAgICAgICAgICAgICAgICAgICB9KSk7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gU2V0IGVudGl0eSBpbmZvXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGVudGl0eSA9IHRoaXMuZW50aXRpZXNMaXN0LmZpbmQoZSA9PiBlLmlkID09PSBlbnRpdHlJZCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChlbnRpdHkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRFbnRpdHlOYW1lID0gZW50aXR5Lm5hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRW50aXR5VG90YWwgPSBlbnRpdHkudG90YWxfZGlmZjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgbG9hZGluZyBlbnRpdHkgZGF0YTonLCBlcnJvcik7XG4gICAgICAgICAgICAgICAgdGhpcy5lcnJvciA9IGVycm9yLnJlc3BvbnNlPy5kYXRhPy5tZXNzYWdlIHx8IGVycm9yLm1lc3NhZ2U7XG4gICAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBvbkVudGl0eVNlbGVjdGVkKGVudGl0eUlkKSB7XG4gICAgICAgICAgICBpZiAoZW50aXR5SWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRFbnRpdHlEYXRhKGVudGl0eUlkKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gQ2xlYXIgc2VsZWN0aW9uXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEVudGl0eU5hbWUgPSBudWxsO1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRFbnRpdHlUb3RhbCA9IG51bGw7XG4gICAgICAgICAgICAgICAgdGhpcy5kaXNjcmVwYW5jaWVzID0gW107XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGdldERvY3VtZW50SWNvbih0eXBlKSB7XG4gICAgICAgICAgICBjb25zdCBpY29ucyA9IHtcbiAgICAgICAgICAgICAgICAnYm9uc192ZW50ZXMnOiAnbWRpLXJlY2VpcHQnLFxuICAgICAgICAgICAgICAgICdmYWN0dXJlc192ZW50ZXMnOiAnbWRpLWZpbGUtZG9jdW1lbnQnLFxuICAgICAgICAgICAgICAgICdhdm9pcnNfdmVudGVzJzogJ21kaS1maWxlLWNhbmNlbCcsXG4gICAgICAgICAgICAgICAgJ2JvbnNfYWNoYXRzJzogJ21kaS1yZWNlaXB0LXRleHQnLFxuICAgICAgICAgICAgICAgICdmYWN0dXJlc19hY2hhdHMnOiAnbWRpLWZpbGUtZG9jdW1lbnQtb3V0bGluZScsXG4gICAgICAgICAgICAgICAgJ2F2b2lyc19hY2hhdHMnOiAnbWRpLWZpbGUtY2FuY2VsLW91dGxpbmUnXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgcmV0dXJuIGljb25zW3R5cGVdIHx8ICdtZGktZmlsZSc7XG4gICAgICAgIH0sXG4gICAgICAgIGdldEVuZHBvaW50Rm9yRG9jdW1lbnRUeXBlKHR5cGUpIHtcbiAgICAgICAgICAgIGNvbnN0IGVuZHBvaW50cyA9IHtcbiAgICAgICAgICAgICAgICAnYm9uc192ZW50ZXMnOiAnL2FuYWx5c2UvY2hlY2stYm9ucy12ZW50ZXMnLFxuICAgICAgICAgICAgICAgICdmYWN0dXJlc192ZW50ZXMnOiAnL2FuYWx5c2UvY2hlY2stZmFjdHVyZXMtdmVudGVzJyxcbiAgICAgICAgICAgICAgICAnYXZvaXJzX3ZlbnRlcyc6ICcvYW5hbHlzZS9jaGVjay1hdm9pcnMtdmVudGVzJyxcbiAgICAgICAgICAgICAgICAnYm9uc19hY2hhdHMnOiAnL2FuYWx5c2UvY2hlY2stYm9ucy1hY2hhdHMnLFxuICAgICAgICAgICAgICAgICdmYWN0dXJlc19hY2hhdHMnOiAnL2FuYWx5c2UvY2hlY2stZmFjdHVyZXMtYWNoYXRzJyxcbiAgICAgICAgICAgICAgICAnYXZvaXJzX2FjaGF0cyc6ICcvYW5hbHlzZS9jaGVjay1hdm9pcnMtYWNoYXRzJ1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJldHVybiBlbmRwb2ludHNbdHlwZV07XG4gICAgICAgIH0sXG4gICAgICAgIGdldEVudGl0eU5hbWUoaXRlbSkge1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW0uY2xpZW50X25hbWUgfHwgaXRlbS5mb3Vybmlzc2V1cl9uYW1lIHx8ICdOL0EnO1xuICAgICAgICB9LFxuICAgICAgICBhc3luYyB2aWV3RGV0YWlscyhpdGVtKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRG9jdW1lbnQgPSBpdGVtO1xuICAgICAgICAgICAgdGhpcy5mb3JlbnNpY0RpYWxvZyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmdGb3JlbnNpYyA9IHRydWU7XG5cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgLy8gRm9yZW5zaWMgZGF0YSBpcyBhbHJlYWR5IGluY2x1ZGVkIGluIHRoZSBkZXRhaWxzIGZpZWxkIGZyb20gYmFja2VuZFxuICAgICAgICAgICAgICAgIHRoaXMuZm9yZW5zaWNEYXRhID0gaXRlbS5kZXRhaWxzIHx8IG51bGw7XG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGxvYWRpbmcgZm9yZW5zaWMgZGF0YTonLCBlcnJvcik7XG4gICAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZ0ZvcmVuc2ljID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGZpeERvY3VtZW50KGl0ZW0pIHtcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRUb0ZpeCA9IGl0ZW07XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnREb2N1bWVudFR5cGUgPSB0aGlzLnNlbGVjdGVkRG9jdW1lbnRUeXBlO1xuICAgICAgICAgICAgdGhpcy5maXhEaWFsb2cgPSB0cnVlO1xuICAgICAgICB9LFxuICAgICAgICBhc3luYyBvbkRvY3VtZW50Rml4ZWQoKSB7XG4gICAgICAgICAgICB0aGlzLmZpeERpYWxvZyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5mb3JlbnNpY0RpYWxvZyA9IGZhbHNlO1xuXG4gICAgICAgICAgICAvLyBSZWxvYWQgZGF0YSBpbnRlbGxpZ2VudGx5XG4gICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZEVudGl0eUlkKSB7XG4gICAgICAgICAgICAgICAgLy8gUmVsb2FkIGVudGl0eSBkYXRhIHRvIGNoZWNrIGlmIHRoZXJlIGFyZSBzdGlsbCBpc3N1ZXNcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmxvYWRFbnRpdHlEYXRhKHRoaXMuc2VsZWN0ZWRFbnRpdHlJZCk7XG5cbiAgICAgICAgICAgICAgICAvLyBJZiBubyBtb3JlIGRpc2NyZXBhbmNpZXMgZm9yIHRoaXMgZW50aXR5LCBjbGVhciBzZWxlY3Rpb24gYW5kIHJlbG9hZCBlbnRpdGllcyBsaXN0XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZGlzY3JlcGFuY2llcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJldmlvdXNFbnRpdHlOYW1lID0gdGhpcy5zZWxlY3RlZEVudGl0eU5hbWU7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gQ2xlYXIgZW50aXR5IHNlbGVjdGlvblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRW50aXR5SWQgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRW50aXR5TmFtZSA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRFbnRpdHlUb3RhbCA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGlzY3JlcGFuY2llcyA9IFtdO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIFJlbG9hZCBkb2N1bWVudCB0eXBlIGRhdGEgdG8gcmVmcmVzaCBlbnRpdGllcyBsaXN0XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMubG9hZERvY3VtZW50VHlwZURhdGEodGhpcy5zZWxlY3RlZERvY3VtZW50VHlwZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gU2hvdyBzdWNjZXNzIG1lc3NhZ2UgKG9wdGlvbmFsIC0gY291bGQgdXNlIHNuYWNrYmFyIGlmIGF2YWlsYWJsZSlcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coYOKckyBBbGwgaXNzdWVzIHJlc29sdmVkIGZvciAke3ByZXZpb3VzRW50aXR5TmFtZX1gKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc2VsZWN0ZWREb2N1bWVudFR5cGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWREb2N1bWVudFR5cGVEYXRhKHRoaXMuc2VsZWN0ZWREb2N1bWVudFR5cGUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBBbHdheXMgcmVmcmVzaCBnbG9iYWwgb3ZlcnZpZXdcbiAgICAgICAgICAgIHRoaXMubG9hZEdsb2JhbE92ZXJ2aWV3KCk7XG4gICAgICAgIH0sXG4gICAgICAgIHJlZnJlc2hHbG9iYWxEYXRhKCkge1xuICAgICAgICAgICAgdGhpcy5sb2FkR2xvYmFsT3ZlcnZpZXcoKTtcbiAgICAgICAgfSxcbiAgICAgICAgcmVmcmVzaEN1cnJlbnRWaWV3KCkge1xuICAgICAgICAgICAgLy8gUmVmcmVzaCBiYXNlZCBvbiB3aGF0J3MgY3VycmVudGx5IHNlbGVjdGVkXG4gICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZEVudGl0eUlkKSB7XG4gICAgICAgICAgICAgICAgLy8gUmVsb2FkIGVudGl0eSBkYXRhXG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkRW50aXR5RGF0YSh0aGlzLnNlbGVjdGVkRW50aXR5SWQpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNlbGVjdGVkRG9jdW1lbnRUeXBlKSB7XG4gICAgICAgICAgICAgICAgLy8gUmVsb2FkIGRvY3VtZW50IHR5cGUgZGF0YSAoZW50aXRpZXMgbGlzdClcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWREb2N1bWVudFR5cGVEYXRhKHRoaXMuc2VsZWN0ZWREb2N1bWVudFR5cGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gQWxzbyByZWZyZXNoIGdsb2JhbCBvdmVydmlld1xuICAgICAgICAgICAgdGhpcy5sb2FkR2xvYmFsT3ZlcnZpZXcoKTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgbW91bnRlZCgpIHtcbiAgICAgICAgdGhpcy5sb2FkR2xvYmFsT3ZlcnZpZXcoKTtcbiAgICB9XG59O1xuPC9zY3JpcHQ+XG5cbjxzdHlsZSBzY29wZWQ+XG4udi1kYXRhLXRhYmxlPj4+LmVycm9yLS10ZXh0IHtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbn1cblxuLnYtZGF0YS10YWJsZT4+Pi5zdWNjZXNzLS10ZXh0IHtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbn1cblxuLmNsaWNrYWJsZS1jYXJkIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTtcbn1cblxuLmNsaWNrYWJsZS1jYXJkOmhvdmVyIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTRweCk7XG4gICAgYm94LXNoYWRvdzogMCA4cHggMTZweCByZ2JhKDAsIDAsIDAsIDAuMikgIWltcG9ydGFudDtcbn1cblxuLnNlbGVjdGVkLWNhcmQge1xuICAgIGJvcmRlcjogM3B4IHNvbGlkIHdoaXRlO1xuICAgIGJveC1zaGFkb3c6IDAgMCAyMHB4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KSAhaW1wb3J0YW50O1xufVxuPC9zdHlsZT5cbiIsIjx0ZW1wbGF0ZT5cbiAgICA8di1jb250YWluZXIgZmx1aWQgY2xhc3M9XCJmaWxsLWhlaWdodCBqdXN0aWZ5LWNlbnRlciBhbGlnbi1zdGFydCBwdC0xMFwiPlxuICAgICAgICA8di1yb3cganVzdGlmeT1cImNlbnRlclwiPlxuICAgICAgICAgICAgPHYtY29sIGNvbHM9XCIxMlwiIHhsPVwiMTBcIj5cbiAgICAgICAgICAgICAgICA8dHJvdWJsZXNob290aW5nLWRhc2hib2FyZCByZWY9XCJkYXNoYm9hcmRcIiA6Y2xvc2U9XCJmYWxzZVwiIGNsYXNzPVwibXgtYXV0b1wiXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPVwid2lkdGg6IDEwMCU7XCI+PC90cm91Ymxlc2hvb3RpbmctZGFzaGJvYXJkPlxuICAgICAgICAgICAgPC92LWNvbD5cbiAgICAgICAgPC92LXJvdz5cbiAgICA8L3YtY29udGFpbmVyPlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdD5cbmltcG9ydCBUcm91Ymxlc2hvb3RpbmdEYXNoYm9hcmQgZnJvbSBcIkAvd2lkZ2V0cy9UcmFuc2FjdGlvbnMvVHJvdWJsZXNob290aW5nRGFzaGJvYXJkLnZ1ZVwiO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gICAgbmFtZTogXCJBY2NvdW50aW5nSXNzdWVzUGFnZVwiLFxuICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgVHJvdWJsZXNob290aW5nRGFzaGJvYXJkXG4gICAgfSxcbiAgICBtb3VudGVkKCkge1xuICAgICAgICAvLyBPcHRpb25hbGx5IHRyaWdnZXIgYSByZWZyZXNoIG9yIHNwZWNpZmljIHZpZXcgaWYgbmVlZGVkXG4gICAgfVxufTtcbjwvc2NyaXB0PlxuXG48c3R5bGUgc2NvcGVkPlxuLmZpbGwtaGVpZ2h0IHtcbiAgICBoZWlnaHQ6IDEwMCU7XG59XG48L3N0eWxlPlxuIiwiPHRlbXBsYXRlPlxuICA8IS0tXG4gICAg4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQXG4gICAgQ29tcG9zYW50IEluZm9Sb290IC0gR2VzdGlvbiBkZXMgbW9udGFudHMgZW4gY291cnMgYXV0b3Jpc8Opc1xuICAgINmF2YPZiNmGIEluZm9Sb290IC0g2KXYr9in2LHYqSDYp9mE2YXYqNin2YTYuiDYp9mE2KzYp9ix2YrYqSDYp9mE2YXYs9mF2YjYrdipXG4gICAg4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQXG4gICAgXG4gICAgTU9ERSBDUsOJQVRJT046IGNhbGN1bCBkaXJlY3QgPSAoYm9ucyArIGZhY3R1cmVzKVxuICAgIE1PREUgTU9ESUZJQ0FUSU9OOiBjYWxjdWwgYXZlYyBzb3VzdHJhY3Rpb24gPSAoYm9ucyArIGZhY3R1cmVzKSAtIG1vbnRhbnRfcHLDqWPDqWRlbnRcbiAgICBcbiAgICDZiNi22Lkg2KfZhNil2YbYtNin2KE6INit2LPYp9ioINmF2KjYp9i02LEgPSAo2KfZhNiz2YbYr9in2KogKyDYp9mE2YHZiNin2KrZitixKVxuICAgINmI2LbYuSDYp9mE2KrYudiv2YrZhDog2K3Ys9in2Kgg2YXYuSDYp9mE2LfYsditID0gKNin2YTYs9mG2K/Yp9iqICsg2KfZhNmB2YjYp9iq2YrYsSkgLSDYp9mE2YXYqNmE2Lpf2KfZhNiz2KfYqNmCXG4gICAg4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQXG4gIC0tPlxuICA8ZGl2IHYtaWY9XCIoaW5mb19tb250YW50X2VuY291cnNfYXV0b3Jpc2UgfHwgZmxhZ19tb250YW50X2VuY291cnNfYXV0b3Jpc2UpICYmIGluZm9cIj5cblxuICAgIDwhLS0gQWxlcnRlIHNpIGTDqXBhc3NlbWVudCAtLT5cbiAgICA8di1hbGVydCB2LWlmPVwibWVzc2FnZV9tb250YW50X2VuY291cnNfYXV0b3Jpc2VcIiB0eXBlPVwiZXJyb3JcIiB0ZXh0IGRlbnNlIGNsYXNzPVwibWItMyBhbGVydC1hbmltYXRlXCJcbiAgICAgIGljb249XCJtZGktYWxlcnQtY2lyY2xlXCI+XG4gICAgICA8c3Ryb25nPnt7ICR0KG1lc3NhZ2VfbW9udGFudF9lbmNvdXJzX2F1dG9yaXNlKSB9fTwvc3Ryb25nPlxuICAgIDwvdi1hbGVydD5cblxuICAgIDwhLS0gU2VjdGlvbiBGaW5hbmNpYWwgSW5mbyAoc2FucyBjYXJkKSAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiZmluYW5jaWFsLWluZm8tc2VjdGlvblwiPlxuICAgICAgPCEtLSBIZWFkZXIgU2VjdGlvbiAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJmaW5hbmNpYWwtaGVhZGVyXCI+XG4gICAgICAgIDx2LWljb24gc2l6ZT1cIjE4XCIgY2xhc3M9XCJtci0yXCIgY29sb3I9XCJwcmltYXJ5XCI+bWRpLWNhc2gtbXVsdGlwbGU8L3YtaWNvbj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJmaW5hbmNpYWwtdGl0bGVcIj57eyAkdChcIk1vbnRhbnRzIHJlc3RhbnRzXCIpIH19PC9zcGFuPlxuICAgICAgICA8di1zcGFjZXI+PC92LXNwYWNlcj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJmaW5hbmNpYWwtZGF0ZVwiPlxuICAgICAgICAgIDx2LWljb24gc2l6ZT1cIjEyXCIgY2xhc3M9XCJtci0xXCI+bWRpLWNhbGVuZGFyPC92LWljb24+XG4gICAgICAgICAge3sgY29udmVydERhdGUoaXRlbXNfc2VsZWN0ZWRfaW5mb1tcImNyZWF0ZWRBdFwiXSkgfX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDwhLS0gQW1vdW50cyBHcmlkIC0tPlxuICAgICAgPHYtcm93IGNsYXNzPVwiYW1vdW50cy1ncmlkIG10LTNcIiBkZW5zZT5cbiAgICAgICAgPCEtLSBCb25zIGRlIGxpdnJhaXNvbiAtLT5cbiAgICAgICAgPHYtY29sIGNvbHM9XCIxMlwiIHNtPVwiNlwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJhbW91bnQtYm94IGJsLWJveFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFtb3VudC1sYWJlbFwiPlxuICAgICAgICAgICAgICA8di1pY29uIHNpemU9XCIxNFwiIGNsYXNzPVwibXItMVwiPm1kaS1maWxlLWRvY3VtZW50LW91dGxpbmU8L3YtaWNvbj5cbiAgICAgICAgICAgICAgPHNwYW4+e3sgJHQoXCJCb25zIGRlIGxpdnJhaXNvblwiKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFtb3VudC12YWx1ZVwiPlxuICAgICAgICAgICAgICB7eyBmb3JtYXRBbW91bnQobW9udGFudGVuY291cnNib25zKSB9fVxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnJlbmN5XCI+REg8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC92LWNvbD5cblxuICAgICAgICA8IS0tIEZhY3R1cmVzIC0tPlxuICAgICAgICA8di1jb2wgY29scz1cIjEyXCIgc209XCI2XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImFtb3VudC1ib3ggZmEtYm94XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYW1vdW50LWxhYmVsXCI+XG4gICAgICAgICAgICAgIDx2LWljb24gc2l6ZT1cIjE0XCIgY2xhc3M9XCJtci0xXCI+bWRpLWZpbGUtaW52b2ljZTwvdi1pY29uPlxuICAgICAgICAgICAgICA8c3Bhbj57eyAkdChcIkZhY3R1cmVzXCIpIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYW1vdW50LXZhbHVlXCI+XG4gICAgICAgICAgICAgIHt7IGZvcm1hdEFtb3VudChtb250YW50ZW5jb3Vyc2ZhY3R1cmVzKSB9fVxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnJlbmN5XCI+REg8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC92LWNvbD5cblxuICAgICAgICA8IS0tIE1vbnRhbnQgcHLDqWPDqWRlbnQgKGFmZmljaMOpIHVuaXF1ZW1lbnQgZW4gbW9kZSBtb2RpZmljYXRpb24pIC0tPlxuICAgICAgICA8IS0tINin2YTZhdio2YTYuiDYp9mE2LPYp9io2YIgKNmK2LjZh9ixINmB2YLYtyDZgdmKINmI2LbYuSDYp9mE2KrYudiv2YrZhCkgLS0+XG4gICAgICAgIDwhLS0gQ2UgbW9udGFudCBzZXJhIHNvdXN0cmFpdCBkdSB0b3RhbCBwb3VyIMOpdml0ZXIgbGUgZG91YmxlIGNvbXB0YWdlIC0tPlxuICAgICAgICA8IS0tINiz2YrYqtmFINi32LHYrSDZh9iw2Kcg2KfZhNmF2KjZhNi6INmF2YYg2KfZhNil2KzZhdin2YTZiiDZhNiq2KzZhtioINin2YTYrdiz2KfYqCDYp9mE2YXYstiv2YjYrCAtLT5cbiAgICAgICAgPHYtY29sIGNvbHM9XCIxMlwiIHNtPVwiMTJcIiB2LWlmPVwiaXNfdXBkYXRlICYmIG1vbnRhbnR1cGRhdGVTYXZlID4gMFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJhbW91bnQtYm94IGF1dGgtYm94XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYW1vdW50LWxhYmVsXCI+XG4gICAgICAgICAgICAgIDx2LWljb24gc2l6ZT1cIjE0XCIgY2xhc3M9XCJtci0xXCI+bWRpLXNoaWVsZC1jaGVjazwvdi1pY29uPlxuICAgICAgICAgICAgICA8c3Bhbj57eyAkdChcIk1vbnRhbnQgcHLDqWPDqWRlbnRcIikgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhbW91bnQtdmFsdWVcIj5cbiAgICAgICAgICAgICAge3sgZm9ybWF0QW1vdW50KG1vbnRhbnR1cGRhdGVTYXZlKSB9fVxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnJlbmN5XCI+REg8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC92LWNvbD5cbiAgICAgIDwvdi1yb3c+XG5cbiAgICAgIDwhLS0gQXV0aG9yaXplZCBTZWN0aW9uIC0tPlxuICAgICAgPGRpdiB2LWlmPVwibW9udGFudGVuY291cnNhdXRvcmlzZSA+IDBcIiBjbGFzcz1cImF1dGhvcml6ZWQtaW5mbyBtdC0zXCI+XG4gICAgICAgIDwhLS0gVG90YWwgZW4gY291cnM6IChCb25zICsgRmFjdHVyZXMpIC0gTW9udGFudCBQcsOpY8OpZGVudCAtLT5cbiAgICAgICAgPCEtLSDYp9mE2KXYrNmF2KfZhNmKINin2YTYrdin2YTZijogKNin2YTYs9mG2K/Yp9iqICsg2KfZhNmB2YjYp9iq2YrYsSkgLSDYp9mE2YXYqNmE2Log2KfZhNiz2KfYqNmCIC0tPlxuICAgICAgICA8IS0tIEVuIG1vZGUgbW9kaWZpY2F0aW9uLCBvbiBzb3VzdHJhaXQgbGUgbW9udGFudCBwcsOpY8OpZGVudCBwb3VyIMOpdml0ZXIgbGUgZG91YmxlIGNvbXB0YWdlIC0tPlxuICAgICAgICA8IS0tINmB2Yog2YjYtti5INin2YTYqti52K/ZitmE2Iwg2YbYt9ix2K0g2KfZhNmF2KjZhNi6INin2YTYs9in2KjZgiDZhNiq2KzZhtioINin2YTYrdiz2KfYqCDYp9mE2YXYstiv2YjYrCAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRvdGFsLXJvd1wiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidG90YWwtbGFiZWxcIj5cbiAgICAgICAgICAgIDx2LWljb24gc2l6ZT1cIjE2XCIgY2xhc3M9XCJtci0xXCI+bWRpLXNpZ21hPC92LWljb24+XG4gICAgICAgICAgICB7eyAkdChcIlRvdGFsIGVuIGNvdXJzXCIpIH19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidG90YWwtdmFsdWVcIj5cbiAgICAgICAgICAgIHt7IGZvcm1hdEFtb3VudCgobW9udGFudGVuY291cnNib25zICogMSArIG1vbnRhbnRlbmNvdXJzZmFjdHVyZXMgKiAxKSAtIChtb250YW50dXBkYXRlU2F2ZSAqIDEpKSB9fSBESFxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPCEtLSBQcm9ncmVzcyBCYXIgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwcm9ncmVzcy1jb250YWluZXIgbXQtMlwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9ncmVzcy1sYWJlbHNcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicHJvZ3Jlc3MtbGFiZWxcIj57eyAkdChcIk1vbnRhbnQgYXV0b3Jpc8OpXCIpIH19PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwcm9ncmVzcy1tYXhcIj57eyBmb3JtYXRBbW91bnQobW9udGFudGVuY291cnNhdXRvcmlzZSkgfX0gREg8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPHYtcHJvZ3Jlc3MtbGluZWFyIDp2YWx1ZT1cImdldFByb2dyZXNzUGVyY2VudGFnZSgpXCIgOmNvbG9yPVwiZ2V0UHJvZ3Jlc3NDb2xvcigpXCIgaGVpZ2h0PVwiNlwiIHJvdW5kZWRcbiAgICAgICAgICAgIGNsYXNzPVwibXQtMVwiPlxuICAgICAgICAgIDwvdi1wcm9ncmVzcy1saW5lYXI+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwhLS0gUmVtYWluaW5nIEFtb3VudCAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJlbWFpbmluZy1yb3cgbXQtMlwiIDpjbGFzcz1cImdldFJlbWFpbmluZ0NsYXNzKClcIj5cbiAgICAgICAgICA8di1pY29uIHNpemU9XCIxNFwiIGNsYXNzPVwibXItMVwiPnt7IGdldFJlbWFpbmluZ0ljb24oKSB9fTwvdi1pY29uPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwicmVtYWluaW5nLXRleHRcIj5cbiAgICAgICAgICAgIHt7ICR0KFwiTW9udGFudCByZXN0YW50IGF1dG9yaXPDqVwiKSB9fTogPHN0cm9uZz57eyBmb3JtYXRBbW91bnQobW9udGFudHJlc3RhbnRhdXRvcmlzZSkgfX0gREg8L3N0cm9uZz5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwhLS0gQXV0aG9yaXphdGlvbiBTdGF0dXMgKG5vdXZlYXUpIC0tPlxuICAgICAgICA8ZGl2IHYtaWY9XCJtb250YW50X3NhaXNpICYmIE1vbnRhbnRTYWlzaSA+IDBcIiBjbGFzcz1cImF1dGhvcml6YXRpb24tc3RhdHVzIG10LTNcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RhdHVzLWhlYWRlclwiPlxuICAgICAgICAgICAgPHYtaWNvbiBzaXplPVwiMTZcIiBjbGFzcz1cIm1yLTFcIj5tZGktc2hpZWxkLWNoZWNrPC92LWljb24+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN0YXR1cy10aXRsZVwiPnt7ICR0KFwiVmFsaWRhdGlvbiBkdSBtb250YW50XCIpIH19PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInN0YXR1cy1jb250ZW50IG10LTJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGF0dXMtY29tcGFyaXNvblwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29tcGFyaXNvbi1pdGVtXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjb21wYXJpc29uLWxhYmVsXCI+e3sgJHQoXCJNb250YW50IHNhaXNpXCIpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY29tcGFyaXNvbi12YWx1ZSBlbnRlcmVkXCI+e3sgZm9ybWF0QW1vdW50KE1vbnRhbnRTYWlzaSkgfX0gREg8L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8di1pY29uIHNpemU9XCIyMFwiIGNsYXNzPVwibXgtMlwiIDpjb2xvcj1cIk1vbnRhbnRTYWlzaSA8PSBtb250YW50cmVzdGFudGF1dG9yaXNlID8gJ3N1Y2Nlc3MnIDogJ2Vycm9yJ1wiPlxuICAgICAgICAgICAgICAgIHt7IE1vbnRhbnRTYWlzaSA8PSBtb250YW50cmVzdGFudGF1dG9yaXNlID8gJ21kaS1sZXNzLXRoYW4tb3ItZXF1YWwnIDogJ21kaS1ncmVhdGVyLXRoYW4nIH19IDwvdi1pY29uPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbXBhcmlzb24taXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNvbXBhcmlzb24tbGFiZWxcIj57eyAkdChcIk1vbnRhbnQgcmVzdGFudFwiKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjb21wYXJpc29uLXZhbHVlIHJlbWFpbmluZ1wiPnt7IGZvcm1hdEFtb3VudChtb250YW50cmVzdGFudGF1dG9yaXNlKSB9fSBESDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDx2LWFsZXJ0IDp0eXBlPVwiTW9udGFudFNhaXNpIDw9IG1vbnRhbnRyZXN0YW50YXV0b3Jpc2UgPyAnc3VjY2VzcycgOiAnZXJyb3InXCIgdGV4dCBkZW5zZVxuICAgICAgICAgICAgICBjbGFzcz1cIm10LTIgbWItMCBzdGF0dXMtYWxlcnRcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICA8di1pY29uIHNpemU9XCIxOFwiIGNsYXNzPVwibXItMlwiPlxuICAgICAgICAgICAgICAgICAge3sgTW9udGFudFNhaXNpIDw9IG1vbnRhbnRyZXN0YW50YXV0b3Jpc2UgPyAnbWRpLWNoZWNrLWNpcmNsZScgOiAnbWRpLWFsZXJ0LWNpcmNsZScgfX0gPC92LWljb24+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIHYtaWY9XCJNb250YW50U2Fpc2kgPD0gbW9udGFudHJlc3RhbnRhdXRvcmlzZVwiIGNsYXNzPVwic3RhdHVzLW1lc3NhZ2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7eyAkdChcIk1vbnRhbnQgYXV0b3Jpc8OpIC0gTGEgdHJhbnNhY3Rpb24gcGV1dCDDqnRyZSBlbnJlZ2lzdHLDqWVcIikgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiB2LWVsc2UgY2xhc3M9XCJzdGF0dXMtbWVzc2FnZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIHt7ICR0KFwiTW9udGFudCBkw6lwYXNzw6lcIikgfX0gLVxuICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgZm9ybWF0QW1vdW50KE1vbnRhbnRTYWlzaSAtIG1vbnRhbnRyZXN0YW50YXV0b3Jpc2UpIH19IERIPC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgICAge3sgJHQoXCJlbiBleGPDqHNcIikgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvdi1hbGVydD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0PlxuaW1wb3J0IGkxOG4gZnJvbSBcIkAvcGx1Z2lucy9pMThuXCI7XG5pbXBvcnQgYXhpb3MgZnJvbSBcImF4aW9zXCI7XG5leHBvcnQgZGVmYXVsdCB7XG4gIHByb3BzOiB7XG4gICAgLy8g2KfZhNmF2KrYrdmD2YUg2KfZhNix2KbZitiz2Yog2YTZhNi52YbYtdixIC8gQ29udHLDtGxldXIgcHJpbmNpcGFsIGR1IGNvbXBvc2FudFxuICAgIGNvbnRyb2xsZXJfcm9vdDoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgfSxcblxuICAgIC8vINin2LPZhSDYp9mE2K3ZgtmEINin2YTZhdiv2K7ZhCAo2KfZhNi52YTYp9mC2KkpIC8gTm9tIGR1IGNoYW1wIGQnZW50csOpZSAocmVsYXRpb24pXG4gICAgaW5wdXRfcm9vdDoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgfSxcbiAgICAvLyDYrdmC2YQg2KfZhNmF2KjZhNi6INin2YTZhdiv2K7ZhCAvIENoYW1wIGR1IG1vbnRhbnQgc2Fpc2lcbiAgICBtb250YW50X3NhaXNpOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiBcIlwiLFxuICAgIH0sXG4gICAgLy8g2YXYtdiv2LEg2KfZhNio2YrYp9mG2KfYqiDYp9mE2KjYr9mK2YQgLyBTb3VyY2UgZGUgZG9ubsOpZXMgYWx0ZXJuYXRpdmVcbiAgICBpbnB1dF9yb290X2Zyb206IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6IFwiXCIsXG4gICAgfSxcblxuICAgIC8vINi52LHYtiDYp9mE2YXYudmE2YjZhdin2Kog2KfZhNmF2KfZhNmK2KkgLyBBZmZpY2hlciBsZXMgaW5mb3JtYXRpb25zIGZpbmFuY2nDqHJlc1xuICAgIGluZm86IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICB9LFxuXG4gICAgLy8g2KrZgdi52YrZhCDYp9mE2KrYrdmC2YIg2YXZhiDYqtis2KfZiNiyINin2YTZhdio2YTYuiDYp9mE2YXYs9mF2YjYrSAo2KXZhNiy2KfZhdmKKSAvIEFjdGl2ZXIgbGEgdsOpcmlmaWNhdGlvbiBkdSBkw6lwYXNzZW1lbnQgKG9ibGlnYXRvaXJlKVxuICAgIGZsYWdfbW9udGFudF9lbmNvdXJzX2F1dG9yaXNlOiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgfSxcbiAgICAvLyDYudix2LYg2YXYudmE2YjZhdin2Kog2KfZhNmF2KjZhNi6INin2YTZhdiz2YXZiNitICjZhdi52YTZiNmF2KfYqtmKINmB2YLYtykgLyBBZmZpY2hlciBsZXMgaW5mb3MgZHUgbW9udGFudCBhdXRvcmlzw6kgKGluZm9ybWF0aWYpXG4gICAgaW5mb19tb250YW50X2VuY291cnNfYXV0b3Jpc2U6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICB9LFxuICB9LFxuICBkYXRhKCkge1xuICAgIHJldHVybiB7XG4gICAgICB2YWx1ZTogdW5kZWZpbmVkLFxuICAgICAgLy8g2LHYs9in2YTYqSDYqtis2KfZiNiyINin2YTZhdio2YTYuiDYp9mE2YXYs9mF2YjYrSAvIE1lc3NhZ2UgZGUgZMOpcGFzc2VtZW50IGR1IG1vbnRhbnQgYXV0b3Jpc8OpXG4gICAgICBtZXNzYWdlX21vbnRhbnRfZW5jb3Vyc19hdXRvcmlzZTogXCJcIixcbiAgICAgIC8vINmF2KjZhNi6INiz2YbYr9in2Kog2KfZhNiq2LPZhNmK2YUg2LrZitixINin2YTZhdiz2K/Yr9ipIC8gTW9udGFudCBkZXMgYm9ucyBkZSBsaXZyYWlzb24gZW4gY291cnNcbiAgICAgIG1vbnRhbnRlbmNvdXJzYm9uczogMCxcbiAgICAgIC8vINmF2KjZhNi6INin2YTZgdmI2KfYqtmK2LEg2LrZitixINin2YTZhdiz2K/Yr9ipIC8gTW9udGFudCBkZXMgZmFjdHVyZXMgZW4gY291cnNcbiAgICAgIG1vbnRhbnRlbmNvdXJzZmFjdHVyZXM6IDAsXG4gICAgICAvLyDYp9mE2YXYqNmE2Log2KfZhNij2YLYtdmJINin2YTZhdiz2YXZiNitINio2YcgLyBNb250YW50IG1heGltdW0gYXV0b3Jpc8OpIGVuIGNvdXJzXG4gICAgICBtb250YW50ZW5jb3Vyc2F1dG9yaXNlOiAwLFxuICAgICAgLy8g2KfZhNmF2KjZhNi6INin2YTZhdiq2KjZgtmKINin2YTZhdiz2YXZiNitINio2YcgLyBNb250YW50IHJlc3RhbnQgYXV0b3Jpc8OpXG4gICAgICBtb250YW50cmVzdGFudGF1dG9yaXNlOiAwLFxuICAgICAgLy8g2KfZhNmF2KjZhNi6INin2YTYs9in2KjZgiDYp9mE2YXYrdmB2YjYuCAo2YHZiiDYrdin2YTYqSDYp9mE2KrYudiv2YrZhCkgLyBNb250YW50IHByw6ljw6lkZW50IHNhdXZlZ2FyZMOpIChlbiBtb2RlIG1vZGlmaWNhdGlvbilcbiAgICAgIG1vbnRhbnR1cGRhdGVTYXZlOiAwLFxuXG4gICAgICAvLyDZhdi52YTZiNmF2KfYqiDYp9mE2LnZhti12LEg2KfZhNmF2K3Yr9ivIC8gSW5mb3JtYXRpb25zIGRlIGwnw6lsw6ltZW50IHPDqWxlY3Rpb25uw6lcbiAgICAgIGl0ZW1zX3NlbGVjdGVkX2luZm86IHt9LFxuICAgIH07XG4gIH0sXG5cbiAgY29tcHV0ZWQ6IHtcblxuXG4gICAgaXRlbXMoKSB7XG4gICAgICBsZXQgZGF0YSA9IHRoaXMuZGF0YV9sb2FkO1xuXG4gICAgICBsZXQgaXRlbXMgPSBbXTtcblxuICAgICAgZm9yIChjb25zdCBrZXkgaW4gZGF0YSkge1xuICAgICAgICBsZXQgb3B0aW9uID0ge307XG5cbiAgICAgICAgY29uc3QgZWxlbWVudCA9IGRhdGFba2V5XTtcblxuICAgICAgICBvcHRpb24udGV4dCA9IGVsZW1lbnRbXCJ0b1N0cmluZ1wiXTtcbiAgICAgICAgb3B0aW9uLnZhbHVlID0gZWxlbWVudFtcImlkXCJdO1xuICAgICAgICBpZiAob3B0aW9uLnZhbHVlID09IHRoaXMudmFsdWVzX2JpbmRzKSB7XG4gICAgICAgICAgdGhpcy52YWx1ZSA9IG9wdGlvbjtcbiAgICAgICAgfVxuICAgICAgICBpdGVtcy5wdXNoKG9wdGlvbik7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBpdGVtcztcbiAgICB9LFxuXG4gICAgZGF0YV9sb2FkKCkge1xuICAgICAgbGV0IGZyb20gPSBcIlwiO1xuICAgICAgaWYgKHRoaXMuaW5wdXRfcm9vdF9mcm9tICE9IFwiXCIpIHtcbiAgICAgICAgZnJvbSA9IHRoaXMuaW5wdXRfcm9vdF9mcm9tO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZnJvbSA9IHRoaXMuaW5wdXRfcm9vdDtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLiRzdG9yZS5nZXR0ZXJzW1wic3RydWN0dXJlL2dldF9kYXRhX1NlbGVjdF9sb2FkXCJdKHtcbiAgICAgICAgY29udHJvbGxlcl9yb290OiB0aGlzLmNvbnRyb2xsZXJfcm9vdCxcbiAgICAgICAgbmFtZU1hbnlUb09uZTogZnJvbSxcbiAgICAgIH0pO1xuICAgIH0sXG5cbiAgICB2YWx1ZXNfYmluZHMoKSB7XG4gICAgICByZXR1cm4gdGhpcy4kc3RvcmUuZ2V0dGVyc1tcInN0cnVjdHVyZS9nZXRfaW5wdXRfYmluZHNcIl0oe1xuICAgICAgICBjb250cm9sbGVyX3Jvb3Q6IHRoaXMuY29udHJvbGxlcl9yb290LFxuICAgICAgICBuYW1lOiB0aGlzLmlucHV0X3Jvb3QsXG4gICAgICB9KTtcbiAgICB9LFxuICAgIC8vINmF2LnYsdmBINin2YTYs9is2YQg2KfZhNit2KfZhNmKIC8gSUQgZGUgbCdlbnJlZ2lzdHJlbWVudCBhY3R1ZWxcbiAgICB2YWx1ZXNfYmluZHNfaWQoKSB7XG4gICAgICByZXR1cm4gdGhpcy4kc3RvcmUuZ2V0dGVyc1tcInN0cnVjdHVyZS9nZXRfaW5wdXRfYmluZHNcIl0oe1xuICAgICAgICBjb250cm9sbGVyX3Jvb3Q6IHRoaXMuY29udHJvbGxlcl9yb290LFxuICAgICAgICBuYW1lOiAnaWQnLFxuICAgICAgfSk7XG4gICAgfSxcbiAgICAvLyDYp9mE2KrYrdmC2YIg2YXZhiDZiNi22Lkg2KfZhNiq2LnYr9mK2YQgKHRydWUgPSDYqti52K/ZitmEINiz2KzZhCDZhdmI2KzZiNiv2IwgZmFsc2UgPSDYpdmG2LTYp9ihINis2K/ZitivKVxuICAgIC8vIFbDqXJpZmllciBsZSBtb2RlIG1vZGlmaWNhdGlvbiAodHJ1ZSA9IG1vZGlmaWNhdGlvbiBkJ3VuIGVucmVnaXN0cmVtZW50IGV4aXN0YW50LCBmYWxzZSA9IGNyw6lhdGlvbilcbiAgICBpc191cGRhdGUoKSB7XG4gICAgICByZXR1cm4gdGhpcy52YWx1ZXNfYmluZHNfaWQgIT0gXCJcIiAmJiB0aGlzLnZhbHVlc19iaW5kc19pZCAhPSB1bmRlZmluZWQgJiYgdGhpcy52YWx1ZXNfYmluZHNfaWQgPiAwO1xuICAgIH0sXG5cbiAgICAvLyDYp9mE2YXYqNmE2Log2KfZhNmF2Y/Yr9iu2YQg2YXZhiDZgtio2YQg2KfZhNmF2LPYqtiu2K/ZhSAvIE1vbnRhbnQgc2Fpc2kgcGFyIGwndXRpbGlzYXRldXJcbiAgICBNb250YW50U2Fpc2koKSB7XG4gICAgICByZXR1cm4gdGhpcy4kc3RvcmUuZ2V0dGVyc1tcInN0cnVjdHVyZS9nZXRfaW5wdXRfYmluZHNcIl0oe1xuICAgICAgICBjb250cm9sbGVyX3Jvb3Q6IHRoaXMuY29udHJvbGxlcl9yb290LFxuICAgICAgICBuYW1lOiB0aGlzLm1vbnRhbnRfc2Fpc2ksXG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgQmFzZV91cmxfd2ViKCkge1xuICAgICAgcmV0dXJuIHRoaXMuJHN0b3JlLmdldHRlcnNbXCJnZXRfQmFzZV91cmxcIl07XG4gICAgfSxcbiAgfSxcbiAgd2F0Y2g6IHtcblxuXG5cblxuICAgIE1vbnRhbnRTYWlzaSh2YWwpIHtcbiAgICAgIHRoaXMuYXV0b3Jpc2VTYXZlRGF0YSgpO1xuICAgIH0sXG4gICAgdmFsdWVzX2JpbmRzKHZhbCkge1xuICAgICAgdGhpcy5hdXRvcmlzZVNhdmVEYXRhKCk7XG5cblxuICAgICAgdGhpcy5tZXNzYWdlX21vbnRhbnRfZW5jb3Vyc19hdXRvcmlzZSA9IFwiXCI7XG5cblxuXG5cblxuXG5cbiAgICAgIGlmICh2YWwgIT0gdW5kZWZpbmVkICYmICh2YWwgKiAxKSA+IDApIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZF9pbmZvKHZhbCk7XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIHRoaXMuaW5mb19tb250YW50X2VuY291cnNfYXV0b3Jpc2UgfHxcbiAgICAgICAgICB0aGlzLmZsYWdfbW9udGFudF9lbmNvdXJzX2F1dG9yaXNlXG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMuZ2V0ZGF0YUFqYXgodmFsKTtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkX2luZm8odmFsKTtcbiAgICAgICAgfVxuXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLml0ZW1zX3NlbGVjdGVkX2luZm8gPSBcIlwiO1xuICAgICAgfVxuICAgIH0sXG4gICAgaXRlbXModmFsKSB7XG4gICAgICBjb25zb2xlLmxvZyh2YWwpO1xuXG5cbiAgICB9LFxuICB9LFxuXG4gIG1ldGhvZHM6IHtcbiAgICBjb252ZXJ0RGF0ZShpbnB1dEZvcm1hdCkge1xuICAgICAgaWYgKGlucHV0Rm9ybWF0ID09IG51bGwgfHwgaW5wdXRGb3JtYXQgPT0gXCJcIikge1xuICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gcGFkKHMpIHtcbiAgICAgICAgcmV0dXJuIHMgPCAxMCA/IFwiMFwiICsgcyA6IHM7XG4gICAgICB9XG4gICAgICB2YXIgZCA9IG5ldyBEYXRlKGlucHV0Rm9ybWF0KTtcbiAgICAgIHJldHVybiBbcGFkKGQuZ2V0RGF0ZSgpKSwgcGFkKGQuZ2V0TW9udGgoKSArIDEpLCBkLmdldEZ1bGxZZWFyKCldLmpvaW4oXG4gICAgICAgIFwiL1wiXG4gICAgICApO1xuICAgIH0sXG5cbiAgICBmb3JtYXRBbW91bnQoYW1vdW50KSB7XG4gICAgICByZXR1cm4gbmV3IEludGwuTnVtYmVyRm9ybWF0KCdmci1GUicsIHtcbiAgICAgICAgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAyLFxuICAgICAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDJcbiAgICAgIH0pLmZvcm1hdChhbW91bnQgfHwgMCk7XG4gICAgfSxcblxuICAgIGdldFByb2dyZXNzUGVyY2VudGFnZSgpIHtcbiAgICAgIGlmICh0aGlzLm1vbnRhbnRlbmNvdXJzYXV0b3Jpc2UgPD0gMCkgcmV0dXJuIDA7XG4gICAgICBjb25zdCB0b3RhbCA9ICh0aGlzLm1vbnRhbnRlbmNvdXJzYm9ucyAqIDEpICsgKHRoaXMubW9udGFudGVuY291cnNmYWN0dXJlcyAqIDEpO1xuICAgICAgcmV0dXJuIE1hdGgubWluKCh0b3RhbCAvIHRoaXMubW9udGFudGVuY291cnNhdXRvcmlzZSkgKiAxMDAsIDEwMCk7XG4gICAgfSxcblxuICAgIGdldFByb2dyZXNzQ29sb3IoKSB7XG4gICAgICBjb25zdCBwZXJjZW50YWdlID0gdGhpcy5nZXRQcm9ncmVzc1BlcmNlbnRhZ2UoKTtcbiAgICAgIGlmIChwZXJjZW50YWdlIDwgNTApIHJldHVybiAnc3VjY2Vzcyc7XG4gICAgICBpZiAocGVyY2VudGFnZSA8IDgwKSByZXR1cm4gJ3dhcm5pbmcnO1xuICAgICAgcmV0dXJuICdlcnJvcic7XG4gICAgfSxcblxuICAgIGdldFJlbWFpbmluZ0ljb24oKSB7XG4gICAgICBpZiAodGhpcy5tb250YW50cmVzdGFudGF1dG9yaXNlID4gMCkgcmV0dXJuICdtZGktY2hlY2stY2lyY2xlJztcbiAgICAgIGlmICh0aGlzLm1vbnRhbnRyZXN0YW50YXV0b3Jpc2UgPT09IDApIHJldHVybiAnbWRpLWFsZXJ0JztcbiAgICAgIHJldHVybiAnbWRpLWNsb3NlLWNpcmNsZSc7XG4gICAgfSxcblxuICAgIGdldFJlbWFpbmluZ0NsYXNzKCkge1xuICAgICAgaWYgKHRoaXMubW9udGFudHJlc3RhbnRhdXRvcmlzZSA+IDApIHJldHVybiAncmVtYWluaW5nLXBvc2l0aXZlJztcbiAgICAgIGlmICh0aGlzLm1vbnRhbnRyZXN0YW50YXV0b3Jpc2UgPT09IDApIHJldHVybiAncmVtYWluaW5nLXdhcm5pbmcnO1xuICAgICAgcmV0dXJuICdyZW1haW5pbmctbmVnYXRpdmUnO1xuICAgIH0sXG5cbiAgICBnZXRkYXRhQWpheChpZCkge1xuICAgICAgdGhpcy5tb250YW50ZW5jb3Vyc2JvbnMgPSAwO1xuICAgICAgdGhpcy5tb250YW50ZW5jb3Vyc2ZhY3R1cmVzID0gMDtcbiAgICAgIHRoaXMubW9udGFudGVuY291cnNhdXRvcmlzZSA9IDA7XG4gICAgICB0aGlzLm1vbnRhbnRyZXN0YW50YXV0b3Jpc2UgPSAwO1xuICAgICAgdGhpcy5tb250YW50dXBkYXRlU2F2ZSA9IDA7XG4gICAgICB0aGlzLm1lc3NhZ2VfbW9udGFudF9lbmNvdXJzX2F1dG9yaXNlID0gXCJcIjtcbiAgICAgIGxldCBmcm9tID0gXCJcIjtcbiAgICAgIGlmICh0aGlzLmlucHV0X3Jvb3RfZnJvbSAhPSBcIlwiKSB7XG4gICAgICAgIGZyb20gPSB0aGlzLmlucHV0X3Jvb3RfZnJvbTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZyb20gPSB0aGlzLmlucHV0X3Jvb3Q7XG4gICAgICB9XG5cbiAgICAgIGxldCBwYXRoID0gdGhpcy4kc3RvcmUuZ2V0dGVyc1tcImdldF9wYXRoXCJdKGZyb20pO1xuXG4gICAgICBpZiAocGF0aCAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIGF4aW9zXG4gICAgICAgICAgLmdldChwYXRoLCB7XG4gICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgIEF1dGhvcml6YXRpb246IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiSldUVG9rZW5cIiksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgICAgIGlkOiBpZCxcbiAgICAgICAgICAgICAgY2FsY3VsZW1vbnRhbnRlbmNvdXJzcmFwaWRlOiBcIjFcIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSlcbiAgICAgICAgICAudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgIGxldCBkID0gcmVzcG9uc2UuZGF0YVtcImRhdGFTZXRcIl1bMF07XG4gICAgICAgICAgICAvLyDYqtit2YXZitmEINin2YTZhdio2KfZhNi6INmF2YYg2KfZhNiu2KfYr9mFIC8gQ2hhcmdlbWVudCBkZXMgbW9udGFudHMgZGVwdWlzIGxlIHNlcnZldXJcbiAgICAgICAgICAgIHRoaXMubW9udGFudGVuY291cnNib25zID0gZFtcIm1vbnRhbnRlbmNvdXJzYm9uc1wiXSA/PyAwO1xuICAgICAgICAgICAgdGhpcy5tb250YW50ZW5jb3Vyc2ZhY3R1cmVzID0gZFtcIm1vbnRhbnRlbmNvdXJzZmFjdHVyZXNcIl0gPz8gMDtcbiAgICAgICAgICAgIHRoaXMubW9udGFudGVuY291cnNhdXRvcmlzZSA9IGRbXCJtb250YW50ZW5jb3Vyc2F1dG9yaXNlXCJdID8/IDA7XG5cbiAgICAgICAgICAgIC8vINmB2Yog2K3Yp9mE2Kkg2KfZhNiq2LnYr9mK2YQ6INmG2K3Yqtin2Kwg2K3Zgdi4INin2YTZhdio2YTYuiDYp9mE2LPYp9io2YIg2YTYt9ix2K3ZhyDZhdmGINin2YTYpdis2YXYp9mE2YpcbiAgICAgICAgICAgIC8vIEVuIG1vZGUgbW9kaWZpY2F0aW9uOiBvbiBkb2l0IHNhdXZlZ2FyZGVyIGxlIG1vbnRhbnQgcHLDqWPDqWRlbnQgcG91ciBsZSBzb3VzdHJhaXJlIGR1IHRvdGFsXG4gICAgICAgICAgICBpZiAodGhpcy5pc191cGRhdGUpIHtcbiAgICAgICAgICAgICAgLy8g2KrYudi32YrZhCDYstixINin2YTYrdmB2Lgg2YXYpNmC2KrYp9mLINit2KrZiSDZitiq2YUg2KrYrdmF2YrZhCDYp9mE2YXYqNmE2Log2KfZhNiz2KfYqNmCXG4gICAgICAgICAgICAgIC8vIETDqXNhY3RpdmVyIGxlIGJvdXRvbiBkZSBzYXV2ZWdhcmRlIHRlbXBvcmFpcmVtZW50IGp1c3F1J2F1IGNoYXJnZW1lbnQgZHUgbW9udGFudCBwcsOpY8OpZGVudFxuICAgICAgICAgICAgICB0aGlzLiRzdG9yZS5jb21taXQoXCJkaWFsb2cvc2V0X2RpYWxvZ19idG5fc2VuZFwiLCB7IGZsYWc6IHRydWUgfSk7XG5cbiAgICAgICAgICAgICAgLy8g2KfZhtiq2LjYp9ixIDEuNSDYq9in2YbZitipINmE2LbZhdin2YYg2KrYrdmF2YrZhCDYp9mE2YXYqNmE2Log2KfZhNmF2Y/Yr9iu2YQg2YHZiiDYp9mE2K3ZgtmEXG4gICAgICAgICAgICAgIC8vIEF0dGVuZHJlIDEuNSBzZWNvbmRlcyBwb3VyIHMnYXNzdXJlciBxdWUgbGUgbW9udGFudCBzYWlzaSBlc3QgY2hhcmfDqVxuICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAvLyDYrdmB2Lgg2KfZhNmF2KjZhNi6INin2YTYs9in2KjZgiAo2KfZhNmF2KjZhNi6INin2YTYrdin2YTZiiDZgtio2YQg2KfZhNiq2LnYr9mK2YQpXG4gICAgICAgICAgICAgICAgLy8gU2F1dmVnYXJkZXIgbGUgbW9udGFudCBwcsOpY8OpZGVudCAobGUgbW9udGFudCBhY3R1ZWwgYXZhbnQgbW9kaWZpY2F0aW9uKVxuICAgICAgICAgICAgICAgIHRoaXMubW9udGFudHVwZGF0ZVNhdmUgPSB0aGlzLk1vbnRhbnRTYWlzaTtcblxuICAgICAgICAgICAgICAgIC8vINil2LDYpyDZg9in2YYg2KfZhNmF2KjZhNi6INmF2K3ZhdmR2YQgKD4gMCnYjCDZhtit2LPYqCDZhdio2KfYtNix2KnYjCDZiNil2YTYpyDZhtmG2KrYuNixIDIg2KvYp9mG2YrYqSDYpdi22KfZgdmK2KlcbiAgICAgICAgICAgICAgICAvLyBTaSBsZSBtb250YW50IGVzdCBjaGFyZ8OpICg+IDApLCBvbiBjYWxjdWxlIGRpcmVjdGVtZW50LCBzaW5vbiBvbiBhdHRlbmQgMiBzZWNvbmRlcyBzdXBwbMOpbWVudGFpcmVzXG4gICAgICAgICAgICAgICAgY29uc3QgZGVsYXkgPSB0aGlzLm1vbnRhbnR1cGRhdGVTYXZlID4gMCA/IDAgOiAyMDAwO1xuXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAvLyDYrdiz2KfYqCDYp9mE2YXYqNmE2Log2KfZhNmF2KrYqNmC2Yog2KfZhNmF2LPZhdmI2K0g2KjZhyAvIENhbGN1bGVyIGxlIG1vbnRhbnQgcmVzdGFudCBhdXRvcmlzw6lcbiAgICAgICAgICAgICAgICAgIHRoaXMuY2FsY3VsX21vbnRhbnRfZW5jb3Vyc19hdXRvcmlzZSgpO1xuXG4gICAgICAgICAgICAgICAgICAvLyDYpdi52KfYr9ipINiq2YHYudmK2YQg2LLYsSDYp9mE2K3Zgdi4IC8gUsOpYWN0aXZlciBsZSBib3V0b24gZGUgc2F1dmVnYXJkZVxuICAgICAgICAgICAgICAgICAgdGhpcy4kc3RvcmUuY29tbWl0KFwiZGlhbG9nL3NldF9kaWFsb2dfYnRuX3NlbmRcIiwgeyBmbGFnOiBmYWxzZSB9KTtcbiAgICAgICAgICAgICAgICB9LCBkZWxheSk7XG5cbiAgICAgICAgICAgICAgfSwgMTUwMCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAvLyDZgdmKINit2KfZhNipINin2YTYpdmG2LTYp9ihOiDYrdiz2KfYqCDZhdio2KfYtNixINio2K/ZiNmGINiq2KPYrtmK2LFcbiAgICAgICAgICAgICAgLy8gRW4gbW9kZSBjcsOpYXRpb246IGNhbGN1bCBkaXJlY3Qgc2FucyBkw6lsYWlcbiAgICAgICAgICAgICAgdGhpcy5jYWxjdWxfbW9udGFudF9lbmNvdXJzX2F1dG9yaXNlKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICB9KVxuICAgICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcbiAgICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgLy8g2K3Ys9in2Kgg2KfZhNmF2KjZhNi6INin2YTZhdiz2YXZiNitINin2YTZhdiq2KjZgtmKINmI2YXYsdin2YLYqNipINin2YTYqtis2KfZiNiyXG4gICAgLy8gQ2FsY3VsZXIgbGUgbW9udGFudCByZXN0YW50IGF1dG9yaXPDqSBldCBzdXJ2ZWlsbGVyIGxlIGTDqXBhc3NlbWVudFxuICAgIGNhbGN1bF9tb250YW50X2VuY291cnNfYXV0b3Jpc2UoKSB7XG4gICAgICB0aGlzLm1lc3NhZ2VfbW9udGFudF9lbmNvdXJzX2F1dG9yaXNlID0gXCJcIjtcbiAgICAgIGlmICh0aGlzLm1vbnRhbnRlbmNvdXJzYXV0b3Jpc2UgPiAwKSB7XG4gICAgICAgIC8vINit2LPYp9ioINil2KzZhdin2YTZiiDYp9mE2YXYqNmE2Log2KfZhNit2KfZhNmKINmF2Lkg2LfYsditINin2YTZhdio2YTYuiDYp9mE2LPYp9io2YIg2YHZiiDYrdin2YTYqSDYp9mE2KrYudiv2YrZhFxuICAgICAgICAvLyBDYWxjdWxlciBsZSB0b3RhbCBhY3R1ZWwgZW4gc291c3RyYXlhbnQgbGUgbW9udGFudCBwcsOpY8OpZGVudCBlbiBtb2RlIG1vZGlmaWNhdGlvblxuICAgICAgICAvLyDZhdir2KfZhDog2KXYsNinINmD2KfZhiDZhNiv2YrZhtinINmB2YjYp9iq2YrYsSDYqNmAIDEwMDAw2Iwg2YjYs9mG2K/Yp9iqINio2YAgNTAwMNiMINmI2KfZhNmF2KjZhNi6INin2YTYs9in2KjZgiAzMDAwXG4gICAgICAgIC8vIEV4ZW1wbGU6IHNpIG9uIGEgMTAwMDAgZGUgZmFjdHVyZXMsIDUwMDAgZGUgYm9ucywgZXQgMzAwMCBkZSBtb250YW50IHByw6ljw6lkZW50XG4gICAgICAgIC8vINin2YTYpdis2YXYp9mE2YogPSAoMTAwMDAgKyA1MDAwKSAtIDMwMDAgPSAxMjAwMFxuICAgICAgICAvLyBUb3RhbCA9ICgxMDAwMCArIDUwMDApIC0gMzAwMCA9IDEyMDAwXG4gICAgICAgIGxldCBtb250YW50ZW5jb3VyZSA9XG4gICAgICAgICAgKHRoaXMubW9udGFudGVuY291cnNib25zICogMSArIHRoaXMubW9udGFudGVuY291cnNmYWN0dXJlcyAqIDEpIC0gdGhpcy5tb250YW50dXBkYXRlU2F2ZTtcblxuICAgICAgICAvLyDYrdiz2KfYqCDYp9mE2YXYqNmE2Log2KfZhNmF2KrYqNmC2Yog2KfZhNmF2LPZhdmI2K0gPSDYp9mE2YXYqNmE2Log2KfZhNmF2LPZhdmI2K0gLSDYp9mE2KXYrNmF2KfZhNmKINin2YTYrdin2YTZilxuICAgICAgICAvLyBDYWxjdWxlciBsZSBtb250YW50IHJlc3RhbnQgPSBtb250YW50IGF1dG9yaXPDqSAtIHRvdGFsIGFjdHVlbFxuICAgICAgICB0aGlzLm1vbnRhbnRyZXN0YW50YXV0b3Jpc2UgPSB0aGlzLm1vbnRhbnRlbmNvdXJzYXV0b3Jpc2UgLSBtb250YW50ZW5jb3VyZTtcblxuICAgICAgICAvLyDYpdiw2Kcg2YPYp9mGINin2YTYqtit2YLZgiDYpdmE2LLYp9mF2YogKGZsYWcgPSB0cnVlKVxuICAgICAgICAvLyBTaSBsYSB2w6lyaWZpY2F0aW9uIGVzdCBvYmxpZ2F0b2lyZSAoZmxhZyA9IHRydWUpXG4gICAgICAgIGlmICh0aGlzLmZsYWdfbW9udGFudF9lbmNvdXJzX2F1dG9yaXNlKSB7XG4gICAgICAgICAgLy8g2KXYsdiz2KfZhCDYrdin2YTYqSDYp9mE2KrYsdiu2YrYtSDZhNmE2YXZg9mI2YYg2KfZhNij2KhcbiAgICAgICAgICAvLyBFbnZveWVyIGwnw6l0YXQgZCdhdXRvcmlzYXRpb24gYXUgY29tcG9zYW50IHBhcmVudFxuICAgICAgICAgIHRoaXMuYXV0b3Jpc2VTYXZlRGF0YSgpO1xuXG4gICAgICAgICAgLy8g2KXYsNinINiq2YUg2KrYrNin2YjYsiDYp9mE2YXYqNmE2Log2KfZhNmF2LPZhdmI2K1cbiAgICAgICAgICAvLyBTaSBsZSBtb250YW50IGF1dG9yaXPDqSBlc3QgZMOpcGFzc8OpXG4gICAgICAgICAgaWYgKHRoaXMubW9udGFudGVuY291cnNhdXRvcmlzZSA8IG1vbnRhbnRlbmNvdXJlKSB7XG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2VfbW9udGFudF9lbmNvdXJzX2F1dG9yaXNlID1cbiAgICAgICAgICAgICAgXCJNb250YW50IGVuY291cnMgYXV0b3Jpc8OpIGTDqXBhc3PDqVwiO1xuXG4gICAgICAgICAgICAvLyDYpdmE2LrYp9ihINin2YTYp9iu2KrZitin2LEg2KrZhNmC2KfYptmK2KfZiyAvIEFubnVsZXIgbGEgc8OpbGVjdGlvbiBhdXRvbWF0aXF1ZW1lbnRcbiAgICAgICAgICAgIHRoaXMuJHN0b3JlLmNvbW1pdChcInN0cnVjdHVyZS9zZXRfaW5wdXRfYmluZHNcIiwge1xuICAgICAgICAgICAgICBuYW1lOiB0aGlzLmlucHV0X3Jvb3QsXG4gICAgICAgICAgICAgIHZhbHVlOiBudWxsLFxuICAgICAgICAgICAgICBjb250cm9sbGVyX3Jvb3Q6IHRoaXMuY29udHJvbGxlcl9yb290LFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIC8vINil2LfZhNin2YIg2K3Yr9irINin2YTYqti62YrZitixIC8gRMOpY2xlbmNoZXIgbCfDqXbDqW5lbWVudCBkZSBjaGFuZ2VtZW50XG4gICAgICAgICAgICBsZXQgZXZlbnQgPSB7XG4gICAgICAgICAgICAgIG5hbWU6IHRoaXMuaW5wdXRfcm9vdCxcbiAgICAgICAgICAgICAgdmFsdWU6IG51bGwsXG4gICAgICAgICAgICAgIGNvbnRyb2xsZXJfcm9vdDogdGhpcy5jb250cm9sbGVyX3Jvb3QsXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICB0aGlzLiRzdG9yZS5kaXNwYXRjaChcInN0cnVjdHVyZS9ldmVudF9yb290X2NoYW5nZVwiLCB7IGV2ZW50IH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG5cbiAgICAvLyDYp9mE2KrYrdmC2YIg2YXZhiDYp9mE2LPZhdin2K0g2KjYp9mE2K3Zgdi4INio2YbYp9ih2Ysg2LnZhNmJINin2YTZhdio2YTYuiDYp9mE2YXZj9iv2K7ZhFxuICAgIC8vIFbDqXJpZmllciBzaSBsYSBzYXV2ZWdhcmRlIGVzdCBhdXRvcmlzw6llIHNlbG9uIGxlIG1vbnRhbnQgc2Fpc2lcbiAgICBhdXRvcmlzZVNhdmVEYXRhKCkge1xuICAgICAgLy8g2KXYsNinINmE2YUg2YrZg9mGINmH2YbYp9mDINmF2KjZhNi6INij2Ygg2KfZhNiq2K3ZgtmCINi62YrYsSDZhdmB2LnZkdmE2Iwg2KfZhNiz2YXYp9itINio2KfZhNit2YHYuFxuICAgICAgLy8gU2kgcGFzIGRlIG1vbnRhbnQgb3UgdsOpcmlmaWNhdGlvbiBkw6lzYWN0aXbDqWUsIGF1dG9yaXNlciBsYSBzYXV2ZWdhcmRlXG4gICAgICBpZiAodGhpcy5tb250YW50X3NhaXNpID09IFwiXCIgfHwgdGhpcy5tb250YW50X3NhaXNpID09IHVuZGVmaW5lZCB8fCB0aGlzLm1vbnRhbnRfc2Fpc2kgPT0gbnVsbCB8fCB0aGlzLm1vbnRhbnRlbmNvdXJzYXV0b3Jpc2UgPD0gMCB8fCB0aGlzLmZsYWdfbW9udGFudF9lbmNvdXJzX2F1dG9yaXNlID09IGZhbHNlKSB7XG4gICAgICAgIHRoaXMuJGVtaXQoJ2NoYW5nZScsIHRydWUpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyDYp9mE2KrYrdmC2YI6INin2YTZhdio2YTYuiDYp9mE2YXZj9iv2K7ZhCA8PSDYp9mE2YXYqNmE2Log2KfZhNmF2KrYqNmC2Yog2KfZhNmF2LPZhdmI2K3Yn1xuICAgICAgICAvLyBWw6lyaWZpY2F0aW9uOiBtb250YW50IHNhaXNpIDw9IG1vbnRhbnQgcmVzdGFudCBhdXRvcmlzw6k/XG4gICAgICAgIHRoaXMuJGVtaXQoJ2NoYW5nZScsICh0aGlzLk1vbnRhbnRTYWlzaSA8PSB0aGlzLm1vbnRhbnRyZXN0YW50YXV0b3Jpc2UpKVxuICAgICAgfVxuICAgIH0sXG5cblxuICAgIHNlbGVjdGVkX2luZm8odmFsX3NlbGVjdGVkKSB7XG4gICAgICBsZXQgZGF0YSA9IHRoaXMuZGF0YV9sb2FkO1xuXG4gICAgICBmb3IgKGNvbnN0IGtleSBpbiBkYXRhKSB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSBkYXRhW2tleV07XG4gICAgICAgIGlmIChlbGVtZW50W1wiaWRcIl0gPT0gdmFsX3NlbGVjdGVkKSB7XG4gICAgICAgICAgdGhpcy5pdGVtc19zZWxlY3RlZF9pbmZvID0gZWxlbWVudDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gIH0sXG59O1xuPC9zY3JpcHQ+XG48c3R5bGUgc2NvcGVkPlxuLyogRmluYW5jaWFsIEluZm8gU2VjdGlvbiAtIFNpbXBsZSAmIENsZWFuICovXG4uZmluYW5jaWFsLWluZm8tc2VjdGlvbiB7XG4gIHBhZGRpbmc6IDEycHg7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEoMTAyLCAxMjYsIDIzNCwgMC4wMykgMCUsIHJnYmEoMTE4LCA3NSwgMTYyLCAwLjAzKSAxMDAlKTtcbiAgYm9yZGVyLXJhZGl1czogOHB4O1xuICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDEwMiwgMTI2LCAyMzQsIDAuMSk7XG4gIG1hcmdpbi10b3A6IDEycHg7XG59XG5cbi50aGVtZS0tZGFyayAuZmluYW5jaWFsLWluZm8tc2VjdGlvbiB7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEoMTAyLCAxMjYsIDIzNCwgMC4wOCkgMCUsIHJnYmEoMTE4LCA3NSwgMTYyLCAwLjA4KSAxMDAlKTtcbiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgxMDIsIDEyNiwgMjM0LCAwLjIpO1xufVxuXG4vKiBIZWFkZXIgKi9cbi5maW5hbmNpYWwtaGVhZGVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcGFkZGluZy1ib3R0b206IDEwcHg7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMDYpO1xufVxuXG4udGhlbWUtLWRhcmsgLmZpbmFuY2lhbC1oZWFkZXIge1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpO1xufVxuXG4uZmluYW5jaWFsLXRpdGxlIHtcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgY29sb3I6ICMyYzNlNTA7XG59XG5cbi50aGVtZS0tZGFyayAuZmluYW5jaWFsLXRpdGxlIHtcbiAgY29sb3I6ICNlY2YwZjE7XG59XG5cbi5maW5hbmNpYWwtZGF0ZSB7XG4gIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC42KTtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cblxuLnRoZW1lLS1kYXJrIC5maW5hbmNpYWwtZGF0ZSB7XG4gIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyk7XG59XG5cbi8qIEFsZXJ0ICovXG4uYWxlcnQtYW5pbWF0ZSB7XG4gIGFuaW1hdGlvbjogc2xpZGVJbiAwLjNzIGVhc2U7XG59XG5cbkBrZXlmcmFtZXMgc2xpZGVJbiB7XG4gIGZyb20ge1xuICAgIG9wYWNpdHk6IDA7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC04cHgpO1xuICB9XG5cbiAgdG8ge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xuICB9XG59XG5cbi8qIEFtb3VudHMgR3JpZCAqL1xuLmFtb3VudHMtZ3JpZCB7XG4gIG1hcmdpbjogMCAtNHB4O1xufVxuXG4uYW1vdW50LWJveCB7XG4gIHBhZGRpbmc6IDEwcHg7XG4gIGJvcmRlci1yYWRpdXM6IDZweDtcbiAgYmFja2dyb3VuZDogd2hpdGU7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4wNik7XG4gIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7XG59XG5cbi5hbW91bnQtYm94OmhvdmVyIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpO1xuICBib3gtc2hhZG93OiAwIDRweCAxMnB4IHJnYmEoMCwgMCwgMCwgMC4wOCk7XG59XG5cbi50aGVtZS0tZGFyayAuYW1vdW50LWJveCB7XG4gIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC4yKTtcbiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpO1xufVxuXG4uYmwtYm94IHtcbiAgYm9yZGVyLWxlZnQ6IDNweCBzb2xpZCAjNGNhZjUwO1xufVxuXG4uZmEtYm94IHtcbiAgYm9yZGVyLWxlZnQ6IDNweCBzb2xpZCAjZmY5ODAwO1xufVxuXG4uYW1vdW50LWxhYmVsIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZm9udC1zaXplOiAwLjdyZW07XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNik7XG4gIG1hcmdpbi1ib3R0b206IDZweDtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgbGV0dGVyLXNwYWNpbmc6IDAuM3B4O1xufVxuXG4udGhlbWUtLWRhcmsgLmFtb3VudC1sYWJlbCB7XG4gIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyk7XG59XG5cbi5hbW91bnQtdmFsdWUge1xuICBmb250LXNpemU6IDEuMTI1cmVtO1xuICBmb250LXdlaWdodDogNzAwO1xuICBjb2xvcjogIzJjM2U1MDtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGJhc2VsaW5lO1xuICBnYXA6IDRweDtcbn1cblxuLnRoZW1lLS1kYXJrIC5hbW91bnQtdmFsdWUge1xuICBjb2xvcjogI2VjZjBmMTtcbn1cblxuLmN1cnJlbmN5IHtcbiAgZm9udC1zaXplOiAwLjc1cmVtO1xuICBmb250LXdlaWdodDogNTAwO1xuICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjYpO1xufVxuXG4udGhlbWUtLWRhcmsgLmN1cnJlbmN5IHtcbiAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC42KTtcbn1cblxuLyogQXV0aG9yaXplZCBJbmZvICovXG4uYXV0aG9yaXplZC1pbmZvIHtcbiAgcGFkZGluZy10b3A6IDEycHg7XG4gIGJvcmRlci10b3A6IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMDYpO1xufVxuXG4udGhlbWUtLWRhcmsgLmF1dGhvcml6ZWQtaW5mbyB7XG4gIGJvcmRlci10b3A6IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7XG59XG5cbi8qIFRvdGFsIFJvdyAqL1xuLnRvdGFsLXJvdyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcGFkZGluZzogOHB4IDEwcHg7XG4gIGJhY2tncm91bmQ6IHJnYmEoMTAyLCAxMjYsIDIzNCwgMC4wNSk7XG4gIGJvcmRlci1yYWRpdXM6IDZweDtcbn1cblxuLnRoZW1lLS1kYXJrIC50b3RhbC1yb3cge1xuICBiYWNrZ3JvdW5kOiByZ2JhKDEwMiwgMTI2LCAyMzQsIDAuMSk7XG59XG5cbi50b3RhbC1sYWJlbCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGZvbnQtc2l6ZTogMC44cmVtO1xuICBmb250LXdlaWdodDogNjAwO1xuICBjb2xvcjogIzY2N2VlYTtcbn1cblxuLnRoZW1lLS1kYXJrIC50b3RhbC1sYWJlbCB7XG4gIGNvbG9yOiAjYTViNGZjO1xufVxuXG4udG90YWwtdmFsdWUge1xuICBmb250LXNpemU6IDAuOTVyZW07XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIGNvbG9yOiAjMmMzZTUwO1xufVxuXG4udGhlbWUtLWRhcmsgLnRvdGFsLXZhbHVlIHtcbiAgY29sb3I6ICNlY2YwZjE7XG59XG5cbi8qIFByb2dyZXNzIENvbnRhaW5lciAqL1xuLnByb2dyZXNzLWNvbnRhaW5lciB7XG4gIHBhZGRpbmc6IDA7XG59XG5cbi5wcm9ncmVzcy1sYWJlbHMge1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIG1hcmdpbi1ib3R0b206IDZweDtcbn1cblxuLnByb2dyZXNzLWxhYmVsIHtcbiAgZm9udC1zaXplOiAwLjdyZW07XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNik7XG59XG5cbi50aGVtZS0tZGFyayAucHJvZ3Jlc3MtbGFiZWwge1xuICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcpO1xufVxuXG4ucHJvZ3Jlc3MtbWF4IHtcbiAgZm9udC1zaXplOiAwLjdyZW07XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIGNvbG9yOiAjNjY3ZWVhO1xufVxuXG4udGhlbWUtLWRhcmsgLnByb2dyZXNzLW1heCB7XG4gIGNvbG9yOiAjYTViNGZjO1xufVxuXG4vKiBSZW1haW5pbmcgUm93ICovXG4ucmVtYWluaW5nLXJvdyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHBhZGRpbmc6IDZweCAxMHB4O1xuICBib3JkZXItcmFkaXVzOiA2cHg7XG4gIGZvbnQtc2l6ZTogMC44cmVtO1xufVxuXG4ucmVtYWluaW5nLXRleHQge1xuICBmbGV4OiAxO1xufVxuXG4ucmVtYWluaW5nLXBvc2l0aXZlIHtcbiAgYmFja2dyb3VuZDogcmdiYSg3NiwgMTc1LCA4MCwgMC4xKTtcbiAgY29sb3I6ICM0Y2FmNTA7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoNzYsIDE3NSwgODAsIDAuMik7XG59XG5cbi50aGVtZS0tZGFyayAucmVtYWluaW5nLXBvc2l0aXZlIHtcbiAgYmFja2dyb3VuZDogcmdiYSg3NiwgMTc1LCA4MCwgMC4xNSk7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoNzYsIDE3NSwgODAsIDAuMyk7XG59XG5cbi5yZW1haW5pbmctd2FybmluZyB7XG4gIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAxNTIsIDAsIDAuMSk7XG4gIGNvbG9yOiAjZmY5ODAwO1xuICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI1NSwgMTUyLCAwLCAwLjIpO1xufVxuXG4udGhlbWUtLWRhcmsgLnJlbWFpbmluZy13YXJuaW5nIHtcbiAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDE1MiwgMCwgMC4xNSk7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LCAxNTIsIDAsIDAuMyk7XG59XG5cbi5yZW1haW5pbmctbmVnYXRpdmUge1xuICBiYWNrZ3JvdW5kOiByZ2JhKDI0NCwgNjcsIDU0LCAwLjEpO1xuICBjb2xvcjogI2Y0NDMzNjtcbiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNDQsIDY3LCA1NCwgMC4yKTtcbiAgYW5pbWF0aW9uOiBwdWxzZSAycyBpbmZpbml0ZTtcbn1cblxuLnRoZW1lLS1kYXJrIC5yZW1haW5pbmctbmVnYXRpdmUge1xuICBiYWNrZ3JvdW5kOiByZ2JhKDI0NCwgNjcsIDU0LCAwLjE1KTtcbiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNDQsIDY3LCA1NCwgMC4zKTtcbn1cblxuQGtleWZyYW1lcyBwdWxzZSB7XG5cbiAgMCUsXG4gIDEwMCUge1xuICAgIGJveC1zaGFkb3c6IDAgMCAwIDAgcmdiYSgyNDQsIDY3LCA1NCwgMC4zKTtcbiAgfVxuXG4gIDUwJSB7XG4gICAgYm94LXNoYWRvdzogMCAwIDAgNHB4IHJnYmEoMjQ0LCA2NywgNTQsIDApO1xuICB9XG59XG5cbi8qIEF1dGhvcml6YXRpb24gU3RhdHVzIFNlY3Rpb24gKi9cbi5hdXRob3JpemF0aW9uLXN0YXR1cyB7XG4gIHBhZGRpbmc6IDEycHg7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEoMzMsIDE1MCwgMjQzLCAwLjA1KSAwJSwgcmdiYSgyMSwgMTAxLCAxOTIsIDAuMDUpIDEwMCUpO1xuICBib3JkZXItcmFkaXVzOiA4cHg7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMzMsIDE1MCwgMjQzLCAwLjE1KTtcbn1cblxuLnRoZW1lLS1kYXJrIC5hdXRob3JpemF0aW9uLXN0YXR1cyB7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEoMzMsIDE1MCwgMjQzLCAwLjEpIDAlLCByZ2JhKDIxLCAxMDEsIDE5MiwgMC4xKSAxMDAlKTtcbiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgzMywgMTUwLCAyNDMsIDAuMjUpO1xufVxuXG4uc3RhdHVzLWhlYWRlciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGZvbnQtc2l6ZTogMC44cmVtO1xuICBmb250LXdlaWdodDogNjAwO1xuICBjb2xvcjogIzE5NzZkMjtcbiAgcGFkZGluZy1ib3R0b206IDhweDtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHJnYmEoMzMsIDE1MCwgMjQzLCAwLjE1KTtcbn1cblxuLnRoZW1lLS1kYXJrIC5zdGF0dXMtaGVhZGVyIHtcbiAgY29sb3I6ICM2NGI1ZjY7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCByZ2JhKDMzLCAxNTAsIDI0MywgMC4yNSk7XG59XG5cbi5zdGF0dXMtdGl0bGUge1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICBsZXR0ZXItc3BhY2luZzogMC4zcHg7XG59XG5cbi5zdGF0dXMtY29udGVudCB7XG4gIC8qIEVtcHR5IGZvciBub3cgKi9cbn1cblxuLnN0YXR1cy1jb21wYXJpc29uIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIHBhZGRpbmc6IDhweDtcbiAgYmFja2dyb3VuZDogd2hpdGU7XG4gIGJvcmRlci1yYWRpdXM6IDZweDtcbn1cblxuLnRoZW1lLS1kYXJrIC5zdGF0dXMtY29tcGFyaXNvbiB7XG4gIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC4yKTtcbn1cblxuLmNvbXBhcmlzb24taXRlbSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGdhcDogNHB4O1xufVxuXG4uY29tcGFyaXNvbi1sYWJlbCB7XG4gIGZvbnQtc2l6ZTogMC42NXJlbTtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC41KTtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgbGV0dGVyLXNwYWNpbmc6IDAuM3B4O1xufVxuXG4udGhlbWUtLWRhcmsgLmNvbXBhcmlzb24tbGFiZWwge1xuICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjYpO1xufVxuXG4uY29tcGFyaXNvbi12YWx1ZSB7XG4gIGZvbnQtc2l6ZTogMC45cmVtO1xuICBmb250LXdlaWdodDogNzAwO1xufVxuXG4uY29tcGFyaXNvbi12YWx1ZS5lbnRlcmVkIHtcbiAgY29sb3I6ICMxOTc2ZDI7XG59XG5cbi50aGVtZS0tZGFyayAuY29tcGFyaXNvbi12YWx1ZS5lbnRlcmVkIHtcbiAgY29sb3I6ICM2NGI1ZjY7XG59XG5cbi5jb21wYXJpc29uLXZhbHVlLnJlbWFpbmluZyB7XG4gIGNvbG9yOiAjNjY3ZWVhO1xufVxuXG4udGhlbWUtLWRhcmsgLmNvbXBhcmlzb24tdmFsdWUucmVtYWluaW5nIHtcbiAgY29sb3I6ICNhNWI0ZmM7XG59XG5cbi5zdGF0dXMtYWxlcnQge1xuICBib3JkZXItcmFkaXVzOiA2cHggIWltcG9ydGFudDtcbn1cblxuLnN0YXR1cy1tZXNzYWdlIHtcbiAgZm9udC1zaXplOiAwLjc1cmVtO1xuICBmb250LXdlaWdodDogNTAwO1xufVxuXG4vKiBSZXNwb25zaXZlICovXG5AbWVkaWEgKG1heC13aWR0aDogNjAwcHgpIHtcbiAgLmZpbmFuY2lhbC1oZWFkZXIge1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gICAgZ2FwOiA2cHg7XG4gIH1cblxuICAuYW1vdW50LXZhbHVlIHtcbiAgICBmb250LXNpemU6IDFyZW07XG4gIH1cblxuICAuc3RhdHVzLWNvbXBhcmlzb24ge1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiA4cHg7XG4gIH1cblxuICAuY29tcGFyaXNvbi1pdGVtIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgfVxufVxuPC9zdHlsZT5cbiIsIjx0ZW1wbGF0ZT5cbiAgPGRpdj5cbiAgICA8IS0tIGZvcm0gLS0+XG5cbiAgICA8di1yb3c+XG4gICAgICA8di1jb21ib2JveCB2LWlmPVwiaXRlbXMubGVuZ3RoID4gMFwiIDpsb2FkaW5nPVwibG9hZGluZ1wiIDpsYWJlbD1cImxhYmVsICsgJyAgICAnXCIgQGNoYW5nZT1cInNlbGVjdGVkKCRldmVudClcIlxuICAgICAgICBAY2xpY2s6Y2xlYXI9XCJpdGVtc19zZWxlY3RlZF9pbmZvID0gJydcIiB2LW1vZGVsPVwidmFsdWVcIiA6aXRlbXM9XCJpdGVtc1wiIGl0ZW0tdGV4dD1cInRleHRcIiBpdGVtLXZhbHVlPVwidmFsdWVcIlxuICAgICAgICA6ZmlsdGVyPVwiZmlsdGVyXCIgaGlkZS1zZWxlY3RlZCA6Y2xlYXJhYmxlPVwiIXJlYWRvbmx5XCIgOnJlYWRvbmx5PVwicmVhZG9ubHlcIiA6ZGlzYWJsZWQ9XCIhZWRpdF9yb290XCJcbiAgICAgICAgOmVycm9yPVwiYXV0b3Jpc2VTYXZlRGF0YSA9PT0gZmFsc2VcIlxuICAgICAgICA6ZXJyb3ItbWVzc2FnZXM9XCJhdXRvcmlzZVNhdmVEYXRhID09PSBmYWxzZSA/ICdMYSBsaW1pdGUgYSDDqXTDqSBkw6lwYXNzw6llLiBWZXVpbGxleiBjb250YWN0ZXIgbFxcJ2FkbWluaXN0cmF0ZXVyLicgOiAnJ1wiPlxuICAgICAgICA8dGVtcGxhdGUgdi1zbG90OmFwcGVuZC1vdXRlcj5cbiAgICAgICAgICA8di1idG4gdGV4dCBpY29uIGNvbG9yPVwiaW5kaWdvXCIgOnRvPVwieyBuYW1lOiBpbnB1dF9yb290ICsgJ19hZGQnIH1cIlxuICAgICAgICAgICAgdi1zaG93PVwiIXJlYWRvbmx5ICYmIGlzR3JhbnRlZCgnYWRkJywgaW5wdXRfcm9vdC50b0xvd2VyQ2FzZSgpKVwiPlxuICAgICAgICAgICAgPHYtaWNvbj5tZGktYWNjb3VudC1wbHVzPC92LWljb24+XG4gICAgICAgICAgPC92LWJ0bj5cbiAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgIDwvdi1jb21ib2JveD5cbiAgICAgIDx0aGVtZS1kaXlhYSB2LWVsc2Ugc3R5bGU9XCJtYXJnaW46IDIwcHhcIiAvPlxuICAgIDwvdi1yb3c+XG5cbiAgICA8di1yb3c+XG4gICAgICA8di1jb2wgY29scz1cIjEyXCIgdi1pZj1cImluZm9cIiB2LXNob3c9XCJpdGVtc19zZWxlY3RlZF9pbmZvWydpZCddXCI+XG4gICAgICAgIDwhLS0gTW9kZXJuIENhcmQg2YXYuSDYqti12YXZitmFINmG2LjZitmBIC0tPlxuICAgICAgICA8di1jYXJkIGNsYXNzPVwiaW5mby1ib3gtY2FyZCBlbGV2YXRpb24tMlwiPlxuICAgICAgICAgIDwhLS0gQ29udGVudCBTZWN0aW9uIC0tPlxuICAgICAgICAgIDx2LWNhcmQtdGV4dCBjbGFzcz1cImluZm8tYm94LWNvbnRlbnQgcGEtNFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImluZm8tbGF5b3V0XCI+XG4gICAgICAgICAgICAgIDwhLS0gTGVmdDogSW5mbyBDb250ZW50IC0tPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5mby1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgPCEtLSBJQ0UvQ0lOIEJhZGdlcyAtLT5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFkZ2VzLXJvd1wiIHYtaWY9XCJpdGVtc19zZWxlY3RlZF9pbmZvWydpY2UnXSB8fCBpdGVtc19zZWxlY3RlZF9pbmZvWydjaW4nXVwiPlxuICAgICAgICAgICAgICAgICAgPHYtY2hpcCB2LWlmPVwiaXRlbXNfc2VsZWN0ZWRfaW5mb1snaWNlJ10gJiYgaXRlbXNfc2VsZWN0ZWRfaW5mb1snaWNlJ10gIT0gJ251bGwnXCIgY2xhc3M9XCJpY2UtY2hpcFwiXG4gICAgICAgICAgICAgICAgICAgIHNtYWxsIGxhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8di1pY29uIGxlZnQgc2l6ZT1cIjEyXCI+bWRpLWJyaWVmY2FzZS1vdXRsaW5lPC92LWljb24+XG4gICAgICAgICAgICAgICAgICAgIElDRToge3sgaXRlbXNfc2VsZWN0ZWRfaW5mb1tcImljZVwiXSB9fVxuICAgICAgICAgICAgICAgICAgPC92LWNoaXA+XG4gICAgICAgICAgICAgICAgICA8di1jaGlwIHYtaWY9XCJpdGVtc19zZWxlY3RlZF9pbmZvWydjaW4nXSAmJiBpdGVtc19zZWxlY3RlZF9pbmZvWydjaW4nXSAhPSAnbnVsbCdcIiBjbGFzcz1cImNpbi1jaGlwXCJcbiAgICAgICAgICAgICAgICAgICAgc21hbGwgbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDx2LWljb24gbGVmdCBzaXplPVwiMTJcIj5tZGktY2FyZC1hY2NvdW50LWRldGFpbHM8L3YtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgQ0lOOiB7eyBpdGVtc19zZWxlY3RlZF9pbmZvW1wiY2luXCJdIH19XG4gICAgICAgICAgICAgICAgICA8L3YtY2hpcD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDwhLS0gVGl0bGUgLS0+XG4gICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwiaW5mby1uYW1lIG10LTNcIj5cbiAgICAgICAgICAgICAgICAgIDx2LWljb24gc2l6ZT1cIjE4XCIgY2xhc3M9XCJtci0yXCIgY29sb3I9XCJwcmltYXJ5XCI+bWRpLWFjY291bnQtY2lyY2xlPC92LWljb24+XG4gICAgICAgICAgICAgICAgICB7eyBpdGVtc19zZWxlY3RlZF9pbmZvW2luZm9fdGl0bGVdIHx8ICR0KGluZm9fdGl0bGUpIH19XG4gICAgICAgICAgICAgICAgPC9oMz5cblxuICAgICAgICAgICAgICAgIDwhLS0gRGV0YWlscyAtLT5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5mby1kZXRhaWxzLWxpc3QgbXQtM1wiPlxuICAgICAgICAgICAgICAgICAgPGRpdiB2LXNob3c9XCJpdGVtc19zZWxlY3RlZF9pbmZvW2luZm9fc3VidGl0bGVdXCIgY2xhc3M9XCJkZXRhaWwtcm93XCI+XG4gICAgICAgICAgICAgICAgICAgIDx2LWljb24gc2l6ZT1cIjE0XCIgY2xhc3M9XCJtci0yXCIgY29sb3I9XCJncmV5IGRhcmtlbi0xXCI+bWRpLXBob25lPC92LWljb24+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGV0YWlsLXRleHRcIj57eyBpdGVtc19zZWxlY3RlZF9pbmZvW2luZm9fc3VidGl0bGVdIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IHYtc2hvdz1cIml0ZW1zX3NlbGVjdGVkX2luZm9baW5mb190ZXh0XVwiIGNsYXNzPVwiZGV0YWlsLXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICA8di1pY29uIHNpemU9XCIxNFwiIGNsYXNzPVwibXItMlwiIGNvbG9yPVwiZ3JleSBkYXJrZW4tMVwiPm1kaS1lbWFpbDwvdi1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRldGFpbC10ZXh0XCI+e3sgaXRlbXNfc2VsZWN0ZWRfaW5mb1tpbmZvX3RleHRdIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgPCEtLSBSaWdodDogTG9nbyAtLT5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImluZm8tbG9nb1wiPlxuICAgICAgICAgICAgICAgIDx2LWF2YXRhciBzaXplPVwiODBcIiBjbGFzcz1cImxvZ28tYXZhdGFyXCI+XG4gICAgICAgICAgICAgICAgICA8cmVhZGZpbGUtaW1nIDpyZWZncm91cD1cIml0ZW1zX3NlbGVjdGVkX2luZm9bJ2xvZ28nXVwiPjwvcmVhZGZpbGUtaW1nPlxuICAgICAgICAgICAgICAgIDwvdi1hdmF0YXI+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDwhLS0gSW5mb1Jvb3QgQ29tcG9uZW50IC0tPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTJcIj5cbiAgICAgICAgICAgICAgPGJveC1pbmZvcm9vdCA6aW5wdXRfcm9vdD1cImlucHV0X3Jvb3RcIiA6Y29udHJvbGxlcl9yb290PVwiY29udHJvbGxlcl9yb290XCJcbiAgICAgICAgICAgICAgICA6aW5wdXRfcm9vdF9mcm9tPVwiaW5wdXRfcm9vdF9mcm9tXCIgOmZsYWdfbW9udGFudF9lbmNvdXJzX2F1dG9yaXNlPVwiZmxhZ19tb250YW50X2VuY291cnNfYXV0b3Jpc2VcIlxuICAgICAgICAgICAgICAgIDppbmZvX21vbnRhbnRfZW5jb3Vyc19hdXRvcmlzZT1cImluZm9fbW9udGFudF9lbmNvdXJzX2F1dG9yaXNlXCIgOmluZm89XCJ0cnVlXCIgOmluZm9fdGl0bGU9XCJpbmZvX3RpdGxlXCJcbiAgICAgICAgICAgICAgICA6bW9udGFudF9zYWlzaT1cIm1vbnRhbnRfc2Fpc2lcIiA6aW5mb19zdWJ0aXRsZT1cImluZm9fc3VidGl0bGVcIiA6aW5mb190ZXh0PVwiaW5mb190ZXh0XCJcbiAgICAgICAgICAgICAgICBAY2hhbmdlPVwiKHZhbCkgPT4gYXV0b3Jpc2VTYXZlRGF0YSA9IHZhbFwiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L3YtY2FyZC10ZXh0PlxuXG4gICAgICAgICAgPCEtLSBBY3Rpb25zIEZvb3RlciAtLT5cbiAgICAgICAgICA8di1jYXJkLWFjdGlvbnMgY2xhc3M9XCJpbmZvLWFjdGlvbnMgcHgtNCBweS0yXCI+XG4gICAgICAgICAgICA8di1zcGFjZXI+PC92LXNwYWNlcj5cblxuXG4gICAgICAgICAgICA8dGFibGUtZm9yZWlnbmtleSA6Y29udHJvbGxlcj1cImlucHV0X3Jvb3QudG9Mb3dlckNhc2UoKVwiIDppZD1cIml0ZW1zX3NlbGVjdGVkX2luZm9bJ2lkJ11cIiA6dGV4dD1cIicgUGx1cyBkXFwnaW5mb3JtYXRpb25zIHN1ciAgJ1xuXG4gICAgICAgICAgICAgIFwiIDppdGVtc2hvdz1cIltcbiAgICAgICAgICAgICAgICAnY2xpZW50JyxcbiAgICAgICAgICAgICAgICAnZm91cm5pc3NldXInLFxuICAgICAgICAgICAgICAgICdtb250YW50ZW5jb3Vyc2F1dG9yaXNlJyxcbiAgICAgICAgICAgICAgICAnbW9udGFudGVuY291cnNib25zJyxcbiAgICAgICAgICAgICAgICAnbW9udGFudGVuY291cnNmYWN0dXJlcycsXG4gICAgICAgICAgICAgICAgJ3JlZicsXG4gICAgICAgICAgICAgICAgJ3RlbGVwaG9uZScsXG4gICAgICAgICAgICAgICAgJ2dzbScsXG4gICAgICAgICAgICAgICAgJ2ljZScsXG4gICAgICAgICAgICAgICAgJ2NpbicsXG4gICAgICAgICAgICAgIF1cIj48L3RhYmxlLWZvcmVpZ25rZXk+XG5cblxuXG5cblxuICAgICAgICAgICAgPHYtYnRuIHRleHQgaWNvbiBzbWFsbCBjb2xvcj1cInByaW1hcnlcIiB2LWlmPVwiaXRlbXNfc2VsZWN0ZWRfaW5mb1snaWQnXVwiIDp0bz1cIntcbiAgICAgICAgICAgICAgbmFtZTogaW5wdXRfcm9vdCArICdfdXBkYXRlJyxcbiAgICAgICAgICAgICAgcGFyYW1zOiB7IGlkOiBpdGVtc19zZWxlY3RlZF9pbmZvWydpZCddIH0sXG4gICAgICAgICAgICB9XCIgdi1zaG93PVwiIXJlYWRvbmx5ICYmIGlzR3JhbnRlZCgnZWRpdCcsIGlucHV0X3Jvb3QudG9Mb3dlckNhc2UoKSlcIj5cbiAgICAgICAgICAgICAgPHYtaWNvbiBzaXplPVwiMjBcIj5tZGktcGVuY2lsPC92LWljb24+XG4gICAgICAgICAgICA8L3YtYnRuPlxuICAgICAgICAgIDwvdi1jYXJkLWFjdGlvbnM+XG4gICAgICAgIDwvdi1jYXJkPlxuICAgICAgPC92LWNvbD5cbiAgICA8L3Ytcm93PlxuXG4gICAgPCEtLSAvLmZvcm0gLS0+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cbjxzY3JpcHQ+XG5pbXBvcnQgaTE4biBmcm9tIFwiQC9wbHVnaW5zL2kxOG5cIjtcbmltcG9ydCBheGlvcyBmcm9tIFwiYXhpb3NcIjtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgcHJvcHM6IHtcbiAgICBjb250cm9sbGVyX3Jvb3Q6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgIH0sXG5cbiAgICBpbnB1dF9yb290OiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICB9LFxuICAgIG1vbnRhbnRfc2Fpc2k6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6IFwiXCIsXG4gICAgfSxcbiAgICBpbnB1dF9yb290X2Zyb206IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6IFwiXCIsXG4gICAgfSxcblxuICAgIGluZm86IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICB9LFxuXG4gICAgZWRpdF9yb290OiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogdHJ1ZSxcbiAgICB9LFxuICAgIGluZm9fdGl0bGU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6IFwiXCIsXG4gICAgfSxcbiAgICBpbmZvX3N1YnRpdGxlOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiBcIlwiLFxuICAgIH0sXG4gICAgaW5mb190ZXh0OiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiBcIlwiLFxuICAgIH0sXG4gICAgaW5mb19pbWFnZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogXCJcIixcbiAgICB9LFxuICAgIGZsYWdfbW9udGFudF9lbmNvdXJzX2F1dG9yaXNlOiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgfSxcbiAgICBpbmZvX21vbnRhbnRfZW5jb3Vyc19hdXRvcmlzZToge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgIH0sXG4gIH0sXG4gIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxvYWRpbmc6IGZhbHNlLFxuICAgICAgdmFsdWU6IHVuZGVmaW5lZCxcbiAgICAgIGF1dG9yaXNlU2F2ZURhdGE6IHRydWUsXG5cblxuICAgICAgaXRlbXNfc2VsZWN0ZWRfaW5mbzogXCJcIixcbiAgICAgIGZpbGVfbG9nbzogXCJcIixcbiAgICB9O1xuICB9LFxuXG4gIGNvbXB1dGVkOiB7XG4gICAgbGFiZWwoKSB7XG4gICAgICByZXR1cm4gaTE4bi50KHRoaXMuaW5wdXRfcm9vdCk7XG4gICAgfSxcblxuICAgIGl0ZW1zKCkge1xuICAgICAgbGV0IGRhdGEgPSB0aGlzLmRhdGFfbG9hZDtcblxuICAgICAgbGV0IGl0ZW1zID0gW107XG5cbiAgICAgIGZvciAoY29uc3Qga2V5IGluIGRhdGEpIHtcbiAgICAgICAgbGV0IG9wdGlvbiA9IHt9O1xuXG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSBkYXRhW2tleV07XG5cbiAgICAgICAgb3B0aW9uLnRleHQgPSBlbGVtZW50W1widG9TdHJpbmdcIl07XG4gICAgICAgIG9wdGlvbi52YWx1ZSA9IGVsZW1lbnRbXCJpZFwiXTtcbiAgICAgICAgaWYgKG9wdGlvbi52YWx1ZSA9PSB0aGlzLnZhbHVlc19iaW5kcykge1xuICAgICAgICAgIHRoaXMudmFsdWUgPSBvcHRpb247XG4gICAgICAgIH1cbiAgICAgICAgaXRlbXMucHVzaChvcHRpb24pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gaXRlbXM7XG4gICAgfSxcblxuICAgIGRhdGFfbG9hZCgpIHtcbiAgICAgIGxldCBmcm9tID0gXCJcIjtcbiAgICAgIGlmICh0aGlzLmlucHV0X3Jvb3RfZnJvbSAhPSBcIlwiKSB7XG4gICAgICAgIGZyb20gPSB0aGlzLmlucHV0X3Jvb3RfZnJvbTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZyb20gPSB0aGlzLmlucHV0X3Jvb3Q7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy4kc3RvcmUuZ2V0dGVyc1tcInN0cnVjdHVyZS9nZXRfZGF0YV9TZWxlY3RfbG9hZFwiXSh7XG4gICAgICAgIGNvbnRyb2xsZXJfcm9vdDogdGhpcy5jb250cm9sbGVyX3Jvb3QsXG4gICAgICAgIG5hbWVNYW55VG9PbmU6IGZyb20sXG4gICAgICB9KTtcbiAgICB9LFxuICAgIHZhbHVlc19iaW5kcygpIHtcbiAgICAgIHJldHVybiB0aGlzLiRzdG9yZS5nZXR0ZXJzW1wic3RydWN0dXJlL2dldF9pbnB1dF9iaW5kc1wiXSh7XG4gICAgICAgIGNvbnRyb2xsZXJfcm9vdDogdGhpcy5jb250cm9sbGVyX3Jvb3QsXG4gICAgICAgIG5hbWU6IHRoaXMuaW5wdXRfcm9vdCxcbiAgICAgIH0pO1xuICAgIH0sXG5cbiAgICByZWFkb25seSgpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9LFxuXG5cbiAgfSxcbiAgd2F0Y2g6IHtcbiAgICB2YWx1ZSh2YWwpIHtcbiAgICAgIGlmICh2YWwgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRfaW5mbyh2YWwudmFsdWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5pdGVtc19zZWxlY3RlZF9pbmZvID0gXCJcIjtcbiAgICAgIH1cbiAgICB9LFxuICAgIGl0ZW1zKHZhbCkge1xuICAgICAgY29uc29sZS5sb2codmFsKTtcblxuICAgICAgaWYgKHZhbC5sZW5ndGggPiAwKSB7XG4gICAgICAgIGxldCBhY3Rpb25UcmFpdGVyID1cbiAgICAgICAgICB0aGlzLiRzdG9yZS5nZXR0ZXJzW1wic3RydWN0dXJlL2dldF9hY3Rpb25UcmFpdGVyXCJdKCk7XG5cbiAgICAgICAgaWYgKGFjdGlvblRyYWl0ZXIgIT0gXCJcIikge1xuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZCh7IHZhbHVlOiBhY3Rpb25UcmFpdGVyIH0pO1xuXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhhY3Rpb25UcmFpdGVyKTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKHZhbCk7XG4gICAgICAgICAgICB0aGlzLiRzdG9yZS5jb21taXQoXCJkaWFsb2cvc2V0X2RpYWxvZ19idG5fc2VuZFwiLCB7IGZsYWc6IGZhbHNlIH0pO1xuICAgICAgICAgICAgdGhpcy4kc3RvcmUuY29tbWl0KFwic3RydWN0dXJlL3NldF9hY3Rpb25UcmFpdGVyXCIsIHtcbiAgICAgICAgICAgICAgYWN0aW9uVHJhaXRlcjogXCJcIixcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0sIDUwMDApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgfSxcblxuICBtZXRob2RzOiB7XG5cbiAgICBpc0dyYW50ZWQoYXR0cmlidXRlLCBjb250cm9sbGVyKSB7XG4gICAgICByZXR1cm4gdGhpcy4kc3RvcmUuZ2V0dGVyc1tcInNlY3VyaXR5L2lzR3JhbnRlZFwiXShhdHRyaWJ1dGUsIGNvbnRyb2xsZXIpO1xuICAgIH0sXG5cblxuXG5cbiAgICBzZWxlY3RlZCh2YWxfc2VsZWN0ZWQpIHtcbiAgICAgIGxldCB2YWx1ZTtcblxuICAgICAgaWYgKHZhbF9zZWxlY3RlZCAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgdmFsdWUgPSB2YWxfc2VsZWN0ZWRbXCJ2YWx1ZVwiXTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5zZWxlY3RlZF9pbmZvKHZhbHVlKTtcblxuXG4gICAgICB0aGlzLiRzdG9yZS5jb21taXQoXCJzdHJ1Y3R1cmUvc2V0X2lucHV0X2JpbmRzXCIsIHtcbiAgICAgICAgbmFtZTogdGhpcy5pbnB1dF9yb290LFxuICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgIGNvbnRyb2xsZXJfcm9vdDogdGhpcy5jb250cm9sbGVyX3Jvb3QsXG4gICAgICB9KTtcblxuICAgICAgbGV0IGV2ZW50ID0ge1xuICAgICAgICBuYW1lOiB0aGlzLmlucHV0X3Jvb3QsXG4gICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgY29udHJvbGxlcl9yb290OiB0aGlzLmNvbnRyb2xsZXJfcm9vdCxcbiAgICAgIH07XG4gICAgICBjb25zb2xlLmxvZyhcImNoYW5nZSByb290IGV2ZW50ID0+IFwiLCBldmVudCk7XG5cbiAgICAgIHRoaXMuJHN0b3JlLmRpc3BhdGNoKFwic3RydWN0dXJlL2V2ZW50X3Jvb3RfY2hhbmdlXCIsIHsgZXZlbnQgfSk7XG4gICAgfSxcblxuICAgIGZpbHRlcihpdGVtLCBxdWVyeVRleHQsIGl0ZW1UZXh0KSB7XG4gICAgICAvKiAgICBpZiAoaXRlbS5oZWFkZXIpIHJldHVybiBmYWxzZTtcblxuICAgICAgY29uc3QgaGFzVmFsdWUgPSAodmFsKSA9PiAodmFsICE9IG51bGwgPyB2YWwgOiBcIlwiKTtcblxuICAgICAgY29uc3QgdGV4dCA9IGhhc1ZhbHVlKGl0ZW1UZXh0KTtcbiAgICAgIGNvbnN0IHF1ZXJ5ID0gaGFzVmFsdWUocXVlcnlUZXh0KTtcblxuICAgICAgbGV0IHJlcyA9XG4gICAgICAgIHRleHQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpLmluZGV4T2YocXVlcnkudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKSA+XG4gICAgICAgIC0xO1xuXG4gICAgICByZXR1cm4gcmVzOyAqL1xuXG4gICAgICBpZiAoaXRlbS5oZWFkZXIpIHJldHVybiBmYWxzZTtcblxuICAgICAgY29uc3QgcXVlcnkgPSAocXVlcnlUZXh0ID8/IFwiXCIpLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgY29uc3QgdGV4dCA9IChpdGVtVGV4dCA/PyBcIlwiKS50cmltKCkudG9Mb3dlckNhc2UoKTtcblxuICAgICAgaWYgKCFxdWVyeSkgcmV0dXJuIHRydWU7IC8vINil2LDYpyDZg9in2YYg2KfZhNio2K3YqyDZgdin2LHYutmL2KfYjCDYpdix2KzYp9i5INis2YXZiti5INin2YTZhtiq2KfYptisXG5cbiAgICAgIC8vINin2YTYqtit2YLZgiDZhdmF2Kcg2KXYsNinINmD2KfZhiBgcXVlcnlUZXh0YCDZhdiq2LPZhNiz2YTYp9mLINio2YbZgdizINin2YTYqtix2KrZitioINiv2KfYrtmEIGBpdGVtVGV4dGBcbiAgICAgIGNvbnN0IHJlZ2V4ID0gbmV3IFJlZ0V4cChxdWVyeS5zcGxpdCgvXFxzKy8pLmpvaW4oXCIuKj9cIiksIFwiaVwiKTtcblxuICAgICAgcmV0dXJuIHJlZ2V4LnRlc3QodGV4dCk7XG4gICAgfSxcbiAgICBzZWxlY3RlZF9pbmZvKHZhbF9zZWxlY3RlZCkge1xuICAgICAgbGV0IGRhdGEgPSB0aGlzLmRhdGFfbG9hZDtcbiAgICAgIHRoaXMuZmlsZV9sb2dvID0gXCJcIjtcbiAgICAgIGZvciAoY29uc3Qga2V5IGluIGRhdGEpIHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IGRhdGFba2V5XTtcbiAgICAgICAgaWYgKGVsZW1lbnRbXCJpZFwiXSA9PSB2YWxfc2VsZWN0ZWQpIHtcbiAgICAgICAgICB0aGlzLml0ZW1zX3NlbGVjdGVkX2luZm8gPSBlbGVtZW50O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgfSxcbn07XG48L3NjcmlwdD5cblxuPHN0eWxlIHNjb3BlZD5cbi8qIEluZm8gQm94IENhcmQgLSBTaW1wbGUgJiBDbGVhbiAqL1xuLmluZm8tYm94LWNhcmQge1xuICBib3JkZXItcmFkaXVzOiA4cHg7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGJhY2tncm91bmQ6IHdoaXRlO1xuICBtYXJnaW4tYm90dG9tOiAxMnB4O1xuICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlO1xuICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMDgpO1xufVxuXG4udGhlbWUtLWRhcmsgLmluZm8tYm94LWNhcmQge1xuICBiYWNrZ3JvdW5kOiAjMzAzMDMwO1xuICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTIpO1xufVxuXG4vKiBDb250ZW50ICovXG4uaW5mby1ib3gtY29udGVudCB7XG4gIHBhZGRpbmc6IDE2cHggIWltcG9ydGFudDtcbn1cblxuLyogTGF5b3V0ICovXG4uaW5mby1sYXlvdXQge1xuICBkaXNwbGF5OiBmbGV4O1xuICBnYXA6IDE2cHg7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xufVxuXG4uaW5mby1jb250ZW50IHtcbiAgZmxleDogMTtcbn1cblxuLmluZm8tbG9nbyB7XG4gIGZsZXgtc2hyaW5rOiAwO1xufVxuXG4vKiBMb2dvIEF2YXRhciAqL1xuLmxvZ28tYXZhdGFyIHtcbiAgYm9yZGVyOiAycHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjA4KTtcbiAgYmFja2dyb3VuZDogI2Y1ZjVmNTtcbn1cblxuLnRoZW1lLS1kYXJrIC5sb2dvLWF2YXRhciB7XG4gIGJvcmRlcjogMnB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xMik7XG4gIGJhY2tncm91bmQ6ICM0MjQyNDI7XG59XG5cbi8qIEJhZGdlcyAqL1xuLmJhZGdlcy1yb3cge1xuICBkaXNwbGF5OiBmbGV4O1xuICBnYXA6IDhweDtcbiAgZmxleC13cmFwOiB3cmFwO1xuICBtYXJnaW4tYm90dG9tOiA4cHg7XG59XG5cbi5pY2UtY2hpcCxcbi5jaW4tY2hpcCB7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEoMTAyLCAxMjYsIDIzNCwgMC4xKSAwJSwgcmdiYSgxMTgsIDc1LCAxNjIsIDAuMSkgMTAwJSkgIWltcG9ydGFudDtcbiAgY29sb3I6ICM2NjdlZWEgIWltcG9ydGFudDtcbiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgxMDIsIDEyNiwgMjM0LCAwLjIpO1xuICBmb250LXdlaWdodDogNTAwO1xuICBmb250LXNpemU6IDAuN3JlbTtcbn1cblxuLnRoZW1lLS1kYXJrIC5pY2UtY2hpcCxcbi50aGVtZS0tZGFyayAuY2luLWNoaXAge1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKDEwMiwgMTI2LCAyMzQsIDAuMikgMCUsIHJnYmEoMTE4LCA3NSwgMTYyLCAwLjIpIDEwMCUpICFpbXBvcnRhbnQ7XG4gIGNvbG9yOiAjYTViNGZjICFpbXBvcnRhbnQ7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMTAyLCAxMjYsIDIzNCwgMC4zKTtcbn1cblxuLyogSW5mbyBOYW1lICovXG4uaW5mby1uYW1lIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZm9udC1zaXplOiAxLjEyNXJlbTtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgY29sb3I6ICMyYzNlNTA7XG4gIG1hcmdpbjogMDtcbn1cblxuLnRoZW1lLS1kYXJrIC5pbmZvLW5hbWUge1xuICBjb2xvcjogI2VjZjBmMTtcbn1cblxuLyogRGV0YWlscyBMaXN0ICovXG4uaW5mby1kZXRhaWxzLWxpc3Qge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBnYXA6IDhweDtcbn1cblxuLmRldGFpbC1yb3cge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBmb250LXNpemU6IDAuODc1cmVtO1xuICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjg3KTtcbn1cblxuLnRoZW1lLS1kYXJrIC5kZXRhaWwtcm93IHtcbiAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44Nyk7XG59XG5cbi5kZXRhaWwtdGV4dCB7XG4gIGZsZXg6IDE7XG59XG5cbi8qIEFjdGlvbnMgRm9vdGVyICovXG4uaW5mby1hY3Rpb25zIHtcbiAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjAyKTtcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4wNik7XG59XG5cbi50aGVtZS0tZGFyayAuaW5mby1hY3Rpb25zIHtcbiAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjAyKTtcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNik7XG59XG5cbi8qIFJlc3BvbnNpdmUgKi9cbkBtZWRpYSAobWF4LXdpZHRoOiA2MDBweCkge1xuICAuaW5mby1sYXlvdXQge1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4tcmV2ZXJzZTtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICB9XG5cbiAgLmluZm8tbG9nbyB7XG4gICAgbWFyZ2luLWJvdHRvbTogMTZweDtcbiAgfVxuXG4gIC5pbmZvLWNvbnRlbnQge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgfVxuXG4gIC5iYWRnZXMtcm93IHtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgfVxuXG4gIC5pbmZvLWRldGFpbHMtbGlzdCB7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgfVxufVxuPC9zdHlsZT5cbiIsIjx0ZW1wbGF0ZT5cbiAgPGRpdiB2LXNob3c9XCJpc0dyYW50ZWQoJ2FkZCcpXCI+XG4gICAgPHYtcm93IHYtc2hvdz1cIm1vbnRhbnRfZGVqYXJlZ2xlID09IDAgJiYgc3RhdHV0ID09ICd2YWxpZGUnXCI+XG4gICAgICA8di1jb2wgY29scz1cIjEyXCIgbGc9XCI3XCI+XG4gICAgICAgIDxjYXJkLWJveCBpZD1cImlucHV0c1wiIGNvbG9yPVwib3JhbmdlXCIgOnRpdGxlPVwiJ0xlIG1vbnRhbnQgcXVlIGxlIGNsaWVudCBkb2l0IHBheWVyICcgKyBtb250YW50X2JsICsgJ0RIJ1wiPlxuICAgICAgICAgIDx2LXJvdyBqdXN0aWZ5PVwiY2VudGVyXCIgYWxpZ249XCJjZW50ZXJcIj5cblxuXG4gICAgICAgICAgICA8IS0tIEJhbmsgQWNjb3VudCBTZWxlY3QgLS0+XG4gICAgICAgICAgICA8di1jb2wgY29scz1cIjEyXCIgbGc9XCI2XCI+XG4gICAgICAgICAgICAgIDxidG4tcG9zLXNlbGVjdCBAY2hhbmdlPVwidmFsX2NvbXB0ZXNiYW5jYWlyZXNib24gPSAkZXZlbnQudmFsdWVcIiA6ZnJvbT1cIidjb21wdGVzYmFuY2FpcmVzYm9uJ1wiXG4gICAgICAgICAgICAgICAgOmJ5Y2FjaGVwb3M9XCInY2FjaGVfZGF0YV9jb21wdGVzYmFuY2FpcmVzYm9uJ1wiIC8+XG4gICAgICAgICAgICA8L3YtY29sPlxuXG4gICAgICAgICAgICA8IS0tIFJldmVudWUgQ2F0ZWdvcnkgU2VsZWN0IC0tPlxuICAgICAgICAgICAgPHYtY29sIGNvbHM9XCIxMlwiIGxnPVwiNlwiPlxuICAgICAgICAgICAgICA8YnRuLXBvcy1zZWxlY3QgQGNoYW5nZT1cInZhbF9jYXRlZ29yaWVzcmVjZXR0ZXMgPSAkZXZlbnQudmFsdWVcIiA6ZnJvbT1cIidjYXRlZ29yaWVzcmVjZXR0ZXMnXCJcbiAgICAgICAgICAgICAgICA6YnljYWNoZXBvcz1cIidjYWNoZV9kYXRhX2NhdGVnb3JpZXNyZWNldHRlcydcIiAvPlxuICAgICAgICAgICAgPC92LWNvbD5cblxuICAgICAgICAgICAgPCEtLSBQYXltZW50IE1vZGUgU2VsZWN0IC0tPlxuICAgICAgICAgICAgPHYtY29sIGNvbHM9XCIxMlwiIGxnPVwiNlwiPlxuICAgICAgICAgICAgICA8YnRuLXBvcy1zZWxlY3QgQGNoYW5nZT1cInZhbF9tb2RlUGFpZW1lbnQgPSAkZXZlbnQudmFsdWVcIiA6ZnJvbT1cIidtb2RlUGFpZW1lbnQnXCJcbiAgICAgICAgICAgICAgICA6Y29udHJvbGxlcl9yb290PVwiJ2JvbnN2ZW50ZXMnXCIgOmJ5Y2FjaGVwb3M9XCInY2FjaGVfZGF0YV9tb2RlUGFpZW1lbnQnXCIgLz5cbiAgICAgICAgICAgIDwvdi1jb2w+XG5cbiAgICAgICAgICAgIDwhLS0gQmFuayBXcml0aW5nIFRleHRhcmVhIC0tPlxuICAgICAgICAgICAgPHYtY29sIGNvbHM9XCIxMlwiIGxnPVwiNlwiPlxuICAgICAgICAgICAgICA8YnRuLXBvcy10ZXh0YXJlYSBAY2hhbmdlPVwidmFsX2Vjcml0dXJlQmFuY2FpcmUgPSAkZXZlbnQudmFsdWVcIiA6ZnJvbT1cIidlY3JpdHVyZUJhbmNhaXJlJ1wiXG4gICAgICAgICAgICAgICAgOmRlZmF1bHRfdmFsdWU9XCJ2YWxfZWNyaXR1cmVCYW5jYWlyZVwiIC8+XG4gICAgICAgICAgICA8L3YtY29sPlxuXG4gICAgICAgICAgICA8IS0tIFN1cHBvcnRpbmcgRG9jdW1lbnQgVGV4dGFyZWEgLS0+XG4gICAgICAgICAgICA8di1jb2wgY29scz1cIjEyXCIgbGc9XCI2XCI+XG4gICAgICAgICAgICAgIDxidG4tcG9zLXRleHRhcmVhIEBjaGFuZ2U9XCJ2YWxfcGllY2VqdXN0aWZpY2F0aXZlID0gJGV2ZW50LnZhbHVlXCIgOmZyb209XCIncGllY2VqdXN0aWZpY2F0aXZlJ1wiXG4gICAgICAgICAgICAgICAgOmRlZmF1bHRfdmFsdWU9XCJ2YWxfcGllY2VqdXN0aWZpY2F0aXZlXCIgLz5cbiAgICAgICAgICAgIDwvdi1jb2w+XG5cbiAgICAgICAgICAgIFxuICAgICAgICAgICAgPCEtLSBOb3RlIFRleHRhcmVhIC0tPlxuICAgICAgICAgICAgPHYtY29sIGNvbHM9XCI2XCI+XG4gICAgICAgICAgICAgIDxidG4tcG9zLXRleHRhcmVhIEBjaGFuZ2U9XCJ2YWxfbm90ZSA9ICRldmVudC52YWx1ZVwiIDpmcm9tPVwiJ25vdGUnXCIgOmRlZmF1bHRfdmFsdWU9XCJ2YWxfbm90ZVwiIC8+XG4gICAgICAgICAgICA8L3YtY29sPlxuXG4gICAgICAgICAgICA8IS0tIFBheW1lbnQgQnV0dG9uIC0tPlxuICAgICAgICAgICAgPHYtY29sIGNvbHM9XCIxMlwiPlxuICAgICAgICAgICAgICA8di1idG4gY29sb3I9XCJzdWNjZXNzXCIgYmxvY2sgQGNsaWNrPVwicnVuVHJhaXRlclwiIGNsYXNzPVwiZm9udC13ZWlnaHQtYm9sZCBwYXltZW50LWJ1dHRvblwiIHgtbGFyZ2UgZGVwcmVzc2VkXG4gICAgICAgICAgICAgICAgOmxvYWRpbmc9XCJpc0xvYWRpbmdcIj5cbiAgICAgICAgICAgICAgICA8di1pY29uIGxlZnQ+bWRpLWNhc2gtY2hlY2s8L3YtaWNvbj5cbiAgICAgICAgICAgICAgICA8c3Bhbj5UZXJtaW5lciBsZSBwcm9jZXNzdXMgZGUgcGFpZW1lbnQ8L3NwYW4+XG4gICAgICAgICAgICAgIDwvdi1idG4+XG4gICAgICAgICAgICA8L3YtY29sPlxuICAgICAgICAgIDwvdi1yb3c+XG4gICAgICAgIDwvY2FyZC1ib3g+XG4gICAgICA8L3YtY29sPlxuXG4gICAgICA8IS0tIENhbGN1bGF0b3IgLS0+XG4gICAgICA8di1jb2wgY29scz1cIjEyXCIgbGc9XCI1XCI+XG4gICAgICAgIDx0aGVtZS1jYWxjdWxhdG9yIGZyb209XCJtb250YW50VHRjXCIgY29udHJvbGxlcl9yb290PVwiYm9uc3ZlbnRlc1wiIC8+XG4gICAgICA8L3YtY29sPlxuICAgIDwvdi1yb3c+XG5cbiAgICA8IS0tIFNuYWNrYmFyIGZvciBub3RpZmljYXRpb25zIC0tPlxuICAgIDx2LXNuYWNrYmFyIHYtbW9kZWw9XCJzbmFja2Jhci5zaG93XCIgOmNvbG9yPVwic25hY2tiYXIuY29sb3JcIiB0aW1lb3V0PVwiMzAwMFwiPlxuICAgICAge3sgc25hY2tiYXIubWVzc2FnZSB9fVxuICAgIDwvdi1zbmFja2Jhcj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0PlxuaW1wb3J0IGF4aW9zIGZyb20gXCJheGlvc1wiO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlzTG9hZGluZzogZmFsc2UsXG4gICAgICB2YWxfZGF0YV9iaW5kczoge30sXG4gICAgICB2YWxfaWRfYmw6IFwiXCIsXG4gICAgICB2YWxfY2xpZW50OiBcIlwiLFxuICAgICAgdmFsX2RhdGU6IFwiXCIsXG4gICAgICB2YWxfbW9udGFudFR0YzogXCJcIixcbiAgICAgIHZhbF9tb2RlUGFpZW1lbnQ6IFwiXCIsXG4gICAgICB2YWxfY2F0ZWdvcmllc3JlY2V0dGVzOiBcIlwiLFxuICAgICAgdmFsX2NvbXB0ZXNiYW5jYWlyZXNib246IFwiXCIsXG4gICAgICB2YWxfbm90ZTogXCJQYXIgQlROIFBPU1wiLFxuICAgICAgdmFsX3BpZWNlanVzdGlmaWNhdGl2ZTogXCIqKipcIixcbiAgICAgIHZhbF9lY3JpdHVyZUJhbmNhaXJlOiBcIioqKlwiLFxuICAgICAgdmFsX2RlamFyZWdsZTogXCJcIixcbiAgICAgIHNuYWNrYmFyOiB7XG4gICAgICAgIHNob3c6IGZhbHNlLFxuICAgICAgICBtZXNzYWdlOiBcIlwiLFxuICAgICAgICBjb2xvcjogXCJzdWNjZXNzXCIsXG4gICAgICB9LFxuICAgIH07XG4gIH0sXG5cbiAgY29tcHV0ZWQ6IHtcbiAgICBtb250YW50X2JsKCkge1xuICAgICAgcmV0dXJuIHRoaXMuJHN0b3JlLmdldHRlcnNbXCJzdHJ1Y3R1cmUvZ2V0X2lucHV0X2JpbmRzXCJdKHtcbiAgICAgICAgY29udHJvbGxlcl9yb290OiBcImJvbnN2ZW50ZXNcIixcbiAgICAgICAgbmFtZTogJ21vbnRhbnRUdGMnLFxuICAgICAgfSk7XG4gICAgfSxcbiAgICBtb250YW50X2RlamFyZWdsZSgpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy4kc3RvcmUuZ2V0dGVyc1tcInN0cnVjdHVyZS9nZXRfaW5wdXRfYmluZHNcIl0oe1xuICAgICAgICBjb250cm9sbGVyX3Jvb3Q6IFwiYm9uc3ZlbnRlc1wiLFxuICAgICAgICBuYW1lOiAnZGVqYXJlZ2xlJyxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIE51bWJlcih2YWx1ZSkgfHwgMDtcbiAgICB9LFxuICAgIHN0YXR1dCgpIHtcbiAgICAgIHJldHVybiB0aGlzLiRzdG9yZS5nZXR0ZXJzW1wic3RydWN0dXJlL2dldF9pbnB1dF9iaW5kc1wiXSh7XG4gICAgICAgIGNvbnRyb2xsZXJfcm9vdDogXCJib25zdmVudGVzXCIsXG4gICAgICAgIG5hbWU6ICdzdGF0dXQnLFxuICAgICAgfSk7XG4gICAgfVxuXG4gIH0sXG5cbiAgbWV0aG9kczoge1xuICAgIGNyZWF0ZUZvcm1EYXRhKGZvcm1EYXRhLCBrZXksIGRhdGEpIHtcbiAgICAgIGlmIChkYXRhID09PSBPYmplY3QoZGF0YSkgfHwgQXJyYXkuaXNBcnJheShkYXRhKSkge1xuICAgICAgICBmb3IgKGxldCBpIGluIGRhdGEpIHtcbiAgICAgICAgICB0aGlzLmNyZWF0ZUZvcm1EYXRhKGZvcm1EYXRhLCBrZXkgKyBcIltcIiArIGkgKyBcIl1cIiwgZGF0YVtpXSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChkYXRhICE9PSBudWxsICYmIGRhdGEgIT09IFwibnVsbFwiKSB7XG4gICAgICAgICAgZm9ybURhdGEuYXBwZW5kKGtleSwgZGF0YSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBmb3JtRGF0YTtcbiAgICB9LFxuXG4gICAgZ2V0RGF0YWZyb21CTCgpIHtcbiAgICAgIHRoaXMudmFsX2NsaWVudCA9IHRoaXMuJHN0b3JlLmdldHRlcnNbXCJzdHJ1Y3R1cmUvZ2V0X2lucHV0X2JpbmRzXCJdKHtcbiAgICAgICAgY29udHJvbGxlcl9yb290OiBcImJvbnN2ZW50ZXNcIixcbiAgICAgICAgbmFtZTogJ2NsaWVudCcsXG4gICAgICB9KTtcbiAgICAgIHRoaXMudmFsX2lkX2JsID0gdGhpcy4kc3RvcmUuZ2V0dGVyc1tcInN0cnVjdHVyZS9nZXRfaW5wdXRfYmluZHNcIl0oe1xuICAgICAgICBjb250cm9sbGVyX3Jvb3Q6IFwiYm9uc3ZlbnRlc1wiLFxuICAgICAgICBuYW1lOiAnaWQnLFxuICAgICAgfSk7XG4gICAgICB0aGlzLnZhbF9tb250YW50VHRjID0gdGhpcy4kc3RvcmUuZ2V0dGVyc1tcInN0cnVjdHVyZS9nZXRfaW5wdXRfYmluZHNcIl0oe1xuICAgICAgICBjb250cm9sbGVyX3Jvb3Q6IFwiYm9uc3ZlbnRlc1wiLFxuICAgICAgICBuYW1lOiAnbW9udGFudFR0YycsXG4gICAgICB9KTtcbiAgICAgIHRoaXMudmFsX2RhdGUgPSB0aGlzLiRzdG9yZS5nZXR0ZXJzW1wic3RydWN0dXJlL2dldF9pbnB1dF9iaW5kc1wiXSh7XG4gICAgICAgIGNvbnRyb2xsZXJfcm9vdDogXCJib25zdmVudGVzXCIsXG4gICAgICAgIG5hbWU6ICdkYXRlJyxcbiAgICAgIH0pO1xuXG5cbiAgICAgIC8vIHRoaXMudmFsX2RhdGUgPSB0aGlzLiRzdG9yZS5nZXR0ZXJzW1wic3RydWN0dXJlL2dldF9pbnB1dF9iaW5kc1wiXSh7XG4gICAgICAvLyAgIGNvbnRyb2xsZXJfcm9vdDogXCJib25zdmVudGVzXCIsXG4gICAgICAvLyAgIG5hbWU6ICdkYXRlJyxcbiAgICAgIC8vIH0pO1xuICAgICAgLy8gdGhpcy52YWxfbW9kZVBhaWVtZW50ID0gdGhpcy4kc3RvcmUuZ2V0dGVyc1tcInN0cnVjdHVyZS9nZXRfaW5wdXRfYmluZHNcIl0oe1xuICAgICAgLy8gICBjb250cm9sbGVyX3Jvb3Q6IFwiYm9uc3ZlbnRlc1wiLFxuICAgICAgLy8gICBuYW1lOiAnbW9kZVBhaWVtZW50JyxcbiAgICAgIC8vIH0pO1xuXG4gICAgfSxcblxuICAgIHNldERhdGFUb0NhY2hlKCkge1xuXG4gICAgICBpZiAodGhpcy52YWxfY2F0ZWdvcmllc3JlY2V0dGVzID4gMCkge1xuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcImNhY2hlX2RhdGFfY2F0ZWdvcmllc3JlY2V0dGVzXCIsIHRoaXMudmFsX2NhdGVnb3JpZXNyZWNldHRlcyk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy52YWxfY29tcHRlc2JhbmNhaXJlc2JvbiA+IDApIHtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXCJjYWNoZV9kYXRhX2NvbXB0ZXNiYW5jYWlyZXNib25cIiwgdGhpcy52YWxfY29tcHRlc2JhbmNhaXJlc2Jvbik7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy52YWxfbW9kZVBhaWVtZW50ID4gMCkge1xuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcImNhY2hlX2RhdGFfbW9kZVBhaWVtZW50XCIsIHRoaXMudmFsX21vZGVQYWllbWVudCk7XG4gICAgICB9XG5cblxuXG4gICAgfSxcblxuICAgIHBhcnNlX2RhdGFfYmluZHMoKSB7XG4gICAgICB0aGlzLmdldERhdGFmcm9tQkwoKTtcbiAgICAgIHRoaXMuc2V0RGF0YVRvQ2FjaGUoKTtcblxuICAgICAgbGV0IGRhdGFfYmluZHMgPSB7XG4gICAgICAgIGNhdGVnb3JpZXNyZWNldHRlczogdGhpcy52YWxfY2F0ZWdvcmllc3JlY2V0dGVzLFxuICAgICAgICBjb21wdGVzYmFuY2FpcmVzYm9uOiB0aGlzLnZhbF9jb21wdGVzYmFuY2FpcmVzYm9uLFxuICAgICAgICBpZDogMCxcbiAgICAgICAgZGF0ZTogdGhpcy52YWxfZGF0ZSxcbiAgICAgICAgbW9kZVBhaWVtZW50OiB0aGlzLnZhbF9tb2RlUGFpZW1lbnQsXG4gICAgICAgIG1vbnRhbnQ6IHRoaXMudmFsX21vbnRhbnRUdGMsXG4gICAgICAgIGNsaWVudDogdGhpcy52YWxfY2xpZW50LFxuICAgICAgICBwaWVjZWp1c3RpZmljYXRpdmU6IHRoaXMudmFsX3BpZWNlanVzdGlmaWNhdGl2ZSxcbiAgICAgICAgZWNyaXR1cmVCYW5jYWlyZTogdGhpcy52YWxfZWNyaXR1cmVCYW5jYWlyZSxcbiAgICAgICAgbm90ZTogdGhpcy52YWxfbm90ZSxcbiAgICAgICAgcmVsZXZlUmVjZXR0ZXNib25zOiBKU09OLnN0cmluZ2lmeShbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYm9uc1ZlbnRlczogdGhpcy52YWxfaWRfYmwsXG4gICAgICAgICAgICBkYXRlOiB0aGlzLnZhbF9kYXRlLFxuICAgICAgICAgICAgbW9udGFudDogdGhpcy52YWxfbW9udGFudFR0YyxcbiAgICAgICAgICAgIGRlamFSZWdsZTogXCIwLjAwMFwiLFxuICAgICAgICAgICAgcmVzdGFudFBlcmNldm9pcjogXCIwLjAwMFwiLFxuICAgICAgICAgICAgbW9udGFudFJlZ2xlbWVudDogdGhpcy52YWxfbW9udGFudFR0YyxcbiAgICAgICAgICB9LFxuICAgICAgICBdKSxcbiAgICAgIH07XG5cbiAgICAgIHRoaXMudmFsX2RhdGFfYmluZHMgPSBkYXRhX2JpbmRzO1xuICAgIH0sXG5cbiAgICBhc3luYyBydW5UcmFpdGVyKCkge1xuICAgICAgLy8gaWYgKCF0aGlzLmlzRm9ybVZhbGlkKSB7XG4gICAgICAvLyAgIHRoaXMuc2hvd1NuYWNrYmFyKFwiVmV1aWxsZXogcmVtcGxpciB0b3VzIGxlcyBjaGFtcHMgb2JsaWdhdG9pcmVzLlwiLCBcImVycm9yXCIpO1xuICAgICAgLy8gICByZXR1cm47XG4gICAgICAvLyB9XG5cbiAgICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICAgIHRoaXMucGFyc2VfZGF0YV9iaW5kcygpO1xuXG4gICAgICBjb25zdCBwYXJhbSA9IHtcbiAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgIFwiQ29udGVudC1UeXBlXCI6IFwibXVsdGlwYXJ0L2Zvcm0tZGF0YVwiLFxuICAgICAgICAgIEF1dGhvcml6YXRpb246IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiSldUVG9rZW5cIiksXG4gICAgICAgIH0sXG4gICAgICB9O1xuXG4gICAgICB0cnkge1xuICAgICAgICBsZXQgZm9ybWRhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICAgICAgZm9ybWRhdGEgPSB0aGlzLmNyZWF0ZUZvcm1EYXRhKGZvcm1kYXRhLCBcImRhdGFfYmluZHNcIiwgdGhpcy52YWxfZGF0YV9iaW5kcyk7XG5cbiAgICAgICAgbGV0IHVybFBhZ2UgPSB0aGlzLiRzdG9yZS5nZXR0ZXJzW1wiZ2V0X2FkZFwiXSgncmVjZXR0ZXNib24nKTtcbiAgICAgICAgYXdhaXQgYXhpb3MucG9zdCh1cmxQYWdlLCBmb3JtZGF0YSwgcGFyYW0pO1xuXG4gICAgICAgIHRoaXMuc2hvd1NuYWNrYmFyKFwiUGFpZW1lbnQgZWZmZWN0dcOpIGF2ZWMgc3VjY8OocyFcIiwgXCJzdWNjZXNzXCIpO1xuICAgICAgICB0aGlzLiRyb3V0ZXIucHVzaCh7IG5hbWU6IFwiYm9uc3ZlbnRlc19zaG93XCIsIHBhcmFtczoge30gfSk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICB0aGlzLnNob3dTbmFja2JhcihcIkVycmV1ciBsb3JzIGR1IHBhaWVtZW50LiBWZXVpbGxleiByw6llc3NheWVyLlwiLCBcImVycm9yXCIpO1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSxcblxuICAgIHNob3dTbmFja2JhcihtZXNzYWdlLCBjb2xvcikge1xuICAgICAgdGhpcy5zbmFja2Jhci5tZXNzYWdlID0gbWVzc2FnZTtcbiAgICAgIHRoaXMuc25hY2tiYXIuY29sb3IgPSBjb2xvcjtcbiAgICAgIHRoaXMuc25hY2tiYXIuc2hvdyA9IHRydWU7XG4gICAgfSxcblxuICAgIGlzR3JhbnRlZChhdHRyaWJ1dGUpIHtcbiAgICAgIHJldHVybiB0aGlzLiRzdG9yZS5nZXR0ZXJzW1wic2VjdXJpdHkvaXNHcmFudGVkXCJdKGF0dHJpYnV0ZSwgJ3JlY2V0dGVzYm9uJyk7XG4gICAgfSxcbiAgfSxcbn07XG48L3NjcmlwdD5cblxuPHN0eWxlIHNjb3BlZD5cbi8qINiq2LXZhdmK2YUg2KfZhNiy2LEgKi9cbi5wYXltZW50LWJ1dHRvbiB7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg0NWRlZywgIzRDQUY1MCwgIzgxQzc4NCk7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTtcbiAgYm94LXNoYWRvdzogMCA0cHggNnB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcbn1cblxuLnBheW1lbnQtYnV0dG9uOmhvdmVyIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpO1xuICBib3gtc2hhZG93OiAwIDZweCA4cHggcmdiYSgwLCAwLCAwLCAwLjE1KTtcbn1cblxuLnBheW1lbnQtYnV0dG9uOmFjdGl2ZSB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbiAgYm94LXNoYWRvdzogMCA0cHggNnB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcbn1cblxuLnBheW1lbnQtYnV0dG9uLnYtYnRuLS1sb2FkaW5nIHtcbiAgb3BhY2l0eTogMC44O1xufVxuPC9zdHlsZT4iLCI8dGVtcGxhdGU+XG4gIDx2LWJ0biB2LXNob3c9XCIgaXNHcmFudGVkKCdhZGQnKVwiIGVsZXZhdGlvbj1cIjdcIiBjbGFzcz1cIm14LTIgIHNoYWtlLWJ0biBcIiBvdXRsaW5lZCBmYWIgZGFya1xuICAgIGNvbG9yPVwiZXJyb3JcIiBsYXJnZSBAY2xpY2s9XCJydW5UcmFpdGVyXCI+XG4gICAgPHYtaWNvbiBkYXJrPm1kaS1hY2NvdW50LWNhc2gtb3V0bGluZTwvdi1pY29uPlxuICA8L3YtYnRuPlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdD5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuXG5cbiAgICAgIHZhbF9jbGllbnQ6IFwiXCIsXG4gICAgICB2YWxfZGF0ZTogXCJcIixcbiAgICAgIHZhbF9tb2RlUGFpZW1lbnQ6IFwiXCIsXG4gICAgICB2YWxfY2F0ZWdvcmllc3JlY2V0dGVzOiBcIlwiLFxuICAgICAgdmFsX2NvbXB0ZXNiYW5jYWlyZXNib246IFwiXCIsXG4gICAgfTtcbiAgfSxcblxuXG5cbiAgcHJvcHM6IHtcblxuXG5cblxuICB9LFxuXG4gIG1ldGhvZHM6IHtcblxuICAgIGdldERhdGFmcm9tQkwoKSB7XG5cbiAgICAgIHRoaXMudmFsX2NsaWVudCA9IHRoaXMuJHN0b3JlLmdldHRlcnNbXCJzdHJ1Y3R1cmUvZ2V0X2lucHV0X2JpbmRzXCJdKHtcbiAgICAgICAgY29udHJvbGxlcl9yb290OiBcImJvbnN2ZW50ZXNcIixcbiAgICAgICAgbmFtZTogJ2NsaWVudCcsXG4gICAgICB9KTtcblxuICAgICAgdGhpcy52YWxfZGF0ZSA9IHRoaXMuJHN0b3JlLmdldHRlcnNbXCJzdHJ1Y3R1cmUvZ2V0X2lucHV0X2JpbmRzXCJdKHtcbiAgICAgICAgY29udHJvbGxlcl9yb290OiBcImJvbnN2ZW50ZXNcIixcbiAgICAgICAgbmFtZTogJ2RhdGUnLFxuICAgICAgfSk7XG5cbiAgICAgIHRoaXMudmFsX21vZGVQYWllbWVudCA9IHRoaXMuJHN0b3JlLmdldHRlcnNbXCJzdHJ1Y3R1cmUvZ2V0X2lucHV0X2JpbmRzXCJdKHtcbiAgICAgICAgY29udHJvbGxlcl9yb290OiBcImJvbnN2ZW50ZXNcIixcbiAgICAgICAgbmFtZTogJ21vZGVQYWllbWVudCcsXG4gICAgICB9KVxuXG4gICAgICAgIDtcbiAgICB9LCBnZXREYXRhZnJvbUNhY2hlKCkge1xuXG4gICAgICBjb25zdCBjYXRlZ29yaWVzUmVjZXR0ZXMgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImNhY2hlX2RhdGFfY2F0ZWdvcmllc3JlY2V0dGVzXCIpO1xuICAgICAgdGhpcy52YWxfY2F0ZWdvcmllc3JlY2V0dGVzID0gY2F0ZWdvcmllc1JlY2V0dGVzID8gTnVtYmVyKGNhdGVnb3JpZXNSZWNldHRlcykgOiAxO1xuXG4gICAgICBjb25zdCBjb21wdGVzQmFuY2FpcmVzQm9uID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJjYWNoZV9kYXRhX2NvbXB0ZXNiYW5jYWlyZXNib25cIik7XG4gICAgICB0aGlzLnZhbF9jb21wdGVzYmFuY2FpcmVzYm9uID0gY29tcHRlc0JhbmNhaXJlc0JvbiA/IE51bWJlcihjb21wdGVzQmFuY2FpcmVzQm9uKSA6IDE7XG4gICAgfSxcblxuXG5cbiAgICBydW5UcmFpdGVyKCkge1xuXG5cblxuICAgICAgdGhpcy4kc3RvcmUuY29tbWl0KFwiZGlhbG9nL3NldF9kaWFsb2dfYnRuX3NlbmRcIiwgeyBmbGFnOiB0cnVlIH0pO1xuICAgICAgdGhpcy5nZXREYXRhZnJvbUJMKCk7XG4gICAgICB0aGlzLmdldERhdGFmcm9tQ2FjaGUoKTtcblxuICAgICAgdGhpcy4kc3RvcmUuZGlzcGF0Y2goXCJpbml0aWFsaXplX3ZpZXdcIiwge1xuICAgICAgICBjb250cm9sbGVyczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvbnRyb2xsZXJfcm9vdDogJ3JlY2V0dGVzYm9uJyxcbiAgICAgICAgICAgIG5hbWVtb2R1bGU6IFwiXCIsXG4gICAgICAgICAgICBpbnB1dF9yb290OiAnY2xpZW50JyxcbiAgICAgICAgICAgIGxpc3RzX0FkZDogW10sXG4gICAgICAgICAgICBtdWx0aXNlbGVjdDogW10sXG4gICAgICAgICAgICBvcHRpb25zX3Nob3dEYXRhOiBbXSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSk7XG5cblxuXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcblxuICAgICAgICBjb25zdCBpbnB1dHMgPSBbXG4gICAgICAgICAgeyBuYW1lOiBcImNhdGVnb3JpZXNyZWNldHRlc1wiLCB2YWx1ZTogdGhpcy52YWxfY2F0ZWdvcmllc3JlY2V0dGVzIH0sXG4gICAgICAgICAgeyBuYW1lOiAnY2xpZW50JywgdmFsdWU6IHRoaXMudmFsX2NsaWVudCB9LFxuICAgICAgICAgIHsgbmFtZTogXCJjb21wdGVzYmFuY2FpcmVzYm9uXCIsIHZhbHVlOiB0aGlzLnZhbF9jb21wdGVzYmFuY2FpcmVzYm9uIH0sXG4gICAgICAgICAgeyBuYW1lOiBcIm1vZGVQYWllbWVudFwiLCB2YWx1ZTogdGhpcy52YWxfbW9kZVBhaWVtZW50IH0sXG4gICAgICAgICAgeyBuYW1lOiBcImRhdGVcIiwgdmFsdWU6IHRoaXMudmFsX2RhdGUgfSxcblxuXG4gICAgICAgICAgeyBuYW1lOiBcImVjcml0dXJlQmFuY2FpcmVcIiwgdmFsdWU6IFwiKlwiIH0sXG4gICAgICAgICAgeyBuYW1lOiBcInBpZWNlanVzdGlmaWNhdGl2ZVwiLCB2YWx1ZTogXCIqXCIgfSxcbiAgICAgICAgICB7IG5hbWU6IFwibm90ZVwiLCB2YWx1ZTogXCJcIiB9LFxuXG4gICAgICAgIF07XG5cbiAgICAgICAgaW5wdXRzLmZvckVhY2goKGlucHV0KSA9PiB7XG4gICAgICAgICAgdGhpcy4kc3RvcmUuY29tbWl0KFwic3RydWN0dXJlL3NldF9pbnB1dF9iaW5kc1wiLCB7XG4gICAgICAgICAgICAuLi5pbnB1dCxcbiAgICAgICAgICAgIGNvbnRyb2xsZXJfcm9vdDogJ3JlY2V0dGVzYm9uJyxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuJHN0b3JlLmNvbW1pdChcInN0cnVjdHVyZS9zZXRfYWN0aW9uVHJhaXRlclwiLCB7XG4gICAgICAgICAgYWN0aW9uVHJhaXRlcjogdGhpcy52YWxfY2xpZW50LFxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLiRzdG9yZS5jb21taXQoXCJkaWFsb2cvc2V0X2RpYWxvZ19idG5fc2VuZFwiLCB7IGZsYWc6IGZhbHNlIH0pO1xuICAgICAgfSwgNDAwMCk7XG5cbiAgICAgIHRoaXMuJHJvdXRlclxuICAgICAgICAucHVzaCh7IG5hbWU6ICdyZWNldHRlc2JvbicgKyBcIl9ieWl0ZW1cIiB9KVxuICAgICAgICAuY2F0Y2goKGVycikgPT4gY29uc29sZS5lcnJvcihcIk5hdmlnYXRpb24gZXJyb3I6XCIsIGVycikpO1xuXG4gICAgfSxcblxuICAgIGlzR3JhbnRlZChhdHRyaWJ1dGUpIHtcbiAgICAgIHJldHVybiB0aGlzLiRzdG9yZS5nZXR0ZXJzW1wic2VjdXJpdHkvaXNHcmFudGVkXCJdKFxuICAgICAgICBhdHRyaWJ1dGUsXG4gICAgICAgICdyZWNldHRlc2JvbidcbiAgICAgICk7XG4gICAgfSxcbiAgfSxcbiAgY29tcHV0ZWQ6IHtcblxuICB9LCBtb3VudGVkKCkge1xuXG4gIH0sXG59O1xuPC9zY3JpcHQ+XG48c3R5bGUgc2NvcGVkPlxuLyog2KfZhNiq2KPYq9mK2LEg2KfZhNio2LXYsdmKINmE2YTYp9mH2KrYstin2LIg2K/Yp9iu2YQg2KfZhNi52YbYp9i12LEgKi9cbi5zaGFrZS1idG4ge1xuXG4gIGFuaW1hdGlvbjogYmxpbmsgMXMgMXMgZWFzZS1vdXQgaW5maW5pdGU7XG4gIC8qINin2YTZiNmF2YrYtiDYp9mE2YXYs9iq2YXYsSAqL1xufVxuXG4vKiDYrdix2YPYqSDYp9mE2KfZh9iq2LLYp9iyINiv2KfYrtmEINin2YTYudmG2KfYtdixICovXG4uc2hha2UtYnRuIHNwYW4sXG4uc2hha2UtYnRuIHtcbiAgYW5pbWF0aW9uOiBzaGFrZSAxcyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbn1cblxuLyog2K3YsdmD2Kkg2KfZhNin2YfYqtiy2KfYsiAo2LnZhtivINiq2LfYqNmK2YIg2KfZhNin2YfYqtiy2KfYsiDYudmE2Ykg2KfZhNmG2LUg2YjYp9mE2KPZitmC2YjZhtipINmB2YLYtykgKi9cbkBrZXlmcmFtZXMgc2hha2Uge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApO1xuICB9XG5cbiAgMjUlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTNweCk7XG4gIH1cblxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgzcHgpO1xuICB9XG5cbiAgNzUlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTNweCk7XG4gIH1cblxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7XG4gIH1cbn1cblxuLyog2K3YsdmD2Kkg2KfZhNmI2YXZiti2ICovXG5Aa2V5ZnJhbWVzIGJsaW5rIHtcbiAgMCUge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmMGMwYzA7XG4gIH1cblxuICA1MCUge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmNDQzMzY7XG4gIH1cblxuICAxMDAlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjYTgyODI4O1xuICB9XG59XG48L3N0eWxlPlxuIiwiPHRlbXBsYXRlPlxuICA8di1jYXJkXG4gICAgdi1iaW5kPVwiJGF0dHJzXCJcbiAgICA6Y2xhc3M9XCJjbGFzc2VzXCJcbiAgICBjbGFzcz1cInYtY2FyZC0tbWF0ZXJpYWwgcGEtM1wiXG4gICAgZWxldmF0aW9uPVwiM1wiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdyb3cgZmxleC13cmFwXCI+XG4gICAgICA8di1hdmF0YXJcbiAgICAgICAgdi1pZj1cImF2YXRhclwiXG4gICAgICAgIDpzaXplPVwic2l6ZUF2YXRhclwiXG4gICAgICAgIGNsYXNzPVwibXgtYXV0byB2LWNhcmQtLW1hdGVyaWFsIF9fYXZhdGFyIGVsZXZhdGlvbi02XCJcbiAgICAgICAgY29sb3I9XCJncmV5XCJcbiAgICAgID5cbiAgICAgICAgPHYtaW1nIDpzcmM9XCJCYXNlX3VybCthdmF0YXJcIiAvPlxuICAgICAgPC92LWF2YXRhcj5cblxuICAgICAgPHYtc2hlZXRcbiAgICAgICAgdi1lbHNlXG4gICAgICAgIDpjbGFzcz1cInsgJ3BhLTUnOiAhJHNsb3RzLmltYWdlIH1cIlxuICAgICAgICA6Y29sb3I9XCJjb2xvclwiXG4gICAgICAgIDptYXgtaGVpZ2h0PVwiaWNvbiA/IDkwIDogdW5kZWZpbmVkXCJcbiAgICAgICAgOndpZHRoPVwiaWNvbiA/ICdhdXRvJyA6ICcxMDAlJ1wiXG4gICAgICAgIGVsZXZhdGlvbj1cIjZcIlxuICAgICAgICBjbGFzcz1cInRleHQtc3RhcnQgdi1jYXJkLS1tYXRlcmlhbCBfX2hlYWRpbmdcIlxuICAgICAgICBkYXJrXG4gICAgICAgIHNoYXBlZFxuICAgICAgPlxuICAgICAgICA8c2xvdCB2LWlmPVwiJHNsb3RzLmhlYWRpbmdcIiBuYW1lPVwiaGVhZGluZ1wiIC8+XG5cbiAgICAgICAgPHNsb3Qgdi1lbHNlLWlmPVwiJHNsb3RzLmltYWdlXCIgbmFtZT1cImltYWdlXCIgLz5cblxuICAgICAgICA8ZGl2XG4gICAgICAgICAgdi1lbHNlLWlmPVwidGl0bGUgJiYgIWljb25cIlxuICAgICAgICAgIGNsYXNzPVwiZGlzcGxheS0xIGZvbnQtd2VpZ2h0LWxpZ2h0XCJcbiAgICAgICAgICB2LXRleHQ9XCJ0aXRsZVwiXG4gICAgICAgIC8+XG5cbiAgICAgICAgPHYtaWNvbiB2LWVsc2UtaWY9XCJpY29uICYmICF0ZXh0XCIgc2l6ZT1cIjMyXCIgdi10ZXh0PVwiaWNvblwiIC8+XG5cbiAgICAgICAgPHYtdG9vbHRpcCB0b3AgY29sb3I9XCJibHVlXCIgdi1lbHNlLWlmPVwiaWNvbiAmJiB0ZXh0XCIgbWF4LXdpZHRoPVwiNDYwXCI+XG4gICAgICAgICAgPHRlbXBsYXRlIHYtc2xvdDphY3RpdmF0b3I9XCJ7IG9uIH1cIj5cbiAgICAgICAgICAgIDx2LWljb24gc2l6ZT1cIjMyXCIgdi10ZXh0PVwiaWNvblwiIHYtb249XCJvblwiIC8+XG4gICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInN1YnRpdGxlLTIgZm9udC13ZWlnaHQtdGhpblwiPnt7IHRleHQgfX08L3NwYW4+XG4gICAgICAgIDwvdi10b29sdGlwPlxuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICB2LWlmPVwiIWljb24gJiYgdGV4dFwiXG4gICAgICAgICAgY2xhc3M9XCJoZWFkbGluZSBmb250LXdlaWdodC10aGluXCJcbiAgICAgICAgICB2LXRleHQ9XCJ0ZXh0XCJcbiAgICAgICAgLz5cbiAgICAgIDwvdi1zaGVldD5cblxuICAgICAgPGRpdiB2LWlmPVwiJHNsb3RzWydhZnRlci1oZWFkaW5nJ11cIiBjbGFzcz1cIm1sLTZcIj5cbiAgICAgICAgPHNsb3QgbmFtZT1cImFmdGVyLWhlYWRpbmdcIiAvPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgdi1lbHNlLWlmPVwiaWNvbiAmJiB0aXRsZVwiIGNsYXNzPVwibWwtNFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10aXRsZSBmb250LXdlaWdodC1saWdodFwiIHYtdGV4dD1cInRpdGxlXCIgLz5cbiAgICAgIDwvZGl2PlxuPHYtc3BhY2VyPjwvdi1zcGFjZXI+XG4gICAgICA8di1idG5cbiAgICAgICAgaWNvblxuICAgICAgICBcbiAgICAgICAgdi1pZj1cImNsb3NlXCJcbiAgICAgICAgIEBjbGljaz1cImNsb3NlZXZlbnQoKVwiIFxuICAgICAgICBjbGFzcz1cInJpZ2h0XCI+IDx2LWljb24+bWRpLWNsb3NlPC92LWljb24+IDwvdi1idG4+XG4gICAgPC9kaXY+XG5cbiAgICA8c2xvdCAvPlxuXG4gICAgPHRlbXBsYXRlIHYtaWY9XCIkc2xvdHMuYWN0aW9uc1wiPlxuICAgICAgPHYtZGl2aWRlciBjbGFzcz1cIm10LTJcIiAvPlxuXG4gICAgICA8di1jYXJkLWFjdGlvbnMgY2xhc3M9XCJwYi0wXCI+XG4gICAgICAgIDxzbG90IG5hbWU9XCJhY3Rpb25zXCIgLz5cbiAgICAgIDwvdi1jYXJkLWFjdGlvbnM+XG4gICAgPC90ZW1wbGF0ZT5cbiAgPC92LWNhcmQ+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0PlxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiBcIk1hdGVyaWFsQ2FyZFwiLFxuXG4gIHByb3BzOiB7XG4gICAgYXZhdGFyOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiBcIlwiLFxuICAgIH0sXG5cbiAgICBzaXplQXZhdGFyOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiBcIjEyOFwiLFxuICAgIH0sXG5cbiAgICBjb2xvcjoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogXCJzdWNjZXNzXCIsXG4gICAgfSxcbiAgICBpY29uOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiB1bmRlZmluZWQsXG4gICAgfSxcbiAgICBpbWFnZToge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgIH0sXG4gICAgdGV4dDoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogXCJcIixcbiAgICB9LFxuICAgIHRpdGxlOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiBcIlwiLFxuICAgIH0sIFxuICAgIGNsb3NlOiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgfSxcbiAgfSxcblxuICBjb21wdXRlZDoge1xuICAgICBCYXNlX3VybCgpe3JldHVybiB0aGlzLiRzdG9yZS5zdGF0ZS5CYXNlX3VybH0sXG4gICAgY2xhc3NlcygpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIFwidi1jYXJkLS1tYXRlcmlhbC0taGFzLWhlYWRpbmdcIjogdGhpcy5oYXNIZWFkaW5nLFxuICAgICAgfTtcbiAgICB9LFxuICAgIGhhc0hlYWRpbmcoKSB7XG4gICAgICByZXR1cm4gQm9vbGVhbih0aGlzLiRzbG90cy5oZWFkaW5nIHx8IHRoaXMudGl0bGUgfHwgdGhpcy5pY29uKTtcbiAgICB9LFxuICAgIGhhc0FsdEhlYWRpbmcoKSB7XG4gICAgICByZXR1cm4gQm9vbGVhbih0aGlzLiRzbG90cy5oZWFkaW5nIHx8ICh0aGlzLnRpdGxlICYmIHRoaXMuaWNvbikpO1xuICAgIH0sXG4gIH0sXG4gIG1ldGhvZHM6IHtcbiAgICBjbG9zZWV2ZW50KCkge1xuICAgICAgdGhpcy4kZW1pdChcImNsb3NlXCIpO1xuICAgIH0sXG4gIH0sXG59O1xuPC9zY3JpcHQ+XG5cbjxzdHlsZSBzY29wZWQ+XG4udi1jYXJkLS1tYXRlcmlhbCAuX19hdmF0YXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHRvcDogLTY0cHg7XG4gIG1hcmdpbi1ib3R0b206IC0zMnB4O1xufVxuXG4udi1jYXJkLS1tYXRlcmlhbCAuX19oZWFkaW5nIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB0b3A6IC00MHB4O1xuICB0cmFuc2l0aW9uOiAwLjNzIGVhc2U7XG4gIHotaW5kZXg6IDE7XG59XG48L3N0eWxlPlxuIiwiPHRlbXBsYXRlPlxuICAgIDx2LWRpYWxvZyB2LW1vZGVsPVwiZGlhbG9nXCIgbWF4LXdpZHRoPVwiMTIwMHB4XCIgc2Nyb2xsYWJsZSBwZXJzaXN0ZW50PlxuICAgICAgICA8di1jYXJkIHYtaWY9XCJtb250aERhdGFcIj5cbiAgICAgICAgICAgIDx2LWNhcmQtdGl0bGUgY2xhc3M9XCJwcmltYXJ5IHdoaXRlLS10ZXh0XCI+XG4gICAgICAgICAgICAgICAgPHYtaWNvbiBsZWZ0IGNvbG9yPVwid2hpdGVcIj5tZGktY2FsZW5kYXItbW9udGg8L3YtaWNvbj5cbiAgICAgICAgICAgICAgICBEw6l0YWlscyBwb3VyIHt7IG1vbnRoRGF0YS5tb250aE5hbWUgfX0ge3sgeWVhciB9fVxuICAgICAgICAgICAgICAgIDx2LXNwYWNlciAvPlxuICAgICAgICAgICAgICAgIDx2LWJ0biBpY29uIGRhcmsgQGNsaWNrPVwiY2xvc2VcIj5cbiAgICAgICAgICAgICAgICAgICAgPHYtaWNvbj5tZGktY2xvc2U8L3YtaWNvbj5cbiAgICAgICAgICAgICAgICA8L3YtYnRuPlxuICAgICAgICAgICAgPC92LWNhcmQtdGl0bGU+XG5cbiAgICAgICAgICAgIDwhLS0gTG9hZGluZyBTdGF0ZSAtLT5cbiAgICAgICAgICAgIDx2LWNhcmQtdGV4dCB2LWlmPVwibG9hZGluZ1wiIGNsYXNzPVwidGV4dC1jZW50ZXIgcHktMTJcIj5cbiAgICAgICAgICAgICAgICA8di1wcm9ncmVzcy1jaXJjdWxhciBpbmRldGVybWluYXRlIGNvbG9yPVwicHJpbWFyeVwiIHNpemU9XCI2NFwiPjwvdi1wcm9ncmVzcy1jaXJjdWxhcj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtNFwiPkNoYXJnZW1lbnQgZGVzIGTDqXRhaWxzLi4uPC9kaXY+XG4gICAgICAgICAgICA8L3YtY2FyZC10ZXh0PlxuXG4gICAgICAgICAgICA8dGVtcGxhdGUgdi1lbHNlLWlmPVwiZGFpbHlEYXRhXCI+XG4gICAgICAgICAgICAgICAgPCEtLSBTdW1tYXJ5IFN0YXRzIC0tPlxuICAgICAgICAgICAgICAgIDx2LWNhcmQtc3VidGl0bGUgY2xhc3M9XCJwYS00XCI+XG4gICAgICAgICAgICAgICAgICAgIDx2LXJvdz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx2LWNvbCBjb2xzPVwiMTJcIiBzbT1cIjRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8di1jYXJkIG91dGxpbmVkIGNvbG9yPVwic3VjY2VzcyBsaWdodGVuLTVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHYtY2FyZC10ZXh0IGNsYXNzPVwidGV4dC1jZW50ZXIgcHktM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2FwdGlvblwiPkNyw6lkaXQgVG90YWw8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWg2IHN1Y2Nlc3MtLXRleHQgZm9udC13ZWlnaHQtYm9sZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGZvcm1hdE1vbmV5KG1vbnRoRGF0YS50b3RhbENyZWRpdCkgfX0gREhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3YtY2FyZC10ZXh0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdi1jYXJkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC92LWNvbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx2LWNvbCBjb2xzPVwiMTJcIiBzbT1cIjRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8di1jYXJkIG91dGxpbmVkIGNvbG9yPVwiZXJyb3IgbGlnaHRlbi01XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2LWNhcmQtdGV4dCBjbGFzcz1cInRleHQtY2VudGVyIHB5LTNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNhcHRpb25cIj5Ew6liaXQgVG90YWw8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWg2IGVycm9yLS10ZXh0IGZvbnQtd2VpZ2h0LWJvbGRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBmb3JtYXRNb25leShtb250aERhdGEudG90YWxEZWJpdCkgfX0gREhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3YtY2FyZC10ZXh0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdi1jYXJkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC92LWNvbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx2LWNvbCBjb2xzPVwiMTJcIiBzbT1cIjRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8di1jYXJkIG91dGxpbmVkIDpjb2xvcj1cImJhbGFuY2VDb2xvciArICcgbGlnaHRlbi01J1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8di1jYXJkLXRleHQgY2xhc3M9XCJ0ZXh0LWNlbnRlciBweS0zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jYXB0aW9uXCI+U29sZGUgTmV0PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1oNiBmb250LXdlaWdodC1ib2xkXCIgOmNsYXNzPVwiYmFsYW5jZUNvbG9yICsgJy0tdGV4dCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBmb3JtYXRNb25leShtb250aERhdGEubmV0QmFsYW5jZSkgfX0gREhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3YtY2FyZC10ZXh0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdi1jYXJkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC92LWNvbD5cbiAgICAgICAgICAgICAgICAgICAgPC92LXJvdz5cbiAgICAgICAgICAgICAgICA8L3YtY2FyZC1zdWJ0aXRsZT5cblxuICAgICAgICAgICAgICAgIDwhLS0gRGFpbHkgQnJlYWtkb3duIFRhYmxlIC0tPlxuICAgICAgICAgICAgICAgIDx2LWNhcmQtdGV4dD5cbiAgICAgICAgICAgICAgICAgICAgPHYtZGF0YS10YWJsZSA6aGVhZGVycz1cImRhaWx5SGVhZGVyc1wiIDppdGVtcz1cImRhaWx5RGF0YS5kYXlzXCIgOml0ZW1zLXBlci1wYWdlPVwiMzFcIiBkZW5zZVxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJlbGV2YXRpb24tMVwiIDpzaG93LWV4cGFuZD1cInRydWVcIiBzaW5nbGUtZXhwYW5kPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlIHYtc2xvdDppdGVtLmRhdGU9XCJ7IGl0ZW0gfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgZm9ybWF0RGF0ZShpdGVtLmRhdGUpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxicj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwidGV4dC0tc2Vjb25kYXJ5XCI+e3sgaXRlbS5kYXlOYW1lIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6aXRlbS5jcmVkaXQ9XCJ7IGl0ZW0gfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2LWNoaXAgc21hbGwgY29sb3I9XCJzdWNjZXNzXCIgZGFyayB2LWlmPVwiaXRlbS5jcmVkaXQgPiAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGZvcm1hdE1vbmV5KGl0ZW0uY3JlZGl0KSB9fSBESFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdi1jaGlwPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHYtZWxzZSBjbGFzcz1cImdyZXktLXRleHRcIj4tPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlIHYtc2xvdDppdGVtLmRlYml0PVwieyBpdGVtIH1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8di1jaGlwIHNtYWxsIGNvbG9yPVwiZXJyb3JcIiBkYXJrIHYtaWY9XCJpdGVtLmRlYml0ID4gMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBmb3JtYXRNb25leShpdGVtLmRlYml0KSB9fSBESFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdi1jaGlwPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHYtZWxzZSBjbGFzcz1cImdyZXktLXRleHRcIj4tPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlIHYtc2xvdDppdGVtLm5ldEJhbGFuY2U9XCJ7IGl0ZW0gfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9udC13ZWlnaHQtYm9sZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjbGFzcz1cIml0ZW0ubmV0QmFsYW5jZSA+PSAwID8gJ3N1Y2Nlc3MtLXRleHQnIDogJ2Vycm9yLS10ZXh0J1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBmb3JtYXRNb25leShpdGVtLm5ldEJhbGFuY2UpIH19IERIXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlIHYtc2xvdDppdGVtLnRyYW5zYWN0aW9uQ291bnQ9XCJ7IGl0ZW0gfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2LWNoaXAgeC1zbWFsbCBvdXRsaW5lZCB2LWlmPVwiaXRlbS50cmFuc2FjdGlvbkNvdW50ID4gMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLnRyYW5zYWN0aW9uQ291bnQgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3YtY2hpcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiB2LWVsc2UgY2xhc3M9XCJncmV5LS10ZXh0XCI+MDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gRXhwYW5kZWQgUm93OiBTaG93IFRyYW5zYWN0aW9ucyAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6ZXhwYW5kZWQtaXRlbT1cInsgaGVhZGVycywgaXRlbSB9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIDpjb2xzcGFuPVwiaGVhZGVycy5sZW5ndGhcIiBjbGFzcz1cInBhLTQgZ3JleSBsaWdodGVuLTRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiB2LWlmPVwiaXRlbS50cmFuc2FjdGlvbnMgJiYgaXRlbS50cmFuc2FjdGlvbnMubGVuZ3RoID4gMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHYtc2ltcGxlLXRhYmxlIGRlbnNlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6ZGVmYXVsdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoZWFkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5JRDwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlR5cGU8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5Nb250YW50PC90aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+Q2xpZW50L0ZvdXJuaXNzZXVyPC90aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+TW9kZSBQYWllbWVudDwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlN0YXR1dDwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPk5vdGU8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aGVhZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRib2R5PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyIHYtZm9yPVwidHJhbnNhY3Rpb24gaW4gaXRlbS50cmFuc2FjdGlvbnNcIiA6a2V5PVwidHJhbnNhY3Rpb24uaWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgdHJhbnNhY3Rpb24uaWQgfX08L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHYtY2hpcCB4LXNtYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Y29sb3I9XCJ0cmFuc2FjdGlvbi50eXBlID09PSAncmVjZXR0ZScgPyAnc3VjY2VzcycgOiAnZXJyb3InXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhcms+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyB0cmFuc2FjdGlvbi50eXBlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdi1jaGlwPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZm9udC13ZWlnaHQtYm9sZFwiPnt7IGZvcm1hdE1vbmV5KHRyYW5zYWN0aW9uLm1vbnRhbnQpIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERIPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgdHJhbnNhY3Rpb24uY2xpZW50IHx8IHRyYW5zYWN0aW9uLmZvdXJuaXNzZXVyIHx8ICctJyB9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7IHRyYW5zYWN0aW9uLm1vZGVQYWllbWVudCB8fCAnLScgfX08L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHYtY2hpcCB4LXNtYWxsIHYtaWY9XCJ0cmFuc2FjdGlvbi5zdGF0dXRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHRyYW5zYWN0aW9uLnN0YXR1dCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3YtY2hpcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRleHQtdHJ1bmNhdGVcIiBzdHlsZT1cIm1heC13aWR0aDogMjAwcHg7XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHRyYW5zYWN0aW9uLm5vdGUgfHwgJy0nIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdi1zaW1wbGUtdGFibGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHYtZWxzZSBjbGFzcz1cInRleHQtY2VudGVyIHB5LTQgZ3JleS0tdGV4dFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXVjdW5lIHRyYW5zYWN0aW9uIGNlIGpvdXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgIDwvdi1kYXRhLXRhYmxlPlxuICAgICAgICAgICAgICAgIDwvdi1jYXJkLXRleHQ+XG4gICAgICAgICAgICA8L3RlbXBsYXRlPlxuXG4gICAgICAgICAgICA8di1jYXJkLWFjdGlvbnM+XG4gICAgICAgICAgICAgICAgPHYtYnRuIHRleHQgY29sb3I9XCJncmV5XCIgQGNsaWNrPVwiY2xvc2VcIj5cbiAgICAgICAgICAgICAgICAgICAgRmVybWVyXG4gICAgICAgICAgICAgICAgPC92LWJ0bj5cbiAgICAgICAgICAgICAgICA8di1zcGFjZXIgLz5cbiAgICAgICAgICAgICAgICA8di1idG4gY29sb3I9XCJwcmltYXJ5XCIgQGNsaWNrPVwiZXhwb3J0TW9udGhcIj5cbiAgICAgICAgICAgICAgICAgICAgPHYtaWNvbiBsZWZ0Pm1kaS1kb3dubG9hZDwvdi1pY29uPlxuICAgICAgICAgICAgICAgICAgICBFeHBvcnRlclxuICAgICAgICAgICAgICAgIDwvdi1idG4+XG4gICAgICAgICAgICA8L3YtY2FyZC1hY3Rpb25zPlxuICAgICAgICA8L3YtY2FyZD5cbiAgICA8L3YtZGlhbG9nPlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdD5cbmltcG9ydCBheGlvcyBmcm9tIFwiYXhpb3NcIjtcbmltcG9ydCBqc1BERiBmcm9tIFwianNwZGZcIjtcbmltcG9ydCBhdXRvVGFibGUgZnJvbSBcImpzcGRmLWF1dG90YWJsZVwiO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gICAgcHJvcHM6IHtcbiAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgICAgbW9udGhEYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICBkZWZhdWx0OiBudWxsLFxuICAgICAgICB9LFxuICAgICAgICB5ZWFyOiB7XG4gICAgICAgICAgICB0eXBlOiBOdW1iZXIsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgY29tcHRlSWQ6IHtcbiAgICAgICAgICAgIHR5cGU6IFtOdW1iZXIsIFN0cmluZ10sXG4gICAgICAgICAgICBkZWZhdWx0OiBudWxsLFxuICAgICAgICB9LFxuICAgICAgICBjb250cm9sbGVyUm9vdDoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgZGVmYXVsdDogJ3JlbGV2ZWJhbmNhaXJlcycsXG4gICAgICAgIH0sXG4gICAgfSxcblxuICAgIGRhdGEoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBsb2FkaW5nOiBmYWxzZSxcbiAgICAgICAgICAgIGRhaWx5RGF0YTogbnVsbCxcbiAgICAgICAgICAgIGRhaWx5SGVhZGVyczogW1xuICAgICAgICAgICAgICAgIHsgdGV4dDogJ0RhdGUnLCB2YWx1ZTogJ2RhdGUnLCBzb3J0YWJsZTogZmFsc2UgfSxcbiAgICAgICAgICAgICAgICB7IHRleHQ6ICdKb3VyJywgdmFsdWU6ICdkYXlOYW1lJywgc29ydGFibGU6IGZhbHNlIH0sXG4gICAgICAgICAgICAgICAgeyB0ZXh0OiAnQ3LDqWRpdCcsIHZhbHVlOiAnY3JlZGl0JywgYWxpZ246ICdyaWdodCcgfSxcbiAgICAgICAgICAgICAgICB7IHRleHQ6ICdEw6liaXQnLCB2YWx1ZTogJ2RlYml0JywgYWxpZ246ICdyaWdodCcgfSxcbiAgICAgICAgICAgICAgICB7IHRleHQ6ICdTb2xkZSBOZXQnLCB2YWx1ZTogJ25ldEJhbGFuY2UnLCBhbGlnbjogJ3JpZ2h0JyB9LFxuICAgICAgICAgICAgICAgIHsgdGV4dDogJ1RyYW5zYWN0aW9ucycsIHZhbHVlOiAndHJhbnNhY3Rpb25Db3VudCcsIGFsaWduOiAnY2VudGVyJyB9LFxuICAgICAgICAgICAgICAgIHsgdGV4dDogJycsIHZhbHVlOiAnZGF0YS10YWJsZS1leHBhbmQnIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICB9O1xuICAgIH0sXG5cbiAgICBjb21wdXRlZDoge1xuICAgICAgICBkaWFsb2c6IHtcbiAgICAgICAgICAgIGdldCgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy52YWx1ZTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZXQodmFsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4kZW1pdCgnaW5wdXQnLCB2YWwpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcblxuICAgICAgICBiYWxhbmNlQ29sb3IoKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMubW9udGhEYXRhKSByZXR1cm4gJ2dyZXknO1xuICAgICAgICAgICAgaWYgKHRoaXMubW9udGhEYXRhLm5ldEJhbGFuY2UgPiAwKSByZXR1cm4gJ3N1Y2Nlc3MnO1xuICAgICAgICAgICAgaWYgKHRoaXMubW9udGhEYXRhLm5ldEJhbGFuY2UgPCAwKSByZXR1cm4gJ2Vycm9yJztcbiAgICAgICAgICAgIHJldHVybiAnZ3JleSc7XG4gICAgICAgIH0sXG4gICAgfSxcblxuICAgIHdhdGNoOiB7XG4gICAgICAgIHZhbHVlKG5ld1ZhbCkge1xuICAgICAgICAgICAgaWYgKG5ld1ZhbCAmJiB0aGlzLm1vbnRoRGF0YSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZmV0Y2hEYWlseURhdGEoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICB9LFxuXG4gICAgbWV0aG9kczoge1xuICAgICAgICBhc3luYyBmZXRjaERhaWx5RGF0YSgpIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5tb250aERhdGEpIHJldHVybjtcblxuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdGZXRjaGluZyBkYWlseSBkYXRhLi4uJywge1xuICAgICAgICAgICAgICAgIHllYXI6IHRoaXMueWVhcixcbiAgICAgICAgICAgICAgICBtb250aDogdGhpcy5tb250aERhdGEubW9udGgsXG4gICAgICAgICAgICAgICAgY29tcHRlSWQ6IHRoaXMuY29tcHRlSWRcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgICAgICAgICAgICAgICAgeWVhcjogdGhpcy55ZWFyLFxuICAgICAgICAgICAgICAgICAgICBtb250aDogdGhpcy5tb250aERhdGEubW9udGgsXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbXB0ZUlkKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFVzZSBjb250cm9sbGVyLXJvb3Qgc3BlY2lmaWMgcGFyYW1ldGVyIG5hbWVcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuY29udHJvbGxlclJvb3QgPT09ICdyZWxldmViYW5jYWlyZXNib24nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMuY29tcHRlc2JhbmNhaXJlc2JvbiA9IHRoaXMuY29tcHRlSWQ7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMuY29tcHRlc2JhbmNhaXJlcyA9IHRoaXMuY29tcHRlSWQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnRGFpbHkgQVBJIFJlcXVlc3QgcGFyYW1zOicsIHBhcmFtcyk7XG5cbiAgICAgICAgICAgICAgICAvLyBVc2UgY29udHJvbGxlci1yb290IHRvIGRldGVybWluZSBlbmRwb2ludFxuICAgICAgICAgICAgICAgIGNvbnN0IGVuZHBvaW50ID0gYC8ke3RoaXMuY29udHJvbGxlclJvb3R9L2RhaWx5LWJyZWFrZG93bmA7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ1VzaW5nIGVuZHBvaW50OicsIGVuZHBvaW50KTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgYXhpb3MuZ2V0KGVuZHBvaW50LCB7XG4gICAgICAgICAgICAgICAgICAgIHBhcmFtcyxcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdEYWlseSBBUEkgUmVzcG9uc2U6JywgcmVzcG9uc2UuZGF0YSk7XG4gICAgICAgICAgICAgICAgdGhpcy5kYWlseURhdGEgPSByZXNwb25zZS5kYXRhO1xuICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBmZXRjaGluZyBkYWlseSBkYXRhOicsIGVycm9yKTtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBkZXRhaWxzOicsIGVycm9yLnJlc3BvbnNlKTtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLiRzdG9yZS5jb21taXQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kc3RvcmUuY29tbWl0KCdzbmFja2Jhci9zaG93RXJyb3InLCAnRXJyZXVyIGxvcnMgZHUgY2hhcmdlbWVudCBkZXMgZMOpdGFpbHMnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuXG4gICAgICAgIGNsb3NlKCkge1xuICAgICAgICAgICAgdGhpcy5kaWFsb2cgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuZGFpbHlEYXRhID0gbnVsbDtcbiAgICAgICAgfSxcblxuICAgICAgICBmb3JtYXRNb25leSh2YWwpIHtcbiAgICAgICAgICAgIGNvbnN0IG51bSA9IHBhcnNlRmxvYXQodmFsKTtcbiAgICAgICAgICAgIGlmIChpc05hTihudW0pIHx8IHZhbCA9PT0gbnVsbCB8fCB2YWwgPT09IFwiXCIgfHwgdmFsID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gVXNlIGZyLUZSIGJ1dCByZXBsYWNlIG5vbi1icmVha2luZyBzcGFjZXMgd2l0aCBzdGFuZGFyZCBzcGFjZXMgdG8gYXZvaWQgUERGIGFydGlmYWN0c1xuICAgICAgICAgICAgLy8gXFx1MjAyRiBpcyBuYXJyb3cgTkJTUCwgXFx1MDBBMCBpcyBOQlNQXG4gICAgICAgICAgICByZXR1cm4gbnVtLnRvTG9jYWxlU3RyaW5nKCdmci1GUicsIHtcbiAgICAgICAgICAgICAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDIsXG4gICAgICAgICAgICAgICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAyLFxuICAgICAgICAgICAgfSkucmVwbGFjZSgvW1xcdTAwQTBcXHUyMDJGXS9nLCAnICcpICsgJyBESCc7XG4gICAgICAgIH0sXG5cbiAgICAgICAgZm9ybWF0RGF0ZShkYXRlU3RyaW5nKSB7XG4gICAgICAgICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoZGF0ZVN0cmluZyk7XG4gICAgICAgICAgICByZXR1cm4gZGF0ZS50b0xvY2FsZURhdGVTdHJpbmcoJ2ZyLUZSJywge1xuICAgICAgICAgICAgICAgIGRheTogJzItZGlnaXQnLFxuICAgICAgICAgICAgICAgIG1vbnRoOiAnMi1kaWdpdCcsXG4gICAgICAgICAgICAgICAgeWVhcjogJ251bWVyaWMnLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgZXhwb3J0TW9udGgoKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuZGFpbHlEYXRhIHx8ICF0aGlzLmRhaWx5RGF0YS5kYXlzKSByZXR1cm47XG5cbiAgICAgICAgICAgIGNvbnN0IGRvYyA9IG5ldyBqc1BERigpO1xuICAgICAgICAgICAgY29uc3QgcGFnZVdpZHRoID0gZG9jLmludGVybmFsLnBhZ2VTaXplLndpZHRoO1xuXG4gICAgICAgICAgICAvLyAtLS0gVGl0bGUgLS0tXG4gICAgICAgICAgICBkb2Muc2V0Rm9udFNpemUoMTgpO1xuICAgICAgICAgICAgZG9jLnNldFRleHRDb2xvcig0MCk7XG4gICAgICAgICAgICBjb25zdCB0aXRsZSA9IGBEw6l0YWlsIE1lbnN1ZWwgLSAke3RoaXMubW9udGhEYXRhLm1vbnRoTmFtZX0gJHt0aGlzLnllYXJ9YDtcbiAgICAgICAgICAgIGRvYy50ZXh0KHRpdGxlLCBwYWdlV2lkdGggLyAyLCAyMCwgeyBhbGlnbjogJ2NlbnRlcicgfSk7XG5cbiAgICAgICAgICAgIGxldCBmaW5hbFkgPSAzMDtcblxuICAgICAgICAgICAgLy8gLS0tIFN1bW1hcnkgU2VjdGlvbiAtLS1cbiAgICAgICAgICAgIGlmICh0aGlzLm1vbnRoRGF0YSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHN1bW1hcnlIZWFkID0gW1snQ3LDqWRpdCBUb3RhbCcsICdEw6liaXQgVG90YWwnLCAnU29sZGUgTmV0J11dO1xuICAgICAgICAgICAgICAgIGNvbnN0IHN1bW1hcnlEYXRhID0gW1tcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtYXRNb25leSh0aGlzLm1vbnRoRGF0YS50b3RhbENyZWRpdCksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybWF0TW9uZXkodGhpcy5tb250aERhdGEudG90YWxEZWJpdCksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybWF0TW9uZXkodGhpcy5tb250aERhdGEubmV0QmFsYW5jZSlcbiAgICAgICAgICAgICAgICBdXTtcblxuICAgICAgICAgICAgICAgIGF1dG9UYWJsZShkb2MsIHtcbiAgICAgICAgICAgICAgICAgICAgc3RhcnRZOiBmaW5hbFksXG4gICAgICAgICAgICAgICAgICAgIGhlYWQ6IHN1bW1hcnlIZWFkLFxuICAgICAgICAgICAgICAgICAgICBib2R5OiBzdW1tYXJ5RGF0YSxcbiAgICAgICAgICAgICAgICAgICAgdGhlbWU6ICdncmlkJyxcbiAgICAgICAgICAgICAgICAgICAgaGVhZFN0eWxlczogeyBmaWxsQ29sb3I6IFs2NiwgNjYsIDY2XSwgaGFsaWduOiAnY2VudGVyJyB9LFxuICAgICAgICAgICAgICAgICAgICBib2R5U3R5bGVzOiB7IGhhbGlnbjogJ2NlbnRlcicgfSxcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIGZpbmFsWSA9IGRvYy5sYXN0QXV0b1RhYmxlLmZpbmFsWSArIDE1O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyAtLS0gVGV4dCBiZWZvcmUgdGFibGUgLS0tXG4gICAgICAgICAgICBkb2Muc2V0Rm9udFNpemUoMTQpO1xuICAgICAgICAgICAgZG9jLnNldFRleHRDb2xvcig0MCk7XG4gICAgICAgICAgICBkb2MudGV4dChcIkxpc3RlIGRlcyBUcmFuc2FjdGlvbnNcIiwgMTQsIGZpbmFsWSAtIDUpO1xuXG4gICAgICAgICAgICAvLyAtLS0gVHJhbnNhY3Rpb25zIFRhYmxlIC0tLVxuICAgICAgICAgICAgY29uc3QgY29sdW1ucyA9IFtcbiAgICAgICAgICAgICAgICB7IGhlYWRlcjogJ0RhdGUnLCBkYXRhS2V5OiAnZGF0ZScgfSxcbiAgICAgICAgICAgICAgICB7IGhlYWRlcjogJ1R5cGUnLCBkYXRhS2V5OiAndHlwZScgfSxcbiAgICAgICAgICAgICAgICB7IGhlYWRlcjogJ1RpZXJzJywgZGF0YUtleTogJ3RpZXJzJyB9LFxuICAgICAgICAgICAgICAgIHsgaGVhZGVyOiAnTW9udGFudCcsIGRhdGFLZXk6ICdtb250YW50JyB9LFxuICAgICAgICAgICAgICAgIHsgaGVhZGVyOiAnUGFpZW1lbnQnLCBkYXRhS2V5OiAncGFpZW1lbnQnIH0sXG4gICAgICAgICAgICAgICAgeyBoZWFkZXI6ICdTdGF0dXQnLCBkYXRhS2V5OiAnc3RhdHV0JyB9LFxuICAgICAgICAgICAgICAgIHsgaGVhZGVyOiAnTm90ZScsIGRhdGFLZXk6ICdub3RlJyB9LFxuICAgICAgICAgICAgXTtcblxuICAgICAgICAgICAgY29uc3Qgcm93cyA9IFtdO1xuXG4gICAgICAgICAgICB0aGlzLmRhaWx5RGF0YS5kYXlzLmZvckVhY2goZGF5ID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZGF5LnRyYW5zYWN0aW9ucyAmJiBkYXkudHJhbnNhY3Rpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgZGF5LnRyYW5zYWN0aW9ucy5mb3JFYWNoKHQgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcm93cy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlOiB0aGlzLmZvcm1hdERhdGUoZGF5LmRhdGUpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IHQudHlwZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWVyczogdC5jbGllbnQgfHwgdC5mb3Vybmlzc2V1ciB8fCAnLScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9udGFudDogdGhpcy5mb3JtYXRNb25leSh0Lm1vbnRhbnQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhaWVtZW50OiB0Lm1vZGVQYWllbWVudCB8fCAnLScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHV0OiB0LnN0YXR1dCB8fCAnLScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogdC5ub3RlIHx8ICctJ1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBhdXRvVGFibGUoZG9jLCB7XG4gICAgICAgICAgICAgICAgc3RhcnRZOiBmaW5hbFksXG4gICAgICAgICAgICAgICAgY29sdW1uczogY29sdW1ucyxcbiAgICAgICAgICAgICAgICBib2R5OiByb3dzLFxuICAgICAgICAgICAgICAgIHRoZW1lOiAnc3RyaXBlZCcsXG4gICAgICAgICAgICAgICAgaGVhZFN0eWxlczogeyBmaWxsQ29sb3I6IFs0MSwgMTI4LCAxODVdLCBoYWxpZ246ICdjZW50ZXInIH0sXG4gICAgICAgICAgICAgICAgY29sdW1uU3R5bGVzOiB7XG4gICAgICAgICAgICAgICAgICAgIG1vbnRhbnQ6IHsgaGFsaWduOiAncmlnaHQnLCBmb250U3R5bGU6ICdib2xkJyB9LFxuICAgICAgICAgICAgICAgICAgICBkYXRlOiB7IGNlbGxXaWR0aDogMjUgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGRpZFBhcnNlQ2VsbDogZnVuY3Rpb24gKGRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gQ29sb3IgY29kZSBhbW91bnRzL3R5cGVzIGlmIG5lZWRlZFxuICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5zZWN0aW9uID09PSAnYm9keScgJiYgZGF0YS5jb2x1bW4uZGF0YUtleSA9PT0gJ3R5cGUnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5jZWxsLnJhdyA9PT0gJ3JlY2V0dGUnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5jZWxsLnN0eWxlcy50ZXh0Q29sb3IgPSBbNDYsIDEyNSwgNTBdOyAvLyBHcmVlblxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLmNlbGwuc3R5bGVzLnRleHRDb2xvciA9IFsxOTgsIDQwLCA0MF07IC8vIFJlZFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIC8vIC0tLSBGb290ZXIgLS0tXG4gICAgICAgICAgICBjb25zdCBwYWdlQ291bnQgPSBkb2MuaW50ZXJuYWwuZ2V0TnVtYmVyT2ZQYWdlcygpO1xuICAgICAgICAgICAgZG9jLnNldEZvbnRTaXplKDgpO1xuICAgICAgICAgICAgZG9jLnNldFRleHRDb2xvcigxNTApO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gcGFnZUNvdW50OyBpKyspIHtcbiAgICAgICAgICAgICAgICBkb2Muc2V0UGFnZShpKTtcbiAgICAgICAgICAgICAgICBkb2MudGV4dCgnR8OpbsOpcsOpIGxlICcgKyBuZXcgRGF0ZSgpLnRvTG9jYWxlRGF0ZVN0cmluZygnZnItRlInKSArICcgw6AgJyArIG5ldyBEYXRlKCkudG9Mb2NhbGVUaW1lU3RyaW5nKCdmci1GUicpLCAxNCwgZG9jLmludGVybmFsLnBhZ2VTaXplLmhlaWdodCAtIDEwKTtcbiAgICAgICAgICAgICAgICBkb2MudGV4dCgnUGFnZSAnICsgaSArICcgLyAnICsgcGFnZUNvdW50LCBkb2MuaW50ZXJuYWwucGFnZVNpemUud2lkdGggLSAyMCwgZG9jLmludGVybmFsLnBhZ2VTaXplLmhlaWdodCAtIDEwLCB7IGFsaWduOiAncmlnaHQnIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBkb2Muc2F2ZShgUmVsZXZlXyR7dGhpcy5tb250aERhdGEubW9udGhOYW1lfV8ke3RoaXMueWVhcn0ucGRmYCk7XG4gICAgICAgIH0sXG4gICAgfSxcbn07XG48L3NjcmlwdD5cblxuPHN0eWxlIHNjb3BlZD5cbi50ZXh0LXRydW5jYXRlIHtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG59XG48L3N0eWxlPlxuIiwiPHRlbXBsYXRlPlxuICAgIDx2LWNhcmQgY2xhc3M9XCJtb250aC1jYXJkXCIgOmNsYXNzPVwiYmFsYW5jZUNsYXNzXCIgaG92ZXIgZWxldmF0aW9uPVwiMFwiIEBjbGljaz1cIiRlbWl0KCdjbGljaycpXCI+XG4gICAgICAgIDwhLS0gQ29tcGFjdCBIZWFkZXIgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LXNwYWNlLWJldHdlZW4gYWxpZ24tY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vbnRoLWluZm9cIj5cbiAgICAgICAgICAgICAgICAgICAgPHYtaWNvbiBzbWFsbCA6Y29sb3I9XCJiYWxhbmNlSWNvbkNvbG9yXCIgY2xhc3M9XCJtci0yXCI+bWRpLWNhbGVuZGFyLW1vbnRoLW91dGxpbmU8L3YtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtb250aC1uYW1lXCI+e3sgbW9udGgubW9udGhOYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXItYmFkZ2VzXCI+XG4gICAgICAgICAgICAgICAgICAgIDx2LWNoaXAgeC1zbWFsbCBvdXRsaW5lZCBjb2xvcj1cImdyZXkgZGFya2VuLTFcIiBjbGFzcz1cInB4LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IG1vbnRoLnRyYW5zYWN0aW9uQ291bnQgfX0gb3B7eyBtb250aC50cmFuc2FjdGlvbkNvdW50ID4gMSA/ICdzJyA6ICcnIH19XG4gICAgICAgICAgICAgICAgICAgIDwvdi1jaGlwPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDx2LWNhcmQtdGV4dCBjbGFzcz1cInBhLTNcIj5cbiAgICAgICAgICAgIDwhLS0gQmFsYW5jZSBHcmlkIC0tPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhbGFuY2Utc2VjdGlvblwiPlxuICAgICAgICAgICAgICAgIDwhLS0gT3BlbmluZyBCYWxhbmNlIC0gQ29tcGFjdCAtLT5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFsYW5jZS1yb3cgc3VidGxlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWwtdGV4dFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHYtaWNvbiB4LXNtYWxsIGNsYXNzPVwibXItMVwiPm1kaS1hcnJvdy1kb3duPC92LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICBJbml0aWFsXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZS10ZXh0XCI+e3sgZm9ybWF0TW9uZXkobW9udGgub3BlbmluZ0JhbGFuY2UpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPCEtLSBDcmVkaXQvRGViaXQgaW4gbWluaW1hbCBib3hlcyAtLT5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljcy1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1pdGVtIHBvc2l0aXZlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8di1pY29uIHNtYWxsIGNsYXNzPVwibWV0cmljLWljb25cIj5tZGktcGx1czwvdi1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLXZhbHVlXCI+e3sgZm9ybWF0TW9uZXkobW9udGgudG90YWxDcmVkaXQpIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1sYWJlbFwiPkNyw6lkaXQ8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLWl0ZW0gbmVnYXRpdmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx2LWljb24gc21hbGwgY2xhc3M9XCJtZXRyaWMtaWNvblwiPm1kaS1taW51czwvdi1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLXZhbHVlXCI+e3sgZm9ybWF0TW9uZXkobW9udGgudG90YWxEZWJpdCkgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLWxhYmVsXCI+RMOpYml0PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8IS0tIENsb3NpbmcgQmFsYW5jZSAtIFByb21pbmVudCBidXQgYmFsYW5jZWQgLS0+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhbGFuY2Utcm93IG1haW5cIiA6Y2xhc3M9XCJiYWxhbmNlQ2xhc3NcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbC10ZXh0IGZvbnQtd2VpZ2h0LW1lZGl1bVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHYtaWNvbiBzbWFsbCA6Y29sb3I9XCJiYWxhbmNlSWNvbkNvbG9yXCIgY2xhc3M9XCJtci0xXCI+bWRpLXdhbGxldC1vdXRsaW5lPC92LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICBTb2xkZSBGaW5hbFxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWUtdGV4dCBtYWluLXZhbHVlXCIgOmNsYXNzPVwiYmFsYW5jZUNvbG9yQ2xhc3NcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGZvcm1hdE1vbmV5KG1vbnRoLmNsb3NpbmdCYWxhbmNlKSB9fVxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8IS0tIE5ldCBDaGFuZ2UgLSBTdWJ0bGUgaW5kaWNhdG9yIC0tPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuZXQtaW5kaWNhdG9yXCIgdi1pZj1cIm5ldENoYW5nZSAhPT0gMFwiPlxuICAgICAgICAgICAgICAgICAgICA8di1pY29uIHgtc21hbGwgOmNvbG9yPVwibmV0Q2hhbmdlID4gMCA/ICdzdWNjZXNzJyA6ICdlcnJvcidcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IG5ldENoYW5nZSA+IDAgPyAnbWRpLXRyZW5kaW5nLXVwJyA6ICdtZGktdHJlbmRpbmctZG93bicgfX1cbiAgICAgICAgICAgICAgICAgICAgPC92LWljb24+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIDpjbGFzcz1cIm5ldENoYW5nZSA+IDAgPyAnc3VjY2Vzcy0tdGV4dCcgOiAnZXJyb3ItLXRleHQnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBuZXRDaGFuZ2UgPiAwID8gJysnIDogJycgfX17eyBmb3JtYXRNb25leShNYXRoLmFicyhuZXRDaGFuZ2UpKSB9fVxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC92LWNhcmQtdGV4dD5cblxuICAgICAgICA8IS0tIFN0YXR1cyBpbmRpY2F0b3Igc3RyaXAgYXQgYm90dG9tIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic3RhdHVzLXN0cmlwXCIgOmNsYXNzPVwiYmFsYW5jZUNsYXNzXCI+PC9kaXY+XG4gICAgPC92LWNhcmQ+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0PlxuZXhwb3J0IGRlZmF1bHQge1xuICAgIHByb3BzOiB7XG4gICAgICAgIG1vbnRoOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuXG4gICAgY29tcHV0ZWQ6IHtcbiAgICAgICAgYmFsYW5jZUNsYXNzKCkge1xuICAgICAgICAgICAgY29uc3QgYmFsYW5jZSA9IHRoaXMubW9udGguY2xvc2luZ0JhbGFuY2UgfHwgdGhpcy5tb250aC5uZXRCYWxhbmNlIHx8IDA7XG4gICAgICAgICAgICBpZiAoYmFsYW5jZSA+IDApIHJldHVybiAncG9zaXRpdmUnO1xuICAgICAgICAgICAgaWYgKGJhbGFuY2UgPCAwKSByZXR1cm4gJ25lZ2F0aXZlJztcbiAgICAgICAgICAgIHJldHVybiAnbmV1dHJhbCc7XG4gICAgICAgIH0sXG5cbiAgICAgICAgYmFsYW5jZUNvbG9yQ2xhc3MoKSB7XG4gICAgICAgICAgICBjb25zdCBiYWxhbmNlID0gdGhpcy5tb250aC5jbG9zaW5nQmFsYW5jZSB8fCB0aGlzLm1vbnRoLm5ldEJhbGFuY2UgfHwgMDtcbiAgICAgICAgICAgIGlmIChiYWxhbmNlID4gMCkgcmV0dXJuICdzdWNjZXNzLS10ZXh0JztcbiAgICAgICAgICAgIGlmIChiYWxhbmNlIDwgMCkgcmV0dXJuICdlcnJvci0tdGV4dCc7XG4gICAgICAgICAgICByZXR1cm4gJ2dyZXktLXRleHQnO1xuICAgICAgICB9LFxuXG4gICAgICAgIGJhbGFuY2VJY29uQ29sb3IoKSB7XG4gICAgICAgICAgICBjb25zdCBiYWxhbmNlID0gdGhpcy5tb250aC5jbG9zaW5nQmFsYW5jZSB8fCB0aGlzLm1vbnRoLm5ldEJhbGFuY2UgfHwgMDtcbiAgICAgICAgICAgIGlmIChiYWxhbmNlID4gMCkgcmV0dXJuICdzdWNjZXNzJztcbiAgICAgICAgICAgIGlmIChiYWxhbmNlIDwgMCkgcmV0dXJuICdlcnJvcic7XG4gICAgICAgICAgICByZXR1cm4gJ2dyZXkgZGFya2VuLTEnO1xuICAgICAgICB9LFxuXG4gICAgICAgIG5ldENoYW5nZSgpIHtcbiAgICAgICAgICAgIHJldHVybiAodGhpcy5tb250aC50b3RhbENyZWRpdCB8fCAwKSAtICh0aGlzLm1vbnRoLnRvdGFsRGViaXQgfHwgMCk7XG4gICAgICAgIH0sXG4gICAgfSxcblxuICAgIG1ldGhvZHM6IHtcbiAgICAgICAgZm9ybWF0TW9uZXkoYW1vdW50KSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IEludGwuTnVtYmVyRm9ybWF0KCdmci1GUicsIHtcbiAgICAgICAgICAgICAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDIsXG4gICAgICAgICAgICAgICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAyLFxuICAgICAgICAgICAgfSkuZm9ybWF0KGFtb3VudCB8fCAwKSArICcgREgnO1xuICAgICAgICB9LFxuICAgIH0sXG59O1xuPC9zY3JpcHQ+XG5cbjxzdHlsZSBzY29wZWQ+XG4ubW9udGgtY2FyZCB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjI1cyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO1xuICAgIGJvcmRlci1yYWRpdXM6IDEycHg7XG4gICAgYm9yZGVyOiAxLjVweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMDgpO1xuICAgIGJhY2tncm91bmQ6IHdoaXRlO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4ubW9udGgtY2FyZDpob3ZlciB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC00cHgpO1xuICAgIGJveC1zaGFkb3c6IDAgOHB4IDI0cHggcmdiYSgwLCAwLCAwLCAwLjEyKSAhaW1wb3J0YW50O1xuICAgIGJvcmRlci1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjE1KTtcbn1cblxuLyogQ29tcGFjdCBIZWFkZXIgKi9cbi5jYXJkLWhlYWRlciB7XG4gICAgcGFkZGluZzogMTJweCAxNnB4O1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC4wMik7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4wNik7XG59XG5cbi5tb250aC1pbmZvIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbi5tb250aC1uYW1lIHtcbiAgICBmb250LXNpemU6IDFyZW07XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjg3KTtcbn1cblxuLmhlYWRlci1iYWRnZXMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZ2FwOiA2cHg7XG59XG5cbi8qIEJhbGFuY2UgU2VjdGlvbiAqL1xuLmJhbGFuY2Utc2VjdGlvbiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogMTBweDtcbn1cblxuLmJhbGFuY2Utcm93IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIHBhZGRpbmc6IDZweCAwO1xufVxuXG4uYmFsYW5jZS1yb3cuc3VidGxlIHtcbiAgICBmb250LXNpemU6IDAuOHJlbTtcbiAgICBvcGFjaXR5OiAwLjc7XG59XG5cbi5iYWxhbmNlLXJvdy5tYWluIHtcbiAgICBwYWRkaW5nOiAxMHB4IDEycHg7XG4gICAgbWFyZ2luOiA4cHggLTEycHg7XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC4wMik7XG59XG5cbi5sYWJlbC10ZXh0IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiA0cHg7XG4gICAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC43NSk7XG4gICAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgICBmb250LXdlaWdodDogNTAwO1xufVxuXG4udmFsdWUtdGV4dCB7XG4gICAgZm9udC1mYW1pbHk6ICdSb2JvdG8gTW9ubycsIG1vbm9zcGFjZTtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIGZvbnQtc2l6ZTogMC45NXJlbTtcbiAgICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjk1KTtcbn1cblxuLnZhbHVlLXRleHQubWFpbi12YWx1ZSB7XG4gICAgZm9udC1zaXplOiAxLjJyZW07XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICBjb2xvcjogcmdiYSgwLCAwLCAwLCAxKTtcbn1cblxuLyogTWV0cmljcyBSb3cgLSBNaW5pbWFsaXN0ICovXG4ubWV0cmljcy1yb3cge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMWZyO1xuICAgIGdhcDogOHB4O1xuICAgIG1hcmdpbjogNHB4IDA7XG59XG5cbi5tZXRyaWMtaXRlbSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogOHB4O1xuICAgIHBhZGRpbmc6IDhweDtcbiAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjAyKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycztcbn1cblxuLm1ldHJpYy1pdGVtLnBvc2l0aXZlIHtcbiAgICBib3JkZXItY29sb3I6IHJnYmEoNzYsIDE3NSwgODAsIDAuMTUpO1xufVxuXG4ubWV0cmljLWl0ZW0ubmVnYXRpdmUge1xuICAgIGJvcmRlci1jb2xvcjogcmdiYSgyNDQsIDY3LCA1NCwgMC4xNSk7XG59XG5cbi5tZXRyaWMtaWNvbiB7XG4gICAgb3BhY2l0eTogMC42O1xufVxuXG4ubWV0cmljLXZhbHVlIHtcbiAgICBmb250LXNpemU6IDAuOXJlbTtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICAgIGZvbnQtZmFtaWx5OiAnUm9ib3RvIE1vbm8nLCBtb25vc3BhY2U7XG59XG5cbi5tZXRyaWMtaXRlbS5wb3NpdGl2ZSAubWV0cmljLXZhbHVlIHtcbiAgICBjb2xvcjogIzJlN2QzMjtcbn1cblxuLm1ldHJpYy1pdGVtLm5lZ2F0aXZlIC5tZXRyaWMtdmFsdWUge1xuICAgIGNvbG9yOiAjYzYyODI4O1xufVxuXG4ubWV0cmljLWxhYmVsIHtcbiAgICBmb250LXNpemU6IDAuN3JlbTtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIGxldHRlci1zcGFjaW5nOiAwLjVweDtcbiAgICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjYpO1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG59XG5cbi8qIE5ldCBJbmRpY2F0b3IgKi9cbi5uZXQtaW5kaWNhdG9yIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgZ2FwOiA2cHg7XG4gICAgcGFkZGluZzogNHB4O1xuICAgIGZvbnQtc2l6ZTogMC44cmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG59XG5cbi8qIFN0YXR1cyBTdHJpcCBhdCBib3R0b20gKi9cbi5zdGF0dXMtc3RyaXAge1xuICAgIGhlaWdodDogM3B4O1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBib3R0b206IDA7XG4gICAgbGVmdDogMDtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcztcbn1cblxuLnN0YXR1cy1zdHJpcC5wb3NpdGl2ZSB7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDkwZGVnLCAjNjZiYjZhIDAlLCAjODFjNzg0IDEwMCUpO1xufVxuXG4uc3RhdHVzLXN0cmlwLm5lZ2F0aXZlIHtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsICNlZjUzNTAgMCUsICNlNTczNzMgMTAwJSk7XG59XG5cbi5zdGF0dXMtc3RyaXAubmV1dHJhbCB7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDkwZGVnLCAjNzg5MDljIDAlLCAjOTBhNGFlIDEwMCUpO1xufVxuXG4vKiBIb3ZlciBlZmZlY3Qgb24gc3RhdHVzIHN0cmlwICovXG4ubW9udGgtY2FyZDpob3ZlciAuc3RhdHVzLXN0cmlwIHtcbiAgICBoZWlnaHQ6IDRweDtcbn1cblxuLyogRGFyayBNb2RlIC0gU29mdGVyIGNvbG9ycyAqL1xuLnRoZW1lLS1kYXJrIC5tb250aC1jYXJkIHtcbiAgICBiYWNrZ3JvdW5kOiAjMWUxZTFlO1xuICAgIGJvcmRlci1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpO1xufVxuXG4udGhlbWUtLWRhcmsgLmNhcmQtaGVhZGVyIHtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDMpO1xuICAgIGJvcmRlci1ib3R0b20tY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOCk7XG59XG5cbi50aGVtZS0tZGFyayAubW9udGgtbmFtZSB7XG4gICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45NSk7XG59XG5cbi50aGVtZS0tZGFyayAubGFiZWwtdGV4dCB7XG4gICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC42KTtcbn1cblxuLnRoZW1lLS1kYXJrIC52YWx1ZS10ZXh0IHtcbiAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjkpO1xufVxuXG4udGhlbWUtLWRhcmsgLmJhbGFuY2Utcm93Lm1haW4ge1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNCk7XG59XG5cbi50aGVtZS0tZGFyayAubWV0cmljLWl0ZW0ge1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNCk7XG59XG5cbi50aGVtZS0tZGFyayAubWV0cmljLWl0ZW0ucG9zaXRpdmUge1xuICAgIGJvcmRlci1jb2xvcjogcmdiYSgxMjksIDE5OSwgMTMyLCAwLjIpO1xufVxuXG4udGhlbWUtLWRhcmsgLm1ldHJpYy1pdGVtLnBvc2l0aXZlIC5tZXRyaWMtdmFsdWUge1xuICAgIGNvbG9yOiAjODFjNzg0O1xufVxuXG4udGhlbWUtLWRhcmsgLm1ldHJpYy1pdGVtLm5lZ2F0aXZlIHtcbiAgICBib3JkZXItY29sb3I6IHJnYmEoMjI5LCAxMTUsIDExNSwgMC4yKTtcbn1cblxuLnRoZW1lLS1kYXJrIC5tZXRyaWMtaXRlbS5uZWdhdGl2ZSAubWV0cmljLXZhbHVlIHtcbiAgICBjb2xvcjogI2U1NzM3Mztcbn1cblxuLnRoZW1lLS1kYXJrIC5tZXRyaWMtbGFiZWwge1xuICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNCk7XG59XG5cbi50aGVtZS0tZGFyayAuc3RhdHVzLXN0cmlwLnBvc2l0aXZlIHtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsICM2NmJiNmEgMCUsICM0Y2FmNTAgMTAwJSk7XG59XG5cbi50aGVtZS0tZGFyayAuc3RhdHVzLXN0cmlwLm5lZ2F0aXZlIHtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsICNlZjUzNTAgMCUsICNmNDQzMzYgMTAwJSk7XG59XG5cbi50aGVtZS0tZGFyayAuc3RhdHVzLXN0cmlwLm5ldXRyYWwge1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgIzc4OTA5YyAwJSwgIzYwN2Q4YiAxMDAlKTtcbn1cblxuLyogUmVzcG9uc2l2ZSAqL1xuQG1lZGlhIChtYXgtd2lkdGg6IDYwMHB4KSB7XG4gICAgLmNhcmQtaGVhZGVyIHtcbiAgICAgICAgcGFkZGluZzogMTBweCAxMnB4O1xuICAgIH1cblxuICAgIC5tb250aC1uYW1lIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjk1cmVtO1xuICAgIH1cblxuICAgIC5tZXRyaWNzLXJvdyB7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgIH1cblxuICAgIC5tZXRyaWMtaXRlbSB7XG4gICAgICAgIHBhZGRpbmc6IDZweDtcbiAgICB9XG59XG48L3N0eWxlPlxuIiwiPHRlbXBsYXRlPlxuICA8Y2FyZC1jYXJkXG4gICAgOmljb249XCJpY29uXCJcbiAgICA6YXZhdGFyPVwiYXZhdGFyXCJcbiAgIFxuICAgXG4gICAgY2xhc3M9XCJ2LWNhcmQtLW1hdGVyaWFsLXN0YXRzXCJcbiAgICB2LWJpbmQ9XCIkYXR0cnNcIlxuICAgIHYtb249XCIkbGlzdGVuZXJzXCJcbiAgICA6Y29sb3I9XCJjb2xvclwiXG4gID5cblxuICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6YWZ0ZXItaGVhZGluZz5cbiAgICAgIDxkaXYgY2xhc3M9XCJtbC1hdXRvIHRleHQtcmlnaHRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImJvZHktMyBncmV5LS10ZXh0IGZvbnQtd2VpZ2h0LWxpZ2h0XCIgdi10ZXh0PVwidGl0bGVcIiAvPlxuXG4gICAgICAgIDxoMyBjbGFzcz1cIiAgZm9udC13ZWlnaHQtbGlnaHQgdGV4dC0tcHJpbWFyeVwiPlxuICAgICAgICAgIHt7IHZhbHVlIH19XG4gICAgICAgICAgPHNtYWxsIGNsYXNzPnt7IHNtYWxsVmFsdWUgfX08L3NtYWxsPlxuICAgICAgICAgIDxicj5cbiAgICAgICAgICA8c21hbGwgY2xhc3Mgdi1pZj1cInZhbHVlMlwiPjxzdHJvbmc+e3sgdmFsdWUyIH19PC9zdHJvbmc+ICAobmQpICA8L3NtYWxsPlxuICAgICAgICA8L2gzPlxuICAgICAgICAgXG4gICAgICA8L2Rpdj5cbiAgICA8L3RlbXBsYXRlPlxuXG5cblxuXG4gICAgPHYtY29sIGNvbHM9XCIxMlwiIGNsYXNzPVwicHgtMFwiPlxuICAgICAgPHYtZGl2aWRlciAvPlxuICAgIDwvdi1jb2w+XG5cbiAgICBcblxuICAgIDx2LWljb24gOmNvbG9yPVwic3ViSWNvbkNvbG9yXCIgc2l6ZT1cIjE2XCIgY2xhc3M9XCJtbC0yIG1yLTFcIj57eyBzdWJJY29uIH19PC92LWljb24+XG5cblxuXG4gICAgPHYtdG9vbHRpcCB0b3Agdi1pZj1cInRvb2x0aXBcIj5cbiAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6YWN0aXZhdG9yPVwieyBvbiB9XCI+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgdi1vbj1cIm9uXCJcbiAgICAgICAgICA6Y2xhc3M9XCJzdWJUZXh0Q29sb3JcIlxuICAgICAgICAgIGNsYXNzPVwiY2FwdGlvbiBncmV5LS10ZXh0IGZvbnQtd2VpZ2h0LWxpZ2h0XCJcbiAgICAgICAgICB2LXRleHQ9XCJzdWJUZXh0XCJcbiAgICAgICAgLz5cbiAgICAgIDwvdGVtcGxhdGU+XG4gICAgICA8c3Bhbj57e3Rvb2x0aXB9fTwvc3Bhbj5cbiAgICA8L3YtdG9vbHRpcD5cblxuICAgIDxzcGFuXG4gICAgICB2LWVsc2VcbiAgICAgIDpjbGFzcz1cInN1YlRleHRDb2xvclwiXG4gICAgICBjbGFzcz1cImNhcHRpb24gZ3JleS0tdGV4dCBmb250LXdlaWdodC1saWdodFwiXG4gICAgICB2LXRleHQ9XCJzdWJUZXh0XCJcbiAgICAvPlxuICA8L2NhcmQtY2FyZD5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG5pbXBvcnQgQ2FyZCBmcm9tIFwiLi9DYXJkXCI7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbmFtZTogXCJDYXJkU3RhdHNDYXJkXCIsXG5cbiAgaW5oZXJpdEF0dHJzOiBmYWxzZSxcblxuICBwcm9wczoge1xuICAgIC4uLkNhcmQucHJvcHMsXG4gICAgXG4gICAgaWNvbjoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgfSxcbiAgICBzdWJJY29uOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiB1bmRlZmluZWQsXG4gICAgfSxcbiAgICBzdWJJY29uQ29sb3I6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6IHVuZGVmaW5lZCxcbiAgICB9LFxuICAgIHN1YlRleHRDb2xvcjoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogdW5kZWZpbmVkLFxuICAgIH0sXG4gICAgc3ViVGV4dDoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogdW5kZWZpbmVkLFxuICAgIH0sXG4gICAgdGl0bGU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6IHVuZGVmaW5lZCxcbiAgICB9LFxuICAgIHZhbHVlOiB7XG4gICAgICBcbiAgICAgIGRlZmF1bHQ6IHVuZGVmaW5lZCxcbiAgICB9LFxuICAgIHNtYWxsVmFsdWU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6IHVuZGVmaW5lZCxcbiAgICB9LFxuICAgICB2YWx1ZTI6IHtcbiAgICAgXG4gICAgICBkZWZhdWx0OiB1bmRlZmluZWQsXG4gICAgfSxcbiAgICB0b29sdGlwOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiB1bmRlZmluZWQsXG4gICAgfSxcbiAgfSxcbn07XG48L3NjcmlwdD5cblxuPHN0eWxlICBzY29wZWQ+XG4udi1jYXJkLS1tYXRlcmlhbC1zdGF0cyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtd3JhcDogd3JhcDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4udi1jYXJkLS1tYXRlcmlhbC1zdGF0cyBkaXY6Zmlyc3QtY2hpbGQge1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG59XG5cbi52LWNhcmQtLW1hdGVyaWFsLXN0YXRzIC52LWNhcmQge1xuICBib3JkZXItcmFkaXVzOiA0cHg7XG4gIGZsZXg6IDAgMSBhdXRvO1xufVxuXG4udi1jYXJkLS1tYXRlcmlhbC1zdGF0cyAudi1jYXJkX190ZXh0IHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBmbGV4OiAxIDAgY2FsYygxMDAlIC0gMTIwcHgpO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgcmlnaHQ6IDA7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG4udi1jYXJkLS1tYXRlcmlhbC1zdGF0cyAudi1jYXJkX19hY3Rpb25zIHtcbiAgZmxleDogMSAwIDEwMCU7XG59XG5cbjwvc3R5bGU+XG4iLCI8dGVtcGxhdGU+XG4gIDxjYXJkLWNhcmRcbiAgc3R5bGU9XCIgICAgbWFyZ2luLXRvcDogNTBweDtcblwiXG4gICAgOmljb249XCJpY29uXCJcbiAgICA6YXZhdGFyPVwiYXZhdGFyXCJcbiAgICBjbGFzcz1cInYtY2FyZC0tbWF0ZXJpYWwtc3RhdHNcIlxuICAgIHYtYmluZD1cIiRhdHRyc1wiXG4gICAgdi1vbj1cIiRsaXN0ZW5lcnNcIlxuICAgIDpjb2xvcj1cImNvbG9yXCJcbiAgPlxuICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6YWZ0ZXItaGVhZGluZz5cbiAgICAgIDxkaXYgY2xhc3M9XCJtbC1hdXRvIHRleHQtcmlnaHRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImJvZHktMyBncmV5LS10ZXh0IGZvbnQtd2VpZ2h0LWxpZ2h0XCIgdi10ZXh0PVwidGl0bGVcIiAvPlxuICAgICAgPC9kaXY+XG4gICAgPC90ZW1wbGF0ZT5cblxuICAgIDx2LXJvdyBjbGFzcz1cImp1c3RpZnktY2VudGVyXCI+XG4gICAgICA8di1jb2wgY29scz1cIjExXCI+XG4gICAgICAgIDxzbG90IC8+XG4gICAgICA8L3YtY29sPlxuICAgIDwvdi1yb3c+XG4gIDwvY2FyZC1jYXJkPlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdD5cbmltcG9ydCBDYXJkIGZyb20gXCIuL0NhcmRcIjtcblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiBcIkNhcmRTdGF0c0NhcmRcIixcblxuICBpbmhlcml0QXR0cnM6IGZhbHNlLFxuXG4gIHByb3BzOiB7XG4gICAgLi4uQ2FyZC5wcm9wcyxcblxuICAgIGljb246IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6IFwibWRpLW1hcC1tYXJrZXItY2lyY2xlXCIsXG4gICAgfSxcbiAgICBjb2xvcjoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogXCJzdWNjZXNzXCIsXG4gICAgfSxcblxuICAgIHRpdGxlOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiBcIlwiLFxuICAgIH0sXG4gIH0sXG59O1xuPC9zY3JpcHQ+XG5cbjxzdHlsZSAgc2NvcGVkPlxuLnYtY2FyZC0tbWF0ZXJpYWwtc3RhdHMge1xuICBmbGV4LXdyYXA6IHdyYXA7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLnYtY2FyZC0tbWF0ZXJpYWwtc3RhdHMgZGl2OmZpcnN0LWNoaWxkIHtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xufVxuXG4udi1jYXJkLS1tYXRlcmlhbC1zdGF0cyAudi1jYXJkIHtcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xuICBmbGV4OiAwIDEgYXV0bztcbn1cblxuLnYtY2FyZC0tbWF0ZXJpYWwtc3RhdHMgLnYtY2FyZF9fdGV4dCB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgZmxleDogMSAwIGNhbGMoMTAwJSAtIDEyMHB4KTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIHJpZ2h0OiAwO1xuICB3aWR0aDogMTAwJTtcbn1cblxuLnYtY2FyZC0tbWF0ZXJpYWwtc3RhdHMgLnYtY2FyZF9fYWN0aW9ucyB7XG4gIGZsZXg6IDEgMCAxMDAlO1xufVxuPC9zdHlsZT5cbiIsIlxuLnYtY2FyZC0tdGhlbWUge1xuICAmX19oZWFkZXIge1xuICAgICYudi1jYXJkIHtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICB9XG4gIH1cbn1cblxuLnYtY2FyZCB7XG4gIGJvcmRlci1yYWRpdXM6IDE2cHggIWltcG9ydGFudDtcbiAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQ7XG4gIGJveC1zaGFkb3c6IDAgMnB4IDEwcHggcmdiYSgwLCAwLCAwLCAwLjA1KTtcblxuXG59XG5cbi52LWNhcmRfX3RpdGxlLFxuLnYtY2FyZF9fdGV4dCB7XG4gIGZvbnQtZmFtaWx5OiAnSW50ZXInLCBzYW5zLXNlcmlmO1xufVxuXG4udi1jYXJkX190aXRsZSB7XG4gIGZvbnQtc2l6ZTogMS4yNXJlbTtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcblxufVxuXG4udi1jYXJkX190ZXh0IHtcbiAgZm9udC1zaXplOiAxcmVtO1xuXG59XG5cbi52LWJ0biB7XG4gIHRyYW5zaXRpb246IGFsbCAwLjI1cyBlYXNlO1xuICBib3JkZXItcmFkaXVzOiAxMnB4ICFpbXBvcnRhbnQ7XG5cbiAgJjpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjA0KSAhaW1wb3J0YW50O1xuICB9XG59XG5cbi52LWljb24ge1xuXG4gIHRyYW5zaXRpb246IGNvbG9yIDAuMjVzIGVhc2U7XG5cbiAgJjpob3ZlciB7XG4gICAgY29sb3I6ICMxOTc2ZDIgIWltcG9ydGFudDtcbiAgfVxufVxuXG4udi1kaWFsb2cgLnYtY2FyZCB7XG4gIGJvcmRlci1yYWRpdXM6IDE2cHggIWltcG9ydGFudDtcbiAgYm94LXNoYWRvdzogMCAxMHB4IDMwcHggcmdiYSgwLCAwLCAwLCAwLjEyKTtcbn1cbiIsIjx0ZW1wbGF0ZT5cbiAgICA8di1jYXJkIGVsZXZhdGlvbj1cIjNcIj5cbiAgICAgICAgPHYtY2FyZC10aXRsZSBjbGFzcz1cImQtZmxleCBhbGlnbi1jZW50ZXJcIj5cbiAgICAgICAgICAgIDx2LWljb24gbGVmdCBjb2xvcj1cInByaW1hcnlcIj5tZGktdmlldy1kYXNoYm9hcmQ8L3YtaWNvbj5cbiAgICAgICAgICAgIHt7IFQudGl0bGUgfX1cbiAgICAgICAgICAgIDx2LXNwYWNlcj48L3Ytc3BhY2VyPlxuICAgICAgICAgICAgPHYtYnRuIGljb24gQGNsaWNrPVwicmVmcmVzaFwiIDpsb2FkaW5nPVwibG9hZGluZ1wiPlxuICAgICAgICAgICAgICAgIDx2LWljb24+bWRpLXJlZnJlc2g8L3YtaWNvbj5cbiAgICAgICAgICAgIDwvdi1idG4+XG4gICAgICAgIDwvdi1jYXJkLXRpdGxlPlxuXG4gICAgICAgIDx2LWRpdmlkZXI+PC92LWRpdmlkZXI+XG5cbiAgICAgICAgPHYtY2FyZC10ZXh0PlxuICAgICAgICAgICAgPHYtcm93IHYtaWY9XCJsb2FkaW5nXCIganVzdGlmeT1cImNlbnRlclwiIGNsYXNzPVwicHktNVwiPlxuICAgICAgICAgICAgICAgIDx2LXByb2dyZXNzLWNpcmN1bGFyIGluZGV0ZXJtaW5hdGUgY29sb3I9XCJwcmltYXJ5XCIgc2l6ZT1cIjY0XCI+PC92LXByb2dyZXNzLWNpcmN1bGFyPlxuICAgICAgICAgICAgPC92LXJvdz5cblxuICAgICAgICAgICAgPHYtYWxlcnQgdi1lbHNlLWlmPVwiZXJyb3JcIiB0eXBlPVwiZXJyb3JcIiB0ZXh0PlxuICAgICAgICAgICAgICAgIHt7IFQuZXJyb3IgfX06IHt7IGVycm9yIH19XG4gICAgICAgICAgICA8L3YtYWxlcnQ+XG5cbiAgICAgICAgICAgIDxkaXYgdi1lbHNlLWlmPVwiZGF0YVwiPlxuICAgICAgICAgICAgICAgIDwhLS0gU3VtbWFyeSBTdGF0cyAtLT5cbiAgICAgICAgICAgICAgICA8di1yb3cgZGVuc2UgY2xhc3M9XCJtYi00XCI+XG4gICAgICAgICAgICAgICAgICAgIDx2LWNvbCBjb2xzPVwiMTJcIiBzbT1cIjZcIiBtZD1cIjRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx2LWNhcmQgY29sb3I9XCJlcnJvclwiIGRhcms+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHYtY2FyZC10ZXh0IGNsYXNzPVwidGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHYtaWNvbiBsYXJnZT5tZGktYWxlcnQtY2lyY2xlPC92LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWgzIG10LTJcIj57eyB0b3RhbElzc3VlcyB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1zdWJ0aXRsZS0xXCI+e3sgVC50b3RhbElzc3VlcyB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdi1jYXJkLXRleHQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3YtY2FyZD5cbiAgICAgICAgICAgICAgICAgICAgPC92LWNvbD5cbiAgICAgICAgICAgICAgICAgICAgPHYtY29sIGNvbHM9XCIxMlwiIHNtPVwiNlwiIG1kPVwiNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHYtY2FyZCBjb2xvcj1cIndhcm5pbmdcIiBkYXJrPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2LWNhcmQtdGV4dCBjbGFzcz1cInRleHQtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2LWljb24gbGFyZ2U+bWRpLWNhc2g8L3YtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtaDUgbXQtMlwiPnt7IGZvcm1hdEN1cnJlbmN5KHRvdGFsRGlmZmVyZW5jZSkgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtc3VidGl0bGUtMVwiPnt7IFQudG90YWxEaWZmZXJlbmNlIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92LWNhcmQtdGV4dD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdi1jYXJkPlxuICAgICAgICAgICAgICAgICAgICA8L3YtY29sPlxuICAgICAgICAgICAgICAgICAgICA8di1jb2wgY29scz1cIjEyXCIgc209XCI2XCIgbWQ9XCI0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8di1jYXJkIGNvbG9yPVwiaW5mb1wiIGRhcms+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHYtY2FyZC10ZXh0IGNsYXNzPVwidGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHYtaWNvbiBsYXJnZT5tZGktYWNjb3VudC1ncm91cDwvdi1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1oMyBtdC0yXCI+e3sgdG90YWxFbnRpdGllcyB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1zdWJ0aXRsZS0xXCI+e3sgVC5hZmZlY3RlZEVudGl0aWVzIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92LWNhcmQtdGV4dD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdi1jYXJkPlxuICAgICAgICAgICAgICAgICAgICA8L3YtY29sPlxuICAgICAgICAgICAgICAgIDwvdi1yb3c+XG5cbiAgICAgICAgICAgICAgICA8IS0tIElzc3VlcyBieSBEb2N1bWVudCBUeXBlIC0tPlxuICAgICAgICAgICAgICAgIDx2LXJvdyBkZW5zZT5cbiAgICAgICAgICAgICAgICAgICAgPHYtY29sIHYtZm9yPVwiKGl0ZW0sIGtleSkgaW4gZGF0YS5yZXBvcnRcIiA6a2V5PVwia2V5XCIgY29scz1cIjEyXCIgc209XCI2XCIgbWQ9XCI0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8di1jYXJkIDpjb2xvcj1cImdldENhcmRDb2xvcihpdGVtLmNvdW50KVwiIG91dGxpbmVkIGhvdmVyIEBjbGljaz1cInZpZXdEZXRhaWxzKGtleSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8di1jYXJkLXRpdGxlIGNsYXNzPVwic3VidGl0bGUtMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8di1pY29uIGxlZnQgOmNvbG9yPVwiZ2V0SWNvbkNvbG9yKGl0ZW0uY291bnQpXCI+e3sgZ2V0SWNvbihrZXkpIH19PC92LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IFQuZG9jdW1lbnRUeXBlc1trZXldIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92LWNhcmQtdGl0bGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHYtY2FyZC10ZXh0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8di1yb3cgZGVuc2UgYWxpZ249XCJjZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2LWNvbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1oNFwiIDpjbGFzcz1cImdldFRleHRDb2xvcihpdGVtLmNvdW50KVwiPnt7IGl0ZW0uY291bnQgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FwdGlvblwiPnt7IFQuaXNzdWVzIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3YtY29sPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHYtY29sPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXN1YnRpdGxlLTJcIiA6Y2xhc3M9XCJnZXRUZXh0Q29sb3IoaXRlbS5jb3VudClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZm9ybWF0Q3VycmVuY3koaXRlbS50b3RhbF9kaWZmKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXB0aW9uXCI+e3sgVC5kaWZmZXJlbmNlIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3YtY29sPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Ytcm93PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gQWZmZWN0ZWQgRW50aXRpZXMgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2LWRpdmlkZXIgY2xhc3M9XCJteS0yXCI+PC92LWRpdmlkZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgdi1pZj1cIml0ZW0uZW50aXRpZXMgJiYgaXRlbS5lbnRpdGllcy5sZW5ndGggPiAwXCIgY2xhc3M9XCJjYXB0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9udC13ZWlnaHQtYm9sZCBtYi0xXCI+e3sgVC50b3BBZmZlY3RlZCB9fTo8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2LWNoaXAgdi1mb3I9XCJlbnRpdHkgaW4gaXRlbS5lbnRpdGllcy5zbGljZSgwLCAzKVwiIDprZXk9XCJlbnRpdHkuaWRcIiB4LXNtYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtYS0xXCIgOmNvbG9yPVwiZW50aXR5LmNvdW50ID4gNSA/ICdlcnJvcicgOiAnd2FybmluZydcIiBkYXJrPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGVudGl0eS5uYW1lIHx8ICdOL0EnIH19ICh7eyBlbnRpdHkuY291bnQgfX0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3YtY2hpcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHYtaWY9XCJpdGVtLmVudGl0aWVzLmxlbmd0aCA+IDNcIiBjbGFzcz1cImdyZXktLXRleHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAre3sgaXRlbS5lbnRpdGllcy5sZW5ndGggLSAzIH19IHt7IFQubW9yZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiB2LWVsc2UgY2xhc3M9XCJjYXB0aW9uIGdyZXktLXRleHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IFQubm9EYXRhIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdi1jYXJkLXRleHQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3YtY2FyZD5cbiAgICAgICAgICAgICAgICAgICAgPC92LWNvbD5cbiAgICAgICAgICAgICAgICA8L3Ytcm93PlxuXG4gICAgICAgICAgICAgICAgPCEtLSBMYXN0IFVwZGF0ZWQgLS0+XG4gICAgICAgICAgICAgICAgPHYtcm93IGRlbnNlIGNsYXNzPVwibXQtM1wiPlxuICAgICAgICAgICAgICAgICAgICA8di1jb2w+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FwdGlvbiBncmV5LS10ZXh0IHRleHQtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgVC5sYXN0VXBkYXRlZCB9fToge3sgZm9ybWF0RGF0ZVRpbWUoZGF0YS50aW1lc3RhbXApIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC92LWNvbD5cbiAgICAgICAgICAgICAgICA8L3Ytcm93PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvdi1jYXJkLXRleHQ+XG4gICAgPC92LWNhcmQ+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0PlxuaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcblxuY29uc3QgdHJhbnNsYXRpb25zID0ge1xuICAgIGZyOiB7XG4gICAgICAgIHRpdGxlOiBcIvCfpJYgQW5vbWFsaWVzIETDqXRlY3TDqWVzIHBhciBsJ0lBXCIsXG4gICAgICAgIHRvdGFsSXNzdWVzOiBcIlRvdGFsIEFub21hbGllc1wiLFxuICAgICAgICB0b3RhbERpZmZlcmVuY2U6IFwiRGlmZsOpcmVuY2UgVG90YWxlXCIsXG4gICAgICAgIGFmZmVjdGVkRW50aXRpZXM6IFwiRW50aXTDqXMgSW1wYWN0w6llc1wiLFxuICAgICAgICBpc3N1ZXM6IFwiYW5vbWFsaWVzXCIsXG4gICAgICAgIGRpZmZlcmVuY2U6IFwiZGlmZsOpcmVuY2VcIixcbiAgICAgICAgdG9wQWZmZWN0ZWQ6IFwiUGx1cyBpbXBhY3TDqXNcIixcbiAgICAgICAgbW9yZTogXCJwbHVzXCIsXG4gICAgICAgIG5vRGF0YTogXCJBdWN1bmUgZG9ubsOpZVwiLFxuICAgICAgICBsYXN0VXBkYXRlZDogXCJEZXJuacOocmUgYW5hbHlzZSBwYXIgbCdJQVwiLFxuICAgICAgICBlcnJvcjogXCJFcnJldXJcIixcbiAgICAgICAgZG9jdW1lbnRUeXBlczoge1xuICAgICAgICAgICAgYm9uc192ZW50ZXM6IFwiQm9ucyBkZSBWZW50ZVwiLFxuICAgICAgICAgICAgZmFjdHVyZXNfdmVudGVzOiBcIkZhY3R1cmVzIGRlIFZlbnRlXCIsXG4gICAgICAgICAgICBhdm9pcnNfdmVudGVzOiBcIkF2b2lycyBkZSBWZW50ZVwiLFxuICAgICAgICAgICAgYm9uc19hY2hhdHM6IFwiQm9ucyBkJ0FjaGF0XCIsXG4gICAgICAgICAgICBmYWN0dXJlc19hY2hhdHM6IFwiRmFjdHVyZXMgZCdBY2hhdFwiLFxuICAgICAgICAgICAgYXZvaXJzX2FjaGF0czogXCJBdm9pcnMgZCdBY2hhdFwiXG4gICAgICAgIH1cbiAgICB9LFxuICAgIGFyOiB7XG4gICAgICAgIHRpdGxlOiBcIvCfpJYg2KfZhNmF2LTYp9mD2YQg2KfZhNmF2YPYqti02YHYqSDYqNin2YTYsNmD2KfYoSDYp9mE2KfYtdi32YbYp9i52YpcIixcbiAgICAgICAgdG90YWxJc3N1ZXM6IFwi2KXYrNmF2KfZhNmKINin2YTZhdi02KfZg9mEXCIsXG4gICAgICAgIHRvdGFsRGlmZmVyZW5jZTogXCLYp9mE2YHYsdmCINin2YTYpdis2YXYp9mE2YpcIixcbiAgICAgICAgYWZmZWN0ZWRFbnRpdGllczogXCLYp9mE2KzZh9in2Kog2KfZhNmF2KrYo9ir2LHYqVwiLFxuICAgICAgICBpc3N1ZXM6IFwi2YXYtNin2YPZhFwiLFxuICAgICAgICBkaWZmZXJlbmNlOiBcItmB2LHZglwiLFxuICAgICAgICB0b3BBZmZlY3RlZDogXCLYp9mE2KPZg9ir2LEg2KrYo9ir2LHYp9mLXCIsXG4gICAgICAgIG1vcmU6IFwi2KfZhNmF2LLZitivXCIsXG4gICAgICAgIG5vRGF0YTogXCLZhNinINiq2YjYrNivINio2YrYp9mG2KfYqlwiLFxuICAgICAgICBsYXN0VXBkYXRlZDogXCLYotiu2LEg2KrYrdmE2YrZhCDYrdiz2KfYqCDYp9mE2LDZg9in2KEg2KfZhNin2LXYt9mG2KfYudmKXCIsXG4gICAgICAgIGVycm9yOiBcItiu2LfYo1wiLFxuICAgICAgICBkb2N1bWVudFR5cGVzOiB7XG4gICAgICAgICAgICBib25zX3ZlbnRlczogXCLZiNi12YjZhNin2Kog2KfZhNio2YrYuVwiLFxuICAgICAgICAgICAgZmFjdHVyZXNfdmVudGVzOiBcItmB2YjYp9iq2YrYsSDYp9mE2KjZiti5XCIsXG4gICAgICAgICAgICBhdm9pcnNfdmVudGVzOiBcItij2YHZiNin2LEg2KfZhNio2YrYuVwiLFxuICAgICAgICAgICAgYm9uc19hY2hhdHM6IFwi2YjYtdmI2YTYp9iqINin2YTYtNix2KfYoVwiLFxuICAgICAgICAgICAgZmFjdHVyZXNfYWNoYXRzOiBcItmB2YjYp9iq2YrYsSDYp9mE2LTYsdin2KFcIixcbiAgICAgICAgICAgIGF2b2lyc19hY2hhdHM6IFwi2KPZgdmI2KfYsSDYp9mE2LTYsdin2KFcIlxuICAgICAgICB9XG4gICAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQge1xuICAgIHByb3BzOiB7XG4gICAgICAgIGxhbmc6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIGRlZmF1bHQ6ICdmcidcbiAgICAgICAgfVxuICAgIH0sXG4gICAgZGF0YSgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGxvYWRpbmc6IGZhbHNlLFxuICAgICAgICAgICAgZXJyb3I6IG51bGwsXG4gICAgICAgICAgICBkYXRhOiBudWxsXG4gICAgICAgIH07XG4gICAgfSxcbiAgICBjb21wdXRlZDoge1xuICAgICAgICBUKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRyYW5zbGF0aW9uc1t0aGlzLmxhbmddIHx8IHRyYW5zbGF0aW9ucy5mcjtcbiAgICAgICAgfSxcbiAgICAgICAgdG90YWxJc3N1ZXMoKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuZGF0YSB8fCAhdGhpcy5kYXRhLnJlcG9ydCkgcmV0dXJuIDA7XG4gICAgICAgICAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyh0aGlzLmRhdGEucmVwb3J0KS5yZWR1Y2UoKHN1bSwgaXRlbSkgPT4gc3VtICsgaXRlbS5jb3VudCwgMCk7XG4gICAgICAgIH0sXG4gICAgICAgIHRvdGFsRGlmZmVyZW5jZSgpIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5kYXRhIHx8ICF0aGlzLmRhdGEucmVwb3J0KSByZXR1cm4gMDtcbiAgICAgICAgICAgIHJldHVybiBPYmplY3QudmFsdWVzKHRoaXMuZGF0YS5yZXBvcnQpLnJlZHVjZSgoc3VtLCBpdGVtKSA9PiBzdW0gKyBpdGVtLnRvdGFsX2RpZmYsIDApO1xuICAgICAgICB9LFxuICAgICAgICB0b3RhbEVudGl0aWVzKCkge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmRhdGEgfHwgIXRoaXMuZGF0YS5yZXBvcnQpIHJldHVybiAwO1xuICAgICAgICAgICAgY29uc3QgYWxsRW50aXRpZXMgPSBuZXcgU2V0KCk7XG4gICAgICAgICAgICBPYmplY3QudmFsdWVzKHRoaXMuZGF0YS5yZXBvcnQpLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0uZW50aXRpZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5lbnRpdGllcy5mb3JFYWNoKGVudGl0eSA9PiBhbGxFbnRpdGllcy5hZGQoZW50aXR5LmlkKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gYWxsRW50aXRpZXMuc2l6ZTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgbWV0aG9kczoge1xuICAgICAgICBmb3JtYXRDdXJyZW5jeSh2YWx1ZSkge1xuICAgICAgICAgICAgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQpIHJldHVybiAnMC4wMCc7XG4gICAgICAgICAgICBjb25zdCBudW1iZXIgPSBwYXJzZUZsb2F0KHZhbHVlKTtcbiAgICAgICAgICAgIGlmIChpc05hTihudW1iZXIpKSByZXR1cm4gJzAuMDAnO1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlci50b0ZpeGVkKDIpLnJlcGxhY2UoL1xcZCg/PShcXGR7M30pK1xcLikvZywgJyQmLCcpO1xuICAgICAgICB9LFxuICAgICAgICBmb3JtYXREYXRlVGltZSh0aW1lc3RhbXApIHtcbiAgICAgICAgICAgIGlmICghdGltZXN0YW1wKSByZXR1cm4gJ04vQSc7XG4gICAgICAgICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUodGltZXN0YW1wKTtcbiAgICAgICAgICAgIHJldHVybiBkYXRlLnRvTG9jYWxlU3RyaW5nKHRoaXMubGFuZyA9PT0gJ2FyJyA/ICdhci1NQScgOiAnZnItRlInKTtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0Q2FyZENvbG9yKGNvdW50KSB7XG4gICAgICAgICAgICBpZiAoY291bnQgPT09IDApIHJldHVybiAnc3VjY2VzcyBsaWdodGVuLTUnO1xuICAgICAgICAgICAgaWYgKGNvdW50IDwgNSkgcmV0dXJuICd3YXJuaW5nIGxpZ2h0ZW4tNSc7XG4gICAgICAgICAgICByZXR1cm4gJ2Vycm9yIGxpZ2h0ZW4tNSc7XG4gICAgICAgIH0sXG4gICAgICAgIGdldEljb25Db2xvcihjb3VudCkge1xuICAgICAgICAgICAgaWYgKGNvdW50ID09PSAwKSByZXR1cm4gJ3N1Y2Nlc3MnO1xuICAgICAgICAgICAgaWYgKGNvdW50IDwgNSkgcmV0dXJuICd3YXJuaW5nJztcbiAgICAgICAgICAgIHJldHVybiAnZXJyb3InO1xuICAgICAgICB9LFxuICAgICAgICBnZXRUZXh0Q29sb3IoY291bnQpIHtcbiAgICAgICAgICAgIGlmIChjb3VudCA9PT0gMCkgcmV0dXJuICdzdWNjZXNzLS10ZXh0JztcbiAgICAgICAgICAgIGlmIChjb3VudCA8IDUpIHJldHVybiAnd2FybmluZy0tdGV4dCc7XG4gICAgICAgICAgICByZXR1cm4gJ2Vycm9yLS10ZXh0IHRleHQtLWRhcmtlbi0yJztcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0SWNvbihrZXkpIHtcbiAgICAgICAgICAgIGNvbnN0IGljb25zID0ge1xuICAgICAgICAgICAgICAgIGJvbnNfdmVudGVzOiAnbWRpLXJlY2VpcHQnLFxuICAgICAgICAgICAgICAgIGZhY3R1cmVzX3ZlbnRlczogJ21kaS1maWxlLWRvY3VtZW50JyxcbiAgICAgICAgICAgICAgICBhdm9pcnNfdmVudGVzOiAnbWRpLWZpbGUtY2FuY2VsJyxcbiAgICAgICAgICAgICAgICBib25zX2FjaGF0czogJ21kaS1yZWNlaXB0LXRleHQnLFxuICAgICAgICAgICAgICAgIGZhY3R1cmVzX2FjaGF0czogJ21kaS1maWxlLWRvY3VtZW50LW91dGxpbmUnLFxuICAgICAgICAgICAgICAgIGF2b2lyc19hY2hhdHM6ICdtZGktZmlsZS1jYW5jZWwtb3V0bGluZSdcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICByZXR1cm4gaWNvbnNba2V5XSB8fCAnbWRpLWZpbGUnO1xuICAgICAgICB9LFxuICAgICAgICBhc3luYyBsb2FkRGF0YSgpIHtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmVycm9yID0gbnVsbDtcblxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGF4aW9zLmdldCgnL2FuYWx5c2UvY2hlY2snKTtcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UuZGF0YS5zdGF0dXMgPT09ICdzdWNjZXNzJykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGEgPSByZXNwb25zZS5kYXRhO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihyZXNwb25zZS5kYXRhLm1lc3NhZ2UgfHwgJ0ZhaWxlZCB0byBsb2FkIGRhdGEnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGxvYWRpbmcgb3ZlcnZpZXc6JywgZXJyb3IpO1xuICAgICAgICAgICAgICAgIHRoaXMuZXJyb3IgPSBlcnJvci5yZXNwb25zZT8uZGF0YT8ubWVzc2FnZSB8fCBlcnJvci5tZXNzYWdlO1xuICAgICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgcmVmcmVzaCgpIHtcbiAgICAgICAgICAgIHRoaXMubG9hZERhdGEoKTtcbiAgICAgICAgfSxcbiAgICAgICAgdmlld0RldGFpbHMoZG9jdW1lbnRUeXBlKSB7XG4gICAgICAgICAgICB0aGlzLiRlbWl0KCd2aWV3LWRldGFpbHMnLCBkb2N1bWVudFR5cGUpO1xuICAgICAgICB9XG4gICAgfSxcbiAgICBtb3VudGVkKCkge1xuICAgICAgICB0aGlzLmxvYWREYXRhKCk7XG4gICAgfVxufTtcbjwvc2NyaXB0PlxuXG48c3R5bGUgc2NvcGVkPlxuLnYtY2FyZDpob3ZlciB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlLWluLW91dDtcbn1cbjwvc3R5bGU+XG4iLCI8dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6c3R5bGU9XCJzdHlsZXNcIlxuICAgIDpjbGFzcz1cImNsYXNzZXNcIlxuICAgIGNsYXNzPVwidi1vZmZzZXRcIlxuICA+XG4gICAgPHNsb3QgLz5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0PlxuZXhwb3J0IGRlZmF1bHQge1xuICBwcm9wczoge1xuICAgIGZ1bGxXaWR0aDoge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfSxcbiAgICBvZmZzZXQ6IHtcbiAgICAgIHR5cGU6IFtOdW1iZXIsIFN0cmluZ10sXG4gICAgICBkZWZhdWx0OiAwXG4gICAgfVxuICB9LFxuICBjb21wdXRlZDoge1xuICAgIGNsYXNzZXMgKCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgJ3Ytb2Zmc2V0LS1mdWxsLXdpZHRoJzogdGhpcy5mdWxsV2lkdGhcbiAgICAgIH1cbiAgICB9LFxuICAgIHN0eWxlcyAoKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0b3A6IGAtJHt0aGlzLm9mZnNldH1weGAsXG4gICAgICAgIG1hcmdpbkJvdHRvbTogYC0ke3RoaXMub2Zmc2V0fXB4YFxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuPC9zY3JpcHQ+XG5cbjxzdHlsZT5cbi52LW9mZnNldCB7XG4gIG1hcmdpbjogMCBhdXRvO1xuICBtYXgtd2lkdGg6IGNhbGMoMTAwJSAtIDMycHgpO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG4udi1vZmZzZXQtLWZ1bGwtd2lkdGgge1xuICBtYXgtd2lkdGg6IDEwMCU7XG59XG48L3N0eWxlPiIsIjx0ZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cInctMTAwXCI+XG4gICAgPHYtY2FyZC10aXRsZSBjbGFzcz1cInBiLTBcIj5cbiAgICAgIDx2LXJvdyBjbGFzcz1cImFsaWduLWNlbnRlclwiIGRlbnNlPlxuICAgICAgICA8IS0tIEdsb2JhbCBTZWFyY2ggLS0+XG4gICAgICAgIDx2LWNvbCBjb2xzPVwiMTBcIiA6bWQ9XCJzaG93X2V4cGFuZCA/IDggOiAxMVwiIGNsYXNzPVwib3JkZXItMVwiPlxuICAgICAgICAgIDx2LWNvbWJvYm94IGRlbnNlIG91dGxpbmVkIGhpZGUtZGV0YWlscyBwcmVwZW5kLWlubmVyLWljb249XCJtZGktbWFnbmlmeVwiIGFwcGVuZC1pY29uPVwiXCJcbiAgICAgICAgICAgIDpsYWJlbD1cIiR0KCdyZWNoZXJjaGUgZ2xvYmFsJylcIiA6aGludD1cIiR0KCdVdGlsaXPDqSBwb3VyIGxhIHJlY2hlcmNoZSBnw6luw6lyYWxlJylcIiB2LW1vZGVsPVwic2VhcmNoR2xvYmFsX2F1dG9cIlxuICAgICAgICAgICAgOml0ZW1zPVwiaXRlbXNfXCIgbXVsdGlwbGUgY2xlYXJhYmxlIGNoaXBzIHNtYWxsLWNoaXBzIGNsYXNzPVwiZm9udC13ZWlnaHQtYm9sZFwiPlxuICAgICAgICAgICAgPHRlbXBsYXRlIHYtc2xvdDpzZWxlY3Rpb249XCJkYXRhXCI+XG4gICAgICAgICAgICAgIDx2LWNoaXAgOmtleT1cIkpTT04uc3RyaW5naWZ5KGRhdGEuaXRlbSlcIiB2LWJpbmQ9XCJkYXRhLmF0dHJzXCIgOmlucHV0LXZhbHVlPVwiZGF0YS5zZWxlY3RlZFwiXG4gICAgICAgICAgICAgICAgOmRpc2FibGVkPVwiZGF0YS5kaXNhYmxlZFwiIEBjbGljazpjbG9zZT1cImRhdGEucGFyZW50LnNlbGVjdEl0ZW0oZGF0YS5pdGVtKVwiIHNtYWxsIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgdGV4dC1jb2xvcj1cIndoaXRlXCI+XG4gICAgICAgICAgICAgICAgPHYtYXZhdGFyIGNsYXNzPVwid2hpdGUgcHJpbWFyeS0tdGV4dFwiIGxlZnQgdi10ZXh0PVwiZGF0YS5pdGVtLnNsaWNlKDAsIDEpLnRvVXBwZXJDYXNlKClcIj48L3YtYXZhdGFyPlxuICAgICAgICAgICAgICAgIHt7IGRhdGEuaXRlbSB9fVxuICAgICAgICAgICAgICA8L3YtY2hpcD5cbiAgICAgICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgICAgPC92LWNvbWJvYm94PlxuICAgICAgICA8L3YtY29sPlxuXG4gICAgICAgIDwhLS0gU2V0dGluZ3MgQnV0dG9uIChNb3ZlZCB0byBiZSBhZGphY2VudCB0byBHbG9iYWwgU2VhcmNoIG9uIG1vYmlsZSkgLS0+XG4gICAgICAgIDx2LWNvbCBjb2xzPVwiMlwiIG1kPVwiMVwiIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktZW5kIG9yZGVyLTIgb3JkZXItbWQtM1wiPlxuICAgICAgICAgIDx2LXRvb2x0aXAgdG9wPlxuICAgICAgICAgICAgPHRlbXBsYXRlIHYtc2xvdDphY3RpdmF0b3I9XCJ7IG9uLCBhdHRycyB9XCI+XG4gICAgICAgICAgICAgIDx2LWJ0biBpY29uIGNvbG9yPVwicHJpbWFyeVwiIEBjbGljaz1cImRpYWxvZ1NldHRpbmdzID0gdHJ1ZVwiIHYtYmluZD1cImF0dHJzXCIgdi1vbj1cIm9uXCI+XG4gICAgICAgICAgICAgICAgPHYtaWNvbj5tZGktZmlsdGVyLWNvZzwvdi1pY29uPlxuICAgICAgICAgICAgICA8L3YtYnRuPlxuICAgICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgICAgIDxzcGFuPnt7ICR0KFwiRmlsdHJlcyBhdmFuY8Opc1wiKSB9fTwvc3Bhbj5cbiAgICAgICAgICA8L3YtdG9vbHRpcD5cbiAgICAgICAgPC92LWNvbD5cblxuICAgICAgICA8IS0tIElubmVyIFNlYXJjaCAtLT5cbiAgICAgICAgPHYtY29sIGNvbHM9XCIxMlwiIG1kPVwiM1wiIHYtaWY9XCJzaG93X2V4cGFuZFwiIGNsYXNzPVwib3JkZXItMyBvcmRlci1tZC0yIG10LTIgbXQtbWQtMFwiPlxuICAgICAgICAgIDx2LWNvbWJvYm94IGRlbnNlIG91dGxpbmVkIGhpZGUtZGV0YWlscyBwcmVwZW5kLWlubmVyLWljb249XCJtZGktZmlsdGVyLW91dGxpbmVcIiBhcHBlbmQtaWNvbj1cIlwiXG4gICAgICAgICAgICA6aGludD1cIiR0KCdVdGlsaXPDqSBkYW5zIGxhIHJlY2hlcmNoZSBkZSBwbHVzIGRlIGTDqXRhaWxzJylcIiA6bGFiZWw9XCIkdCgnUmVjaGVyY2hlIGludGVybmUnKVwiXG4gICAgICAgICAgICB2LW1vZGVsPVwic2VhcmNoSW5uZXJfYXV0b1wiIDppdGVtcz1cIml0ZW1zSW5uZXJfXCIgbXVsdGlwbGUgY2xlYXJhYmxlIGNoaXBzIHNtYWxsLWNoaXBzXG4gICAgICAgICAgICBzdHlsZT1cInRyYW5zZm9ybTogc2NhbGUoMC45NSk7IHRyYW5zZm9ybS1vcmlnaW46IGxlZnQgY2VudGVyO1wiPlxuICAgICAgICAgICAgPHRlbXBsYXRlIHYtc2xvdDpzZWxlY3Rpb249XCJkYXRhXCI+XG4gICAgICAgICAgICAgIDx2LWNoaXAgOmtleT1cIkpTT04uc3RyaW5naWZ5KGRhdGEuaXRlbSlcIiB2LWJpbmQ9XCJkYXRhLmF0dHJzXCIgOmlucHV0LXZhbHVlPVwiZGF0YS5zZWxlY3RlZFwiXG4gICAgICAgICAgICAgICAgOmRpc2FibGVkPVwiZGF0YS5kaXNhYmxlZFwiIEBjbGljazpjbG9zZT1cImRhdGEucGFyZW50LnNlbGVjdEl0ZW0oZGF0YS5pdGVtKVwiIHgtc21hbGw+XG4gICAgICAgICAgICAgICAgPHYtYXZhdGFyIGNsYXNzPVwiYWNjZW50IHdoaXRlLS10ZXh0XCIgbGVmdCB2LXRleHQ9XCJkYXRhLml0ZW0uc2xpY2UoMCwgMSkudG9VcHBlckNhc2UoKVwiPjwvdi1hdmF0YXI+XG4gICAgICAgICAgICAgICAge3sgZGF0YS5pdGVtIH19XG4gICAgICAgICAgICAgIDwvdi1jaGlwPlxuICAgICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgICA8L3YtY29tYm9ib3g+XG4gICAgICAgIDwvdi1jb2w+XG4gICAgICA8L3Ytcm93PlxuICAgIDwvdi1jYXJkLXRpdGxlPlxuXG4gICAgPCEtLSBEeW5hbWljIEZpbHRlcnMgQXJlYSAtLT5cbiAgICA8di1leHBhbmQtdHJhbnNpdGlvbj5cbiAgICAgIDxkaXYgdi1pZj1cInZpc2libGVGaWx0ZXJzLmxlbmd0aCA+IDBcIiBjbGFzcz1cInB4LTQgcGItMlwiPlxuICAgICAgICA8di1kaXZpZGVyIGNsYXNzPVwibXktMlwiPjwvdi1kaXZpZGVyPlxuICAgICAgICA8di1yb3cgZGVuc2U+XG4gICAgICAgICAgPHYtY29sIHYtZm9yPVwiZmllbGQgaW4gdmlzaWJsZUZpbHRlcnNcIiA6a2V5PVwiZmllbGRcIiBjb2xzPVwiMTJcIiBzbT1cIjZcIiBtZD1cIjRcIiBsZz1cIjNcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24tY2VudGVyXCI+XG4gICAgICAgICAgICAgIDxtdWx0aXNlbGVjdC1zZWxlY3RieWZpbGRlIDpjb250cm9sbGVyX3Jvb3Q9XCJuYW1ldGFibGVyb290XCIgOm5hbWU9XCJmaWVsZFwiIDpsYWJlbD1cIiR0KGZpZWxkKVwiXG4gICAgICAgICAgICAgICAgOnZhbHVlPVwiZmlsdGVyVmFsdWVzW2ZpZWxkXVwiIEBjaGFuZ2U9XCJoYW5kbGVGaWx0ZXJDaGFuZ2UoZmllbGQsICRldmVudClcIiBjbGFzcz1cImZsZXgtZ3Jvdy0xXCI+XG4gICAgICAgICAgICAgICAgPCEtLSBPdmVycmlkZSBwcmVwZW5kIHNsb3QgdG8gcmVtb3ZlIHRoZSBzdG9yZS1jb3VwbGVkIGZpbHRlciBpY29uIC0tPlxuICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6cHJlcGVuZD5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICAgICAgICA8L211bHRpc2VsZWN0LXNlbGVjdGJ5ZmlsZGU+XG5cbiAgICAgICAgICAgICAgPHYtYnRuIGljb24gc21hbGwgQGNsaWNrPVwicmVtb3ZlRmlsdGVyKGZpZWxkKVwiIGNsYXNzPVwibWwtMSBtdC0zXCI+XG4gICAgICAgICAgICAgICAgPHYtaWNvbiBzbWFsbCBjb2xvcj1cInJlZFwiPm1kaS1jbG9zZTwvdi1pY29uPlxuICAgICAgICAgICAgICA8L3YtYnRuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC92LWNvbD5cbiAgICAgICAgPC92LXJvdz5cbiAgICAgIDwvZGl2PlxuICAgIDwvdi1leHBhbmQtdHJhbnNpdGlvbj5cblxuICAgIDwhLS0gU2V0dGluZ3MgRGlhbG9nIC0tPlxuICAgIDx2LWRpYWxvZyB2LW1vZGVsPVwiZGlhbG9nU2V0dGluZ3NcIiBtYXgtd2lkdGg9XCI2MDBweFwiIHNjcm9sbGFibGU+XG4gICAgICA8di1jYXJkPlxuICAgICAgICA8di1jYXJkLXRpdGxlIGNsYXNzPVwicHJpbWFyeSB3aGl0ZS0tdGV4dFwiPlxuICAgICAgICAgIDx2LWljb24gbGVmdCBjb2xvcj1cIndoaXRlXCI+bWRpLWZpbHRlci12YXJpYW50PC92LWljb24+XG4gICAgICAgICAge3sgJHQoXCJDaG9pc2lyIGxlcyBmaWx0cmVzIGRlIHJlY2hlcmNoZVwiKSB9fVxuICAgICAgICAgIDx2LXNwYWNlcj48L3Ytc3BhY2VyPlxuICAgICAgICAgIDx2LWJ0biBpY29uIGRhcmsgQGNsaWNrPVwiZGlhbG9nU2V0dGluZ3MgPSBmYWxzZVwiPlxuICAgICAgICAgICAgPHYtaWNvbj5tZGktY2xvc2U8L3YtaWNvbj5cbiAgICAgICAgICA8L3YtYnRuPlxuICAgICAgICA8L3YtY2FyZC10aXRsZT5cblxuICAgICAgICA8di1jYXJkLXRleHQgY2xhc3M9XCJwdC00XCIgc3R5bGU9XCJoZWlnaHQ6IDQwMHB4O1wiPlxuICAgICAgICAgIDx2LXRleHQtZmllbGQgdi1tb2RlbD1cInNldHRpbmdzU2VhcmNoXCIgOmxhYmVsPVwiJHQoJ1JlY2hlcmNoZXIgdW4gY2hhbXAuLi4nKVwiIHByZXBlbmQtaW5uZXItaWNvbj1cIm1kaS1tYWduaWZ5XCJcbiAgICAgICAgICAgIG91dGxpbmVkIGRlbnNlIGNsZWFyYWJsZSBjbGFzcz1cIm1iLTJcIj48L3YtdGV4dC1maWVsZD5cblxuICAgICAgICAgIDx2LWxpc3QgZGVuc2U+XG4gICAgICAgICAgICA8dGVtcGxhdGUgdi1mb3I9XCIoaGVhZGVyLCBpKSBpbiBmaWx0ZXJlZEhlYWRlcnNcIj5cbiAgICAgICAgICAgICAgPHYtbGlzdC1pdGVtIDprZXk9XCJgaGVhZGVyLSR7aX1gXCI+XG4gICAgICAgICAgICAgICAgPHYtbGlzdC1pdGVtLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICA8di1saXN0LWl0ZW0tdGl0bGUgY2xhc3M9XCJmb250LXdlaWdodC1tZWRpdW1cIj57eyBoZWFkZXIudGV4dCB9fTwvdi1saXN0LWl0ZW0tdGl0bGU+XG4gICAgICAgICAgICAgICAgICA8di1saXN0LWl0ZW0tc3VidGl0bGUgY2xhc3M9XCJjYXB0aW9uIGdyZXktLXRleHRcIj57eyBoZWFkZXIudmFsdWUgfX08L3YtbGlzdC1pdGVtLXN1YnRpdGxlPlxuICAgICAgICAgICAgICAgIDwvdi1saXN0LWl0ZW0tY29udGVudD5cblxuICAgICAgICAgICAgICAgIDx2LWxpc3QtaXRlbS1hY3Rpb24gY2xhc3M9XCJkLWZsZXggZmxleC1yb3cgYWxpZ24tY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICA8IS0tIEZpbHRlciBUb2dnbGUgLS0+XG4gICAgICAgICAgICAgICAgICA8di10b29sdGlwIGJvdHRvbSB2LWlmPVwiaXNGaWx0ZXJhYmxlKGhlYWRlci52YWx1ZSlcIj5cbiAgICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlIHYtc2xvdDphY3RpdmF0b3I9XCJ7IG9uLCBhdHRycyB9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHYtYnRuIGljb24gc21hbGwgQGNsaWNrPVwidG9nZ2xlRmlsdGVyKGhlYWRlci52YWx1ZSlcIiB2LWJpbmQ9XCJhdHRyc1wiIHYtb249XCJvblwiIGNsYXNzPVwibXItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHYtaWNvbiA6Y29sb3I9XCJpc0ZpbHRlckFjdGl2ZShoZWFkZXIudmFsdWUpID8gJ3ByaW1hcnknIDogJ2dyZXkgbGlnaHRlbi0xJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpc0ZpbHRlckFjdGl2ZShoZWFkZXIudmFsdWUpID8gJ21kaS1maWx0ZXInIDogJ21kaS1maWx0ZXItb3V0bGluZScgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdi1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdi1idG4+XG4gICAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGlzRmlsdGVyQWN0aXZlKGhlYWRlci52YWx1ZSkgPyAkdCgnTWFzcXVlciBsZSBmaWx0cmUnKSA6ICR0KCdBZmZpY2hlciBsZSBmaWx0cmUnKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvdi10b29sdGlwPlxuXG4gICAgICAgICAgICAgICAgICA8IS0tIFZpc2liaWxpdHkgVG9nZ2xlIC0tPlxuICAgICAgICAgICAgICAgICAgPHYtdG9vbHRpcCBib3R0b20+XG4gICAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6YWN0aXZhdG9yPVwieyBvbiwgYXR0cnMgfVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDx2LWJ0biBpY29uIHNtYWxsIEBjbGljaz1cInRvZ2dsZUNvbHVtblZpc2liaWxpdHkoaGVhZGVyLnZhbHVlKVwiIHYtYmluZD1cImF0dHJzXCIgdi1vbj1cIm9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8di1pY29uIDpjb2xvcj1cImlzQ29sdW1uVmlzaWJsZShoZWFkZXIudmFsdWUpID8gJ3N1Y2Nlc3MnIDogJ2dyZXkgbGlnaHRlbi0xJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpc0NvbHVtblZpc2libGUoaGVhZGVyLnZhbHVlKSA/ICdtZGktZXllJyA6ICdtZGktZXllLW9mZicgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdi1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdi1idG4+XG4gICAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGlzQ29sdW1uVmlzaWJsZShoZWFkZXIudmFsdWUpID8gJHQoJ01hc3F1ZXIgbGEgY29sb25uZScpIDogJHQoJ0FmZmljaGVyIGxhIGNvbG9ubmUnKVxuICAgICAgICAgICAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC92LXRvb2x0aXA+XG4gICAgICAgICAgICAgICAgPC92LWxpc3QtaXRlbS1hY3Rpb24+XG4gICAgICAgICAgICAgIDwvdi1saXN0LWl0ZW0+XG4gICAgICAgICAgICAgIDx2LWRpdmlkZXIgdi1pZj1cImkgPCBmaWx0ZXJlZEhlYWRlcnMubGVuZ3RoIC0gMVwiIDprZXk9XCJgZGl2aWRlci0ke2l9YFwiPjwvdi1kaXZpZGVyPlxuICAgICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgICA8L3YtbGlzdD5cbiAgICAgICAgPC92LWNhcmQtdGV4dD5cblxuICAgICAgICA8di1kaXZpZGVyPjwvdi1kaXZpZGVyPlxuXG4gICAgICAgIDx2LWNhcmQtYWN0aW9ucz5cbiAgICAgICAgICA8di1zcGFjZXI+PC92LXNwYWNlcj5cbiAgICAgICAgICA8di1idG4gdGV4dCBjb2xvcj1cInByaW1hcnlcIiBAY2xpY2s9XCJkaWFsb2dTZXR0aW5ncyA9IGZhbHNlXCI+e3sgJHQoJ0Zlcm1lcicpIH19PC92LWJ0bj5cbiAgICAgICAgPC92LWNhcmQtYWN0aW9ucz5cbiAgICAgIDwvdi1jYXJkPlxuICAgIDwvdi1kaWFsb2c+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdD5cbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7IC8vIEFzc3VtaW5nIGxvZGFzaCBpcyBhdmFpbGFibGUsIG90aGVyd2lzZSB1c2UgY3VzdG9tIGRlYm91bmNlXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgcHJvcHM6IHtcbiAgICBuYW1ldGFibGVyb290OiB7fSxcbiAgICB0aXRsZToge30sXG4gICAgc2hvd19leHBhbmQ6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiB0cnVlLFxuICAgIH0sXG4gIH0sXG4gIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNlYXJjaEdsb2JhbDogXCJcIixcbiAgICAgIHNlYXJjaElubmVyOiBcIlwiLFxuICAgICAgc2VhcmNoR2xvYmFsX2F1dG86IFtdLFxuICAgICAgaXRlbXNfOiBbXSxcbiAgICAgIHNlYXJjaElubmVyX2F1dG86IFtdLFxuICAgICAgaXRlbXNJbm5lcl86IFtdLFxuXG4gICAgICAvLyBOZXcgRGF0YVxuICAgICAgZGlhbG9nU2V0dGluZ3M6IGZhbHNlLFxuICAgICAgdmlzaWJsZUZpbHRlcnM6IFtdLCAvLyBBcnJheSBvZiBmaWVsZCBuYW1lc1xuICAgICAgZmlsdGVyVmFsdWVzOiB7fSwgLy8gT2JqZWN0OiBmaWVsZCAtPiB2YWx1ZVxuICAgICAgc2V0dGluZ3NTZWFyY2g6IFwiXCIsXG4gICAgICBkZWJvdW5jZUZpbmQ6IG51bGwsXG4gICAgfTtcbiAgfSxcbiAgY3JlYXRlZCgpIHtcbiAgICAvLyBDcmVhdGUgYSBkZWJvdW5jZWQgdmVyc2lvbiBvZiBmaW5kIHRvIGF2b2lkIHRvbyBtYW55IHJlcXVlc3RzXG4gICAgdGhpcy5kZWJvdW5jZUZpbmQgPSBfLmRlYm91bmNlKHRoaXMuZmluZCwgNTAwKTtcbiAgfSxcbiAgY29tcHV0ZWQ6IHtcbiAgICBzZWFyY2goKSB7XG4gICAgICByZXR1cm4gdGhpcy4kc3RvcmUuZ2V0dGVyc1tcInN0cnVjdHVyZS9tdWx0aXNlbGVjdC9nX3NlYXJjaFwiXSh7XG4gICAgICAgIGNvbnRyb2xsZXJfbXVsdGlzZWxlY3Q6IHRoaXMubmFtZXRhYmxlcm9vdCxcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgLy8gVXNlIHN0cnVjdHVyZS9tdWx0aXNlbGVjdCBnZXR0ZXJzXG4gICAgc2NoZW1hcygpIHtcbiAgICAgIHJldHVybiB0aGlzLiRzdG9yZS5nZXR0ZXJzW1wic3RydWN0dXJlL211bHRpc2VsZWN0L2dfc2NoZW1hc1wiXSh7XG4gICAgICAgIGNvbnRyb2xsZXJfbXVsdGlzZWxlY3Q6IHRoaXMubmFtZXRhYmxlcm9vdCxcbiAgICAgIH0pIHx8IFtdO1xuICAgIH0sXG5cbiAgICBub3RBZmZpY2hlOiB7XG4gICAgICBnZXQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiRzdG9yZS5nZXR0ZXJzW1wic3RydWN0dXJlL211bHRpc2VsZWN0L2dfbm90X2FmZmljaGVcIl0oe1xuICAgICAgICAgIGNvbnRyb2xsZXJfbXVsdGlzZWxlY3Q6IHRoaXMubmFtZXRhYmxlcm9vdCxcbiAgICAgICAgfSkgfHwgW107XG4gICAgICB9LFxuICAgICAgc2V0KG5ld1ZhbHVlKSB7XG4gICAgICAgIHRoaXMuJHN0b3JlLmNvbW1pdChcInN0cnVjdHVyZS9tdWx0aXNlbGVjdC9zZXRfbm90X2FmZmljaGVzXCIsIHtcbiAgICAgICAgICBkYXRhOiBuZXdWYWx1ZSxcbiAgICAgICAgICBjb250cm9sbGVyX211bHRpc2VsZWN0OiB0aGlzLm5hbWV0YWJsZXJvb3QsXG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICB9LFxuXG4gICAgLy8gSWRlbnRpZnkgd2hpY2ggY29sdW1ucyBzaG91bGQgYmUgZmlsdGVyYWJsZVxuICAgIGZpbHRlcmFibGVDb2x1bW5zKCkge1xuICAgICAgY29uc3Qgc2NoZW1hcyA9IHRoaXMuc2NoZW1hcztcblxuICAgICAgLy8gTGlzdCBvZiBzcGVjaWZpYyBmaWVsZCBuYW1lcyB0aGF0IHNob3VsZCBhbHdheXMgYmUgZmlsdGVyYWJsZVxuICAgICAgY29uc3Qgc3BlY2lmaWNGaWx0ZXJhYmxlTmFtZXMgPSBbXG4gICAgICAgIFwidXNlclwiLFxuICAgICAgICBcImRhdGVkZXJuaWVyYm9uXCIsXG4gICAgICAgIFwiYWN0aW9uVHJhaXRlclwiLFxuICAgICAgICBcInR5cGVcIixcbiAgICAgICBcbiAgICAgICAgXCJzdG9ja1wiLFxuICAgICAgICBcImN1bXVsc3RvY2tcIixcbiAgICAgICAgXCJjdW11bHN0b2NrdHRjXCIsXG4gICAgICAgIFwiYm9uc2FjaGF0c19pZFwiLFxuICAgICAgICBcImRlcm5pZXJwcml4dHRjYWNoYXRcIixcbiAgICAgICAgXCJkZXJuaWVycHJpeGFjaGF0XCIsXG4gICAgICAgIFwibW9udGFudGVuY291cnNmYWN0dXJlc1wiLFxuICAgICAgICBcIm1vbnRhbnRlbmNvdXJzYm9uc1wiLFxuICAgICAgICBcImRlamFyZWdsZVwiLFxuICAgICAgICBcImRhdGVcIixcbiAgICAgICAgXCJ1cGRhdGVkQXRcIixcbiAgICAgICAgXCJjcmVhdGVkQXRcIixcbiAgICAgIF07XG5cbiAgICAgIHJldHVybiBzY2hlbWFzXG4gICAgICAgIC5maWx0ZXIoXG4gICAgICAgICAgKHMpID0+XG4gICAgICAgICAgICAvLyBSdWxlIDE6IElzIGl0IGEgcmVsYXRpb24gKE1hbnlUb09uZSk/XG4gICAgICAgICAgICBzLnR5cGVDb2x1bW4gPT09IFwiTWFueVRvT25lXCIgfHxcbiAgICAgICAgICAgIC8vIFJ1bGUgMjogSXMgaXQgYSBzdHJ1Y3R1cmVkIHR5cGUgKG1vbmV5LCBudW1iZXIsIGRhdGUsIGNoZWNrYm94LCByYWRpbyk/XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIFwibW9uZXlcIixcbiAgICAgICAgICAgICAgXCJkZWNpbWFsXCIsXG4gICAgICAgICAgICAgIFwibnVtYmVyXCIsXG4gICAgICAgICAgICAgIFwiZGF0ZVwiLFxuICAgICAgICAgICAgICBcImNoZWNrYm94XCIsXG4gICAgICAgICAgICAgIFwicmFkaW9cIixcbiAgICAgICAgICAgICAgXCJzZWxlY3RcIlxuICAgICAgICAgICAgXS5pbmNsdWRlcyhzLnR5cGVIdG1sKSB8fFxuICAgICAgICAgICAgLy8gUnVsZSAzOiBJcyBpdCBpbiB0aGUgc3BlY2lmaWMgYWxsb3dlZCBsaXN0P1xuICAgICAgICAgICAgc3BlY2lmaWNGaWx0ZXJhYmxlTmFtZXMuaW5jbHVkZXMocy5uYW1lKVxuICAgICAgICApXG4gICAgICAgIC5tYXAoKHMpID0+IHMubmFtZSk7XG4gICAgfSxcblxuICAgIGhlYWRlcnMoKSB7XG4gICAgICAvLyBGZXRjaCBoZWFkZXJzIGZyb20gc3RvcmUgdG8gcG9wdWxhdGUgdGhlIHNldHRpbmdzIGxpc3RcbiAgICAgIC8vIFdlIHBhc3MgZW1wdHkgYXJyYXlzIGZvciBuYW1lc2V4cGFuZGVkIGFuZCBub3RhZmZpY2hlIHRvIGdldCBBTEwgaGVhZGVyc1xuICAgICAgcmV0dXJuIHRoaXMuJHN0b3JlLmdldHRlcnNbXCJzdHJ1Y3R1cmUvbXVsdGlzZWxlY3QvZ19oZWFkZXJzXCJdKHtcbiAgICAgICAgY29udHJvbGxlcl9tdWx0aXNlbGVjdDogdGhpcy5uYW1ldGFibGVyb290LFxuICAgICAgICBuYW1lc2V4cGFuZGVkOiBbXSxcbiAgICAgICAgbm90YWZmaWNoZTogW11cbiAgICAgIH0pIHx8IFtdO1xuICAgIH0sXG5cbiAgICBmaWx0ZXJlZEhlYWRlcnMoKSB7XG4gICAgICAvLyBGaWx0ZXIgaGVhZGVycyB0byBvbmx5IHNob3cgdGhvc2UgdGhhdCBhcmUgXCJmaWx0ZXJhYmxlXCJcbiAgICAgIC8vIFdlIHdhbnQgdG8gc2hvdyBBTEwgaGVhZGVycyBpbiB0aGUgc2V0dGluZ3MgZGlhbG9nIHNvIHVzZXIgY2FuIHRvZ2dsZSB2aXNpYmlsaXR5XG4gICAgICAvLyBCdXQgd2UgbWlnaHQgd2FudCB0byBkaXN0aW5ndWlzaCB3aGljaCBvbmVzIGFyZSBmaWx0ZXJhYmxlXG4gICAgICBsZXQgaGVhZGVycyA9IHRoaXMuaGVhZGVycztcblxuICAgICAgaWYgKCF0aGlzLnNldHRpbmdzU2VhcmNoKSByZXR1cm4gaGVhZGVycztcblxuICAgICAgY29uc3Qgc2VhcmNoID0gdGhpcy5zZXR0aW5nc1NlYXJjaC50b0xvd2VyQ2FzZSgpO1xuICAgICAgcmV0dXJuIGhlYWRlcnMuZmlsdGVyKGggPT5cbiAgICAgICAgKGgudGV4dCAmJiBoLnRleHQudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2gpKSB8fFxuICAgICAgICAoaC52YWx1ZSAmJiBoLnZhbHVlLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoKSlcbiAgICAgICk7XG4gICAgfVxuICB9LFxuXG4gIG1ldGhvZHM6IHtcbiAgICBoYW5kbGVGaWx0ZXJDaGFuZ2UoZmllbGQsIHsgdmFsdWUgfSkge1xuICAgICAgLy8gVXBkYXRlIHRoZSB2YWx1ZSBmb3IgdGhlIHNwZWNpZmljIGZpZWxkXG4gICAgICB0aGlzLiRzZXQodGhpcy5maWx0ZXJWYWx1ZXMsIGZpZWxkLCB2YWx1ZSk7XG4gICAgICB0aGlzLmZpbmQoKTtcbiAgICB9LFxuXG4gICAgZmluZCgpIHtcbiAgICAgIGxldCBzZWFyY2hHbG9iYWxfdmFsdWUgPVxuICAgICAgICB0aGlzLnNlYXJjaEdsb2JhbCA9PSBcIlwiID8gXCJcIiA6IFwiPlwiICsgdGhpcy5zZWFyY2hHbG9iYWw7XG4gICAgICBsZXQgc2VhcmNoSW5uZXJfdmFsdWUgPVxuICAgICAgICB0aGlzLnNlYXJjaElubmVyID09IFwiXCIgPyBcIlwiIDogXCI+ZmluZF9pbm5lcj09PVwiICsgdGhpcy5zZWFyY2hJbm5lcjtcblxuICAgICAgLy8gQ29uc3RydWN0IGR5bmFtaWMgZmlsdGVycyBxdWVyeVxuICAgICAgbGV0IGR5bmFtaWNGaWx0ZXJzX3ZhbHVlID0gXCJcIjtcbiAgICAgIGZvciAoY29uc3QgZmllbGQgb2YgdGhpcy52aXNpYmxlRmlsdGVycykge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZmlsdGVyVmFsdWVzW2ZpZWxkXTtcbiAgICAgICAgaWYgKHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQgJiYgdmFsdWUgIT09IFwiXCIpIHtcbiAgICAgICAgICBkeW5hbWljRmlsdGVyc192YWx1ZSArPSBgPiR7ZmllbGR9PT09JHt2YWx1ZX1gO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGxldCBzZWFyY2ggPSBzZWFyY2hHbG9iYWxfdmFsdWUgKyBzZWFyY2hJbm5lcl92YWx1ZSArIGR5bmFtaWNGaWx0ZXJzX3ZhbHVlO1xuXG4gICAgICB0aGlzLiRzdG9yZS5jb21taXQoXCJzdHJ1Y3R1cmUvbXVsdGlzZWxlY3Qvc2V0X3NlYXJjaFwiLCB7XG4gICAgICAgIGNvbnRyb2xsZXJfbXVsdGlzZWxlY3Q6IHRoaXMubmFtZXRhYmxlcm9vdCxcbiAgICAgICAgZGF0YTogc2VhcmNoLFxuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHJlbW92ZUZpbHRlcihmaWVsZCkge1xuICAgICAgdGhpcy52aXNpYmxlRmlsdGVycyA9IHRoaXMudmlzaWJsZUZpbHRlcnMuZmlsdGVyKGYgPT4gZiAhPT0gZmllbGQpO1xuICAgICAgdGhpcy4kZGVsZXRlKHRoaXMuZmlsdGVyVmFsdWVzLCBmaWVsZCk7XG4gICAgICB0aGlzLmZpbmQoKTtcbiAgICB9LFxuXG4gICAgb25DbGVhckZpbHRlcihmaWVsZCkge1xuICAgICAgdGhpcy5maWx0ZXJWYWx1ZXNbZmllbGRdID0gXCJcIjtcbiAgICAgIHRoaXMuZmluZCgpO1xuICAgIH0sXG5cbiAgICB0b2dnbGVDb2x1bW5WaXNpYmlsaXR5KGhlYWRlclZhbHVlKSB7XG4gICAgICBsZXQgY3VycmVudE5vdEFmZmljaGUgPSBbLi4udGhpcy5ub3RBZmZpY2hlXTtcbiAgICAgIGNvbnN0IGluZGV4ID0gY3VycmVudE5vdEFmZmljaGUuaW5kZXhPZihoZWFkZXJWYWx1ZSk7XG5cbiAgICAgIGlmIChpbmRleCA9PT0gLTEpIHtcbiAgICAgICAgY3VycmVudE5vdEFmZmljaGUucHVzaChoZWFkZXJWYWx1ZSk7IC8vIEhpZGUgY29sdW1uXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjdXJyZW50Tm90QWZmaWNoZS5zcGxpY2UoaW5kZXgsIDEpOyAvLyBTaG93IGNvbHVtblxuICAgICAgfVxuICAgICAgdGhpcy5ub3RBZmZpY2hlID0gY3VycmVudE5vdEFmZmljaGU7XG4gICAgfSxcblxuICAgIHRvZ2dsZUZpbHRlcihoZWFkZXJWYWx1ZSkge1xuICAgICAgbGV0IGN1cnJlbnRGaWx0ZXJzID0gWy4uLnRoaXMudmlzaWJsZUZpbHRlcnNdO1xuICAgICAgY29uc3QgaW5kZXggPSBjdXJyZW50RmlsdGVycy5pbmRleE9mKGhlYWRlclZhbHVlKTtcblxuICAgICAgaWYgKGluZGV4ID09PSAtMSkge1xuICAgICAgICBjdXJyZW50RmlsdGVycy5wdXNoKGhlYWRlclZhbHVlKTsgLy8gQWRkIGZpbHRlclxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY3VycmVudEZpbHRlcnMuc3BsaWNlKGluZGV4LCAxKTsgLy8gUmVtb3ZlIGZpbHRlclxuICAgICAgfVxuICAgICAgdGhpcy52aXNpYmxlRmlsdGVycyA9IGN1cnJlbnRGaWx0ZXJzO1xuICAgIH0sXG5cbiAgICBpc0NvbHVtblZpc2libGUoaGVhZGVyVmFsdWUpIHtcbiAgICAgIHJldHVybiAhdGhpcy5ub3RBZmZpY2hlLmluY2x1ZGVzKGhlYWRlclZhbHVlKTtcbiAgICB9LFxuXG4gICAgaXNGaWx0ZXJBY3RpdmUoaGVhZGVyVmFsdWUpIHtcbiAgICAgIHJldHVybiB0aGlzLnZpc2libGVGaWx0ZXJzLmluY2x1ZGVzKGhlYWRlclZhbHVlKTtcbiAgICB9LFxuXG4gICAgaXNGaWx0ZXJhYmxlKGhlYWRlclZhbHVlKSB7XG4gICAgICByZXR1cm4gdGhpcy5maWx0ZXJhYmxlQ29sdW1ucy5pbmNsdWRlcyhoZWFkZXJWYWx1ZSk7XG4gICAgfVxuICB9LFxuXG4gIHdhdGNoOiB7XG4gICAgc2VhcmNoR2xvYmFsX2F1dG8odmFsKSB7XG4gICAgICB0aGlzLnNlYXJjaEdsb2JhbCA9IHZhbC5qb2luKFwiPlwiKTtcbiAgICAgIHRoaXMuZmluZCgpO1xuICAgIH0sXG4gICAgc2VhcmNoSW5uZXJfYXV0byh2YWwpIHtcbiAgICAgIHRoaXMuc2VhcmNoSW5uZXIgPSB2YWwuam9pbihcIj5maW5kX2lubmVyPT09XCIpO1xuICAgICAgdGhpcy5maW5kKCk7XG4gICAgfSxcbiAgfSxcbn07XG48L3NjcmlwdD5cblxuPHN0eWxlIHNjb3BlZD5cbi53LTEwMCB7XG4gIHdpZHRoOiAxMDAlO1xufVxuPC9zdHlsZT5cbiIsIlxuLy8gQSBtYXAgb2YgYnJlYWtwb2ludHMuXG4kYnJlYWtwb2ludHM6IChcbiAgcGhvbmUtc206IDQyMHB4LFxuICBwaG9uZTogNzY3cHgsXG4gIHRhYmxldC1sZzogMTAyNHB4LFxuICBkZXNrdG9wOiAxMjAycHgsXG4pO1xuLy8gQnJlYWtwb2ludHMgU0NTU1xuQG1peGluIGJyZWFrcG9pbnQoJGJyZWFrcG9pbnQpIHtcbiAgLy8gSWYgdGhlIGJyZWFrcG9pbnQgZXhpc3RzIGluIHRoZSBtYXAuXG4gIEBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsICRicmVha3BvaW50KSB7XG4gICAgLy8gR2V0IHRoZSBicmVha3BvaW50IHZhbHVlLlxuICAgICRicmVha3BvaW50LXZhbHVlOiBtYXAtZ2V0KCRicmVha3BvaW50cywgJGJyZWFrcG9pbnQpO1xuXG4gICAgLy9CdWlsZCB0aGUgbWVkaWEgcXVlcnlcbiAgICBAbWVkaWEgKG1pbi13aWR0aDogJGJyZWFrcG9pbnQtdmFsdWUpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuLmNvb2wtbGlnaHRib3gge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIGxlZnQ6IDA7XG4gIGJvdHRvbTogMDtcbiAgdG9wOiAwO1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgcmlnaHQ6IDA7XG4gIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7XG4gIC5jb29sLWxpZ2h0Ym94LXpvb20ge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBib3R0b206IDE1cHg7XG4gICAgbGVmdDogNTAlO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgei1pbmRleDogOTk5OTk7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgxNSwgMTUsIDE1LCAwLjgpO1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICBwYWRkaW5nOiAwcHggMTJweDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgICBpbnB1dFt0eXBlPVwicmFuZ2VcIl0ge1xuICAgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICAgICAgbWFyZ2luOiAxMHB4IDA7XG4gICAgICB3aWR0aDogMTA1cHg7XG4gICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICB9XG4gICAgaW5wdXRbdHlwZT1cInJhbmdlXCJdOmZvY3VzIHtcbiAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgfVxuICAgIGlucHV0W3R5cGU9XCJyYW5nZVwiXTo6LXdlYmtpdC1zbGlkZXItcnVubmFibGUtdHJhY2sge1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBoZWlnaHQ6IDRweDtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgIGFuaW1hdGU6IDAuMnM7XG4gICAgICBib3gtc2hhZG93OiAwcHggMHB4IDBweCAjMDAwMDAwO1xuICAgICAgYmFja2dyb3VuZDogI2U2ZTZlNjtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDExcHg7XG4gICAgICBib3JkZXI6IDBweCBzb2xpZCAjMDAwMDAwO1xuICAgIH1cbiAgICBpbnB1dFt0eXBlPVwicmFuZ2VcIl06Oi13ZWJraXQtc2xpZGVyLXRodW1iIHtcbiAgICAgIGJveC1zaGFkb3c6IDFweCAxcHggMXB4ICMwMDAwMDA7XG4gICAgICBib3JkZXI6IDFweCBzb2xpZCAjMDAwMDAwO1xuICAgICAgaGVpZ2h0OiAxMnB4O1xuICAgICAgd2lkdGg6IDEycHg7XG4gICAgICBib3JkZXItcmFkaXVzOiAxM3B4O1xuICAgICAgYmFja2dyb3VuZDogI2ZmZmZmZjtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbiAgICAgIG1hcmdpbi10b3A6IC00LjVweDtcbiAgICB9XG4gICAgaW5wdXRbdHlwZT1cInJhbmdlXCJdOmZvY3VzOjotd2Via2l0LXNsaWRlci1ydW5uYWJsZS10cmFjayB7XG4gICAgICBiYWNrZ3JvdW5kOiAjZTZlNmU2O1xuICAgIH1cbiAgICBpbnB1dFt0eXBlPVwicmFuZ2VcIl06Oi1tb3otcmFuZ2UtdHJhY2sge1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBoZWlnaHQ6IDRweDtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgIGFuaW1hdGU6IDAuMnM7XG4gICAgICBib3gtc2hhZG93OiAwcHggMHB4IDBweCAjMDAwMDAwO1xuICAgICAgYmFja2dyb3VuZDogI2U2ZTZlNjtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDExcHg7XG4gICAgICBib3JkZXI6IDBweCBzb2xpZCAjMDAwMDAwO1xuICAgIH1cbiAgICBpbnB1dFt0eXBlPVwicmFuZ2VcIl06Oi1tb3otcmFuZ2UtdGh1bWIge1xuICAgICAgYm94LXNoYWRvdzogMXB4IDFweCAxcHggIzAwMDAwMDtcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkICMwMDAwMDA7XG4gICAgICBoZWlnaHQ6IDEycHg7XG4gICAgICB3aWR0aDogMTJweDtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDEzcHg7XG4gICAgICBiYWNrZ3JvdW5kOiAjZmZmZmZmO1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIH1cbiAgICBpbnB1dFt0eXBlPVwicmFuZ2VcIl06Oi1tcy10cmFjayB7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIGhlaWdodDogNHB4O1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgYW5pbWF0ZTogMC4ycztcbiAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgIGNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICB9XG4gICAgaW5wdXRbdHlwZT1cInJhbmdlXCJdOjotbXMtZmlsbC1sb3dlciB7XG4gICAgICBiYWNrZ3JvdW5kOiAjZTZlNmU2O1xuICAgICAgYm9yZGVyOiAwcHggc29saWQgIzAwMDAwMDtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDIycHg7XG4gICAgICBib3gtc2hhZG93OiAwcHggMHB4IDBweCAjMDAwMDAwO1xuICAgIH1cbiAgICBpbnB1dFt0eXBlPVwicmFuZ2VcIl06Oi1tcy1maWxsLXVwcGVyIHtcbiAgICAgIGJhY2tncm91bmQ6ICNlNmU2ZTY7XG4gICAgICBib3JkZXI6IDBweCBzb2xpZCAjMDAwMDAwO1xuICAgICAgYm9yZGVyLXJhZGl1czogMjJweDtcbiAgICAgIGJveC1zaGFkb3c6IDBweCAwcHggMHB4ICMwMDAwMDA7XG4gICAgfVxuICAgIGlucHV0W3R5cGU9XCJyYW5nZVwiXTo6LW1zLXRodW1iIHtcbiAgICAgIGJveC1zaGFkb3c6IDFweCAxcHggMXB4ICMwMDAwMDA7XG4gICAgICBib3JkZXI6IDFweCBzb2xpZCAjMDAwMDAwO1xuICAgICAgaGVpZ2h0OiAxMnB4O1xuICAgICAgd2lkdGg6IDEycHg7XG4gICAgICBib3JkZXItcmFkaXVzOiAxM3B4O1xuICAgICAgYmFja2dyb3VuZDogI2ZmZmZmZjtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB9XG4gICAgaW5wdXRbdHlwZT1cInJhbmdlXCJdOmZvY3VzOjotbXMtZmlsbC1sb3dlciB7XG4gICAgICBiYWNrZ3JvdW5kOiAjZTZlNmU2O1xuICAgIH1cbiAgICBpbnB1dFt0eXBlPVwicmFuZ2VcIl06Zm9jdXM6Oi1tcy1maWxsLXVwcGVyIHtcbiAgICAgIGJhY2tncm91bmQ6ICNlNmU2ZTY7XG4gICAgfVxuICAgIC5jb29sLWxpZ2h0Ym94LXpvb21fX2ljb24ge1xuICAgICAgaGVpZ2h0OiAxNXB4O1xuICAgICAgd2lkdGg6IDE1cHg7XG4gICAgICBjb2xvcjogI2ZmZjtcbiAgICAgICY6Zmlyc3Qtb2YtdHlwZSB7XG4gICAgICAgIG1hcmdpbi1yaWdodDogMTBweDtcbiAgICAgIH1cbiAgICAgICY6bGFzdC1vZi10eXBlIHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDEwcHg7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIC5jb29sLWxpZ2h0Ym94LXRodW1icyB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGhlaWdodDogMTAwdmg7XG4gICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICB3aWR0aDogMTAycHg7XG4gICAgcmlnaHQ6IC0xMDJweDtcbiAgICB0b3A6IDA7XG4gICAgb3ZlcmZsb3cteDogaGlkZGVuO1xuICAgIHRyYW5zaXRpb246IG5vbmU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2RkZDtcbiAgICBzY3JvbGxiYXItd2lkdGg6IHRoaW47XG4gICAgc2Nyb2xsYmFyLWNvbG9yOiAjZmE0MjQyIHJnYmEoMTc1LCAxNzUsIDE3NSwgMC45KTtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KHBob25lKSB7XG4gICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlO1xuICAgIH1cbiAgICAmOjotd2Via2l0LXNjcm9sbGJhciB7XG4gICAgICB3aWR0aDogNnB4O1xuICAgICAgaGVpZ2h0OiA2cHg7XG4gICAgfVxuICAgICY6Oi13ZWJraXQtc2Nyb2xsYmFyLWJ1dHRvbiB7XG4gICAgICB3aWR0aDogMHB4O1xuICAgICAgaGVpZ2h0OiAwcHg7XG4gICAgfVxuICAgICY6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHtcbiAgICAgIGJhY2tncm91bmQ6ICNmYTQyNDI7XG4gICAgICBib3JkZXI6IDBweCBub25lICNmZmZmZmY7XG4gICAgICBib3JkZXItcmFkaXVzOiA1MHB4O1xuICAgIH1cbiAgICAmOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kOiAjZmZmZmZmO1xuICAgIH1cbiAgICAmOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjphY3RpdmUge1xuICAgICAgYmFja2dyb3VuZDogIzAwMDAwMDtcbiAgICB9XG4gICAgJjo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2sge1xuICAgICAgYmFja2dyb3VuZDogI2UxZTFlMTtcbiAgICAgIGJvcmRlcjogMHB4IG5vbmUgI2ZmZmZmZjtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICB9XG4gICAgJjo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2s6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZDogIzY2NjY2NjtcbiAgICB9XG4gICAgJjo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2s6YWN0aXZlIHtcbiAgICAgIGJhY2tncm91bmQ6ICMzMzMzMzM7XG4gICAgfVxuICAgICY6Oi13ZWJraXQtc2Nyb2xsYmFyLWNvcm5lciB7XG4gICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICB9XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChwaG9uZSkge1xuICAgICAgd2lkdGg6IDIxMnB4O1xuICAgICAgcmlnaHQ6IC0yMTJweDtcbiAgICB9XG4gICAgLmNvb2wtbGlnaHRib3gtdGh1bWJzX19saXN0IHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgICBwYWRkaW5nOiAycHg7XG4gICAgICBwYWRkaW5nLXJpZ2h0OiAwO1xuICAgICAgLmNvb2wtbGlnaHRib3hfX3RodW1iIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogYmxhY2s7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDJweDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMnB4O1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgaGVpZ2h0OiA3NXB4O1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQocGhvbmUpIHtcbiAgICAgICAgICB3aWR0aDogY2FsYygxMDAlIC8gMiAtIDJweCk7XG4gICAgICAgIH1cbiAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgIHRvcDogMDtcbiAgICAgICAgICBsZWZ0OiAwO1xuICAgICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgICAgei1pbmRleDogMTUwO1xuICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7XG4gICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICAgICAgICBib3JkZXI6IDNweCBzb2xpZCAjZmE0MjQyO1xuICAgICAgICB9XG4gICAgICAgIGltZyB7XG4gICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgIG9iamVjdC1maXQ6IGNvdmVyO1xuICAgICAgICB9XG4gICAgICAgICYuaXMtdmlkZW8ge1xuICAgICAgICAgIC5jb29sLWxpZ2h0Ym94X190aHVtYl9faWNvbiB7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICB6LWluZGV4OiAxMDA7XG4gICAgICAgICAgICB0b3A6IDUwJTtcbiAgICAgICAgICAgIGxlZnQ6IDUwJTtcbiAgICAgICAgICAgIHdpZHRoOiAyNXB4O1xuICAgICAgICAgICAgaGVpZ2h0OiAyNXB4O1xuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gICAgICAgICAgICBwYXRoIHtcbiAgICAgICAgICAgICAgZmlsbDogI2ZmZjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICAgICAgdG9wOiAwO1xuICAgICAgICAgICAgbGVmdDogMDtcbiAgICAgICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICAgICAgYm90dG9tOiAwO1xuICAgICAgICAgICAgei1pbmRleDogNTA7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuNik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgICYuYWN0aXZlLFxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAgICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgLmNvb2wtbGlnaHRib3hfX2lubmVyIHtcbiAgICBwYWRkaW5nOiA2MHB4IDA7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIGJvdHRvbTogMDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHRyYW5zaXRpb246IG5vbmU7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChwaG9uZSkge1xuICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTtcbiAgICB9XG4gIH1cbiAgLmNvb2wtbGlnaHRib3hfX3Byb2dyZXNzYmFyIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgcmlnaHQ6IDA7XG4gICAgaGVpZ2h0OiAycHg7XG4gICAgei1pbmRleDogNTAwO1xuICAgIHRyYW5zZm9ybS1vcmlnaW46IDA7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVgoMCk7XG4gICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDNzIGxpbmVhcjtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgfVxuICAmLmNvb2wtbGlnaHRib3gtLWlzLXN3aXBwaW5nIHtcbiAgICBjdXJzb3I6IC13ZWJraXQtZ3JhYmJpbmc7XG4gICAgY3Vyc29yOiBncmFiYmluZztcbiAgICBpZnJhbWUge1xuICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgfVxuICAgIC5jb29sLWxpZ2h0Ym94X19zbGlkZSB7XG4gICAgICB0cmFuc2l0aW9uOiBub25lO1xuICAgICAgJi5jb29sLWxpZ2h0Ym94X19zbGlkZS0taGlkZSxcbiAgICAgICYuY29vbC1saWdodGJveF9fc2xpZGUtLWhpZGUge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICB6LWluZGV4OiA1MDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgJi5jb29sLWxpZ2h0Ym94LS1jYW4tem9vbSB7XG4gICAgLmNvb2wtbGlnaHRib3hfX3NsaWRlIHtcbiAgICAgIGltZyB7XG4gICAgICAgIGN1cnNvcjogem9vbS1pbjtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgJi5jb29sLWxpZ2h0Ym94LS1pcy16b29taW5nIHtcbiAgICAuY29vbC1saWdodGJveF9fc2xpZGUge1xuICAgICAgaW1nIHtcbiAgICAgICAgY3Vyc29yOiBtb3ZlOyAvKiBmYWxsYmFjayBpZiBncmFiIGN1cnNvciBpcyB1bnN1cHBvcnRlZCAqL1xuICAgICAgICBjdXJzb3I6IGdyYWI7XG4gICAgICAgIGN1cnNvcjogLW1vei1ncmFiO1xuICAgICAgICBjdXJzb3I6IC13ZWJraXQtZ3JhYjtcbiAgICAgIH1cbiAgICB9XG4gICAgLmNvb2wtbGlnaHRib3gtY2FwdGlvbiB7XG4gICAgICBvcGFjaXR5OiAwO1xuICAgIH1cbiAgfVxuICAmLmNvb2wtbGlnaHRib3gtLXRodW1icy1yaWdodCB7XG4gICAgJi5jb29sLWxpZ2h0Ym94LS1zaG93LXRodW1icyB7XG4gICAgICAuY29vbC1saWdodGJveF9faW5uZXIge1xuICAgICAgICByaWdodDogMTAycHg7XG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQocGhvbmUpIHtcbiAgICAgICAgICByaWdodDogMjEycHg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC5jb29sLWxpZ2h0Ym94LXRodW1icyB7XG4gICAgICAgIHJpZ2h0OiAwO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICAmLmNvb2wtbGlnaHRib3gtLXRodW1icy1ib3R0b20ge1xuICAgIC5jb29sLWxpZ2h0Ym94LXRodW1icyB7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIGxlZnQ6IDA7XG4gICAgICByaWdodDogMDtcbiAgICAgIHRvcDogYXV0bztcbiAgICAgIGhlaWdodDogNzBweDtcbiAgICAgIGJvdHRvbTogLTcwcHg7XG4gICAgICBvdmVyZmxvdzogYXV0bztcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQocGhvbmUpIHtcbiAgICAgICAgYm90dG9tOiAtNzlweDtcbiAgICAgICAgaGVpZ2h0OiA3OXB4O1xuICAgICAgfVxuICAgICAgLmNvb2wtbGlnaHRib3gtdGh1bWJzX19saXN0IHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGZsZXgtd3JhcDogbm93cmFwO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgLmNvb2wtbGlnaHRib3hfX3RodW1iIHtcbiAgICAgICAgICB3aWR0aDogMTAwcHg7XG4gICAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgICBoZWlnaHQ6IDY1cHg7XG4gICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChwaG9uZSkge1xuICAgICAgICAgICAgaGVpZ2h0OiA3NXB4O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICAmLmNvb2wtbGlnaHRib3gtLXNob3ctdGh1bWJzIHtcbiAgICAgIC5jb29sLWxpZ2h0Ym94X19pbm5lciB7XG4gICAgICAgIGJvdHRvbTogNzBweDtcbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChwaG9uZSkge1xuICAgICAgICAgIGJvdHRvbTogNzlweDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLmNvb2wtbGlnaHRib3gtdGh1bWJzIHtcbiAgICAgICAgYm90dG9tOiAwO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICAqIHtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIHBhZGRpbmc6IDA7XG4gICAgbWFyZ2luOiAwO1xuICB9XG4gIGJ1dHRvbiB7XG4gICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIG91dGxpbmU6IG5vbmU7XG4gIH1cbiAgc3ZnIHtcbiAgICBwYXRoLFxuICAgIHJlY3Qge1xuICAgICAgZmlsbDogY3VycmVudENvbG9yO1xuICAgIH1cbiAgfVxuICAuY29vbC1saWdodGJveC1idXR0b24ge1xuICAgIHBhZGRpbmc6IDIxcHggMTZweCAyMXB4IDRweDtcbiAgICBoZWlnaHQ6IDEwMHB4O1xuICAgIG9wYWNpdHk6IDE7XG4gICAgei1pbmRleDogODAwO1xuICAgIGNvbG9yOiAjY2NjO1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogY2FsYyg1MCUgLSA1MHB4KTtcbiAgICB3aWR0aDogNTRweDtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlO1xuICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChwaG9uZSkge1xuICAgICAgd2lkdGg6IDcwcHg7XG4gICAgICBwYWRkaW5nOiAzMXB4IDI2cHggMzFweCA2cHg7XG4gICAgfVxuICAgICYuaGlkZGVuIHtcbiAgICAgIG9wYWNpdHk6IDA7XG4gICAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgfVxuICAgICY6aG92ZXIge1xuICAgICAgY29sb3I6ICNmZmY7XG4gICAgfVxuICAgID4gLmNvb2wtbGlnaHRib3gtYnV0dG9uX19pY29uIHtcbiAgICAgIHBhZGRpbmc6IDdweDtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICBiYWNrZ3JvdW5kOiByZ2JhKDMwLCAzMCwgMzAsIDAuNik7XG4gICAgICA+IHN2ZyB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICB9XG4gICAgfVxuICAgICYuY29vbC1saWdodGJveC1idXR0b24tLXByZXYge1xuICAgICAgbGVmdDogMDtcbiAgICB9XG4gICAgJi5jb29sLWxpZ2h0Ym94LWJ1dHRvbi0tbmV4dCB7XG4gICAgICByaWdodDogMDtcbiAgICAgIHBhZGRpbmc6IDIxcHggNHB4IDIxcHggMTZweDtcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQocGhvbmUpIHtcbiAgICAgICAgcGFkZGluZzogMzFweCA2cHggMzFweCAyNnB4O1xuICAgICAgfVxuICAgIH1cbiAgfVxuICAuY29vbC1saWdodGJveC1wZGYge1xuICAgIG1heC13aWR0aDogMTAwJTtcbiAgfVxuICAuY29vbC1saWdodGJveF9faWZyYW1lIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIHRvcDogNTAlO1xuICAgIGxlZnQ6IDUwJTtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC01MCUsIC01MCUsIDBweCkgc2NhbGUzZCgxLCAxLCAxKTtcbiAgICAuY29vbC1saWdodGJveC12aWRlbyB7XG4gICAgfVxuICAgIGlmcmFtZSB7XG4gICAgICAvL3Bvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChwaG9uZSkge1xuICAgICAgICBtYXgtd2lkdGg6IDgwdnc7XG4gICAgICAgIG1heC1oZWlnaHQ6IDgwdmg7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIC5jb29sLWxpZ2h0Ym94X193cmFwcGVyIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICYuY29vbC1saWdodGJveF9fd3JhcHBlci0tc3dpcGUge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAuY29vbC1saWdodGJveF9fc2xpZGUge1xuICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIG9wYWNpdHk6IDAuNDtcbiAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjNzIGxpbmVhcjtcbiAgICAgICAgJi5jb29sLWxpZ2h0Ym94X19zbGlkZS0tY3VycmVudCB7XG4gICAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICAuY29vbC1saWdodGJveF9fc2xpZGUge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHRvcDogMDtcbiAgICBib3R0b206IDA7XG4gICAgbGVmdDogMDtcbiAgICByaWdodDogMDtcbiAgICB6LWluZGV4OiAxMDA7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgbWFyZ2luLXJpZ2h0OiAzMHB4O1xuICAgICY6bGFzdC1vZi10eXBlIHtcbiAgICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICB9XG4gICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuM3MgZWFzZTtcbiAgICAmLmNvb2wtbGlnaHRib3hfX3NsaWRlLS1jdXJyZW50IHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgfVxuICAgIC5jb29sLWxpZ2h0Ym94X19zbGlkZV9faW1nIHtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgIC8vIHdpZHRoOiAxMDAlO1xuICAgICAgbGVmdDogNTAlO1xuICAgICAgdG9wOiA1MCU7XG4gICAgICAtd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICAgIGJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTUwJSwgLTUwJSwgMHB4KSBzY2FsZTNkKDEsIDEsIDEpO1xuICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgfVxuICAgIGltZyB7XG4gICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICBtYXgtaGVpZ2h0OiAxMDAlO1xuICAgICAgbWFyZ2luOiBhdXRvO1xuICAgICAgei1pbmRleDogOTk5OTtcbiAgICAgIGJveC1zaGFkb3c6IDAgMCAxLjVyZW0gcmdiYSgwLCAwLCAwLCAwLjQ1KTtcbiAgICB9XG4gIH1cbn1cbi5jb29sLWxpZ2h0Ym94LXRvb2xiYXIge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgcmlnaHQ6IDA7XG4gIG9wYWNpdHk6IDE7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7XG4gIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICYuaGlkZGVuIHtcbiAgICBvcGFjaXR5OiAwO1xuICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgfVxuICAuY29vbC1saWdodGJveC10b29sYmFyX19idG4ge1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMzAsIDMwLCAzMCwgMC42KTtcbiAgICBib3JkZXI6IDA7XG4gICAgYm9yZGVyLXJhZGl1czogMDtcbiAgICBib3gtc2hhZG93OiBub25lO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiA5cHg7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHRyYW5zaXRpb246IGNvbG9yIDAuMnM7XG4gICAgdmVydGljYWwtYWxpZ246IHRvcDtcbiAgICB2aXNpYmlsaXR5OiBpbmhlcml0O1xuICAgIHdpZHRoOiA0MHB4O1xuICAgIGhlaWdodDogNDBweDtcbiAgICBjb2xvcjogI2NjYztcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KHBob25lKSB7XG4gICAgICB3aWR0aDogNDRweDtcbiAgICAgIGhlaWdodDogNDRweDtcbiAgICAgIHBhZGRpbmc6IDEwcHg7XG4gICAgfVxuICAgID4gc3ZnIHtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgIH1cbiAgICAmOmhvdmVyIHtcbiAgICAgIGNvbG9yOiAjZmZmZmZmO1xuICAgIH1cbiAgfVxufVxuLmNvb2wtbGlnaHRib3gtY2FwdGlvbiB7XG4gIGJvdHRvbTogMDtcbiAgY29sb3I6ICNlZWU7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgbGVmdDogMDtcbiAgb3BhY2l0eTogMTtcbiAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgcGFkZGluZzogMThweCAyOHB4IDE2cHggMjRweDtcbiAgcmlnaHQ6IDA7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgZGlyZWN0aW9uOiBsdHI7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjI1cyBlYXNlLCB2aXNpYmlsaXR5IDBzIGVhc2UgMC4yNXM7XG4gIHotaW5kZXg6IDk5OTk3O1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoXG4gICAgMGRlZyxcbiAgICByZ2JhKDAsIDAsIDAsIDAuNzUpIDAsXG4gICAgcmdiYSgwLCAwLCAwLCAwLjMpIDUwJSxcbiAgICByZ2JhKDAsIDAsIDAsIDAuMTUpIDY1JSxcbiAgICByZ2JhKDAsIDAsIDAsIDAuMDc1KSA3NS41JSxcbiAgICByZ2JhKDAsIDAsIDAsIDAuMDM3KSA4Mi44NSUsXG4gICAgcmdiYSgwLCAwLCAwLCAwLjAxOSkgODglLFxuICAgIHRyYW5zcGFyZW50XG4gICk7XG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQocGhvbmUpIHtcbiAgICBwYWRkaW5nOiAyMnB4IDMwcHggMjNweCAzMHB4O1xuICB9XG4gIGEge1xuICAgIGNvbG9yOiAjZWVlO1xuICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICB9XG4gIGg2IHtcbiAgICBmb250LXNpemU6IDE0cHg7XG4gICAgbWFyZ2luOiAwIDAgNnB4IDA7XG4gICAgbGluZS1oZWlnaHQ6IDEzMCU7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChwaG9uZSkge1xuICAgICAgZm9udC1zaXplOiAxNnB4O1xuICAgICAgbWFyZ2luOiAwIDAgNnB4IDA7XG4gICAgfVxuICB9XG4gIHAge1xuICAgIGZvbnQtc2l6ZTogMTNweDtcbiAgICBsaW5lLWhlaWdodDogMTMwJTtcbiAgICBjb2xvcjogI2NjYztcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KHBob25lKSB7XG4gICAgICBmb250LXNpemU6IDE1cHg7XG4gICAgfVxuICAgIGEge1xuICAgICAgY29sb3I6ICNjY2M7XG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgY29sb3I6ICNlZWU7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4uY29vbC1saWdodGJveC1tb2RhbC1lbnRlci1hY3RpdmUsXG4uY29vbC1saWdodGJveC1tb2RhbC1sZWF2ZS1hY3RpdmUge1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMzVzO1xufVxuLmNvb2wtbGlnaHRib3gtbW9kYWwtZW50ZXIsXG4uY29vbC1saWdodGJveC1tb2RhbC1sZWF2ZS10byB7XG4gIG9wYWNpdHk6IDA7XG59XG4uY29vbC1saWdodGJveC1zbGlkZS1jaGFuZ2UtZW50ZXItYWN0aXZlLFxuLmNvb2wtbGlnaHRib3gtc2xpZGUtY2hhbmdlLWxlYXZlLWFjdGl2ZSB7XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgMC4yN3M7XG59XG4uY29vbC1saWdodGJveC1zbGlkZS1jaGFuZ2UtZW50ZXIsXG4uY29vbC1saWdodGJveC1zbGlkZS1jaGFuZ2UtbGVhdmUtdG8ge1xuICBvcGFjaXR5OiAwO1xufVxuLmNvb2wtbGlnaHRib3gtbG9hZGluZy13cmFwcGVyIHtcbiAgdG9wOiA1MCU7XG4gIGxlZnQ6IDUwJTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbiAgLmNvb2wtbGlnaHRib3gtbG9hZGluZyB7XG4gICAgYW5pbWF0aW9uOiBjb29sLWxpZ2h0Ym94LXJvdGF0ZSAxcyBsaW5lYXIgaW5maW5pdGU7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyOiA0cHggc29saWQgIzg4ODtcbiAgICBib3JkZXItYm90dG9tLWNvbG9yOiAjZmZmO1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICBoZWlnaHQ6IDUwcHg7XG4gICAgb3BhY2l0eTogMC43O1xuICAgIHBhZGRpbmc6IDA7XG4gICAgd2lkdGg6IDUwcHg7XG4gICAgei1pbmRleDogNTAwO1xuICB9XG59XG5Aa2V5ZnJhbWVzIGNvb2wtbGlnaHRib3gtcm90YXRlIHtcbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcbiAgfVxufVxuIiwiPHRlbXBsYXRlPlxuICA8IS0tIGh0dHBzOi8vZ2l0aHViLmNvbS93YXNzaW1oYXppbWUvdnVlLWNvb2wtbGlnaHRib3hcbmh0dHBzOi8vdnVlLWNvb2wtbGlnaHRib3gubHVjYXNwdWxsaWVzZS5jb20vI2Jhc2ljLXVzYWdlXG5cblxuXG4gaW1hZ2VzOiBbXG4gICAgICAgICdodHRwczovL2Nvc21vcy1pbWFnZXMyLmltZ2l4Lm5ldC9maWxlL3NwaW5hL3Bob3RvLzIwNTY1LzE5MTAxMF9uYXR1cmUuanBnP2l4bGliPXJhaWxzLTIuMS40JmF1dG89Zm9ybWF0JmNoPVdpZHRoJTJDRFBSJmZpdD1tYXgmdz04MzUnLFxuICAgICAgICAnaHR0cHM6Ly9oaXBzLmhlYXJzdGFwcHMuY29tL2htZy1wcm9kLnMzLmFtYXpvbmF3cy5jb20vaW1hZ2VzL25hdHVyZS1xdW90ZXMtMTU1NzM0MDI3Ni5qcGc/Y3JvcD0wLjY2Nnh3OjEuMDB4aDswLjE2OHh3LDAmcmVzaXplPTY0MDoqJyxcbiAgICAgIF0sXG5cbiAgICAgIG9yXG5cblxuICAgICAgIGltYWdlczogW1xuICAgICAgICB7XG4gICAgICAgICAgdGl0bGU6ICdJbiBuYXR1cmUsIG5vdGhpbmcgaXMgcGVyZmVjdCBhbmQgZXZlcnl0aGluZyBpcyBwZXJmZWN0JyxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogXCJQaG90byBieSBMdWNhc1wiLFxuICAgICAgICAgIHRodW1iOiAnaHR0cHM6Ly9jb3Ntb3MtaW1hZ2VzMi5pbWdpeC5uZXQvZmlsZS9zcGluYS9waG90by8yMDU2NS8xOTEwMTBfbmF0dXJlLmpwZz9peGxpYj1yYWlscy0yLjEuNCZhdXRvPWZvcm1hdCZjaD1XaWR0aCUyQ0RQUiZmaXQ9bWF4Jnc9ODM1JyxcbiAgICAgICAgICBzcmM6ICdodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PWQwdFUxOFliY3ZrJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHRpdGxlOiAnQSBiZWF1dGlmdWwgbW91bnRhaW4gdmlldycsXG4gICAgICAgICAgZGVzY3JpcHRpb246IFwiUGhvdG8gYnkgRmFjdW5kb1wiLFxuICAgICAgICAgIHNyYzogJ2h0dHBzOi8vdmltZW8uY29tLzQzMzM4MTAzJyxcbiAgICAgICAgICB0aHVtYjogJ2h0dHBzOi8vaGlwcy5oZWFyc3RhcHBzLmNvbS9obWctcHJvZC5zMy5hbWF6b25hd3MuY29tL2ltYWdlcy9uYXR1cmUtcXVvdGVzLTE1NTczNDAyNzYuanBnP2Nyb3A9MC42NjZ4dzoxLjAweGg7MC4xNjh4dywwJnJlc2l6ZT02NDA6KicsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0aXRsZTogJ0luIG5hdHVyZSwgbm90aGluZyBpcyBwZXJmZWN0IGFuZCBldmVyeXRoaW5nIGlzIHBlcmZlY3QnLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIlBob3RvIGJ5IEx1Y2FzXCIsXG4gICAgICAgICAgdGh1bWI6ICdodHRwczovL3NjeDEuYi1jZG4ubmV0L2Nzei9uZXdzLzgwMC8yMDE5LzEtbmF0dXJlLmpwZycsXG4gICAgICAgICAgc3JjOiAnL3ZpZGVvLm1wNCcsXG4gICAgICAgIH0sXG4gICAgICAgICB0aXRsZTogZmlsZVtcIm9yaWdpbmFsTmFtZVwiXSxcbiAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBmaWxlW1widHlwZVwiXSxcblxuICAgICAgICAgICAgICAgICAgc3JjOiBmaWxlW1wicGF0aERvd25sb2FkXCJdLFxuICAgICAgICAgICAgICAgICAgdGh1bWI6IFwiL3NyYy9pbWcvdmlkZW8ucG5nXCIsXG4gICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kSW1hZ2U6IFwiL3NyYy9pbWcvdmlkZW8ucG5nXCIsXG4gICAgICBdLFxuXG4gLS0+XG4gIDxkaXYgICBzdHlsZT1cImRpc3BsYXk6aW5saW5lLWJsb2NrIDtcIiA+XG5cbiAgIFxuXG4gICBcbiAgICAgIDxkaXZcbiAgICAgICBzdHlsZT1cImRpc3BsYXk6IGlubGluZS1ibG9jaztcIiBcbiAgICAgICAgOndpZHRoPVwic2l6ZVwiXG4gICAgICAgIDpoZWlnaHQ9XCJzaXplXCJcbiAgICAgICAgY2xhc3M9XCJpY29uc2hvdyBpbWFnZXMtd3JhcHBlclwiXG4gICAgICAgIHYtZm9yPVwiKGltYWdlLCBpbWFnZUluZGV4KSBpbiBpbWFnZXNcIlxuICAgICAgICA6a2V5PVwiaW1hZ2VJbmRleFwiXG4gICAgICAgIEBjbGljaz1cInNldEluZGV4KGltYWdlSW5kZXgpXCJcbiAgICAgICAgXG4gICAgICA+XG4gICAgICAgIDx2LWltZ1xuICAgICAgICAgIDpzcmM9XCJpbWFnZS5iYWNrZ3JvdW5kSW1hZ2UgPyBpbWFnZS5iYWNrZ3JvdW5kSW1hZ2UgOiBpbWFnZVwiXG4gICAgICAgICAgOmxhenktc3JjPVwiQmFzZV91cmwrJy9zcmMvaW1nL2xvYWQuanBnJ1wiXG4gICAgICAgICAgYXNwZWN0LXJhdGlvPVwiMVwiXG4gICAgICAgICAgY2xhc3M9XCJncmV5IGxpZ2h0ZW4tMlwiXG4gICAgICAgICAgOndpZHRoPVwic2l6ZVwiXG4gICAgICAgICAgOmhlaWdodD1cInNpemVcIlxuICAgICAgICAgIHYtYmluZDpzdHlsZT1cInN0eWxlT2JqZWN0XCI+XG4gICAgICAgICAgXG4gICAgICBcbiAgICAgICAgICA8dGVtcGxhdGUgdi1zbG90OnBsYWNlaG9sZGVyPlxuICAgICAgICAgICAgPHYtcm93IGNsYXNzPVwiZmlsbC1oZWlnaHQgbWEtMFwiIGFsaWduPVwiY2VudGVyXCIganVzdGlmeT1cImNlbnRlclwiPlxuICAgICAgICAgICAgICA8di1wcm9ncmVzcy1jaXJjdWxhclxuICAgICAgICAgICAgICAgIGluZGV0ZXJtaW5hdGVcbiAgICAgICAgICAgICAgICBjb2xvcj1cImdyZXkgbGlnaHRlbi01XCJcbiAgICAgICAgICAgICAgPjwvdi1wcm9ncmVzcy1jaXJjdWxhcj5cbiAgICAgICAgICAgIDwvdi1yb3c+XG4gICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgPC92LWltZz5cbiAgICAgIDwvZGl2PlxuXG4gICAgICAgPHJlYWRmaWxlLWNvb2xsaWdodGJveFxuICAgICAgOnVzZVpvb21CYXI9XCJ0cnVlXCJcbiAgICAgIDpmdWxsU2NyZWVuPVwidHJ1ZVwiXG4gICAgICA6aXRlbXM9XCJpbWFnZXNcIlxuICAgICAgOmluZGV4PVwiaW5kZXhcIlxuICAgICAgQGNsb3NlPVwiaW5kZXggPSBudWxsXCJcbiAgICA+XG4gICAgXG4gICAgPC9yZWFkZmlsZS1jb29sbGlnaHRib3g+XG4gICAgPC9kaXY+XG4gIFxuPC90ZW1wbGF0ZT5cblxuXG48c2NyaXB0PlxuZXhwb3J0IGRlZmF1bHQge1xuICBwcm9wczoge1xuICAgIGltYWdlczoge1xuICAgICAgdHlwZTogQXJyYXksXG4gICAgICBkZWZhdWx0OiBbXSxcbiAgICB9LFxuXG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogXCIyOXB4XCIsXG4gICAgfSxcbiAgfSxcbiAgZGF0YTogKCkgPT4gKHtcbiAgICBmaWxlc192YWx1ZXNob3c6IFtdLFxuXG4gICAgZmlsZXNfbm90X3ZpZXdlcjogW10sXG5cbiAgICBpbmRleDogbnVsbCxcbiAgfSksXG4gIG1ldGhvZHM6IHtcbiAgICBzZXRJbmRleChpbmRleCkge1xuICAgICAgdGhpcy5pbmRleCA9IGluZGV4O1xuICAgIH0sXG4gIH0sY29tcHV0ZWQ6e1xuICAgIEJhc2VfdXJsKCl7cmV0dXJuIHRoaXMuJHN0b3JlLnN0YXRlLkJhc2VfdXJsfSxcbiAgICBzdHlsZU9iamVjdCgpe1xuICAgICAgbGV0IHNpemU9dGhpcy5zaXplXG4gICAgICByZXR1cm57XG4gICAgICAgICBtYXJnaW46IFwiMXB4IFwiXG4gICAgICAgICAgLFwibWF4LXdpZHRoXCI6c2l6ZSxcbiAgICAgICAgICBcIm1heC1oZWlnaHRcIjogc2l6ZSxcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG48L3NjcmlwdD5cbjxzdHlsZSBzY29wZWQ+XG4uaW1hZ2VzLXdyYXBwZXIge1xuICBkaXNwbGF5OiBmbGV4O1xufVxuLmljb25zaG93IHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIC8qIGJhY2tncm91bmQtY29sb3I6IHJlZDsgKi9cbn1cbjwvc3R5bGU+IiwiPHRlbXBsYXRlPlxuICA8ZGl2PlxuXG4gICAgPGRpdiBzdHlsZT1cIndpZHRoOiBtYXgtY29udGVudDsgZmxvYXQ6IGxlZnRcIiB2LWlmPVwiYWN0aW9uX3RyYWl0ZW1lbnRcIj5cbiAgICAgIDx2LXRvb2x0aXAgdG9wPlxuICAgICAgICA8dGVtcGxhdGUgdi1zbG90OmFjdGl2YXRvcj1cInsgb24gfVwiPlxuICAgICAgICAgIDx2LWJ0biBmYWIgZGFyayBzbWFsbCBjb2xvcj1cInByaW1hcnlcIiBAY2xpY2s9XCJzaG93SXRlbShpdGVtKVwiIHYtc2hvdz1cImlzR3JhbnRlZCgndmlldycsIGl0ZW0pXCIgdi1vbj1cIm9uXCI+XG4gICAgICAgICAgICA8di1pY29uPm1kaS12aWV3LWNhcm91c2VsPC92LWljb24+XG4gICAgICAgICAgPC92LWJ0bj5cbiAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgPHNwYW4+e3sgJHQoXCJDb25zdWx0ZXJcIikgfX08L3NwYW4+XG4gICAgICA8L3YtdG9vbHRpcD5cblxuICAgICAgPHYtdG9vbHRpcCB0b3Agdi1pZj1cImlzTHYwU2F2ZSgpID09IGZhbHNlXCI+XG4gICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6YWN0aXZhdG9yPVwieyBvbiB9XCI+XG4gICAgICAgICAgPHYtYnRuIGZhYiBkYXJrIHNtYWxsIGNvbG9yPVwib3JhbmdlXCIgQGNsaWNrPVwic2hvd1ZhbGlkYXRlQ29uZmlybSgpXCJcbiAgICAgICAgICAgIHYtaWY9XCJ1cmxBbGlkYXRlICYmIGl0ZW0uc3RhdHV0ID09ICdicm91aWxsb24nXCIgXG4gICAgICAgICAgICB2LXNob3c9XCJpc0dyYW50ZWQoJ2VkaXQnLCBpdGVtKVwiIHYtb249XCJvblwiPlxuICAgICAgICAgICAgPHYtaWNvbj5tZGktY2hlY2stZGVjYWdyYW08L3YtaWNvbj5cbiAgICAgICAgICA8L3YtYnRuPlxuICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICA8c3Bhbj57eyAkdChcIlZhbGlkZXJcIikgfX08L3NwYW4+XG5cbiAgICAgIDwvdi10b29sdGlwPlxuXG4gICAgICA8di10b29sdGlwIHRvcD5cbiAgICAgICAgPHRlbXBsYXRlIHYtc2xvdDphY3RpdmF0b3I9XCJ7IG9uIH1cIj5cbiAgICAgICAgICA8di1idG4gZmFiIGRhcmsgc21hbGwgY29sb3I9XCIjOTU3NUNEXCIgQGNsaWNrPVwicGRmKGl0ZW0pXCIgdi1pZj1cInVybFBhZ2VwZGZcIiB2LW9uPVwib25cIj5cbiAgICAgICAgICAgIDx2LWljb24+bWRpLXBkZi1ib3g8L3YtaWNvbj5cbiAgICAgICAgICA8L3YtYnRuPlxuICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICA8c3Bhbj57eyAkdChcIkNvbnN1bHRlciBQREZcIikgfX08L3NwYW4+XG4gICAgICA8L3YtdG9vbHRpcD5cblxuICAgICAgPHYtdG9vbHRpcCB0b3A+XG4gICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6YWN0aXZhdG9yPVwieyBvbiB9XCI+XG4gICAgICAgICAgPHYtYnRuIGZhYiBkYXJrIHNtYWxsIGNvbG9yPVwiI0UwNDBGQlwiIEBjbGljaz1cImVtYWlsKGl0ZW0pXCIgdi1pZj1cInVybFBhZ2VlbWFpbFwiIHYtb249XCJvblwiPlxuICAgICAgICAgICAgPHYtaWNvbj5tZGktZW1haWwtc2VuZDwvdi1pY29uPlxuICAgICAgICAgIDwvdi1idG4+XG4gICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgIDxzcGFuPnt7ICR0KFwic2VuZCBlbWFpbFwiKSB9fTwvc3Bhbj5cbiAgICAgIDwvdi10b29sdGlwPlxuXG4gICAgICA8di10b29sdGlwIHRvcD5cbiAgICAgICAgPHRlbXBsYXRlIHYtc2xvdDphY3RpdmF0b3I9XCJ7IG9uIH1cIj5cbiAgICAgICAgICA8di1idG4gZmFiIGRhcmsgc21hbGwgY29sb3I9XCJncmVlblwiIEBjbGljaz1cImVkaXRJdGVtKGl0ZW0pXCIgdi1zaG93PVwiaXNHcmFudGVkKCdlZGl0JywgaXRlbSlcIiB2LW9uPVwib25cIj5cbiAgICAgICAgICAgIDx2LWljb24+bWRpLXBlbmNpbDwvdi1pY29uPlxuICAgICAgICAgIDwvdi1idG4+XG4gICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgIDxzcGFuPnt7ICR0KFwiTW9kaWZpZXJcIikgfX08L3NwYW4+XG4gICAgICA8L3YtdG9vbHRpcD5cblxuICAgICAgPHYtdG9vbHRpcCB0b3A+XG4gICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6YWN0aXZhdG9yPVwieyBvbiB9XCI+XG4gICAgICAgICAgPHYtYnRuIGZhYiBkYXJrIHNtYWxsIGNvbG9yPVwicGlua1wiIEBjbGljaz1cImFsZXJ0c2hvdygpXCIgdi1zaG93PVwiaXNHcmFudGVkKCdkZWxldGUnLCBpdGVtKVwiIHYtb249XCJvblwiPlxuICAgICAgICAgICAgPHYtaWNvbj5tZGktZGVsZXRlPC92LWljb24+XG4gICAgICAgICAgPC92LWJ0bj5cbiAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgPHNwYW4+e3sgJHQoXCJTdXBwcmltZXJcIikgfX08L3NwYW4+XG4gICAgICA8L3YtdG9vbHRpcD5cblxuICAgICAgPHYtc25hY2tiYXIgdi1tb2RlbD1cImFsZXJ0XCIgZWxldmF0aW9uPVwiMjRcIiA6dG9wPVwidHJ1ZVwiIGNlbnRlcmVkIHZlcnRpY2FsIGNvbG9yPVwiZXJyb3JcIj5cbiAgICAgICAgPHYtaWNvbj5tZGktaG9tZS1hbGVydDwvdi1pY29uPnt7ICR0KFwiw4p0ZXMtdm91cyBzw7tyIGRlIHZvdWxvaXIgc3VwcHJpbWVyIGNldHRlIGxpZ25lXCIpIH19XG4gICAgICAgIDxiciAvPlxuICAgICAgICA8c3Ryb25nPnt7IHRleHQgfX08L3N0cm9uZz5cblxuICAgICAgICA8ZGl2IHN0eWxlPVwiZGlzcGxheS0yXCI+XG4gICAgICAgICAgPHYtYnRuIGRhcmsgdGV4dCBAY2xpY2s9XCJhbGVydCA9IGZhbHNlXCI+e3sgJHQoXCJGZXJtZXJcIikgfX08L3YtYnRuPlxuICAgICAgICAgIDx2LWJ0biBkYXJrIHRleHQgQGNsaWNrPVwiZGVsZXRlSXRlbSgpXCI+e3sgJHQoXCJvdWlcIikgfX08L3YtYnRuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvdi1zbmFja2Jhcj5cblxuICAgICAgPHYtc25hY2tiYXIgdi1tb2RlbD1cImNvbmZpcm1WYWxpZGF0ZVwiIGVsZXZhdGlvbj1cIjI0XCIgOnRvcD1cInRydWVcIiBjZW50ZXJlZCB2ZXJ0aWNhbCBjb2xvcj1cImluZm9cIj5cbiAgICAgICAgPHYtaWNvbj5tZGktY2hlY2stZGVjYWdyYW08L3YtaWNvbj5cbiAgICAgICAge3sgJHQoXCLDinRlcy12b3VzIHPDu3IgZGUgdm91bG9pciB2YWxpZGVyIGNldHRlIGxpZ25lID9cIikgfX1cbiAgICAgICAgPGJyIC8+XG4gICAgICAgIDxzdHJvbmc+e3sgdGV4dCB9fTwvc3Ryb25nPlxuXG4gICAgICAgIDxkaXYgc3R5bGU9XCJkaXNwbGF5LTJcIj5cbiAgICAgICAgICA8di1idG4gZGFyayB0ZXh0IEBjbGljaz1cImNvbmZpcm1WYWxpZGF0ZSA9IGZhbHNlXCI+e3tcbiAgICAgICAgICAgICR0KFwiRmVybWVyXCIpXG4gICAgICAgICAgICB9fTwvdi1idG4+XG4gICAgICAgICAgPHYtYnRuIGRhcmsgdGV4dCBAY2xpY2s9XCJ2YWxpZGF0ZUl0ZW0oKVwiPnt7ICR0KFwib3VpXCIpIH19PC92LWJ0bj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L3Ytc25hY2tiYXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cbjxzY3JpcHQ+XG5leHBvcnQgZGVmYXVsdCB7XG4gIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGFsZXJ0OiBmYWxzZSxcbiAgICAgIGRlbGV0ZTogZmFsc2UsXG4gICAgICB0ZXh0OiBcIlwiLFxuICAgICAgZmFiOiBmYWxzZSxcbiAgICAgIGNvbmZpcm1WYWxpZGF0ZTogZmFsc2UsXG4gICAgfTtcbiAgfSxcbiAgcHJvcHM6IHtcbiAgICBpdGVtOiB7fSxcbiAgICBjb250cm9sbGVyX3Jvb3Q6IHt9LFxuICAgIGFjdGlvbl90cmFpdGVtZW50OiB7IGRlZmF1bHQ6IHRydWUgfSxcbiAgICBzbG90X3Nob3c6IHt9LFxuICB9LFxuXG4gIGNvbXB1dGVkOiB7XG4gICAgdXJsUGFnZXBkZigpIHtcbiAgICAgIGxldCBuYW1lc19jb250cm9sbGVycyA9IHRoaXMuY29udHJvbGxlcl9yb290O1xuICAgICAgcmV0dXJuIHRoaXMuJHN0b3JlLmdldHRlcnNbXCJnZXRfcGRmXCJdKG5hbWVzX2NvbnRyb2xsZXJzKTtcbiAgICB9LFxuICAgIHVybEFsaWRhdGUoKSB7XG4gICAgICBsZXQgbmFtZXNfY29udHJvbGxlcnMgPSB0aGlzLmNvbnRyb2xsZXJfcm9vdDtcbiAgICAgIHJldHVybiB0aGlzLiRzdG9yZS5nZXR0ZXJzW1wiZ2V0X3ZhbGlkYXRlXCJdKG5hbWVzX2NvbnRyb2xsZXJzKTtcbiAgICB9LFxuICAgIHVybFBhZ2VlbWFpbCgpIHtcbiAgICAgIGxldCBuYW1lc19jb250cm9sbGVycyA9IHRoaXMuY29udHJvbGxlcl9yb290O1xuICAgICAgcmV0dXJuIHRoaXMuJHN0b3JlLmdldHRlcnNbXCJnZXRfZW1haWxcIl0obmFtZXNfY29udHJvbGxlcnMpO1xuICAgIH0sXG4gIH0sXG5cbiAgbWV0aG9kczoge1xuICAgIGlzR3JhbnRlZChhdHRyaWJ1dGUsIGl0ZW0pIHtcbiAgICAgIC8qXG4gICAgICBpZiAodGhpcy5jb250cm9sbGVyX3Jvb3QgPT0gXCJib25zdmVudGVzXCIgfHwgdGhpcy5jb250cm9sbGVyX3Jvb3QgPT0gXCJhdm9pcnN2ZW50ZXNcIikge1xuICAgICAgICBpZiAoYXR0cmlidXRlICE9IFwidmlld1wiICYmIChpdGVtLmRlamFyZWdsZSAqIDEpID4gMCkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICB9XG4gICAgICAgICovXG5cbiAgICAgIHJldHVybiB0aGlzLiRzdG9yZS5nZXR0ZXJzW1wic2VjdXJpdHkvaXNHcmFudGVkXCJdKFxuICAgICAgICBhdHRyaWJ1dGUsXG4gICAgICAgIHRoaXMuY29udHJvbGxlcl9yb290LFxuICAgICAgICBpdGVtXG4gICAgICApO1xuICAgIH0sXG4gICAgaXNMdjBTYXZlKCkge1xuICAgICAgcmV0dXJuIHRoaXMuJHN0b3JlLmdldHRlcnNbXCJzZWN1cml0eS9pc0x2MFNhdmVcIl0odGhpcy5jb250cm9sbGVyX3Jvb3QpO1xuICAgIH0sXG5cbiAgICBzaG93SXRlbSgpIHtcbiAgICAgIGxldCBpdGVtID0gdGhpcy5pdGVtO1xuICAgICAgaWYgKHRoaXMuc2xvdF9zaG93KSB7XG4gICAgICAgIHRoaXMuJHN0b3JlLmRpc3BhdGNoKFwiY3VzdG9tX2Zyb21CeUlkXCIsIHtcbiAgICAgICAgICBuYW1lc19jb250cm9sbGVyczogW3RoaXMuY29udHJvbGxlcl9yb290XSxcbiAgICAgICAgICBpZDogaXRlbS5pZCxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy4kc3RvcmUuY29tbWl0KFwiZGlhbG9nL3NldF9kaWFsb2dcIiwge1xuICAgICAgICAgIGRhdGE6IGl0ZW0sXG4gICAgICAgICAgZmxhZzogdHJ1ZSxcbiAgICAgICAgICB0eXBlOiBcInNob3dcIixcbiAgICAgICAgICBjb250cm9sbGVyOiB0aGlzLmNvbnRyb2xsZXJfcm9vdCxcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLiRyb3V0ZXIucHVzaCh7XG4gICAgICAgICAgbmFtZTogdGhpcy5jb250cm9sbGVyX3Jvb3QgKyBcIl9zaG93X2l0ZW1cIixcbiAgICAgICAgICBwYXJhbXM6IHsgaWQ6IGl0ZW0uaWQgfSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSxcblxuICAgIHBkZigpIHtcbiAgICAgIGxldCBpdGVtID0gdGhpcy5pdGVtO1xuXG4gICAgICB0aGlzLiRyb3V0ZXIucHVzaCh7XG4gICAgICAgIG5hbWU6IFwicHJpbnRcIixcbiAgICAgICAgcGFyYW1zOiB7IGlkOiBpdGVtLmlkLCBjb250cm9sbGVyOiB0aGlzLmNvbnRyb2xsZXJfcm9vdCB9LFxuICAgICAgfSk7XG5cbiAgICAgIC8qICAgbGV0IGlkID0gdGhpcy5pdGVtLmlkO1xuICAgICAgICBsZXQgbmFtZXNfY29udHJvbGxlcnMgPSB0aGlzLmNvbnRyb2xsZXJfcm9vdDtcbiAgICAgICAgbGV0IHVybFBhZ2UgPSB0aGlzLnVybFBhZ2VwZGY7XG4gICAgICAgIGNvbnNvbGUubG9nKHVybFBhZ2UpO1xuICAgICAgICBcbiAgXG4gICAgICAgIHdpbmRvdy5vcGVuKFxuICAgICAgICAgIHVybFBhZ2UgKyBcIj9pZD1cIiArIGlkLFxuICAgICAgICAgIFwiX2JsYW5rXCIgLy8gPC0gVGhpcyBpcyB3aGF0IG1ha2VzIGl0IG9wZW4gaW4gYSBuZXcgd2luZG93LlxuICAgICAgICApOyAqL1xuICAgIH0sXG4gICAgZW1haWwoKSB7XG4gICAgICBsZXQgaXRlbSA9IHRoaXMuaXRlbTtcblxuICAgICAgdGhpcy4kcm91dGVyLnB1c2goe1xuICAgICAgICBuYW1lOiBcImVtYWlsXCIsXG4gICAgICAgIHBhcmFtczogeyBpZDogaXRlbS5pZCwgY29udHJvbGxlcjogdGhpcy5jb250cm9sbGVyX3Jvb3QgfSxcbiAgICAgIH0pO1xuICAgIH0sXG5cbiAgICBlZGl0SXRlbSgpIHtcbiAgICAgIGxldCBpdGVtID0gdGhpcy5pdGVtO1xuICAgICAgaWYgKHRoaXMuc2xvdF9zaG93KSB7XG4gICAgICAgIHRoaXMuJHN0b3JlLmRpc3BhdGNoKFwiY3VzdG9tX2Zyb21CeUlkXCIsIHtcbiAgICAgICAgICBuYW1lc19jb250cm9sbGVyczogW3RoaXMuY29udHJvbGxlcl9yb290XSxcbiAgICAgICAgICBpZDogaXRlbS5pZCxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy4kc3RvcmUuY29tbWl0KFwiZGlhbG9nL3NldF9kaWFsb2dcIiwge1xuICAgICAgICAgIGRhdGE6IGl0ZW0sXG4gICAgICAgICAgZmxhZzogdHJ1ZSxcbiAgICAgICAgICB0eXBlOiBcInVwZGF0ZVwiLFxuICAgICAgICAgIGNvbnRyb2xsZXI6IHRoaXMuY29udHJvbGxlcl9yb290LFxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuJHJvdXRlci5wdXNoKHtcbiAgICAgICAgICBuYW1lOiB0aGlzLmNvbnRyb2xsZXJfcm9vdCArIFwiX3VwZGF0ZVwiLFxuICAgICAgICAgIHBhcmFtczogeyBpZDogaXRlbS5pZCB9LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgYXZvaXJJdGVtKCkge1xuICAgICAgbGV0IGl0ZW0gPSB0aGlzLml0ZW07XG4gICAgICBpZiAodGhpcy5zbG90X3Nob3cpIHtcbiAgICAgICAgdGhpcy4kc3RvcmUuZGlzcGF0Y2goXCJjdXN0b21fZnJvbUJ5SWRcIiwge1xuICAgICAgICAgIG5hbWVzX2NvbnRyb2xsZXJzOiBbdGhpcy5jb250cm9sbGVyX3Jvb3RdLFxuICAgICAgICAgIGlkOiBpdGVtLmlkLFxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLiRzdG9yZS5jb21taXQoXCJkaWFsb2cvc2V0X2RpYWxvZ1wiLCB7XG4gICAgICAgICAgZGF0YTogaXRlbSxcbiAgICAgICAgICBmbGFnOiB0cnVlLFxuICAgICAgICAgIHR5cGU6IFwidXBkYXRlXCIsXG4gICAgICAgICAgY29udHJvbGxlcjogdGhpcy5jb250cm9sbGVyX3Jvb3QsXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy4kcm91dGVyLnB1c2goe1xuICAgICAgICAgIG5hbWU6IHRoaXMuY29udHJvbGxlcl9yb290ICsgXCJfYXZvaXJcIixcbiAgICAgICAgICBwYXJhbXM6IHsgaWQ6IGl0ZW0uaWQgfSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSxcblxuICAgIGFsZXJ0c2hvdygpIHtcbiAgICAgIHRoaXMuYWxlcnQgPSB0cnVlO1xuXG4gICAgICB0aGlzLnRleHQgPVxuICAgICAgICBcIiggIElEID0gXCIgK1xuICAgICAgICB0aGlzLml0ZW1bXCJpZFwiXSArXG4gICAgICAgIFwiICAgLyAgICAgIFwiICtcbiAgICAgICAgdGhpcy5pdGVtW1widG9TdHJpbmdcIl0gK1xuICAgICAgICBcIiAgKSBcIjtcbiAgICB9LFxuICAgIHNob3dWYWxpZGF0ZUNvbmZpcm0oKSB7XG4gICAgICB0aGlzLmNvbmZpcm1WYWxpZGF0ZSA9IHRydWU7XG4gICAgICB0aGlzLnRleHQgPVxuICAgICAgICBcIiggIElEID0gXCIgK1xuICAgICAgICB0aGlzLml0ZW1bXCJpZFwiXSArXG4gICAgICAgIFwiICAgLyAgICAgIFwiICtcbiAgICAgICAgdGhpcy5pdGVtW1widG9TdHJpbmdcIl0gK1xuICAgICAgICBcIiAgKSBcIjtcbiAgICB9LFxuXG4gICAgZGVsZXRlSXRlbSgpIHtcbiAgICAgIHRoaXMuYWxlcnQgPSBmYWxzZTtcblxuICAgICAgdGhpcy4kc3RvcmUuZGlzcGF0Y2goXCJzZW5kL2RlbGV0ZV9kYXRhXCIsIHtcbiAgICAgICAgY29udHJvbGxlcl9yb290OiB0aGlzLmNvbnRyb2xsZXJfcm9vdCxcbiAgICAgICAgaXRlbTogdGhpcy5pdGVtLFxuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHZhbGlkYXRlSXRlbSgpIHtcbiAgICAgIHRoaXMuYWxlcnQgPSBmYWxzZTtcblxuICAgICAgdGhpcy4kc3RvcmUuZGlzcGF0Y2goXCJzZW5kL3ZhbGlkYXRlX2RhdGFcIiwge1xuICAgICAgICBjb250cm9sbGVyX3Jvb3Q6IHRoaXMuY29udHJvbGxlcl9yb290LFxuICAgICAgICBpdGVtOiB0aGlzLml0ZW0sXG4gICAgICB9KTtcbiAgICB9LFxuICB9LFxufTtcbjwvc2NyaXB0PlxuPHN0eWxlPlxuLyogVGhpcyBpcyBmb3IgZG9jdW1lbnRhdGlvbiBwdXJwb3NlcyBhbmQgd2lsbCBub3QgYmUgbmVlZGVkIGluIHlvdXIgYXBwbGljYXRpb24gKi9cbiNjcmVhdGUgLnYtc3BlZWQtZGlhbCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbn1cblxuI2NyZWF0ZSAudi1idG4tLWZsb2F0aW5nIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuPC9zdHlsZT5cbiIsIjx0ZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIGp1c3RpZnktY2VudGVyXCI+XG5cbiAgICA8ZGl2IHYtaWY9XCJpdGVtLnN0YXR1dCAhPSAndmFsaWRlJ1wiPlxuXG4gICAgICA8di1jaGlwIGNsYXNzPVwibXgtMlwiIGRhcmsgc21hbGw+XG4gICAgICAgIDx2LWljb24gZGFyaz5tZGktYWxwaGEtYi1jaXJjbGUtb3V0bGluZTwvdi1pY29uPlxuICAgICAgPC92LWNoaXA+XG5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgdi1lbHNlPlxuICAgICAgPGRpdiB2LWlmPVwiaXRlbS5hY3Rpb25UcmFpdGVyID09ICdUcmFpdGVyJ1wiPlxuICAgICAgICA8di1jaGlwIHYtaWY9XCJpdGVtLm1vbnRhbnRlbmNvdXJzID09IDBcIiBjb2xvcj1cInN1Y2Nlc3NcIiBjbGFzcz1cIm14LTJcIiBkYXJrIHNtYWxsPlxuICAgICAgICAgIDx2LWljb24gZGFyaz5tZGktYWNjb3VudC1oZWFydC1vdXRsaW5lPC92LWljb24+XG4gICAgICAgIDwvdi1jaGlwPlxuXG5cbiAgICAgICAgPHYtYnRuIHYtZWxzZSB2LXNob3c9XCJpc0dyYW50ZWQoJ2FkZCcpXCIgY2xhc3M9XCJteC0yXCIgZGFyayBzbWFsbCBjb2xvcj1cIm9yYW5nZVwiIEBjbGljaz1cInJ1blRyYWl0ZXIoKVwiPlxuICAgICAgICAgIDxzcGFuPjx2LWljb24gbGVmdD5tZGktYm9vay1hcnJvdy1yaWdodDwvdi1pY29uPjwvc3Bhbj5cbiAgICAgICAgPC92LWJ0bj5cblxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IHYtZWxzZT5cbiAgICAgICAgPHYtY2hpcCB2LWlmPVwiaXRlbS5tb250YW50ZW5jb3VycyA9PSAwXCIgY29sb3I9XCJzdWNjZXNzXCIgY2xhc3M9XCJteC0yXCIgZGFyayBzbWFsbD5cbiAgICAgICAgICA8di1pY29uIGRhcms+bWRpLWFjY291bnQtaGVhcnQtb3V0bGluZTwvdi1pY29uPlxuICAgICAgICA8L3YtY2hpcD5cbiAgICAgICAgPHYtYnRuIHYtZWxzZSB2LXNob3c9XCJpc0dyYW50ZWQoJ2FkZCcpXCIgY2xhc3M9XCJteC0yIHNoYWtlLWJ0biBmb250LXdlaWdodC1ib2xkXCIgZGFyayBzbWFsbCBjb2xvcj1cImVycm9yXCJcbiAgICAgICAgICBAY2xpY2s9XCJydW5UcmFpdGVyKClcIj5cbiAgICAgICAgICA8c3Bhbj48di1pY29uIGxlZnQ+bWRpLWJlbGw8L3YtaWNvbj4gPHYtaWNvbiBsZWZ0Pm1kaS1hY2NvdW50LWNhc2gtb3V0bGluZTwvdi1pY29uPjwvc3Bhbj5cbiAgICAgICAgPC92LWJ0bj5cblxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cblxuXG5cblxuXG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cbjxzY3JpcHQ+XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgcHJvcHM6IHtcbiAgICBpdGVtOiB7fSxcbiAgfSxcbiAgZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgaWRjYXRlZ29yaWVzcmVjZXR0ZXM6IFwiXCIsXG5cbiAgICAgIGlkY29tcHRlc2JhbmNhaXJlc2JvbjogXCJcIixcblxuXG4gICAgICB2YWxfY2xpZW50OiBcIlwiLFxuICAgICAgdmFsX2RhdGU6IFwiXCIsXG4gICAgICB2YWxfbW9kZVBhaWVtZW50OiBcIlwiLFxuICAgIH07XG4gIH0sXG5cbiAgY29tcHV0ZWQ6IHtcblxuICB9LFxuXG4gIG1ldGhvZHM6IHtcbiAgICBnZXREYXRhZnJvbUJMKCkge1xuXG4gICAgICB0aGlzLnZhbF9jbGllbnQgPSB0aGlzLml0ZW0uY2xpZW50X2lkXG4gICAgICB0aGlzLnZhbF9kYXRlID0gdGhpcy5pdGVtLmRhdGVcblxuICAgICAgdGhpcy52YWxfbW9kZVBhaWVtZW50ID0gdGhpcy5pdGVtLm1vZGVQYWllbWVudF9pZFxuICAgIH0sXG5cblxuXG4gICAgcnVuVHJhaXRlcigpIHtcblxuXG5cbiAgICAgIHRoaXMuJHN0b3JlLmNvbW1pdChcImRpYWxvZy9zZXRfZGlhbG9nX2J0bl9zZW5kXCIsIHsgZmxhZzogdHJ1ZSB9KTtcbiAgICAgIHRoaXMuZ2V0RGF0YWZyb21CTCgpO1xuXG4gICAgICB0aGlzLiRzdG9yZS5kaXNwYXRjaChcImluaXRpYWxpemVfdmlld1wiLCB7XG4gICAgICAgIGNvbnRyb2xsZXJzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY29udHJvbGxlcl9yb290OiAncmVjZXR0ZXNib24nLFxuICAgICAgICAgICAgbmFtZW1vZHVsZTogXCJcIixcbiAgICAgICAgICAgIGlucHV0X3Jvb3Q6ICdjbGllbnQnLFxuICAgICAgICAgICAgbGlzdHNfQWRkOiBbXSxcbiAgICAgICAgICAgIG11bHRpc2VsZWN0OiBbXSxcbiAgICAgICAgICAgIG9wdGlvbnNfc2hvd0RhdGE6IFtdLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuXG5cbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuXG4gICAgICAgIGNvbnN0IGlucHV0cyA9IFtcbiAgICAgICAgICB7IG5hbWU6IFwiY2F0ZWdvcmllc3JlY2V0dGVzXCIsIHZhbHVlOiB0aGlzLmlkY2F0ZWdvcmllc3JlY2V0dGVzIH0sXG4gICAgICAgICAgeyBuYW1lOiAnY2xpZW50JywgdmFsdWU6IHRoaXMudmFsX2NsaWVudCB9LFxuXG4gICAgICAgICAgeyBuYW1lOiBcIm1vZGVQYWllbWVudFwiLCB2YWx1ZTogdGhpcy52YWxfbW9kZVBhaWVtZW50IH0sXG4gICAgICAgICAgeyBuYW1lOiBcImRhdGVcIiwgdmFsdWU6IHRoaXMudmFsX2RhdGUgfSxcblxuICAgICAgICAgIHsgbmFtZTogXCJjb21wdGVzYmFuY2FpcmVzYm9uXCIsIHZhbHVlOiB0aGlzLmlkY29tcHRlc2JhbmNhaXJlc2JvbiB9LFxuICAgICAgICAgIHsgbmFtZTogXCJlY3JpdHVyZUJhbmNhaXJlXCIsIHZhbHVlOiBcIipcIiB9LFxuICAgICAgICAgIHsgbmFtZTogXCJwaWVjZWp1c3RpZmljYXRpdmVcIiwgdmFsdWU6IFwiKlwiIH0sXG4gICAgICAgICAgeyBuYW1lOiBcIm5vdGVcIiwgdmFsdWU6IFwiXCIgfSxcblxuICAgICAgICBdO1xuXG4gICAgICAgIGlucHV0cy5mb3JFYWNoKChpbnB1dCkgPT4ge1xuICAgICAgICAgIHRoaXMuJHN0b3JlLmNvbW1pdChcInN0cnVjdHVyZS9zZXRfaW5wdXRfYmluZHNcIiwge1xuICAgICAgICAgICAgLi4uaW5wdXQsXG4gICAgICAgICAgICBjb250cm9sbGVyX3Jvb3Q6ICdyZWNldHRlc2JvbicsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLiRzdG9yZS5jb21taXQoXCJzdHJ1Y3R1cmUvc2V0X2FjdGlvblRyYWl0ZXJcIiwge1xuICAgICAgICAgIGFjdGlvblRyYWl0ZXI6IHRoaXMudmFsX2NsaWVudCxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy4kc3RvcmUuY29tbWl0KFwiZGlhbG9nL3NldF9kaWFsb2dfYnRuX3NlbmRcIiwgeyBmbGFnOiBmYWxzZSB9KTtcbiAgICAgIH0sIDQwMDApO1xuXG4gICAgICB0aGlzLiRyb3V0ZXJcbiAgICAgICAgLnB1c2goeyBuYW1lOiAncmVjZXR0ZXNib24nICsgXCJfYnlpdGVtXCIgfSlcbiAgICAgICAgLmNhdGNoKChlcnIpID0+IGNvbnNvbGUuZXJyb3IoXCJOYXZpZ2F0aW9uIGVycm9yOlwiLCBlcnIpKTtcblxuICAgIH0sXG5cbiAgICBpc0dyYW50ZWQoYXR0cmlidXRlKSB7XG4gICAgICByZXR1cm4gdGhpcy4kc3RvcmUuZ2V0dGVyc1tcInNlY3VyaXR5L2lzR3JhbnRlZFwiXShcbiAgICAgICAgYXR0cmlidXRlLFxuICAgICAgICAncmVjZXR0ZXNib24nXG4gICAgICApO1xuICAgIH0sXG4gIH0sXG59XG48L3NjcmlwdD5cblxuXG48c3R5bGUgc2NvcGVkPlxuLyog2KfZhNiq2KPYq9mK2LEg2KfZhNio2LXYsdmKINmE2YTYp9mH2KrYstin2LIg2K/Yp9iu2YQg2KfZhNi52YbYp9i12LEgKi9cbi5zaGFrZS1idG4ge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgZm9udC1zaXplOiAxNnB4O1xuICBwYWRkaW5nOiAxMHB4IDIwcHg7XG4gIGFuaW1hdGlvbjogYmxpbmsgMXMgMXMgZWFzZS1vdXQgaW5maW5pdGU7XG4gIC8qINin2YTZiNmF2YrYtiDYp9mE2YXYs9iq2YXYsSAqL1xufVxuXG4vKiDYrdix2YPYqSDYp9mE2KfZh9iq2LLYp9iyINiv2KfYrtmEINin2YTYudmG2KfYtdixICovXG4uc2hha2UtYnRuIHNwYW4sXG4uc2hha2UtYnRuIHYtaWNvbiB7XG4gIGFuaW1hdGlvbjogc2hha2UgMXMgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG59XG5cbi8qINit2LHZg9ipINin2YTYp9mH2KrYstin2LIgKNi52YbYryDYqti32KjZitmCINin2YTYp9mH2KrYstin2LIg2LnZhNmJINin2YTZhti1INmI2KfZhNij2YrZgtmI2YbYqSDZgdmC2LcpICovXG5Aa2V5ZnJhbWVzIHNoYWtlIHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTtcbiAgfVxuXG4gIDI1JSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0zcHgpO1xuICB9XG5cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoM3B4KTtcbiAgfVxuXG4gIDc1JSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0zcHgpO1xuICB9XG5cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApO1xuICB9XG59XG5cbi8qINit2LHZg9ipINin2YTZiNmF2YrYtiAqL1xuQGtleWZyYW1lcyBibGluayB7XG4gIDAlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTU3MzczO1xuICB9XG5cbiAgNTAlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjQ0MzM2O1xuICB9XG5cbiAgMTAwJSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2U1NzM3MztcbiAgfVxufVxuXG4vKiDYqtiu2LXZiti1INin2YTYstixICovXG4udi1idG4ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTU3MzczO1xuICAvKiDZhNmI2YYg2KfZhNiy2LEgKi9cbiAgY29sb3I6IHdoaXRlO1xuICAvKiDZhNmI2YYg2KfZhNmG2LUgKi9cbiAgYm9yZGVyLXJhZGl1czogOHB4O1xuICBib3gtc2hhZG93OiAwcHggNHB4IDZweCByZ2JhKDAsIDAsIDAsIDAuMik7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4zcztcbn1cblxuLnYtYnRuOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y0NDMzNjtcbiAgLyog2YTZiNmGINin2YTYstixINi52YbYryDYp9mE2YXYsdmI2LEg2LnZhNmK2YcgKi9cbn1cblxuLnYtaWNvbiB7XG4gIG1hcmdpbi1yaWdodDogOHB4O1xufVxuXG4vKiDYqtiu2LXZiti1INin2YTYrdis2YUgKi9cbi52LWJ0bi5sYXJnZSB7XG4gIGZvbnQtc2l6ZTogMThweDtcbiAgcGFkZGluZzogMTVweCAzMHB4O1xufVxuPC9zdHlsZT5cbiIsIjx0ZW1wbGF0ZT5cbiAgPGRpdj5cbiAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIganVzdGlmeS1jZW50ZXJcIiB2LWlmPVwiZ2V0X2FjdGlvblRyYWl0ZXIoKSA9PSAnVHJhaXRlcidcIj5cbiAgICAgIDx2LWNoaXAgY29sb3I9XCJzdWNjZXNzXCIgY2xhc3M9XCJteC0yXCIgZGFyayBzbWFsbD5cbiAgICAgICAgPHYtaWNvbiBkYXJrPm1kaS1oYW5kLW9rYXk8L3YtaWNvbj5cbiAgICAgIDwvdi1jaGlwPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJ0ZXh0LWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiXG4gICAgICB2LWVsc2VcbiAgICAgIFxuICAgID5cbiAgICAgIDx2LWNoaXAgdi1pZj1cImF2b2lyID09ICcxJ1wiIGNvbG9yPVwiYnJvd25cIiBjbGFzcz1cIm14LTJcIiBkYXJrPlxuICAgICAgICA8di1pY29uIGRhcms+bWRpLXBhY2thZ2UtZG93bjwvdi1pY29uPlxuICAgICAgPC92LWNoaXA+XG5cbiAgICAgIDx2LXRvb2x0aXAgdG9wIHYtZWxzZT5cbiAgICAgICAgPHRlbXBsYXRlIHYtc2xvdDphY3RpdmF0b3I9XCJ7IG9uIH1cIj5cbiAgICAgICAgICA8di1idG5cbiAgICAgICAgICAgIGRhcmtcbiAgICAgICAgICAgIGNvbG9yPVwicmVkXCJcbiAgICAgICAgICAgIHNtYWxsXG4gICAgICAgICAgICBAY2xpY2s9XCJhdm9pckl0ZW0oaXRlbSlcIlxuICAgICAgICAgICAgdi1zaG93PVwiaXNHcmFudGVkKCdlZGl0JywgaXRlbSlcIlxuICAgICAgICAgICAgdi1vbj1cIm9uXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8di1pY29uPm1kaS1yZXBseS1vdXRsaW5lPC92LWljb24+XG4gICAgICAgICAgPC92LWJ0bj5cbiAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgPHNwYW4+e3sgJHQoXCJhdm9pclwiKSB9fTwvc3Bhbj5cbiAgICAgIDwvdi10b29sdGlwPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG5leHBvcnQgZGVmYXVsdCB7XG4gIGRhdGEoKSB7XG4gICAgcmV0dXJuIHsgYWxlcnQ6IGZhbHNlLCBkZWxldGU6IGZhbHNlLCB0ZXh0OiBcIlwiLCBmYWI6IGZhbHNlIH07XG4gIH0sXG4gIHByb3BzOiB7XG4gICAgaXRlbToge30sXG4gICAgY29udHJvbGxlcl9yb290OiB7fSxcbiAgICBhY3Rpb25fdHJhaXRlbWVudDogeyBkZWZhdWx0OiB0cnVlIH0sXG4gICAgYXZvaXI6IHsgZGVmYXVsdDogZmFsc2UgfSxcbiAgICBzbG90X3Nob3c6IHt9LFxuICB9LFxuXG4gIGNvbXB1dGVkOiB7fSxcblxuICBtZXRob2RzOiB7XG4gICAgaXNHcmFudGVkKGF0dHJpYnV0ZSwgaXRlbSkge1xuICAgICAgcmV0dXJuIHRoaXMuJHN0b3JlLmdldHRlcnNbXCJzZWN1cml0eS9pc0dyYW50ZWRcIl0oXG4gICAgICAgIGF0dHJpYnV0ZSxcbiAgICAgICAgdGhpcy5jb250cm9sbGVyX3Jvb3QsXG4gICAgICAgIGl0ZW1cbiAgICAgICk7XG4gICAgfSxcblxuICAgIGF2b2lySXRlbSgpIHtcbiAgICAgIGxldCBpdGVtID0gdGhpcy5pdGVtO1xuICAgICAgaWYgKHRoaXMuc2xvdF9zaG93KSB7XG4gICAgICAgIHRoaXMuJHN0b3JlLmRpc3BhdGNoKFwiY3VzdG9tX2Zyb21CeUlkXCIsIHtcbiAgICAgICAgICBuYW1lc19jb250cm9sbGVyczogW3RoaXMuY29udHJvbGxlcl9yb290XSxcbiAgICAgICAgICBpZDogaXRlbS5pZCxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy4kc3RvcmUuY29tbWl0KFwiZGlhbG9nL3NldF9kaWFsb2dcIiwge1xuICAgICAgICAgIGRhdGE6IGl0ZW0sXG4gICAgICAgICAgZmxhZzogdHJ1ZSxcbiAgICAgICAgICB0eXBlOiBcInVwZGF0ZVwiLFxuICAgICAgICAgIGNvbnRyb2xsZXI6IHRoaXMuY29udHJvbGxlcl9yb290LFxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuJHJvdXRlci5wdXNoKHtcbiAgICAgICAgICBuYW1lOiB0aGlzLmNvbnRyb2xsZXJfcm9vdCArIFwiX2F2b2lyXCIsXG4gICAgICAgICAgcGFyYW1zOiB7IGlkOiBpdGVtLmlkIH0sXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICBnZXRfc3RhdHV0KCkge1xuICAgICAgcmV0dXJuIHRoaXMuaXRlbVtcInN0YXR1dFwiXTtcbiAgICB9LFxuICAgIGdldF9hY3Rpb25UcmFpdGVyKCkge1xuICAgICAgcmV0dXJuIHRoaXMuaXRlbVtcImFjdGlvblRyYWl0ZXJcIl07XG4gICAgfSxcbiAgfSxcbn07XG48L3NjcmlwdD5cbjxzdHlsZT5cbi8qIFRoaXMgaXMgZm9yIGRvY3VtZW50YXRpb24gcHVycG9zZXMgYW5kIHdpbGwgbm90IGJlIG5lZWRlZCBpbiB5b3VyIGFwcGxpY2F0aW9uICovXG4jY3JlYXRlIC52LXNwZWVkLWRpYWwge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG59XG5cbiNjcmVhdGUgLnYtYnRuLS1mbG9hdGluZyB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cbjwvc3R5bGU+IiwiPHRlbXBsYXRlPlxuICA8ZGl2IGNsYXNzPVwidi1saXN0X2FkZFwiPlxuICAgIDwhLS0gICAtLT5cbiAgICA8ZGl2IGNsYXNzPVwidi1tYWluX3RhYmxlXCIgdi1pZj1cImhlYWRlcnMubGVuZ3RoID4gMFwiPlxuICAgICAgPCEtLSAgcGx1Z2luZS0tPlxuICAgICAgPHRhYmxlLWhlYWRlcnNcbiAgICAgICAgOnRpdGxlPVwidGl0bGVcIlxuICAgICAgICA6Y29udHJvbGxlcl9yb290PVwiY29udHJvbGxlcl9yb290XCJcbiAgICAgICAgOnNsb3Rfc2hvdz1cInNsb3Rfc2hvd1wiXG4gICAgICAgIDphY3Rpb25fdHJhaXRlbWVudD1cImFjdGlvbl90cmFpdGVtZW50XCJcbiAgICAgICAgOnNlbGVjdGFqYXg9XCJzZWxlY3RhamF4XCJcbiAgICAgID48L3RhYmxlLWhlYWRlcnM+XG5cbiAgICAgIDwhLS0gd3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3IC0tPlxuICAgICAgPHYtZGF0YS10YWJsZVxuICAgICAgICA6Zm9vdGVyLXByb3BzPVwie1xuICAgICAgICAgIHNob3dGaXJzdExhc3RQYWdlOiB0cnVlLFxuXG4gICAgICAgICAgaXRlbXNQZXJQYWdlT3B0aW9uczogWzEwLCAyMCwgNTAsIDEwMCwgMjAwLCAzMDAsIC0xXSxcbiAgICAgICAgfVwiXG4gICAgICAgIDpsb2FkaW5nPVwibG9hZGluZ1wiXG4gICAgICAgIGNsYXNzPVwiZWxldmF0aW9uLTFcIlxuICAgICAgICBuby1yZXN1bHRzLXRleHQ9XCJBdWN1biDDqWzDqW1lbnQgdHJvdXbDqVwiXG4gICAgICAgIG5vLWRhdGEtdGV4dD1cIkF1Y3VuIMOpbMOpbWVudCB0cm91dsOpXCJcbiAgICAgICAgOnNob3ctZXhwYW5kPVwiZXhwYW5kZWQubGVuZ3RoID4gMFwiXG4gICAgICAgIDpzaW5nbGUtZXhwYW5kPVwidHJ1ZVwiXG4gICAgICAgIDpoZWFkZXJzPVwiaGVhZGVyc1wiXG4gICAgICAgIDppdGVtcz1cIml0ZW1zX3Nob3dfc3R5bGVcIlxuICAgICAgICA6c2hvdy1zZWxlY3Q9XCJ0cnVlXCJcbiAgICAgICAgOnZhbHVlPVwic2VsZWN0ZWRcIlxuICAgICAgICBAaW5wdXQ9XCJzZWxlY3QoJGV2ZW50KVwiXG4gICAgICAgIEBjbGljazpyb3c9XCJjbGlja3Jvd1wiXG4gICAgICAgIDppdGVtLWtleT1cIml0ZW1fa2V5XCJcbiAgICAgICAgOm9wdGlvbnMuc3luYz1cIm9wdGlvbnNEYXRhVGFibGVcIlxuICAgICAgICA6c2VydmVyLWl0ZW1zLWxlbmd0aD1cIlRvdGFsSXRlbUNvdW50XCJcbiAgICAgID5cbiAgICAgICAgPCEtLSB3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3cgLS0+XG5cbiAgICAgICAgPHRlbXBsYXRlIHYtc2xvdDpleHBhbmRlZC1pdGVtPVwieyBoZWFkZXJzLCBpdGVtIH1cIj5cbiAgICAgICAgICA8dGFibGUtZXhwYW5kXG4gICAgICAgICAgICA6Y29udHJvbGxlcl9yb290PVwiY29udHJvbGxlcl9yb290XCJcbiAgICAgICAgICAgIDppdGVtPVwiaXRlbVwiXG4gICAgICAgICAgICA6bnVtYnJldGQ9XCJoZWFkZXJzLmxlbmd0aFwiXG4gICAgICAgICAgPjwvdGFibGUtZXhwYW5kPlxuICAgICAgICA8L3RlbXBsYXRlPlxuXG4gICAgICAgIDwhLS0gd3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3IC0tPlxuICAgICAgICA8dGVtcGxhdGUgdi1zbG90Oml0ZW0uYWN0aW9uPVwieyBpdGVtIH1cIj5cbiAgICAgICAgICA8dGFibGUtYWN0aW9uXG4gICAgICAgICAgICA6aXRlbT1cIml0ZW1cIlxuICAgICAgICAgICAgOmNvbnRyb2xsZXJfcm9vdD1cImNvbnRyb2xsZXJfcm9vdFwiXG4gICAgICAgICAgICA6c2xvdF9zaG93PVwic2xvdF9zaG93XCJcbiAgICAgICAgICAgIDphY3Rpb25fdHJhaXRlbWVudD1cImFjdGlvbl90cmFpdGVtZW50XCJcbiAgICAgICAgICA+PC90YWJsZS1hY3Rpb24+XG4gICAgICAgIDwvdGVtcGxhdGU+XG5cbiAgICAgICAgPCEtLSB3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3cgLS0+XG4gICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6aXRlbS5pZD1cInsgaXRlbSB9XCI+XG4gICAgICAgICAgPHYtY2hpcCBjb2xvcj1cInByaW1hcnlcIiBkYXJrXG4gICAgICAgICAgICA+PHN0cm9uZz57eyBpdGVtLmlkIH19PC9zdHJvbmc+PC92LWNoaXBcbiAgICAgICAgICA+XG4gICAgICAgIDwvdGVtcGxhdGU+XG5cbiAgICAgICAgPCEtLSB3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3cgLS0+XG4gICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6aXRlbS5kYXRlPVwieyBpdGVtIH1cIj57e1xuICAgICAgICAgIGNvbnZlcnREYXRlKGl0ZW0uZGF0ZSlcbiAgICAgICAgfX08L3RlbXBsYXRlPlxuXG4gICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6aXRlbS5uZWdvY2lhdGlvbnJlY291dnJlbWVudD1cInsgaXRlbSB9XCI+e3tcbiAgICAgICAgICBjb252ZXJ0RGF0ZShpdGVtLm5lZ29jaWF0aW9ucmVjb3V2cmVtZW50KVxuICAgICAgICB9fTwvdGVtcGxhdGU+XG5cbiAgICAgICAgPHRlbXBsYXRlIHYtc2xvdDppdGVtLmNyZWF0ZWRBdD1cInsgaXRlbSB9XCI+e3tcbiAgICAgICAgICBjb252ZXJ0RGF0ZShpdGVtLmNyZWF0ZWRBdClcbiAgICAgICAgfX08L3RlbXBsYXRlPlxuICAgICAgICA8dGVtcGxhdGUgdi1zbG90Oml0ZW0udXBkYXRlZEF0PVwieyBpdGVtIH1cIj57e1xuICAgICAgICAgIGNvbnZlcnREYXRlKGl0ZW0udXBkYXRlZEF0KVxuICAgICAgICB9fTwvdGVtcGxhdGU+XG4gICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6aXRlbS5kYXRlVXBsb2FkPVwieyBpdGVtIH1cIj57e1xuICAgICAgICAgIGNvbnZlcnREYXRlKGl0ZW0uZGF0ZVVwbG9hZClcbiAgICAgICAgfX08L3RlbXBsYXRlPlxuXG4gICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6aXRlbS5kYXRlQ29tbWFuZGU9XCJ7IGl0ZW0gfVwiPnt7XG4gICAgICAgICAgY29udmVydERhdGUoaXRlbS5kYXRlQ29tbWFuZGUpXG4gICAgICAgIH19PC90ZW1wbGF0ZT5cbiAgICAgICAgPHRlbXBsYXRlIHYtc2xvdDppdGVtLmRhdGVMaXZyYWlzb249XCJ7IGl0ZW0gfVwiPnt7XG4gICAgICAgICAgY29udmVydERhdGUoaXRlbS5kYXRlTGl2cmFpc29uKVxuICAgICAgICB9fTwvdGVtcGxhdGU+XG5cbiAgICAgICAgPHRlbXBsYXRlIHYtc2xvdDppdGVtLmRhdGVvcGVyYXRpb249XCJ7IGl0ZW0gfVwiPnt7XG4gICAgICAgICAgY29udmVydERhdGUoaXRlbS5kYXRlb3BlcmF0aW9uKVxuICAgICAgICB9fTwvdGVtcGxhdGU+XG5cbiAgICAgICAgPHRlbXBsYXRlIHYtc2xvdDppdGVtLmRhdGVkZXJuaWVyYm9uPVwieyBpdGVtIH1cIj57e1xuICAgICAgICAgIGNvbnZlcnREYXRlKGl0ZW0uZGF0ZWRlcm5pZXJib24pXG4gICAgICAgIH19PC90ZW1wbGF0ZT5cblxuICAgICAgICA8IS0tIHd3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3dyAtLT5cbiAgICAgICAgPHRlbXBsYXRlIHYtc2xvdDppdGVtLmZpbGVzPVwieyBpdGVtIH1cIj5cbiAgICAgICAgICA8IS0tIDx0YWJsZS1zZXRmaWxlcyB2LWlmPVwiIWl0ZW0uZmlsZXMgfHwgaXRlbS5maWxlcz09JydcIiBuYW1lPVwiZmlsZXNcIiA6Y29udHJvbGxlcl9yb290PVwiY29udHJvbGxlcl9yb290XCIgOmlkPVwiaXRlbS5pZFwiICA+PC90YWJsZS1zZXRmaWxlcz5cbiAgICAgICAgICAgIC0tPlxuICAgICAgICAgIDx0YWJsZS1hdmF0YXJcbiAgICAgICAgICAgIDpjb250cm9sbGVyX3Jvb3Q9XCJjb250cm9sbGVyX3Jvb3RcIlxuICAgICAgICAgICAgbmFtZT1cImZpbGVzXCJcbiAgICAgICAgICAgIDppZD1cIml0ZW0uaWRcIlxuICAgICAgICAgICAgc2l6ZT1cIjMwcHhcIlxuICAgICAgICAgICAgOnJlZmdyb3VwPVwiaXRlbS5maWxlc1wiXG4gICAgICAgICAgICA6aGFzZG93bGFvZD1cInRydWVcIlxuICAgICAgICAgID48L3RhYmxlLWF2YXRhcj5cbiAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgPHRlbXBsYXRlIHYtc2xvdDppdGVtLmZpbGU9XCJ7IGl0ZW0gfVwiPlxuICAgICAgICAgIDwhLS0gPHRhYmxlLXNldGZpbGVzIHYtaWY9XCIhaXRlbS5maWxlIHx8IGl0ZW0uZmlsZT09JydcIiBuYW1lPVwiZmlsZVwiIDpjb250cm9sbGVyX3Jvb3Q9XCJjb250cm9sbGVyX3Jvb3RcIiA6aWQ9XCJpdGVtLmlkXCIgID48L3RhYmxlLXNldGZpbGVzPlxuICAgICAgICAtLT5cbiAgICAgICAgICA8dGFibGUtYXZhdGFyXG4gICAgICAgICAgICA6Y29udHJvbGxlcl9yb290PVwiY29udHJvbGxlcl9yb290XCJcbiAgICAgICAgICAgIG5hbWU9XCJmaWxlXCJcbiAgICAgICAgICAgIDppZD1cIml0ZW0uaWRcIlxuICAgICAgICAgICAgc2l6ZT1cIjMwcHhcIlxuICAgICAgICAgICAgOnJlZmdyb3VwPVwiaXRlbS5maWxlXCJcbiAgICAgICAgICAgIDpoYXNkb3dsYW9kPVwidHJ1ZVwiXG4gICAgICAgICAgPjwvdGFibGUtYXZhdGFyPlxuICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICA8dGVtcGxhdGUgdi1zbG90Oml0ZW0ubG9nbz1cInsgaXRlbSB9XCI+XG4gICAgICAgICAgPCEtLSA8dGFibGUtc2V0ZmlsZXMgdi1pZj1cIiFpdGVtLmxvZ28gfHwgaXRlbS5sb2dvPT0nJ1wiIG5hbWU9XCJsb2dvXCIgOmNvbnRyb2xsZXJfcm9vdD1cImNvbnRyb2xsZXJfcm9vdFwiIDppZD1cIml0ZW0uaWRcIiAgPjwvdGFibGUtc2V0ZmlsZXM+XG4gICAgICAgIC0tPlxuICAgICAgICAgIDx0YWJsZS1hdmF0YXJcbiAgICAgICAgICAgIDpjb250cm9sbGVyX3Jvb3Q9XCJjb250cm9sbGVyX3Jvb3RcIlxuICAgICAgICAgICAgbmFtZT1cImxvZ29cIlxuICAgICAgICAgICAgOmlkPVwiaXRlbS5pZFwiXG4gICAgICAgICAgICBzaXplPVwiMzBweFwiXG4gICAgICAgICAgICA6cmVmZ3JvdXA9XCJpdGVtLmxvZ29cIlxuICAgICAgICAgICAgOmhhc2Rvd2xhb2Q9XCJ0cnVlXCJcbiAgICAgICAgICA+PC90YWJsZS1hdmF0YXI+XG4gICAgICAgIDwvdGVtcGxhdGU+XG5cbiAgICAgICAgPCEtLSB3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3cgLS0+XG4gICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6aXRlbS5hY3Rpb25UcmFpdGVyPVwieyBpdGVtIH1cIj5cbiAgICAgICAgICA8dGFibGUtYWN0aW9udHJhaXRlclxuICAgICAgICAgICAgOmFjdGlvbj1cIml0ZW0uYWN0aW9uVHJhaXRlclwiXG4gICAgICAgICAgPjwvdGFibGUtYWN0aW9udHJhaXRlcj5cbiAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgPCEtLSB3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3cgLS0+XG4gICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6aXRlbS5hY3Rpb25SZWdsZW1lbnRSYXBpZGVCTD1cInsgaXRlbSB9XCI+XG4gICAgICAgICAgPHRhYmxlLWFjdGlvbnJlZ2xlbWVudHJhcGlkZWJsXG4gICAgICAgICAgICA6aXRlbT1cIml0ZW1cIlxuICAgICAgICAgID48L3RhYmxlLWFjdGlvbnJlZ2xlbWVudHJhcGlkZWJsPlxuICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICA8IS0tIHd3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3dyAtLT5cblxuICAgICAgICA8IS0tIHd3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3dyAtLT5cblxuICAgICAgICA8dGVtcGxhdGUgdi1zbG90Oml0ZW0uc29sZGVhY3R1ZWw9XCJ7IGl0ZW0gfVwiPlxuICAgICAgICAgIDx2LWNoaXBcbiAgICAgICAgICAgIHNtYWxsXG4gICAgICAgICAgICB2LWlmPVwiXG4gICAgICAgICAgICAgIChjb250cm9sbGVyX3Jvb3QgPT0gJ2NvbXB0ZXNiYW5jYWlyZXMnIHx8XG4gICAgICAgICAgICAgICAgY29udHJvbGxlcl9yb290ID09ICdjb21wdGVzYmFuY2FpcmVzYm9uJykgJiZcbiAgICAgICAgICAgICAgaXRlbS5zb2xkZWFjdHVlbCA8IDBcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBkYXJrXG4gICAgICAgICAgICBjb2xvcj1cInJlZFwiXG4gICAgICAgICAgICBjbGFzcz1cIm14LTIgc2hha2UtYnRuIGZvbnQtd2VpZ2h0LWJvbGRcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICB7eyB0b0RIKGl0ZW0uc29sZGVhY3R1ZWwpIH19XG5cbiAgICAgICAgICAgICAgPHYtaWNvbiBzbWFsbCBkYXJrPm1kaS1hbGVydDwvdi1pY29uPjwvc3BhblxuICAgICAgICAgICAgPlxuICAgICAgICAgIDwvdi1jaGlwPlxuICAgICAgICAgIDx2LWNoaXAgc21hbGwgdi1lbHNlIGRhcmsgY2xhc3M9XCJteC0yIGZvbnQtd2VpZ2h0LWJvbGRcIiBjb2xvcj1cImdyZWVuXCI+XG4gICAgICAgICAgICA8c3Bhbj4ge3sgdG9ESChpdGVtLnNvbGRlYWN0dWVsKSB9fSA8L3NwYW4+XG4gICAgICAgICAgPC92LWNoaXA+XG4gICAgICAgIDwvdGVtcGxhdGU+XG5cbiAgICAgICAgPCEtLSB3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3cgLS0+XG4gICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6aXRlbS5tb250YW50ZW5jb3Vycz1cInsgaXRlbSB9XCI+XG4gICAgICAgICAgPHYtY2hpcFxuICAgICAgICAgICAgc21hbGxcbiAgICAgICAgICAgIHYtaWY9XCJcbiAgICAgICAgICAgICAgaXRlbS5hY3Rpb25UcmFpdGVyID09ICdUcmFpdGVyJyAmJlxuICAgICAgICAgICAgICBpdGVtLmRlamFyZWdsZSA9PSAwICYmXG4gICAgICAgICAgICAgIChjb250cm9sbGVyX3Jvb3QgPT0gJ2JvbnN2ZW50ZXMnIHx8XG4gICAgICAgICAgICAgICAgY29udHJvbGxlcl9yb290ID09ICdib25zYWNoYXRzJylcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWRlY29yYXRpb24tbGluZS10aHJvdWdoXCI+XG4gICAgICAgICAgICAgIHt7IHRvREgoaXRlbS5tb250YW50ZW5jb3VycykgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgID09PiBmYWN0dXJlXG4gICAgICAgICAgPC92LWNoaXA+XG4gICAgICAgICAgPHYtY2hpcCBzbWFsbCBkYXJrIHYtZWxzZS1pZj1cIml0ZW0ubW9udGFudGVuY291cnMgPiAwXCIgY29sb3I9XCJyZWRcIj5cbiAgICAgICAgICAgIHt7IHRvREgoaXRlbS5tb250YW50ZW5jb3VycykgfX1cbiAgICAgICAgICAgIDx2LWljb24gc21hbGwgZGFyaz5tZGktYWxlcnQ8L3YtaWNvbj5cbiAgICAgICAgICA8L3YtY2hpcD5cbiAgICAgICAgICA8c3BhbiBzbWFsbCB2LWVsc2U+XG4gICAgICAgICAgICB7eyB0b0RIKGl0ZW0ubW9udGFudGVuY291cnMpIH19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICA8IS0tIHd3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3dyAtLT5cblxuICAgICAgICA8dGVtcGxhdGUgdi1zbG90Oml0ZW0ubW9udGFudGVuY291cnNmYWN0dXJlcz1cInsgaXRlbSB9XCI+XG4gICAgICAgICAgPHYtY2hpcFxuICAgICAgICAgICAgc21hbGxcbiAgICAgICAgICAgIHYtaWY9XCJcbiAgICAgICAgICAgICAgKGNvbnRyb2xsZXJfcm9vdCA9PSAnY2xpZW50JyB8fFxuICAgICAgICAgICAgICAgIGNvbnRyb2xsZXJfcm9vdCA9PSAnZm91cm5pc3NldXInKSAmJlxuICAgICAgICAgICAgICBpdGVtLm1vbnRhbnRlbmNvdXJzZmFjdHVyZXMgPiAwXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgZGFya1xuICAgICAgICAgICAgY29sb3I9XCJyZWRcIlxuICAgICAgICAgICAgY2xhc3M9XCJteC0yIHNoYWtlLWJ0biBmb250LXdlaWdodC1ib2xkXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAge3sgdG9ESChpdGVtLm1vbnRhbnRlbmNvdXJzZmFjdHVyZXMpIH19XG5cbiAgICAgICAgICAgICAgPHYtaWNvbiBzbWFsbCBkYXJrPm1kaS1hbGVydDwvdi1pY29uPjwvc3BhblxuICAgICAgICAgICAgPlxuICAgICAgICAgIDwvdi1jaGlwPlxuXG4gICAgICAgICAgPHNwYW4gc21hbGwgdi1lbHNlPlxuICAgICAgICAgICAge3sgdG9ESChpdGVtLm1vbnRhbnRlbmNvdXJzZmFjdHVyZXMpIH19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L3RlbXBsYXRlPlxuXG4gICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6aXRlbS5tb250YW50ZW5jb3Vyc2JvbnM9XCJ7IGl0ZW0gfVwiPlxuICAgICAgICAgIDx2LWNoaXBcbiAgICAgICAgICAgIHNtYWxsXG4gICAgICAgICAgICB2LWlmPVwiXG4gICAgICAgICAgICAgIChjb250cm9sbGVyX3Jvb3QgPT0gJ2NsaWVudCcgfHxcbiAgICAgICAgICAgICAgICBjb250cm9sbGVyX3Jvb3QgPT0gJ2ZvdXJuaXNzZXVyJykgJiZcbiAgICAgICAgICAgICAgaXRlbS5tb250YW50ZW5jb3Vyc2JvbnMgPiAwXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgZGFya1xuICAgICAgICAgICAgY29sb3I9XCJyZWRcIlxuICAgICAgICAgICAgY2xhc3M9XCJteC0yIHNoYWtlLWJ0biBmb250LXdlaWdodC1ib2xkXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAge3sgdG9ESChpdGVtLm1vbnRhbnRlbmNvdXJzYm9ucykgfX1cblxuICAgICAgICAgICAgICA8di1pY29uIHNtYWxsIGRhcms+bWRpLWFsZXJ0PC92LWljb24+PC9zcGFuXG4gICAgICAgICAgICA+XG4gICAgICAgICAgPC92LWNoaXA+XG5cbiAgICAgICAgICA8c3BhbiBzbWFsbCB2LWVsc2U+XG4gICAgICAgICAgICB7eyB0b0RIKGl0ZW0ubW9udGFudGVuY291cnNib25zKSB9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC90ZW1wbGF0ZT5cblxuICAgICAgICA8dGVtcGxhdGUgdi1zbG90Oml0ZW0ubW9udGFudGVuY291cnNhdXRvcmlzZT1cInsgaXRlbSB9XCI+XG4gICAgICAgICAgPHYtY2hpcFxuICAgICAgICAgICAgc21hbGxcbiAgICAgICAgICAgIHYtaWY9XCJcbiAgICAgICAgICAgICAgKGNvbnRyb2xsZXJfcm9vdCA9PSAnY2xpZW50JyB8fFxuICAgICAgICAgICAgICAgIGNvbnRyb2xsZXJfcm9vdCA9PSAnZm91cm5pc3NldXInKSAmJlxuICAgICAgICAgICAgICBpdGVtLm1vbnRhbnRlbmNvdXJzYXV0b3Jpc2UgPT0gMFxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIGRhcmtcbiAgICAgICAgICAgIGNvbG9yPVwib3JhbmdlXCJcbiAgICAgICAgICAgIGNsYXNzPVwibXgtMiBzaGFrZS1idG4gZm9udC13ZWlnaHQtYm9sZFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgIEVuZGV0dGVtZW50IGlsbGltaXTDqSA8di1pY29uIHNtYWxsIGRhcms+bWRpLWFsZXJ0PC92LWljb24+PC9zcGFuXG4gICAgICAgICAgICA+XG4gICAgICAgICAgPC92LWNoaXA+XG5cbiAgICAgICAgICA8di1jaGlwIGRhcmsgY29sb3I9XCJncmVlblwiIHNtYWxsIHYtZWxzZT5cbiAgICAgICAgICAgIHt7IHRvREgoaXRlbS5tb250YW50ZW5jb3Vyc2F1dG9yaXNlKSB9fVxuICAgICAgICAgIDwvdi1jaGlwPlxuICAgICAgICA8L3RlbXBsYXRlPlxuXG4gICAgICAgIDwhLS0gUHJvZHVpdCBTaG93IHd3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3dyAtLT5cblxuICAgICAgICA8dGVtcGxhdGUgdi1zbG90Oml0ZW0uY3VtdWxzdG9jaz1cInsgaXRlbSB9XCI+XG4gICAgICAgICAgPHBcbiAgICAgICAgICAgIHNtYWxsXG4gICAgICAgICAgICB2LWlmPVwiY29udHJvbGxlcl9yb290ID09ICdwcm9kdWl0cycgJiYgaXRlbS5jdW11bHN0b2NrID09IDBcIlxuICAgICAgICAgICAgZGFya1xuICAgICAgICAgICAgY29sb3I9XCJvcmFuZ2VcIlxuICAgICAgICAgID48L3A+XG4gICAgICAgICAgPHYtY2hpcCBkYXJrIGNvbG9yPVwicHJpbWFyeVwiIGNsYXNzPVwibXgtMiBmb250LXdlaWdodC1ib2xkXCIgdi1lbHNlPlxuICAgICAgICAgICAge3sgdG9ESChpdGVtLmN1bXVsc3RvY2spIH19L0hUXG4gICAgICAgICAgPC92LWNoaXA+XG4gICAgICAgIDwvdGVtcGxhdGU+XG5cbiAgICAgICAgPHRlbXBsYXRlIHYtc2xvdDppdGVtLmN1bXVsc3RvY2t0dGM9XCJ7IGl0ZW0gfVwiPlxuICAgICAgICAgIDxwXG4gICAgICAgICAgICBzbWFsbFxuICAgICAgICAgICAgdi1pZj1cImNvbnRyb2xsZXJfcm9vdCA9PSAncHJvZHVpdHMnICYmIGl0ZW0uY3VtdWxzdG9ja3R0YyA9PSAwXCJcbiAgICAgICAgICAgIGRhcmtcbiAgICAgICAgICAgIGNvbG9yPVwib3JhbmdlXCJcbiAgICAgICAgICA+PC9wPlxuICAgICAgICAgIDx2LWNoaXBcbiAgICAgICAgICAgIGRhcmtcbiAgICAgICAgICAgIDpjb2xvcj1cIml0ZW0udGF4ZXMgPiAwID8gJ2dyZWVuJyA6ICdwcmltYXJ5J1wiXG4gICAgICAgICAgICBjbGFzcz1cIm14LTIgZm9udC13ZWlnaHQtYm9sZFwiXG4gICAgICAgICAgICB2LWVsc2VcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c3BhbiB2LWlmPVwiaXRlbS50YXhlcyA+IDBcIj5cbiAgICAgICAgICAgICAgK3t7IGl0ZW0udGF4ZXMgfX0lID0ge3sgdG9ESChpdGVtLmN1bXVsc3RvY2t0dGMpIH19L1RUQzwvc3BhblxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW4gdi1lbHNlPiB7eyB0b0RIKGl0ZW0uY3VtdWxzdG9ja3R0YykgfX0vVFRDPC9zcGFuPlxuICAgICAgICAgIDwvdi1jaGlwPlxuICAgICAgICA8L3RlbXBsYXRlPlxuXG4gICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6aXRlbS5kZXJuaWVycHJpeGFjaGF0PVwieyBpdGVtIH1cIj5cbiAgICAgICAgICA8cFxuICAgICAgICAgICAgc21hbGxcbiAgICAgICAgICAgIHYtaWY9XCJjb250cm9sbGVyX3Jvb3QgPT0gJ3Byb2R1aXRzJyAmJiBpdGVtLmRlcm5pZXJwcml4YWNoYXQgPT0gMFwiXG4gICAgICAgICAgPjwvcD5cbiAgICAgICAgICA8di1jaGlwIHNtYWxsIGRhcmsgY29sb3I9XCJwcmltYXJ5XCIgY2xhc3M9XCJteC0yXCIgdi1lbHNlPlxuICAgICAgICAgICAge3sgdG9ESChpdGVtLmRlcm5pZXJwcml4YWNoYXQpIH19L0hUXG4gICAgICAgICAgPC92LWNoaXA+XG4gICAgICAgIDwvdGVtcGxhdGU+XG5cbiAgICAgICAgPHRlbXBsYXRlIHYtc2xvdDppdGVtLmRlcm5pZXJwcml4dHRjYWNoYXQ9XCJ7IGl0ZW0gfVwiPlxuICAgICAgICAgIDxwXG4gICAgICAgICAgICBzbWFsbFxuICAgICAgICAgICAgdi1pZj1cIlxuICAgICAgICAgICAgICBjb250cm9sbGVyX3Jvb3QgPT0gJ3Byb2R1aXRzJyAmJiBpdGVtLmRlcm5pZXJwcml4dHRjYWNoYXQgPT0gMFxuICAgICAgICAgICAgXCJcbiAgICAgICAgICA+PC9wPlxuXG4gICAgICAgICAgPHYtY2hpcFxuICAgICAgICAgICAgc21hbGxcbiAgICAgICAgICAgIGRhcmtcbiAgICAgICAgICAgIDpjb2xvcj1cIml0ZW0udGF4ZXMgPiAwID8gJ2dyZWVuJyA6ICdwcmltYXJ5J1wiXG4gICAgICAgICAgICBjbGFzcz1cIm14LTJcIlxuICAgICAgICAgICAgdi1lbHNlXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW4gdi1pZj1cIml0ZW0udGF4ZXMgPiAwXCI+XG4gICAgICAgICAgICAgICt7eyBpdGVtLnRheGVzIH19JSA9XG4gICAgICAgICAgICAgIHt7IHRvREgoaXRlbS5kZXJuaWVycHJpeHR0Y2FjaGF0KSB9fS9UVEM8L3NwYW5cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuIHYtZWxzZT4ge3sgdG9ESChpdGVtLmRlcm5pZXJwcml4dHRjYWNoYXQpIH19L1RUQzwvc3Bhbj5cbiAgICAgICAgICA8L3YtY2hpcD5cbiAgICAgICAgPC90ZW1wbGF0ZT5cblxuICAgICAgICA8dGVtcGxhdGUgdi1zbG90Oml0ZW0uc3RvY2s9XCJ7IGl0ZW0gfVwiPlxuICAgICAgICAgIDx2LWNoaXBcbiAgICAgICAgICAgIHNtYWxsXG4gICAgICAgICAgICB2LWlmPVwiY29udHJvbGxlcl9yb290ID09ICdwcm9kdWl0cycgJiYgaXRlbS5zdG9jayA8PSAwXCJcbiAgICAgICAgICAgIGRhcmtcbiAgICAgICAgICAgIGNvbG9yPVwicmVkXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyBpdGVtLnN0b2NrIH19XG4gICAgICAgICAgPC92LWNoaXA+XG5cbiAgICAgICAgICA8di1jaGlwIHNtYWxsIGRhcmsgY29sb3I9XCJwaW5rXCIgY2xhc3M9XCJteC0yIGZvbnQtd2VpZ2h0LWJvbGRcIiB2LWVsc2U+XG4gICAgICAgICAgICB7eyBpdGVtLnN0b2NrIH19XG4gICAgICAgICAgPC92LWNoaXA+XG4gICAgICAgIDwvdGVtcGxhdGU+XG5cbiAgICAgICAgPCEtLSB3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3cgLS0+XG4gICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6aXRlbS5hdm9pcj1cInsgaXRlbSB9XCI+XG4gICAgICAgICAgPHRhYmxlLWFjdGlvbnRhdm9pcmJvbnZlbnRlXG4gICAgICAgICAgICA6YXZvaXI9XCJpdGVtLmF2b2lyXCJcbiAgICAgICAgICAgIDppdGVtPVwiaXRlbVwiXG4gICAgICAgICAgICA6Y29udHJvbGxlcl9yb290PVwiY29udHJvbGxlcl9yb290XCJcbiAgICAgICAgICAgIDpzbG90X3Nob3c9XCJzbG90X3Nob3dcIlxuICAgICAgICAgICAgOmFjdGlvbl90cmFpdGVtZW50PVwiYWN0aW9uX3RyYWl0ZW1lbnRcIlxuICAgICAgICAgID48L3RhYmxlLWFjdGlvbnRhdm9pcmJvbnZlbnRlPlxuICAgICAgICA8L3RlbXBsYXRlPlxuXG4gICAgICAgIDwhLS0gZm9yZWlnbl9rZXkgd3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3IC0tPlxuXG4gICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6aXRlbS5ib25zVmVudGVzPVwieyBpdGVtIH1cIj5cbiAgICAgICAgICA8dGFibGUtZm9yZWlnbmtleVxuICAgICAgICAgICAgY29udHJvbGxlcj1cImJvbnN2ZW50ZXNcIlxuICAgICAgICAgICAgOmlkPVwiaXRlbVsnYm9uc1ZlbnRlc19pZCddXCJcbiAgICAgICAgICAgIDp0ZXh0PVwiaXRlbS5ib25zVmVudGVzXCJcbiAgICAgICAgICAgIDppdGVtc2hvdz1cIltcbiAgICAgICAgICAgICAgJ3RpdHJlJyxcbiAgICAgICAgICAgICAgJ3JlZicsXG4gICAgICAgICAgICAgICdjbGllbnQnLFxuICAgICAgICAgICAgICAnbW9udGFudFR0YycsXG4gICAgICAgICAgICAgICdkYXRlJyxcbiAgICAgICAgICAgICAgJ2VudHJlcG90JyxcbiAgICAgICAgICAgICAgJ3VzZXInLFxuICAgICAgICAgICAgXVwiXG4gICAgICAgICAgPjwvdGFibGUtZm9yZWlnbmtleT5cbiAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgPHRlbXBsYXRlIHYtc2xvdDppdGVtLmJvbnNBY2hhdHM9XCJ7IGl0ZW0gfVwiPlxuICAgICAgICAgIDx0YWJsZS1mb3JlaWdua2V5XG4gICAgICAgICAgICBjb250cm9sbGVyPVwiYm9uc2FjaGF0c1wiXG4gICAgICAgICAgICA6aWQ9XCJpdGVtWydib25zQWNoYXRzX2lkJ11cIlxuICAgICAgICAgICAgOnRleHQ9XCJpdGVtLmJvbnNBY2hhdHNcIlxuICAgICAgICAgICAgOml0ZW1zaG93PVwiW1xuICAgICAgICAgICAgICAndGl0cmUnLFxuICAgICAgICAgICAgICAncmVmZm91cm5pc3NldXInLFxuICAgICAgICAgICAgICAnZm91cm5pc3NldXInLFxuICAgICAgICAgICAgICAnbW9udGFudFR0YycsXG4gICAgICAgICAgICAgICdkYXRlTGl2cmFpc29uJyxcbiAgICAgICAgICAgICAgJ2VudHJlcG90JyxcbiAgICAgICAgICAgICAgJ3VzZXInLFxuICAgICAgICAgICAgXVwiXG4gICAgICAgICAgPjwvdGFibGUtZm9yZWlnbmtleT5cbiAgICAgICAgPC90ZW1wbGF0ZT5cblxuICAgICAgICA8dGVtcGxhdGUgdi1zbG90Oml0ZW0uYm9uc3ZlbnRlcz1cInsgaXRlbSB9XCI+XG4gICAgICAgICAgPHRhYmxlLWZvcmVpZ25rZXlcbiAgICAgICAgICAgIGNvbnRyb2xsZXI9XCJib25zdmVudGVzXCJcbiAgICAgICAgICAgIDppZD1cIml0ZW1bJ2JvbnN2ZW50ZXNfaWQnXVwiXG4gICAgICAgICAgICA6dGV4dD1cIml0ZW0uYm9uc3ZlbnRlc1wiXG4gICAgICAgICAgICA6aXRlbXNob3c9XCJbXG4gICAgICAgICAgICAgICd0aXRyZScsXG4gICAgICAgICAgICAgICdyZWYnLFxuICAgICAgICAgICAgICAnY2xpZW50JyxcbiAgICAgICAgICAgICAgJ21vbnRhbnRUdGMnLFxuICAgICAgICAgICAgICAnZGF0ZScsXG4gICAgICAgICAgICAgICdlbnRyZXBvdCcsXG4gICAgICAgICAgICAgICd1c2VyJyxcbiAgICAgICAgICAgIF1cIlxuICAgICAgICAgID5cbiAgICAgICAgICA8L3RhYmxlLWZvcmVpZ25rZXk+XG4gICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6aXRlbS5ib25zYWNoYXRzPVwieyBpdGVtIH1cIj5cbiAgICAgICAgICA8dGFibGUtZm9yZWlnbmtleVxuICAgICAgICAgICAgY29udHJvbGxlcj1cImJvbnNhY2hhdHNcIlxuICAgICAgICAgICAgOmlkPVwiaXRlbVsnYm9uc2FjaGF0c19pZCddXCJcbiAgICAgICAgICAgIDp0ZXh0PVwiaXRlbS5ib25zYWNoYXRzXCJcbiAgICAgICAgICAgIDppdGVtc2hvdz1cIltcbiAgICAgICAgICAgICAgJ3RpdHJlJyxcbiAgICAgICAgICAgICAgJ3JlZmZvdXJuaXNzZXVyJyxcbiAgICAgICAgICAgICAgJ2ZvdXJuaXNzZXVyJyxcbiAgICAgICAgICAgICAgJ21vbnRhbnRUdGMnLFxuICAgICAgICAgICAgICAnZGF0ZUxpdnJhaXNvbicsXG4gICAgICAgICAgICAgICdlbnRyZXBvdCcsXG4gICAgICAgICAgICAgICd1c2VyJyxcbiAgICAgICAgICAgIF1cIlxuICAgICAgICAgID48L3RhYmxlLWZvcmVpZ25rZXk+XG4gICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6aXRlbS5hdm9pcnN2ZW50ZXM9XCJ7IGl0ZW0gfVwiPlxuICAgICAgICAgIDx0YWJsZS1mb3JlaWdua2V5XG4gICAgICAgICAgICBjb250cm9sbGVyPVwiYXZvaXJzdmVudGVzXCJcbiAgICAgICAgICAgIDppZD1cIml0ZW1bJ2F2b2lyc3ZlbnRlc19pZCddXCJcbiAgICAgICAgICAgIDp0ZXh0PVwiaXRlbS5hdm9pcnN2ZW50ZXNcIlxuICAgICAgICAgICAgOml0ZW1zaG93PVwiW1xuICAgICAgICAgICAgICAndGl0cmUnLFxuICAgICAgICAgICAgICAncmVmJyxcbiAgICAgICAgICAgICAgJ2NsaWVudCcsXG4gICAgICAgICAgICAgICdtb250YW50VHRjJyxcbiAgICAgICAgICAgICAgJ2RhdGUnLFxuICAgICAgICAgICAgICAnZW50cmVwb3QnLFxuICAgICAgICAgICAgICAndXNlcicsXG4gICAgICAgICAgICBdXCJcbiAgICAgICAgICA+PC90YWJsZS1mb3JlaWdua2V5PlxuICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICA8dGVtcGxhdGUgdi1zbG90Oml0ZW0uYXZvaXJzYWNoYXRzPVwieyBpdGVtIH1cIj5cbiAgICAgICAgICA8dGFibGUtZm9yZWlnbmtleVxuICAgICAgICAgICAgY29udHJvbGxlcj1cImF2b2lyc2FjaGF0c1wiXG4gICAgICAgICAgICA6aWQ9XCJpdGVtWydhdm9pcnNhY2hhdHNfaWQnXVwiXG4gICAgICAgICAgICA6dGV4dD1cIml0ZW0uYXZvaXJzYWNoYXRzXCJcbiAgICAgICAgICAgIDppdGVtc2hvdz1cIltcbiAgICAgICAgICAgICAgJ3RpdHJlJyxcbiAgICAgICAgICAgICAgJ3JlZmZvdXJuaXNzZXVyJyxcbiAgICAgICAgICAgICAgJ2ZvdXJuaXNzZXVyJyxcbiAgICAgICAgICAgICAgJ21vbnRhbnRUdGMnLFxuICAgICAgICAgICAgICAnZGF0ZUxpdnJhaXNvbicsXG4gICAgICAgICAgICAgICdlbnRyZXBvdCcsXG4gICAgICAgICAgICAgICd1c2VyJyxcbiAgICAgICAgICAgIF1cIlxuICAgICAgICAgID48L3RhYmxlLWZvcmVpZ25rZXk+XG4gICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6aXRlbS5mYWN0dXJlc0FjaGF0cz1cInsgaXRlbSB9XCI+XG4gICAgICAgICAgPHRhYmxlLWZvcmVpZ25rZXlcbiAgICAgICAgICAgIGNvbnRyb2xsZXI9XCJmYWN0dXJlc2FjaGF0c1wiXG4gICAgICAgICAgICA6aWQ9XCJpdGVtWydmYWN0dXJlc0FjaGF0c19pZCddXCJcbiAgICAgICAgICAgIDp0ZXh0PVwiaXRlbS5mYWN0dXJlc0FjaGF0c1wiXG4gICAgICAgICAgICA6aXRlbXNob3c9XCJbXG4gICAgICAgICAgICAgICd0aXRyZScsXG4gICAgICAgICAgICAgICdyZWZmb3Vybmlzc2V1cicsXG4gICAgICAgICAgICAgICdmb3Vybmlzc2V1cicsXG4gICAgICAgICAgICAgICdtb250YW50VHRjJyxcbiAgICAgICAgICAgICAgJ2RhdGUnLFxuICAgICAgICAgICAgICAndXNlcicsXG4gICAgICAgICAgICBdXCJcbiAgICAgICAgICA+PC90YWJsZS1mb3JlaWdua2V5PlxuICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICA8dGVtcGxhdGUgdi1zbG90Oml0ZW0uZmFjdHVyZXNhY2hhdHM9XCJ7IGl0ZW0gfVwiPlxuICAgICAgICAgIDx0YWJsZS1mb3JlaWdua2V5XG4gICAgICAgICAgICBjb250cm9sbGVyPVwiZmFjdHVyZXNhY2hhdHNcIlxuICAgICAgICAgICAgOmlkPVwiaXRlbVsnZmFjdHVyZXNhY2hhdHNfaWQnXVwiXG4gICAgICAgICAgICA6dGV4dD1cIml0ZW0uZmFjdHVyZXNhY2hhdHNcIlxuICAgICAgICAgICAgOml0ZW1zaG93PVwiW1xuICAgICAgICAgICAgICAndGl0cmUnLFxuICAgICAgICAgICAgICAncmVmZm91cm5pc3NldXInLFxuICAgICAgICAgICAgICAnZm91cm5pc3NldXInLFxuICAgICAgICAgICAgICAnbW9udGFudFR0YycsXG4gICAgICAgICAgICAgICdkYXRlJyxcbiAgICAgICAgICAgICAgJ3VzZXInLFxuICAgICAgICAgICAgXVwiXG4gICAgICAgICAgPjwvdGFibGUtZm9yZWlnbmtleT5cbiAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgPHRlbXBsYXRlIHYtc2xvdDppdGVtLmZhY3R1cmVzdmVudGVzPVwieyBpdGVtIH1cIj5cbiAgICAgICAgICA8dGFibGUtZm9yZWlnbmtleVxuICAgICAgICAgICAgY29udHJvbGxlcj1cImZhY3R1cmVzdmVudGVzXCJcbiAgICAgICAgICAgIDppZD1cIml0ZW1bJ2ZhY3R1cmVzdmVudGVzX2lkJ11cIlxuICAgICAgICAgICAgOnRleHQ9XCJpdGVtLmZhY3R1cmVzdmVudGVzXCJcbiAgICAgICAgICAgIDppdGVtc2hvdz1cIlsndGl0cmUnLCAncmVmJywgJ2NsaWVudCcsICdtb250YW50VHRjJywgJ2RhdGUnLCAndXNlciddXCJcbiAgICAgICAgICA+PC90YWJsZS1mb3JlaWdua2V5PlxuICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICA8dGVtcGxhdGUgdi1zbG90Oml0ZW0uZmFjdHVyZXNWZW50ZXM9XCJ7IGl0ZW0gfVwiPlxuICAgICAgICAgIDx0YWJsZS1mb3JlaWdua2V5XG4gICAgICAgICAgICBjb250cm9sbGVyPVwiZmFjdHVyZXN2ZW50ZXNcIlxuICAgICAgICAgICAgOmlkPVwiaXRlbVsnZmFjdHVyZXNWZW50ZXNfaWQnXVwiXG4gICAgICAgICAgICA6dGV4dD1cIml0ZW0uZmFjdHVyZXNWZW50ZXNcIlxuICAgICAgICAgICAgOml0ZW1zaG93PVwiWyd0aXRyZScsICdyZWYnLCAnY2xpZW50JywgJ21vbnRhbnRUdGMnLCAnZGF0ZScsICd1c2VyJ11cIlxuICAgICAgICAgID48L3RhYmxlLWZvcmVpZ25rZXk+XG4gICAgICAgIDwvdGVtcGxhdGU+XG5cbiAgICAgICAgPHRlbXBsYXRlIHYtc2xvdDppdGVtLnVzZXI9XCJ7IGl0ZW0gfVwiPlxuICAgICAgICAgIDx0YWJsZS1mb3JlaWdua2V5XG4gICAgICAgICAgICBjb250cm9sbGVyPVwidXNlclwiXG4gICAgICAgICAgICA6aWQ9XCJpdGVtWyd1c2VyX2lkJ11cIlxuICAgICAgICAgICAgOnRleHQ9XCJpdGVtLnVzZXJcIlxuICAgICAgICAgICAgOml0ZW1zaG93PVwiWydpZGVudGlmaWFudCcsICdwcmVub20nLCAnbm9tJywgJ3RlbGVwaG9uZScsICdnc20nXVwiXG4gICAgICAgICAgPjwvdGFibGUtZm9yZWlnbmtleT5cbiAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgPHRlbXBsYXRlIHYtc2xvdDppdGVtLnByb2R1aXQ9XCJ7IGl0ZW0gfVwiPlxuICAgICAgICAgIDx0YWJsZS1mb3JlaWdua2V5XG4gICAgICAgICAgICBjb250cm9sbGVyPVwicHJvZHVpdHNcIlxuICAgICAgICAgICAgOmlkPVwiaXRlbVsncHJvZHVpdF9pZCddXCJcbiAgICAgICAgICAgIDp0ZXh0PVwiaXRlbS5wcm9kdWl0XCJcbiAgICAgICAgICAgIDppdGVtc2hvdz1cIlsncHJpeFZlbnRlSHQnLCAndGF4ZXMnLCAnY2F0ZWdvcmllc1Byb2R1aXQnLCAndXNlciddXCJcbiAgICAgICAgICA+PC90YWJsZS1mb3JlaWdua2V5PlxuICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICA8dGVtcGxhdGUgdi1zbG90Oml0ZW0ucHJvZHVpdHM9XCJ7IGl0ZW0gfVwiPlxuICAgICAgICAgIDx0YWJsZS1mb3JlaWdua2V5XG4gICAgICAgICAgICBjb250cm9sbGVyPVwicHJvZHVpdHNcIlxuICAgICAgICAgICAgOmlkPVwiaXRlbVsncHJvZHVpdHNfaWQnXVwiXG4gICAgICAgICAgICA6dGV4dD1cIml0ZW0ucHJvZHVpdHNcIlxuICAgICAgICAgICAgOml0ZW1zaG93PVwiWydwcml4VmVudGVIdCcsICd0YXhlcycsICdjYXRlZ29yaWVzUHJvZHVpdCcsICd1c2VyJ11cIlxuICAgICAgICAgID48L3RhYmxlLWZvcmVpZ25rZXk+XG4gICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6aXRlbS5mb3Vybmlzc2V1cj1cInsgaXRlbSB9XCI+XG4gICAgICAgICAgPHRhYmxlLWZvcmVpZ25rZXlcbiAgICAgICAgICAgIGNvbnRyb2xsZXI9XCJmb3Vybmlzc2V1clwiXG4gICAgICAgICAgICA6aWQ9XCJpdGVtWydmb3Vybmlzc2V1cl9pZCddXCJcbiAgICAgICAgICAgIDp0ZXh0PVwiaXRlbS5mb3Vybmlzc2V1clwiXG4gICAgICAgICAgICA6aXRlbXNob3c9XCJbXG4gICAgICAgICAgICAgICdtb250YW50ZW5jb3Vyc2F1dG9yaXNlJyxcbiAgICAgICAgICAgICAgJ21vbnRhbnRlbmNvdXJzYm9ucycsXG4gICAgICAgICAgICAgICdtb250YW50ZW5jb3Vyc2ZhY3R1cmVzJyxcbiAgICAgICAgICAgICAgJ3JlZicsXG4gICAgICAgICAgICAgICd0ZWxlcGhvbmUnLFxuICAgICAgICAgICAgICAnZ3NtJyxcbiAgICAgICAgICAgICAgJ2ljZScsXG4gICAgICAgICAgICBdXCJcbiAgICAgICAgICA+PC90YWJsZS1mb3JlaWdua2V5PlxuICAgICAgICA8L3RlbXBsYXRlPlxuXG4gICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6aXRlbS5jbGllbnQ9XCJ7IGl0ZW0gfVwiPlxuICAgICAgICAgIDx0YWJsZS1mb3JlaWdua2V5XG4gICAgICAgICAgICBjb250cm9sbGVyPVwiY2xpZW50XCJcbiAgICAgICAgICAgIDppZD1cIml0ZW1bJ2NsaWVudF9pZCddXCJcbiAgICAgICAgICAgIDp0ZXh0PVwiaXRlbS5jbGllbnRcIlxuICAgICAgICAgICAgOml0ZW1zaG93PVwiW1xuICAgICAgICAgICAgICAnbW9udGFudGVuY291cnNhdXRvcmlzZScsXG4gICAgICAgICAgICAgICdtb250YW50ZW5jb3Vyc2JvbnMnLFxuICAgICAgICAgICAgICAnbW9udGFudGVuY291cnNmYWN0dXJlcycsXG4gICAgICAgICAgICAgICdyZWYnLFxuICAgICAgICAgICAgICAndGVsZXBob25lJyxcbiAgICAgICAgICAgICAgJ2dzbScsXG4gICAgICAgICAgICBdXCJcbiAgICAgICAgICA+PC90YWJsZS1mb3JlaWdua2V5PlxuICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICA8dGVtcGxhdGUgdi1zbG90Oml0ZW0uZW50cmVwb3Q9XCJ7IGl0ZW0gfVwiPlxuICAgICAgICAgIDx0YWJsZS1mb3JlaWdua2V5XG4gICAgICAgICAgICBjb250cm9sbGVyPVwiZW50cmVwb3RcIlxuICAgICAgICAgICAgOmlkPVwiaXRlbVsnZW50cmVwb3RfaWQnXVwiXG4gICAgICAgICAgICA6dGV4dD1cIml0ZW0uZW50cmVwb3RcIlxuICAgICAgICAgICAgOml0ZW1zaG93PVwiWydkZXNjcmlwdGlvbicsICdhZHJlc3NlJywgJ3RlbGVwaG9uZScsICd2aWxsZSddXCJcbiAgICAgICAgICA+PC90YWJsZS1mb3JlaWdua2V5PlxuICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICA8dGVtcGxhdGUgdi1zbG90Oml0ZW0udmVyc2VudHJlcG90PVwieyBpdGVtIH1cIj5cbiAgICAgICAgICA8dGFibGUtZm9yZWlnbmtleVxuICAgICAgICAgICAgY29udHJvbGxlcj1cImVudHJlcG90XCJcbiAgICAgICAgICAgIDppZD1cIml0ZW1bJ3ZlcnNlbnRyZXBvdF9pZCddXCJcbiAgICAgICAgICAgIDp0ZXh0PVwiaXRlbS52ZXJzZW50cmVwb3RcIlxuICAgICAgICAgICAgOml0ZW1zaG93PVwiWydkZXNjcmlwdGlvbicsICdhZHJlc3NlJywgJ3RlbGVwaG9uZScsICd2aWxsZSddXCJcbiAgICAgICAgICA+PC90YWJsZS1mb3JlaWdua2V5PlxuICAgICAgICA8L3RlbXBsYXRlPlxuXG4gICAgICAgIDwhLS0gd3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3IC0tPlxuICAgICAgICA8dGVtcGxhdGVcbiAgICAgICAgICB2LXNsb3Q6aGVhZGVyPVwieyBwcm9wczogeyBoZWFkZXJzLCBpdGVtcywgaXNNb2JpbGUgfSB9XCJcbiAgICAgICAgICB2LWlmPVwiY2FsY3VsZW1vbnRhbnRpdGVtLmxlbmd0aCA+IDAgJiYgaXRlbXMubGVuZ3RoID4gMFwiXG4gICAgICAgID5cbiAgICAgICAgICA8dGhlYWQ+XG4gICAgICAgICAgICA8dHIgdi1pZj1cIiFpc01vYmlsZSAmJiBzZWxlY3RlZC5sZW5ndGggPiAwXCI+XG4gICAgICAgICAgICAgIDx0ZCA6Y29sc3Bhbj1cImhlYWRlcnMubGVuZ3RoXCI+XG4gICAgICAgICAgICAgICAgPHYtYWxlcnRcbiAgICAgICAgICAgICAgICAgIGJvcmRlcj1cImxlZnRcIlxuICAgICAgICAgICAgICAgICAgY29sb3JlZC1ib3JkZXJcbiAgICAgICAgICAgICAgICAgIGNvbG9yPVwib3JhbmdlXCJcbiAgICAgICAgICAgICAgICAgIGRlbnNlXG4gICAgICAgICAgICAgICAgICBpY29uPVwibWRpLWNhc2gtbXVsdGlwbGVcIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cInN1Y2Nlc3NcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIGxlcyDDqWxlbWVudHMgc2VsZWN0ZXIgOnt7IHNlbGVjdGVkLmxlbmd0aCB9fTxiciAvPlxuXG4gICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICB2LWZvcj1cIihtb250YW50LCBpbmRleG1vbnRhbnR0KSBpbiBjYWxjdWxlbW9udGFudGl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICA6a2V5PVwiaW5kZXhtb250YW50dFwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIHYtc2hvdz1cIm5vdGFmZmljaGUuaW5jbHVkZXMobW9udGFudCkgPT0gZmFsc2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAoIHt7ICR0KFwiVE9UQUwgXCIgKyBtb250YW50KSB9fSA6XG4gICAgICAgICAgICAgICAgICAgICAge3sgY2FsY3VsZW1vbnRhbnQoc2VsZWN0ZWQsIG1vbnRhbnQpIH19IERIICApIFxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC92LWFsZXJ0PlxuICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICA8L3RoZWFkPlxuICAgICAgICA8L3RlbXBsYXRlPlxuXG4gICAgICAgIDx0ZW1wbGF0ZVxuICAgICAgICAgIHYtc2xvdDpib2R5LmFwcGVuZD1cInsgaGVhZGVycywgaXRlbXMsIGlzU2VsZWN0ZWQsIGlzTW9iaWxlIH1cIlxuICAgICAgICAgIHYtaWY9XCJjYWxjdWxlbW9udGFudGl0ZW0ubGVuZ3RoID4gMCAmJiBpdGVtcy5sZW5ndGggPiAwXCJcbiAgICAgICAgPlxuICAgICAgICAgIDx0ciB2LWlmPVwiIWlzTW9iaWxlXCI+XG4gICAgICAgICAgICA8dGQgOmNvbHNwYW49XCJoZWFkZXJzLmxlbmd0aFwiIHYtaWY9XCJzZWxlY3RlZC5sZW5ndGggPT0gMFwiPlxuICAgICAgICAgICAgICA8di1hbGVydFxuICAgICAgICAgICAgICAgIGJvcmRlcj1cImxlZnRcIlxuICAgICAgICAgICAgICAgIGNvbG9yPVwiZ3JlZW5cIlxuICAgICAgICAgICAgICAgIGRlbnNlXG4gICAgICAgICAgICAgICAgaWNvbj1cIm1kaS1jYXNoLW11bHRpcGxlXCJcbiAgICAgICAgICAgICAgICBjb2xvcmVkLWJvcmRlclxuICAgICAgICAgICAgICAgIHR5cGU9XCJzdWNjZXNzXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIGxlcyDDqWxlbWVudHMgYWZmaWNoZXI6e3sgaXRlbXMubGVuZ3RoIH19PGJyIC8+XG5cbiAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgdi1mb3I9XCIobW9udGFudCwgaW5kZXhtb250YW50KSBpbiBjYWxjdWxlbW9udGFudGl0ZW1cIlxuICAgICAgICAgICAgICAgICAgOmtleT1cImluZGV4bW9udGFudFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gdi1zaG93PVwibm90YWZmaWNoZS5pbmNsdWRlcyhtb250YW50KSA9PSBmYWxzZVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyAkdChcIlRPVEFMIFwiICsgbW9udGFudCkgfX0gOlxuICAgICAgICAgICAgICAgICAgICB7eyBjYWxjdWxlbW9udGFudChpdGVtcywgbW9udGFudCkgfX0gREg8YnIgLz5cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvdi1hbGVydD5cbiAgICAgICAgICAgIDwvdGQ+XG5cbiAgICAgICAgICAgIDx0ZCA6Y29sc3Bhbj1cImhlYWRlcnMubGVuZ3RoXCIgdi1lbHNlPlxuICAgICAgICAgICAgICA8di1hbGVydFxuICAgICAgICAgICAgICAgIGJvcmRlcj1cImxlZnRcIlxuICAgICAgICAgICAgICAgIGNvbG9yZWQtYm9yZGVyXG4gICAgICAgICAgICAgICAgY29sb3I9XCJvcmFuZ2VcIlxuICAgICAgICAgICAgICAgIGRlbnNlXG4gICAgICAgICAgICAgICAgaWNvbj1cIm1kaS1jYXNoLW11bHRpcGxlXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwic3VjY2Vzc1wiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBsZXMgw6lsZW1lbnRzIHNlbGVjdGVyIDp7eyBzZWxlY3RlZC5sZW5ndGggfX08YnIgLz5cblxuICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICB2LWZvcj1cIihtb250YW50LCBpbmRleG1vbnRhbnR0KSBpbiBjYWxjdWxlbW9udGFudGl0ZW1cIlxuICAgICAgICAgICAgICAgICAgOmtleT1cImluZGV4bW9udGFudHRcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIHYtc2hvdz1cIm5vdGFmZmljaGUuaW5jbHVkZXMobW9udGFudCkgPT0gZmFsc2VcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgJHQoXCJUT1RBTCBcIiArIG1vbnRhbnQpIH19IDpcbiAgICAgICAgICAgICAgICAgICAge3sgY2FsY3VsZW1vbnRhbnQoc2VsZWN0ZWQsIG1vbnRhbnQpIH19IERIPGJyIC8+XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8L3YtYWxlcnQ+XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICAgIDwvdHI+XG4gICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICA8L3YtZGF0YS10YWJsZT5cblxuICAgICAgPHRhYmxlLWRpYWxvZyA6Y29udHJvbGxlcl9yb290PVwiY29udHJvbGxlcl9yb290XCIgdi1pZj1cInNsb3Rfc2hvd1wiPlxuICAgICAgICA8dGVtcGxhdGUgdi1zbG90OnNob3c+XG4gICAgICAgICAgPHNsb3QgbmFtZT1cInNob3dcIj48L3Nsb3Q+XG4gICAgICAgIDwvdGVtcGxhdGU+XG5cbiAgICAgICAgPHRlbXBsYXRlIHYtc2xvdDphZGQ+XG4gICAgICAgICAgPHNsb3QgbmFtZT1cImFkZFwiPjwvc2xvdD5cbiAgICAgICAgPC90ZW1wbGF0ZT5cblxuICAgICAgICA8dGVtcGxhdGUgdi1zbG90OnVwZGF0ZT5cbiAgICAgICAgICA8c2xvdCBuYW1lPVwidXBkYXRlXCI+PC9zbG90PlxuICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgPC90YWJsZS1kaWFsb2c+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdD5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgcHJvcHM6IHtcbiAgICBjb250cm9sbGVyX3Jvb3Q6IHt9LFxuXG4gICAgc2xvdF9zaG93OiB7IGRlZmF1bHQ6IGZhbHNlIH0sXG4gICAgYWN0aW9uX3RyYWl0ZW1lbnQ6IHsgZGVmYXVsdDogdHJ1ZSB9LFxuXG4gICAgc2VsZWN0YWpheDoge1xuICAgICAgdHlwZTogQXJyYXksXG4gICAgICBkZWZhdWx0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH0sXG4gICAgfSxcbiAgICBjYWxjdWxlbW9udGFudGl0ZW06IHtcbiAgICAgIHR5cGU6IEFycmF5LFxuICAgICAgZGVmYXVsdDogKCkgPT4ge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9LFxuICAgIH0sXG4gIH0sXG4gIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlzTW9iaWxlOiBmYWxzZSxcbiAgICAgIG9wdGlvbnNEYXRhVGFibGU6IG51bGwsXG4gICAgfTtcbiAgfSxcbiAgd2F0Y2g6IHtcbiAgICBvcHRpb25zRGF0YVRhYmxlKG5ld1ZhbHVlLCBvbGRWYWx1ZSkge1xuICAgICAgdGhpcy4kc3RvcmUuY29tbWl0KFwic2hvd19kYXRhL3NldF9zb3J0QnlcIiwge1xuICAgICAgICBjb250cm9sbGVyX3Jvb3Q6IHRoaXMuY29udHJvbGxlcl9yb290LFxuICAgICAgICBkYXRhOiBuZXdWYWx1ZS5zb3J0QnksXG4gICAgICB9KTtcbiAgICAgIHRoaXMuJHN0b3JlLmNvbW1pdChcInNob3dfZGF0YS9zZXRfc29ydERlc2NcIiwge1xuICAgICAgICBjb250cm9sbGVyX3Jvb3Q6IHRoaXMuY29udHJvbGxlcl9yb290LFxuICAgICAgICBkYXRhOiBuZXdWYWx1ZS5zb3J0RGVzYyxcbiAgICAgIH0pO1xuICAgICAgdGhpcy4kc3RvcmUuY29tbWl0KFwic2hvd19kYXRhL3NldF9pdGVtc1BlclBhZ2VcIiwge1xuICAgICAgICBjb250cm9sbGVyX3Jvb3Q6IHRoaXMuY29udHJvbGxlcl9yb290LFxuICAgICAgICBkYXRhOiBuZXdWYWx1ZS5pdGVtc1BlclBhZ2UsXG4gICAgICB9KTtcbiAgICAgIHRoaXMuJHN0b3JlLmNvbW1pdChcInNob3dfZGF0YS9zZXRfcGFnZVwiLCB7XG4gICAgICAgIGNvbnRyb2xsZXJfcm9vdDogdGhpcy5jb250cm9sbGVyX3Jvb3QsXG4gICAgICAgIGRhdGE6IG5ld1ZhbHVlLnBhZ2UsXG4gICAgICB9KTtcbiAgICAgIC8vIGluaXRpYWwgb2xkVmFsdWUgbnVsbCA9PT4gZGF0YSB7IG9wdGlvbnNEYXRhVGFibGU6IG51bGwsLi4ufVxuXG4gICAgICBpZiAob2xkVmFsdWUgIT0gbnVsbCkge1xuICAgICAgICB0aGlzLiRzdG9yZS5kaXNwYXRjaChcInJ1bl9zaG93XCIsIHt9KTtcbiAgICAgIH1cbiAgICB9LFxuICB9LFxuXG4gIGJlZm9yZURlc3Ryb3koKSB7XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwicmVzaXplXCIsIHRoaXMub25SZXNpemUsIHsgcGFzc2l2ZTogdHJ1ZSB9KTtcbiAgICB9XG4gIH0sXG5cbiAgbW91bnRlZCgpIHtcbiAgICB0aGlzLm9uUmVzaXplKCk7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJyZXNpemVcIiwgdGhpcy5vblJlc2l6ZSwgeyBwYXNzaXZlOiB0cnVlIH0pO1xuICB9LFxuICBjb21wdXRlZDoge1xuICAgIHRpdGxlKCkge1xuICAgICAgcmV0dXJuIHRoaXMuJHN0b3JlLmdldHRlcnNbXCJzaG93X2RhdGEvZ190aXRsZVwiXSh7XG4gICAgICAgIGNvbnRyb2xsZXJfcm9vdDogdGhpcy5jb250cm9sbGVyX3Jvb3QsXG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgbm90YWZmaWNoZSgpIHtcbiAgICAgIHJldHVybiB0aGlzLiRzdG9yZS5nZXR0ZXJzW1wic2hvd19kYXRhL2dfbm90X2FmZmljaGVcIl0oe1xuICAgICAgICBjb250cm9sbGVyX3Jvb3Q6IHRoaXMuY29udHJvbGxlcl9yb290LFxuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHBhZ2UoKSB7XG4gICAgICByZXR1cm4gdGhpcy4kc3RvcmUuZ2V0dGVyc1tcInNob3dfZGF0YS9nX3BhZ2VcIl0oe1xuICAgICAgICBjb250cm9sbGVyX3Jvb3Q6IHRoaXMuY29udHJvbGxlcl9yb290LFxuICAgICAgfSk7XG4gICAgfSxcbiAgICBpdGVtc1BlclBhZ2UoKSB7XG4gICAgICByZXR1cm4gdGhpcy4kc3RvcmUuZ2V0dGVyc1tcInNob3dfZGF0YS9nX2l0ZW1zUGVyUGFnZVwiXSh7XG4gICAgICAgIGNvbnRyb2xsZXJfcm9vdDogdGhpcy5jb250cm9sbGVyX3Jvb3QsXG4gICAgICB9KTtcbiAgICB9LFxuICAgIFRvdGFsSXRlbUNvdW50KCkge1xuICAgICAgcmV0dXJuIHRoaXMuJHN0b3JlLmdldHRlcnNbXCJzaG93X2RhdGEvZ19Ub3RhbEl0ZW1Db3VudFwiXSh7XG4gICAgICAgIGNvbnRyb2xsZXJfcm9vdDogdGhpcy5jb250cm9sbGVyX3Jvb3QsXG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgaXRlbXMoKSB7XG4gICAgICByZXR1cm4gdGhpcy4kc3RvcmUuZ2V0dGVyc1tcInNob3dfZGF0YS9nX2l0ZW1zXCJdKHtcbiAgICAgICAgY29udHJvbGxlcl9yb290OiB0aGlzLmNvbnRyb2xsZXJfcm9vdCxcbiAgICAgIH0pO1xuXG4gICAgICAvLyBpdGVtcyA9IHRoaXMuc2hvd19zdHlsZV9ib29sZWFuKGl0ZW1zKTtcblxuICAgICAgLy8gIHJldHVybiBpdGVtcztcbiAgICB9LFxuXG4gICAgaXRlbXNfc2hvd19zdHlsZSgpIHtcbiAgICAgIGxldCBpdGVtcyA9IHRoaXMuaXRlbXM7XG5cbiAgICAgIGl0ZW1zID0gdGhpcy5zaG93X3N0eWxlX2Jvb2xlYW4oaXRlbXMpO1xuXG4gICAgICByZXR1cm4gaXRlbXM7XG4gICAgfSxcblxuICAgIHNlbGVjdGVkKCkge1xuICAgICAgcmV0dXJuIHRoaXMuJHN0b3JlLmdldHRlcnNbXCJzaG93X2RhdGEvZ19zZWxlY3RlZFwiXSh7XG4gICAgICAgIGNvbnRyb2xsZXJfcm9vdDogdGhpcy5jb250cm9sbGVyX3Jvb3QsXG4gICAgICB9KTtcbiAgICB9LFxuICAgIGl0ZW1fa2V5KCkge1xuICAgICAgcmV0dXJuIHRoaXMuJHN0b3JlLmdldHRlcnNbXCJzaG93X2RhdGEvZ19pdGVtX2tleVwiXSh7XG4gICAgICAgIGNvbnRyb2xsZXJfcm9vdDogdGhpcy5jb250cm9sbGVyX3Jvb3QsXG4gICAgICB9KTtcbiAgICB9LFxuICAgIGV4cGFuZGVkKCkge1xuICAgICAgcmV0dXJuIHRoaXMuJHN0b3JlLmdldHRlcnNbXCJzaG93X2RhdGEvZ19leHBhbmRlZFwiXSh7XG4gICAgICAgIGNvbnRyb2xsZXJfcm9vdDogdGhpcy5jb250cm9sbGVyX3Jvb3QsXG4gICAgICB9KTtcbiAgICB9LFxuICAgIG5hbWVzZXhwYW5kZWQoKSB7XG4gICAgICBsZXQgZXhwYW5kZWQgPSB0aGlzLmV4cGFuZGVkO1xuICAgICAgbGV0IG5hbWVzZXhwYW5kZWQgPSBbXTtcbiAgICAgIGZvciAoY29uc3Qga2V5IGluIGV4cGFuZGVkKSB7XG4gICAgICAgIG5hbWVzZXhwYW5kZWQucHVzaChleHBhbmRlZFtrZXldW1wiY29udHJvbGxlcl9hdHRhY2hcIl0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG5hbWVzZXhwYW5kZWQ7XG4gICAgfSxcbiAgICBoZWFkZXJzKCkge1xuICAgICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi9cbiAgICAgIGxldCBuYW1lX2lucHV0X2ZpbGVzID0gW107XG4gICAgICAvKiAgICBsZXQgc2hlbWFfaW5wdXRzID0gdGhpcy4kc3RvcmUuZ2V0dGVyc1tcImdfU0NIRU1BX0dsb2JhbEhUTUxcIl1bdGhpcy5jb250cm9sbGVyX3Jvb3RdO1xuICAgIFxuXG4gICAgICBpZiAoc2hlbWFfaW5wdXRzICE9IHVuZGVmaW5lZCkge1xuICAgICAgICBmb3IgKGNvbnN0IHNoZW1hX2lucHV0IG9mIHNoZW1hX2lucHV0c1tcImh0bWxcIl0pIHtcbiAgICAgICAgICBpZiAoc2hlbWFfaW5wdXQudHlwZSA9PSBcImZpbGVcIiB8fCBzaGVtYV9pbnB1dC50eXBlID09IFwiZmlsZXNcIiB8fCBzaGVtYV9pbnB1dC50eXBlID09IFwibG9nb1wiKSB7XG4gICAgICAgICAgICBuYW1lX2lucHV0X2ZpbGVzLnB1c2goc2hlbWFfaW5wdXQubmFtZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9ICovXG5cbiAgICAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi9cblxuICAgICAgbGV0IGhlYWRlcnMgPSB0aGlzLiRzdG9yZS5nZXR0ZXJzW1wic2hvd19kYXRhL2dfaGVhZGVyc1wiXSh7XG4gICAgICAgIGNvbnRyb2xsZXJfcm9vdDogdGhpcy5jb250cm9sbGVyX3Jvb3QsXG4gICAgICAgIG5hbWVzZXhwYW5kZWQ6IHRoaXMubmFtZXNleHBhbmRlZCxcbiAgICAgICAgbm90YWZmaWNoZTogdGhpcy5ub3RhZmZpY2hlLFxuICAgICAgICBuYW1lX2lucHV0X2ZpbGVzLFxuICAgICAgfSk7XG5cbiAgICAgIGlmICh0aGlzLmFjdGlvbl90cmFpdGVtZW50KSB7XG4gICAgICAgIGxldCB0ZXh0YWN0aW9uID0gXCJcIjtcbiAgICAgICAgaWYgKHRoaXMuaXNNb2JpbGUpIHtcbiAgICAgICAgICB0ZXh0YWN0aW9uID0gXCJcIjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0ZXh0YWN0aW9uID0gXCJMZXMgQWN0aW9ucyBkZXMgdHJhaXRlbWVudCBcIjtcbiAgICAgICAgfVxuXG4gICAgICAgIGhlYWRlcnMucHVzaCh7XG4gICAgICAgICAgdGV4dDogdGV4dGFjdGlvbixcbiAgICAgICAgICB2YWx1ZTogXCJhY3Rpb25cIixcbiAgICAgICAgICBzb3J0YWJsZTogZmFsc2UsXG4gICAgICAgICAgLy8gYWxpZ246IFwiZW5kXCIsXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5jb250cm9sbGVyX3Jvb3QgPT0gXCJib25zdmVudGVzXCIpIHtcbiAgICAgICAgbGV0IHRleHRhY3Rpb24gPSBcIlwiO1xuICAgICAgICBpZiAodGhpcy5pc01vYmlsZSkge1xuICAgICAgICAgIHRleHRhY3Rpb24gPSBcIlwiO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRleHRhY3Rpb24gPSBcInLDqGdsZW1lbnQgcmFwaWRlXCI7XG4gICAgICAgIH1cblxuICAgICAgICBoZWFkZXJzLnVuc2hpZnQoe1xuICAgICAgICAgIHRleHQ6IHRleHRhY3Rpb24sXG4gICAgICAgICAgdmFsdWU6IFwiYWN0aW9uUmVnbGVtZW50UmFwaWRlQkxcIixcbiAgICAgICAgICBzb3J0YWJsZTogZmFsc2UsXG4gICAgICAgICAgYWxpZ246IFwiY2VudGVyXCIsXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gaGVhZGVycztcbiAgICB9LFxuXG4gICAgbG9hZGluZygpIHtcbiAgICAgIHJldHVybiB0aGlzLiRzdG9yZS5zdGF0ZVtcInNob3dfZGF0YVwiXS5sb2FkaW5nO1xuICAgIH0sXG4gIH0sXG4gIG1ldGhvZHM6IHtcbiAgICBzaG93X3N0eWxlX2Jvb2xlYW4oaXRlbXMpIHtcbiAgICAgIGl0ZW1zLmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAgIGxldCBuZXdJdGVtID0ge307XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGl0ZW0pIHtcbiAgICAgICAgICBjb25zdCB2YWx1ZSA9IGl0ZW1ba2V5XTtcbiAgICAgICAgICBuZXdJdGVtW2tleV0gPSB2YWx1ZTtcblxuICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT0gXCJib29sZWFuXCIpIHtcbiAgICAgICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgICBuZXdJdGVtW2tleV0gPSAxO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgbmV3SXRlbVtrZXldID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpdGVtc1tpbmRleF0gPSBuZXdJdGVtO1xuICAgICAgICAvLyBuZXdJdGVtcy5wdXNoKG5ld0l0ZW0pO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gaXRlbXM7XG4gICAgfSxcblxuICAgIGNhbGN1bGVtb250YW50KGl0ZW1zLCBwb3VyKSB7XG4gICAgICBsZXQgYSA9IDA7XG4gICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgaXRlbXMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSBpdGVtc1tpbmRleF07XG4gICAgICAgIGEgPSBhICsgZWxlbWVudFtwb3VyXSAqIDE7XG4gICAgICB9XG4gICAgICByZXR1cm4gYS50b0xvY2FsZVN0cmluZyh1bmRlZmluZWQsIHtcbiAgICAgICAgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAyLFxuICAgICAgfSk7XG4gICAgfSxcbiAgICBjYWxjdWxlbW9udGFudFNlbGVjdGVkKGl0ZW1zLCBwb3VyLCBpc1NlbGVjdGVkKSB7XG4gICAgICBsZXQgYSA9IDA7XG4gICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgaXRlbXMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSBpdGVtc1tpbmRleF07XG4gICAgICAgIGlmIChpc1NlbGVjdGVkKGVsZW1lbnQpKSB7XG4gICAgICAgICAgYSA9IGEgKyBlbGVtZW50W3BvdXJdICogMTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGEudG9Mb2NhbGVTdHJpbmcodW5kZWZpbmVkLCB7XG4gICAgICAgIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMixcbiAgICAgIH0pO1xuICAgIH0sXG5cbiAgICB0b0RIKHZhbCkge1xuICAgICAgY29uc3QgbnVtID0gcGFyc2VGbG9hdCh2YWwpO1xuXG4gICAgICBpZiAoaXNOYU4obnVtKSB8fCB2YWwgPT09IG51bGwgfHwgdmFsID09PSBcIlwiIHx8IHZhbCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiB2YWw7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIG51bS50b0xvY2FsZVN0cmluZyh1bmRlZmluZWQsIHtcbiAgICAgICAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDIsXG4gICAgICAgIH0pICsgXCIgREhcIlxuICAgICAgKTtcbiAgICB9LFxuICAgIG9uUmVzaXplKCkge1xuICAgICAgdGhpcy5pc01vYmlsZSA9IHdpbmRvdy5pbm5lcldpZHRoIDwgNjAwO1xuICAgIH0sXG4gICAgY29udmVydERhdGUoaW5wdXRGb3JtYXQpIHtcbiAgICAgIGlmIChpbnB1dEZvcm1hdCA9PSBudWxsIHx8IGlucHV0Rm9ybWF0ID09IFwiXCIpIHtcbiAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgICB9XG5cbiAgICAgIGZ1bmN0aW9uIHBhZChzKSB7XG4gICAgICAgIHJldHVybiBzIDwgMTAgPyBcIjBcIiArIHMgOiBzO1xuICAgICAgfVxuICAgICAgdmFyIGQgPSBuZXcgRGF0ZShpbnB1dEZvcm1hdCk7XG4gICAgICByZXR1cm4gW3BhZChkLmdldERhdGUoKSksIHBhZChkLmdldE1vbnRoKCkgKyAxKSwgZC5nZXRGdWxsWWVhcigpXS5qb2luKFxuICAgICAgICBcIi9cIlxuICAgICAgKTtcbiAgICB9LFxuICAgIHBhZ2VfY291bnQodmFsKSB7XG4gICAgICB0aGlzLiRzdG9yZS5jb21taXQoXG4gICAgICAgIFwic2hvd19kYXRhL3NldF9wYWdlQ291bnRcIixcblxuICAgICAgICB7XG4gICAgICAgICAgZGF0YTogdmFsLFxuICAgICAgICAgIGNvbnRyb2xsZXJfcm9vdDogdGhpcy5jb250cm9sbGVyX3Jvb3QsXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfSxcblxuICAgIGNsaWNrcm93KGEsIGIpIHt9LFxuICAgIHNlbGVjdChzZWxlY3RlZCkge1xuICAgICAgbGV0IGl0ZW1fa2V5ID0gdGhpcy5pdGVtX2tleTtcblxuICAgICAgbGV0IGl0ZW1zID0gdGhpcy5pdGVtcztcblxuICAgICAgbGV0IGtleXMgPSBbXTtcbiAgICAgIHNlbGVjdGVkLmZvckVhY2goKHNlbGVjdCkgPT4ge1xuICAgICAgICBrZXlzLnB1c2goc2VsZWN0W2l0ZW1fa2V5XSk7XG4gICAgICB9KTtcblxuICAgICAgbGV0IHNlbGVjdGVkX2l0ZW1zID0gW107XG5cbiAgICAgIGl0ZW1zLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgbGV0IGlkID0gaXRlbVtpdGVtX2tleV07XG4gICAgICAgIGlmIChrZXlzLmluY2x1ZGVzKGlkKSkge1xuICAgICAgICAgIHNlbGVjdGVkX2l0ZW1zLnB1c2goaXRlbSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLiRzdG9yZS5jb21taXQoXG4gICAgICAgIFwic2hvd19kYXRhL3NldF9zZWxlY3RlZFwiLFxuXG4gICAgICAgIHtcbiAgICAgICAgICAvLyBkYXRhOiBzZWxlY3RlZCxcbiAgICAgICAgICBkYXRhOiBzZWxlY3RlZF9pdGVtcyxcbiAgICAgICAgICBjb250cm9sbGVyX3Jvb3Q6IHRoaXMuY29udHJvbGxlcl9yb290LFxuICAgICAgICB9XG4gICAgICApO1xuICAgIH0sXG5cbiAgICBpc0dyYW50ZWQoYXR0cmlidXRlKSB7XG4gICAgICByZXR1cm4gdGhpcy4kc3RvcmUuZ2V0dGVyc1tcInNlY3VyaXR5L2lzR3JhbnRlZFwiXShcbiAgICAgICAgYXR0cmlidXRlLFxuICAgICAgICB0aGlzLmNvbnRyb2xsZXJfcm9vdFxuICAgICAgKTtcbiAgICB9LFxuICB9LFxufTtcbjwvc2NyaXB0PlxuXG48c3R5bGUgc2NvcGVkPlxuLyog2KfZhNiq2KPYq9mK2LEg2KfZhNio2LXYsdmKINmE2YTYp9mH2KrYstin2LIg2K/Yp9iu2YQg2KfZhNi52YbYp9i12LEgKi9cbi5zaGFrZS1idG4ge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgZm9udC1zaXplOiAxNnB4O1xuICBwYWRkaW5nOiAxMHB4IDIwcHg7XG4gIGFuaW1hdGlvbjogYmxpbmsgMXMgMXMgZWFzZS1vdXQgaW5maW5pdGU7XG4gIC8qINin2YTZiNmF2YrYtiDYp9mE2YXYs9iq2YXYsSAqL1xufVxuXG4vKiDYrdix2YPYqSDYp9mE2KfZh9iq2LLYp9iyINiv2KfYrtmEINin2YTYudmG2KfYtdixICovXG4uc2hha2UtYnRuIHNwYW4sXG4uc2hha2UtYnRuIHYtaWNvbiB7XG4gIGFuaW1hdGlvbjogc2hha2UgMXMgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG59XG5cbi8qINit2LHZg9ipINin2YTYp9mH2KrYstin2LIgKNi52YbYryDYqti32KjZitmCINin2YTYp9mH2KrYstin2LIg2LnZhNmJINin2YTZhti1INmI2KfZhNij2YrZgtmI2YbYqSDZgdmC2LcpICovXG5Aa2V5ZnJhbWVzIHNoYWtlIHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTtcbiAgfVxuXG4gIDI1JSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0zcHgpO1xuICB9XG5cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoM3B4KTtcbiAgfVxuXG4gIDc1JSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0zcHgpO1xuICB9XG5cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApO1xuICB9XG59XG5cbi8qINit2LHZg9ipINin2YTZiNmF2YrYtiAqL1xuQGtleWZyYW1lcyBibGluayB7XG4gIDAlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTU3MzczO1xuICB9XG5cbiAgNTAlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjQ0MzM2O1xuICB9XG5cbiAgMTAwJSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2U1NzM3MztcbiAgfVxufVxuXG4vKiDYqtiu2LXZiti1INin2YTYstixICovXG4udi1jaGlwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2U1NzM3MztcbiAgLyog2YTZiNmGINin2YTYstixICovXG4gIGNvbG9yOiB3aGl0ZTtcbiAgLyog2YTZiNmGINin2YTZhti1ICovXG4gIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgYm94LXNoYWRvdzogMHB4IDRweCA2cHggcmdiYSgwLCAwLCAwLCAwLjIpO1xuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuM3M7XG59XG5cbi52LWNoaXA6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjQ0MzM2O1xuICAvKiDZhNmI2YYg2KfZhNiy2LEg2LnZhtivINin2YTZhdix2YjYsSDYudmE2YrZhyAqL1xufVxuXG4udi1pY29uIHtcbiAgbWFyZ2luLXJpZ2h0OiA4cHg7XG59XG5cbi8qINiq2K7YtdmK2LUg2KfZhNit2KzZhSAqL1xuLnYtY2hpcC5sYXJnZSB7XG4gIGZvbnQtc2l6ZTogMThweDtcbiAgcGFkZGluZzogMTVweCAzMHB4O1xufVxuPC9zdHlsZT5cbiIsIjx0ZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyXCI+XG4gICAgPHYtdG9vbHRpcCB0b3A+XG4gICAgICA8dGVtcGxhdGUgdi1zbG90OmFjdGl2YXRvcj1cInsgb24gfVwiPlxuICAgICAgICA8di1idG5cbiAgICAgICAgICBlbGV2YXRpb249XCIzXCJcbiAgICAgICAgICBpY29uXG4gICAgICAgICAgb3V0bGluZWRcbiAgICAgICAgICB0aWxlXG4gICAgICAgICAgQGNsaWNrPVwiZGlhbG9nID0gdHJ1ZVwiXG4gICAgICAgICAgdi1vbj1cIm9uXCJcbiAgICAgICAgPlxuICAgICAgICAgIDx2LWljb24gZGFyaz4gbWRpLWZpbHRlciA8L3YtaWNvbj5cbiAgICAgICAgPC92LWJ0bj5cbiAgICAgIDwvdGVtcGxhdGU+XG4gICAgICA8c3Bhbj57eyAkdChcImFmZmljaGVyIG1hc3F1ZXIgcsOpb3JnYW5pc2VyIGxlcyBjb2xvbm5lc1wiKSB9fTwvc3Bhbj5cbiAgICA8L3YtdG9vbHRpcD5cblxuICAgIDx2LWRpYWxvZ1xuICAgICAgdi1tb2RlbD1cImRpYWxvZ1wiXG4gICAgICA6bWF4LXdpZHRoPVwiJHZ1ZXRpZnkuYnJlYWtwb2ludC5zbUFuZERvd24gPyAnOTUlJyA6ICc5MDBweCdcIlxuICAgID5cbiAgICAgIDx2LWNhcmQ+XG4gICAgICAgIDx2LWNhcmQtdGl0bGUgY2xhc3M9XCJoZWFkbGluZSBwcmltYXJ5IHdoaXRlLS10ZXh0XCI+XG4gICAgICAgICAgPHYtaWNvbiBsZWZ0Pm1kaS1maWx0ZXI8L3YtaWNvbj5cbiAgICAgICAgICB7eyAkdChcInBlcnNvbm5hbGlzZXIgbGVzIGNvbG9ubmVzIHBvdXJcIikgfX0ge3sgJHQoY29udHJvbGxlcl9yb290KSB9fVxuICAgICAgICA8L3YtY2FyZC10aXRsZT5cblxuICAgICAgICA8di1jYXJkLXRleHQgY2xhc3M9XCJwYS00XCI+XG4gICAgICAgICAgPCEtLSA9PT09PSDZiNin2KzZh9ipINin2YTYtNin2LTYp9iqINin2YTZg9io2YrYsdipICjYudmF2YjYr9in2YYpID09PT09IC0tPlxuICAgICAgICAgIDx2LXJvdyB2LWlmPVwiISR2dWV0aWZ5LmJyZWFrcG9pbnQuc21BbmREb3duXCI+XG4gICAgICAgICAgICA8IS0tINin2YTYudmF2YjYryDYp9mE2KPZiNmEOiDYp9mE2KPYudmF2K/YqSDYp9mE2YXYsdim2YrYqSAoVmlzaWJsZSkgLS0+XG4gICAgICAgICAgICA8di1jb2wgY29scz1cIjZcIj5cbiAgICAgICAgICAgICAgPHYtY2FyZCBvdXRsaW5lZD5cbiAgICAgICAgICAgICAgICA8di1jYXJkLXN1YnRpdGxlIGNsYXNzPVwiZm9udC13ZWlnaHQtYm9sZFwiXG4gICAgICAgICAgICAgICAgICA+e3sgJHQoXCJjb2xvbm5lcyB2aXNpYmxlc1wiKSB9fSAoe3tcbiAgICAgICAgICAgICAgICAgICAgbG9jYWxWaXNpYmxlSGVhZGVycy5sZW5ndGhcbiAgICAgICAgICAgICAgICAgIH19KTwvdi1jYXJkLXN1YnRpdGxlXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDx2LWRpdmlkZXI+PC92LWRpdmlkZXI+XG4gICAgICAgICAgICAgICAgPGRyYWdnYWJsZVxuICAgICAgICAgICAgICAgICAgdi1tb2RlbD1cImxvY2FsVmlzaWJsZUhlYWRlcnNcIlxuICAgICAgICAgICAgICAgICAgaGFuZGxlPVwiLmRyYWctaGFuZGxlXCJcbiAgICAgICAgICAgICAgICAgIGdyb3VwPVwiY29sdW1uc1wiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbHVtbi1saXN0XCJcbiAgICAgICAgICAgICAgICAgIEBlbmQ9XCJvbkRyYWdFbmRcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDx2LWxpc3QtaXRlbVxuICAgICAgICAgICAgICAgICAgICB2LWZvcj1cImhlYWRlciBpbiBsb2NhbFZpc2libGVIZWFkZXJzXCJcbiAgICAgICAgICAgICAgICAgICAgOmtleT1cImhlYWRlci52YWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDx2LWljb24gY2xhc3M9XCJkcmFnLWhhbmRsZVwiIGNvbG9yPVwiZ3JleVwiXG4gICAgICAgICAgICAgICAgICAgICAgPm1kaS1kcmFnLXZlcnRpY2FsPC92LWljb25cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8di1saXN0LWl0ZW0tY29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgICA8di1saXN0LWl0ZW0tdGl0bGUgY2xhc3M9XCJhd2Fjb2xvclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHYtYnRuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGljb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgc21hbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQGNsaWNrPVwidG9nZ2xlRmlsdGVyKGhlYWRlci52YWx1ZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICB2LWlmPVwiaXNGaWx0ZXJhYmxlKGhlYWRlci52YWx1ZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tINmE2YjZhiDYp9mE2KPZitmC2YjZhtipINiz2YrYqti62YrYsSDYqNmG2KfYodmLINi52YTZiSDZhdinINil2LDYpyDZg9in2YYg2KfZhNmB2YTYqtixINmG2LTYt9mL2Kcg2KPZhSDZhNinIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8di1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOmNvbG9yPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0ZpbHRlckFjdGl2ZShoZWFkZXIudmFsdWUpID8gJ2JsdWUnIDogJ2dyZXknXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+bWRpLWZpbGUtZmluZC1vdXRsaW5lPC92LWljb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC92LWJ0bj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGhlYWRlci50ZXh0IH19XG4gICAgICAgICAgICAgICAgICAgICAgPC92LWxpc3QtaXRlbS10aXRsZT5cbiAgICAgICAgICAgICAgICAgICAgPC92LWxpc3QtaXRlbS1jb250ZW50PlxuICAgICAgICAgICAgICAgICAgICA8di1saXN0LWl0ZW0tYWN0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgIDx2LWJ0biBpY29uIHNtYWxsIEBjbGljaz1cImhpZGVDb2x1bW4oaGVhZGVyKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHYtaWNvbiBjb2xvcj1cImJsdWVcIj5tZGktZXllPC92LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgPC92LWJ0bj5cbiAgICAgICAgICAgICAgICAgICAgPC92LWxpc3QtaXRlbS1hY3Rpb24+XG4gICAgICAgICAgICAgICAgICA8L3YtbGlzdC1pdGVtPlxuICAgICAgICAgICAgICAgIDwvZHJhZ2dhYmxlPlxuICAgICAgICAgICAgICA8L3YtY2FyZD5cbiAgICAgICAgICAgIDwvdi1jb2w+XG5cbiAgICAgICAgICAgIDwhLS0g2KfZhNi52YXZiNivINin2YTYq9in2YbZijog2KfZhNij2LnZhdiv2Kkg2KfZhNmF2K7ZgdmK2KkgKEhpZGRlbikgLS0+XG4gICAgICAgICAgICA8di1jb2wgY29scz1cIjZcIj5cbiAgICAgICAgICAgICAgPHYtY2FyZCBvdXRsaW5lZD5cbiAgICAgICAgICAgICAgICA8di1jYXJkLXN1YnRpdGxlIGNsYXNzPVwiZm9udC13ZWlnaHQtYm9sZFwiXG4gICAgICAgICAgICAgICAgICA+e3sgJHQoXCJjb2xvbm5lcyBjYWNow6llc1wiKSB9fSAoe3tcbiAgICAgICAgICAgICAgICAgICAgbG9jYWxIaWRkZW5IZWFkZXJzLmxlbmd0aFxuICAgICAgICAgICAgICAgICAgfX0pPC92LWNhcmQtc3VidGl0bGVcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHYtZGl2aWRlcj48L3YtZGl2aWRlcj5cblxuICAgICAgICAgICAgICAgIDx2LXRleHQtZmllbGRcbiAgICAgICAgICAgICAgICAgIHYtbW9kZWw9XCJoaWRkZW5TZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgOmxhYmVsPVwiJHQoJ3JlY2hlcmNoZXIgZGFucyBsYSBjb2xvbm5lIGNhY2jDqWUnKVwiXG4gICAgICAgICAgICAgICAgICBwcmVwZW5kLWlubmVyLWljb249XCJtZGktbWFnbmlmeVwiXG4gICAgICAgICAgICAgICAgICBkZW5zZVxuICAgICAgICAgICAgICAgICAgb3V0bGluZWRcbiAgICAgICAgICAgICAgICAgIGhpZGUtZGV0YWlsc1xuICAgICAgICAgICAgICAgICAgY2xlYXJhYmxlXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1hLTJcIlxuICAgICAgICAgICAgICAgID48L3YtdGV4dC1maWVsZD5cblxuICAgICAgICAgICAgICAgIDxkcmFnZ2FibGVcbiAgICAgICAgICAgICAgICAgIHYtbW9kZWw9XCJsb2NhbEhpZGRlbkhlYWRlcnNcIlxuICAgICAgICAgICAgICAgICAgaGFuZGxlPVwiLmRyYWctaGFuZGxlXCJcbiAgICAgICAgICAgICAgICAgIGdyb3VwPVwiY29sdW1uc1wiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbHVtbi1saXN0XCJcbiAgICAgICAgICAgICAgICAgIEBlbmQ9XCJvbkRyYWdFbmRcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDx2LWxpc3QtaXRlbVxuICAgICAgICAgICAgICAgICAgICB2LWZvcj1cImhlYWRlciBpbiBmaWx0ZXJlZEhpZGRlbkhlYWRlcnNcIlxuICAgICAgICAgICAgICAgICAgICA6a2V5PVwiaGVhZGVyLnZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkcmFnZ2FibGUtaXRlbS1oaWRkZW5cIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8di1pY29uIGNsYXNzPVwiZHJhZy1oYW5kbGVcIiBjb2xvcj1cImdyZXlcIlxuICAgICAgICAgICAgICAgICAgICAgID5tZGktZHJhZy12ZXJ0aWNhbDwvdi1pY29uXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPHYtbGlzdC1pdGVtLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgPHYtbGlzdC1pdGVtLXRpdGxlIGNsYXNzPVwiYXdhY29sb3IgZ3JleS0tdGV4dFwiPnt7XG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXIudGV4dFxuICAgICAgICAgICAgICAgICAgICAgIH19PC92LWxpc3QtaXRlbS10aXRsZT5cbiAgICAgICAgICAgICAgICAgICAgPC92LWxpc3QtaXRlbS1jb250ZW50PlxuICAgICAgICAgICAgICAgICAgICA8di1saXN0LWl0ZW0tYWN0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgIDx2LWJ0biBpY29uIHNtYWxsIEBjbGljaz1cInNob3dDb2x1bW4oaGVhZGVyKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHYtaWNvbiBjb2xvcj1cImdyZXlcIj5tZGktZXllLW9mZjwvdi1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdi1idG4+XG4gICAgICAgICAgICAgICAgICAgIDwvdi1saXN0LWl0ZW0tYWN0aW9uPlxuICAgICAgICAgICAgICAgICAgPC92LWxpc3QtaXRlbT5cbiAgICAgICAgICAgICAgICA8L2RyYWdnYWJsZT5cbiAgICAgICAgICAgICAgPC92LWNhcmQ+XG4gICAgICAgICAgICA8L3YtY29sPlxuICAgICAgICAgIDwvdi1yb3c+XG5cbiAgICAgICAgICA8IS0tID09PT09INmI2KfYrNmH2Kkg2KfZhNi02KfYtNin2Kog2KfZhNi12LrZitix2KkgKNi52YXZiNivINmI2KfYrdivKSA9PT09PSAtLT5cbiAgICAgICAgICA8ZGl2IHYtZWxzZT5cbiAgICAgICAgICAgIDxwIGNsYXNzPVwiY2FwdGlvblwiPnt7ICR0KFwiZ2xpc3NlciBwb3VyIHLDqW9yZ2FuaXNlclwiKSB9fTwvcD5cbiAgICAgICAgICAgIDxkcmFnZ2FibGVcbiAgICAgICAgICAgICAgdi1tb2RlbD1cImRyYWdnYWJsZUhlYWRlcnNGb3JNb2JpbGVcIlxuICAgICAgICAgICAgICBoYW5kbGU9XCIuZHJhZy1oYW5kbGVcIlxuICAgICAgICAgICAgICBkZW5zZVxuICAgICAgICAgICAgICBAZW5kPVwib25EcmFnRW5kTW9iaWxlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHYtbGlzdC1pdGVtXG4gICAgICAgICAgICAgICAgdi1mb3I9XCJoZWFkZXIgaW4gZHJhZ2dhYmxlSGVhZGVyc0Zvck1vYmlsZVwiXG4gICAgICAgICAgICAgICAgOmtleT1cImhlYWRlci52YWx1ZVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkcmFnZ2FibGUtaXRlbVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8di1pY29uIGNsYXNzPVwiZHJhZy1oYW5kbGVcIj5tZGktZHJhZy12ZXJ0aWNhbDwvdi1pY29uPlxuICAgICAgICAgICAgICAgIDx2LWNoZWNrYm94XG4gICAgICAgICAgICAgICAgICA6dmFsdWU9XCJoZWFkZXIudmFsdWVcIlxuICAgICAgICAgICAgICAgICAgdi1tb2RlbD1cIm5vdEFmZmljaGVcIlxuICAgICAgICAgICAgICAgICAgOmxhYmVsPVwiaGVhZGVyLnRleHRcIlxuICAgICAgICAgICAgICAgICAgb2ZmLWljb249XCJtZGktZXllLW9mZlwiXG4gICAgICAgICAgICAgICAgICBvbi1pY29uPVwibWRpLWV5ZVwiXG4gICAgICAgICAgICAgICAgICBjb2xvcj1cInJlZCBkYXJrZW4tM1wiXG4gICAgICAgICAgICAgICAgICBoaWRlLWRldGFpbHNcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmxleC1ncm93LTFcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6bGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXdhY29sb3JcIj57eyBoZWFkZXIudGV4dCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC92LWNoZWNrYm94PlxuICAgICAgICAgICAgICA8L3YtbGlzdC1pdGVtPlxuICAgICAgICAgICAgPC9kcmFnZ2FibGU+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8IS0tINin2YTYrNiy2KEg2KfZhNiu2KfYtSDYqNin2YTYrNiv2KfZiNmEINin2YTZhdiq2K/Yp9iu2YTYqSAtLT5cbiAgICAgICAgICA8di1kaXZpZGVyIGNsYXNzPVwibXktNFwiIHYtaWY9XCJleHBhbmRlZENvbmZpZ3MubGVuZ3RoID4gMFwiPjwvdi1kaXZpZGVyPlxuICAgICAgICAgIDx2LWxpc3QgZGVuc2Ugdi1pZj1cImV4cGFuZGVkQ29uZmlncy5sZW5ndGggPiAwXCI+XG4gICAgICAgICAgICA8di1saXN0LWdyb3VwXG4gICAgICAgICAgICAgIHYtZm9yPVwiZXhwYW5kZWRDb25maWcgaW4gZXhwYW5kZWRDb25maWdzXCJcbiAgICAgICAgICAgICAgOmtleT1cImV4cGFuZGVkQ29uZmlnLmNvbnRyb2xsZXJfYXR0YWNoXCJcbiAgICAgICAgICAgICAgbm8tYWN0aW9uXG4gICAgICAgICAgICAgIHN1Yi1ncm91cFxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8dGVtcGxhdGUgdi1zbG90OmFjdGl2YXRvcj5cbiAgICAgICAgICAgICAgICA8di1saXN0LWl0ZW0tY29udGVudD5cbiAgICAgICAgICAgICAgICAgIDx2LWxpc3QtaXRlbS10aXRsZT5cbiAgICAgICAgICAgICAgICAgICAgPGgzIGNvbG9yPVwicHJpbWFyeVwiPnt7ICR0KGV4cGFuZGVkQ29uZmlnLnRpdGxlKSB9fTwvaDM+XG4gICAgICAgICAgICAgICAgICA8L3YtbGlzdC1pdGVtLXRpdGxlPlxuICAgICAgICAgICAgICAgIDwvdi1saXN0LWl0ZW0tY29udGVudD5cbiAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgPHYtbGlzdC1pdGVtXG4gICAgICAgICAgICAgICAgdi1mb3I9XCJoZWFkZXIgaW4gZ2V0RXhwYW5kZWRIZWFkZXJzKFxuICAgICAgICAgICAgICAgICAgZXhwYW5kZWRDb25maWcuY29udHJvbGxlcl9hdHRhY2hcbiAgICAgICAgICAgICAgICApXCJcbiAgICAgICAgICAgICAgICA6a2V5PVwiaGVhZGVyLnZhbHVlXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDx2LWNoZWNrYm94XG4gICAgICAgICAgICAgICAgICA6dmFsdWU9XCJoZWFkZXIudmFsdWVcIlxuICAgICAgICAgICAgICAgICAgOmxhYmVsPVwiaGVhZGVyLnRleHRcIlxuICAgICAgICAgICAgICAgICAgQGNoYW5nZT1cIlxuICAgICAgICAgICAgICAgICAgICBjaGFuZ2VFeHBhbmRlZChleHBhbmRlZENvbmZpZy5jb250cm9sbGVyX2F0dGFjaCwgJGV2ZW50KVxuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgIDppbnB1dC12YWx1ZT1cIlxuICAgICAgICAgICAgICAgICAgICBleHBhbmRlZE5vdEFmZmljaGUoZXhwYW5kZWRDb25maWcuY29udHJvbGxlcl9hdHRhY2gpXG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgb2ZmLWljb249XCJtZGktZXllXCJcbiAgICAgICAgICAgICAgICAgIG9uLWljb249XCJtZGktZXllLW9mZlwiXG4gICAgICAgICAgICAgICAgICBjb2xvcj1cInJlZCBkYXJrZW4tM1wiXG4gICAgICAgICAgICAgICAgICBoaWRlLWRldGFpbHNcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWwtOFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlIHYtc2xvdDpsYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhd2Fjb2xvclwiPnt7IGhlYWRlci50ZXh0IH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L3YtY2hlY2tib3g+XG4gICAgICAgICAgICAgIDwvdi1saXN0LWl0ZW0+XG4gICAgICAgICAgICA8L3YtbGlzdC1ncm91cD5cbiAgICAgICAgICA8L3YtbGlzdD5cbiAgICAgICAgPC92LWNhcmQtdGV4dD5cblxuICAgICAgICA8di1kaXZpZGVyPjwvdi1kaXZpZGVyPlxuICAgICAgICA8di1jYXJkLWFjdGlvbnM+XG4gICAgICAgICAgPHYtc3BhY2VyPjwvdi1zcGFjZXI+XG4gICAgICAgICAgPHYtYnRuIGNvbG9yPVwicHJpbWFyeVwiIHRleHQgQGNsaWNrPVwiZGlhbG9nID0gZmFsc2VcIj57e1xuICAgICAgICAgICAgJHQoXCJGZXJtZXJcIilcbiAgICAgICAgICB9fTwvdi1idG4+XG4gICAgICAgIDwvdi1jYXJkLWFjdGlvbnM+XG4gICAgICA8L3YtY2FyZD5cbiAgICA8L3YtZGlhbG9nPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG5cblxuZXhwb3J0IGRlZmF1bHQge1xuXG4gIHByb3BzOiB7XG4gICAgY29udHJvbGxlcl9yb290OiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICB9LFxuICB9LFxuICBkYXRhKCkge1xuICAgIHJldHVybiB7XG4gICAgICBkaWFsb2c6IGZhbHNlLFxuICAgICAgbG9jYWxWaXNpYmxlSGVhZGVyczogW10sXG4gICAgICBsb2NhbEhpZGRlbkhlYWRlcnM6IFtdLFxuICAgICAgaGlkZGVuU2VhcmNoOiBcIlwiLFxuICAgIH07XG4gIH0sXG4gIGNvbXB1dGVkOiB7XG4gICAgdmlzaWJsZUZpbHRlcnM6IHtcbiAgICAgIGdldCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuJHN0b3JlLmdldHRlcnNbXCJzaG93X2RhdGEvZ192aXNpYmxlX2ZpbHRlcnNcIl0oe1xuICAgICAgICAgIGNvbnRyb2xsZXJfcm9vdDogdGhpcy5jb250cm9sbGVyX3Jvb3QsXG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICAgIHNldChuZXdGaWx0ZXJzKSB7XG4gICAgICAgIHRoaXMuJHN0b3JlLmNvbW1pdChcInNob3dfZGF0YS9zZXRfdmlzaWJsZV9maWx0ZXJzXCIsIHtcbiAgICAgICAgICBjb250cm9sbGVyX3Jvb3Q6IHRoaXMuY29udHJvbGxlcl9yb290LFxuICAgICAgICAgIGZpbHRlcnM6IG5ld0ZpbHRlcnMsXG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICB9LFxuXG4gICAgLy8g2YfYsNmHINin2YTYrtin2LXZitipINiq2K3Yr9ivINij2Yog2KfZhNij2LnZhdiv2Kkg2YrZhdmD2YYg2KPZhiDZitmD2YjZhiDZhNmH2Kcg2YHZhNiq2LFcbiAgICBmaWx0ZXJhYmxlQ29sdW1ucygpIHtcbiAgICAgIGNvbnN0IHNjaGVtYXMgPVxuICAgICAgICB0aGlzLiRzdG9yZS5nZXR0ZXJzW1wic2hvd19kYXRhL2dfc2NoZW1hc1wiXSh7XG4gICAgICAgICAgY29udHJvbGxlcl9yb290OiB0aGlzLmNvbnRyb2xsZXJfcm9vdCxcbiAgICAgICAgfSkgfHwgW107XG5cbiAgICAgIC8vINmC2KfYptmF2Kkg2KjYo9iz2YXYp9ihINin2YTYrdmC2YjZhCDYp9mE2YXYrdiv2K/YqSDYp9mE2KrZiiDZhtix2YrYryDYp9mE2KrYo9mD2K8g2YXZhiDYo9mG2YfYpyDZgtin2KjZhNipINmE2YTZgdmE2KrYsdipINiv2KfYptmF2YvYp1xuICAgICAgLy8g2YfYsNmHINin2YTZgtin2KbZhdipINmF2KPYrtmI2LDYqSDZhdio2KfYtNix2Kkg2YXZhiDZhdmG2LfZgiBsaXN0X2ZpbGQg2KfZhNmC2K/ZitmFXG4gICAgICBjb25zdCBzcGVjaWZpY0ZpbHRlcmFibGVOYW1lcyA9IFtcbiAgICAgICAgXCJ1c2VyXCIsXG4gICAgICAgIFwiZGF0ZWRlcm5pZXJib25cIixcbiAgICAgICAgXCJhY3Rpb25UcmFpdGVyXCIsXG4gICAgICAgIFwidHlwZVwiLFxuICAgICAgICBcInN0YXR1dFwiLFxuICAgICAgICBcInN0b2NrXCIsXG4gICAgICAgIFwiY3VtdWxzdG9ja1wiLFxuICAgICAgICBcImN1bXVsc3RvY2t0dGNcIixcbiAgICAgICAgXCJib25zYWNoYXRzX2lkXCIsXG4gICAgICAgIFwiZGVybmllcnByaXh0dGNhY2hhdFwiLFxuICAgICAgICBcImRlcm5pZXJwcml4YWNoYXRcIixcbiAgICAgICAgXCJtb250YW50ZW5jb3Vyc2ZhY3R1cmVzXCIsXG4gICAgICAgIFwibW9udGFudGVuY291cnNib25zXCIsXG4gICAgICAgIC8vICBcInZvbHVtZW1jdWJlXCIsIGtoYXMgaXRrYWRcbiAgICAgICAgLy8gICBcInBvaXRza2dcIixraGFzIGl0a2FkXG5cbiAgICAgICAgXCJkZWphcmVnbGVcIixcbiAgICAgICAgXCJkYXRlXCIsXG4gICAgICAgIFwidXBkYXRlZEF0XCIsXG4gICAgICAgIFwiY3JlYXRlZEF0XCIsXG4gICAgICAgXG4gICAgICBdO1xuXG4gICAgICByZXR1cm4gc2NoZW1hc1xuICAgICAgICAuZmlsdGVyKFxuICAgICAgICAgIChzKSA9PlxuICAgICAgICAgICAgLy8g2KfZhNmC2KfYudiv2KkgMTog2YfZhCDZh9mIINi52YTYp9mC2KkgKNmF2KvZhCDYudmF2YrZhNiMINmF2YjYsdivKdifXG4gICAgICAgICAgICBzLnR5cGVDb2x1bW4gPT09IFwiTWFueVRvT25lXCIgfHxcbiAgICAgICAgICAgIC8vINin2YTZgtin2LnYr9ipIDI6INmH2YQg2YfZiCDZhtmI2Lkg2LHZgtmF2Yog2KPZiCDYqtin2LHZitiu2J9cbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgXCJtb25leVwiLFxuICAgICAgICAgICAgICBcImRlY2ltYWxcIixcbiAgICAgICAgICAgICAgXCJudW1iZXJcIixcbiAgICAgICAgICAgICAgXCJkYXRlXCIsXG4gICAgICAgICAgICAgIFwiY2hlY2tib3hcIixcbiAgICAgICAgICAgICAgXCJyYWRpb1wiLFxuICAgICAgICAgICAgXS5pbmNsdWRlcyhzLnR5cGVIdG1sKSB8fFxuICAgICAgICAgICAgLy8g2KfZhNmC2KfYudiv2KkgMzog2YfZhCDYp9iz2YXZhyDZhdmI2KzZiNivINmB2Yog2YLYp9im2YXYqtmG2Kcg2KfZhNmF2K3Yr9iv2KnYn1xuICAgICAgICAgICAgc3BlY2lmaWNGaWx0ZXJhYmxlTmFtZXMuaW5jbHVkZXMocy5uYW1lKVxuICAgICAgICApXG4gICAgICAgIC5tYXAoKHMpID0+IHMubmFtZSk7XG4gICAgfSxcblxuICAgIG5vdEFmZmljaGU6IHtcbiAgICAgIGdldCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuJHN0b3JlLmdldHRlcnNbXCJzaG93X2RhdGEvZ19ub3RfYWZmaWNoZVwiXSh7XG4gICAgICAgICAgY29udHJvbGxlcl9yb290OiB0aGlzLmNvbnRyb2xsZXJfcm9vdCxcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgICAgc2V0KG5ld1ZhbHVlKSB7XG4gICAgICAgIHRoaXMuJHN0b3JlLmNvbW1pdChcInNob3dfZGF0YS9zZXRfbm90X2FmZmljaGVzXCIsIHtcbiAgICAgICAgICBkYXRhOiBuZXdWYWx1ZSxcbiAgICAgICAgICBjb250cm9sbGVyX3Jvb3Q6IHRoaXMuY29udHJvbGxlcl9yb290LFxuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgfSxcblxuICAgIGRyYWdnYWJsZUhlYWRlcnNGb3JNb2JpbGU6IHtcbiAgICAgIGdldCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxWaXNpYmxlSGVhZGVycy5jb25jYXQodGhpcy5sb2NhbEhpZGRlbkhlYWRlcnMpO1xuICAgICAgfSxcbiAgICAgIHNldChuZXdPcmRlcikge1xuICAgICAgICBjb25zdCBvcmRlclZhbHVlcyA9IG5ld09yZGVyLm1hcCgoaCkgPT4gaC52YWx1ZSk7XG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aGlzLiRzdG9yZS5zdGF0ZS5zaG93X2RhdGEuaGVhZGVyc1t0aGlzLmNvbnRyb2xsZXJfcm9vdF0uc29tZShcbiAgICAgICAgICAgIChoKSA9PiBoLnZhbHVlID09PSBcImlkXCJcbiAgICAgICAgICApXG4gICAgICAgICkge1xuICAgICAgICAgIG9yZGVyVmFsdWVzLnVuc2hpZnQoXCJpZFwiKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLiRzdG9yZS5jb21taXQoXCJzaG93X2RhdGEvc2V0X2hlYWRlcnNfb3JkZXJcIiwge1xuICAgICAgICAgIGNvbnRyb2xsZXJfcm9vdDogdGhpcy5jb250cm9sbGVyX3Jvb3QsXG4gICAgICAgICAgb3JkZXI6IG9yZGVyVmFsdWVzLFxuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgfSxcblxuICAgIGZpbHRlcmVkSGlkZGVuSGVhZGVycygpIHtcbiAgICAgIGlmICghdGhpcy5oaWRkZW5TZWFyY2gpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxIaWRkZW5IZWFkZXJzO1xuICAgICAgfVxuICAgICAgY29uc3QgbG93ZXJDYXNlU2VhcmNoID0gdGhpcy5oaWRkZW5TZWFyY2gudG9Mb3dlckNhc2UoKTtcbiAgICAgIHJldHVybiB0aGlzLmxvY2FsSGlkZGVuSGVhZGVycy5maWx0ZXIoKGhlYWRlcikgPT5cbiAgICAgICAgaGVhZGVyLnRleHQudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhsb3dlckNhc2VTZWFyY2gpXG4gICAgICApO1xuICAgIH0sXG5cbiAgICBleHBhbmRlZENvbmZpZ3MoKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICB0aGlzLiRzdG9yZS5nZXR0ZXJzW1wic2hvd19kYXRhL2dfZXhwYW5kZWRcIl0oe1xuICAgICAgICAgIGNvbnRyb2xsZXJfcm9vdDogdGhpcy5jb250cm9sbGVyX3Jvb3QsXG4gICAgICAgIH0pIHx8IFtdXG4gICAgICApO1xuICAgIH0sXG5cbiAgICBtYWluVGFibGVJdGVtcygpIHtcbiAgICAgIHJldHVybiB0aGlzLiRzdG9yZS5nZXR0ZXJzW1wic2hvd19kYXRhL2dfaXRlbXNcIl0oe1xuICAgICAgICBjb250cm9sbGVyX3Jvb3Q6IHRoaXMuY29udHJvbGxlcl9yb290LFxuICAgICAgfSk7XG4gICAgfSxcbiAgfSxcbiAgd2F0Y2g6IHtcbiAgICBkaWFsb2coaXNPcGVuKSB7XG4gICAgICBpZiAoaXNPcGVuKSB7XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZUxvY2FsSGVhZGVycygpO1xuICAgICAgICB0aGlzLmhpZGRlblNlYXJjaCA9IFwiXCI7XG4gICAgICB9XG4gICAgfSxcbiAgfSxcbiAgbWV0aG9kczoge1xuICAgIGlzRmlsdGVyYWJsZShoZWFkZXJWYWx1ZSkge1xuICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyYWJsZUNvbHVtbnMuaW5jbHVkZXMoaGVhZGVyVmFsdWUpO1xuICAgIH0sXG4gICAgLy8g2K/Yp9mE2Kkg2YTZhNiq2K3ZgtmCINmF2YXYpyDYpdiw2Kcg2YPYp9mGINin2YTZgdmE2KrYsSDZhti02LfZi9inINit2KfZhNmK2YvYpyAo2YTYqtmE2YjZitmGINin2YTYo9mK2YLZiNmG2KkpXG4gICAgaXNGaWx0ZXJBY3RpdmUoaGVhZGVyVmFsdWUpIHtcbiAgICAgIHJldHVybiB0aGlzLnZpc2libGVGaWx0ZXJzLmluY2x1ZGVzKGhlYWRlclZhbHVlKTtcbiAgICB9LFxuICAgIC8vINiv2KfZhNipINmE2KXYttin2YHYqSDYo9mIINil2LLYp9mE2Kkg2KfZhNmB2YTYqtixINi52YbYryDYp9mE2YbZgtixINi52YTZiSDYp9mE2KPZitmC2YjZhtipXG4gICAgdG9nZ2xlRmlsdGVyKGhlYWRlclZhbHVlKSB7XG4gICAgICBsZXQgY3VycmVudEZpbHRlcnMgPSBbLi4udGhpcy52aXNpYmxlRmlsdGVyc107XG4gICAgICBjb25zdCBpbmRleCA9IGN1cnJlbnRGaWx0ZXJzLmluZGV4T2YoaGVhZGVyVmFsdWUpO1xuXG4gICAgICBpZiAoaW5kZXggPT09IC0xKSB7XG4gICAgICAgIGN1cnJlbnRGaWx0ZXJzLnB1c2goaGVhZGVyVmFsdWUpOyAvLyDYpdi22KfZgdipINin2YTZgdmE2KrYsVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY3VycmVudEZpbHRlcnMuc3BsaWNlKGluZGV4LCAxKTsgLy8g2KXYstin2YTYqSDYp9mE2YHZhNiq2LFcbiAgICAgIH1cbiAgICAgIHRoaXMudmlzaWJsZUZpbHRlcnMgPSBjdXJyZW50RmlsdGVyczsgLy8g2KrYrdiv2YrYqyDYp9mE2K3Yp9mE2Kkg2YHZiiBWdWV4XG4gICAgfSxcblxuICAgIGluaXRpYWxpemVMb2NhbEhlYWRlcnMoKSB7XG4gICAgICBjb25zdCBhbGxIZWFkZXJzID1cbiAgICAgICAgdGhpcy4kc3RvcmUuc3RhdGUuc2hvd19kYXRhLmhlYWRlcnNbdGhpcy5jb250cm9sbGVyX3Jvb3RdIHx8IFtdO1xuICAgICAgY29uc3Qgb3JkZXIgPVxuICAgICAgICB0aGlzLiRzdG9yZS5zdGF0ZS5zaG93X2RhdGEuaGVhZGVyc19vcmRlclt0aGlzLmNvbnRyb2xsZXJfcm9vdF0gfHxcbiAgICAgICAgYWxsSGVhZGVycy5tYXAoKGgpID0+IGgudmFsdWUpO1xuICAgICAgY29uc3Qgbm90QWZmaWNoZUxpc3QgPSB0aGlzLm5vdEFmZmljaGU7XG5cbiAgICAgIGNvbnN0IG9yZGVyZWRIZWFkZXJzID0gW107XG4gICAgICBjb25zdCBoZWFkZXJNYXAgPSBuZXcgTWFwKFxuICAgICAgICBhbGxIZWFkZXJzLm1hcCgoaCkgPT4gW2gudmFsdWUsIHsgLi4uaCwgdGV4dDogdGhpcy4kdChoLnZhbHVlKSB9XSlcbiAgICAgICk7XG5cbiAgICAgIG9yZGVyLmZvckVhY2goKGhlYWRlclZhbHVlKSA9PiB7XG4gICAgICAgIGlmIChoZWFkZXJNYXAuaGFzKGhlYWRlclZhbHVlKSkge1xuICAgICAgICAgIG9yZGVyZWRIZWFkZXJzLnB1c2goaGVhZGVyTWFwLmdldChoZWFkZXJWYWx1ZSkpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgYWxsSGVhZGVycy5mb3JFYWNoKChoZWFkZXIpID0+IHtcbiAgICAgICAgaWYgKCFvcmRlci5pbmNsdWRlcyhoZWFkZXIudmFsdWUpKSB7XG4gICAgICAgICAgb3JkZXJlZEhlYWRlcnMucHVzaCh7IC4uLmhlYWRlciwgdGV4dDogdGhpcy4kdChoZWFkZXIudmFsdWUpIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5sb2NhbFZpc2libGVIZWFkZXJzID0gb3JkZXJlZEhlYWRlcnMuZmlsdGVyKFxuICAgICAgICAoaCkgPT4gaC52YWx1ZSAhPT0gXCJpZFwiICYmICFub3RBZmZpY2hlTGlzdC5pbmNsdWRlcyhoLnZhbHVlKVxuICAgICAgKTtcbiAgICAgIHRoaXMubG9jYWxIaWRkZW5IZWFkZXJzID0gb3JkZXJlZEhlYWRlcnMuZmlsdGVyKFxuICAgICAgICAoaCkgPT4gaC52YWx1ZSAhPT0gXCJpZFwiICYmIG5vdEFmZmljaGVMaXN0LmluY2x1ZGVzKGgudmFsdWUpXG4gICAgICApO1xuICAgIH0sXG5cbiAgICBvbkRyYWdFbmQoKSB7XG4gICAgICBjb25zdCBuZXdWaXNpYmxlVmFsdWVzID0gdGhpcy5sb2NhbFZpc2libGVIZWFkZXJzLm1hcCgoaCkgPT4gaC52YWx1ZSk7XG4gICAgICBjb25zdCBuZXdIaWRkZW5WYWx1ZXMgPSB0aGlzLmxvY2FsSGlkZGVuSGVhZGVycy5tYXAoKGgpID0+IGgudmFsdWUpO1xuXG4gICAgICB0aGlzLiRzdG9yZS5jb21taXQoXCJzaG93X2RhdGEvc2V0X25vdF9hZmZpY2hlc1wiLCB7XG4gICAgICAgIGRhdGE6IG5ld0hpZGRlblZhbHVlcyxcbiAgICAgICAgY29udHJvbGxlcl9yb290OiB0aGlzLmNvbnRyb2xsZXJfcm9vdCxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBuZXdPcmRlciA9IFsuLi5uZXdWaXNpYmxlVmFsdWVzLCAuLi5uZXdIaWRkZW5WYWx1ZXNdO1xuICAgICAgaWYgKFxuICAgICAgICB0aGlzLiRzdG9yZS5zdGF0ZS5zaG93X2RhdGEuaGVhZGVyc1t0aGlzLmNvbnRyb2xsZXJfcm9vdF0uc29tZShcbiAgICAgICAgICAoaCkgPT4gaC52YWx1ZSA9PT0gXCJpZFwiXG4gICAgICAgIClcbiAgICAgICkge1xuICAgICAgICBuZXdPcmRlci51bnNoaWZ0KFwiaWRcIik7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuJHN0b3JlLmNvbW1pdChcInNob3dfZGF0YS9zZXRfaGVhZGVyc19vcmRlclwiLCB7XG4gICAgICAgIGNvbnRyb2xsZXJfcm9vdDogdGhpcy5jb250cm9sbGVyX3Jvb3QsXG4gICAgICAgIG9yZGVyOiBuZXdPcmRlcixcbiAgICAgIH0pO1xuICAgIH0sXG5cbiAgICBvbkRyYWdFbmRNb2JpbGUoZXZlbnQpIHtcbiAgICAgIHRoaXMuJG5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgY29uc3QgbmV3T3JkZXJWYWx1ZXMgPSB0aGlzLmRyYWdnYWJsZUhlYWRlcnNGb3JNb2JpbGUubWFwKFxuICAgICAgICAgIChoKSA9PiBoLnZhbHVlXG4gICAgICAgICk7XG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aGlzLiRzdG9yZS5zdGF0ZS5zaG93X2RhdGEuaGVhZGVyc1t0aGlzLmNvbnRyb2xsZXJfcm9vdF0uc29tZShcbiAgICAgICAgICAgIChoKSA9PiBoLnZhbHVlID09PSBcImlkXCJcbiAgICAgICAgICApXG4gICAgICAgICkge1xuICAgICAgICAgIG5ld09yZGVyVmFsdWVzLnVuc2hpZnQoXCJpZFwiKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLiRzdG9yZS5jb21taXQoXCJzaG93X2RhdGEvc2V0X2hlYWRlcnNfb3JkZXJcIiwge1xuICAgICAgICAgIGNvbnRyb2xsZXJfcm9vdDogdGhpcy5jb250cm9sbGVyX3Jvb3QsXG4gICAgICAgICAgb3JkZXI6IG5ld09yZGVyVmFsdWVzLFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0sXG5cbiAgICBoaWRlQ29sdW1uKGhlYWRlcikge1xuICAgICAgdGhpcy5sb2NhbFZpc2libGVIZWFkZXJzID0gdGhpcy5sb2NhbFZpc2libGVIZWFkZXJzLmZpbHRlcihcbiAgICAgICAgKGgpID0+IGgudmFsdWUgIT09IGhlYWRlci52YWx1ZVxuICAgICAgKTtcbiAgICAgIHRoaXMubG9jYWxIaWRkZW5IZWFkZXJzLnVuc2hpZnQoaGVhZGVyKTtcbiAgICAgIHRoaXMub25EcmFnRW5kKCk7XG4gICAgfSxcblxuICAgIHNob3dDb2x1bW4oaGVhZGVyKSB7XG4gICAgICB0aGlzLmxvY2FsSGlkZGVuSGVhZGVycyA9IHRoaXMubG9jYWxIaWRkZW5IZWFkZXJzLmZpbHRlcihcbiAgICAgICAgKGgpID0+IGgudmFsdWUgIT09IGhlYWRlci52YWx1ZVxuICAgICAgKTtcbiAgICAgIHRoaXMubG9jYWxWaXNpYmxlSGVhZGVycy5wdXNoKGhlYWRlcik7XG4gICAgICB0aGlzLm9uRHJhZ0VuZCgpO1xuICAgIH0sXG5cbiAgICBnZXRFeHBhbmRlZEhlYWRlcnMoY29udHJvbGxlcl9leHBhbmRlZCkge1xuICAgICAgaWYgKCF0aGlzLm1haW5UYWJsZUl0ZW1zIHx8IHRoaXMubWFpblRhYmxlSXRlbXMubGVuZ3RoID09PSAwKSByZXR1cm4gW107XG5cbiAgICAgIGNvbnN0IGZpcnN0SXRlbSA9IHRoaXMubWFpblRhYmxlSXRlbXNbMF07XG4gICAgICBpZiAoXG4gICAgICAgIGZpcnN0SXRlbSAmJlxuICAgICAgICBmaXJzdEl0ZW1bY29udHJvbGxlcl9leHBhbmRlZF0gJiZcbiAgICAgICAgZmlyc3RJdGVtW2NvbnRyb2xsZXJfZXhwYW5kZWRdLnRpdGxlc1xuICAgICAgKSB7XG4gICAgICAgIHJldHVybiBmaXJzdEl0ZW1bY29udHJvbGxlcl9leHBhbmRlZF0udGl0bGVzLm1hcCgodGl0bGUpID0+ICh7XG4gICAgICAgICAgLi4udGl0bGUsXG4gICAgICAgICAgdGV4dDogdGhpcy4kdCh0aXRsZS52YWx1ZSksXG4gICAgICAgIH0pKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBbXTtcbiAgICB9LFxuXG4gICAgZXhwYW5kZWROb3RBZmZpY2hlKGNvbnRyb2xsZXJfZXhwYW5kZWQpIHtcbiAgICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuZXhwYW5kZWRDb25maWdzLmZpbmQoXG4gICAgICAgIChjKSA9PiBjLmNvbnRyb2xsZXJfYXR0YWNoID09PSBjb250cm9sbGVyX2V4cGFuZGVkXG4gICAgICApO1xuICAgICAgcmV0dXJuIGNvbmZpZyA/IGNvbmZpZy5ub3RfYWZmaWNoZSA6IFtdO1xuICAgIH0sXG5cbiAgICBjaGFuZ2VFeHBhbmRlZChjb250cm9sbGVyX2V4cGFuZGVkLCBzZWxlY3RlZENvbHVtbnMpIHtcbiAgICAgIHRoaXMuJHN0b3JlLmNvbW1pdChcInNob3dfZGF0YS9zZXRfbm90X2FmZmljaGVzX2V4cGFuZGVkc1wiLCB7XG4gICAgICAgIGRhdGE6IHNlbGVjdGVkQ29sdW1ucyxcbiAgICAgICAgY29udHJvbGxlcl9leHBhbmRlZDogY29udHJvbGxlcl9leHBhbmRlZCxcbiAgICAgICAgY29udHJvbGxlcl9yb290OiB0aGlzLmNvbnRyb2xsZXJfcm9vdCxcbiAgICAgIH0pO1xuICAgIH0sXG4gIH0sXG59O1xuPC9zY3JpcHQ+XG48c3R5bGUgc2NvcGVkPlxuLmRyYWctaGFuZGxlIHtcbiAgY3Vyc29yOiBtb3ZlO1xuICBtYXJnaW4tcmlnaHQ6IDEycHg7XG59XG4uY29sdW1uLWxpc3Qge1xuICBtaW4taGVpZ2h0OiAzMDBweDtcbiAgbWF4LWhlaWdodDogNDAwcHg7XG4gIG92ZXJmbG93LXk6IGF1dG87XG4gIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgcGFkZGluZzogOHB4O1xufVxuLyog2KrZhSDYrdiw2YEg2KfZhNij2YbZhdin2Lcg2KfZhNiq2Yog2YPYp9mG2Kog2YfZhtinINmF2KvZhCAuaGlkZGVuLWxpc3Qg2YggLmRyYWdnYWJsZS1pdGVtICovXG4uYXdhY29sb3Ige1xuICBmb250LXdlaWdodDogNTAwO1xufVxuLm1sLTgge1xuICBtYXJnaW4tbGVmdDogMzJweCAhaW1wb3J0YW50O1xufVxuPC9zdHlsZT5cblxuIiwiPHRlbXBsYXRlPlxuICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXJcIj5cbiAgICA8IS0tINij2LnZhdiv2Kkg2KfZhNis2K/ZiNmEINin2YTYsdim2YrYs9mKIChNYWluIFRhYmxlKSAtLT5cbiAgICA8ZHJhZ2dhYmxlXG4gICAgICB2LW1vZGVsPVwiZHJhZ2dhYmxlSGVhZGVyc1wiXG4gICAgICBoYW5kbGU9XCIuZHJhZy1oYW5kbGVcIlxuICAgICAgZGVuc2VcbiAgICA+XG4gICAgICA8di1saXN0LWl0ZW0gdi1mb3I9XCJoZWFkZXIgaW4gZHJhZ2dhYmxlSGVhZGVyc1wiIDprZXk9XCJoZWFkZXIudmFsdWVcIj5cbiAgICAgICAgPHYtaWNvbiBjbGFzcz1cImRyYWctaGFuZGxlXCI+bWRpLWRyYWctdmVydGljYWw8L3YtaWNvbj5cbiAgICAgICAgPHYtY2hlY2tib3hcbiAgICAgICAgICA6dmFsdWU9XCJoZWFkZXIudmFsdWVcIlxuICAgICAgICAgIHYtbW9kZWw9XCJub3RBZmZpY2hlXCJcbiAgICAgICAgICA6bGFiZWw9XCJoZWFkZXIudGV4dFwiXG4gICAgICAgICAgb2ZmLWljb249XCJtZGktZXllXCJcbiAgICAgICAgICBvbi1pY29uPVwibWRpLWV5ZS1vZmZcIlxuICAgICAgICAgIGNvbG9yPVwicmVkIGRhcmtlbi0zXCJcbiAgICAgICAgICBoaWRlLWRldGFpbHNcbiAgICAgICAgICBjbGFzcz1cImZsZXgtZ3Jvdy0xXCJcbiAgICAgICAgPlxuICAgICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6bGFiZWw+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImF3YWNvbG9yXCI+e3sgaGVhZGVyLnRleHQgfX08L3NwYW4+XG4gICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgPC92LWNoZWNrYm94PlxuICAgICAgPC92LWxpc3QtaXRlbT5cbiAgICA8L2RyYWdnYWJsZT5cblxuICAgIDx2LWRpdmlkZXIgY2xhc3M9XCJteS00XCIgdi1pZj1cImV4cGFuZGVkQ29uZmlncy5sZW5ndGggPiAwXCI+PC92LWRpdmlkZXI+XG5cbiAgICA8IS0tINit2YTZgtipINmE2LnYsdi2INil2LnYr9in2K/Yp9iqINin2YTYrNiv2KfZiNmEINin2YTZhdiq2K/Yp9iu2YTYqSAoRXhwYW5kZWQgVGFibGVzKSAtLT5cbiAgICA8di1saXN0IGRlbnNlPlxuICAgICAgPHYtc3ViaGVhZGVyPkNPTkZJRyByZWxhdGlvbnMgdGFibGVzPC92LXN1YmhlYWRlcj5cblxuICAgICAgPHYtbGlzdC1ncm91cFxuICAgICAgICB2LWZvcj1cImV4cGFuZGVkQ29uZmlnIGluIGV4cGFuZGVkQ29uZmlnc1wiXG4gICAgICAgIDprZXk9XCJleHBhbmRlZENvbmZpZy5jb250cm9sbGVyX2F0dGFjaFwiXG4gICAgICAgIG5vLWFjdGlvblxuICAgICAgICBzdWItZ3JvdXBcbiAgICAgID5cbiAgICAgICAgPHRlbXBsYXRlIHYtc2xvdDphY3RpdmF0b3I+XG4gICAgICAgICAgPHYtbGlzdC1pdGVtLWNvbnRlbnQ+XG4gICAgICAgICAgICA8di1saXN0LWl0ZW0tdGl0bGU+XG4gICAgICAgICAgICAgIDxoMyBjbGFzcz1cInByaW1hcnktLXRleHRcIj57eyAkdChleHBhbmRlZENvbmZpZy50aXRsZSkgfX08L2gzPlxuICAgICAgICAgICAgPC92LWxpc3QtaXRlbS10aXRsZT5cbiAgICAgICAgICA8L3YtbGlzdC1pdGVtLWNvbnRlbnQ+XG4gICAgICAgIDwvdGVtcGxhdGU+XG5cbiAgICAgICAgPCEtLSDZgtin2KbZhdipINij2LnZhdiv2Kkg2KfZhNis2K/ZiNmEINin2YTZhdiq2K/Yp9iu2YQgLS0+XG4gICAgICAgIDx2LWxpc3QtaXRlbVxuICAgICAgICAgIHYtZm9yPVwiaGVhZGVyIGluIGdldEV4cGFuZGVkSGVhZGVycyhleHBhbmRlZENvbmZpZy5jb250cm9sbGVyX2F0dGFjaClcIlxuICAgICAgICAgIDprZXk9XCJoZWFkZXIudmFsdWVcIlxuICAgICAgICA+XG4gICAgICAgICAgPHYtY2hlY2tib3hcbiAgICAgICAgICAgIDp2YWx1ZT1cImhlYWRlci52YWx1ZVwiXG4gICAgICAgICAgICA6bGFiZWw9XCJoZWFkZXIudGV4dFwiXG4gICAgICAgICAgICBAY2hhbmdlPVwiY2hhbmdlRXhwYW5kZWQoZXhwYW5kZWRDb25maWcuY29udHJvbGxlcl9hdHRhY2gsICRldmVudClcIlxuICAgICAgICAgICAgOmlucHV0LXZhbHVlPVwiZXhwYW5kZWROb3RBZmZpY2hlKGV4cGFuZGVkQ29uZmlnLmNvbnRyb2xsZXJfYXR0YWNoKVwiXG4gICAgICAgICAgICBvZmYtaWNvbj1cIm1kaS1leWVcIlxuICAgICAgICAgICAgb24taWNvbj1cIm1kaS1leWUtb2ZmXCJcbiAgICAgICAgICAgIGNvbG9yPVwicmVkIGRhcmtlbi0zXCJcbiAgICAgICAgICAgIGhpZGUtZGV0YWlsc1xuICAgICAgICAgICAgY2xhc3M9XCJtbC04XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8dGVtcGxhdGUgdi1zbG90OmxhYmVsPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImF3YWNvbG9yXCI+e3sgaGVhZGVyLnRleHQgfX08L3NwYW4+XG4gICAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICAgIDwvdi1jaGVja2JveD5cbiAgICAgICAgPC92LWxpc3QtaXRlbT5cbiAgICAgIDwvdi1saXN0LWdyb3VwPlxuICAgIDwvdi1saXN0PlxuICAgIDx2LWRpdmlkZXIgY2xhc3M9XCJteS00XCIgdi1pZj1cImV4cGFuZGVkQ29uZmlncy5sZW5ndGggPiAwXCI+PC92LWRpdmlkZXI+XG5cbiAgICA8YnIgLz5cbiAgICA8YnIgLz5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0PlxuZXhwb3J0IGRlZmF1bHQge1xuICBwcm9wczoge1xuICAgIGNvbnRyb2xsZXJfcm9vdDoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgfSxcbiAgfSxcbiAgZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZGlhbG9nOiBmYWxzZSxcbiAgICB9O1xuICB9LFxuICBjb21wdXRlZDoge1xuICAgIC8vINmH2LDZhyDYp9mE2K7Yp9i12YrYqSDYp9mE2YXYrdiz2YjYqNipINiz2KrZg9mI2YYg2KfZhNmG2YXZiNiw2KwgKG1vZGVsKSDZhNmC2KfYptmF2Kkg2KfZhNiz2K3YqFxuICAgIGRyYWdnYWJsZUhlYWRlcnM6IHtcbiAgICAgIGdldCgpIHtcbiAgICAgICAgY29uc3QgYWxsSGVhZGVycyA9XG4gICAgICAgICAgdGhpcy4kc3RvcmUuc3RhdGUuc2hvd19kYXRhLmhlYWRlcnNbdGhpcy5jb250cm9sbGVyX3Jvb3RdIHx8IFtdO1xuICAgICAgICBjb25zdCBvcmRlciA9XG4gICAgICAgICAgdGhpcy4kc3RvcmUuc3RhdGUuc2hvd19kYXRhLmhlYWRlcnNfb3JkZXJbdGhpcy5jb250cm9sbGVyX3Jvb3RdIHx8IFtdO1xuXG4gICAgICAgIGNvbnN0IG9yZGVyZWRIZWFkZXJzID0gW107XG4gICAgICAgIGNvbnN0IGhlYWRlck1hcCA9IG5ldyBNYXAoYWxsSGVhZGVycy5tYXAoKGgpID0+IFtoLnZhbHVlLCBoXSkpO1xuXG4gICAgICAgIG9yZGVyLmZvckVhY2goKGhlYWRlclZhbHVlKSA9PiB7XG4gICAgICAgICAgaWYgKGhlYWRlck1hcC5oYXMoaGVhZGVyVmFsdWUpKSB7XG4gICAgICAgICAgICBvcmRlcmVkSGVhZGVycy5wdXNoKGhlYWRlck1hcC5nZXQoaGVhZGVyVmFsdWUpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vINil2LbYp9mB2Kkg2KPZiiDYo9i52YXYr9ipINis2K/Zitiv2Kkg2LrZitixINmF2YjYrNmI2K/YqSDZgdmKINin2YTYqtix2KrZitioINin2YTZhdit2YHZiNi4INil2YTZiSDYp9mE2YbZh9in2YrYqVxuICAgICAgICBhbGxIZWFkZXJzLmZvckVhY2goKGhlYWRlcikgPT4ge1xuICAgICAgICAgIGlmICghb3JkZXIuaW5jbHVkZXMoaGVhZGVyLnZhbHVlKSkge1xuICAgICAgICAgICAgb3JkZXJlZEhlYWRlcnMucHVzaChoZWFkZXIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIG9yZGVyZWRIZWFkZXJzLmZpbHRlcigoaCkgPT4gaC52YWx1ZSAhPT0gXCJpZFwiKTtcbiAgICAgIH0sXG4gICAgICBzZXQobmV3T3JkZXIpIHtcbiAgICAgICAgLy8g2KfYs9iq2K7Ysdin2KwgJ3ZhbHVlJyDZgdmC2Lcg2YXZhiDYp9mE2YPYp9im2YbYp9iqXG4gICAgICAgIGNvbnN0IG9yZGVyVmFsdWVzID0gbmV3T3JkZXIubWFwKChoKSA9PiBoLnZhbHVlKTtcbiAgICAgICAgLy8g2KXYttin2YHYqSAnaWQnINiv2KfYptmF2YvYpyDZgdmKINin2YTYqNiv2KfZitipINil2LDYpyDZg9in2YYg2YXZiNis2YjYr9mL2KdcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHRoaXMuJHN0b3JlLnN0YXRlLnNob3dfZGF0YS5oZWFkZXJzW3RoaXMuY29udHJvbGxlcl9yb290XS5zb21lKFxuICAgICAgICAgICAgKGgpID0+IGgudmFsdWUgPT09IFwiaWRcIlxuICAgICAgICAgIClcbiAgICAgICAgKSB7XG4gICAgICAgICAgb3JkZXJWYWx1ZXMudW5zaGlmdChcImlkXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy4kc3RvcmUuY29tbWl0KFwic2hvd19kYXRhL3NldF9oZWFkZXJzX29yZGVyXCIsIHtcbiAgICAgICAgICBjb250cm9sbGVyX3Jvb3Q6IHRoaXMuY29udHJvbGxlcl9yb290LFxuICAgICAgICAgIG9yZGVyOiBvcmRlclZhbHVlcyxcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgIH0sXG5cbiAgICBub3RBZmZpY2hlOiB7XG4gICAgICBnZXQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiRzdG9yZS5nZXR0ZXJzW1wic2hvd19kYXRhL2dfbm90X2FmZmljaGVcIl0oe1xuICAgICAgICAgIGNvbnRyb2xsZXJfcm9vdDogdGhpcy5jb250cm9sbGVyX3Jvb3QsXG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICAgIHNldChuZXdWYWx1ZSkge1xuICAgICAgICB0aGlzLiRzdG9yZS5jb21taXQoXCJzaG93X2RhdGEvc2V0X25vdF9hZmZpY2hlc1wiLCB7XG4gICAgICAgICAgZGF0YTogbmV3VmFsdWUsXG4gICAgICAgICAgY29udHJvbGxlcl9yb290OiB0aGlzLmNvbnRyb2xsZXJfcm9vdCxcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgIH0sXG5cbiAgICBleHBhbmRlZENvbmZpZ3MoKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICB0aGlzLiRzdG9yZS5nZXR0ZXJzW1wic2hvd19kYXRhL2dfZXhwYW5kZWRcIl0oe1xuICAgICAgICAgIGNvbnRyb2xsZXJfcm9vdDogdGhpcy5jb250cm9sbGVyX3Jvb3QsXG4gICAgICAgIH0pIHx8IFtdXG4gICAgICApO1xuICAgIH0sXG5cbiAgICAvLyDYrNmE2Kgg2KjZitin2YbYp9iqINin2YTYrNiv2YjZhCDYp9mE2LHYptmK2LPZiiAo2LPZhtit2KrYp9is2YfYpyDZhNis2YTYqCDYo9i52YXYr9ipINin2YTYrNiv2KfZiNmEINin2YTZhdiq2K/Yp9iu2YTYqSlcbiAgICBtYWluVGFibGVJdGVtcygpIHtcbiAgICAgIHJldHVybiB0aGlzLiRzdG9yZS5nZXR0ZXJzW1wic2hvd19kYXRhL2dfaXRlbXNcIl0oe1xuICAgICAgICBjb250cm9sbGVyX3Jvb3Q6IHRoaXMuY29udHJvbGxlcl9yb290LFxuICAgICAgfSk7XG4gICAgfSxcbiAgfSxcbiAgbWV0aG9kczoge1xuICAgIC8vINiv2KfZhNipINmE2KzZhNioINij2LnZhdiv2Kkg2KfZhNis2K/ZiNmEINin2YTZhdiq2K/Yp9iu2YRcbiAgICBnZXRFeHBhbmRlZEhlYWRlcnMoY29udHJvbGxlcl9leHBhbmRlZCkge1xuICAgICAgLy8g2KfZhNmF2YbYt9mCINmH2YbYpyDZitit2KfZg9mKINmF2Kcg2YPYp9mGINmK2YHYudmE2Ycg2KfZhNmF2YPZiNmGINin2YTZgtiv2YrZhVxuICAgICAgaWYgKCF0aGlzLm1haW5UYWJsZUl0ZW1zIHx8IHRoaXMubWFpblRhYmxlSXRlbXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZmlyc3RJdGVtID0gdGhpcy5tYWluVGFibGVJdGVtc1swXTtcbiAgICAgIGlmIChcbiAgICAgICAgZmlyc3RJdGVtICYmXG4gICAgICAgIGZpcnN0SXRlbVtjb250cm9sbGVyX2V4cGFuZGVkXSAmJlxuICAgICAgICBmaXJzdEl0ZW1bY29udHJvbGxlcl9leHBhbmRlZF0udGl0bGVzXG4gICAgICApIHtcbiAgICAgICAgY29uc3QgdGl0bGVzID0gZmlyc3RJdGVtW2NvbnRyb2xsZXJfZXhwYW5kZWRdLnRpdGxlcztcbiAgICAgICAgLy8g2KrYt9io2YrZgiDYp9mE2KrYsdis2YXYqSDYudmE2Ykg2KfZhNij2LnZhdiv2KlcbiAgICAgICAgcmV0dXJuIHRpdGxlcy5tYXAoKHRpdGxlKSA9PiAoe1xuICAgICAgICAgIC4uLnRpdGxlLFxuICAgICAgICAgIHRleHQ6IHRoaXMuJHQodGl0bGUudmFsdWUpLFxuICAgICAgICB9KSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gW107XG4gICAgfSxcblxuICAgIC8vINiv2KfZhNipINmE2KzZhNioINin2YTYo9i52YXYr9ipINin2YTZhdiu2YHZitipINmE2YTYrNiv2YjZhCDYp9mE2YXYqtiv2KfYrtmEXG4gICAgZXhwYW5kZWROb3RBZmZpY2hlKGNvbnRyb2xsZXJfZXhwYW5kZWQpIHtcbiAgICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuZXhwYW5kZWRDb25maWdzLmZpbmQoXG4gICAgICAgIChjKSA9PiBjLmNvbnRyb2xsZXJfYXR0YWNoID09PSBjb250cm9sbGVyX2V4cGFuZGVkXG4gICAgICApO1xuICAgICAgcmV0dXJuIGNvbmZpZyA/IGNvbmZpZy5ub3RfYWZmaWNoZSA6IFtdO1xuICAgIH0sXG5cbiAgICAvLyDYr9in2YTYqSDZhNiq2K3Yr9mK2Ksg2KfZhNij2LnZhdiv2Kkg2KfZhNmF2K7ZgdmK2Kkg2YTZhNis2K/ZiNmEINin2YTZhdiq2K/Yp9iu2YRcbiAgICBjaGFuZ2VFeHBhbmRlZChjb250cm9sbGVyX2V4cGFuZGVkLCBzZWxlY3RlZENvbHVtbnMpIHtcbiAgICAgIHRoaXMuJHN0b3JlLmNvbW1pdChcInNob3dfZGF0YS9zZXRfbm90X2FmZmljaGVzX2V4cGFuZGVkc1wiLCB7XG4gICAgICAgIGRhdGE6IHNlbGVjdGVkQ29sdW1ucyxcbiAgICAgICAgY29udHJvbGxlcl9leHBhbmRlZDogY29udHJvbGxlcl9leHBhbmRlZCxcbiAgICAgICAgY29udHJvbGxlcl9yb290OiB0aGlzLmNvbnRyb2xsZXJfcm9vdCxcbiAgICAgIH0pO1xuICAgIH0sXG4gIH0sXG59O1xuPC9zY3JpcHQ+XG5cbjxzdHlsZSBzY29wZWQ+XG4uZHJhZy1oYW5kbGUge1xuICBjdXJzb3I6IG1vdmU7XG4gIG1hcmdpbi1yaWdodDogMTJweDtcbn1cblxuLmF3YWNvbG9yIHtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbn1cbjwvc3R5bGU+XG4iLCJcbi5tb2Rlcm4tZm9vdGVyIHtcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4wNik7XG4gIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45OCkgIWltcG9ydGFudDtcbiAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEwcHgpO1xuICBmb250LXNpemU6IDAuNzVyZW07XG5cbiAgLnRoZW1lLS1kYXJrICYge1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMzAsIDQxLCA1OSwgMC45OCkgIWltcG9ydGFudDtcbiAgICBib3JkZXItdG9wLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDgpO1xuICB9XG59XG5cbi5sb2dvLWltYWdlIHtcbiAgaGVpZ2h0OiAyNHB4O1xuICB3aWR0aDogYXV0bztcbn1cblxuLmZvb3Rlci10ZXh0IHtcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGdhcDogNHB4O1xuICBmb250LXdlaWdodDogNTAwO1xuICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjcpO1xuXG4gIC52LWljb24ge1xuICAgIGNvbG9yOiB2YXIoLS12LXByaW1hcnktYmFzZSk7XG4gIH1cblxuICAudGhlbWUtLWRhcmsgJiB7XG4gICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KTtcbiAgfVxufVxuXG4uZm9vdGVyLWNvcHlyaWdodCB7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNik7XG5cbiAgLnRoZW1lLS1kYXJrICYge1xuICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNik7XG4gIH1cbn1cblxuLmZvb3Rlci12ZXJzaW9uIHtcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGdhcDogMnB4O1xuICBmb250LXdlaWdodDogNjAwO1xuICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjcpO1xuICBwYWRkaW5nOiAxcHggNnB4O1xuICBib3JkZXItcmFkaXVzOiA4cHg7XG4gIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tdi1wcmltYXJ5LWJhc2UtcmdiKSwgMC4wOCk7XG5cbiAgLnRoZW1lLS1kYXJrICYge1xuICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOCk7XG4gICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS12LXByaW1hcnktYmFzZS1yZ2IpLCAwLjE1KTtcbiAgfVxufVxuXG4uc3VwcG9ydC1sYWJlbCB7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IDNweDtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC42NSk7XG4gIHBhZGRpbmc6IDFweCA2cHg7XG4gIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS12LWluZm8tYmFzZS1yZ2IpLCAwLjEpO1xuICBtYXJnaW4tcmlnaHQ6IDZweDtcblxuICAudGhlbWUtLWRhcmsgJiB7XG4gICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43NSk7XG4gICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS12LWluZm8tYmFzZS1yZ2IpLCAwLjE1KTtcbiAgfVxufVxuXG4uZm9vdGVyLWNvbnRhY3Qge1xuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiAzcHg7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgcGFkZGluZzogMnB4IDZweDtcbiAgYm9yZGVyLXJhZGl1czogMTJweDtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC44KTtcbiAgdHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2U7XG5cbiAgLnRoZW1lLS1kYXJrICYge1xuICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOCk7XG4gIH1cblxuICAmOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLXYtc3VjY2Vzcy1iYXNlLXJnYiksIDAuMSk7XG4gICAgY29sb3I6IHZhcigtLXYtc3VjY2Vzcy1iYXNlKTtcbiAgfVxufVxuXG4uZm9vdGVyLWRpdmlkZXIge1xuICBoZWlnaHQ6IDE2cHg7XG4gIG9wYWNpdHk6IDAuMjtcbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDEyODBweCkge1xuICAubW9kZXJuLWZvb3RlciB7XG4gICAgZm9udC1zaXplOiAwLjdyZW07XG4gIH1cblxuICAubG9nby1pbWFnZSB7XG4gICAgaGVpZ2h0OiAyMHB4O1xuICB9XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA5NjBweCkge1xuICAuZm9vdGVyLWRpdmlkZXIge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgfVxuXG4gIC52LWZvb3RlciAuY29udGFpbmVyIHtcbiAgICBwYWRkaW5nOiA0cHggIWltcG9ydGFudDtcbiAgfVxuXG4gIC52LXJvdyB7XG4gICAgZmxleC13cmFwOiB3cmFwO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7XG4gICAgZ2FwOiA0cHg7XG4gIH1cbn1cbiIsIlxuLmdsb2JhbC1zZWFyY2gge1xuICAgIC5ob3Zlci1pdGVtIHtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMnMgZWFzZTtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4wNCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8dGVtcGxhdGU+XG4gIDx2LWNhcmQgY2xhc3M9XCJlbGV2YXRpb24tMFwiIHdpZHRoPVwiNTAwXCIgbWF4LWhlaWdodD1cIjM1MFwiPlxuICAgIDx2LXRvb2xiYXIgZGVuc2UgY29sb3I9XCJ0cmFuc3BhcmVudFwiPlxuICAgICAgPHYtdGFicyB2LW1vZGVsPVwiYWN0aXZlVGFiXCIgY2VudGVyZWQgYmFja2dyb3VuZC1jb2xvcj1cInRyYW5zcGFyZW50XCIgc2xpZGVyLWNvbG9yPVwicHJpbWFyeVwiPlxuICAgICAgICA8di10YWI+XG4gICAgICAgICAge3sgJHQoJ05vdGlmaWNhdGlvbnMnKSB9fVxuICAgICAgICA8L3YtdGFiPlxuICAgICAgICA8di10YWI+XG4gICAgICAgICAge3sgJHQoJ1Byb2Jsw6htZXMnKSB9fVxuICAgICAgICAgIDx2LWJhZGdlIHYtaWY9XCJoYXNBbm9tYWxpZXNcIiBjb2xvcj1cInJlZFwiIDpjb250ZW50PVwiYW5vbWFsaWVzLmxlbmd0aFwiIGlubGluZSBzbWFsbCBjbGFzcz1cIm1sLTFcIj48L3YtYmFkZ2U+XG4gICAgICAgIDwvdi10YWI+XG4gICAgICA8L3YtdGFicz5cbiAgICA8L3YtdG9vbGJhcj5cbiAgICA8di1kaXZpZGVyPjwvdi1kaXZpZGVyPlxuICAgIDx2LXByb2dyZXNzLWxpbmVhciB2LWlmPVwibG9hZGluZ1wiIGluZGV0ZXJtaW5hdGUgY29sb3I9XCJwcmltYXJ5XCIgaGVpZ2h0PVwiNFwiPjwvdi1wcm9ncmVzcy1saW5lYXI+XG4gICAgPHYtY2FyZC10ZXh0IGNsYXNzPVwicGEtMFwiPlxuICAgICAgPGRpdiB2LWlmPVwibG9hZGluZ1wiIGNsYXNzPVwicGEtNFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBtYi00XCI+XG4gICAgICAgICAgPHYtaWNvbiBjb2xvcj1cInByaW1hcnlcIiBjbGFzcz1cInNwaW4taWNvbiBtci0yXCI+bWRpLWxvYWRpbmc8L3YtaWNvbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImdyZXktLXRleHQgdGV4dC0tZGFya2VuLTFcIj57eyAkdCgnU3luY2hyb25pc2F0aW9uIGRlcyBkb25uw6llcy4uLicpIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHYtc2tlbGV0b24tbG9hZGVyIHYtZm9yPVwibiBpbiAzXCIgOmtleT1cIm5cIiB0eXBlPVwibGlzdC1pdGVtLWF2YXRhci10aHJlZS1saW5lXCIgY2xhc3M9XCJtYi0yXCI+PC92LXNrZWxldG9uLWxvYWRlcj5cbiAgICAgIDwvZGl2PlxuICAgICAgPHYtbGlzdCB2LWVsc2UgdGhyZWUtbGluZSBjbGFzcz1cInBhLTBcIiByb3VuZGVkIGF2YXRhcj5cbiAgICAgICAgPHYtc2xpZGUteS10cmFuc2l0aW9uIGdyb3VwPlxuICAgICAgICAgIDx0ZW1wbGF0ZSB2LWZvcj1cIihpdGVtLCBpbmRleCkgaW4gaXRlbXNcIj5cbiAgICAgICAgICAgIDx2LWRpdmlkZXIgdi1pZj1cIml0ZW0uZGl2aWRlclwiIDprZXk9XCInZGl2LScgKyBpbmRleFwiPjwvdi1kaXZpZGVyPlxuXG4gICAgICAgICAgICA8di1saXN0LWl0ZW0gdi1lbHNlIDprZXk9XCInaXRlbS0nICsgaW5kZXhcIiBAY2xpY2s9XCJoYW5kbGVDbGljayhpdGVtKVwiIGluYWN0aXZlIGNsYXNzPVwiaG92ZXItaXRlbVwiPlxuICAgICAgICAgICAgICA8di1saXN0LWl0ZW0tYXZhdGFyIHNpemU9XCIzMHB4XCI+XG4gICAgICAgICAgICAgICAgPHYtdG9vbHRpcCByaWdodD5cbiAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6YWN0aXZhdG9yPVwieyBvbiB9XCI+XG4gICAgICAgICAgICAgICAgICAgIDxpbWcgdi1pZj1cIml0ZW0uYXZhdGFyXCIgOnNyYz1cIml0ZW0uYXZhdGFyXCIgYWx0PVwiYXZhdGFyXCIgdi1vbj1cIm9uXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPHYtaWNvbiB2LWVsc2Ugdi1vbj1cIm9uXCIgOmNvbG9yPVwiaXRlbS5jb2xvciB8fCAncmVkJ1wiPnt7IGl0ZW0uaWNvbiB8fCAnbWRpLWFsZXJ0JyB9fTwvdi1pY29uPlxuICAgICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPiB7eyAkdCgndXRpbGlzYXRldXInKSB9fSA6IHt7IGl0ZW0udXNlciAmJiBpdGVtLnVzZXIudG9VcHBlckNhc2UoKSB9fSB7eyAkdCgnZW1haWwnKSB9fSA6e3tcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5lbWFpbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L3YtdG9vbHRpcD5cbiAgICAgICAgICAgICAgPC92LWxpc3QtaXRlbS1hdmF0YXI+XG5cbiAgICAgICAgICAgICAgPHYtbGlzdC1pdGVtLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgPHYtbGlzdC1pdGVtLXRpdGxlPlxuICAgICAgICAgICAgICAgICAgPHYtaWNvbiBkYXJrIDpjb2xvcj1cIml0ZW0uY29sb3JcIj57eyBpdGVtLmljb24gfX08L3YtaWNvbj5cbiAgICAgICAgICAgICAgICAgIDxzdHJvbmcgY2xhc3M9XCJpbmRpZ28tLXRleHQgdGV4dC0tZGFya2VuLTJcIj57eyAkdChpdGVtLnRpdGxlKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgIDwvdi1saXN0LWl0ZW0tdGl0bGU+XG5cbiAgICAgICAgICAgICAgICA8di1saXN0LWl0ZW0tc3VidGl0bGU+XG4gICAgICAgICAgICAgICAgICA8aDQ+XG4gICAgICAgICAgICAgICAgICAgIDx2LWljb24gZGFyayA6Y29sb3I9XCJpdGVtLmNvbG9yXCI+bWRpLWFjY291bnQ8L3YtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPHN0cm9uZyBjbGFzcz1cInRleHQtLXByaW1hcnkgc3VidGl0bGUtMlwiPnt7IGl0ZW0udXNlciA/IGl0ZW0udXNlci50b1VwcGVyQ2FzZSgpIDogJycgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgIDwvaDQ+XG5cbiAgICAgICAgICAgICAgICAgIDxoND5cbiAgICAgICAgICAgICAgICAgICAgPHYtaWNvbiBkYXJrIDpjb2xvcj1cIml0ZW0uY29sb3JcIj5tZGktZW1haWw8L3YtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz4ge3sgaXRlbS50ZXh0IH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICA8L2g0PlxuXG5cblxuICAgICAgICAgICAgICAgIDwvdi1saXN0LWl0ZW0tc3VidGl0bGU+XG4gICAgICAgICAgICAgIDwvdi1saXN0LWl0ZW0tY29udGVudD5cblxuICAgICAgICAgICAgICA8di1saXN0LWl0ZW0tYWN0aW9uIGNsYXNzPVwiY2FwdGlvbiBqdXN0aWZ5LWNlbnRlciBhbGlnbi1jb250ZW50LWNlbnRlclwiPlxuICAgICAgICAgICAgICAgIDxoND57eyAkdCgnw6l2w6luZW1lbnQnKSB9fSA6IHt7ICR0KGl0ZW0uYWN0aW9uKSB9fTwvaDQ+XG4gICAgICAgICAgICAgICAge3sgaXRlbS5kYXRlIH19XG4gICAgICAgICAgICAgICAgPGJyIC8+XG4gICAgICAgICAgICAgICAge3sgaXRlbS50aW1lIH19XG4gICAgICAgICAgICAgICAgPCEtLSA8di1idG4gZmFiIHgtc21hbGwgQGNsaWNrPVwiaXRlbS5jbGlja1wiPlxuICAgICAgICAgICAgICAgIDx2LWljb24geC1zbWFsbCBkYXJrIGNvbG9yPVwibGlnaHQtYmx1ZVwiPm1kaS1oYW5kLW9rYXk8L3YtaWNvbj5cbiAgICAgICAgICAgICAgPC92LWJ0bj4tLT5cbiAgICAgICAgICAgICAgPC92LWxpc3QtaXRlbS1hY3Rpb24+XG4gICAgICAgICAgICA8L3YtbGlzdC1pdGVtPlxuICAgICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgIDwvdi1zbGlkZS15LXRyYW5zaXRpb24+XG5cbiAgICAgICAgPHYtYWxlcnQgdi1pZj1cIml0ZW1zLmxlbmd0aCA9PT0gMFwiIHR5cGU9XCJpbmZvXCIgdGV4dCBjbGFzcz1cIm1hLTJcIj5cbiAgICAgICAgICB7eyBhY3RpdmVUYWIgPT09IDAgPyAkdCgnQXVjdW5lIG5vdGlmaWNhdGlvbicpIDogJHQoJ0F1Y3VuIHByb2Jsw6htZSBkw6l0ZWN0w6knKSB9fVxuICAgICAgICA8L3YtYWxlcnQ+XG5cbiAgICAgIDwvdi1saXN0PlxuICAgICAgPHYtZGl2aWRlcj48L3YtZGl2aWRlcj5cbiAgICAgIDx2LWJ0biBibG9jayBjbGFzcz1cIm1hLTBcIiA6dG89XCJ7IG5hbWU6ICd1c2VybG9nX3Nob3cnIH1cIiB2LWlmPVwiYWN0aXZlVGFiID09PSAwXCI+e3sgJHQoJ3RvdXRlcyDDqXbDqW5lbWVudHMnKVxuICAgICAgfX08L3YtYnRuPlxuICAgICAgPHYtYnRuIGJsb2NrIGNsYXNzPVwibWEtMCBlcnJvciB3aGl0ZS0tdGV4dFwiIHYtZWxzZS1pZj1cImFjdGl2ZVRhYiA9PT0gMSAmJiBoYXNBbm9tYWxpZXNcIlxuICAgICAgICBAY2xpY2s9XCJoYW5kbGVDbGljayhpdGVtc1swXSlcIj57eyAkdCgnUsOpc291ZHJlIGxlcyBwcm9ibMOobWVzJylcbiAgICAgICAgfX08L3YtYnRuPlxuICAgICAgPHYtZGl2aWRlcj48L3YtZGl2aWRlcj5cbiAgICA8L3YtY2FyZC10ZXh0PlxuICA8L3YtY2FyZD5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG5pbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIGRhdGE6ICgpID0+ICh7XG4gICAgYWN0aXZlVGFiOiAwLFxuICAgIGFub21hbGllczogW10sXG4gICAgbG9hZGluZzogZmFsc2UsXG4gICAgZXJyb3I6IG51bGwsXG4gIH0pLFxuICBtZXRob2RzOiB7XG4gICAgaGFuZGxlQ2xpY2soZSkge1xuICAgICAgY29uc29sZS5sb2coZSk7XG4gICAgICBpZiAoZSAmJiBlLnR5cGUgPT09ICdhbm9tYWx5Jykge1xuICAgICAgICB0aGlzLiRyb3V0ZXIucHVzaCh7IG5hbWU6ICdmaW5hbmNlX2FjY291bnRpbmdfaXNzdWVzJyB9KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGFzeW5jIGZldGNoQW5vbWFsaWVzKCkge1xuICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgYXhpb3MuZ2V0KCcvYW5hbHlzZS9jaGVjaycpO1xuICAgICAgICBpZiAocmVzcG9uc2UuZGF0YS5zdGF0dXMgPT09ICdzdWNjZXNzJykge1xuICAgICAgICAgIGNvbnN0IHJlcG9ydCA9IHJlc3BvbnNlLmRhdGEucmVwb3J0O1xuICAgICAgICAgIGNvbnN0IG5ld0Fub21hbGllcyA9IFtdO1xuXG4gICAgICAgICAgY29uc3QgdHlwZXMgPSB7XG4gICAgICAgICAgICBib25zX3ZlbnRlczogeyBsYWJlbDogJ0JvbnMgZGUgVmVudGUnLCBpY29uOiAnbWRpLXJlY2VpcHQnIH0sXG4gICAgICAgICAgICBmYWN0dXJlc192ZW50ZXM6IHsgbGFiZWw6ICdGYWN0dXJlcyBkZSBWZW50ZScsIGljb246ICdtZGktZmlsZS1kb2N1bWVudCcgfSxcbiAgICAgICAgICAgIGF2b2lyc192ZW50ZXM6IHsgbGFiZWw6ICdBdm9pcnMgZGUgVmVudGUnLCBpY29uOiAnbWRpLWZpbGUtY2FuY2VsJyB9LFxuICAgICAgICAgICAgYm9uc19hY2hhdHM6IHsgbGFiZWw6ICdCb25zIGRcXCdBY2hhdCcsIGljb246ICdtZGktcmVjZWlwdC10ZXh0JyB9LFxuICAgICAgICAgICAgZmFjdHVyZXNfYWNoYXRzOiB7IGxhYmVsOiAnRmFjdHVyZXMgZFxcJ0FjaGF0JywgaWNvbjogJ21kaS1maWxlLWRvY3VtZW50LW91dGxpbmUnIH0sXG4gICAgICAgICAgICBhdm9pcnNfYWNoYXRzOiB7IGxhYmVsOiAnQXZvaXJzIGRcXCdBY2hhdCcsIGljb246ICdtZGktZmlsZS1jYW5jZWwtb3V0bGluZScgfVxuICAgICAgICAgIH07XG5cbiAgICAgICAgICBmb3IgKGNvbnN0IFtrZXksIGRhdGFdIG9mIE9iamVjdC5lbnRyaWVzKHJlcG9ydCkpIHtcbiAgICAgICAgICAgIGlmIChkYXRhLmVudGl0aWVzICYmIGRhdGEuZW50aXRpZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICBkYXRhLmVudGl0aWVzLmZvckVhY2goZW50aXR5ID0+IHtcbiAgICAgICAgICAgICAgICBuZXdBbm9tYWxpZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgICB0eXBlOiAnYW5vbWFseScsXG4gICAgICAgICAgICAgICAgICBhdmF0YXI6IG51bGwsIC8vIE5vIGF2YXRhciBmb3Igc3lzdGVtIGFsZXJ0c1xuICAgICAgICAgICAgICAgICAgdXNlcjogZW50aXR5Lm5hbWUsXG4gICAgICAgICAgICAgICAgICBlbWFpbDogYERpZmY6ICR7cGFyc2VGbG9hdChlbnRpdHkudG90YWxfZGlmZikudG9GaXhlZCgyKX1gLFxuICAgICAgICAgICAgICAgICAgY29sb3I6ICdyZWQnLFxuICAgICAgICAgICAgICAgICAgaWNvbjogdHlwZXNba2V5XT8uaWNvbiB8fCAnbWRpLWFsZXJ0JyxcbiAgICAgICAgICAgICAgICAgIHRpdGxlOiB0eXBlc1trZXldPy5sYWJlbCB8fCBrZXksXG4gICAgICAgICAgICAgICAgICB0ZXh0OiBgJHtlbnRpdHkuY291bnR9IGFub21hbGllc2AsXG4gICAgICAgICAgICAgICAgICBhY3Rpb246ICdDb3JyaWdlcicsIC8vIFwiRml4XCJcbiAgICAgICAgICAgICAgICAgIGRhdGU6ICcnLCAvLyBObyBkYXRlXG4gICAgICAgICAgICAgICAgICB0aW1lOiAnJyxcbiAgICAgICAgICAgICAgICAgIG9yaWdpbmFsRGF0YTogZW50aXR5XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmFub21hbGllcyA9IG5ld0Fub21hbGllcztcbiAgICAgICAgICBpZiAodGhpcy5hbm9tYWxpZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5hY3RpdmVUYWIgPSAxO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvciBmZXRjaGluZyBhbm9tYWxpZXNcIiwgZXJyKTtcbiAgICAgICAgdGhpcy5lcnJvciA9IGVycjtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgbW91bnRlZCgpIHtcbiAgICB0aGlzLmZldGNoQW5vbWFsaWVzKCk7XG4gIH0sXG4gIGNvbXB1dGVkOiB7XG4gICAgaXRlbXMoKSB7XG4gICAgICBpZiAodGhpcy5hY3RpdmVUYWIgPT09IDEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYW5vbWFsaWVzO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMuJHN0b3JlLmdldHRlcnNbXCJ0aGVtZS9ub3RpZmljYXRpb25cIl0gfHwgW107XG4gICAgfSxcbiAgICBoYXNBbm9tYWxpZXMoKSB7XG4gICAgICByZXR1cm4gdGhpcy5hbm9tYWxpZXMubGVuZ3RoID4gMDtcbiAgICB9XG4gIH0sXG59O1xuPC9zY3JpcHQ+XG5cblxuPHN0eWxlIHNjb3BlZD5cbi5ob3Zlci1pdGVtIHtcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjJzO1xufVxuXG4uaG92ZXItaXRlbTpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4wMyk7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuLnNwaW4taWNvbiB7XG4gIGFuaW1hdGlvbjogc3BpbiAxcyBsaW5lYXIgaW5maW5pdGU7XG59XG5cbkBrZXlmcmFtZXMgc3BpbiB7XG4gIGZyb20ge1xuICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xuICB9XG5cbiAgdG8ge1xuICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XG4gIH1cbn1cbjwvc3R5bGU+XG4iLCI8dGVtcGxhdGU+XG4gICAgPHYtY2FyZCBjbGFzcz1cImZpbmFuY2lhbC1jYWxjdWxhdG9yIGVsZXZhdGlvbi04XCIgdGFiaW5kZXg9XCIwXCIgQGtleWRvd249XCJoYW5kbGVLZXlib2FyZFwiPlxuICAgICAgICA8IS0tIEhpc3RvcnkgRGlzcGxheSAoc2hvd3MgZnVsbCBleHByZXNzaW9uKSAtLT5cbiAgICAgICAgPHYtY2FyZC10ZXh0IGNsYXNzPVwicHgtNCBwdC0zIHBiLTFcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJleHByZXNzaW9uLWRpc3BsYXlcIj5cbiAgICAgICAgICAgICAgICB7eyBleHByZXNzaW9uIHx8ICcwJyB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvdi1jYXJkLXRleHQ+XG5cbiAgICAgICAgPCEtLSBNYWluIERpc3BsYXkgKHNob3dzIGN1cnJlbnQgbnVtYmVyKSAtLT5cbiAgICAgICAgPHYtY2FyZC10ZXh0IGNsYXNzPVwicHgtNCBwdC0wIHBiLTNcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYWluLWRpc3BsYXlcIj5cbiAgICAgICAgICAgICAgICB7eyBkaXNwbGF5VmFsdWUgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3YtY2FyZC10ZXh0PlxuXG4gICAgICAgIDwhLS0gV2VsY29tZSAmIEFjdGl2YXRpb24gTWVzc2FnZSAtLT5cbiAgICAgICAgPHYtY2FyZC10ZXh0IGNsYXNzPVwicHktMyBweC00XCIgdi1pZj1cIiFpc0FjdGl2YXRlZFwiPlxuICAgICAgICAgICAgPHYtY2FyZCBvdXRsaW5lZCBjbGFzcz1cIndlbGNvbWUtY2FyZFwiIEBjbGljaz1cImFjdGl2YXRlS2V5Ym9hcmRcIj5cbiAgICAgICAgICAgICAgICA8di1jYXJkLXRleHQgY2xhc3M9XCJ0ZXh0LWNlbnRlciBweS00XCI+XG4gICAgICAgICAgICAgICAgICAgIDx2LWljb24gY29sb3I9XCJwcmltYXJ5XCIgc2l6ZT1cIjQ4XCIgY2xhc3M9XCJtYi0yXCI+bWRpLWNhbGN1bGF0b3ItdmFyaWFudDwvdi1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1oNiBmb250LXdlaWdodC1ib2xkIHByaW1hcnktLXRleHQgbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgQmllbnZlbnVlICFcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWJvZHktMiBtYi0zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBDbGlxdWV6IGljaSBwb3VyIGNvbW1lbmNlciDDoCB1dGlsaXNlciBsYSBjYWxjdWxhdHJpY2VcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDx2LWJ0biBjb2xvcj1cInByaW1hcnlcIiByb3VuZGVkIGVsZXZhdGlvbj1cIjJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx2LWljb24gbGVmdD5tZGkta2V5Ym9hcmQ8L3YtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEFjdGl2ZXIgbGUgY2xhdmllclxuICAgICAgICAgICAgICAgICAgICA8L3YtYnRuPlxuICAgICAgICAgICAgICAgIDwvdi1jYXJkLXRleHQ+XG4gICAgICAgICAgICA8L3YtY2FyZD5cbiAgICAgICAgPC92LWNhcmQtdGV4dD5cblxuICAgICAgICA8di1kaXZpZGVyPjwvdi1kaXZpZGVyPlxuXG4gICAgICAgIDwhLS0gQ2FsY3VsYXRvciBCdXR0b25zIC0tPlxuICAgICAgICA8di1jYXJkLXRleHQgY2xhc3M9XCJwYS0zXCI+XG4gICAgICAgICAgICA8di1yb3cgZGVuc2U+XG4gICAgICAgICAgICAgICAgPCEtLSBSb3cgMTogQ2xlYXIsIERlbGV0ZSwgJSwgLyAtLT5cbiAgICAgICAgICAgICAgICA8di1jb2wgY29scz1cIjNcIj5cbiAgICAgICAgICAgICAgICAgICAgPHYtYnRuIGJsb2NrIGNsYXNzPVwiY2FsYy1idG4gY2xlYXItYnRuXCIgQGNsaWNrPVwiY2xlYXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEFDXG4gICAgICAgICAgICAgICAgICAgIDwvdi1idG4+XG4gICAgICAgICAgICAgICAgPC92LWNvbD5cbiAgICAgICAgICAgICAgICA8di1jb2wgY29scz1cIjNcIj5cbiAgICAgICAgICAgICAgICAgICAgPHYtYnRuIGJsb2NrIGNsYXNzPVwiY2FsYy1idG4gZnVuY3Rpb24tYnRuXCIgQGNsaWNrPVwiZGVsZXRlTGFzdERpZ2l0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICDijKtcbiAgICAgICAgICAgICAgICAgICAgPC92LWJ0bj5cbiAgICAgICAgICAgICAgICA8L3YtY29sPlxuICAgICAgICAgICAgICAgIDx2LWNvbCBjb2xzPVwiM1wiPlxuICAgICAgICAgICAgICAgICAgICA8di1idG4gYmxvY2sgY2xhc3M9XCJjYWxjLWJ0biBmdW5jdGlvbi1idG5cIiBAY2xpY2s9XCJwZXJjZW50YWdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAlXG4gICAgICAgICAgICAgICAgICAgIDwvdi1idG4+XG4gICAgICAgICAgICAgICAgPC92LWNvbD5cbiAgICAgICAgICAgICAgICA8di1jb2wgY29scz1cIjNcIj5cbiAgICAgICAgICAgICAgICAgICAgPHYtYnRuIGJsb2NrIGNsYXNzPVwiY2FsYy1idG4gb3BlcmF0b3ItYnRuXCIgQGNsaWNrPVwic2V0T3BlcmF0b3IoJy8nKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgw7dcbiAgICAgICAgICAgICAgICAgICAgPC92LWJ0bj5cbiAgICAgICAgICAgICAgICA8L3YtY29sPlxuXG4gICAgICAgICAgICAgICAgPCEtLSBSb3cgMjogNywgOCwgOSwgKiAtLT5cbiAgICAgICAgICAgICAgICA8di1jb2wgY29scz1cIjNcIiB2LWZvcj1cIm51bSBpbiBbNywgOCwgOV1cIiA6a2V5PVwiJ24nICsgbnVtXCI+XG4gICAgICAgICAgICAgICAgICAgIDx2LWJ0biBibG9jayBjbGFzcz1cImNhbGMtYnRuIG51bWJlci1idG5cIiBAY2xpY2s9XCJhcHBlbmROdW1iZXIobnVtKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgbnVtIH19XG4gICAgICAgICAgICAgICAgICAgIDwvdi1idG4+XG4gICAgICAgICAgICAgICAgPC92LWNvbD5cbiAgICAgICAgICAgICAgICA8di1jb2wgY29scz1cIjNcIj5cbiAgICAgICAgICAgICAgICAgICAgPHYtYnRuIGJsb2NrIGNsYXNzPVwiY2FsYy1idG4gb3BlcmF0b3ItYnRuXCIgQGNsaWNrPVwic2V0T3BlcmF0b3IoJyonKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgw5dcbiAgICAgICAgICAgICAgICAgICAgPC92LWJ0bj5cbiAgICAgICAgICAgICAgICA8L3YtY29sPlxuXG4gICAgICAgICAgICAgICAgPCEtLSBSb3cgMzogNCwgNSwgNiwgLSAtLT5cbiAgICAgICAgICAgICAgICA8di1jb2wgY29scz1cIjNcIiB2LWZvcj1cIm51bSBpbiBbNCwgNSwgNl1cIiA6a2V5PVwiJ24nICsgbnVtXCI+XG4gICAgICAgICAgICAgICAgICAgIDx2LWJ0biBibG9jayBjbGFzcz1cImNhbGMtYnRuIG51bWJlci1idG5cIiBAY2xpY2s9XCJhcHBlbmROdW1iZXIobnVtKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgbnVtIH19XG4gICAgICAgICAgICAgICAgICAgIDwvdi1idG4+XG4gICAgICAgICAgICAgICAgPC92LWNvbD5cbiAgICAgICAgICAgICAgICA8di1jb2wgY29scz1cIjNcIj5cbiAgICAgICAgICAgICAgICAgICAgPHYtYnRuIGJsb2NrIGNsYXNzPVwiY2FsYy1idG4gb3BlcmF0b3ItYnRuXCIgQGNsaWNrPVwic2V0T3BlcmF0b3IoJy0nKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAg4oiSXG4gICAgICAgICAgICAgICAgICAgIDwvdi1idG4+XG4gICAgICAgICAgICAgICAgPC92LWNvbD5cblxuICAgICAgICAgICAgICAgIDwhLS0gUm93IDQ6IDEsIDIsIDMsICsgLS0+XG4gICAgICAgICAgICAgICAgPHYtY29sIGNvbHM9XCIzXCIgdi1mb3I9XCJudW0gaW4gWzEsIDIsIDNdXCIgOmtleT1cIiduJyArIG51bVwiPlxuICAgICAgICAgICAgICAgICAgICA8di1idG4gYmxvY2sgY2xhc3M9XCJjYWxjLWJ0biBudW1iZXItYnRuXCIgQGNsaWNrPVwiYXBwZW5kTnVtYmVyKG51bSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IG51bSB9fVxuICAgICAgICAgICAgICAgICAgICA8L3YtYnRuPlxuICAgICAgICAgICAgICAgIDwvdi1jb2w+XG4gICAgICAgICAgICAgICAgPHYtY29sIGNvbHM9XCIzXCI+XG4gICAgICAgICAgICAgICAgICAgIDx2LWJ0biBibG9jayBjbGFzcz1cImNhbGMtYnRuIG9wZXJhdG9yLWJ0blwiIEBjbGljaz1cInNldE9wZXJhdG9yKCcrJylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICtcbiAgICAgICAgICAgICAgICAgICAgPC92LWJ0bj5cbiAgICAgICAgICAgICAgICA8L3YtY29sPlxuXG4gICAgICAgICAgICAgICAgPCEtLSBSb3cgNTogKy8tLCAwLCAuLCA9IC0tPlxuICAgICAgICAgICAgICAgIDx2LWNvbCBjb2xzPVwiM1wiPlxuICAgICAgICAgICAgICAgICAgICA8di1idG4gYmxvY2sgY2xhc3M9XCJjYWxjLWJ0biBmdW5jdGlvbi1idG5cIiBAY2xpY2s9XCJ0b2dnbGVTaWduXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICArL+KIklxuICAgICAgICAgICAgICAgICAgICA8L3YtYnRuPlxuICAgICAgICAgICAgICAgIDwvdi1jb2w+XG4gICAgICAgICAgICAgICAgPHYtY29sIGNvbHM9XCIzXCI+XG4gICAgICAgICAgICAgICAgICAgIDx2LWJ0biBibG9jayBjbGFzcz1cImNhbGMtYnRuIG51bWJlci1idG5cIiBAY2xpY2s9XCJhcHBlbmROdW1iZXIoMClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICAgICAgPC92LWJ0bj5cbiAgICAgICAgICAgICAgICA8L3YtY29sPlxuICAgICAgICAgICAgICAgIDx2LWNvbCBjb2xzPVwiM1wiPlxuICAgICAgICAgICAgICAgICAgICA8di1idG4gYmxvY2sgY2xhc3M9XCJjYWxjLWJ0biBudW1iZXItYnRuXCIgQGNsaWNrPVwiYXBwZW5kRGVjaW1hbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgLlxuICAgICAgICAgICAgICAgICAgICA8L3YtYnRuPlxuICAgICAgICAgICAgICAgIDwvdi1jb2w+XG4gICAgICAgICAgICAgICAgPHYtY29sIGNvbHM9XCIzXCI+XG4gICAgICAgICAgICAgICAgICAgIDx2LWJ0biBibG9jayBjbGFzcz1cImNhbGMtYnRuIGVxdWFscy1idG5cIiBAY2xpY2s9XCJjYWxjdWxhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgID1cbiAgICAgICAgICAgICAgICAgICAgPC92LWJ0bj5cbiAgICAgICAgICAgICAgICA8L3YtY29sPlxuICAgICAgICAgICAgPC92LXJvdz5cbiAgICAgICAgPC92LWNhcmQtdGV4dD5cbiAgICA8L3YtY2FyZD5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG5leHBvcnQgZGVmYXVsdCB7XG4gICAgbmFtZTogXCJGaW5hbmNpYWxDYWxjdWxhdG9yXCIsXG4gICAgZGF0YSgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGV4cHJlc3Npb246IFwiXCIsXG4gICAgICAgICAgICBjdXJyZW50TnVtYmVyOiBcIjBcIixcbiAgICAgICAgICAgIHByZXZpb3VzTnVtYmVyOiBudWxsLFxuICAgICAgICAgICAgb3BlcmF0b3I6IG51bGwsXG4gICAgICAgICAgICBzaG91bGRSZXNldERpc3BsYXk6IGZhbHNlLFxuICAgICAgICAgICAgaXNBY3RpdmF0ZWQ6IGZhbHNlLFxuICAgICAgICB9O1xuICAgIH0sXG4gICAgY29tcHV0ZWQ6IHtcbiAgICAgICAgZGlzcGxheVZhbHVlKCkge1xuICAgICAgICAgICAgLy8gRm9ybWF0IG51bWJlciB3aXRoIHRob3VzYW5kIHNlcGFyYXRvcnMgZm9yIGZpbmFuY2lhbCBkaXNwbGF5XG4gICAgICAgICAgICBjb25zdCBudW0gPSBwYXJzZUZsb2F0KHRoaXMuY3VycmVudE51bWJlcik7XG4gICAgICAgICAgICBpZiAoaXNOYU4obnVtKSkgcmV0dXJuIFwiMFwiO1xuXG4gICAgICAgICAgICAvLyBGb3JtYXQgd2l0aCAyIGRlY2ltYWwgcGxhY2VzIGlmIGl0J3MgYSBkZWNpbWFsIG51bWJlclxuICAgICAgICAgICAgaWYgKHRoaXMuY3VycmVudE51bWJlci5pbmNsdWRlcygnLicpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudE51bWJlcjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIG51bS50b0xvY2FsZVN0cmluZygnZnItRlInLCB7XG4gICAgICAgICAgICAgICAgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAwLFxuICAgICAgICAgICAgICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0czogMlxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9LFxuICAgIG1ldGhvZHM6IHtcbiAgICAgICAgYXBwZW5kTnVtYmVyKG51bSkge1xuICAgICAgICAgICAgdGhpcy5pc0FjdGl2YXRlZCA9IHRydWU7XG4gICAgICAgICAgICBpZiAodGhpcy5zaG91bGRSZXNldERpc3BsYXkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnROdW1iZXIgPSBTdHJpbmcobnVtKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNob3VsZFJlc2V0RGlzcGxheSA9IGZhbHNlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jdXJyZW50TnVtYmVyID09PSBcIjBcIikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnROdW1iZXIgPSBTdHJpbmcobnVtKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnROdW1iZXIgKz0gU3RyaW5nKG51bSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuXG4gICAgICAgIGFwcGVuZERlY2ltYWwoKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5zaG91bGRSZXNldERpc3BsYXkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnROdW1iZXIgPSBcIjAuXCI7XG4gICAgICAgICAgICAgICAgdGhpcy5zaG91bGRSZXNldERpc3BsYXkgPSBmYWxzZTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIXRoaXMuY3VycmVudE51bWJlci5pbmNsdWRlcyhcIi5cIikpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnROdW1iZXIgKz0gXCIuXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG5cbiAgICAgICAgZGVsZXRlTGFzdERpZ2l0KCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuY3VycmVudE51bWJlci5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50TnVtYmVyID0gdGhpcy5jdXJyZW50TnVtYmVyLnNsaWNlKDAsIC0xKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50TnVtYmVyID0gXCIwXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG5cbiAgICAgICAgY2xlYXIoKSB7XG4gICAgICAgICAgICB0aGlzLmV4cHJlc3Npb24gPSBcIlwiO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50TnVtYmVyID0gXCIwXCI7XG4gICAgICAgICAgICB0aGlzLnByZXZpb3VzTnVtYmVyID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMub3BlcmF0b3IgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5zaG91bGRSZXNldERpc3BsYXkgPSBmYWxzZTtcbiAgICAgICAgfSxcblxuICAgICAgICB0b2dnbGVTaWduKCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuY3VycmVudE51bWJlciAhPT0gXCIwXCIpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jdXJyZW50TnVtYmVyLnN0YXJ0c1dpdGgoXCItXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudE51bWJlciA9IHRoaXMuY3VycmVudE51bWJlci5zdWJzdHJpbmcoMSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50TnVtYmVyID0gXCItXCIgKyB0aGlzLmN1cnJlbnROdW1iZXI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuXG4gICAgICAgIHBlcmNlbnRhZ2UoKSB7XG4gICAgICAgICAgICBjb25zdCBudW0gPSBwYXJzZUZsb2F0KHRoaXMuY3VycmVudE51bWJlcik7XG4gICAgICAgICAgICBpZiAoIWlzTmFOKG51bSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnROdW1iZXIgPSBTdHJpbmcobnVtIC8gMTAwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcblxuICAgICAgICBzZXRPcGVyYXRvcihvcCkge1xuICAgICAgICAgICAgaWYgKHRoaXMub3BlcmF0b3IgJiYgIXRoaXMuc2hvdWxkUmVzZXREaXNwbGF5KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jYWxjdWxhdGUoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5wcmV2aW91c051bWJlciA9IHRoaXMuY3VycmVudE51bWJlcjtcbiAgICAgICAgICAgIHRoaXMub3BlcmF0b3IgPSBvcDtcblxuICAgICAgICAgICAgLy8gQnVpbGQgZXhwcmVzc2lvbiBzdHJpbmdcbiAgICAgICAgICAgIGNvbnN0IGRpc3BsYXlPcCA9IG9wID09PSAnKicgPyAnw5cnIDogb3AgPT09ICcvJyA/ICfDtycgOiBvcCA9PT0gJy0nID8gJ+KIkicgOiBvcDtcbiAgICAgICAgICAgIHRoaXMuZXhwcmVzc2lvbiA9IGAke3RoaXMuZm9ybWF0TnVtYmVyKHRoaXMuY3VycmVudE51bWJlcil9ICR7ZGlzcGxheU9wfWA7XG5cbiAgICAgICAgICAgIHRoaXMuc2hvdWxkUmVzZXREaXNwbGF5ID0gdHJ1ZTtcbiAgICAgICAgfSxcblxuICAgICAgICBjYWxjdWxhdGUoKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMub3BlcmF0b3IgfHwgdGhpcy5wcmV2aW91c051bWJlciA9PT0gbnVsbCkgcmV0dXJuO1xuXG4gICAgICAgICAgICBjb25zdCBwcmV2ID0gcGFyc2VGbG9hdCh0aGlzLnByZXZpb3VzTnVtYmVyKTtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnQgPSBwYXJzZUZsb2F0KHRoaXMuY3VycmVudE51bWJlcik7XG4gICAgICAgICAgICBsZXQgcmVzdWx0O1xuXG4gICAgICAgICAgICBzd2l0Y2ggKHRoaXMub3BlcmF0b3IpIHtcbiAgICAgICAgICAgICAgICBjYXNlIFwiK1wiOlxuICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBwcmV2ICsgY3VycmVudDtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBcIi1cIjpcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gcHJldiAtIGN1cnJlbnQ7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgXCIqXCI6XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHByZXYgKiBjdXJyZW50O1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIFwiL1wiOlxuICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5leHByZXNzaW9uID0gXCLYrti32KM6INin2YTZgtiz2YXYqSDYudmE2Ykg2LXZgdixXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnROdW1iZXIgPSBcIjBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub3BlcmF0b3IgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcmV2aW91c051bWJlciA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gcHJldiAvIGN1cnJlbnQ7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gVXBkYXRlIGV4cHJlc3Npb24gdG8gc2hvdyBmdWxsIGNhbGN1bGF0aW9uXG4gICAgICAgICAgICBjb25zdCBkaXNwbGF5T3AgPSB0aGlzLm9wZXJhdG9yID09PSAnKicgPyAnw5cnIDogdGhpcy5vcGVyYXRvciA9PT0gJy8nID8gJ8O3JyA6IHRoaXMub3BlcmF0b3IgPT09ICctJyA/ICfiiJInIDogdGhpcy5vcGVyYXRvcjtcbiAgICAgICAgICAgIHRoaXMuZXhwcmVzc2lvbiA9IGAke3RoaXMuZm9ybWF0TnVtYmVyKHRoaXMucHJldmlvdXNOdW1iZXIpfSAke2Rpc3BsYXlPcH0gJHt0aGlzLmZvcm1hdE51bWJlcih0aGlzLmN1cnJlbnROdW1iZXIpfSA9YDtcblxuICAgICAgICAgICAgLy8gUm91bmQgdG8gMiBkZWNpbWFsIHBsYWNlcyBmb3IgZmluYW5jaWFsIGNhbGN1bGF0aW9uc1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50TnVtYmVyID0gU3RyaW5nKE1hdGgucm91bmQocmVzdWx0ICogMTAwKSAvIDEwMCk7XG4gICAgICAgICAgICB0aGlzLm9wZXJhdG9yID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMucHJldmlvdXNOdW1iZXIgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5zaG91bGRSZXNldERpc3BsYXkgPSB0cnVlO1xuICAgICAgICB9LFxuXG4gICAgICAgIGZvcm1hdE51bWJlcihudW0pIHtcbiAgICAgICAgICAgIGNvbnN0IG4gPSBwYXJzZUZsb2F0KG51bSk7XG4gICAgICAgICAgICBpZiAoaXNOYU4obikpIHJldHVybiBcIjBcIjtcbiAgICAgICAgICAgIHJldHVybiBuLnRvTG9jYWxlU3RyaW5nKCdmci1GUicsIHtcbiAgICAgICAgICAgICAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDAsXG4gICAgICAgICAgICAgICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAyXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcblxuICAgICAgICBhY3RpdmF0ZUtleWJvYXJkKCkge1xuICAgICAgICAgICAgdGhpcy5pc0FjdGl2YXRlZCA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLiRlbC5mb2N1cygpO1xuICAgICAgICB9LFxuXG4gICAgICAgIGhhbmRsZUtleWJvYXJkKGV2ZW50KSB7XG4gICAgICAgICAgICAvLyBQcmV2ZW50IGRlZmF1bHQgYmVoYXZpb3IgZm9yIGNhbGN1bGF0b3Iga2V5c1xuICAgICAgICAgICAgY29uc3Qga2V5ID0gZXZlbnQua2V5O1xuXG4gICAgICAgICAgICAvLyBOdW1iZXJzIDAtOVxuICAgICAgICAgICAgaWYgKGtleSA+PSAnMCcgJiYga2V5IDw9ICc5Jykge1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5hcHBlbmROdW1iZXIocGFyc2VJbnQoa2V5KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBEZWNpbWFsIHBvaW50XG4gICAgICAgICAgICBlbHNlIGlmIChrZXkgPT09ICcuJyB8fCBrZXkgPT09ICcsJykge1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5hcHBlbmREZWNpbWFsKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBPcGVyYXRvcnNcbiAgICAgICAgICAgIGVsc2UgaWYgKGtleSA9PT0gJysnKSB7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNldE9wZXJhdG9yKCcrJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChrZXkgPT09ICctJykge1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRPcGVyYXRvcignLScpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoa2V5ID09PSAnKicgfHwga2V5ID09PSAneCcgfHwga2V5ID09PSAnWCcpIHtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0T3BlcmF0b3IoJyonKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGtleSA9PT0gJy8nKSB7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNldE9wZXJhdG9yKCcvJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBFcXVhbHNcbiAgICAgICAgICAgIGVsc2UgaWYgKGtleSA9PT0gJz0nIHx8IGtleSA9PT0gJ0VudGVyJykge1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5jYWxjdWxhdGUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIENsZWFyXG4gICAgICAgICAgICBlbHNlIGlmIChrZXkgPT09ICdFc2NhcGUnIHx8IGtleSA9PT0gJ2MnIHx8IGtleSA9PT0gJ0MnKSB7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmNsZWFyKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBCYWNrc3BhY2UvRGVsZXRlXG4gICAgICAgICAgICBlbHNlIGlmIChrZXkgPT09ICdCYWNrc3BhY2UnIHx8IGtleSA9PT0gJ0RlbGV0ZScpIHtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuZGVsZXRlTGFzdERpZ2l0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBQZXJjZW50YWdlXG4gICAgICAgICAgICBlbHNlIGlmIChrZXkgPT09ICclJykge1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5wZXJjZW50YWdlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LFxuICAgIG1vdW50ZWQoKSB7XG4gICAgICAgIC8vIEF1dG8tZm9jdXMgdGhlIGNhbGN1bGF0b3Igd2hlbiBtb3VudGVkXG4gICAgICAgIHRoaXMuJGVsLmZvY3VzKCk7XG4gICAgfVxufTtcbjwvc2NyaXB0PlxuXG48c3R5bGUgc2NvcGVkPlxuLmZpbmFuY2lhbC1jYWxjdWxhdG9yIHtcbiAgICBtYXgtd2lkdGg6IDM4MHB4O1xuICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIGJvcmRlci1yYWRpdXM6IDE2cHg7XG59XG5cbi5leHByZXNzaW9uLWRpc3BsYXkge1xuICAgIG1pbi1oZWlnaHQ6IDMycHg7XG4gICAgZm9udC1zaXplOiAxcmVtO1xuICAgIGNvbG9yOiB2YXIoLS12LXRleHQtYmFzZSk7XG4gICAgb3BhY2l0eTogMC43O1xuICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgIGZvbnQtZmFtaWx5OiAnUm9ib3RvIE1vbm8nLCBtb25vc3BhY2U7XG4gICAgd29yZC1icmVhazogYnJlYWstYWxsO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjQ7XG59XG5cbi5tYWluLWRpc3BsYXkge1xuICAgIGZvbnQtc2l6ZTogMi41cmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgY29sb3I6IHZhcigtLXYtcHJpbWFyeS1iYXNlKTtcbiAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICBmb250LWZhbWlseTogJ1JvYm90byBNb25vJywgbW9ub3NwYWNlO1xuICAgIG1pbi1oZWlnaHQ6IDYwcHg7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gICAgd29yZC1icmVhazogYnJlYWstYWxsO1xufVxuXG4uY2FsYy1idG4ge1xuICAgIGhlaWdodDogNjJweCAhaW1wb3J0YW50O1xuICAgIGZvbnQtc2l6ZTogMS41cmVtICFpbXBvcnRhbnQ7XG4gICAgZm9udC13ZWlnaHQ6IDYwMCAhaW1wb3J0YW50O1xuICAgIGJvcmRlci1yYWRpdXM6IDEycHggIWltcG9ydGFudDtcbiAgICB0cmFuc2l0aW9uOiBib3gtc2hhZG93IDAuMnMgZWFzZSAhaW1wb3J0YW50O1xuICAgIHRleHQtdHJhbnNmb3JtOiBub25lICFpbXBvcnRhbnQ7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAgIWltcG9ydGFudDtcbn1cblxuLyogTnVtYmVyIGJ1dHRvbnMgLSBMaWdodCBtb2RlICovXG4ubnVtYmVyLWJ0biB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjVmNTdmICFpbXBvcnRhbnQ7XG4gICAgY29sb3I6ICM0MjQyNDIgIWltcG9ydGFudDtcbiAgICBib3gtc2hhZG93OiAwIDJweCA4cHggcmdiYSgwLCAwLCAwLCAwLjEpICFpbXBvcnRhbnQ7XG59XG5cbi5udW1iZXItYnRuOmhvdmVyIHtcbiAgICBib3gtc2hhZG93OiAwIDRweCAxNnB4IHJnYmEoMCwgMCwgMCwgMC4yKSAhaW1wb3J0YW50O1xufVxuXG4vKiBEYXJrIG1vZGUgc3VwcG9ydCBmb3IgbnVtYmVyIGJ1dHRvbnMgKi9cbi50aGVtZS0tZGFyayAubnVtYmVyLWJ0biB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzQyNDI0MiAhaW1wb3J0YW50O1xuICAgIGNvbG9yOiAjZmZmZmZmYWMgIWltcG9ydGFudDtcbn1cblxuLyogT3BlcmF0b3IgYnV0dG9ucyAqL1xuLm9wZXJhdG9yLWJ0biB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdi1lcnJvci1iYXNlKSAhaW1wb3J0YW50O1xuICAgIGNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50O1xuICAgIGJveC1zaGFkb3c6IDAgMnB4IDhweCByZ2JhKDAsIDAsIDAsIDAuMTUpICFpbXBvcnRhbnQ7XG59XG5cbi5vcGVyYXRvci1idG46aG92ZXIge1xuICAgIGJveC1zaGFkb3c6IDAgNHB4IDE2cHggcmdiYSgwLCAwLCAwLCAwLjI1KSAhaW1wb3J0YW50O1xufVxuXG4vKiBGdW5jdGlvbiBidXR0b25zICovXG4uZnVuY3Rpb24tYnRuIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS12LWluZm8tYmFzZSkgIWltcG9ydGFudDtcbiAgICBjb2xvcjogd2hpdGUgIWltcG9ydGFudDtcbiAgICBib3gtc2hhZG93OiAwIDJweCA4cHggcmdiYSgwLCAwLCAwLCAwLjE1KSAhaW1wb3J0YW50O1xufVxuXG4uZnVuY3Rpb24tYnRuOmhvdmVyIHtcbiAgICBib3gtc2hhZG93OiAwIDRweCAxNnB4IHJnYmEoMCwgMCwgMCwgMC4yNSkgIWltcG9ydGFudDtcbn1cblxuLyogQ2xlYXIgYnV0dG9uICovXG4uY2xlYXItYnRuIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS12LXdhcm5pbmctYmFzZSkgIWltcG9ydGFudDtcbiAgICBjb2xvcjogd2hpdGUgIWltcG9ydGFudDtcbiAgICBib3gtc2hhZG93OiAwIDJweCA4cHggcmdiYSgwLCAwLCAwLCAwLjE1KSAhaW1wb3J0YW50O1xufVxuXG4uY2xlYXItYnRuOmhvdmVyIHtcbiAgICBib3gtc2hhZG93OiAwIDRweCAxNnB4IHJnYmEoMCwgMCwgMCwgMC4yNSkgIWltcG9ydGFudDtcbn1cblxuLyogRXF1YWxzIGJ1dHRvbiAqL1xuLmVxdWFscy1idG4ge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXYtc3VjY2Vzcy1iYXNlKSAhaW1wb3J0YW50O1xuICAgIGNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50O1xuICAgIGZvbnQtc2l6ZTogMS44cmVtICFpbXBvcnRhbnQ7XG4gICAgYm94LXNoYWRvdzogMCAycHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xNSkgIWltcG9ydGFudDtcbn1cblxuLmVxdWFscy1idG46aG92ZXIge1xuICAgIGJveC1zaGFkb3c6IDAgNHB4IDE2cHggcmdiYSgwLCAwLCAwLCAwLjI1KSAhaW1wb3J0YW50O1xufVxuXG4vKiBEYXJrIG1vZGUgYWRqdXN0bWVudHMgKi9cbi50aGVtZS0tZGFyayAuZmluYW5jaWFsLWNhbGN1bGF0b3Ige1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXYtYmFja2dyb3VuZC1kYXJrZW4xKTtcbn1cblxuLnRoZW1lLS1kYXJrIC5leHByZXNzaW9uLWRpc3BsYXkge1xuICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyk7XG59XG5cbi50aGVtZS0tZGFyayAubWFpbi1kaXNwbGF5IHtcbiAgICBjb2xvcjogdmFyKC0tdi1wcmltYXJ5LWxpZ2h0ZW4yKTtcbn1cblxuLyogPT09PT09PT09PSBCVVRUT04gQkFTRSBTVFlMRSA9PT09PT09PT09ICovXG4uY2FsYy1idG4ge1xuICAgIGhlaWdodDogNjJweCAhaW1wb3J0YW50O1xuICAgIGZvbnQtc2l6ZTogMS41cmVtICFpbXBvcnRhbnQ7XG4gICAgZm9udC13ZWlnaHQ6IDYwMCAhaW1wb3J0YW50O1xuICAgIGJvcmRlci1yYWRpdXM6IDEycHggIWltcG9ydGFudDtcbiAgICB0cmFuc2l0aW9uOiBib3gtc2hhZG93IDAuMnMgZWFzZSAhaW1wb3J0YW50O1xuICAgIHRleHQtdHJhbnNmb3JtOiBub25lICFpbXBvcnRhbnQ7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAgIWltcG9ydGFudDtcbn1cblxuLyogPT09PT09PT09PSBOVU1CRVIgQlVUVE9OUyA9PT09PT09PT09ICovXG4vKiBMaWdodCBtb2RlICovXG4ubnVtYmVyLWJ0biB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdi1wcmltYXJ5LWxpZ2h0ZW41KSAhaW1wb3J0YW50O1xuICAgIGNvbG9yOiB2YXIoLS12LXByaW1hcnktZGFya2VuMykgIWltcG9ydGFudDtcbiAgICBib3gtc2hhZG93OiAwIDJweCA2cHggcmdiYSgwLCAwLCAwLCAwLjA4KSAhaW1wb3J0YW50O1xufVxuXG4ubnVtYmVyLWJ0bjpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdi1wcmltYXJ5LWxpZ2h0ZW40KSAhaW1wb3J0YW50O1xuICAgIGJveC1zaGFkb3c6IDAgM3B4IDEycHggcmdiYSgwLCAwLCAwLCAwLjE1KSAhaW1wb3J0YW50O1xufVxuXG4vKiBEYXJrIG1vZGUgKi9cbi50aGVtZS0tZGFyayAubnVtYmVyLWJ0biB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdi1wcmltYXJ5LWRhcmtlbjQpICFpbXBvcnRhbnQ7XG4gICAgY29sb3I6IHZhcigtLXYtcHJpbWFyeS1saWdodGVuNCkgIWltcG9ydGFudDtcbn1cblxuLyogPT09PT09PT09PSBPUEVSQVRPUiBCVVRUT05TID09PT09PT09PT0gKi9cbi5vcGVyYXRvci1idG4ge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXYtZXJyb3ItYmFzZSkgIWltcG9ydGFudDtcbiAgICBjb2xvcjogd2hpdGUgIWltcG9ydGFudDtcbn1cblxuLm9wZXJhdG9yLWJ0bjpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdi1lcnJvci1kYXJrZW4xKSAhaW1wb3J0YW50O1xufVxuXG4vKiA9PT09PT09PT09IEZVTkNUSU9OIEJVVFRPTlMgKCUsIERlbGV0ZSwgKy8tKSA9PT09PT09PT09ICovXG4uZnVuY3Rpb24tYnRuIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS12LWluZm8tYmFzZSkgIWltcG9ydGFudDtcbiAgICBjb2xvcjogd2hpdGUgIWltcG9ydGFudDtcbn1cblxuLmZ1bmN0aW9uLWJ0bjpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdi1pbmZvLWRhcmtlbjEpICFpbXBvcnRhbnQ7XG59XG5cbi8qID09PT09PT09PT0gQ0xFQVIgQlVUVE9OID09PT09PT09PT0gKi9cbi5jbGVhci1idG4ge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXYtd2FybmluZy1iYXNlKSAhaW1wb3J0YW50O1xuICAgIGNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50O1xufVxuXG4uY2xlYXItYnRuOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS12LXdhcm5pbmctZGFya2VuMSkgIWltcG9ydGFudDtcbn1cblxuLyogPT09PT09PT09PSBFUVVBTCBCVVRUT04gPT09PT09PT09PSAqL1xuLmVxdWFscy1idG4ge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXYtc3VjY2Vzcy1iYXNlKSAhaW1wb3J0YW50O1xuICAgIGNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50O1xuICAgIGZvbnQtc2l6ZTogMS44cmVtICFpbXBvcnRhbnQ7XG59XG5cbi5lcXVhbHMtYnRuOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS12LXN1Y2Nlc3MtZGFya2VuMSkgIWltcG9ydGFudDtcbn1cblxuLyogPT09PT09PT09PSBESVNQTEFZIENPTE9SUyA9PT09PT09PT09ICovXG4uZXhwcmVzc2lvbi1kaXNwbGF5IHtcbiAgICBjb2xvcjogdmFyKC0tdi1wcmltYXJ5LWRhcmtlbjMpICFpbXBvcnRhbnQ7XG4gICAgb3BhY2l0eTogMC43O1xufVxuXG4ubWFpbi1kaXNwbGF5IHtcbiAgICBjb2xvcjogdmFyKC0tdi1wcmltYXJ5LWJhc2UpICFpbXBvcnRhbnQ7XG59XG5cbi8qIERhcmsgbW9kZSBhZGp1c3RtZW50cyAqL1xuLnRoZW1lLS1kYXJrIC5leHByZXNzaW9uLWRpc3BsYXkge1xuICAgIGNvbG9yOiB2YXIoLS12LXByaW1hcnktbGlnaHRlbjMpICFpbXBvcnRhbnQ7XG4gICAgb3BhY2l0eTogMC43O1xufVxuXG4udGhlbWUtLWRhcmsgLm1haW4tZGlzcGxheSB7XG4gICAgY29sb3I6IHZhcigtLXYtcHJpbWFyeS1saWdodGVuMSkgIWltcG9ydGFudDtcbn1cblxuLyogV2VsY29tZSBjYXJkIHN0eWxpbmcgKi9cbi53ZWxjb21lLWNhcmQge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlO1xuICAgIGJvcmRlcjogMnB4IGRhc2hlZCB2YXIoLS12LXByaW1hcnktYmFzZSkgIWltcG9ydGFudDtcbn1cblxuLndlbGNvbWUtY2FyZDpob3ZlciB7XG4gICAgYm9yZGVyLXN0eWxlOiBzb2xpZCAhaW1wb3J0YW50O1xuICAgIGJveC1zaGFkb3c6IDAgNHB4IDIwcHggcmdiYSgwLCAwLCAwLCAwLjE1KSAhaW1wb3J0YW50O1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTtcbn1cblxuLnRoZW1lLS1kYXJrIC53ZWxjb21lLWNhcmQge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdi1wcmltYXJ5LWxpZ2h0ZW4xKSAhaW1wb3J0YW50O1xufVxuPC9zdHlsZT5cbiIsIlxuLy8gQXBwIEJhciB0cmFuc2l0aW9uXG4udi1hcHAtYmFyIHtcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjRzIGVhc2Utb3V0LCBib3gtc2hhZG93IDAuNHMgZWFzZS1vdXQgIWltcG9ydGFudDtcbn1cblxuLy8gQ2xhc3NlIHBvdXIgbCdlZmZldCBHbGFzc21vcnBoaXNtIGV0IGwnb21icmUgbG9ycyBkdSBkw6lmaWxlbWVudFxuLmFwcC1iYXItc2Nyb2xsZWQge1xuICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMTBweCk7XG4gIC13ZWJraXQtYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEwcHgpO1xuICBib3gtc2hhZG93OiAwIDRweCAxMnB4IHJnYmEoMCwgMCwgMCwgMC4wOCkgIWltcG9ydGFudDtcbn1cblxuLy8gQW3DqWxpb3JlciBsJ2FwcGFyZW5jZSBkZXMgYm91dG9ucyBpY8O0bmVzXG4udi1idG4tLWljb24ge1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4ycyBlYXNlLWluLW91dDtcblxuICAmOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMDgpO1xuICB9XG59XG5cbi8vIEFtw6lsaW9yZXIgbGEgdGFpbGxlIGV0IGwnZXNwYWNlbWVudFxuLnYtdG9vbGJhcl9faXRlbXMgLnYtYnRuIHtcbiAgbWFyZ2luOiAwIDRweDtcbn1cblxuLnYtYXZhdGFyIHtcbiAgYm9yZGVyOiAycHggc29saWQgdmFyKC0tdi1wcmltYXJ5LWJhc2UpO1xufVxuIiwiPHRlbXBsYXRlPlxuICA8di1yb3cgY2xhc3M9XCJmaWxsLWhlaWdodFwiPlxuICAgIDx2LWNvbD5cbiAgICAgIDwhLS0gSGVhZGVyIHdpdGggQ29udHJvbHMgLS0+XG4gICAgICA8di1zaGVldCBoZWlnaHQ9XCI2NFwiPlxuICAgICAgICA8di10b29sYmFyIGZsYXQ+XG4gICAgICAgICAgPHYtYnRuIG91dGxpbmVkIGNsYXNzPVwibXItNFwiIGNvbG9yPVwiZ3JleSBkYXJrZW4tMlwiIEBjbGljaz1cInNldFRvZGF5XCI+XG4gICAgICAgICAgICBBdWpvdXJkJ2h1aVxuICAgICAgICAgIDwvdi1idG4+XG4gICAgICAgICAgPHYtYnRuIGZhYiB0ZXh0IHNtYWxsIGNvbG9yPVwiZ3JleSBkYXJrZW4tMlwiIEBjbGljaz1cInByZXZcIj5cbiAgICAgICAgICAgIDx2LWljb24gc21hbGw+bWRpLWNoZXZyb24tbGVmdDwvdi1pY29uPlxuICAgICAgICAgIDwvdi1idG4+XG4gICAgICAgICAgPHYtYnRuIGZhYiB0ZXh0IHNtYWxsIGNvbG9yPVwiZ3JleSBkYXJrZW4tMlwiIEBjbGljaz1cIm5leHRcIj5cbiAgICAgICAgICAgIDx2LWljb24gc21hbGw+bWRpLWNoZXZyb24tcmlnaHQ8L3YtaWNvbj5cbiAgICAgICAgICA8L3YtYnRuPlxuICAgICAgICAgIDx2LXRvb2xiYXItdGl0bGUgdi1pZj1cIiRyZWZzLmNhbGVuZGFyXCI+XG4gICAgICAgICAgICB7eyAkcmVmcy5jYWxlbmRhci50aXRsZSB9fVxuICAgICAgICAgIDwvdi10b29sYmFyLXRpdGxlPlxuICAgICAgICAgIDx2LXNwYWNlcj48L3Ytc3BhY2VyPlxuICAgICAgICAgIDx2LW1lbnUgYm90dG9tIHJpZ2h0PlxuICAgICAgICAgICAgPHRlbXBsYXRlIHYtc2xvdDphY3RpdmF0b3I9XCJ7IG9uLCBhdHRycyB9XCI+XG4gICAgICAgICAgICAgIDx2LWJ0biBvdXRsaW5lZCBjb2xvcj1cImdyZXkgZGFya2VuLTJcIiB2LWJpbmQ9XCJhdHRyc1wiIHYtb249XCJvblwiPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7IHR5cGVUb0xhYmVsW3R5cGVdIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDx2LWljb24gcmlnaHQ+bWRpLW1lbnUtZG93bjwvdi1pY29uPlxuICAgICAgICAgICAgICA8L3YtYnRuPlxuICAgICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgICAgIDx2LWxpc3Q+XG4gICAgICAgICAgICAgIDx2LWxpc3QtaXRlbSBAY2xpY2s9XCJ0eXBlID0gJ2RheSdcIj5cbiAgICAgICAgICAgICAgICA8di1saXN0LWl0ZW0tdGl0bGU+Sm91cjwvdi1saXN0LWl0ZW0tdGl0bGU+XG4gICAgICAgICAgICAgIDwvdi1saXN0LWl0ZW0+XG4gICAgICAgICAgICAgIDx2LWxpc3QtaXRlbSBAY2xpY2s9XCJ0eXBlID0gJ3dlZWsnXCI+XG4gICAgICAgICAgICAgICAgPHYtbGlzdC1pdGVtLXRpdGxlPlNlbWFpbmU8L3YtbGlzdC1pdGVtLXRpdGxlPlxuICAgICAgICAgICAgICA8L3YtbGlzdC1pdGVtPlxuICAgICAgICAgICAgICA8di1saXN0LWl0ZW0gQGNsaWNrPVwidHlwZSA9ICdtb250aCdcIj5cbiAgICAgICAgICAgICAgICA8di1saXN0LWl0ZW0tdGl0bGU+TW9pczwvdi1saXN0LWl0ZW0tdGl0bGU+XG4gICAgICAgICAgICAgIDwvdi1saXN0LWl0ZW0+XG4gICAgICAgICAgICA8L3YtbGlzdD5cbiAgICAgICAgICA8L3YtbWVudT5cbiAgICAgICAgPC92LXRvb2xiYXI+XG4gICAgICA8L3Ytc2hlZXQ+XG5cbiAgICAgIDwhLS0gQ2FsZW5kYXIgLS0+XG4gICAgICA8di1zaGVldCBoZWlnaHQ9XCI2MDBcIj5cbiAgICAgICAgPHYtY2FsZW5kYXIgcmVmPVwiY2FsZW5kYXJcIiB2LW1vZGVsPVwiZm9jdXNcIiBjb2xvcj1cInByaW1hcnlcIiA6ZXZlbnRzPVwiY2FsZW5kYXJFdmVudHNcIiA6ZXZlbnQtY29sb3I9XCJnZXRFdmVudENvbG9yXCJcbiAgICAgICAgICA6dHlwZT1cInR5cGVcIiBAY2xpY2s6ZGF0ZT1cImFkZE5vdGVcIiBAY2xpY2s6ZXZlbnQ9XCJvcGVuTm90ZU1lbnVcIj48L3YtY2FsZW5kYXI+XG4gICAgICA8L3Ytc2hlZXQ+XG5cbiAgICAgIDwhLS0gRGlhbG9nIGZvciBBZGRpbmcgYSBOb3RlIC0tPlxuICAgICAgPHYtZGlhbG9nIHYtbW9kZWw9XCJub3RlRGlhbG9nXCIgbWF4LXdpZHRoPVwiNjAwXCI+XG4gICAgICAgIDx2LWNhcmQ+XG4gICAgICAgICAgPHYtY2FyZC10aXRsZT5cbiAgICAgICAgICAgIDx2LWljb24gbGVmdCBjb2xvcj1cInByaW1hcnlcIj5tZGktbm90ZS1lZGl0PC92LWljb24+XG4gICAgICAgICAgICBBam91dGVyIHVuZSBub3RlXG4gICAgICAgICAgPC92LWNhcmQtdGl0bGU+XG4gICAgICAgICAgPHYtY2FyZC10ZXh0PlxuICAgICAgICAgICAgPHYtY29udGFpbmVyPlxuICAgICAgICAgICAgICA8di1yb3c+XG4gICAgICAgICAgICAgICAgPHYtY29sIGNvbHM9XCIxMlwiPlxuICAgICAgICAgICAgICAgICAgPHYtdGV4dGFyZWEgdi1tb2RlbD1cIm5ld05vdGUudGV4dFwiIGxhYmVsPVwiTm90ZVwiIG91dGxpbmVkIHJvd3M9XCIzXCI+PC92LXRleHRhcmVhPlxuICAgICAgICAgICAgICAgIDwvdi1jb2w+XG4gICAgICAgICAgICAgICAgPHYtY29sIGNvbHM9XCIxMlwiIHNtPVwiNlwiPlxuICAgICAgICAgICAgICAgICAgPHYtbWVudSByZWY9XCJzdGFydERhdGVNZW51XCIgdi1tb2RlbD1cInN0YXJ0RGF0ZU1lbnVcIiA6Y2xvc2Utb24tY29udGVudC1jbGljaz1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbj1cInNjYWxlLXRyYW5zaXRpb25cIiBvZmZzZXQteT5cbiAgICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlIHYtc2xvdDphY3RpdmF0b3I9XCJ7IG9uLCBhdHRycyB9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHYtdGV4dC1maWVsZCB2LW1vZGVsPVwibmV3Tm90ZS5zdGFydFwiIGxhYmVsPVwiRGF0ZSBkZSBkw6lidXRcIiByZWFkb25seSB2LWJpbmQ9XCJhdHRyc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICB2LW9uPVwib25cIj48L3YtdGV4dC1maWVsZD5cbiAgICAgICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgPHYtZGF0ZS1waWNrZXIgdi1tb2RlbD1cIm5ld05vdGUuc3RhcnRcIiBAY2hhbmdlPVwic3RhcnREYXRlTWVudSA9IGZhbHNlXCI+PC92LWRhdGUtcGlja2VyPlxuICAgICAgICAgICAgICAgICAgPC92LW1lbnU+XG4gICAgICAgICAgICAgICAgPC92LWNvbD5cbiAgICAgICAgICAgICAgICA8di1jb2wgY29scz1cIjEyXCIgc209XCI2XCI+XG4gICAgICAgICAgICAgICAgICA8di1tZW51IHJlZj1cImVuZERhdGVNZW51XCIgdi1tb2RlbD1cImVuZERhdGVNZW51XCIgOmNsb3NlLW9uLWNvbnRlbnQtY2xpY2s9XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb249XCJzY2FsZS10cmFuc2l0aW9uXCIgb2Zmc2V0LXk+XG4gICAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6YWN0aXZhdG9yPVwieyBvbiwgYXR0cnMgfVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDx2LXRleHQtZmllbGQgdi1tb2RlbD1cIm5ld05vdGUuZW5kXCIgbGFiZWw9XCJEYXRlIGRlIGZpblwiIHJlYWRvbmx5IHYtYmluZD1cImF0dHJzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHYtb249XCJvblwiPjwvdi10ZXh0LWZpZWxkPlxuICAgICAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICA8di1kYXRlLXBpY2tlciB2LW1vZGVsPVwibmV3Tm90ZS5lbmRcIiBAY2hhbmdlPVwiZW5kRGF0ZU1lbnUgPSBmYWxzZVwiPjwvdi1kYXRlLXBpY2tlcj5cbiAgICAgICAgICAgICAgICAgIDwvdi1tZW51PlxuICAgICAgICAgICAgICAgIDwvdi1jb2w+XG4gICAgICAgICAgICAgICAgPCEtLSBTZWxlY3QgY29sb3IgZm9yIHRoZSBub3RlIC0tPlxuICAgICAgICAgICAgICAgIDx2LWNvbCBjb2xzPVwiMTJcIj5cbiAgICAgICAgICAgICAgICAgIDx2LXNlbGVjdCB2LW1vZGVsPVwibmV3Tm90ZS5jb2xvclwiIDppdGVtcz1cImNvbG9yc1wiIGxhYmVsPVwiQ2hvaXNpciB1bmUgY291bGV1clwiIGl0ZW0tdGV4dD1cIm5hbWVcIlxuICAgICAgICAgICAgICAgICAgICBpdGVtLXZhbHVlPVwiY29sb3JcIiBvdXRsaW5lZD48L3Ytc2VsZWN0PlxuICAgICAgICAgICAgICAgIDwvdi1jb2w+XG4gICAgICAgICAgICAgIDwvdi1yb3c+XG4gICAgICAgICAgICA8L3YtY29udGFpbmVyPlxuICAgICAgICAgIDwvdi1jYXJkLXRleHQ+XG4gICAgICAgICAgPHYtY2FyZC1hY3Rpb25zPlxuICAgICAgICAgICAgPHYtYnRuIGNvbG9yPVwic3VjY2Vzc1wiIEBjbGljaz1cInNhdmVOb3RlXCI+RW5yZWdpc3RyZXI8L3YtYnRuPlxuICAgICAgICAgICAgPHYtYnRuIGNvbG9yPVwiZXJyb3JcIiB0ZXh0IEBjbGljaz1cIm5vdGVEaWFsb2cgPSBmYWxzZVwiPkFubnVsZXI8L3YtYnRuPlxuICAgICAgICAgIDwvdi1jYXJkLWFjdGlvbnM+XG4gICAgICAgIDwvdi1jYXJkPlxuICAgICAgPC92LWRpYWxvZz5cblxuICAgICAgPCEtLSBFZGl0IGFuZCBkZWxldGUgYWN0aW9ucyBmb3Igbm90ZXMgLS0+XG4gICAgICA8di1kaWFsb2cgdi1tb2RlbD1cImVkaXREaWFsb2dcIiBtYXgtd2lkdGg9XCI2MDBcIj5cbiAgICAgICAgPHYtY2FyZD5cbiAgICAgICAgICA8di1jYXJkLXRpdGxlPlxuICAgICAgICAgICAgPHYtaWNvbiBsZWZ0IGNvbG9yPVwicHJpbWFyeVwiPm1kaS1wZW5jaWw8L3YtaWNvbj5cbiAgICAgICAgICAgIE1vZGlmaWVyIGxhIG5vdGVcbiAgICAgICAgICA8L3YtY2FyZC10aXRsZT5cbiAgICAgICAgICA8di1jYXJkLXRleHQ+XG4gICAgICAgICAgICA8di1jb250YWluZXI+XG4gICAgICAgICAgICAgIDx2LXJvdz5cbiAgICAgICAgICAgICAgICA8di1jb2wgY29scz1cIjEyXCI+XG4gICAgICAgICAgICAgICAgICA8di10ZXh0YXJlYSB2LW1vZGVsPVwiZWRpdE5vdGUudGV4dFwiIGxhYmVsPVwiTm90ZVwiIG91dGxpbmVkIHJvd3M9XCIzXCI+PC92LXRleHRhcmVhPlxuICAgICAgICAgICAgICAgIDwvdi1jb2w+XG4gICAgICAgICAgICAgICAgPHYtY29sIGNvbHM9XCIxMlwiPlxuICAgICAgICAgICAgICAgICAgPHYtc2VsZWN0IHYtbW9kZWw9XCJlZGl0Tm90ZS5jb2xvclwiIDppdGVtcz1cImNvbG9yc1wiIGxhYmVsPVwiQ2hvaXNpciB1bmUgY291bGV1clwiIGl0ZW0tdGV4dD1cIm5hbWVcIlxuICAgICAgICAgICAgICAgICAgICBpdGVtLXZhbHVlPVwiY29sb3JcIiBvdXRsaW5lZD48L3Ytc2VsZWN0PlxuICAgICAgICAgICAgICAgIDwvdi1jb2w+XG4gICAgICAgICAgICAgIDwvdi1yb3c+XG4gICAgICAgICAgICA8L3YtY29udGFpbmVyPlxuICAgICAgICAgIDwvdi1jYXJkLXRleHQ+XG4gICAgICAgICAgPHYtY2FyZC1hY3Rpb25zPlxuICAgICAgICAgICAgPHYtYnRuIGNvbG9yPVwic3VjY2Vzc1wiIEBjbGljaz1cInVwZGF0ZU5vdGVcIj5NZXR0cmUgw6Agam91cjwvdi1idG4+XG4gICAgICAgICAgICA8di1idG4gY29sb3I9XCJlcnJvclwiIEBjbGljaz1cImRlbGV0ZU5vdGVcIj5TdXBwcmltZXI8L3YtYnRuPlxuICAgICAgICAgICAgPHYtYnRuIGNvbG9yPVwiZ3JleVwiIHRleHQgQGNsaWNrPVwiZWRpdERpYWxvZyA9IGZhbHNlXCI+QW5udWxlcjwvdi1idG4+XG4gICAgICAgICAgPC92LWNhcmQtYWN0aW9ucz5cbiAgICAgICAgPC92LWNhcmQ+XG4gICAgICA8L3YtZGlhbG9nPlxuICAgIDwvdi1jb2w+XG4gIDwvdi1yb3c+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0PlxuZXhwb3J0IGRlZmF1bHQge1xuICBkYXRhOiAoKSA9PiAoe1xuICAgIGZvY3VzOiAnJyxcbiAgICB0eXBlOiAnbW9udGgnLFxuICAgIHR5cGVUb0xhYmVsOiB7XG4gICAgICBtb250aDogJ01vaXMnLFxuICAgICAgd2VlazogJ1NlbWFpbmUnLFxuICAgICAgZGF5OiAnSm91cicsXG4gICAgfSxcbiAgICBub3RlRGlhbG9nOiBmYWxzZSxcbiAgICBlZGl0RGlhbG9nOiBmYWxzZSxcbiAgICBzdGFydERhdGVNZW51OiBmYWxzZSxcbiAgICBlbmREYXRlTWVudTogZmFsc2UsXG4gICAgbmV3Tm90ZToge1xuICAgICAgdGV4dDogJycsXG4gICAgICBzdGFydDogJycsXG4gICAgICBlbmQ6ICcnLFxuICAgICAgY29sb3I6ICcjRkY1NzMzJywgLy8gRGVmYXVsdCBjb2xvclxuICAgIH0sXG4gICAgZWRpdE5vdGU6IHtcbiAgICAgIHRleHQ6ICcnLFxuICAgICAgY29sb3I6ICcjRkY1NzMzJywgLy8gRGVmYXVsdCBjb2xvclxuICAgICAgaWQ6IG51bGwsIC8vIEFkZCBhbiBJRCB0byBpZGVudGlmeSB0aGUgbm90ZVxuICAgIH0sXG4gICAgbm90ZXM6IFtdLCAvLyBBcnJheSBvZiBub3Rlc1xuICAgIGNvbG9yczogW1xuICAgIHsgbmFtZTogJ1JvdWdlJywgY29sb3I6ICcjRkY1NzMzJyB9LFxuICAgICAgeyBuYW1lOiAnVmVydCcsIGNvbG9yOiAnIzMzRkY1NycgfSxcbiAgICAgIHsgbmFtZTogJ0JsZXUnLCBjb2xvcjogJyMzMzU3RkYnIH0sXG4gICAgICB7IG5hbWU6ICdSb3NlJywgY29sb3I6ICcjRkYzM0ExJyB9LFxuICAgICAgeyBuYW1lOiAnQ3lhbicsIGNvbG9yOiAnIzMzRkZGRicgfSxcbiAgICAgIHsgbmFtZTogJ0RvcsOpJywgY29sb3I6ICcjRkZDMzAwJyB9XG4gICAgXSxcbiAgICBjYWxlbmRhckV2ZW50czogW10sXG4gIH0pLFxuICBtb3VudGVkKCkge1xuICAgIHRoaXMubG9hZE5vdGVzKCk7XG4gICAgdGhpcy51cGRhdGVDYWxlbmRhckV2ZW50cygpO1xuICB9LFxuICBtZXRob2RzOiB7XG4gICAgc2V0VG9kYXkoKSB7XG4gICAgICB0aGlzLmZvY3VzID0gJyc7XG4gICAgfSxcbiAgICBwcmV2KCkge1xuICAgICAgdGhpcy4kcmVmcy5jYWxlbmRhci5wcmV2KCk7XG4gICAgfSxcbiAgICBuZXh0KCkge1xuICAgICAgdGhpcy4kcmVmcy5jYWxlbmRhci5uZXh0KCk7XG4gICAgfSxcbiAgICBhZGROb3RlKHsgZGF0ZSB9KSB7XG4gICAgICB0aGlzLm5ld05vdGUuc3RhcnQgPSBkYXRlO1xuICAgICAgdGhpcy5uZXdOb3RlLmVuZCA9IGRhdGU7XG4gICAgICB0aGlzLm5vdGVEaWFsb2cgPSB0cnVlO1xuICAgIH0sXG4gICAgb3Blbk5vdGVNZW51KGV2ZW50KSB7XG5cblxuICAgICAgY29uc3Qgbm90ZSA9IHRoaXMubm90ZXMuZmluZChub3RlID0+IG5vdGUuc3RhcnQgPT09IGV2ZW50LmV2ZW50LnN0YXJ0ICYmIG5vdGUuZW5kID09PSBldmVudC5ldmVudC5lbmQpO1xuICAgICAgaWYgKG5vdGUpIHtcbiAgICAgICAgdGhpcy5lZGl0Tm90ZSA9IHsgLi4ubm90ZSB9O1xuICAgICAgICB0aGlzLmVkaXREaWFsb2cgPSB0cnVlO1xuICAgICAgfVxuICAgIH0sXG4gICAgc2F2ZU5vdGUoKSB7XG4gICAgICBpZiAoIXRoaXMubmV3Tm90ZS50ZXh0IHx8ICF0aGlzLm5ld05vdGUuc3RhcnQgfHwgIXRoaXMubmV3Tm90ZS5lbmQpIHtcbiAgICAgICAgYWxlcnQoJ1ZldWlsbGV6IHJlbXBsaXIgdG91cyBsZXMgY2hhbXBzJyk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3Qgbm90ZVdpdGhJZCA9IHsgLi4udGhpcy5uZXdOb3RlLCBpZDogRGF0ZS5ub3coKSB9OyAvLyBBZGQgYSB1bmlxdWUgSURcbiAgICAgIHRoaXMubm90ZXMucHVzaChub3RlV2l0aElkKTtcbiAgICAgIHRoaXMuc2F2ZU5vdGVzKCk7XG4gICAgICB0aGlzLnVwZGF0ZUNhbGVuZGFyRXZlbnRzKCk7XG5cbiAgICAgIC8vIFJlc2V0IGZvcm1cbiAgICAgIHRoaXMubmV3Tm90ZSA9IHtcbiAgICAgICAgdGV4dDogJycsXG4gICAgICAgIHN0YXJ0OiAnJyxcbiAgICAgICAgZW5kOiAnJyxcbiAgICAgICAgY29sb3I6ICcjRkY1NzMzJywgLy8gRGVmYXVsdCBjb2xvclxuICAgICAgfTtcbiAgICAgIHRoaXMubm90ZURpYWxvZyA9IGZhbHNlO1xuICAgIH0sXG4gICAgc2F2ZU5vdGVzKCkge1xuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHRoaXMubm90ZXMpKSB7XG4gICAgICAgIHRoaXMubm90ZXMgPSBbXTtcbiAgICAgIH1cbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdjYWxlbmRhck5vdGVzJywgSlNPTi5zdHJpbmdpZnkodGhpcy5ub3RlcykpO1xuICAgIH0sXG5cbiAgICBsb2FkTm90ZXMoKSB7XG4gICAgICBjb25zdCBzYXZlZE5vdGVzID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2NhbGVuZGFyTm90ZXMnKTtcbiAgICAgIGlmIChzYXZlZE5vdGVzKSB7XG4gICAgICAgIHRoaXMubm90ZXMgPSBKU09OLnBhcnNlKHNhdmVkTm90ZXMpO1xuICAgICAgfVxuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHRoaXMubm90ZXMpKSB7XG4gICAgICAgIHRoaXMubm90ZXMgPSBbXTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHVwZGF0ZUNhbGVuZGFyRXZlbnRzKCkge1xuICAgICAgdGhpcy5jYWxlbmRhckV2ZW50cyA9IHRoaXMubm90ZXMubWFwKChub3RlKSA9PiAoe1xuICAgICAgICBuYW1lOiBub3RlLnRleHQsXG4gICAgICAgIHN0YXJ0OiBub3RlLnN0YXJ0LFxuICAgICAgICBlbmQ6IG5vdGUuZW5kLFxuICAgICAgICBjb2xvcjogbm90ZS5jb2xvcixcbiAgICAgIH0pKTtcbiAgICB9LFxuICAgIGdldEV2ZW50Q29sb3IoZXZlbnQpIHtcbiAgICAgIHJldHVybiBldmVudC5jb2xvcjtcbiAgICB9LFxuICAgIHVwZGF0ZU5vdGUoKSB7XG4gICAgICBjb25zdCBpbmRleCA9IHRoaXMubm90ZXMuZmluZEluZGV4KChub3RlKSA9PiBub3RlLmlkID09PSB0aGlzLmVkaXROb3RlLmlkKTtcbiAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgdGhpcy5ub3Rlc1tpbmRleF0gPSB7IC4uLnRoaXMuZWRpdE5vdGUgfTtcbiAgICAgICAgdGhpcy5zYXZlTm90ZXMoKTtcbiAgICAgICAgdGhpcy51cGRhdGVDYWxlbmRhckV2ZW50cygpO1xuICAgICAgICB0aGlzLmVkaXREaWFsb2cgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGRlbGV0ZU5vdGUoKSB7XG4gICAgICBpZiAoY29uZmlybShcIsOKdGVzLXZvdXMgc8O7ciBkZSB2b3Vsb2lyIHN1cHByaW1lciBjZXR0ZSBub3RlID8gXCIpKSB7XG4gICAgICAgIFxuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMubm90ZXMuZmluZEluZGV4KChub3RlKSA9PiAobm90ZS5lbmQgPT09IHRoaXMuZWRpdE5vdGUuZW5kICYmIG5vdGUuc3RhcnQgPT09IHRoaXMuZWRpdE5vdGUuc3RhcnQpKTtcbiAgICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICAgIHRoaXMubm90ZXMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgICB0aGlzLnNhdmVOb3RlcygpO1xuICAgICAgICAgIHRoaXMudXBkYXRlQ2FsZW5kYXJFdmVudHMoKTtcbiAgICAgICAgICB0aGlzLmVkaXREaWFsb2cgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gIH0sXG59O1xuPC9zY3JpcHQ+XG5cbjxzdHlsZSBzY29wZWQ+XG4udi1jYWxlbmRhciB7XG5cbiAgcGFkZGluZzogMTZweDtcbn1cblxuLnYtY2FsZW5kYXItZGF5LS1zZWxlY3RlZCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmJiMzMgIWltcG9ydGFudDtcbn1cbjwvc3R5bGU+XG4iLCI8dGVtcGxhdGU+XG4gPCEtLSBidG4gZHJhd2VyIHJpZ2h0IC0tPlxuICA8di1idG5cbiAgICBcbiAgICBmYWJcbiAgICBkYXJrXG4gICAgZml4ZWRcbiAgICBzbWFsbFxuICAgIHRvcD1cInRvcFwiXG4gICAgcmlnaHQ9XCJyaWdodFwiXG4gICAgY2xhc3M9XCJzZXR0aW5nLWZhYlwiXG4gICAgY29sb3I9XCJzdWNjZXNzXCJcbiAgICBAY2xpY2s9XCJvcGVuVGhlbWVTZXR0aW5nc1wiXG4gID5cbiAgICA8di1pY29uIHNtYWxsPm1kaS1wYWxldHRlLXN3YXRjaDwvdi1pY29uPlxuICA8L3YtYnRuPlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdD5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgZGF0YSgpIHtcbiAgICByZXR1cm4ge307XG4gIH0sXG4gIG1ldGhvZHM6IHtcbiAgICBvcGVuVGhlbWVTZXR0aW5ncygpIHtcbiAgICAgIHRoaXMuJHN0b3JlLmNvbW1pdChcInRoZW1lL3RvZ2dsZWRyYXdlcl9yaWdodFwiKTtcbiAgICB9LFxuICB9LFxufTtcbjwvc2NyaXB0PlxuPHN0eWxlIGxhbmc9XCJjc3NcIiBzY29wZWQ+XG4uc2V0dGluZy1mYWIge1xuICB0b3A6IDUwJSAhaW1wb3J0YW50O1xuICByaWdodDogMDtcbiAgYm9yZGVyLXJhZGl1czogMDtcbn1cblxuPC9zdHlsZT5cbiIsIjx0ZW1wbGF0ZT5cblx0PHYtY29udGFpbmVyPlxuXHRcdDx2LXJvdyBqdXN0aWZ5PVwiY2VudGVyXCIgY2xhc3M9XCJtYi0xXCI+XG5cdFx0XHQ8IS0tINmF2YHYqtin2K0g2KfZhNiq2KjYr9mK2YQg2KjZitmGINin2YTYudmG2LXYsdmK2YYgLS0+XG5cdFx0XHQ8di1idG4gQGNsaWNrPVwidG9nZ2xlQ29udGVudFwiIGNvbG9yPVwicHJpbWFyeVwiIGNsYXNzPVwiZm9udC13ZWlnaHQtYm9sZCBzaGFrZS1idG5cIj5cblx0XHRcdFx0PHNwYW4gY2xhc3M9XCJmb250LXdlaWdodC1ib2xkIFwiPnt7IGJ1dHRvbkxhYmVsIH19PC9zcGFuPlxuXG5cdFx0XHQ8L3YtYnRuPlxuXHRcdDwvdi1yb3c+XG5cblx0XHQ8di1jb2wgY29scz1cIjEyXCIgdi1pZj1cImFjdGl2ZVN0YXRlID09PSAnZW1wdHknXCI+XG5cblx0XHQ8L3YtY29sPlxuXG5cdFx0PCEtLSDYudix2LYg2KfZhNi52YbYtdixINio2YbYp9ih2Ysg2LnZhNmJINin2YTYrdin2YTYqSAtLT5cblx0XHQ8di1yb3cganVzdGlmeT1cImNlbnRlclwiPlxuXHRcdFx0PHYtY29sIGNvbHM9XCIxMlwiPlxuXHRcdFx0XHQ8di1jYXJkIHYtaWY9XCJhY3RpdmVTdGF0ZSA9PT0gJ3BheW1lbnQnXCIgY2xhc3M9XCJwYS02XCIgb3V0bGluZWQ+XG5cblx0XHRcdFx0XHQ8di1yb3cgY2xhc3M9XCJtYi0xXCI+XG5cdFx0XHRcdFx0XHQ8di1jb2wgY29scz1cIjEyXCI+XG5cdFx0XHRcdFx0XHRcdDx2LXRleHQtZmllbGQgdi1tb2RlbD1cInRvdGFsQW1vdW50XCIgbGFiZWw9XCJMZSBtb250YW50IMOgIHBheWVyXCIgdHlwZT1cIm51bWJlclwiXG5cdFx0XHRcdFx0XHRcdFx0aGludD1cIsKrIExlIG1vbnRhbnQgcXVlIGxlIGNsaWVudCBkb2l0IHBheWVyIMK7XCIgcGVyc2lzdGVudC1oaW50IG91dGxpbmVkIGRpc2FibGVkIC8+XG5cdFx0XHRcdFx0XHQ8L3YtY29sPlxuXHRcdFx0XHRcdFx0PHYtY29sIGNvbHM9XCIxMlwiPlxuXHRcdFx0XHRcdFx0XHQ8di10ZXh0LWZpZWxkIHYtbW9kZWw9XCJlbnRlcmVkQW1vdW50XCIgbGFiZWw9XCLCqyBNb250YW50IHBhecOpIHBhciBsZSBjbGllbnQgwrtcIiB0eXBlPVwibnVtYmVyXCJcblx0XHRcdFx0XHRcdFx0XHRoaW50PVwiVm91cyBwb3V2ZXogc2Fpc2lyIGxlIG1vbnRhbnQgbWFudWVsbGVtZW50IG91IMOgIGwnYWlkZSBkZXMgYm91dG9ucy5cIlxuXHRcdFx0XHRcdFx0XHRcdHBlcnNpc3RlbnQtaGludCBjbGFzcz1cIm1iLTFcIiBvdXRsaW5lZCAvPlxuXHRcdFx0XHRcdFx0PC92LWNvbD5cblxuXHRcdFx0XHRcdDwvdi1yb3c+XG5cblx0XHRcdFx0XHQ8di1yb3cgY2xhc3M9XCJtYi0xXCI+XG5cdFx0XHRcdFx0XHQ8di1jb2wgY29scz1cIjEyXCI+XG5cdFx0XHRcdFx0XHRcdDx2LWFsZXJ0IHYtaWY9XCJyZW1haW5pbmdBbW91bnQgPCAwXCIgdHlwZT1cImVycm9yXCIgb3V0bGluZWQ+XG5cdFx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJoZWFkbGluZVwiPkxlIG1vbnRhbnQgcGF5w6kgbidlc3QgcGFzIHN1ZmZpc2FudCAhPC9zcGFuPlxuXHRcdFx0XHRcdFx0XHQ8L3YtYWxlcnQ+XG5cblx0XHRcdFx0XHRcdDwvdi1jb2w+XG5cdFx0XHRcdFx0XHQ8di1jb2wgY29scz1cIjEyXCI+XG5cdFx0XHRcdFx0XHRcdDx2LWFsZXJ0IHYtaWY9XCJyZW1haW5pbmdBbW91bnQgPj0gMFwiIHR5cGU9XCJzdWNjZXNzXCIgb3V0bGluZWQ+XG5cdFx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJoZWFkbGluZVwiPk1vbnRhbnQgcmVzdGFudCDDoCByZXN0aXR1ZXIgOnt7IHJlbWFpbmluZ0Ftb3VudCB9fSBESDwvc3Bhbj5cblx0XHRcdFx0XHRcdFx0PC92LWFsZXJ0PlxuXHRcdFx0XHRcdFx0PC92LWNvbD5cblx0XHRcdFx0XHQ8L3Ytcm93PlxuXHRcdFx0XHRcdDx2LXJvdz5cblx0XHRcdFx0XHRcdDwhLS0g2LLYsSDZhNil2K/Yrtin2YQg2KfZhNmF2KjZhNi6INmK2K/ZiNmK2YvYpyAtLT5cblx0XHRcdFx0XHRcdDx2LWNvbCBjb2xzPVwiMTJcIj5cblx0XHRcdFx0XHRcdFx0PHYtYnRuIGNvbG9yPVwic2Vjb25kYXJ5XCIgYmxvY2sgQGNsaWNrPVwicmVzZXRBbW91bnRcIiBjbGFzcz1cImZvbnQtd2VpZ2h0LWJvbGRcIj5cblx0XHRcdFx0XHRcdFx0XHRSw6lpbml0aWFsaXNlciBsZSBtb250YW50IHBhecOpIDwvdi1idG4+XG5cdFx0XHRcdFx0XHQ8L3YtY29sPlxuXHRcdFx0XHRcdDwvdi1yb3c+XG5cdFx0XHRcdFx0PHYtcm93PlxuXHRcdFx0XHRcdFx0PCEtLSDYo9iy2LHYp9ixINin2YTYudmF2YTYp9iqINin2YTYo9mD2KvYsSDYqtiv2KfZiNmE2YvYpyAtLT5cblx0XHRcdFx0XHRcdDx2LWNvbCB2LWZvcj1cIihhbW91bnQsIGluZGV4KSBpbiBwb3B1bGFyQW1vdW50c1wiIDprZXk9XCJpbmRleFwiIGNvbHM9XCI0XCIgY2xhc3M9XCJtYi0yXCI+XG5cdFx0XHRcdFx0XHRcdDx2LWJ0biA6Y29sb3I9XCIncHJpbWFyeSdcIiBibG9jayBjbGFzcz1cInBhLTQgZm9udC13ZWlnaHQtYm9sZFwiIEBjbGljaz1cImFkZEFtb3VudChhbW91bnQpXCI+XG5cdFx0XHRcdFx0XHRcdFx0e3sgYW1vdW50IH19IERIXG5cdFx0XHRcdFx0XHRcdDwvdi1idG4+XG5cdFx0XHRcdFx0XHQ8L3YtY29sPlxuXHRcdFx0XHRcdDwvdi1yb3c+XG5cblxuXG5cdFx0XHRcdDwvdi1jYXJkPlxuXG5cdFx0XHRcdDx2LWNhcmQgdi1pZj1cImFjdGl2ZVN0YXRlID09PSAnY2FsY3VsYXRvcidcIiBjbGFzcz1cImNhbGN1bGF0b3JcIiBvdXRsaW5lZD5cblx0XHRcdFx0XHQ8di1yb3c+XG5cdFx0XHRcdFx0XHQ8IS0tIERpc3BsYXkgYW5kIEFuc3dlciAtLT5cblx0XHRcdFx0XHRcdDx2LWNvbCBjb2xzPVwiMTJcIiBjbGFzcz1cInRleHQtY2VudGVyXCI+XG5cdFx0XHRcdFx0XHRcdDx2LXRleHQtZmllbGQgdi1tb2RlbD1cImRpc3BsYXlWYWx1ZVwiIGxhYmVsPVwiQWZmaWNoZXJcIiBvdXRsaW5lZCByZWFkb25seSBjbGFzcz1cImRpc3BsYXlcIiAvPlxuXHRcdFx0XHRcdFx0PC92LWNvbD5cblx0XHRcdFx0XHRcdDx2LWNvbCBjb2xzPVwiMTJcIiBjbGFzcz1cInRleHQtY2VudGVyXCI+XG5cdFx0XHRcdFx0XHRcdDx2LXRleHQtZmllbGQgdi1tb2RlbD1cImZvcm1hdHRlZEFuc3dlclwiIGxhYmVsPVwiXCIgb3V0bGluZWQgcmVhZG9ubHlcblx0XHRcdFx0XHRcdFx0XHRjbGFzcz1cImFuc3dlciBmb250LXdlaWdodC1ib2xkXCIgLz5cblx0XHRcdFx0XHRcdDwvdi1jb2w+XG5cblx0XHRcdFx0XHRcdDwhLS0gRXJyb3IgbWVzc2FnZSAtLT5cblx0XHRcdFx0XHRcdDx2LWNvbCB2LWlmPVwiZXJyb3JcIiBjb2xzPVwiMTJcIiBjbGFzcz1cImVycm9yXCI+XG5cdFx0XHRcdFx0XHRcdDx2LWFsZXJ0IHR5cGU9XCJlcnJvclwiIG91dGxpbmVkPnt7IGVycm9yIH19PC92LWFsZXJ0PlxuXHRcdFx0XHRcdFx0PC92LWNvbD5cblx0XHRcdFx0XHQ8L3Ytcm93PlxuXG5cdFx0XHRcdFx0PCEtLSBDYWxjdWxhdG9yIEJ1dHRvbnMgLS0+XG5cdFx0XHRcdFx0PHYtcm93PlxuXHRcdFx0XHRcdFx0PHYtY29sIHYtZm9yPVwiKGJ0biwgaW5kZXgpIGluIGJ1dHRvbkxheW91dFwiIDprZXk9XCJpbmRleFwiIGNvbHM9XCIzXCI+XG5cdFx0XHRcdFx0XHRcdDx2LWJ0biA6Y29sb3I9XCIncHJpbWFyeSdcIiA6Y2xhc3M9XCJidG4uY2xhc3NcIiBAY2xpY2s9XCJidG4uYWN0aW9uXCIgYmxvY2tcblx0XHRcdFx0XHRcdFx0XHRjbGFzcz1cImNhbGN1bGF0b3ItYnRuIGZvbnQtd2VpZ2h0LWJvbGRcIj5cblx0XHRcdFx0XHRcdFx0XHR7eyBidG4ubGFiZWwgfX1cblx0XHRcdFx0XHRcdFx0PC92LWJ0bj5cblx0XHRcdFx0XHRcdDwvdi1jb2w+XG5cdFx0XHRcdFx0PC92LXJvdz5cblx0XHRcdFx0PC92LWNhcmQ+XG5cdFx0XHQ8L3YtY29sPlxuXHRcdDwvdi1yb3c+XG5cdDwvdi1jb250YWluZXI+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0PlxuaW1wb3J0IHsgZXZhbHVhdGUgfSBmcm9tIFwibWF0aGpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IHtcblx0cHJvcHM6IHtcblxuXG5cdFx0ZnJvbTogeyBkZWZhdWx0OiBcIlwiIH0sXG5cdFx0Y29udHJvbGxlcl9yb290OiB7IGRlZmF1bHQ6IFwiXCIgfSxcblxuXG5cdH0sXG5cblxuXHRkYXRhKCkge1xuXHRcdHJldHVybiB7XG5cdFx0XHRhY3RpdmVTdGF0ZTogXCJlbXB0eVwiLCAvLyDYp9mE2K3Yp9mE2Kkg2KfZhNit2KfZhNmK2KkgKGVtcHR5LCBjYWxjdWxhdG9yLCBwYXltZW50KVxuXG5cdFx0XHQvLyDYqNmK2KfZhtin2Kog2KfZhNi52YbYtdixINin2YTYo9mI2YRcblx0XHRcdGVudGVyZWRBbW91bnQ6IDAsXG5cdFx0XHQvL3RvdGFsQW1vdW50OiAxNTAwLFxuXHRcdFx0cG9wdWxhckFtb3VudHM6IFs1MCwgMTAwLCAyMDAsIDUwMCwgMTAwMCwgMTAwMDBdLFxuXHRcdFx0Ly8g2KjZitin2YbYp9iqINin2YTYotmE2Kkg2KfZhNit2KfYs9io2Klcblx0XHRcdGxvZ0xpc3Q6IFwiXCIsXG5cdFx0XHRjdXJyZW50OiBcIlwiLFxuXHRcdFx0YW5zd2VyOiBcIlwiLFxuXHRcdFx0ZGVjaW1hbFByZWNpc2lvbjogMixcblx0XHRcdG9wZXJhdG9yQ2xpY2tlZDogdHJ1ZSxcblx0XHRcdGVycm9yOiBcIlwiLFxuXHRcdFx0YnV0dG9uTGF5b3V0OiBbXG5cdFx0XHRcdHsgbGFiZWw6IFwiQ1wiLCBjbGFzczogXCJvcGVyYXRvclwiLCBhY3Rpb246IHRoaXMuY2xlYXIgfSxcblx0XHRcdFx0eyBsYWJlbDogXCIrLy1cIiwgY2xhc3M6IFwib3BlcmF0b3JcIiwgYWN0aW9uOiB0aGlzLnNpZ24gfSxcblx0XHRcdFx0eyBsYWJlbDogXCIlXCIsIGNsYXNzOiBcIm9wZXJhdG9yXCIsIGFjdGlvbjogdGhpcy5wZXJjZW50IH0sXG5cdFx0XHRcdHsgbGFiZWw6IFwiL1wiLCBjbGFzczogXCJvcGVyYXRvclwiLCBhY3Rpb246IHRoaXMuZGl2aWRlIH0sXG5cdFx0XHRcdHsgbGFiZWw6IFwiN1wiLCBjbGFzczogXCJcIiwgYWN0aW9uOiAoKSA9PiB0aGlzLmFwcGVuZChcIjdcIikgfSxcblx0XHRcdFx0eyBsYWJlbDogXCI4XCIsIGNsYXNzOiBcIlwiLCBhY3Rpb246ICgpID0+IHRoaXMuYXBwZW5kKFwiOFwiKSB9LFxuXHRcdFx0XHR7IGxhYmVsOiBcIjlcIiwgY2xhc3M6IFwiXCIsIGFjdGlvbjogKCkgPT4gdGhpcy5hcHBlbmQoXCI5XCIpIH0sXG5cdFx0XHRcdHsgbGFiZWw6IFwiKlwiLCBjbGFzczogXCJvcGVyYXRvclwiLCBhY3Rpb246IHRoaXMudGltZXMgfSxcblx0XHRcdFx0eyBsYWJlbDogXCI0XCIsIGNsYXNzOiBcIlwiLCBhY3Rpb246ICgpID0+IHRoaXMuYXBwZW5kKFwiNFwiKSB9LFxuXHRcdFx0XHR7IGxhYmVsOiBcIjVcIiwgY2xhc3M6IFwiXCIsIGFjdGlvbjogKCkgPT4gdGhpcy5hcHBlbmQoXCI1XCIpIH0sXG5cdFx0XHRcdHsgbGFiZWw6IFwiNlwiLCBjbGFzczogXCJcIiwgYWN0aW9uOiAoKSA9PiB0aGlzLmFwcGVuZChcIjZcIikgfSxcblx0XHRcdFx0eyBsYWJlbDogXCItXCIsIGNsYXNzOiBcIm9wZXJhdG9yXCIsIGFjdGlvbjogdGhpcy5taW51cyB9LFxuXHRcdFx0XHR7IGxhYmVsOiBcIjFcIiwgY2xhc3M6IFwiXCIsIGFjdGlvbjogKCkgPT4gdGhpcy5hcHBlbmQoXCIxXCIpIH0sXG5cdFx0XHRcdHsgbGFiZWw6IFwiMlwiLCBjbGFzczogXCJcIiwgYWN0aW9uOiAoKSA9PiB0aGlzLmFwcGVuZChcIjJcIikgfSxcblx0XHRcdFx0eyBsYWJlbDogXCIzXCIsIGNsYXNzOiBcIlwiLCBhY3Rpb246ICgpID0+IHRoaXMuYXBwZW5kKFwiM1wiKSB9LFxuXHRcdFx0XHR7IGxhYmVsOiBcIitcIiwgY2xhc3M6IFwib3BlcmF0b3JcIiwgYWN0aW9uOiB0aGlzLnBsdXMgfSxcblx0XHRcdFx0eyBsYWJlbDogXCIwXCIsIGNsYXNzOiBcInplcm9cIiwgYWN0aW9uOiAoKSA9PiB0aGlzLmFwcGVuZChcIjBcIikgfSxcblx0XHRcdFx0eyBsYWJlbDogXCIuXCIsIGNsYXNzOiBcIlwiLCBhY3Rpb246IHRoaXMuZG90IH0sXG5cdFx0XHRcdHsgbGFiZWw6IFwiPVwiLCBjbGFzczogXCJvcGVyYXRvclwiLCBhY3Rpb246IHRoaXMuZXF1YWwgfVxuXHRcdFx0XVxuXHRcdH07XG5cdH0sXG5cdGNvbXB1dGVkOiB7XG5cdFx0YnV0dG9uTGFiZWwoKSB7XG5cdFx0XHQvL1wiwqvCoMKgwrtcIiA6IFwiwqvCoEHCoMK7XCJcblxuXHRcdFx0c3dpdGNoICh0aGlzLmFjdGl2ZVN0YXRlKSB7XG5cdFx0XHRcdGNhc2UgXCJlbXB0eVwiOlxuXHRcdFx0XHRcdHJldHVybiBcIkFmZmljaGVyIENhbGN1bGUgUmVuZHUgXCI7XG5cblx0XHRcdFx0Y2FzZSBcImNhbGN1bGF0b3JcIjpcblx0XHRcdFx0XHRyZXR1cm4gXCJjYWNoZXIgbGVzIGl0ZW1zXCI7XG5cdFx0XHRcdGNhc2UgXCJwYXltZW50XCI6XG5cdFx0XHRcdFx0cmV0dXJuIFwiQWZmaWNoZXIgbGEgY2FsY3VsYXRyaWNlXCI7XG5cblx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRyZXR1cm4gXCJjaGFuZ2VcIjtcblx0XHRcdH1cblx0XHR9LFxuXHRcdHRvdGFsQW1vdW50KCkge1xuXHRcdFx0cmV0dXJuIHRoaXMuJHN0b3JlLmdldHRlcnNbXCJzdHJ1Y3R1cmUvZ2V0X2lucHV0X2JpbmRzXCJdKHtcblx0XHRcdFx0Y29udHJvbGxlcl9yb290OiB0aGlzLmNvbnRyb2xsZXJfcm9vdCxcblx0XHRcdFx0bmFtZTogdGhpcy5mcm9tLFxuXHRcdFx0fSk7XG5cdFx0fSxcblxuXHRcdHJlbWFpbmluZ0Ftb3VudCgpIHtcblx0XHRcdHJldHVybiBwYXJzZUZsb2F0KHRoaXMuZW50ZXJlZEFtb3VudCkgLSBwYXJzZUZsb2F0KHRoaXMudG90YWxBbW91bnQpO1xuXHRcdH0sXG5cdFx0ZGlzcGxheVZhbHVlOiB7XG5cdFx0XHRnZXQoKSB7XG5cdFx0XHRcdHJldHVybiB0aGlzLmxvZ0xpc3QgKyB0aGlzLmN1cnJlbnQ7XG5cdFx0XHR9LFxuXHRcdFx0c2V0KHZhbHVlKSB7XG5cdFx0XHRcdGNvbnN0IGxhc3RDaGFyID0gdmFsdWUuY2hhckF0KHZhbHVlLmxlbmd0aCAtIDEpO1xuXHRcdFx0XHRpZiAoXCIwMTIzNDU2Nzg5XCIuaW5jbHVkZXMobGFzdENoYXIpKSB7XG5cdFx0XHRcdFx0dGhpcy5hcHBlbmQobGFzdENoYXIpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSxcblx0XHRmb3JtYXR0ZWRBbnN3ZXIoKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5hbnN3ZXIgPyBwYXJzZUZsb2F0KHRoaXMuYW5zd2VyKS50b0ZpeGVkKHRoaXMuZGVjaW1hbFByZWNpc2lvbikgOiBcIlwiO1xuXHRcdH1cblx0fSxcblx0bWV0aG9kczoge1xuXHRcdHRvZ2dsZUNvbnRlbnQoKSB7XG5cdFx0XHRpZiAodGhpcy5hY3RpdmVTdGF0ZSA9PT0gXCJlbXB0eVwiKSB7XG5cdFx0XHRcdHRoaXMuYWN0aXZlU3RhdGUgPSBcInBheW1lbnRcIjtcblxuXHRcdFx0fSBlbHNlIGlmICh0aGlzLmFjdGl2ZVN0YXRlID09PSBcImNhbGN1bGF0b3JcIikge1xuXHRcdFx0XHR0aGlzLmFjdGl2ZVN0YXRlID0gXCJlbXB0eVwiO1xuXHRcdFx0fSBlbHNlIGlmICh0aGlzLmFjdGl2ZVN0YXRlID09PSBcInBheW1lbnRcIikge1xuXHRcdFx0XHR0aGlzLmFjdGl2ZVN0YXRlID0gXCJjYWxjdWxhdG9yXCI7XG5cdFx0XHR9XG5cdFx0fSxcblx0XHQvLyDYpdi22KfZgdipINmF2KjZhNi6INi52YbYryDYp9mE2LbYuti3INi52YTZiSDYstixXG5cdFx0YWRkQW1vdW50KGFtb3VudCkge1xuXHRcdFx0Ly8g2KfZhNiq2KPZg9ivINmF2YYg2KPZhiBlbnRlcmVkQW1vdW50INiz2YrZg9mI2YYg2LnYr9iv2YvYpyDYudi02LHZitmL2Kcg2YLYqNmEINil2LbYp9mB2Kkg2KfZhNmF2KjZhNi6XG5cdFx0XHR0aGlzLmVudGVyZWRBbW91bnQgPSBwYXJzZUZsb2F0KHRoaXMuZW50ZXJlZEFtb3VudCkgKyBwYXJzZUZsb2F0KGFtb3VudCk7XG5cdFx0fSxcblxuXHRcdC8vINil2LnYp9iv2Kkg2KrYudmK2YrZhiDYp9mE2YXYqNmE2Log2KfZhNmF2K/ZgdmI2Lkg2KXZhNmJIDBcblx0XHRyZXNldEFtb3VudCgpIHtcblx0XHRcdHRoaXMuZW50ZXJlZEFtb3VudCA9IDA7XG5cdFx0fSxcblxuXHRcdGFwcGVuZChudW1iZXIpIHtcblx0XHRcdGlmICh0aGlzLm9wZXJhdG9yQ2xpY2tlZCkge1xuXHRcdFx0XHR0aGlzLmN1cnJlbnQgPSBcIlwiO1xuXHRcdFx0XHR0aGlzLm9wZXJhdG9yQ2xpY2tlZCA9IGZhbHNlO1xuXHRcdFx0fVxuXHRcdFx0dGhpcy5lcnJvciA9IFwiXCI7XG5cdFx0XHR0aGlzLmN1cnJlbnQgPSBgJHt0aGlzLmN1cnJlbnR9JHtudW1iZXJ9YDtcblx0XHR9LFxuXHRcdGFkZHRvTG9nKG9wZXJhdG9yKSB7XG5cdFx0XHRpZiAoIXRoaXMub3BlcmF0b3JDbGlja2VkKSB7XG5cdFx0XHRcdHRoaXMubG9nTGlzdCArPSBgJHt0aGlzLmN1cnJlbnR9ICR7b3BlcmF0b3J9IGA7XG5cdFx0XHRcdHRoaXMuY3VycmVudCA9IFwiXCI7XG5cdFx0XHRcdHRoaXMub3BlcmF0b3JDbGlja2VkID0gdHJ1ZTtcblx0XHRcdH1cblx0XHR9LFxuXHRcdGNsZWFyKCkge1xuXHRcdFx0dGhpcy5jdXJyZW50ID0gXCJcIjtcblx0XHRcdHRoaXMuYW5zd2VyID0gXCJcIjtcblx0XHRcdHRoaXMubG9nTGlzdCA9IFwiXCI7XG5cdFx0XHR0aGlzLmVycm9yID0gXCJcIjtcblx0XHRcdHRoaXMub3BlcmF0b3JDbGlja2VkID0gZmFsc2U7XG5cdFx0fSxcblx0XHRzaWduKCkge1xuXHRcdFx0aWYgKHRoaXMuY3VycmVudCAhPT0gXCJcIikge1xuXHRcdFx0XHR0aGlzLmN1cnJlbnQgPSB0aGlzLmN1cnJlbnQuY2hhckF0KDApID09PSBcIi1cIiA/IHRoaXMuY3VycmVudC5zbGljZSgxKSA6IGAtJHt0aGlzLmN1cnJlbnR9YDtcblx0XHRcdH1cblx0XHR9LFxuXHRcdHBlcmNlbnQoKSB7XG5cdFx0XHRpZiAodGhpcy5jdXJyZW50ICE9PSBcIlwiKSB7XG5cdFx0XHRcdHRoaXMuY3VycmVudCA9IGAke3BhcnNlRmxvYXQodGhpcy5jdXJyZW50KSAvIDEwMH1gO1xuXHRcdFx0fVxuXHRcdH0sXG5cdFx0ZG90KCkge1xuXHRcdFx0aWYgKCF0aGlzLmN1cnJlbnQuaW5jbHVkZXMoXCIuXCIpKSB7XG5cdFx0XHRcdHRoaXMuYXBwZW5kKFwiLlwiKTtcblx0XHRcdH1cblx0XHR9LFxuXHRcdGRpdmlkZSgpIHtcblx0XHRcdHRoaXMuYWRkdG9Mb2coXCIvXCIpO1xuXHRcdH0sXG5cdFx0dGltZXMoKSB7XG5cdFx0XHR0aGlzLmFkZHRvTG9nKFwiKlwiKTtcblx0XHR9LFxuXHRcdG1pbnVzKCkge1xuXHRcdFx0dGhpcy5hZGR0b0xvZyhcIi1cIik7XG5cdFx0fSxcblx0XHRwbHVzKCkge1xuXHRcdFx0dGhpcy5hZGR0b0xvZyhcIitcIik7XG5cdFx0fSxcblx0XHRlcXVhbCgpIHtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdGlmICghdGhpcy5vcGVyYXRvckNsaWNrZWQpIHtcblx0XHRcdFx0XHR0aGlzLmFuc3dlciA9IGV2YWx1YXRlKHRoaXMubG9nTGlzdCArIHRoaXMuY3VycmVudCk7XG5cdFx0XHRcdFx0dGhpcy5lcnJvciA9IFwiXCI7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dGhpcy5lcnJvciA9IFwiSW52YWxpZCBvcGVyYXRpb24hXCI7XG5cdFx0XHRcdH1cblx0XHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdFx0dGhpcy5lcnJvciA9IFwiRXJyb3IgaW4gY2FsY3VsYXRpb24hXCI7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59O1xuPC9zY3JpcHQ+XG5cbjxzdHlsZSBzY29wZWQ+XG4uY2FsY3VsYXRvciB7XG5cdHBhZGRpbmc6IDMwcHg7XG5cdG1heC13aWR0aDogNDAwcHg7XG5cdHdpZHRoOiAxMDAlO1xufVxuXG5cblxuLnplcm8ge1xuXHRncmlkLWNvbHVtbjogc3BhbiAyO1xufVxuXG4uZGlzcGxheSB7XG5cdG1hcmdpbi1ib3R0b206IDE1cHg7XG59XG5cbi5hbnN3ZXIge1xuXHRmb250LXNpemU6IDIuNXJlbTtcblx0bWFyZ2luLWJvdHRvbTogMTVweDtcbn1cblxuLmNhbGN1bGF0b3ItYnRuIHtcblx0bWFyZ2luLXRvcDogMTBweDtcbn1cblxuLmVycm9yIHtcblx0Y29sb3I6IHJlZDtcbn1cblxuLnYtYnRuIHtcblx0bWFyZ2luLWJvdHRvbTogOHB4O1xufVxuXG4udi1jYXJkIHtcblx0bWF4LXdpZHRoOiA1MDBweDtcblx0d2lkdGg6IDEwMCU7XG5cdGJvcmRlci1yYWRpdXM6IDEycHg7XG59XG5cbi52LWJ0biB7XG5cdGZvbnQtc2l6ZTogMTZweDtcblx0Zm9udC13ZWlnaHQ6IDYwMDtcbn1cblxuLnYtdGV4dC1maWVsZCB7XG5cdGZvbnQtc2l6ZTogMThweDtcbn1cblxuLnYtYWxlcnQge1xuXHRmb250LXNpemU6IDE2cHg7XG59XG5cbi5wYS02IHtcblx0cGFkZGluZzogMzJweDtcbn1cblxuLm1iLTEge1xuXHRtYXJnaW4tYm90dG9tOiA3cHg7XG59XG5cbi5mb250LXdlaWdodC1ib2xkIHtcblx0Zm9udC13ZWlnaHQ6IDcwMDtcbn1cblxuLm9wZXJhdG9yIHtcblx0Zm9udC1zaXplOiAycmVtO1xuXG59XG5cbi8qINin2YTYqtij2KvZitixINin2YTYqNi12LHZiiDZhNmE2KfZh9iq2LLYp9iyINiv2KfYrtmEINin2YTYudmG2KfYtdixICovXG4uc2hha2UtYnRuIHtcblx0ZGlzcGxheTogZmxleDtcblx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdGZvbnQtc2l6ZTogMTZweDtcblx0cGFkZGluZzogMTBweCAyMHB4O1xuXHRhbmltYXRpb246IGJsaW5rIDFzIDFzIGVhc2Utb3V0IGluZmluaXRlO1xuXHQvKiDYp9mE2YjZhdmK2LYg2KfZhNmF2LPYqtmF2LEgKi9cbn1cblxuLyog2K3YsdmD2Kkg2KfZhNin2YfYqtiy2KfYsiDYr9in2K7ZhCDYp9mE2LnZhtin2LXYsSAqL1xuLnNoYWtlLWJ0biBzcGFuLFxuLnNoYWtlLWJ0biB2LWljb24ge1xuXHRhbmltYXRpb246IHNoYWtlIDFzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xufVxuXG4vKiDYrdix2YPYqSDYp9mE2KfZh9iq2LLYp9iyICjYudmG2K8g2KrYt9io2YrZgiDYp9mE2KfZh9iq2LLYp9iyINi52YTZiSDYp9mE2YbYtSDZiNin2YTYo9mK2YLZiNmG2Kkg2YHZgti3KSAqL1xuQGtleWZyYW1lcyBzaGFrZSB7XG5cdDAlIHtcblx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7XG5cdH1cblxuXHQyNSUge1xuXHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtM3B4KTtcblx0fVxuXG5cdDUwJSB7XG5cdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVYKDNweCk7XG5cdH1cblxuXHQ3NSUge1xuXHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtM3B4KTtcblx0fVxuXG5cdDEwMCUge1xuXHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTtcblx0fVxufVxuPC9zdHlsZT4iLCJcbkBpbXBvcnQgdXJsKCdodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2NzczI/ZmFtaWx5PVJvYm90bytDb25kZW5zZWQ6d2dodEA3MDAmZmFtaWx5PVJvYm90bzp3Z2h0QDQwMDs1MDA7NzAwJmRpc3BsYXk9c3dhcCcpO1xuXG4ucmV0cm8tY2xvY2std3JhcHBlciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwYWRkaW5nOiAycmVtIDFyZW07XG4gIHdpZHRoOiAxMDAlO1xuICBtaW4taGVpZ2h0OiA0MDBweDtcbn1cblxuLnJldHJvLWNsb2NrLWNvbnRhaW5lciB7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxNDVkZWcsICNmZmZmZmYsICNmNWY1ZjUpO1xuICBib3JkZXItcmFkaXVzOiAyNHB4O1xuICBwYWRkaW5nOiAzMnB4IDM2cHggMjhweDtcbiAgYm94LXNoYWRvdzpcbiAgICAwIDE1cHggNDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpLFxuICAgIDAgNXB4IDE1cHggcmdiYSgwLCAwLCAwLCAwLjA4KSxcbiAgICBpbnNldCAwIDFweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45KTtcbiAgd2lkdGg6IDY4MHB4O1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLyogQnJhbmQgSGVhZGVyICovXG4uYnJhbmQtaGVhZGVyIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBtYXJnaW4tYm90dG9tOiAyNHB4O1xuICBwYWRkaW5nLWJvdHRvbTogMTZweDtcbiAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4wOCk7XG59XG5cbi5icmFuZC1sb2dvIHtcbiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nLCBzYW5zLXNlcmlmO1xuICBmb250LXNpemU6IDMycHg7XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIGxldHRlci1zcGFjaW5nOiA4cHg7XG4gIGNvbG9yOiAjMWExYTFhO1xuICB0ZXh0LXNoYWRvdzogMnB4IDJweCA0cHggcmdiYSgwLCAwLCAwLCAwLjEpO1xufVxuXG4uYnJhbmQtc3VidGl0bGUge1xuICBmb250LWZhbWlseTogJ1JvYm90bycsIHNhbnMtc2VyaWY7XG4gIGZvbnQtc2l6ZTogMTFweDtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgbGV0dGVyLXNwYWNpbmc6IDNweDtcbiAgY29sb3I6ICM2NjY7XG4gIG1hcmdpbi10b3A6IDRweDtcbn1cblxuLyogQ29udHJvbCBCdXR0b25zICovXG4uY29udHJvbC1idXR0b25zIHtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQ7XG4gIG1hcmdpbi1ib3R0b206IDIwcHg7XG4gIGdhcDogMTZweDtcbn1cblxuLmNvbnRyb2wtYnRuIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiA2cHg7XG4gIHBhZGRpbmc6IDEycHggMjBweDtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDE0NWRlZywgI2U4ZThlOCwgI2ZmZmZmZik7XG4gIGJvcmRlci1yYWRpdXM6IDEycHg7XG4gIGJveC1zaGFkb3c6XG4gICAgM3B4IDNweCA4cHggcmdiYSgwLCAwLCAwLCAwLjEyKSxcbiAgICAtMnB4IC0ycHggNnB4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44KSxcbiAgICBpbnNldCAxcHggMXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMDUpO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHRyYW5zaXRpb246IGFsbCAwLjJzO1xuICBmbGV4OiAxO1xuXG4gICY6aG92ZXIge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTtcbiAgICBib3gtc2hhZG93OlxuICAgICAgNHB4IDRweCAxMnB4IHJnYmEoMCwgMCwgMCwgMC4xNSksXG4gICAgICAtMnB4IC0ycHggNnB4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45KTtcbiAgfVxuXG4gICY6YWN0aXZlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG4gICAgYm94LXNoYWRvdzogaW5zZXQgM3B4IDNweCA2cHggcmdiYSgwLCAwLCAwLCAwLjE1KTtcbiAgfVxufVxuXG4uYnRuLWljb24ge1xuICBmb250LXNpemU6IDIwcHg7XG4gIGxpbmUtaGVpZ2h0OiAxO1xufVxuXG4uYnRuLWxhYmVsIHtcbiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nLCBzYW5zLXNlcmlmO1xuICBmb250LXNpemU6IDlweDtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgbGV0dGVyLXNwYWNpbmc6IDFweDtcbiAgY29sb3I6ICM1NTU7XG59XG5cbi8qIFN0YXRzIFBhbmVsICovXG4uc3RhdHMtcGFuZWwge1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgbWFyZ2luLWJvdHRvbTogMjBweDtcbiAgcGFkZGluZzogMTZweDtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgI2YwZjRmOCwgI2UxZThlZCk7XG4gIGJvcmRlci1yYWRpdXM6IDEycHg7XG4gIGJveC1zaGFkb3c6IGluc2V0IDAgMnB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMDgpO1xufVxuXG4uc3RhdC1pdGVtIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4uc3RhdC1sYWJlbCB7XG4gIGZvbnQtZmFtaWx5OiAnUm9ib3RvJywgc2Fucy1zZXJpZjtcbiAgZm9udC1zaXplOiA5cHg7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIGxldHRlci1zcGFjaW5nOiAxcHg7XG4gIGNvbG9yOiAjNjY2O1xuICBtYXJnaW4tYm90dG9tOiA0cHg7XG59XG5cbi5zdGF0LXZhbHVlIHtcbiAgZm9udC1mYW1pbHk6ICdSb2JvdG8gQ29uZGVuc2VkJywgc2Fucy1zZXJpZjtcbiAgZm9udC1zaXplOiAyMHB4O1xuICBmb250LXdlaWdodDogNzAwO1xuICBjb2xvcjogIzFhMWExYTtcbn1cblxuLyogTWFpbiBEaXNwbGF5IEdyaWQgKi9cbi5kaXNwbGF5LWdyaWQge1xuICBkaXNwbGF5OiBncmlkO1xuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAxZnIgMS40ZnI7XG4gIGdhcDogMjBweDtcbiAgbWFyZ2luLWJvdHRvbTogMjBweDtcbn1cblxuLyogRmxpcCBTZWN0aW9ucyAoRGF5ICYgRGF0ZSkgKi9cbi5mbGlwLXNlY3Rpb24ge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi5zZWN0aW9uLWxhYmVsIHtcbiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nLCBzYW5zLXNlcmlmO1xuICBmb250LXNpemU6IDEwcHg7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIGxldHRlci1zcGFjaW5nOiAycHg7XG4gIGNvbG9yOiAjNzc3O1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIG1hcmdpbi1ib3R0b206IDhweDtcbn1cblxuLmZsaXAtY2FyZCB7XG4gIGJhY2tncm91bmQ6ICNmZmZmZmY7XG4gIGJvcmRlci1yYWRpdXM6IDEwcHg7XG4gIGJveC1zaGFkb3c6XG4gICAgaW5zZXQgMCAzcHggNnB4IHJnYmEoMCwgMCwgMCwgMC4xNSksXG4gICAgaW5zZXQgMCAtMnB4IDRweCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNiksXG4gICAgMCAycHggNHB4IHJnYmEoMCwgMCwgMCwgMC4wNik7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGhlaWdodDogMTMwcHg7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLmZsaXAtY2FyZC1pbm5lciB7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi5jYXJkLW1haW4ge1xuICBmb250LWZhbWlseTogJ1JvYm90byBDb25kZW5zZWQnLCBzYW5zLXNlcmlmO1xuICBmb250LXNpemU6IDU2cHg7XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIGxpbmUtaGVpZ2h0OiAxO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi8qIENsb2NrIFNlY3Rpb24gKi9cbi5jbG9jay1zZWN0aW9uIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBiYWNrZ3JvdW5kOiAjZmZmZmZmO1xuICBib3JkZXItcmFkaXVzOiAxNHB4O1xuICBib3gtc2hhZG93OlxuICAgIGluc2V0IDAgM3B4IDZweCByZ2JhKDAsIDAsIDAsIDAuMSksXG4gICAgMCAycHggNHB4IHJnYmEoMCwgMCwgMCwgMC4wNik7XG4gIGhlaWdodDogMTgwcHg7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4vKiBDbG9jayBNYXJrZXJzIChEaWFtb25kIFNoYXBlcykgKi9cbi5jbG9jay1tYXJrZXJzIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xufVxuXG4ubWFya2VyLWRpYW1vbmQge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHdpZHRoOiA1cHg7XG4gIGhlaWdodDogNXB4O1xuICBiYWNrZ3JvdW5kOiAjMmEyYTJhO1xuICB0b3A6IDUwJTtcbiAgbGVmdDogNTAlO1xuICBtYXJnaW4tbGVmdDogLTIuNXB4O1xuICBtYXJnaW4tdG9wOiAtMi41cHg7XG4gIHRyYW5zZm9ybS1vcmlnaW46IDUwJSA1MCU7XG4gIHRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTtcbn1cblxuLyogQ2xvY2sgSGFuZHMgKi9cbi5jbG9jay1oYW5kIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBib3R0b206IDUwJTtcbiAgbGVmdDogNTAlO1xuICB0cmFuc2Zvcm0tb3JpZ2luOiBib3R0b20gY2VudGVyO1xuICBib3JkZXItcmFkaXVzOiAzcHggM3B4IDAgMDtcbn1cblxuLndpdGgtdHJhbnNpdGlvbiB7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjNzIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7XG59XG5cbi5uby10cmFuc2l0aW9uIHtcbiAgdHJhbnNpdGlvbjogbm9uZSAhaW1wb3J0YW50O1xufVxuXG4uaG91ci1oYW5kIHtcbiAgd2lkdGg6IDVweDtcbiAgaGVpZ2h0OiA0MnB4O1xuICBiYWNrZ3JvdW5kOiAjMWExYTFhO1xuICBtYXJnaW4tbGVmdDogLTIuNXB4O1xuICB6LWluZGV4OiAzO1xufVxuXG4ubWludXRlLWhhbmQge1xuICB3aWR0aDogNHB4O1xuICBoZWlnaHQ6IDYwcHg7XG4gIGJhY2tncm91bmQ6ICMyYTJhMmE7XG4gIG1hcmdpbi1sZWZ0OiAtMnB4O1xuICB6LWluZGV4OiA0O1xufVxuXG4uc2Vjb25kLWhhbmQge1xuICB3aWR0aDogMnB4O1xuICBoZWlnaHQ6IDY4cHg7XG4gIGJhY2tncm91bmQ6ICNlNTM5MzU7XG4gIG1hcmdpbi1sZWZ0OiAtMXB4O1xuICB6LWluZGV4OiA1O1xufVxuXG4uc2Vjb25kLWhhbmQ6OmFmdGVyIHtcbiAgY29udGVudDogJyc7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgYm90dG9tOiAtMTZweDtcbiAgbGVmdDogNTAlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gIHdpZHRoOiAycHg7XG4gIGhlaWdodDogMTZweDtcbiAgYmFja2dyb3VuZDogI2U1MzkzNTtcbn1cblxuLmNlbnRlci1jYXAge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHdpZHRoOiAxMnB4O1xuICBoZWlnaHQ6IDEycHg7XG4gIGJhY2tncm91bmQ6ICMxYTFhMWE7XG4gIGJvcmRlcjogM3B4IHNvbGlkICNmZmZmZmY7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgei1pbmRleDogNjtcbiAgYm94LXNoYWRvdzogMCAycHggNHB4IHJnYmEoMCwgMCwgMCwgMC4yKTtcbn1cblxuLnF1YXJ0ei1sYWJlbCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgYm90dG9tOiAzMnB4O1xuICBmb250LWZhbWlseTogJ1JvYm90bycsIHNhbnMtc2VyaWY7XG4gIGZvbnQtc2l6ZTogOHB4O1xuICBmb250LXdlaWdodDogNTAwO1xuICBsZXR0ZXItc3BhY2luZzogMS41cHg7XG4gIGNvbG9yOiAjOTk5O1xufVxuXG4vKiBTZXNzaW9uIFRpbWUgQmFyICovXG4uc2Vzc2lvbi1iYXIge1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjZjhmOWZhLCAjZTllY2VmKTtcbiAgYm9yZGVyLXJhZGl1czogMTJweDtcbiAgcGFkZGluZzogMTRweCAyMHB4O1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IDE0cHg7XG4gIGJveC1zaGFkb3c6XG4gICAgaW5zZXQgMCAycHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xKSxcbiAgICAwIDJweCA0cHggcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjYpO1xuICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMDYpO1xufVxuXG4uc2Vzc2lvbi1pY29uIHtcbiAgZm9udC1zaXplOiAyMnB4O1xuICBvcGFjaXR5OiAwLjg7XG59XG5cbi5zZXNzaW9uLWluZm8ge1xuICBmbGV4OiAxO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBnYXA6IDJweDtcbn1cblxuLnNlc3Npb24tdXNlciB7XG4gIGZvbnQtZmFtaWx5OiAnUm9ib3RvJywgc2Fucy1zZXJpZjtcbiAgZm9udC1zaXplOiAxM3B4O1xuICBmb250LXdlaWdodDogNzAwO1xuICBjb2xvcjogIzJjM2U1MDtcbiAgbGV0dGVyLXNwYWNpbmc6IDAuNXB4O1xufVxuXG4uc2Vzc2lvbi10ZXh0IHtcbiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nLCBzYW5zLXNlcmlmO1xuICBmb250LXNpemU6IDlweDtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgbGV0dGVyLXNwYWNpbmc6IDEuNXB4O1xuICBjb2xvcjogIzc3Nztcbn1cblxuLnNlc3Npb24tdGltZSB7XG4gIGZvbnQtZmFtaWx5OiAnUm9ib3RvIENvbmRlbnNlZCcsIHNhbnMtc2VyaWY7XG4gIGZvbnQtc2l6ZTogMjJweDtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgY29sb3I6ICMxYTFhMWE7XG4gIGxldHRlci1zcGFjaW5nOiAxLjVweDtcbiAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcpO1xuICBwYWRkaW5nOiA2cHggMTZweDtcbiAgYm9yZGVyLXJhZGl1czogOHB4O1xuICBib3gtc2hhZG93OiBpbnNldCAwIDFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjA4KTtcbn1cblxuLyogQWxhcm0gSW5kaWNhdG9yICovXG4uYWxhcm0taW5kaWNhdG9yIHtcbiAgbWFyZ2luLXRvcDogMTJweDtcbiAgcGFkZGluZzogMTBweCAxNnB4O1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjZmZmM2NkLCAjZmZlYWE3KTtcbiAgYm9yZGVyLXJhZGl1czogMTBweDtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiAxMHB4O1xuICBib3gtc2hhZG93OiAwIDJweCA0cHggcmdiYSgwLCAwLCAwLCAwLjEpO1xufVxuXG4uYWxhcm0taWNvbiB7XG4gIGZvbnQtc2l6ZTogMTZweDtcbn1cblxuLmFsYXJtLXRpbWUge1xuICBmb250LWZhbWlseTogJ1JvYm90byBDb25kZW5zZWQnLCBzYW5zLXNlcmlmO1xuICBmb250LXNpemU6IDE2cHg7XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIGNvbG9yOiAjODU2NDA0O1xuICBmbGV4OiAxO1xufVxuXG4uYWxhcm0tY2xvc2Uge1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGZvbnQtc2l6ZTogMThweDtcbiAgY29sb3I6ICM4NTY0MDQ7XG4gIG9wYWNpdHk6IDAuNztcblxuICAmOmhvdmVyIHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG59XG5cbi8qIEFsYXJtIERpYWxvZyAqL1xuLmFsYXJtLW92ZXJsYXkge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgcmlnaHQ6IDA7XG4gIGJvdHRvbTogMDtcbiAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjUpO1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgei1pbmRleDogMTAwMDtcbn1cblxuLmFsYXJtLWRpYWxvZyB7XG4gIGJhY2tncm91bmQ6ICNmZmZmZmY7XG4gIGJvcmRlci1yYWRpdXM6IDE2cHg7XG4gIHBhZGRpbmc6IDI4cHggMzJweDtcbiAgYm94LXNoYWRvdzogMCAxMHB4IDQwcHggcmdiYSgwLCAwLCAwLCAwLjMpO1xuICBtaW4td2lkdGg6IDMwMHB4O1xuXG4gIGgzIHtcbiAgICBmb250LWZhbWlseTogJ1JvYm90bycsIHNhbnMtc2VyaWY7XG4gICAgZm9udC1zaXplOiAyMHB4O1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgY29sb3I6ICMxYTFhMWE7XG4gICAgbWFyZ2luOiAwIDAgMjBweCAwO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgfVxufVxuXG4uYWxhcm0taW5wdXRzIHtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGdhcDogMTJweDtcbiAgbWFyZ2luLWJvdHRvbTogMjRweDtcblxuICBzcGFuIHtcbiAgICBmb250LXNpemU6IDI0cHg7XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICBjb2xvcjogIzMzMztcbiAgfVxufVxuXG4uYWxhcm0taW5wdXQge1xuICB3aWR0aDogNzBweDtcbiAgcGFkZGluZzogMTJweDtcbiAgZm9udC1mYW1pbHk6ICdSb2JvdG8gQ29uZGVuc2VkJywgc2Fucy1zZXJpZjtcbiAgZm9udC1zaXplOiAyNHB4O1xuICBmb250LXdlaWdodDogNzAwO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGJvcmRlcjogMnB4IHNvbGlkICNkZGQ7XG4gIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgb3V0bGluZTogbm9uZTtcblxuICAmOmZvY3VzIHtcbiAgICBib3JkZXItY29sb3I6ICMyOTYyRkY7XG4gIH1cbn1cblxuLmFsYXJtLWFjdGlvbnMge1xuICBkaXNwbGF5OiBmbGV4O1xuICBnYXA6IDEycHg7XG59XG5cbi5hbGFybS1idG4ge1xuICBmbGV4OiAxO1xuICBwYWRkaW5nOiAxMnB4IDI0cHg7XG4gIGZvbnQtZmFtaWx5OiAnUm9ib3RvJywgc2Fucy1zZXJpZjtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBmb250LXdlaWdodDogNjAwO1xuICBib3JkZXI6IG5vbmU7XG4gIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICB0cmFuc2l0aW9uOiBhbGwgMC4ycztcbiAgYmFja2dyb3VuZDogI2U5ZWNlZjtcbiAgY29sb3I6ICMzMzM7XG5cbiAgJi5wcmltYXJ5IHtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjMjk2MkZGLCAjMUU4OEU1KTtcbiAgICBjb2xvcjogI2ZmZmZmZjtcbiAgfVxuXG4gICY6aG92ZXIge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTtcbiAgICBib3gtc2hhZG93OiAwIDRweCAxMnB4IHJnYmEoMCwgMCwgMCwgMC4xNSk7XG4gIH1cblxuICAmOmFjdGl2ZSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xuICB9XG59XG5cbi8qIERhcmsgTW9kZSBTdXBwb3J0ICovXG4udGhlbWUtLWRhcmsge1xuICAucmV0cm8tY2xvY2stY29udGFpbmVyIHtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTQ1ZGVnLCAjMmEyZTMzLCAjMWUyMjI3KTtcbiAgICBib3gtc2hhZG93OlxuICAgICAgMCAxNXB4IDQwcHggcmdiYSgwLCAwLCAwLCAwLjUpLFxuICAgICAgMCA1cHggMTVweCByZ2JhKDAsIDAsIDAsIDAuNCk7XG4gIH1cblxuICAuYnJhbmQtbG9nbyB7XG4gICAgY29sb3I6ICNlMGUwZTA7XG4gIH1cblxuICAuYnJhbmQtc3VidGl0bGUge1xuICAgIGNvbG9yOiAjOTk5O1xuICB9XG5cbiAgLmNvbnRyb2wtYnRuIHtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTQ1ZGVnLCAjM2EzZTQzLCAjMmEyZTMzKTtcbiAgfVxuXG4gIC5idG4tbGFiZWwge1xuICAgIGNvbG9yOiAjYWFhO1xuICB9XG5cbiAgLnN0YXRzLXBhbmVsIHtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjMWExZTIzLCAjMjUyYTMwKTtcbiAgfVxuXG4gIC5zdGF0LWxhYmVsIHtcbiAgICBjb2xvcjogIzk5OTtcbiAgfVxuXG4gIC5zdGF0LXZhbHVlIHtcbiAgICBjb2xvcjogI2UwZTBlMDtcbiAgfVxuXG4gIC5zZWN0aW9uLWxhYmVsIHtcbiAgICBjb2xvcjogIzk5OTtcbiAgfVxuXG4gIC5mbGlwLWNhcmQsXG4gIC5jbG9jay1zZWN0aW9uIHtcbiAgICBiYWNrZ3JvdW5kOiAjMWExZTIzO1xuICAgIGJveC1zaGFkb3c6XG4gICAgICBpbnNldCAwIDNweCA2cHggcmdiYSgwLCAwLCAwLCAwLjQpLFxuICAgICAgMCAycHggNHB4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wMik7XG4gIH1cblxuICAuY2FyZC10b3AsXG4gIC5jYXJkLWJvdHRvbSB7XG4gICAgY29sb3I6ICNlMGUwZTA7XG4gIH1cblxuICAubWFya2VyLWRpYW1vbmQge1xuICAgIGJhY2tncm91bmQ6ICNkMGQwZDA7XG4gIH1cblxuICAuaG91ci1oYW5kLFxuICAubWludXRlLWhhbmQge1xuICAgIGJhY2tncm91bmQ6ICNlMGUwZTA7XG4gIH1cblxuICAuY2VudGVyLWNhcCB7XG4gICAgYmFja2dyb3VuZDogI2UwZTBlMDtcbiAgICBib3JkZXItY29sb3I6ICMxYTFlMjM7XG4gIH1cblxuICAucXVhcnR6LWxhYmVsIHtcbiAgICBjb2xvcjogIzc3NztcbiAgfVxuXG4gIC5zZXNzaW9uLWJhciB7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgIzJhMmUzMywgIzFlMjIyNyk7XG4gIH1cblxuICAuc2Vzc2lvbi10ZXh0IHtcbiAgICBjb2xvcjogI2FhYTtcbiAgfVxuXG4gIC5zZXNzaW9uLXRpbWUge1xuICAgIGNvbG9yOiAjZTBlMGUwO1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC40KTtcbiAgfVxuXG4gIC5hbGFybS1kaWFsb2cge1xuICAgIGJhY2tncm91bmQ6ICMyYTJlMzM7XG5cbiAgICBoMyB7XG4gICAgICBjb2xvcjogI2UwZTBlMDtcbiAgICB9XG4gIH1cblxuICAuYWxhcm0taW5wdXQge1xuICAgIGJhY2tncm91bmQ6ICMxYTFlMjM7XG4gICAgYm9yZGVyLWNvbG9yOiAjM2EzZTQzO1xuICAgIGNvbG9yOiAjZTBlMGUwO1xuICB9XG5cbiAgLmFsYXJtLWJ0biB7XG4gICAgYmFja2dyb3VuZDogIzNhM2U0MztcbiAgICBjb2xvcjogI2UwZTBlMDtcbiAgfVxufVxuXG4vKiBSZXNwb25zaXZlICovXG5AbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHtcbiAgLnJldHJvLWNsb2NrLWNvbnRhaW5lciB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgcGFkZGluZzogMjRweCAyMHB4O1xuICB9XG5cbiAgLmRpc3BsYXktZ3JpZCB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMWZyO1xuICAgIGdhcDogMTRweDtcbiAgfVxuXG4gIC5jbG9jay1zZWN0aW9uIHtcbiAgICBncmlkLWNvbHVtbjogMSAvIC0xO1xuICAgIGhlaWdodDogMjAwcHg7XG4gIH1cblxuICAuY29udHJvbC1idXR0b25zIHtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG4gIH1cblxuICAuY29udHJvbC1idG4ge1xuICAgIGZsZXg6IDEgMSAzMCU7XG4gIH1cbn1cbiIsIjx0ZW1wbGF0ZT5cbiAgPGRpdj5cbiAgICA8di1saXN0IGRlbnNlPlxuICAgICAgPHYtbGlzdC1ncm91cFxuICAgICAgICA6dmFsdWU9XCJ0cnVlXCJcbiAgICAgICAgdi1mb3I9XCIoY29udHJvbGxlciwgaSkgaW4gdmlzaWJsZUNvbnRyb2xsZXJzXCJcbiAgICAgICAgOmtleT1cImBjb250cm9sbGVyLSR7aX1gXCJcbiAgICAgICAgbm8tYWN0aW9uXG4gICAgICAgIGNsYXNzPVwibWItMVwiXG4gICAgICA+XG4gICAgICAgIDx0ZW1wbGF0ZSAjYWN0aXZhdG9yPlxuICAgICAgICAgIDx2LWxpc3QtaXRlbT5cbiAgICAgICAgICAgIDx2LWljb24gY29sb3I9XCJwcmltYXJ5XCIgc3RhcnQ+bWRpLXRhYmxlLWNvZzwvdi1pY29uPlxuICAgICAgICAgICAgPHYtbGlzdC1pdGVtLXRpdGxlIGNsYXNzPVwiZm9udC13ZWlnaHQtYm9sZCB0ZXh0LXByaW1hcnlcIj5cbiAgICAgICAgICAgICAge3sgJHQoY29udHJvbGxlcikgfX1cbiAgICAgICAgICAgIDwvdi1saXN0LWl0ZW0tdGl0bGU+XG4gICAgICAgICAgPC92LWxpc3QtaXRlbT5cbiAgICAgICAgPC90ZW1wbGF0ZT5cblxuICAgICAgICA8dGFibGUtc2V0dGluZ3MtZHJhd2VyIDpjb250cm9sbGVyX3Jvb3Q9XCJjb250cm9sbGVyXCIgLz5cbiAgICAgIDwvdi1saXN0LWdyb3VwPlxuICAgIDwvdi1saXN0PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG5leHBvcnQgZGVmYXVsdCB7XG4gIGNvbXB1dGVkOiB7XG4gICAgY29ubmVjdGUoKSB7XG4gICAgICByZXR1cm4gdGhpcy4kc3RvcmUuZ2V0dGVyc1tcInNlY3VyaXR5L2Nvbm5lY3RlXCJdO1xuICAgIH0sXG4gICAgY29udHJvbGxlcnMoKSB7XG4gICAgICByZXR1cm4gdGhpcy4kc3RvcmUuc3RhdGUuc2hvd19kYXRhLm5hbWVzY29udHJvbGxlcnM7XG4gICAgfSxcblxuICAgIC8vIOKchSDZgdmC2LcgY29udHJvbGxlcnMg2KfZhNiq2Yog2YrYrNioINi52LHYttmH2KdcbiAgICB2aXNpYmxlQ29udHJvbGxlcnMoKSB7XG4gICAgICBpZiAoIXRoaXMuY29ubmVjdGUgfHwgdGhpcy4kcm91dGUubmFtZSA9PT0gXCJfZGFzaGJvYXJkXCIpIHJldHVybiBbXTtcblxuICAgICAgcmV0dXJuIHRoaXMuY29udHJvbGxlcnMuZmlsdGVyKChjb250cm9sbGVyKSA9PiB7XG4gICAgICAgIGNvbnN0IGhlYWRlcnMgPSB0aGlzLmdldEhlYWRlcnMoY29udHJvbGxlcik7XG4gICAgICAgIHJldHVybiBoZWFkZXJzLmxlbmd0aCA+IDA7XG4gICAgICB9KTtcbiAgICB9LFxuICB9LFxuXG4gIG1ldGhvZHM6IHtcbiAgICBnZXRIZWFkZXJzKGNvbnRyb2xsZXIpIHtcbiAgICAgIGNvbnN0IGV4cGFuZGVkID0gdGhpcy4kc3RvcmUuZ2V0dGVyc1tcInNob3dfZGF0YS9nX2V4cGFuZGVkXCJdKHtcbiAgICAgICAgY29udHJvbGxlcl9yb290OiBjb250cm9sbGVyLFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IG5hbWVzZXhwYW5kZWQgPSBPYmplY3QudmFsdWVzKGV4cGFuZGVkKS5tYXAoXG4gICAgICAgIChlKSA9PiBlLmNvbnRyb2xsZXJfYXR0YWNoXG4gICAgICApO1xuXG4gICAgICByZXR1cm4gdGhpcy4kc3RvcmUuZ2V0dGVyc1tcInNob3dfZGF0YS9nX2hlYWRlcnNcIl0oe1xuICAgICAgICBjb250cm9sbGVyX3Jvb3Q6IGNvbnRyb2xsZXIsXG4gICAgICAgIG5hbWVzZXhwYW5kZWQsXG4gICAgICAgIG5vdGFmZmljaGU6IFtdLFxuICAgICAgICBuYW1lX2lucHV0X2ZpbGVzOiBbXSxcbiAgICAgIH0pO1xuICAgIH0sXG4gIH0sXG59O1xuPC9zY3JpcHQ+XG5cbjxzdHlsZSBzY29wZWQ+XG4udi1saXN0LWl0ZW0tdGl0bGUge1xuICBmb250LXNpemU6IDE1cHg7XG59XG48L3N0eWxlPlxuIiwiXG4uZWxlZ2FudC1kcmF3ZXIge1xuICA6ZGVlcCgudi1uYXZpZ2F0aW9uLWRyYXdlcl9fY29udGVudCkge1xuICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgb3ZlcmZsb3cteDogaGlkZGVuO1xuXG4gICAgLyogQ3VzdG9tIFNjcm9sbGJhciAqL1xuICAgICY6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgICAgIHdpZHRoOiA2cHg7XG4gICAgfVxuXG4gICAgJjo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2sge1xuICAgICAgYmFja2dyb3VuZDogI2YxZjFmMTtcbiAgICB9XG5cbiAgICAmOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7XG4gICAgICBiYWNrZ3JvdW5kOiAjODg4O1xuICAgICAgYm9yZGVyLXJhZGl1czogM3B4O1xuXG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogIzU1NTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLyogSGVhZGVyIHdpdGggR3JhZGllbnQgKi9cbi5kcmF3ZXItaGVhZGVyIHtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgIzY2N2VlYSAwJSwgIzc2NGJhMiAxMDAlKTtcbiAgcGFkZGluZzogMjRweCAxNnB4O1xuICBtYXJnaW4tYm90dG9tOiA4cHg7XG4gIGJveC1zaGFkb3c6IDAgNHB4IDZweCByZ2JhKDAsIDAsIDAsIDAuMSk7XG5cbiAgLnVzZXItcHJvZmlsZS1pdGVtIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMnMgZWFzZTtcblxuICAgICY6aG92ZXIge1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpO1xuICAgIH1cblxuICAgIC52LWxpc3QtaXRlbV9fYXZhdGFyIHtcbiAgICAgIGJvcmRlcjogM3B4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zKTtcbiAgICB9XG4gIH1cbn1cblxuLyogTmF2aWdhdGlvbiBJdGVtcyAqL1xuLm5hdi1pdGVtIHtcbiAgYm9yZGVyLXJhZGl1czogOHB4O1xuICBtYXJnaW46IDJweCA4cHg7XG4gIHRyYW5zaXRpb246IGFsbCAwLjNzIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO1xuXG4gICY6aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4wNCk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDRweCk7XG4gIH1cblxuICAmLnYtbGlzdC1pdGVtLS1hY3RpdmUge1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgcmdiYSgxMDIsIDEyNiwgMjM0LCAwLjEpIDAlLCByZ2JhKDExOCwgNzUsIDE2MiwgMC4xKSAxMDAlKTtcbiAgICBib3JkZXItbGVmdDogNHB4IHNvbGlkICM2NjdlZWE7XG5cbiAgICAmOjpiZWZvcmUge1xuICAgICAgb3BhY2l0eTogMDtcbiAgICB9XG4gIH1cbn1cblxuLyogTWVudSBHcm91cHMgKi9cbi5tZW51LWdyb3VwIHtcbiAgOmRlZXAoLnYtbGlzdC1ncm91cF9faGVhZGVyKSB7XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgIG1hcmdpbjogMnB4IDhweDtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMDMpO1xuICAgIH1cblxuICAgIC52LWxpc3QtaXRlbV9faWNvbiB7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDE2cHggIWltcG9ydGFudDtcbiAgICB9XG4gIH1cblxuICA6ZGVlcCgudi1saXN0LWdyb3VwX19pdGVtcykge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4wMik7XG4gIH1cbn1cblxuLyogU3ViIE5hdmlnYXRpb24gSXRlbXMgKi9cbi5zdWItbmF2LWl0ZW0ge1xuICBib3JkZXItcmFkaXVzOiA4cHg7XG4gIG1hcmdpbjogMnB4IDhweDtcbiAgbWluLWhlaWdodDogMzZweCAhaW1wb3J0YW50O1xuICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtcblxuICAmOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMDUpO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCg0cHgpO1xuXG4gICAgLnYtaWNvbiB7XG4gICAgICBjb2xvcjogIzY2N2VlYSAhaW1wb3J0YW50O1xuICAgIH1cbiAgfVxuXG4gICYudi1saXN0LWl0ZW0tLWFjdGl2ZSB7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDkwZGVnLCByZ2JhKDEwMiwgMTI2LCAyMzQsIDAuMTUpIDAlLCByZ2JhKDExOCwgNzUsIDE2MiwgMC4xNSkgMTAwJSk7XG4gICAgYm9yZGVyLWxlZnQ6IDNweCBzb2xpZCAjNjY3ZWVhO1xuXG4gICAgLnYtbGlzdC1pdGVtX190aXRsZSB7XG4gICAgICBjb2xvcjogIzY2N2VlYTtcbiAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgfVxuXG4gICAgJjo6YmVmb3JlIHtcbiAgICAgIG9wYWNpdHk6IDA7XG4gICAgfVxuICB9XG59XG5cbi8qIERpdmlkZXJzICovXG4udi1kaXZpZGVyIHtcbiAgYm9yZGVyLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMDgpO1xufVxuXG4vKiBTdWJoZWFkZXJzICovXG4udi1zdWJoZWFkZXIge1xuICBmb250LXNpemU6IDExcHg7XG4gIGxldHRlci1zcGFjaW5nOiAxcHg7XG4gIG1hcmdpbi10b3A6IDhweDtcbn1cblxuLyogRGFyayBNb2RlIFN1cHBvcnQgKi9cbi50aGVtZS0tZGFyayB7XG4gIC5kcmF3ZXItaGVhZGVyIHtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjNGE1NTY4IDAlLCAjMmQzNzQ4IDEwMCUpO1xuICB9XG5cbiAgLm5hdi1pdGVtIHtcbiAgICAmOmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNSk7XG4gICAgfVxuXG4gICAgJi52LWxpc3QtaXRlbS0tYWN0aXZlIHtcbiAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgcmdiYSgxMDIsIDEyNiwgMjM0LCAwLjIpIDAlLCByZ2JhKDExOCwgNzUsIDE2MiwgMC4yKSAxMDAlKTtcbiAgICB9XG4gIH1cblxuICAuc3ViLW5hdi1pdGVtIHtcbiAgICAmOmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOCk7XG4gICAgfVxuXG4gICAgJi52LWxpc3QtaXRlbS0tYWN0aXZlIHtcbiAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgcmdiYSgxMDIsIDEyNiwgMjM0LCAwLjI1KSAwJSwgcmdiYSgxMTgsIDc1LCAxNjIsIDAuMjUpIDEwMCUpO1xuICAgIH1cbiAgfVxuXG4gIC5tZW51LWdyb3VwIHtcbiAgICA6ZGVlcCgudi1saXN0LWdyb3VwX19oZWFkZXI6aG92ZXIpIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNCk7XG4gICAgfVxuXG4gICAgOmRlZXAoLnYtbGlzdC1ncm91cF9faXRlbXMpIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wMik7XG4gICAgfVxuICB9XG5cbiAgLnYtZGl2aWRlciB7XG4gICAgYm9yZGVyLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTIpO1xuICB9XG59XG4iLCI8dGVtcGxhdGU+XG4gIDx2LW5hdmlnYXRpb24tZHJhd2VyIGFwcCB2LW1vZGVsPVwiZHJhd2VyVmFsdWVcIiB0ZW1wb3JhcnkgcmlnaHQgd2lkdGg9XCIzMjBweFwiPlxuICAgIDx2LWxpc3Q+XG4gICAgICA8di1saXN0LWl0ZW0gQGNsaWNrLnN0b3A9XCJ0b2dnbGVkcmF3ZXJfcmlnaHQoKVwiPlxuICAgICAgICA8di1saXN0LWl0ZW0tYXZhdGFyPlxuICAgICAgICAgIDx2LWltZyA6c3JjPVwibG9nb1wiPjwvdi1pbWc+XG4gICAgICAgIDwvdi1saXN0LWl0ZW0tYXZhdGFyPlxuXG4gICAgICAgIDx2LWxpc3QtaXRlbS10aXRsZT57eyBpbmZvX3VzZXJbXCJlbWFpbFwiXSB9fTwvdi1saXN0LWl0ZW0tdGl0bGU+XG4gICAgICA8L3YtbGlzdC1pdGVtPlxuXG4gICAgICA8dGhlbWUtZHJhd2VyLXRvZ2dsZWRhcmsgLz5cbiAgICAgIDxicj48L2JyPlxuICAgICAgPHRoZW1lLWRyYXdlci1sYW5nIC8+XG4gICAgICA8dGhlbWUtZHJhd2VyLWNvbnRyb2xsZXJzIC8+XG4gICAgICA8dGhlbWUtZHJhd2VyLW11bHRpc2VsZWN0IC8+XG4gICAgICBcbiAgICAgIDx2LWxpc3QtaXRlbSB2LWlmPVwiaXNhZG1pbiAmJiBjb25uZWN0ZSAmJiAkcm91dGUubmFtZSA9PSAnX2Rhc2hib2FyZCdcIiA+XG4gICAgICAgIDx2LXRhYnMgdi1tb2RlbD1cInRhYnNcIiBmaXhlZC10YWJzPlxuICAgICAgICAgIDx2LXRhYnMtc2xpZGVyPjwvdi10YWJzLXNsaWRlcj5cblxuICAgICAgICAgIDwhLS0gPHYtdGFiIGhyZWY9XCIjbW9iaWxlLXRhYnMtNS0xXCIgY2xhc3M9XCJwcmltYXJ5LS10ZXh0XCI+XG4gICAgICAgICAgICA8di1pY29uPm1kaS1maWx0ZXItbWVudS1vdXRsaW5lPC92LWljb24+XG4gICAgICAgICAgPC92LXRhYj4gLS0+XG5cbiAgICAgICAgICA8di10YWIgaHJlZj1cIiNtb2JpbGUtdGFicy01LTJcIiBjbGFzcz1cInByaW1hcnktLXRleHRcIj5cbiAgICAgICAgICAgIDx2LWljb24+bWRpLW1hZ25pZnk8L3YtaWNvbj5cbiAgICAgICAgICA8L3YtdGFiPlxuXG4gICAgICAgICAgPHYtdGFiIGhyZWY9XCIjbW9iaWxlLXRhYnMtNS0zXCIgY2xhc3M9XCJwcmltYXJ5LS10ZXh0XCI+XG4gICAgICAgICAgICA8di1pY29uPm1kaS1maWxlLXRyZWU8L3YtaWNvbj5cbiAgICAgICAgICA8L3YtdGFiPlxuICAgICAgICA8L3YtdGFicz5cbiAgICAgIDwvdi1saXN0LWl0ZW0+XG4gICAgICA8di10YWJzLWl0ZW1zIHYtbW9kZWw9XCJ0YWJzXCIgdi1pZj1cImlzYWRtaW4gJiYgY29ubmVjdGUgJiYgJHJvdXRlLm5hbWUgPT0gJ19kYXNoYm9hcmQnXCI+XG4gICAgICAgIDwhLS0gPHYtdGFiLWl0ZW0gOnZhbHVlPVwiJ21vYmlsZS10YWJzLTUtMSdcIj5cbiAgICAgICAgICA8dGhlbWUtZHJhd2VyLXdpZGdldHMtYWxsd2lkZ2V0cyAvPlxuICAgICAgICA8L3YtdGFiLWl0ZW0+IC0tPlxuICAgICAgICA8di10YWItaXRlbSA6dmFsdWU9XCInbW9iaWxlLXRhYnMtNS0yJ1wiPlxuICAgICAgICAgIDx0aGVtZS1kcmF3ZXItd2lkZ2V0cy1hbGxsaXN0IC8+XG4gICAgICAgIDwvdi10YWItaXRlbT5cblxuICAgICAgICA8di10YWItaXRlbSA6dmFsdWU9XCInbW9iaWxlLXRhYnMtNS0zJ1wiPlxuICAgICAgICAgIDwhLS0gIC0tPlxuICAgICAgICAgIDx0aGVtZS1kcmF3ZXItd2lkZ2V0cy1jcm0gLz5cblxuICAgICAgICAgIDx0aGVtZS1kcmF3ZXItd2lkZ2V0cy10cmFuc2FjdGlvbnMgLz5cbiAgICAgICAgICA8dGhlbWUtZHJhd2VyLXdpZGdldHMtYWNoYXRzIC8+XG4gICAgICAgICAgPHRoZW1lLWRyYXdlci13aWRnZXRzLXZlbnRlcyAvPlxuICAgICAgICAgIDwhLS0gPHRoZW1lLWRyYXdlci13aWRnZXRzLXJlZ2xhZ2VzIC8+IC0tPlxuICAgICAgICAgIDwhLS0gLS0+XG4gICAgICAgICAgPHRoZW1lLWRyYXdlci13aWRnZXRzLXByb2R1aXQgLz5cbiAgICAgICAgICA8dGhlbWUtZHJhd2VyLXdpZGdldHMtdHJhamV0cyAvPlxuICAgICAgICA8L3YtdGFiLWl0ZW0+XG4gICAgICA8L3YtdGFicy1pdGVtcz5cbiAgICA8L3YtbGlzdD5cbiAgPC92LW5hdmlnYXRpb24tZHJhd2VyPlxuPC90ZW1wbGF0ZT5cblxuXG5cbjxzY3JpcHQ+XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdGFiczogbnVsbCxcbiAgICB9O1xuICB9LFxuICBtZXRob2RzOiB7XG4gICAgdG9nZ2xlZHJhd2VyX3JpZ2h0KCkge1xuICAgICAgdGhpcy4kc3RvcmUuY29tbWl0KFwidGhlbWUvdG9nZ2xlZHJhd2VyX3JpZ2h0XCIpO1xuICAgIH0sXG4gIH0sXG5cbiAgY29tcHV0ZWQ6IHtcbiAgICBjb25uZWN0ZSgpIHtcbiAgICAgIHJldHVybiB0aGlzLiRzdG9yZS5nZXR0ZXJzW1wic2VjdXJpdHkvY29ubmVjdGVcIl07XG4gICAgfSxcbiAgICBpc2FkbWluKCkge1xuICAgICAgcmV0dXJuIHRoaXMuJHN0b3JlLmdldHRlcnNbXCJzZWN1cml0eS9pc0FkbWluXCJdO1xuICAgIH0sXG4gICAgaW5mb191c2VyKCkge1xuICAgICAgcmV0dXJuIHRoaXMuJHN0b3JlLmdldHRlcnNbXCJzZWN1cml0eS91c2VyXCJdO1xuICAgIH0sXG4gICAgICAgIEJhc2VfdXJsKCl7cmV0dXJuIHRoaXMuJHN0b3JlLnN0YXRlLkJhc2VfdXJsfSxcbiAgICBsb2dvKCkge1xuICAgICAgcmV0dXJuIHRoaXMuQmFzZV91cmwrdGhpcy4kc3RvcmUuZ2V0dGVyc1tcInNlY3VyaXR5L2xvZ29cIl07XG4gICAgfSxcblxuICAgIGRyYXdlclZhbHVlOiB7XG4gICAgICBnZXQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiRzdG9yZS5nZXR0ZXJzW1widGhlbWUvZHJhd2VyX3JpZ2h0XCJdO1xuICAgICAgfSxcbiAgICAgIHNldCh2YWwpIHtcbiAgICAgICAgdGhpcy4kc3RvcmUuY29tbWl0KFwidGhlbWUvc2V0X2RyYXdlcl9yaWdodFwiLCB2YWwpO1xuICAgICAgfSxcbiAgICB9LFxuICB9LFxufTtcbjwvc2NyaXB0PlxuXG5cblxuXG5cblxuXG48c3R5bGUgID5cbmRpdi52LWxpc3QtZ3JvdXBfX2l0ZW1zIGRpdi52LWlucHV0X19zbG90IC5tZGktZXllIHtcbiAgY29sb3I6ICMwMjc3YmQgIWltcG9ydGFudCA7XG59XG5cbmRpdi52LW5hdmlnYXRpb24tZHJhd2VyX19jb250ZW50IGRpdi52LWlucHV0X19zbG90IC5tZGktZXllLW9mZiB7XG4gIGNvbG9yOiAjNzU3NTc1ICFpbXBvcnRhbnQgO1xufVxuPC9zdHlsZT5cbiIsIjx0ZW1wbGF0ZT5cbiAgPHYtbGlzdC1pdGVtIGNsYXNzPVwidGhlbWUtdG9nZ2xlLWl0ZW1cIiBAY2xpY2s9XCJ0b2dnbGVkYXJrXCI+XG4gICAgPHYtaWNvbiBjbGFzcz1cIm1yLTNcIiBzaXplPVwiMjJcIj5cbiAgICAgIHt7IGRhcmsgPyAnbWRpLXdlYXRoZXItbmlnaHQnIDogJ21kaS13ZWF0aGVyLXN1bm55JyB9fVxuICAgIDwvdi1pY29uPlxuXG5cblxuXG5cbiAgICA8di1zd2l0Y2ggOmxhYmVsPVwiZGFyayA/ICdNb2RlIFNvbWJyZScgOiAnTW9kZSBDbGFpcidcIiBpbnNldCA6aW5wdXQtdmFsdWU9XCJkYXJrXCIgY29sb3I9XCJkZWVwLXB1cnBsZSBhY2NlbnQtNFwiXG4gICAgICBjbGFzcz1cInN3aXRjaFwiIGhpZGUtZGV0YWlscyAvPlxuICA8L3YtbGlzdC1pdGVtPlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdD5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgY29tcHV0ZWQ6IHtcbiAgICBkYXJrKCkge1xuICAgICAgcmV0dXJuIHRoaXMuJHN0b3JlLmdldHRlcnNbXCJ0aGVtZS9kYXJrXCJdO1xuICAgIH0sXG4gIH0sXG5cbiAgbWV0aG9kczoge1xuICAgIHRvZ2dsZWRhcmsoKSB7XG4gICAgICB0aGlzLiRzdG9yZS5jb21taXQoXCJ0aGVtZS90b2dnbGVkYXJrXCIpO1xuICAgICAgdGhpcy4kdnVldGlmeS50aGVtZS5kYXJrID0gdGhpcy5kYXJrO1xuICAgIH0sXG4gIH0sXG4gIG1vdW50ZWQoKSB7XG4gICAgLy8gQXBwbHkgc2F2ZWQgZGFyayBtb2RlIHByZWZlcmVuY2UgdG8gVnVldGlmeSBvbiBtb3VudFxuICAgIHRoaXMuJHZ1ZXRpZnkudGhlbWUuZGFyayA9IHRoaXMuZGFyaztcbiAgfSxcbn07XG48L3NjcmlwdD5cblxuPHN0eWxlIHNjb3BlZD5cbi50aGVtZS10b2dnbGUtaXRlbSB7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjI1cztcblxuICAvKiDYrdis2YUg2LXYutmK2LEgKi9cbn1cblxuLnRoZW1lLXRvZ2dsZS1pdGVtOmhvdmVyIHtcbiAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjA2KTtcbn1cblxuXG5cbi5zd2l0Y2gge1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgLyog2K3YqtmJINmE2Kcg2YrZhdmG2Lkg2KfZhNi22LrYtyDYudmE2Ykg2KfZhNi52YbYtdixICovXG59XG48L3N0eWxlPlxuIiwiPHRlbXBsYXRlPlxuICA8Y2FyZC1jYXJkXG4gICAgOmNsb3NlPVwiY2xvc2VcIlxuICAgIEBjbG9zZT1cImNsb3NlZXZlbnRcIlxuICAgIGljb249XCJtZGktY2FsZW5kYXItY2hlY2stb3V0bGluZVwiXG4gICAgY29sb3I9XCJvcmFuZ2VcIlxuICAgIDp0aXRsZT1cIiR0KCdlbnRyZXBvdEJvbnNhY2hhdHMnKVwiXG4gICAgY2xhc3M9XCJweC01IHB5LTNcIlxuICA+XG4gICAgPHYtcm93IGNsYXNzPVwiZmlsbC1oZWlnaHRcIj5cbiAgICAgIDx2LWNvbD5cbiAgICAgICAgPHYtc2hlZXQ+XG4gICAgICAgICAgPHYtdG9vbGJhci10aXRsZSB2LWlmPVwiJHJlZnMuY2FsZW5kYXJcIj5cbiAgICAgICAgICAgIHt7ICRyZWZzLmNhbGVuZGFyLnRpdGxlIH19XG4gICAgICAgICAgPC92LXRvb2xiYXItdGl0bGU+XG4gICAgICAgIDwvdi1zaGVldD5cbiAgICAgICAgPHYtc2hlZXQgaGVpZ2h0PVwiODBcIj5cbiAgICAgICAgICA8di10b29sYmFyIGZsYXQ+XG4gICAgICAgICAgICA8di1idG5cbiAgICAgICAgICAgICA6bG9hZGluZz1cImxvYWRpbmdcIlxuICAgICAgICAgICAgICBvdXRsaW5lZFxuICAgICAgICAgICAgICBjbGFzcz1cIm1yLTRcIlxuICAgICAgICAgICAgICBjb2xvcj1cImdyZXkgZGFya2VuLTJcIlxuICAgICAgICAgICAgICBAY2xpY2s9XCJzZXRUb2RheVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7ICR0KFwiYXVqb3VyZCdodWlcIikgfX1cbiAgICAgICAgICAgIDwvdi1idG4+XG4gICAgICAgICAgICA8di1idG4gZmFiIHRleHQgc21hbGwgY29sb3I9XCJncmV5IGRhcmtlbi0yXCIgQGNsaWNrPVwicHJldlwiPlxuICAgICAgICAgICAgICA8di1pY29uIHNtYWxsPiBtZGktY2hldnJvbi1sZWZ0IDwvdi1pY29uPlxuICAgICAgICAgICAgPC92LWJ0bj5cbiAgICAgICAgICAgIDx2LWJ0biBmYWIgdGV4dCBzbWFsbCBjb2xvcj1cImdyZXkgZGFya2VuLTJcIiBAY2xpY2s9XCJuZXh0XCI+XG4gICAgICAgICAgICAgIDx2LWljb24gc21hbGw+IG1kaS1jaGV2cm9uLXJpZ2h0IDwvdi1pY29uPlxuICAgICAgICAgICAgPC92LWJ0bj5cblxuICAgICAgICAgICAgPHYtc3BhY2VyPjwvdi1zcGFjZXI+XG5cbiAgICAgICAgICAgIDx2LWF1dG9jb21wbGV0ZVxuICAgICAgICAgICAgIDpsb2FkaW5nPVwibG9hZGluZ1wiXG4gICAgICAgICAgICAgIG11bHRpcGxlXG4gICAgICAgICAgICAgIDpjbGVhcmFibGU9XCJ0cnVlXCJcbiAgICAgICAgICAgICAgbGFiZWw9XCJlbnRyZXBvdFwiXG4gICAgICAgICAgICAgIEBjaGFuZ2U9XCJlbnRyZXBvdENoYW5nZVwiXG4gICAgICAgICAgICAgIDppdGVtcz1cImVudHJlcG90SXRlbXNcIlxuICAgICAgICAgICAgICBpdGVtLXRleHQ9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgaXRlbS12YWx1ZT1cInZhbHVlXCJcbiAgICAgICAgICAgICAgOm1lc3NhZ2VzPVwiJyAgVG90YWxfVFRDIDogICcgKyBUb3RhbF9UVEMgKyAnIERIJ1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L3YtYXV0b2NvbXBsZXRlPlxuICAgICAgICAgICAgPHYtc3BhY2VyPjwvdi1zcGFjZXI+XG4gICAgICAgICAgICA8di1tZW51IGJvdHRvbSByaWdodD5cbiAgICAgICAgICAgICAgPHRlbXBsYXRlIHYtc2xvdDphY3RpdmF0b3I9XCJ7IG9uLCBhdHRycyB9XCI+XG4gICAgICAgICAgICAgICAgPHYtYnRuIG91dGxpbmVkIGNvbG9yPVwiZ3JleSBkYXJrZW4tMlwiIHYtYmluZD1cImF0dHJzXCIgdi1vbj1cIm9uXCI+XG4gICAgICAgICAgICAgICAgICA8c3Bhbj57eyB0eXBlVG9MYWJlbFt0eXBlXSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDx2LWljb24gcmlnaHQ+IG1kaS1tZW51LWRvd24gPC92LWljb24+XG4gICAgICAgICAgICAgICAgPC92LWJ0bj5cbiAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgPHYtbGlzdD5cbiAgICAgICAgICAgICAgICA8di1saXN0LWl0ZW0gQGNsaWNrPVwidHlwZSA9ICdkYXknXCI+XG4gICAgICAgICAgICAgICAgICA8di1saXN0LWl0ZW0tdGl0bGU+IHt7ICR0KFwiSm91clwiKSB9fSA8L3YtbGlzdC1pdGVtLXRpdGxlPlxuICAgICAgICAgICAgICAgIDwvdi1saXN0LWl0ZW0+XG5cbiAgICAgICAgICAgICAgICA8di1saXN0LWl0ZW0gQGNsaWNrPVwidHlwZSA9ICdtb250aCdcIj5cbiAgICAgICAgICAgICAgICAgIDx2LWxpc3QtaXRlbS10aXRsZT4ge3sgJHQoXCJNb2lzXCIpIH19IDwvdi1saXN0LWl0ZW0tdGl0bGU+XG4gICAgICAgICAgICAgICAgPC92LWxpc3QtaXRlbT5cbiAgICAgICAgICAgICAgPC92LWxpc3Q+XG4gICAgICAgICAgICA8L3YtbWVudT5cbiAgICAgICAgICA8L3YtdG9vbGJhcj5cbiAgICAgICAgPC92LXNoZWV0PlxuXG4gICAgICAgIDx2LXNoZWV0IGhlaWdodD1cIjYwMFwiPlxuICAgICAgICAgIDx2LWNhbGVuZGFyXG4gICAgICAgICAgICA6bG9jYWxlPVwiJHQoJ2xvY2FsZScpXCJcbiAgICAgICAgICAgIHJlZj1cImNhbGVuZGFyXCJcbiAgICAgICAgICAgIHYtbW9kZWw9XCJmb2N1c1wiXG4gICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgOmV2ZW50cz1cImV2ZW50c1wiXG4gICAgICAgICAgICA6ZXZlbnQtY29sb3I9XCJnZXRFdmVudENvbG9yXCJcbiAgICAgICAgICAgIDp0eXBlPVwidHlwZVwiXG4gICAgICAgICAgICBAY2xpY2s6ZXZlbnQ9XCJzaG93RXZlbnRcIlxuICAgICAgICAgICAgQGNsaWNrOm1vcmU9XCJ2aWV3RGF5XCJcbiAgICAgICAgICAgIEBjbGljazpkYXRlPVwidmlld0RheVwiXG4gICAgICAgICAgICBAY2hhbmdlPVwidXBkYXRlUmFuZ2VcIlxuICAgICAgICAgID48L3YtY2FsZW5kYXI+XG5cbiAgICAgICAgICA8di1tZW51XG4gICAgICAgICAgICB2LW1vZGVsPVwic2VsZWN0ZWRPcGVuXCJcbiAgICAgICAgICAgIDpjbG9zZS1vbi1jb250ZW50LWNsaWNrPVwiZmFsc2VcIlxuICAgICAgICAgICAgOmFjdGl2YXRvcj1cInNlbGVjdGVkRWxlbWVudFwiXG4gICAgICAgICAgICBvZmZzZXQteFxuICAgICAgICAgID5cbiAgICAgICAgICAgIDx2LWNhcmQgY29sb3I9XCJncmV5IGxpZ2h0ZW4tNFwiIG1pbi13aWR0aD1cIjM1MHB4XCIgZmxhdD5cbiAgICAgICAgICAgICAgPHYtdG9vbGJhciA6Y29sb3I9XCJzZWxlY3RlZEV2ZW50LmNvbG9yXCIgZGFyaz5cbiAgICAgICAgICAgICAgICA8di1idG5cbiAgICAgICAgICAgICAgICAgIHYtaWY9XCJzZWxlY3RlZEV2ZW50Ll9pZF8gPiAwXCJcbiAgICAgICAgICAgICAgICAgIGljb25cbiAgICAgICAgICAgICAgICAgIEBjbGljaz1cInNob3dJdGVtKHNlbGVjdGVkRXZlbnQuX2lkXylcIlxuICAgICAgICAgICAgICAgICAgdi1zaG93PVwiaXNHcmFudGVkKCd2aWV3JylcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDx2LWljb24+bWRpLXZpZXctY2Fyb3VzZWw8L3YtaWNvbj5cbiAgICAgICAgICAgICAgICA8L3YtYnRuPlxuXG4gICAgICAgICAgICAgICAgPHYtdG9vbGJhci10aXRsZSB2LWh0bWw9XCJzZWxlY3RlZEV2ZW50Lm5hbWVcIj4gPC92LXRvb2xiYXItdGl0bGU+XG4gICAgICAgICAgICAgICAgPHYtc3BhY2VyPjwvdi1zcGFjZXI+XG5cbiAgICAgICAgICAgICAgICA8di1idG4gaWNvbiBAY2xpY2s9XCJzZWxlY3RlZE9wZW4gPSBmYWxzZVwiPlxuICAgICAgICAgICAgICAgICAgPHYtaWNvbj5tZGktY2xvc2U8L3YtaWNvbj5cbiAgICAgICAgICAgICAgICA8L3YtYnRuPlxuICAgICAgICAgICAgICA8L3YtdG9vbGJhcj5cbiAgICAgICAgICAgICAgPHYtY2FyZC10ZXh0PlxuICAgICAgICAgICAgICAgIDx2LXRvb2xiYXIgZmxhdD5cbiAgICAgICAgICAgICAgICAgIDx2LXRvb2xiYXItdGl0bGU+XG4gICAgICAgICAgICAgICAgICAgIHt7IHNlbGVjdGVkRXZlbnQuY2xpZW50XyB9fVxuICAgICAgICAgICAgICAgICAgPC92LXRvb2xiYXItdGl0bGU+XG5cbiAgICAgICAgICAgICAgICAgIDx2LXNwYWNlcj48L3Ytc3BhY2VyPlxuICAgICAgICAgICAgICAgICAgPHYtY2hpcCBjbGFzcz1cIm1hLTJcIiA6Y29sb3I9XCJzZWxlY3RlZEV2ZW50LmNvbG9yXCIgZGFyaz5cbiAgICAgICAgICAgICAgICAgICAge3sgc2VsZWN0ZWRFdmVudC5lbnRyZXBvdF8gfX1cbiAgICAgICAgICAgICAgICAgIDwvdi1jaGlwPlxuICAgICAgICAgICAgICAgIDwvdi10b29sYmFyPlxuXG4gICAgICAgICAgICAgICAgPHYtc2ltcGxlLXRhYmxlIGRlbnNlIGNvbG9yPVwiZ3JleSBsaWdodGVuLTRcIj5cbiAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6ZGVmYXVsdD5cbiAgICAgICAgICAgICAgICAgICAgPHRoZWFkPlxuICAgICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRleHQtbGVmdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAkdChzZWxlY3RlZEV2ZW50LnRyX3RhYmxlX1swXSkgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJ0ZXh0LWxlZnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJHQoc2VsZWN0ZWRFdmVudC50cl90YWJsZV9bMV0pIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+XG4gICAgICAgICAgICAgICAgICAgIDx0Ym9keT5cbiAgICAgICAgICAgICAgICAgICAgICA8dHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHYtZm9yPVwiaXRlbSBpbiBzZWxlY3RlZEV2ZW50LnRkX3RhYmxlX1wiXG4gICAgICAgICAgICAgICAgICAgICAgICA6a2V5PVwiaXRlbS5rZXlcIlxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyBpdGVtLmEgfX08L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7IGl0ZW0uYiB9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgPC90Ym9keT5cbiAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC92LXNpbXBsZS10YWJsZT5cblxuICAgICAgICAgICAgICAgIDxoNCByaWdodD5Nb250YW50IFRUQyA6IHt7IHNlbGVjdGVkRXZlbnQubW9udGFudFR0Y18gfX0gREg8L2g0PlxuICAgICAgICAgICAgICA8L3YtY2FyZC10ZXh0PlxuICAgICAgICAgICAgPC92LWNhcmQ+XG4gICAgICAgICAgPC92LW1lbnU+XG4gICAgICAgIDwvdi1zaGVldD5cbiAgICAgIDwvdi1jb2w+XG4gICAgPC92LXJvdz5cbiAgPC9jYXJkLWNhcmQ+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0PlxuaW1wb3J0IGF4aW9zIGZyb20gXCJheGlvc1wiO1xuXG5pbXBvcnQgdXRpbCBmcm9tIFwiQC91dGlsXCI7XG5cbmltcG9ydCB3aWRnZXRzTWl4aW4gZnJvbSBcIi4uL3dpZGdldHNNaXhpblwiO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIG1peGluczogW3dpZGdldHNNaXhpbl0sXG4gIGRhdGE6ICgpID0+ICh7XG4gICAgZW50cmVwb3RJdGVtczogW10sXG4gICAgY29udHJvbGxlcl9yb290OiBcImJvbnNhY2hhdHNcIixcbiAgICBmb2N1czogXCJcIixcbiAgICB0eXBlOiBcIm1vbnRoXCIsXG5cbiAgICBzZWxlY3RlZEV2ZW50OiB7fSxcbiAgICBzZWxlY3RlZEVsZW1lbnQ6IG51bGwsXG4gICAgc2VsZWN0ZWRPcGVuOiBmYWxzZSxcbiAgICBldmVudHNBbGw6IFtdLFxuICAgIGV2ZW50czogW10sXG4gICAgZXZlbnRzVFRDOiB7fSxcbiAgICBUb3RhbF9UVEM6IDAsXG4gICAgdHlwZVRvTGFiZWw6IHtcbiAgICAgIG1vbnRoOiBcIk1vaXNcIixcblxuICAgICAgZGF5OiBcIkpvdXJcIixcbiAgICB9LFxuICAgIG1pbjogMCxcbiAgICBtYXg6IDAsXG4gICAgc3RhcnRfZGF0ZTogMCxcbiAgICBlbmRfZGF0ZTogMCxcbiAgICBsb2FkaW5nOiBmYWxzZSxcbiAgfSksXG4gIG1vdW50ZWQoKSB7XG4gICAgdGhpcy4kcmVmcy5jYWxlbmRhci5jaGVja0NoYW5nZSgpO1xuICAgLy8gdGhpcy5zdGFydCgpO1xuICB9LFxuICBtZXRob2RzOiB7XG4gICAgdmlld0RheSh7IGRhdGUgfSkge1xuICAgICAgdGhpcy5mb2N1cyA9IGRhdGU7XG4gICAgICB0aGlzLnR5cGUgPSBcImRheVwiO1xuICAgIH0sXG4gICAgZ2V0RXZlbnRDb2xvcihldmVudCkge1xuICAgICAgcmV0dXJuIGV2ZW50LmNvbG9yO1xuICAgIH0sXG4gICAgc2V0VG9kYXkoKSB7XG4gICAgICB0aGlzLmZvY3VzID0gXCJcIjtcbiAgICB9LFxuICAgIHByZXYoKSB7XG4gICAgICB0aGlzLiRyZWZzLmNhbGVuZGFyLnByZXYoKTtcbiAgICB9LFxuICAgIG5leHQoKSB7XG4gICAgICB0aGlzLiRyZWZzLmNhbGVuZGFyLm5leHQoKTtcbiAgICB9LFxuXG4gICAgc2hvd0V2ZW50KHsgbmF0aXZlRXZlbnQsIGV2ZW50IH0pIHtcbiAgICAgIGNvbnN0IG9wZW4gPSAoKSA9PiB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRFdmVudCA9IGV2ZW50O1xuICAgICAgICB0aGlzLnNlbGVjdGVkRWxlbWVudCA9IG5hdGl2ZUV2ZW50LnRhcmdldDtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZE9wZW4gPSB0cnVlO1xuICAgICAgICB9LCAxMCk7XG4gICAgICB9O1xuXG4gICAgICBpZiAodGhpcy5zZWxlY3RlZE9wZW4pIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZE9wZW4gPSBmYWxzZTtcbiAgICAgICAgc2V0VGltZW91dChvcGVuLCAxMCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvcGVuKCk7XG4gICAgICB9XG5cbiAgICAgIG5hdGl2ZUV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH0sXG4gICAgdXBkYXRlUmFuZ2UoeyBzdGFydCwgZW5kIH0pIHtcbiAgICAgIGNvbnNvbGUubG9nKHN0YXJ0KTtcbiAgICAgIGNvbnNvbGUubG9nKGVuZCk7XG5cbiAgICAgIHRoaXMubWluID0gbmV3IERhdGUoYCR7c3RhcnQuZGF0ZX1UMDA6MDA6MDBgKS5nZXRUaW1lKCk7XG4gICAgICB0aGlzLm1heCA9IG5ldyBEYXRlKGAke2VuZC5kYXRlfVQyMzo1OTo1OWApLmdldFRpbWUoKTtcblxuICAgICB0aGlzLnN0YXJ0X2RhdGUgPSBzdGFydC5kYXRlO1xuICAgICAgdGhpcy5lbmRfZGF0ZSA9IGVuZC5kYXRlO1xuICAgICAgdGhpcy5zdGFydCgpO1xuICAgIH0sXG4gICAgZW50cmVwb3RDaGFuZ2UodmFsKSB7XG4gICAgICBjb25zb2xlLmxvZyh0aGlzLmV2ZW50c0FsbCk7XG5cbiAgICAgIGxldCBldmVudHNEQiA9IHRoaXMuZXZlbnRzQWxsLmZpbHRlcigoaXRlbSkgPT4ge1xuICAgICAgICByZXR1cm4gdmFsLmluY2x1ZGVzKGl0ZW0uZW50cmVwb3RfaWRfKTtcbiAgICAgIH0pO1xuXG4gICAgICBsZXQgZXZlbnRzVFRDID0ge307XG4gICAgICBldmVudHNEQi5mb3JFYWNoKChlbGVtZW50KSA9PiB7XG4gICAgICAgIGlmIChldmVudHNUVENbZWxlbWVudC5zdGFydF0gPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgZXZlbnRzVFRDW2VsZW1lbnQuc3RhcnRdID0ge1xuICAgICAgICAgICAgbmFtZTogXCJUT1RBTCBUVENcIixcbiAgICAgICAgICAgIGNvbG9yOiBcImluZGlnb1wiLFxuICAgICAgICAgICAgc3RhcnQ6IGVsZW1lbnQuc3RhcnQsXG4gICAgICAgICAgICBlbmQ6IGVsZW1lbnQuc3RhcnQsXG4gICAgICAgICAgICB0cl90YWJsZV86IFtcImJvbnNhY2hhdHNcIiwgXCJtb250YW50VHRjXCJdLFxuICAgICAgICAgICAgdGRfdGFibGVfOiBbXSxcbiAgICAgICAgICAgIG1vbnRhbnRUdGNfOiAwLFxuICAgICAgICAgICAgZm91cm5pc3NldXJfOiBcIlwiLFxuICAgICAgICAgICAgZW50cmVwb3RfOiBcIlwiLFxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHR0YyA9XG4gICAgICAgICAgZXZlbnRzVFRDW2VsZW1lbnQuc3RhcnRdW1wibW9udGFudFR0Y19cIl0gKiAxICtcbiAgICAgICAgICBlbGVtZW50W1wibW9udGFudFR0Y19cIl0gKiAxO1xuXG4gICAgICAgIGV2ZW50c1RUQ1tlbGVtZW50LnN0YXJ0XVtcIm1vbnRhbnRUdGNfXCJdID0gdHRjLnRvRml4ZWQoMik7XG4gICAgICAgIGV2ZW50c1RUQ1tlbGVtZW50LnN0YXJ0XVtcImVudHJlcG90X1wiXSA9XG4gICAgICAgICAgdHRjLnRvTG9jYWxlU3RyaW5nKHVuZGVmaW5lZCwge1xuICAgICAgICAgICAgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAyLFxuICAgICAgICAgIH0pICsgXCIgREhcIjtcbiAgICAgICAgZXZlbnRzVFRDW2VsZW1lbnQuc3RhcnRdW1wibmFtZVwiXSA9XG4gICAgICAgICAgXCJUT1RBTCBUVEMgOiBcIiArXG4gICAgICAgICAgdHRjLnRvTG9jYWxlU3RyaW5nKHVuZGVmaW5lZCwge1xuICAgICAgICAgICAgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAyLFxuICAgICAgICAgIH0pICtcbiAgICAgICAgICBcIiBESCBcIjtcbiAgICAgICAgZXZlbnRzVFRDW2VsZW1lbnQuc3RhcnRdW1widGRfdGFibGVfXCJdLnB1c2goe1xuICAgICAgICAgIGE6IGVsZW1lbnQubmFtZSxcbiAgICAgICAgICBiOiBlbGVtZW50Lm1vbnRhbnRUdGNfLFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgICBsZXQgZXZlbnRzID0gW107XG4gICAgICB0aGlzLmV2ZW50c1RUQyA9IGV2ZW50c1RUQztcbiAgICAgIGZvciAobGV0IGtleSBpbiBldmVudHNUVEMpIHtcbiAgICAgICAgZXZlbnRzLnB1c2goZXZlbnRzVFRDW2tleV0pO1xuICAgICAgfVxuICAgICAgdGhpcy5ldmVudHMgPSBldmVudHMuY29uY2F0KGV2ZW50c0RCKTtcblxuICAgICAgY29uc29sZS5sb2codGhpcy5ldmVudHMpO1xuICAgICAgdGhpcy5jYWxjdWxfdG90YWxfdHRjXygpO1xuICAgIH0sXG4gICAgY2FsY3VsX3RvdGFsX3R0Y18oKSB7XG4gICAgICBsZXQgbWluID0gdGhpcy5taW47XG4gICAgICBsZXQgbWF4ID0gdGhpcy5tYXg7XG5cbiAgICAgIGNvbnNvbGUubG9nKG1pbik7XG4gICAgICBjb25zb2xlLmxvZyhtYXgpO1xuICAgICAgbGV0ICRUb3RhbF9UVEMgPSAwO1xuICAgICAgZm9yIChjb25zdCBrZXkgaW4gdGhpcy5ldmVudHNUVEMpIHtcbiAgICAgICAgY29uc3QgVGltZV9UVEMgPSBuZXcgRGF0ZShgJHtrZXl9VDAwOjAwOjAwYCkuZ2V0VGltZSgpO1xuXG4gICAgICAgIGlmIChUaW1lX1RUQyA+PSBtaW4gJiYgVGltZV9UVEMgPD0gbWF4KSB7XG4gICAgICAgICAgJFRvdGFsX1RUQyA9ICRUb3RhbF9UVEMgKyB0aGlzLmV2ZW50c1RUQ1trZXldW1wibW9udGFudFR0Y19cIl0gKiAxO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjb25zb2xlLmxvZygkVG90YWxfVFRDKTtcbiAgICAgIHRoaXMuVG90YWxfVFRDID0gJFRvdGFsX1RUQy50b0xvY2FsZVN0cmluZyh1bmRlZmluZWQsIHtcbiAgICAgICAgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAyLFxuICAgICAgfSk7XG4gICAgfSxcblxuICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICBjb3VudChwYXRocywgY29udHJvbGxlcikge1xuICAgICBsZXQgcGF0aCA9IHBhdGhzW2NvbnRyb2xsZXJdO1xuICAgICAgaWYgKHRoaXMuc3RhcnRfZGF0ZSA9PSB0aGlzLmVuZF9kYXRlKSB7XG4gICAgICAgIHRoaXMuY2FsY3VsX3RvdGFsX3R0Y18oKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBsZXQgc2VhcmNoID0gXCI+ZGF0ZUxpdnJhaXNvbj09PVwiICsgdGhpcy5zdGFydF9kYXRlICsgXCJ+XCIgKyB0aGlzLmVuZF9kYXRlO1xuXG4gICAgICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICBvcHRpb25zRGF0YVRhYmxlOiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgZ3JvdXBCeTogW10sXG4gICAgICAgICAgZ3JvdXBEZXNjOiBbXSxcbiAgICAgICAgICBpdGVtc1BlclBhZ2U6IC0xLFxuICAgICAgICAgIG11bHRpU29ydDogZmFsc2UsXG4gICAgICAgICAgbXVzdFNvcnQ6IGZhbHNlLFxuICAgICAgICAgIHBhZ2U6IDEsXG4gICAgICAgICAgc29ydEJ5OiBbXSxcbiAgICAgICAgICBzb3J0RGVzYzogW10sXG4gICAgICAgIH0pLFxuICAgICAgICBzZWFyY2hEYXRhVGFibGU6IEpTT04uc3RyaW5naWZ5KHNlYXJjaCksXG4gICAgICAgIEF0dHJpYnV0ZXNUYWJsZUhpZGU6IFwiXCIsXG4gICAgICB9O1xuICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgIHRoaXMuZW50cmVwb3RJdGVtcyA9IFtdO1xuICAgICAgdGhpcy5ldmVudHNBbGwgPSBbXTtcbiAgICAgIHRoaXMuZXZlbnRzID0gW107XG4gICAgICB0aGlzLmV2ZW50c1RUQyA9IHt9O1xuICAgICAgdGhpcy5Ub3RhbF9UVEMgPSAwO1xuICAgICAgaWYgKHBhdGggIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGF4aW9zXG4gICAgICAgICAgLmdldCh0aGlzLkJhc2VfdXJsX3dlYiArIHBhdGgsIHsgICBoZWFkZXJzOiB7XG4gICAgICAgICAgQXV0aG9yaXphdGlvbjogIGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiSldUVG9rZW5cIiksXG4gICAgICAgIH0scGFyYW1zOiBwYXJhbXMgfSlcbiAgICAgICAgICAudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5ldmVudHNBbGwgPSBbXTtcbiAgICAgICAgICAgIGxldCBkYXRhID0gcmVzcG9uc2UuZGF0YVtcImRhdGFTZXRcIl07XG5cbiAgICAgICAgICAgIGRhdGEuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xuICAgICAgICAgICAgICBsZXQgZXZlbnQgPSB7fTtcblxuICAgICAgICAgICAgICBsZXQgcHJvZHVpdHMgPSBlbGVtZW50W1wicHJvZHVpdHNCb25zQWNoYXRzXCJdW1wiZGF0YVNldFwiXTtcbiAgICAgICAgICAgICAgbGV0IGluZm9wcm9kdWl0ID0gW107XG4gICAgICAgICAgICAgIGxldCBpID0gMDtcbiAgICAgICAgICAgICAgcHJvZHVpdHMuZm9yRWFjaCgocHJvZHVpdCkgPT4ge1xuICAgICAgICAgICAgICAgIGkrKztcbiAgICAgICAgICAgICAgICBpbmZvcHJvZHVpdC5wdXNoKHtcbiAgICAgICAgICAgICAgICAgIGtleTogaSxcbiAgICAgICAgICAgICAgICAgIGE6IHByb2R1aXRbXCJwcm9kdWl0XCJdLFxuICAgICAgICAgICAgICAgICAgYjogcHJvZHVpdFtcInF1YW50aXRlXCJdLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICBldmVudFtcInRkX3RhYmxlX1wiXSA9IGluZm9wcm9kdWl0O1xuICAgICAgICAgICAgICBldmVudFtcInRyX3RhYmxlX1wiXSA9IFtcInByb2R1aXRcIiwgXCJxdWFudGl0ZVwiXTtcblxuICAgICAgICAgICAgICBldmVudFtcIl9pZF9cIl0gPSBlbGVtZW50LmlkO1xuICAgICAgICAgICAgICBldmVudFtcInN0YXJ0XCJdID0gZWxlbWVudC5kYXRlTGl2cmFpc29uO1xuICAgICAgICAgICAgICBldmVudFtcImVuZFwiXSA9IGVsZW1lbnQuZGF0ZUxpdnJhaXNvbjtcblxuICAgICAgICAgICAgICBldmVudFtcImVudHJlcG90X1wiXSA9IGVsZW1lbnQuZW50cmVwb3Q7XG4gICAgICAgICAgICAgIGV2ZW50W1wiZW50cmVwb3RfaWRfXCJdID0gZWxlbWVudC5lbnRyZXBvdF9pZDtcblxuICAgICAgICAgICAgICBldmVudFtcImNvbG9yXCJdID0gdXRpbFtcImNvbG9yXCJdW1widmFsdWVDb2xvclwiXVtlbGVtZW50LmVudHJlcG90X2lkXTtcblxuICAgICAgICAgICAgICBldmVudFtcImZvdXJuaXNzZXVyX1wiXSA9IGVsZW1lbnRbXCJmb3Vybmlzc2V1clwiXTtcbiAgICAgICAgICAgICAgZXZlbnRbXCJtb250YW50VHRjX1wiXSA9IGVsZW1lbnRbXCJtb250YW50VHRjXCJdLnRvTG9jYWxlU3RyaW5nKFxuICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDIsXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICBldmVudFtcIm5hbWVcIl0gPSBlbGVtZW50W1widXNlclwiXSArIFwiIFwiICsgZWxlbWVudFtcInRvU3RyaW5nXCJdO1xuXG4gICAgICAgICAgICAgIHRoaXMuZXZlbnRzQWxsLnB1c2goZXZlbnQpO1xuXG4gICAgICAgICAgICAgIHRoaXMuZW50cmVwb3RJdGVtcy5wdXNoKHtcbiAgICAgICAgICAgICAgICB0ZXh0OiBlbGVtZW50LmVudHJlcG90LFxuICAgICAgICAgICAgICAgIHZhbHVlOiBlbGVtZW50LmVudHJlcG90X2lkLFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgLy8gY2xvbmUgYXJyYXlcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB0aGlzLmV2ZW50cyA9IFsuLi50aGlzLmV2ZW50c0FsbF07XG5cbiAgICAgICAgICAgICB0aGlzLmNhbGN1bF90b3RhbF90dGNfKCk7XG4gICAgICAgICAgfSlcbiAgICAgICAgICAuY2F0Y2goKCkgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcih0aGlzLkJhc2VfdXJsX3dlYiArIHBhdGgpO1xuICAgICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICBzaG93SXRlbShpZCkge1xuICAgICAgdGhpcy4kcm91dGVyLnB1c2goe1xuICAgICAgICBuYW1lOiB0aGlzLmNvbnRyb2xsZXJfcm9vdCArIFwiX3Nob3dfaXRlbVwiLFxuICAgICAgICBwYXJhbXM6IHsgaWQ6IGlkIH0sXG4gICAgICB9KTtcbiAgICB9LFxuICAgIGlzR3JhbnRlZChhdHRyaWJ1dGUpIHtcbiAgICAgIHJldHVybiB0aGlzLiRzdG9yZS5nZXR0ZXJzW1wic2VjdXJpdHkvaXNHcmFudGVkXCJdKFxuICAgICAgICBhdHRyaWJ1dGUsXG4gICAgICAgIHRoaXMuY29udHJvbGxlcl9yb290XG4gICAgICApO1xuICAgIH0sXG4gICAgc3RhcnQoKSB7XG4gICAgICB0aGlzLmNvdW50KHRoaXMucGF0aHNfc3RhdGlzdGlxdWVzLCB0aGlzLmNvbnRyb2xsZXJfcm9vdCk7XG4gICAgfSxcbiAgfSxcblxuICB3YXRjaDoge1xuICAgIHBhdGhzX3N0YXRpc3RpcXVlcygpIHtcbiAgICAgIHRoaXMuc3RhcnQoKTtcbiAgICB9LFxuICB9LFxuICBjb21wdXRlZDoge1xuICAgIEJhc2VfdXJsX3dlYigpIHtcbiAgICAgIHJldHVybiB0aGlzLiRzdG9yZS5nZXR0ZXJzW1wiZ2V0X0Jhc2VfdXJsXCJdO1xuICAgIH0sXG4gICAgcGF0aHNfc3RhdGlzdGlxdWVzKCkge1xuICAgICAgcmV0dXJuIHRoaXMuJHN0b3JlLmdldHRlcnNbXCJnZXRfcGF0aHNcIl07XG4gICAgfSxcbiAgfSxcbn07XG48L3NjcmlwdD5cbjxzdHlsZSA+XG4udi1jYWxlbmRhci1kYWlseV9fc2Nyb2xsLWFyZWEge1xuICBkaXNwbGF5OiBub25lO1xufVxuPC9zdHlsZT4iLCI8dGVtcGxhdGU+XG4gIDxjYXJkLWNhcmQgaWNvbj1cIm1kaS13YWxsZXQtdHJhdmVsXCIgOnRpdGxlPVwiJHQoJ1d0XycgKyAnQWNjdWVpbCcpXCIgOnRleHQ9XCIkdCgnV3N1YnRfJyArICdBY2N1ZWlsJylcIlxuICAgIGNsYXNzPVwicHgtNSBweS0zIGQtaW5saW5lLWJsb2NrIG14LWF1dG9cIiBjb2xvcj1cIm9yYW5nZVwiIDpjbG9zZT1cImNsb3NlXCIgQGNsb3NlPVwiY2xvc2VldmVudFwiPlxuXG4gICAgPHYtY29udGFpbmVyPlxuICAgICAgPCEtLSBGaWx0ZXJzIFNlY3Rpb24gLS0+XG4gICAgICA8di1yb3cgZGVuc2UgY2xhc3M9XCJtYi0zXCI+XG4gICAgICAgIDx2LWNvbCBjb2xzPVwiMTJcIj5cbiAgICAgICAgICA8di1jYXJkIG91dGxpbmVkIGNsYXNzPVwicGEtM1wiPlxuICAgICAgICAgICAgPHYtcm93IGFsaWduPVwiY2VudGVyXCIganVzdGlmeT1cInNwYWNlLWJldHdlZW5cIj5cbiAgICAgICAgICAgICAgPHYtY29sIGNvbHM9XCIxMlwiIG1kPVwiN1wiPlxuICAgICAgICAgICAgICAgIDx2LXJhZGlvLWdyb3VwIHYtbW9kZWw9XCJzdGF0dXRcIiByb3cgZGVuc2UgY2xhc3M9XCJtdC0wXCI+XG4gICAgICAgICAgICAgICAgICA8di1yYWRpbyBsYWJlbD1cIlRvdXRlc1wiIHZhbHVlPVwiYWxsXCIgY29sb3I9XCJkZWVwLXB1cnBsZVwiPjwvdi1yYWRpbz5cbiAgICAgICAgICAgICAgICAgIDx2LXJhZGlvIGxhYmVsPVwiUsOpZ2zDqWVzXCIgdmFsdWU9XCJyZWdsZWVcIiBjb2xvcj1cInN1Y2Nlc3NcIj48L3YtcmFkaW8+XG4gICAgICAgICAgICAgICAgICA8di1yYWRpbyBsYWJlbD1cIkVuIGF0dGVudGVcIiB2YWx1ZT1cImVuYXR0ZW50ZVwiIGNvbG9yPVwid2FybmluZ1wiPjwvdi1yYWRpbz5cbiAgICAgICAgICAgICAgICAgIDx2LXJhZGlvIGxhYmVsPVwiTm9uIGTDqWZpbmlcIiB2YWx1ZT1cIm5kXCIgY29sb3I9XCJpbmZvXCI+PC92LXJhZGlvPlxuICAgICAgICAgICAgICAgIDwvdi1yYWRpby1ncm91cD5cbiAgICAgICAgICAgICAgPC92LWNvbD5cblxuICAgICAgICAgICAgICA8di1jb2wgY29scz1cIjEyXCIgbWQ9XCIzXCI+XG4gICAgICAgICAgICAgICAgPHYtdGV4dC1maWVsZCB0eXBlPVwibnVtYmVyXCIgdi1tb2RlbD1cImRhdGVcIiBsYWJlbD1cIkFubsOpZVwiIG91dGxpbmVkIGRlbnNlIGhpZGUtZGV0YWlsc1xuICAgICAgICAgICAgICAgICAgYXBwZW5kLWljb249XCJtZGktcmVmcmVzaFwiIEBjbGljazphcHBlbmQ9XCJzdGFydFwiIGNvbG9yPVwicHJpbWFyeVwiPjwvdi10ZXh0LWZpZWxkPlxuICAgICAgICAgICAgICA8L3YtY29sPlxuXG4gICAgICAgICAgICAgIDx2LWNvbCBjb2xzPVwiMTJcIiBtZD1cIjJcIiBjbGFzcz1cInRleHQtcmlnaHRcIj5cbiAgICAgICAgICAgICAgICA8di1idG4gY29sb3I9XCJwcmltYXJ5XCIgQGNsaWNrPVwic3RhcnRcIiBkZXByZXNzZWQ+XG4gICAgICAgICAgICAgICAgICA8di1pY29uIGxlZnQgc21hbGw+bWRpLXJlZnJlc2g8L3YtaWNvbj5cbiAgICAgICAgICAgICAgICAgIEFjdHVhbGlzZXJcbiAgICAgICAgICAgICAgICA8L3YtYnRuPlxuICAgICAgICAgICAgICA8L3YtY29sPlxuICAgICAgICAgICAgPC92LXJvdz5cbiAgICAgICAgICA8L3YtY2FyZD5cbiAgICAgICAgPC92LWNvbD5cbiAgICAgIDwvdi1yb3c+XG5cbiAgICAgIDwhLS0gVGFicyBTZWN0aW9uIC0tPlxuICAgICAgPHYtdGFicyB2LW1vZGVsPVwic2VsZWN0ZWRUYWJcIiBjb2xvcj1cInByaW1hcnlcIiBzaG93LWFycm93cz5cbiAgICAgICAgPHYtdGFiIGhyZWY9XCIjdGFiLW92ZXJ2aWV3XCI+XG4gICAgICAgICAgPHYtaWNvbiBsZWZ0IHNtYWxsPm1kaS12aWV3LWRhc2hib2FyZDwvdi1pY29uPlxuICAgICAgICAgIFZ1ZSBkJ2Vuc2VtYmxlXG4gICAgICAgIDwvdi10YWI+XG4gICAgICAgIDx2LXRhYiBocmVmPVwiI3RhYi1jaGFydHNcIj5cbiAgICAgICAgICA8di1pY29uIGxlZnQgc21hbGw+bWRpLWNoYXJ0LXBpZTwvdi1pY29uPlxuICAgICAgICAgIEFuYWx5c2UgZ3JhcGhpcXVlXG4gICAgICAgIDwvdi10YWI+XG4gICAgICAgIDx2LXRhYiBocmVmPVwiI3RhYi1xdWFydGVybHlcIj5cbiAgICAgICAgICA8di1pY29uIGxlZnQgc21hbGw+bWRpLWNhbGVuZGFyLXJhbmdlPC92LWljb24+XG4gICAgICAgICAgQ29tcGFyYWlzb24gdHJpbWVzdHJpZWxsZVxuICAgICAgICA8L3YtdGFiPlxuICAgICAgICA8di10YWIgaHJlZj1cIiN0YWItZmluYW5jaWFsXCI+XG4gICAgICAgICAgPHYtaWNvbiBsZWZ0IHNtYWxsPm1kaS1zY2FsZS1iYWxhbmNlPC92LWljb24+XG4gICAgICAgICAgU2l0dWF0aW9uIEZpbmFuY2nDqHJlXG4gICAgICAgIDwvdi10YWI+XG4gICAgICA8L3YtdGFicz5cblxuICAgICAgPHYtdGFicy1pdGVtcyB2LW1vZGVsPVwic2VsZWN0ZWRUYWJcIiBjbGFzcz1cIm10LTNcIj5cbiAgICAgICAgPCEtLSBUYWIgMTogT3ZlcnZpZXcgLS0+XG4gICAgICAgIDx2LXRhYi1pdGVtIHZhbHVlPVwidGFiLW92ZXJ2aWV3XCI+XG4gICAgICAgICAgPHYtcm93IGRlbnNlPlxuICAgICAgICAgICAgPCEtLSBNYWluIENBIENhcmQgLS0+XG4gICAgICAgICAgICA8di1jb2wgY29scz1cIjEyXCI+XG4gICAgICAgICAgICAgIDx2LWNhcmQgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiIGNvbG9yPVwicHJpbWFyeVwiIGRhcmsgZWxldmF0aW9uPVwiNFwiPlxuICAgICAgICAgICAgICAgIDx2LWNhcmQtdGl0bGUgY2xhc3M9XCJqdXN0aWZ5LWNlbnRlciBwYi0yXCI+XG4gICAgICAgICAgICAgICAgICA8di1pY29uIGxlZnQ+bWRpLWNhc2gtbXVsdGlwbGU8L3YtaWNvbj5cbiAgICAgICAgICAgICAgICAgIENoaWZmcmUgZCdhZmZhaXJlcyB7eyBkYXRlIH19XG4gICAgICAgICAgICAgICAgPC92LWNhcmQtdGl0bGU+XG5cbiAgICAgICAgICAgICAgICA8di1jYXJkLXN1YnRpdGxlIGNsYXNzPVwiZGlzcGxheS0xIGZvbnQtd2VpZ2h0LWJvbGQgd2hpdGUtLXRleHQgcHktM1wiIHN0eWxlPVwiZm9udC1zaXplOiA0MnB4ICFpbXBvcnRhbnRcIj5cbiAgICAgICAgICAgICAgICAgIHt7IENBLnRvTG9jYWxlU3RyaW5nKHVuZGVmaW5lZCwgeyBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDIgfSkgfX0gREhcbiAgICAgICAgICAgICAgICA8L3YtY2FyZC1zdWJ0aXRsZT5cblxuICAgICAgICAgICAgICAgIDx2LWNhcmQtdGV4dCBjbGFzcz1cInBiLTRcIj5cbiAgICAgICAgICAgICAgICAgIDx2LWNoaXAgY2xhc3M9XCJtYS0xXCIgY29sb3I9XCJzdWNjZXNzXCIgbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDx2LWljb24gbGVmdCBzbWFsbD5tZGktYXJyb3ctdXA8L3YtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgUmVjZXR0ZXM6IHt7IFJlY2V0dGVzLnRvTG9jYWxlU3RyaW5nKHVuZGVmaW5lZCwgeyBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDIgfSkgfX0gREhcbiAgICAgICAgICAgICAgICAgIDwvdi1jaGlwPlxuICAgICAgICAgICAgICAgICAgPHYtY2hpcCBjbGFzcz1cIm1hLTFcIiBjb2xvcj1cImVycm9yXCIgbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDx2LWljb24gbGVmdCBzbWFsbD5tZGktYXJyb3ctZG93bjwvdi1pY29uPlxuICAgICAgICAgICAgICAgICAgICBEw6lwZW5zZXM6IHt7IERlcGVuc2VzLnRvTG9jYWxlU3RyaW5nKHVuZGVmaW5lZCwgeyBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDIgfSkgfX0gREhcbiAgICAgICAgICAgICAgICAgIDwvdi1jaGlwPlxuICAgICAgICAgICAgICAgICAgPHYtY2hpcCBjbGFzcz1cIm1hLTFcIiBjb2xvcj1cIm9yYW5nZVwiIGxhYmVsIHYtc2hvdz1cInN0YXR1dCA9PSAncmVnbGVlJyB8fCBzdGF0dXQgPT0gJ2FsbCdcIj5cbiAgICAgICAgICAgICAgICAgICAgPHYtaWNvbiBsZWZ0IHNtYWxsPm1kaS1wZXJjZW50PC92LWljb24+XG4gICAgICAgICAgICAgICAgICAgIFRWQToge3sgVFZBLnRvTG9jYWxlU3RyaW5nKHVuZGVmaW5lZCwgeyBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDIgfSkgfX0gREhcbiAgICAgICAgICAgICAgICAgIDwvdi1jaGlwPlxuICAgICAgICAgICAgICAgICAgPHYtdG9vbHRpcCBib3R0b20+XG4gICAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6YWN0aXZhdG9yPVwieyBvbiwgYXR0cnMgfVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDx2LWNoaXAgY2xhc3M9XCJtYS0xXCIgY29sb3I9XCJjeWFuXCIgbGFiZWwgdGV4dC1jb2xvcj1cIndoaXRlXCIgdi1iaW5kPVwiYXR0cnNcIiB2LW9uPVwib25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx2LWljb24gbGVmdCBzbWFsbD5tZGktaGFuZC1jb2luPC92LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICBDbGllbnRzOiB7eyBDcmVhbmNlcy50b0xvY2FsZVN0cmluZyh1bmRlZmluZWQsIHsgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAyIH0pIH19IERIXG4gICAgICAgICAgICAgICAgICAgICAgPC92LWNoaXA+XG4gICAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIEZhY3R1cmVzOiB7eyBDcmVhbmNlc0ZhY3R1cmVzLnRvTG9jYWxlU3RyaW5nKHVuZGVmaW5lZCwgeyBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDIgfSkgfX0gREg8YnI+XG4gICAgICAgICAgICAgICAgICAgICAgQXZvaXJzOiB7eyBDcmVhbmNlc0F2b2lycy50b0xvY2FsZVN0cmluZyh1bmRlZmluZWQsIHsgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAyIH0pIH19IERIXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvdi10b29sdGlwPlxuXG4gICAgICAgICAgICAgICAgICA8di10b29sdGlwIGJvdHRvbT5cbiAgICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlIHYtc2xvdDphY3RpdmF0b3I9XCJ7IG9uLCBhdHRycyB9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHYtY2hpcCBjbGFzcz1cIm1hLTFcIiBjb2xvcj1cImRlZXAtb3JhbmdlXCIgbGFiZWwgdGV4dC1jb2xvcj1cIndoaXRlXCIgdi1iaW5kPVwiYXR0cnNcIiB2LW9uPVwib25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx2LWljb24gbGVmdCBzbWFsbD5tZGktaGFuZC13YXRlcjwvdi1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgRm91cm5pcy46IHt7IERldHRlcy50b0xvY2FsZVN0cmluZyh1bmRlZmluZWQsIHsgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAyIH0pIH19IERIXG4gICAgICAgICAgICAgICAgICAgICAgPC92LWNoaXA+XG4gICAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIEZhY3R1cmVzOiB7eyBEZXR0ZXNGYWN0dXJlcy50b0xvY2FsZVN0cmluZyh1bmRlZmluZWQsIHsgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAyIH0pIH19IERIPGJyPlxuICAgICAgICAgICAgICAgICAgICAgIEF2b2lyczoge3sgRGV0dGVzQXZvaXJzLnRvTG9jYWxlU3RyaW5nKHVuZGVmaW5lZCwgeyBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDIgfSkgfX0gREhcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC92LXRvb2x0aXA+XG4gICAgICAgICAgICAgICAgICA8di1jaGlwIGNsYXNzPVwibWEtMVwiIDpjb2xvcj1cIlJlc3VsdGF0ID49IDAgPyAncHVycGxlJyA6ICdyZWQgZGFya2VuLTInXCIgbGFiZWwgZGFyaz5cbiAgICAgICAgICAgICAgICAgICAgPHYtaWNvbiBsZWZ0IHNtYWxsPnt7IFJlc3VsdGF0ID49IDAgPyAnbWRpLXRyZW5kaW5nLXVwJyA6ICdtZGktdHJlbmRpbmctZG93bicgfX08L3YtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgUsOpc3VsdGF0OiB7eyBSZXN1bHRhdC50b0xvY2FsZVN0cmluZyh1bmRlZmluZWQsIHsgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAyIH0pIH19IERIXG4gICAgICAgICAgICAgICAgICA8L3YtY2hpcD5cbiAgICAgICAgICAgICAgICA8L3YtY2FyZC10ZXh0PlxuICAgICAgICAgICAgICA8L3YtY2FyZD5cbiAgICAgICAgICAgIDwvdi1jb2w+XG5cbiAgICAgICAgICAgIDwhLS0gS1BJIENhcmRzIFJvdyAtLT5cbiAgICAgICAgICAgIDx2LWNvbCBjb2xzPVwiMTJcIiBzbT1cIjZcIiBtZD1cIjNcIj5cbiAgICAgICAgICAgICAgPHYtY2FyZCBjbGFzcz1cImtwaS1jYXJkXCIgb3V0bGluZWQgZWxldmF0aW9uPVwiMlwiIGhvdmVyPlxuICAgICAgICAgICAgICAgIDx2LWNhcmQtdGV4dD5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1zcGFjZS1iZXR3ZWVuIGFsaWduLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvdmVybGluZSBzdWNjZXNzLS10ZXh0XCI+UkVDRVRURVM8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGxpbmUgZm9udC13ZWlnaHQtYm9sZCBzdWNjZXNzLS10ZXh0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyAoUmVjZXR0ZXMgLyAxMDAwKS50b0ZpeGVkKDEpIH19S1xuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXB0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBSZWNldHRlcy50b0xvY2FsZVN0cmluZyh1bmRlZmluZWQsIHsgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAyIH0pIH19IERIXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8di1hdmF0YXIgc2l6ZT1cIjU2XCIgY29sb3I9XCJzdWNjZXNzXCIgY2xhc3M9XCJlbGV2YXRpb24tMlwiPlxuICAgICAgICAgICAgICAgICAgICAgIDx2LWljb24gc2l6ZT1cIjMyXCIgY29sb3I9XCJ3aGl0ZVwiPm1kaS1jYXNoLXBsdXM8L3YtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPC92LWF2YXRhcj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPHYtcHJvZ3Jlc3MtbGluZWFyIDp2YWx1ZT1cIihSZWNldHRlcyAvIChSZWNldHRlcyArIERlcGVuc2VzKSkgKiAxMDBcIiBjb2xvcj1cInN1Y2Nlc3NcIiBjbGFzcz1cIm10LTNcIlxuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCI2XCIgcm91bmRlZD48L3YtcHJvZ3Jlc3MtbGluZWFyPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcHRpb24gbXQtMSB0ZXh0LWNlbnRlciBzdWNjZXNzLS10ZXh0XCI+XG4gICAgICAgICAgICAgICAgICAgIHt7ICgoUmVjZXR0ZXMgLyAoUmVjZXR0ZXMgKyBEZXBlbnNlcykpICogMTAwKS50b0ZpeGVkKDEpIH19JSBkdSB0b3RhbFxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC92LWNhcmQtdGV4dD5cbiAgICAgICAgICAgICAgPC92LWNhcmQ+XG4gICAgICAgICAgICA8L3YtY29sPlxuXG4gICAgICAgICAgICA8di1jb2wgY29scz1cIjEyXCIgc209XCI2XCIgbWQ9XCIzXCI+XG4gICAgICAgICAgICAgIDx2LWNhcmQgY2xhc3M9XCJrcGktY2FyZFwiIG91dGxpbmVkIGVsZXZhdGlvbj1cIjJcIiBob3Zlcj5cbiAgICAgICAgICAgICAgICA8di1jYXJkLXRleHQ+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktc3BhY2UtYmV0d2VlbiBhbGlnbi1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwib3ZlcmxpbmUgcmVkLS10ZXh0XCI+RMOJUEVOU0VTPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRsaW5lIGZvbnQtd2VpZ2h0LWJvbGQgcmVkLS10ZXh0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyAoRGVwZW5zZXMgLyAxMDAwKS50b0ZpeGVkKDEpIH19S1xuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXB0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBEZXBlbnNlcy50b0xvY2FsZVN0cmluZyh1bmRlZmluZWQsIHsgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAyIH0pIH19IERIXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8di1hdmF0YXIgc2l6ZT1cIjU2XCIgY29sb3I9XCJyZWRcIiBjbGFzcz1cImVsZXZhdGlvbi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHYtaWNvbiBzaXplPVwiMzJcIiBjb2xvcj1cIndoaXRlXCI+bWRpLWNhc2gtbWludXM8L3YtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPC92LWF2YXRhcj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPHYtcHJvZ3Jlc3MtbGluZWFyIDp2YWx1ZT1cIihEZXBlbnNlcyAvIChSZWNldHRlcyArIERlcGVuc2VzKSkgKiAxMDBcIiBjb2xvcj1cInJlZFwiIGNsYXNzPVwibXQtM1wiXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjZcIiByb3VuZGVkPjwvdi1wcm9ncmVzcy1saW5lYXI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FwdGlvbiBtdC0xIHRleHQtY2VudGVyIHJlZC0tdGV4dFwiPlxuICAgICAgICAgICAgICAgICAgICB7eyAoKERlcGVuc2VzIC8gKFJlY2V0dGVzICsgRGVwZW5zZXMpKSAqIDEwMCkudG9GaXhlZCgxKSB9fSUgZHUgdG90YWxcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvdi1jYXJkLXRleHQ+XG4gICAgICAgICAgICAgIDwvdi1jYXJkPlxuICAgICAgICAgICAgPC92LWNvbD5cblxuICAgICAgICAgICAgPHYtY29sIGNvbHM9XCIxMlwiIHNtPVwiNlwiIG1kPVwiM1wiIHYtc2hvdz1cInN0YXR1dCA9PSAncmVnbGVlJyB8fCBzdGF0dXQgPT0gJ2FsbCdcIj5cbiAgICAgICAgICAgICAgPHYtY2FyZCBjbGFzcz1cImtwaS1jYXJkXCIgb3V0bGluZWQgZWxldmF0aW9uPVwiMlwiIGhvdmVyPlxuICAgICAgICAgICAgICAgIDx2LWNhcmQtdGV4dD5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1zcGFjZS1iZXR3ZWVuIGFsaWduLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvdmVybGluZSBvcmFuZ2UtLXRleHRcIj5UVkE8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGxpbmUgZm9udC13ZWlnaHQtYm9sZCBvcmFuZ2UtLXRleHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IChUVkEgLyAxMDAwKS50b0ZpeGVkKDEpIH19S1xuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXB0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBUVkEudG9Mb2NhbGVTdHJpbmcodW5kZWZpbmVkLCB7IG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMiB9KSB9fSBESFxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPHYtYXZhdGFyIHNpemU9XCI1NlwiIGNvbG9yPVwib3JhbmdlXCIgY2xhc3M9XCJlbGV2YXRpb24tMlwiPlxuICAgICAgICAgICAgICAgICAgICAgIDx2LWljb24gc2l6ZT1cIjMyXCIgY29sb3I9XCJ3aGl0ZVwiPm1kaS1wZXJjZW50LW91dGxpbmU8L3YtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPC92LWF2YXRhcj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPHYtcHJvZ3Jlc3MtbGluZWFyIDp2YWx1ZT1cInR2YVJhdGVcIiBjb2xvcj1cIm9yYW5nZVwiIGNsYXNzPVwibXQtM1wiIGhlaWdodD1cIjZcIiByb3VuZGVkPlxuICAgICAgICAgICAgICAgICAgPC92LXByb2dyZXNzLWxpbmVhcj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXB0aW9uIG10LTEgdGV4dC1jZW50ZXIgb3JhbmdlLS10ZXh0XCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IHR2YVJhdGUudG9GaXhlZCgxKSB9fSUgZHUgQ0FcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvdi1jYXJkLXRleHQ+XG4gICAgICAgICAgICAgIDwvdi1jYXJkPlxuICAgICAgICAgICAgPC92LWNvbD5cblxuICAgICAgICAgICAgPHYtY29sIGNvbHM9XCIxMlwiIHNtPVwiNlwiIG1kPVwiM1wiPlxuICAgICAgICAgICAgICA8di1jYXJkIGNsYXNzPVwia3BpLWNhcmRcIiBvdXRsaW5lZCBlbGV2YXRpb249XCIyXCIgaG92ZXI+XG4gICAgICAgICAgICAgICAgPHYtY2FyZC10ZXh0PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LXNwYWNlLWJldHdlZW4gYWxpZ24tY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm92ZXJsaW5lXCIgOmNsYXNzPVwiUmVzdWx0YXQgPj0gMCA/ICdwdXJwbGUtLXRleHQnIDogJ3JlZC0tdGV4dCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIFLDiVNVTFRBVFxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkbGluZSBmb250LXdlaWdodC1ib2xkXCIgOmNsYXNzPVwiUmVzdWx0YXQgPj0gMCA/ICdwdXJwbGUtLXRleHQnIDogJ3JlZC0tdGV4dCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IChSZXN1bHRhdCAvIDEwMDApLnRvRml4ZWQoMSkgfX1LXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcHRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IFJlc3VsdGF0LnRvTG9jYWxlU3RyaW5nKHVuZGVmaW5lZCwgeyBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDIgfSkgfX0gREhcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDx2LWF2YXRhciBzaXplPVwiNTZcIiA6Y29sb3I9XCJSZXN1bHRhdCA+PSAwID8gJ3B1cnBsZScgOiAncmVkJ1wiIGNsYXNzPVwiZWxldmF0aW9uLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8di1pY29uIHNpemU9XCIzMlwiIGNvbG9yPVwid2hpdGVcIj57eyBSZXN1bHRhdCA+PSAwID8gJ21kaS10cmVuZGluZy11cCcgOiAnbWRpLXRyZW5kaW5nLWRvd24nIH19XG4gICAgICAgICAgICAgICAgICAgICAgPC92LWljb24+XG4gICAgICAgICAgICAgICAgICAgIDwvdi1hdmF0YXI+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDx2LXByb2dyZXNzLWxpbmVhciA6dmFsdWU9XCJNYXRoLmFicyhwcm9maXRNYXJnaW4pXCIgOmNvbG9yPVwiUmVzdWx0YXQgPj0gMCA/ICdwdXJwbGUnIDogJ3JlZCdcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm10LTNcIiBoZWlnaHQ9XCI2XCIgcm91bmRlZD48L3YtcHJvZ3Jlc3MtbGluZWFyPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcHRpb24gbXQtMSB0ZXh0LWNlbnRlclwiIDpjbGFzcz1cIlJlc3VsdGF0ID49IDAgPyAncHVycGxlLS10ZXh0JyA6ICdyZWQtLXRleHQnXCI+XG4gICAgICAgICAgICAgICAgICAgIE1hcmdlOiB7eyBwcm9maXRNYXJnaW4udG9GaXhlZCgxKSB9fSVcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvdi1jYXJkLXRleHQ+XG4gICAgICAgICAgICAgIDwvdi1jYXJkPlxuICAgICAgICAgICAgPC92LWNvbD5cblxuICAgICAgICAgICAgPCEtLSBQZW5kaW5nIEZpbmFuY2VzIEtQSSBDYXJkcyAtLT5cbiAgICAgICAgICAgIDx2LWNvbCBjb2xzPVwiMTJcIiBzbT1cIjZcIiBtZD1cIjZcIj5cbiAgICAgICAgICAgICAgPHYtY2FyZCBjbGFzcz1cImtwaS1jYXJkXCIgb3V0bGluZWQgZWxldmF0aW9uPVwiMlwiIGhvdmVyIHN0eWxlPVwiYm9yZGVyLWxlZnQ6IDVweCBzb2xpZCAjMDBCQ0Q0XCI+XG4gICAgICAgICAgICAgICAgPHYtY2FyZC10ZXh0PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LXNwYWNlLWJldHdlZW4gYWxpZ24tY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm92ZXJsaW5lIGN5YW4tLXRleHRcIj5DUsOJQU5DRVMgQ0xJRU5UUyAow4AgcmVjZXZvaXIpPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRsaW5lIGZvbnQtd2VpZ2h0LWJvbGQgY3lhbi0tdGV4dFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgKENyZWFuY2VzIC8gMTAwMCkudG9GaXhlZCgxKSB9fUtcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FwdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgVG90YWwgaW1wYXnDqToge3sgQ3JlYW5jZXMudG9Mb2NhbGVTdHJpbmcodW5kZWZpbmVkLCB7IG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMiB9KSB9fSBESFxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPHYtYXZhdGFyIHNpemU9XCI1NlwiIGNvbG9yPVwiY3lhblwiIGNsYXNzPVwiZWxldmF0aW9uLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8di1pY29uIHNpemU9XCIzMlwiIGNvbG9yPVwid2hpdGVcIj5tZGktaGFuZC1jb2luPC92LWljb24+XG4gICAgICAgICAgICAgICAgICAgIDwvdi1hdmF0YXI+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDx2LXByb2dyZXNzLWxpbmVhciA6dmFsdWU9XCJDQSA+IDAgPyAoQ3JlYW5jZXMgLyBDQSkgKiAxMDAgOiAwXCIgY29sb3I9XCJjeWFuXCIgY2xhc3M9XCJtdC0zXCIgaGVpZ2h0PVwiNlwiXG4gICAgICAgICAgICAgICAgICAgIHJvdW5kZWQ+PC92LXByb2dyZXNzLWxpbmVhcj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXB0aW9uIG10LTEgdGV4dC1jZW50ZXIgY3lhbi0tdGV4dFwiPlxuICAgICAgICAgICAgICAgICAgICB7eyBDQSA+IDAgPyAoKENyZWFuY2VzIC8gQ0EpICogMTAwKS50b0ZpeGVkKDEpIDogMCB9fSUgZHUgQ0FcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvdi1jYXJkLXRleHQ+XG4gICAgICAgICAgICAgIDwvdi1jYXJkPlxuICAgICAgICAgICAgPC92LWNvbD5cblxuICAgICAgICAgICAgPHYtY29sIGNvbHM9XCIxMlwiIHNtPVwiNlwiIG1kPVwiNlwiPlxuICAgICAgICAgICAgICA8di1jYXJkIGNsYXNzPVwia3BpLWNhcmRcIiBvdXRsaW5lZCBlbGV2YXRpb249XCIyXCIgaG92ZXIgc3R5bGU9XCJib3JkZXItbGVmdDogNXB4IHNvbGlkICNGRjU3MjJcIj5cbiAgICAgICAgICAgICAgICA8di1jYXJkLXRleHQ+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktc3BhY2UtYmV0d2VlbiBhbGlnbi1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwib3ZlcmxpbmUgZGVlcC1vcmFuZ2UtLXRleHRcIj5ERVRURVMgRk9VUk5JU1NFVVJTICjDgCBwYXllcik8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGxpbmUgZm9udC13ZWlnaHQtYm9sZCBkZWVwLW9yYW5nZS0tdGV4dFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgKERldHRlcyAvIDEwMDApLnRvRml4ZWQoMSkgfX1LXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcHRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIFRvdGFsIGltcGF5w6k6IHt7IERldHRlcy50b0xvY2FsZVN0cmluZyh1bmRlZmluZWQsIHsgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAyIH0pIH19IERIXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8di1hdmF0YXIgc2l6ZT1cIjU2XCIgY29sb3I9XCJkZWVwLW9yYW5nZVwiIGNsYXNzPVwiZWxldmF0aW9uLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8di1pY29uIHNpemU9XCIzMlwiIGNvbG9yPVwid2hpdGVcIj5tZGktaGFuZC13YXRlcjwvdi1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8L3YtYXZhdGFyPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8di1wcm9ncmVzcy1saW5lYXIgOnZhbHVlPVwiQ0EgPiAwID8gKERldHRlcyAvIENBKSAqIDEwMCA6IDBcIiBjb2xvcj1cImRlZXAtb3JhbmdlXCIgY2xhc3M9XCJtdC0zXCJcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiNlwiIHJvdW5kZWQ+PC92LXByb2dyZXNzLWxpbmVhcj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXB0aW9uIG10LTEgdGV4dC1jZW50ZXIgZGVlcC1vcmFuZ2UtLXRleHRcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgQ0EgPiAwID8gKChEZXR0ZXMgLyBDQSkgKiAxMDApLnRvRml4ZWQoMSkgOiAwIH19JSBkdSBDQVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC92LWNhcmQtdGV4dD5cbiAgICAgICAgICAgICAgPC92LWNhcmQ+XG4gICAgICAgICAgICA8L3YtY29sPlxuXG4gICAgICAgICAgICA8IS0tIEFkZGl0aW9uYWwgSW5mbyBDYXJkcyAtLT5cbiAgICAgICAgICAgIDx2LWNvbCBjb2xzPVwiMTJcIiBtZD1cIjZcIj5cbiAgICAgICAgICAgICAgPHYtY2FyZCBvdXRsaW5lZCBlbGV2YXRpb249XCIxXCIgY2xhc3M9XCJmaWxsLWhlaWdodFwiPlxuICAgICAgICAgICAgICAgIDx2LWNhcmQtdGl0bGUgY2xhc3M9XCJzdWJ0aXRsZS0xIHByaW1hcnktLXRleHQgZC1mbGV4IGp1c3RpZnktc3BhY2UtYmV0d2VlbiBhbGlnbi1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIDx2LWljb24gbGVmdCBjb2xvcj1cInByaW1hcnlcIj5tZGktaW5mb3JtYXRpb24tb3V0bGluZTwvdi1pY29uPlxuICAgICAgICAgICAgICAgICAgICBJbmZvcm1hdGlvbnMgY2zDqXNcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPHYtYnRuLXRvZ2dsZSB2LW1vZGVsPVwic2VsZWN0ZWRJbmZvUXVhcnRlclwiIG1hbmRhdG9yeSBkZW5zZSBjb2xvcj1cInByaW1hcnlcIiBjbGFzcz1cIm15LTBcIj5cbiAgICAgICAgICAgICAgICAgICAgPHYtYnRuIHZhbHVlPVwiQW5udWVsXCIgc21hbGw+QW5udWVsPC92LWJ0bj5cbiAgICAgICAgICAgICAgICAgICAgPHYtYnRuIHZhbHVlPVwiVDFcIiBzbWFsbD5UMTwvdi1idG4+XG4gICAgICAgICAgICAgICAgICAgIDx2LWJ0biB2YWx1ZT1cIlQyXCIgc21hbGw+VDI8L3YtYnRuPlxuICAgICAgICAgICAgICAgICAgICA8di1idG4gdmFsdWU9XCJUM1wiIHNtYWxsPlQzPC92LWJ0bj5cbiAgICAgICAgICAgICAgICAgICAgPHYtYnRuIHZhbHVlPVwiVDRcIiBzbWFsbD5UNDwvdi1idG4+XG4gICAgICAgICAgICAgICAgICA8L3YtYnRuLXRvZ2dsZT5cbiAgICAgICAgICAgICAgICA8L3YtY2FyZC10aXRsZT5cbiAgICAgICAgICAgICAgICA8di1kaXZpZGVyPjwvdi1kaXZpZGVyPlxuICAgICAgICAgICAgICAgIDx2LWNhcmQtdGV4dD5cbiAgICAgICAgICAgICAgICAgIDx2LXNpbXBsZS10YWJsZSBkZW5zZT5cbiAgICAgICAgICAgICAgICAgICAgPHRib2R5PlxuICAgICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImZvbnQtd2VpZ2h0LW1lZGl1bVwiPlDDqXJpb2RlIHPDqWxlY3Rpb25uw6llPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRleHQtcmlnaHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHYtY2hpcCBzbWFsbCBjb2xvcj1cInByaW1hcnlcIiBsYWJlbCBvdXRsaW5lZCBjbGFzcz1cImZvbnQtd2VpZ2h0LWJvbGRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBzZWxlY3RlZEluZm9RdWFydGVyID09PSAnQW5udWVsJyA/ICdBbm7DqWUgJyArIGRhdGUgOiAnVHJpbWVzdHJlICcgKyBzZWxlY3RlZEluZm9RdWFydGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC92LWNoaXA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZm9udC13ZWlnaHQtbWVkaXVtXCI+TWFyZ2UgYsOpbsOpZmljaWFpcmU8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1yaWdodFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiA6Y2xhc3M9XCJjdXJyZW50SW5mb0RhdGEucHJvZml0TWFyZ2luID49IDAgPyAnc3VjY2Vzcy0tdGV4dCcgOiAnZXJyb3ItLXRleHQnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvbnQtd2VpZ2h0LWJvbGRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBjdXJyZW50SW5mb0RhdGEucHJvZml0TWFyZ2luLnRvRml4ZWQoMikgfX0lXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJmb250LXdlaWdodC1tZWRpdW1cIj5SYXRpbyBSZWNldHRlcy9Ew6lwZW5zZXM8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1yaWdodFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZvbnQtd2VpZ2h0LWJvbGQgcHJpbWFyeS0tdGV4dFwiPnt7IGN1cnJlbnRJbmZvRGF0YS5yYXRpby50b0ZpeGVkKDIpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICAgIDx0ciB2LWlmPVwic2VsZWN0ZWRJbmZvUXVhcnRlciA9PT0gJ0FubnVlbCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImZvbnQtd2VpZ2h0LW1lZGl1bVwiPlRyaW1lc3RyZSBsZSBwbHVzIHBlcmZvcm1hbnQ8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1yaWdodFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8di1jaGlwIHNtYWxsIDpjb2xvcj1cImdldFF1YXJ0ZXJDb2xvcihtb3N0UHJvZml0YWJsZVF1YXJ0ZXIpXCIgZGFyaz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBtb3N0UHJvZml0YWJsZVF1YXJ0ZXIgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC92LWNoaXA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgICAgPHRyIHYtc2hvdz1cInN0YXR1dCA9PSAncmVnbGVlJyB8fCBzdGF0dXQgPT0gJ2FsbCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImZvbnQtd2VpZ2h0LW1lZGl1bVwiPkVzdGltYXRpb24gVFZBIHt7IGN1cnJlbnRJbmZvRGF0YS50dmFEdWUgPj0gMCA/ICfDoCBwYXllcicgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAnY3LDqWRpdCcgfX08L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1yaWdodFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZvbnQtd2VpZ2h0LWJvbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjbGFzcz1cImN1cnJlbnRJbmZvRGF0YS50dmFEdWUgPj0gMCA/ICdvcmFuZ2UtLXRleHQnIDogJ3N1Y2Nlc3MtLXRleHQnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY3VycmVudEluZm9EYXRhLnR2YUR1ZS50b0xvY2FsZVN0cmluZyh1bmRlZmluZWQsIHsgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAyIH0pIH19IERIXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgICA8dHIgdi1zaG93PVwic3RhdHV0ID09ICdyZWdsZWUnIHx8IHN0YXR1dCA9PSAnYWxsJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZm9udC13ZWlnaHQtbWVkaXVtXCI+Q3LDqWFuY2VzIENsaWVudHM8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1yaWdodFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZvbnQtd2VpZ2h0LWJvbGQgc3VjY2Vzcy0tdGV4dFwiPnt7IENyZWFuY2VzLnRvTG9jYWxlU3RyaW5nKHVuZGVmaW5lZCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMlxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KSB9fSBESDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgICA8dHIgdi1zaG93PVwic3RhdHV0ID09ICdyZWdsZWUnIHx8IHN0YXR1dCA9PSAnYWxsJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZm9udC13ZWlnaHQtbWVkaXVtXCI+RGV0dGVzIEZvdXJuaXNzZXVyczwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LXJpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9udC13ZWlnaHQtYm9sZCBlcnJvci0tdGV4dFwiPnt7IERldHRlcy50b0xvY2FsZVN0cmluZyh1bmRlZmluZWQsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgfX0gREg8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgICAgICAgICAgICA8L3Ytc2ltcGxlLXRhYmxlPlxuICAgICAgICAgICAgICAgIDwvdi1jYXJkLXRleHQ+XG4gICAgICAgICAgICAgIDwvdi1jYXJkPlxuICAgICAgICAgICAgPC92LWNvbD5cblxuICAgICAgICAgICAgPHYtY29sIGNvbHM9XCIxMlwiIG1kPVwiNlwiPlxuICAgICAgICAgICAgICA8di1jYXJkIG91dGxpbmVkIGVsZXZhdGlvbj1cIjFcIj5cbiAgICAgICAgICAgICAgICA8di1jYXJkLXRpdGxlIGNsYXNzPVwic3VidGl0bGUtMSBzdWNjZXNzLS10ZXh0XCI+XG4gICAgICAgICAgICAgICAgICA8di1pY29uIGxlZnQgY29sb3I9XCJzdWNjZXNzXCI+bWRpLWNoYXJ0LWxpbmU8L3YtaWNvbj5cbiAgICAgICAgICAgICAgICAgIFBlcmZvcm1hbmNlIHBhciB0cmltZXN0cmVcbiAgICAgICAgICAgICAgICA8L3YtY2FyZC10aXRsZT5cbiAgICAgICAgICAgICAgICA8di1kaXZpZGVyPjwvdi1kaXZpZGVyPlxuICAgICAgICAgICAgICAgIDx2LWNhcmQtdGV4dD5cbiAgICAgICAgICAgICAgICAgIDxkaXYgdi1mb3I9XCJxdWFydGVyIGluIFsnVDEnLCAnVDInLCAnVDMnLCAnVDQnXVwiIDprZXk9XCJxdWFydGVyXCIgY2xhc3M9XCJtYi0zXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1zcGFjZS1iZXR3ZWVuIGFsaWduLWNlbnRlciBtYi0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjYXB0aW9uIGZvbnQtd2VpZ2h0LWJvbGRcIj57eyBxdWFydGVyIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2FwdGlvblwiPnt7IGdldFF1YXJ0ZXJEYXRhKHF1YXJ0ZXIpLlJlc3VsdGF0LnRvTG9jYWxlU3RyaW5nKHVuZGVmaW5lZCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAyXG4gICAgICAgICAgICAgICAgICAgICAgfSkgfX0gREg8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8di1wcm9ncmVzcy1saW5lYXIgOnZhbHVlPVwiZ2V0UXVhcnRlclBlcmNlbnRhZ2UocXVhcnRlcilcIlxuICAgICAgICAgICAgICAgICAgICAgIDpjb2xvcj1cImdldFF1YXJ0ZXJEYXRhKHF1YXJ0ZXIpLlJlc3VsdGF0ID49IDAgPyAnc3VjY2VzcycgOiAnZXJyb3InXCIgaGVpZ2h0PVwiOFwiIHJvdW5kZWQ+XG4gICAgICAgICAgICAgICAgICAgIDwvdi1wcm9ncmVzcy1saW5lYXI+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L3YtY2FyZC10ZXh0PlxuICAgICAgICAgICAgICA8L3YtY2FyZD5cbiAgICAgICAgICAgIDwvdi1jb2w+XG4gICAgICAgICAgPC92LXJvdz5cbiAgICAgICAgPC92LXRhYi1pdGVtPlxuXG4gICAgICAgIDwhLS0gVGFiIDI6IENoYXJ0cyAtLT5cbiAgICAgICAgPHYtdGFiLWl0ZW0gdmFsdWU9XCJ0YWItY2hhcnRzXCI+XG4gICAgICAgICAgPHYtcm93IGRlbnNlPlxuICAgICAgICAgICAgPHYtY29sIGNvbHM9XCIxMlwiIG1kPVwiNlwiPlxuICAgICAgICAgICAgICA8di1jYXJkIGVsZXZhdGlvbj1cIjJcIiBvdXRsaW5lZD5cbiAgICAgICAgICAgICAgICA8di1jYXJkLXRpdGxlIGNsYXNzPVwic3VidGl0bGUtMVwiPlxuICAgICAgICAgICAgICAgICAgPHYtaWNvbiBsZWZ0IGNvbG9yPVwicHJpbWFyeVwiPm1kaS1jaGFydC1waWU8L3YtaWNvbj5cbiAgICAgICAgICAgICAgICAgIFLDqXBhcnRpdGlvbiBSZWNldHRlcyB2cyBEw6lwZW5zZXNcbiAgICAgICAgICAgICAgICA8L3YtY2FyZC10aXRsZT5cbiAgICAgICAgICAgICAgICA8di1kaXZpZGVyPjwvdi1kaXZpZGVyPlxuICAgICAgICAgICAgICAgIDx2LWNhcmQtdGV4dD5cbiAgICAgICAgICAgICAgICAgIDx2LXJlc3BvbnNpdmUgd2lkdGg9XCIxMDAlXCIgc3R5bGU9XCJtaW4taGVpZ2h0OiA0MDBweFwiPlxuICAgICAgICAgICAgICAgICAgICA8Y29tcG9uZW50IHYtaWY9XCJzaG93UGllQ2hhcnRcIiA6aXM9XCJjaGFydFwiIDprZXk9XCJjaGFydEtleVwiIDpwYXRoLW9wdGlvbj1cInBpZUNoYXJ0T3B0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCI0MDBweFwiIHdpZHRoPVwiMTAwJVwiPjwvY29tcG9uZW50PlxuICAgICAgICAgICAgICAgICAgPC92LXJlc3BvbnNpdmU+XG4gICAgICAgICAgICAgICAgPC92LWNhcmQtdGV4dD5cbiAgICAgICAgICAgICAgPC92LWNhcmQ+XG4gICAgICAgICAgICA8L3YtY29sPlxuXG4gICAgICAgICAgICA8di1jb2wgY29scz1cIjEyXCIgbWQ9XCI2XCI+XG4gICAgICAgICAgICAgIDx2LWNhcmQgZWxldmF0aW9uPVwiMlwiIG91dGxpbmVkPlxuICAgICAgICAgICAgICAgIDx2LWNhcmQtdGl0bGUgY2xhc3M9XCJzdWJ0aXRsZS0xXCI+XG4gICAgICAgICAgICAgICAgICA8di1pY29uIGxlZnQgY29sb3I9XCJpbmRpZ29cIj5tZGktY2hhcnQtYmFyPC92LWljb24+XG4gICAgICAgICAgICAgICAgICBDb21wYXJhaXNvbiB0cmltZXN0cmllbGxlIC0gQ0FcbiAgICAgICAgICAgICAgICA8L3YtY2FyZC10aXRsZT5cbiAgICAgICAgICAgICAgICA8di1kaXZpZGVyPjwvdi1kaXZpZGVyPlxuICAgICAgICAgICAgICAgIDx2LWNhcmQtdGV4dD5cbiAgICAgICAgICAgICAgICAgIDx2LXJlc3BvbnNpdmUgd2lkdGg9XCIxMDAlXCIgc3R5bGU9XCJtaW4taGVpZ2h0OiA0MDBweFwiPlxuICAgICAgICAgICAgICAgICAgICA8Y29tcG9uZW50IHYtaWY9XCJzaG93QmFyQ2hhcnRcIiA6aXM9XCJjaGFydFwiIDprZXk9XCJjaGFydEtleVwiIDpwYXRoLW9wdGlvbj1cImJhckNoYXJ0T3B0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCI0MDBweFwiIHdpZHRoPVwiMTAwJVwiPjwvY29tcG9uZW50PlxuICAgICAgICAgICAgICAgICAgPC92LXJlc3BvbnNpdmU+XG4gICAgICAgICAgICAgICAgPC92LWNhcmQtdGV4dD5cbiAgICAgICAgICAgICAgPC92LWNhcmQ+XG4gICAgICAgICAgICA8L3YtY29sPlxuXG4gICAgICAgICAgICA8di1jb2wgY29scz1cIjEyXCI+XG4gICAgICAgICAgICAgIDx2LWNhcmQgZWxldmF0aW9uPVwiMlwiIG91dGxpbmVkPlxuICAgICAgICAgICAgICAgIDx2LWNhcmQtdGl0bGUgY2xhc3M9XCJzdWJ0aXRsZS0xXCI+XG4gICAgICAgICAgICAgICAgICA8di1pY29uIGxlZnQgY29sb3I9XCJvcmFuZ2VcIj5tZGktY2hhcnQtbGluZTwvdi1pY29uPlxuICAgICAgICAgICAgICAgICAgw4l2b2x1dGlvbiB0cmltZXN0cmllbGxlXG4gICAgICAgICAgICAgICAgPC92LWNhcmQtdGl0bGU+XG4gICAgICAgICAgICAgICAgPHYtZGl2aWRlcj48L3YtZGl2aWRlcj5cbiAgICAgICAgICAgICAgICA8di1jYXJkLXRleHQ+XG4gICAgICAgICAgICAgICAgICA8di1yZXNwb25zaXZlIHdpZHRoPVwiMTAwJVwiIHN0eWxlPVwibWluLWhlaWdodDogNDAwcHhcIj5cbiAgICAgICAgICAgICAgICAgICAgPGNvbXBvbmVudCB2LWlmPVwic2hvd0xpbmVDaGFydFwiIDppcz1cImNoYXJ0XCIgOmtleT1cImNoYXJ0S2V5XCIgOnBhdGgtb3B0aW9uPVwibGluZUNoYXJ0T3B0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCI0MDBweFwiIHdpZHRoPVwiMTAwJVwiPjwvY29tcG9uZW50PlxuICAgICAgICAgICAgICAgICAgPC92LXJlc3BvbnNpdmU+XG4gICAgICAgICAgICAgICAgPC92LWNhcmQtdGV4dD5cbiAgICAgICAgICAgICAgPC92LWNhcmQ+XG4gICAgICAgICAgICA8L3YtY29sPlxuICAgICAgICAgIDwvdi1yb3c+XG4gICAgICAgIDwvdi10YWItaXRlbT5cblxuICAgICAgICA8IS0tIFRhYiAzOiBRdWFydGVybHkgQ29tcGFyaXNvbiAtLT5cbiAgICAgICAgPHYtdGFiLWl0ZW0gdmFsdWU9XCJ0YWItcXVhcnRlcmx5XCI+XG4gICAgICAgICAgPHYtcm93IGRlbnNlPlxuICAgICAgICAgICAgPHYtY29sIGNvbHM9XCIxMlwiPlxuICAgICAgICAgICAgICA8di1jYXJkIG91dGxpbmVkIGVsZXZhdGlvbj1cIjFcIiBjbGFzcz1cIm1iLTNcIj5cbiAgICAgICAgICAgICAgICA8di1jYXJkLXRpdGxlIGNsYXNzPVwic3VidGl0bGUtMSBwcmltYXJ5LS10ZXh0XCI+XG4gICAgICAgICAgICAgICAgICA8di1pY29uIGxlZnQgY29sb3I9XCJwcmltYXJ5XCI+bWRpLWNhbGVuZGFyLXJhbmdlPC92LWljb24+XG4gICAgICAgICAgICAgICAgICBTw6lsZWN0aW9ubmVyIHVuIHRyaW1lc3RyZVxuICAgICAgICAgICAgICAgIDwvdi1jYXJkLXRpdGxlPlxuICAgICAgICAgICAgICAgIDx2LWRpdmlkZXI+PC92LWRpdmlkZXI+XG4gICAgICAgICAgICAgICAgPHYtY2FyZC10ZXh0PlxuICAgICAgICAgICAgICAgICAgPHYtYnRuLXRvZ2dsZSB2LW1vZGVsPVwiVF90cmltZXN0cmllbFwiIG1hbmRhdG9yeSBjb2xvcj1cInByaW1hcnlcIiBjbGFzcz1cImQtZmxleCBmbGV4LXdyYXBcIj5cbiAgICAgICAgICAgICAgICAgICAgPHYtYnRuIHZhbHVlPVwiVDFcIiBjbGFzcz1cImZsZXgtZ3Jvdy0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHYtaWNvbiBsZWZ0IHNtYWxsPm1kaS1jYWxlbmRhcjwvdi1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgIFQxIChKYW4tTWFyKVxuICAgICAgICAgICAgICAgICAgICA8L3YtYnRuPlxuICAgICAgICAgICAgICAgICAgICA8di1idG4gdmFsdWU9XCJUMlwiIGNsYXNzPVwiZmxleC1ncm93LTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8di1pY29uIGxlZnQgc21hbGw+bWRpLWNhbGVuZGFyPC92LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgVDIgKEF2ci1KdWkpXG4gICAgICAgICAgICAgICAgICAgIDwvdi1idG4+XG4gICAgICAgICAgICAgICAgICAgIDx2LWJ0biB2YWx1ZT1cIlQzXCIgY2xhc3M9XCJmbGV4LWdyb3ctMVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDx2LWljb24gbGVmdCBzbWFsbD5tZGktY2FsZW5kYXI8L3YtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICBUMyAoSnVsLVNlcClcbiAgICAgICAgICAgICAgICAgICAgPC92LWJ0bj5cbiAgICAgICAgICAgICAgICAgICAgPHYtYnRuIHZhbHVlPVwiVDRcIiBjbGFzcz1cImZsZXgtZ3Jvdy0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHYtaWNvbiBsZWZ0IHNtYWxsPm1kaS1jYWxlbmRhcjwvdi1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgIFQ0IChPY3QtRMOpYylcbiAgICAgICAgICAgICAgICAgICAgPC92LWJ0bj5cbiAgICAgICAgICAgICAgICAgIDwvdi1idG4tdG9nZ2xlPlxuICAgICAgICAgICAgICAgIDwvdi1jYXJkLXRleHQ+XG4gICAgICAgICAgICAgIDwvdi1jYXJkPlxuICAgICAgICAgICAgPC92LWNvbD5cblxuICAgICAgICAgICAgPCEtLSBRdWFydGVybHkgRGV0YWlscyAtLT5cbiAgICAgICAgICAgIDx2LWNvbCBjb2xzPVwiMTJcIiBzbT1cIjZcIiBtZD1cIjNcIj5cbiAgICAgICAgICAgICAgPHYtY2FyZCBvdXRsaW5lZCBlbGV2YXRpb249XCIyXCI+XG4gICAgICAgICAgICAgICAgPHYtY2FyZC10ZXh0IGNsYXNzPVwidGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgIDx2LWljb24gc2l6ZT1cIjQ4XCIgY29sb3I9XCJpbmRpZ29cIiBjbGFzcz1cIm1iLTJcIj5tZGktY2hhcnQtdGltZWxpbmUtdmFyaWFudDwvdi1pY29uPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm92ZXJsaW5lIGluZGlnby0tdGV4dFwiPkNBIC0ge3sgVF90cmltZXN0cmllbCB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRpc3BsYXktMSBmb250LXdlaWdodC1ib2xkIGluZGlnby0tdGV4dFwiPlxuICAgICAgICAgICAgICAgICAgICB7eyBUX0NBLnRvTG9jYWxlU3RyaW5nKHVuZGVmaW5lZCwgeyBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDIgfSkgfX1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcHRpb25cIj5ESDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvdi1jYXJkLXRleHQ+XG4gICAgICAgICAgICAgIDwvdi1jYXJkPlxuICAgICAgICAgICAgPC92LWNvbD5cblxuICAgICAgICAgICAgPHYtY29sIGNvbHM9XCIxMlwiIHNtPVwiNlwiIG1kPVwiM1wiPlxuICAgICAgICAgICAgICA8di1jYXJkIG91dGxpbmVkIGVsZXZhdGlvbj1cIjJcIj5cbiAgICAgICAgICAgICAgICA8di1jYXJkLXRleHQgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgPHYtaWNvbiBzaXplPVwiNDhcIiBjb2xvcj1cInN1Y2Nlc3NcIiBjbGFzcz1cIm1iLTJcIj5tZGktY2FzaC1wbHVzPC92LWljb24+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwib3ZlcmxpbmUgc3VjY2Vzcy0tdGV4dFwiPlJlY2V0dGVzIC0ge3sgVF90cmltZXN0cmllbCB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRpc3BsYXktMSBmb250LXdlaWdodC1ib2xkIHN1Y2Nlc3MtLXRleHRcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgVF9SZWNldHRlcy50b0xvY2FsZVN0cmluZyh1bmRlZmluZWQsIHsgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAyIH0pIH19XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXB0aW9uXCI+REg8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L3YtY2FyZC10ZXh0PlxuICAgICAgICAgICAgICA8L3YtY2FyZD5cbiAgICAgICAgICAgIDwvdi1jb2w+XG5cbiAgICAgICAgICAgIDx2LWNvbCBjb2xzPVwiMTJcIiBzbT1cIjZcIiBtZD1cIjNcIj5cbiAgICAgICAgICAgICAgPHYtY2FyZCBvdXRsaW5lZCBlbGV2YXRpb249XCIyXCI+XG4gICAgICAgICAgICAgICAgPHYtY2FyZC10ZXh0IGNsYXNzPVwidGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgIDx2LWljb24gc2l6ZT1cIjQ4XCIgY29sb3I9XCJyZWRcIiBjbGFzcz1cIm1iLTJcIj5tZGktY2FzaC1taW51czwvdi1pY29uPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm92ZXJsaW5lIHJlZC0tdGV4dFwiPkTDqXBlbnNlcyAtIHt7IFRfdHJpbWVzdHJpZWwgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkaXNwbGF5LTEgZm9udC13ZWlnaHQtYm9sZCByZWQtLXRleHRcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgVF9EZXBlbnNlcy50b0xvY2FsZVN0cmluZyh1bmRlZmluZWQsIHsgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAyIH0pIH19XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXB0aW9uXCI+REg8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L3YtY2FyZC10ZXh0PlxuICAgICAgICAgICAgICA8L3YtY2FyZD5cbiAgICAgICAgICAgIDwvdi1jb2w+XG5cbiAgICAgICAgICAgIDx2LWNvbCBjb2xzPVwiMTJcIiBzbT1cIjZcIiBtZD1cIjNcIiB2LXNob3c9XCJzdGF0dXQgPT0gJ3JlZ2xlZScgfHwgc3RhdHV0ID09ICdhbGwnXCI+XG4gICAgICAgICAgICAgIDx2LWNhcmQgb3V0bGluZWQgZWxldmF0aW9uPVwiMlwiPlxuICAgICAgICAgICAgICAgIDx2LWNhcmQtdGV4dCBjbGFzcz1cInRleHQtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICA8di1pY29uIHNpemU9XCI0OFwiIGNvbG9yPVwib3JhbmdlXCIgY2xhc3M9XCJtYi0yXCI+bWRpLXBlcmNlbnQtb3V0bGluZTwvdi1pY29uPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm92ZXJsaW5lIG9yYW5nZS0tdGV4dFwiPlRWQSAtIHt7IFRfdHJpbWVzdHJpZWwgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkaXNwbGF5LTEgZm9udC13ZWlnaHQtYm9sZCBvcmFuZ2UtLXRleHRcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgVF9UVkEudG9Mb2NhbGVTdHJpbmcodW5kZWZpbmVkLCB7IG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMiB9KSB9fVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FwdGlvblwiPkRIPC9kaXY+XG4gICAgICAgICAgICAgICAgPC92LWNhcmQtdGV4dD5cbiAgICAgICAgICAgICAgPC92LWNhcmQ+XG4gICAgICAgICAgICA8L3YtY29sPlxuXG4gICAgICAgICAgICA8di1jb2wgY29scz1cIjEyXCI+XG4gICAgICAgICAgICAgIDx2LWNhcmQgb3V0bGluZWQgZWxldmF0aW9uPVwiMlwiPlxuICAgICAgICAgICAgICAgIDx2LWNhcmQtdGV4dCBjbGFzcz1cInRleHQtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICA8di1pY29uIHNpemU9XCI2NFwiIDpjb2xvcj1cIlRfUmVzdWx0YXQgPj0gMCA/ICdwdXJwbGUnIDogJ3JlZCdcIiBjbGFzcz1cIm1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgVF9SZXN1bHRhdCA+PSAwID8gJ21kaS10cmVuZGluZy11cCcgOiAnbWRpLXRyZW5kaW5nLWRvd24nIH19XG4gICAgICAgICAgICAgICAgICA8L3YtaWNvbj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvdmVybGluZVwiIDpjbGFzcz1cIlRfUmVzdWx0YXQgPj0gMCA/ICdwdXJwbGUtLXRleHQnIDogJ3JlZC0tdGV4dCdcIj5cbiAgICAgICAgICAgICAgICAgICAgUsOpc3VsdGF0IC0ge3sgVF90cmltZXN0cmllbCB9fVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGlzcGxheS0yIGZvbnQtd2VpZ2h0LWJvbGRcIiA6Y2xhc3M9XCJUX1Jlc3VsdGF0ID49IDAgPyAncHVycGxlLS10ZXh0JyA6ICdyZWQtLXRleHQnXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IFRfUmVzdWx0YXQudG9Mb2NhbGVTdHJpbmcodW5kZWZpbmVkLCB7IG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMiB9KSB9fSBESFxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGUgbXQtMlwiPlxuICAgICAgICAgICAgICAgICAgICBNYXJnZToge3sgcXVhcnRlclByb2ZpdE1hcmdpbi50b0ZpeGVkKDIpIH19JVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC92LWNhcmQtdGV4dD5cbiAgICAgICAgICAgICAgPC92LWNhcmQ+XG4gICAgICAgICAgICA8L3YtY29sPlxuICAgICAgICAgIDwvdi1yb3c+XG4gICAgICAgIDwvdi10YWItaXRlbT5cblxuICAgICAgICA8IS0tIFRhYiA0OiBGaW5hbmNpYWwgU2l0dWF0aW9uIChEZXR0ZXMgJiBDcsOpYW5jZXMpIC0tPlxuICAgICAgICA8di10YWItaXRlbSB2YWx1ZT1cInRhYi1maW5hbmNpYWxcIj5cbiAgICAgICAgICA8di1yb3cgZGVuc2U+XG4gICAgICAgICAgICA8IS0tIFRvcCBTdW1tYXJ5IENhcmRzIEltcHJvdmVkIHdpdGggQnJlYWtkb3duIC0tPlxuICAgICAgICAgICAgPHYtY29sIGNvbHM9XCIxMlwiIG1kPVwiNFwiPlxuICAgICAgICAgICAgICA8di1jYXJkIG91dGxpbmVkIGNsYXNzPVwicm91bmRlZC1sZyBmaWxsLWhlaWdodFwiIGVsZXZhdGlvbj1cIjJcIj5cbiAgICAgICAgICAgICAgICA8di1jYXJkLXRleHQgY2xhc3M9XCJwYS00XCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktc3BhY2UtYmV0d2VlbiBhbGlnbi1jZW50ZXIgbWItNFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwib3ZlcmxpbmUgc3VjY2Vzcy0tdGV4dCBmb250LXdlaWdodC1ib2xkXCI+Q1LDiUFOQ0VTIENMSUVOVFM8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPHYtYXZhdGFyIHNpemU9XCI0NFwiIGNvbG9yPVwic3VjY2VzcyBsaWdodGVuLTVcIiBjbGFzcz1cInJvdW5kZWQtbGdcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8di1pY29uIGNvbG9yPVwic3VjY2Vzc1wiPm1kaS1oYW5kLWNvaW48L3YtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPC92LWF2YXRhcj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktc3BhY2UtYmV0d2VlbiBtYi0xXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2FwdGlvbiBncmV5LS10ZXh0XCI+RmFjdHVyZXMgKHt7IE5CQ3JlYW5jZXNGYWN0dXJlcyB9fSk8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2FwdGlvbiBmb250LXdlaWdodC1ib2xkXCI+e3sgQ3JlYW5jZXNGYWN0dXJlcy50b0xvY2FsZVN0cmluZyh1bmRlZmluZWQsIHtcbiAgICAgICAgICAgICAgICAgICAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDJcbiAgICAgICAgICAgICAgICAgICAgfSkgfX0gREg8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDx2LWRpdmlkZXIgY2xhc3M9XCJteS0yXCI+PC92LWRpdmlkZXI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktc3BhY2UtYmV0d2VlbiBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2FwdGlvbiBncmV5LS10ZXh0XCI+QXZvaXJzL1JldG91cnMgKHt7IE5CQ3JlYW5jZXNBdm9pcnMgfX0pPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNhcHRpb24gZm9udC13ZWlnaHQtYm9sZCBlcnJvci0tdGV4dFwiPi0ge3tcbiAgICAgICAgICAgICAgICAgICAgICBNYXRoLmFicyhDcmVhbmNlc0F2b2lycykudG9Mb2NhbGVTdHJpbmcodW5kZWZpbmVkLCB7IG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMiB9KSB9fSBESDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtNFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGlzcGxheS0xIGZvbnQtd2VpZ2h0LWJsYWNrIG1iLTEgc3VjY2Vzcy0tdGV4dFwiPlxuICAgICAgICAgICAgICAgICAgICAgIHt7IENyZWFuY2VzLnRvTG9jYWxlU3RyaW5nKHVuZGVmaW5lZCwgeyBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDIgfSkgfX0gPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2FwdGlvbiBncmV5LS10ZXh0IGZvbnQtd2VpZ2h0LXJlZ3VsYXJcIj5ESDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXB0aW9uIHN1Y2Nlc3MtLXRleHQgZC1mbGV4IGFsaWduLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgIDx2LWljb24gc21hbGwgY29sb3I9XCJzdWNjZXNzXCIgY2xhc3M9XCJtci0xXCI+bWRpLWFycm93LXVwLWJvbGQ8L3YtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICBUb3RhbCBuZXQgw6AgZW5jYWlzc2VyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC92LWNhcmQtdGV4dD5cbiAgICAgICAgICAgICAgPC92LWNhcmQ+XG4gICAgICAgICAgICA8L3YtY29sPlxuXG4gICAgICAgICAgICA8di1jb2wgY29scz1cIjEyXCIgbWQ9XCI0XCI+XG4gICAgICAgICAgICAgIDx2LWNhcmQgb3V0bGluZWQgY2xhc3M9XCJyb3VuZGVkLWxnIGZpbGwtaGVpZ2h0XCIgZWxldmF0aW9uPVwiMlwiPlxuICAgICAgICAgICAgICAgIDx2LWNhcmQtdGV4dCBjbGFzcz1cInBhLTRcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1zcGFjZS1iZXR3ZWVuIGFsaWduLWNlbnRlciBtYi00XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvdmVybGluZSBlcnJvci0tdGV4dCBmb250LXdlaWdodC1ib2xkXCI+REVUVEVTIEZPVVJOSVNTRVVSUzwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8di1hdmF0YXIgc2l6ZT1cIjQ0XCIgY29sb3I9XCJlcnJvciBsaWdodGVuLTVcIiBjbGFzcz1cInJvdW5kZWQtbGdcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8di1pY29uIGNvbG9yPVwiZXJyb3JcIj5tZGktaGFuZC13YXRlcjwvdi1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8L3YtYXZhdGFyPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1zcGFjZS1iZXR3ZWVuIG1iLTFcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjYXB0aW9uIGdyZXktLXRleHRcIj5GYWN0dXJlcyAoe3sgTkJEZXR0ZXNGYWN0dXJlcyB9fSk8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2FwdGlvbiBmb250LXdlaWdodC1ib2xkXCI+e3sgRGV0dGVzRmFjdHVyZXMudG9Mb2NhbGVTdHJpbmcodW5kZWZpbmVkLCB7XG4gICAgICAgICAgICAgICAgICAgICAgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAyXG4gICAgICAgICAgICAgICAgICAgIH0pIH19IERIPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8di1kaXZpZGVyIGNsYXNzPVwibXktMlwiPjwvdi1kaXZpZGVyPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LXNwYWNlLWJldHdlZW4gbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNhcHRpb24gZ3JleS0tdGV4dFwiPkF2b2lycy9SZXRvdXJzICh7eyBOQkRldHRlc0F2b2lycyB9fSk8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2FwdGlvbiBmb250LXdlaWdodC1ib2xkIHN1Y2Nlc3MtLXRleHRcIj57eyBEZXR0ZXNBdm9pcnMudG9Mb2NhbGVTdHJpbmcodW5kZWZpbmVkLCB7XG4gICAgICAgICAgICAgICAgICAgICAgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAyXG4gICAgICAgICAgICAgICAgICAgIH0pIH19IERIPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC00XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkaXNwbGF5LTEgZm9udC13ZWlnaHQtYmxhY2sgbWItMSBlcnJvci0tdGV4dFwiPlxuICAgICAgICAgICAgICAgICAgICAgIHt7IERldHRlcy50b0xvY2FsZVN0cmluZyh1bmRlZmluZWQsIHsgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAyIH0pIH19IDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNhcHRpb24gZ3JleS0tdGV4dCBmb250LXdlaWdodC1yZWd1bGFyXCI+REg8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FwdGlvbiBlcnJvci0tdGV4dCBkLWZsZXggYWxpZ24tY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHYtaWNvbiBzbWFsbCBjb2xvcj1cImVycm9yXCIgY2xhc3M9XCJtci0xXCI+bWRpLWFycm93LWRvd24tYm9sZDwvdi1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgIFRvdGFsIG5ldCDDoCBwYXllclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvdi1jYXJkLXRleHQ+XG4gICAgICAgICAgICAgIDwvdi1jYXJkPlxuICAgICAgICAgICAgPC92LWNvbD5cblxuICAgICAgICAgICAgPHYtY29sIGNvbHM9XCIxMlwiIG1kPVwiNFwiPlxuICAgICAgICAgICAgICA8di1jYXJkIG91dGxpbmVkIGNsYXNzPVwicm91bmRlZC1sZyBmaWxsLWhlaWdodFwiIGVsZXZhdGlvbj1cIjJcIlxuICAgICAgICAgICAgICAgIDpjbGFzcz1cIk5ldExhdGVudCA+PSAwID8gJ2JsdWUtLXRleHQnIDogJ29yYW5nZS0tdGV4dCdcIj5cbiAgICAgICAgICAgICAgICA8di1jYXJkLXRleHQgY2xhc3M9XCJwYS00XCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktc3BhY2UtYmV0d2VlbiBhbGlnbi1jZW50ZXIgbWItNFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwib3ZlcmxpbmUgZm9udC13ZWlnaHQtYm9sZFwiIDpjbGFzcz1cIk5ldExhdGVudCA+PSAwID8gJ2JsdWUtLXRleHQnIDogJ29yYW5nZS0tdGV4dCdcIj5TT0xERVxuICAgICAgICAgICAgICAgICAgICAgIExBVEVOVDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8di1hdmF0YXIgc2l6ZT1cIjQ0XCIgOmNvbG9yPVwiTmV0TGF0ZW50ID49IDAgPyAnYmx1ZSBsaWdodGVuLTUnIDogJ29yYW5nZSBsaWdodGVuLTUnXCJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInJvdW5kZWQtbGdcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8di1pY29uIDpjb2xvcj1cIk5ldExhdGVudCA+PSAwID8gJ2JsdWUnIDogJ29yYW5nZSdcIj5tZGktc2NhbGUtYmFsYW5jZTwvdi1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8L3YtYXZhdGFyPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi02XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkaXNwbGF5LTEgZm9udC13ZWlnaHQtYmxhY2sgbWItMVwiXG4gICAgICAgICAgICAgICAgICAgICAgOmNsYXNzPVwiTmV0TGF0ZW50ID49IDAgPyAnYmx1ZS0tdGV4dCcgOiAnb3JhbmdlLS10ZXh0J1wiPlxuICAgICAgICAgICAgICAgICAgICAgIHt7IE5ldExhdGVudC50b0xvY2FsZVN0cmluZyh1bmRlZmluZWQsIHsgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAyIH0pIH19IDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNhcHRpb24gZ3JleS0tdGV4dCBmb250LXdlaWdodC1yZWd1bGFyXCI+REg8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FwdGlvbiBkLWZsZXggYWxpZ24tY2VudGVyXCIgOmNsYXNzPVwiTmV0TGF0ZW50ID49IDAgPyAnYmx1ZS0tdGV4dCcgOiAnb3JhbmdlLS10ZXh0J1wiPlxuICAgICAgICAgICAgICAgICAgICAgIDx2LWljb24gc21hbGwgOmNvbG9yPVwiTmV0TGF0ZW50ID49IDAgPyAnYmx1ZScgOiAnb3JhbmdlJ1wiIGNsYXNzPVwibXItMVwiPnt7IE5ldExhdGVudCA+PSAwID9cbiAgICAgICAgICAgICAgICAgICAgICAgICdtZGktdGh1bWItdXAnIDogJ21kaS1hbGVydCcgfX08L3YtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICB7eyBOZXRMYXRlbnQgPj0gMCA/ICdUcsOpc29yZXJpZSBwb3NpdGl2ZScgOiAnRMOpZmljaXQgcG90ZW50aWVsJyB9fVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICA8di1wcm9ncmVzcy1saW5lYXJcbiAgICAgICAgICAgICAgICAgICAgOnZhbHVlPVwiRGV0dGVzID4gMCA/IChNYXRoLmFicyhDcmVhbmNlcykgLyAoTWF0aC5hYnMoQ3JlYW5jZXMpICsgTWF0aC5hYnMoRGV0dGVzKSkpICogMTAwIDogMTAwXCJcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMTBcIiByb3VuZGVkIDpjb2xvcj1cIk5ldExhdGVudCA+PSAwID8gJ2JsdWUnIDogJ29yYW5nZSdcIj48L3YtcHJvZ3Jlc3MtbGluZWFyPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LXNwYWNlLWJldHdlZW4gbXQtMVwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNhcHRpb24gZ3JleS0tdGV4dFwiPkNyw6lhbmNlczwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjYXB0aW9uIGdyZXktLXRleHRcIj5EZXR0ZXM8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L3YtY2FyZC10ZXh0PlxuICAgICAgICAgICAgICA8L3YtY2FyZD5cbiAgICAgICAgICAgIDwvdi1jb2w+XG5cbiAgICAgICAgICAgIDwhLS0gTGlzdHMgd2l0aCBUYWJzIC0tPlxuICAgICAgICAgICAgPHYtY29sIGNvbHM9XCIxMlwiIGNsYXNzPVwibXQtNFwiPlxuICAgICAgICAgICAgICA8di1jYXJkIG91dGxpbmVkIGVsZXZhdGlvbj1cIjJcIj5cbiAgICAgICAgICAgICAgICA8di10YWJzIGJhY2tncm91bmQtY29sb3I9XCJ0cmFuc3BhcmVudFwiIGNvbG9yPVwicHJpbWFyeVwiIGdyb3c+XG4gICAgICAgICAgICAgICAgICA8di10YWI+XG4gICAgICAgICAgICAgICAgICAgIDx2LWljb24gbGVmdCBjb2xvcj1cInN1Y2Nlc3NcIj5tZGktY2hlY2stY2lyY2xlLW91dGxpbmU8L3YtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgRmFjdHVyZXMgQ2xpZW50cyAow4AgcmVjZXZvaXIpXG4gICAgICAgICAgICAgICAgICA8L3YtdGFiPlxuICAgICAgICAgICAgICAgICAgPHYtdGFiPlxuICAgICAgICAgICAgICAgICAgICA8di1pY29uIGxlZnQgY29sb3I9XCJlcnJvclwiPm1kaS1hbGVydC1jaXJjbGUtb3V0bGluZTwvdi1pY29uPlxuICAgICAgICAgICAgICAgICAgICBGYWN0dXJlcyBGb3Vybmlzc2V1cnMgKMOAIHBheWVyKVxuICAgICAgICAgICAgICAgICAgPC92LXRhYj5cblxuICAgICAgICAgICAgICAgICAgPHYtdGFiLWl0ZW0+XG4gICAgICAgICAgICAgICAgICAgIDx2LWNhcmQgZmxhdD5cbiAgICAgICAgICAgICAgICAgICAgICA8di1jYXJkLXRleHQgY2xhc3M9XCJwYS0wXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8d2lkZ2V0cy1saXN0RmFjdHVyZUltcGV5ZUNsaWVudCAvPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdi1jYXJkLXRleHQ+XG4gICAgICAgICAgICAgICAgICAgIDwvdi1jYXJkPlxuICAgICAgICAgICAgICAgICAgPC92LXRhYi1pdGVtPlxuXG4gICAgICAgICAgICAgICAgICA8di10YWItaXRlbT5cbiAgICAgICAgICAgICAgICAgICAgPHYtY2FyZCBmbGF0PlxuICAgICAgICAgICAgICAgICAgICAgIDx2LWNhcmQtdGV4dCBjbGFzcz1cInBhLTBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx3aWRnZXRzLWxpc3RGYWN0dXJlSW1wZXllRm91cm5pc3NldXIgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L3YtY2FyZC10ZXh0PlxuICAgICAgICAgICAgICAgICAgICA8L3YtY2FyZD5cbiAgICAgICAgICAgICAgICAgIDwvdi10YWItaXRlbT5cbiAgICAgICAgICAgICAgICA8L3YtdGFicz5cbiAgICAgICAgICAgICAgPC92LWNhcmQ+XG4gICAgICAgICAgICA8L3YtY29sPlxuICAgICAgICAgIDwvdi1yb3c+XG4gICAgICAgIDwvdi10YWItaXRlbT5cblxuICAgICAgPC92LXRhYnMtaXRlbXM+XG4gICAgPC92LWNvbnRhaW5lcj5cblxuICA8L2NhcmQtY2FyZD5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG5pbXBvcnQgYXhpb3MgZnJvbSBcImF4aW9zXCI7XG5pbXBvcnQgY29sb3JzIGZyb20gXCJ2dWV0aWZ5L2VzNS91dGlsL2NvbG9yc1wiO1xuaW1wb3J0IHdpZGdldHNNaXhpbiBmcm9tIFwiLi8uLi93aWRnZXRzTWl4aW5cIjtcblxuZXhwb3J0IGRlZmF1bHQge1xuICBtaXhpbnM6IFt3aWRnZXRzTWl4aW5dLFxuICBkYXRhOiAoKSA9PiAoe1xuICAgIGRhdGU6IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKSxcbiAgICBzdGF0dXQ6IFwicmVnbGVlXCIsXG4gICAgc2VsZWN0ZWRUYWI6IFwidGFiLW92ZXJ2aWV3XCIsXG4gICAgY2hhcnQ6IFwiXCIsXG5cbiAgICBDQTogMCxcbiAgICBSZWNldHRlczogMCxcbiAgICBEZXBlbnNlczogMCxcbiAgICBUVkE6IDAsXG4gICAgUmVzdWx0YXQ6IDAsXG5cbiAgICBUMTogeyBDQTogMCwgUmVjZXR0ZXM6IDAsIERlcGVuc2VzOiAwLCBUVkE6IDAsIFJlc3VsdGF0OiAwIH0sXG4gICAgVDI6IHsgQ0E6IDAsIFJlY2V0dGVzOiAwLCBEZXBlbnNlczogMCwgVFZBOiAwLCBSZXN1bHRhdDogMCB9LFxuICAgIFQzOiB7IENBOiAwLCBSZWNldHRlczogMCwgRGVwZW5zZXM6IDAsIFRWQTogMCwgUmVzdWx0YXQ6IDAgfSxcbiAgICBUNDogeyBDQTogMCwgUmVjZXR0ZXM6IDAsIERlcGVuc2VzOiAwLCBUVkE6IDAsIFJlc3VsdGF0OiAwIH0sXG5cbiAgICBUX3RyaW1lc3RyaWVsOiBcIlQxXCIsXG4gICAgVF9DQTogMCxcbiAgICBUX1JlY2V0dGVzOiAwLFxuICAgIFRfRGVwZW5zZXM6IDAsXG4gICAgVF9UVkE6IDAsXG4gICAgVF9SZXN1bHRhdDogMCxcblxuICAgIFRfVFZBOiAwLFxuICAgIFRfUmVzdWx0YXQ6IDAsXG5cbiAgICBDcmVhbmNlczogMCxcbiAgICBDcmVhbmNlc0ZhY3R1cmVzOiAwLFxuICAgIENyZWFuY2VzQXZvaXJzOiAwLFxuICAgIE5CQ3JlYW5jZXNGYWN0dXJlczogMCxcbiAgICBOQkNyZWFuY2VzQXZvaXJzOiAwLFxuXG4gICAgRGV0dGVzOiAwLFxuICAgIERldHRlc0ZhY3R1cmVzOiAwLFxuICAgIERldHRlc0F2b2lyczogMCxcbiAgICBOQkRldHRlc0ZhY3R1cmVzOiAwLFxuICAgIE5CRGV0dGVzQXZvaXJzOiAwLFxuXG4gICAgZmluYW5jaWFsQ2hhcnRPcHRpb246IG51bGwsXG4gICAgc2hvd0ZpbmFuY2lhbENoYXJ0OiBmYWxzZSxcblxuICAgIHNob3dQaWVDaGFydDogZmFsc2UsXG4gICAgc2hvd0JhckNoYXJ0OiBmYWxzZSxcbiAgICBzaG93TGluZUNoYXJ0OiBmYWxzZSxcbiAgICBjaGFydEtleTogMCxcbiAgICBzZWxlY3RlZEluZm9RdWFydGVyOiAnQW5udWVsJyxcbiAgfSksXG5cbiAgY29tcHV0ZWQ6IHtcbiAgICBCYXNlX3VybF93ZWIoKSB7XG4gICAgICByZXR1cm4gdGhpcy4kc3RvcmUuZ2V0dGVyc1tcImdldF9CYXNlX3VybFwiXTtcbiAgICB9LFxuXG4gICAgcHJvZml0TWFyZ2luKCkge1xuICAgICAgcmV0dXJuIHRoaXMuQ0EgPiAwID8gKHRoaXMuUmVzdWx0YXQgLyB0aGlzLkNBKSAqIDEwMCA6IDA7XG4gICAgfSxcblxuICAgIHF1YXJ0ZXJQcm9maXRNYXJnaW4oKSB7XG4gICAgICByZXR1cm4gdGhpcy5UX0NBID4gMCA/ICh0aGlzLlRfUmVzdWx0YXQgLyB0aGlzLlRfQ0EpICogMTAwIDogMDtcbiAgICB9LFxuXG4gICAgdHZhUmF0ZSgpIHtcbiAgICAgIHJldHVybiB0aGlzLkNBID4gMCA/ICh0aGlzLlRWQSAvIHRoaXMuQ0EpICogMTAwIDogMDtcbiAgICB9LFxuXG4gICAgcmV2ZW51ZUV4cGVuc2VSYXRpbygpIHtcbiAgICAgIHJldHVybiB0aGlzLkRlcGVuc2VzID4gMCA/IHRoaXMuUmVjZXR0ZXMgLyB0aGlzLkRlcGVuc2VzIDogMDtcbiAgICB9LFxuXG4gICAgbW9zdFByb2ZpdGFibGVRdWFydGVyKCkge1xuICAgICAgY29uc3QgcXVhcnRlcnMgPSBbJ1QxJywgJ1QyJywgJ1QzJywgJ1Q0J107XG4gICAgICByZXR1cm4gcXVhcnRlcnMucmVkdWNlKChtYXgsIHEpID0+XG4gICAgICAgIHRoaXNbcV0uUmVzdWx0YXQgPiB0aGlzW21heF0uUmVzdWx0YXQgPyBxIDogbWF4XG4gICAgICAgICwgJ1QxJyk7XG4gICAgfSxcblxuICAgIGN1cnJlbnRJbmZvRGF0YSgpIHtcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkSW5mb1F1YXJ0ZXIgPT09ICdBbm51ZWwnKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcHJvZml0TWFyZ2luOiB0aGlzLnByb2ZpdE1hcmdpbixcbiAgICAgICAgICByYXRpbzogdGhpcy5yZXZlbnVlRXhwZW5zZVJhdGlvLFxuICAgICAgICAgIHR2YUR1ZTogdGhpcy5UVkEgLy8gQW5udWFsIFRWQSBpcyBhbHJlYWR5IFJlY2V0dGVzIFRWQSAtIERlcGVuc2VzIFRWQSBsb2dpYyBmcm9tIGJhY2tlbmQgdXN1YWxseSwgb3Igd2UgY2FsY3VsYXRlIGRpZmZcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHFEYXRhID0gdGhpc1t0aGlzLnNlbGVjdGVkSW5mb1F1YXJ0ZXJdO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHByb2ZpdE1hcmdpbjogcURhdGEuQ0EgPiAwID8gKHFEYXRhLlJlc3VsdGF0IC8gcURhdGEuQ0EpICogMTAwIDogMCxcbiAgICAgICAgICByYXRpbzogcURhdGEuRGVwZW5zZXMgPiAwID8gcURhdGEuUmVjZXR0ZXMgLyBxRGF0YS5EZXBlbnNlcyA6IDAsXG4gICAgICAgICAgdHZhRHVlOiBxRGF0YS5UVkEgLy8gRGlzcGxheSB0aGUgcXVhcnRlcmx5IFRWQSB2YWx1ZSBkaXJlY3RseVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH0sXG5cbiAgICBOZXRMYXRlbnQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5DcmVhbmNlcyAtIHRoaXMuRGV0dGVzO1xuICAgIH0sXG5cbiAgICBjb3ZlcmFnZVJhdGlvKCkge1xuICAgICAgcmV0dXJuIHRoaXMuRGV0dGVzID4gMCA/ICgodGhpcy5DcmVhbmNlcyAvIHRoaXMuRGV0dGVzKSAqIDEwMCkudG9GaXhlZCgwKSA6ICcxMDArJztcbiAgICB9LFxuXG4gICAgcGllQ2hhcnRPcHRpb24oKSB7XG4gICAgICBjb25zdCBpc0RhcmsgPSB0aGlzLiR2dWV0aWZ5LnRoZW1lLmRhcms7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICd0cmFuc3BhcmVudCcsXG4gICAgICAgIHRleHRTdHlsZToge1xuICAgICAgICAgIGNvbG9yOiBpc0RhcmsgPyAnI2ZmZmZmZicgOiAnIzAwMDAwMCdcbiAgICAgICAgfSxcbiAgICAgICAgdG9vbHRpcDoge1xuICAgICAgICAgIHRyaWdnZXI6ICdpdGVtJyxcbiAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGlzRGFyayA/ICdyZ2JhKDUwLCA1MCwgNTAsIDAuOSknIDogJ3JnYmEoMjU1LCAyNTUsIDI1NSwgMC45KScsXG4gICAgICAgICAgYm9yZGVyQ29sb3I6IGlzRGFyayA/ICcjNTU1JyA6ICcjY2NjJyxcbiAgICAgICAgICB0ZXh0U3R5bGU6IHtcbiAgICAgICAgICAgIGNvbG9yOiBpc0RhcmsgPyAnI2ZmZmZmZicgOiAnIzAwMDAwMCdcbiAgICAgICAgICB9LFxuICAgICAgICAgIGZvcm1hdHRlcjogKHBhcmFtcykgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGAke3BhcmFtcy5uYW1lfTxici8+JHtwYXJhbXMudmFsdWUudG9Mb2NhbGVTdHJpbmcodW5kZWZpbmVkLCB7IG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMiB9KX0gREggKCR7cGFyYW1zLnBlcmNlbnR9JSlgO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbGVnZW5kOiB7XG4gICAgICAgICAgb3JpZW50OiAndmVydGljYWwnLFxuICAgICAgICAgIGxlZnQ6ICdsZWZ0JyxcbiAgICAgICAgICB0b3A6ICdjZW50ZXInLFxuICAgICAgICAgIHRleHRTdHlsZToge1xuICAgICAgICAgICAgY29sb3I6IGlzRGFyayA/ICcjZmZmZmZmJyA6ICcjMDAwMDAwJ1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgc2VyaWVzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ01vbnRhbnQnLFxuICAgICAgICAgICAgdHlwZTogJ3BpZScsXG4gICAgICAgICAgICByYWRpdXM6IFsnNDAlJywgJzcwJSddLFxuICAgICAgICAgICAgY2VudGVyOiBbJzYwJScsICc1MCUnXSxcbiAgICAgICAgICAgIGF2b2lkTGFiZWxPdmVybGFwOiBmYWxzZSxcbiAgICAgICAgICAgIGl0ZW1TdHlsZToge1xuICAgICAgICAgICAgICBib3JkZXJSYWRpdXM6IDEwLFxuICAgICAgICAgICAgICBib3JkZXJDb2xvcjogaXNEYXJrID8gJyMzMzMnIDogJyNmZmYnLFxuICAgICAgICAgICAgICBib3JkZXJXaWR0aDogMlxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxhYmVsOiB7XG4gICAgICAgICAgICAgIHNob3c6IHRydWUsXG4gICAgICAgICAgICAgIGZvcm1hdHRlcjogJ3tifToge2R9JScsXG4gICAgICAgICAgICAgIGNvbG9yOiBpc0RhcmsgPyAnI2ZmZmZmZicgOiAnIzAwMDAwMCdcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlbXBoYXNpczoge1xuICAgICAgICAgICAgICBsYWJlbDoge1xuICAgICAgICAgICAgICAgIHNob3c6IHRydWUsXG4gICAgICAgICAgICAgICAgZm9udFNpemU6ICcxOCcsXG4gICAgICAgICAgICAgICAgZm9udFdlaWdodDogJ2JvbGQnLFxuICAgICAgICAgICAgICAgIGNvbG9yOiBpc0RhcmsgPyAnI2ZmZmZmZicgOiAnIzAwMDAwMCdcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGRhdGE6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHZhbHVlOiBNYXRoLmFicyh0aGlzLlJlY2V0dGVzKSxcbiAgICAgICAgICAgICAgICBuYW1lOiAnUmVjZXR0ZXMnLFxuICAgICAgICAgICAgICAgIGl0ZW1TdHlsZTogeyBjb2xvcjogY29sb3JzLmdyZWVuLmJhc2UgfVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdmFsdWU6IE1hdGguYWJzKHRoaXMuRGVwZW5zZXMpLFxuICAgICAgICAgICAgICAgIG5hbWU6ICdEw6lwZW5zZXMnLFxuICAgICAgICAgICAgICAgIGl0ZW1TdHlsZTogeyBjb2xvcjogY29sb3JzLnJlZC5iYXNlIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfTtcbiAgICB9LFxuXG4gICAgYmFyQ2hhcnRPcHRpb24oKSB7XG4gICAgICBjb25zdCBpc0RhcmsgPSB0aGlzLiR2dWV0aWZ5LnRoZW1lLmRhcms7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICd0cmFuc3BhcmVudCcsXG4gICAgICAgIHRleHRTdHlsZToge1xuICAgICAgICAgIGNvbG9yOiBpc0RhcmsgPyAnI2ZmZmZmZicgOiAnIzAwMDAwMCdcbiAgICAgICAgfSxcbiAgICAgICAgdG9vbHRpcDoge1xuICAgICAgICAgIHRyaWdnZXI6ICdheGlzJyxcbiAgICAgICAgICBheGlzUG9pbnRlcjogeyB0eXBlOiAnc2hhZG93JyB9LFxuICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogaXNEYXJrID8gJ3JnYmEoNTAsIDUwLCA1MCwgMC45KScgOiAncmdiYSgyNTUsIDI1NSwgMjU1LCAwLjkpJyxcbiAgICAgICAgICBib3JkZXJDb2xvcjogaXNEYXJrID8gJyM1NTUnIDogJyNjY2MnLFxuICAgICAgICAgIHRleHRTdHlsZToge1xuICAgICAgICAgICAgY29sb3I6IGlzRGFyayA/ICcjZmZmZmZmJyA6ICcjMDAwMDAwJ1xuICAgICAgICAgIH0sXG4gICAgICAgICAgZm9ybWF0dGVyOiAocGFyYW1zKSA9PiB7XG4gICAgICAgICAgICBsZXQgcmVzdWx0ID0gcGFyYW1zWzBdLm5hbWUgKyAnPGJyLz4nO1xuICAgICAgICAgICAgcGFyYW1zLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICAgIHJlc3VsdCArPSBgJHtpdGVtLm1hcmtlcn0gJHtpdGVtLnNlcmllc05hbWV9OiAke2l0ZW0udmFsdWUudG9Mb2NhbGVTdHJpbmcodW5kZWZpbmVkLCB7IG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMiB9KX0gREg8YnIvPmA7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBsZWdlbmQ6IHtcbiAgICAgICAgICBkYXRhOiBbJ0NBJywgJ1JlY2V0dGVzJywgJ0TDqXBlbnNlcyddLFxuICAgICAgICAgIHRleHRTdHlsZToge1xuICAgICAgICAgICAgY29sb3I6IGlzRGFyayA/ICcjZmZmZmZmJyA6ICcjMDAwMDAwJ1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgeEF4aXM6IHtcbiAgICAgICAgICB0eXBlOiAnY2F0ZWdvcnknLFxuICAgICAgICAgIGRhdGE6IFsnVDEnLCAnVDInLCAnVDMnLCAnVDQnXSxcbiAgICAgICAgICBheGlzTGluZToge1xuICAgICAgICAgICAgbGluZVN0eWxlOiB7XG4gICAgICAgICAgICAgIGNvbG9yOiBpc0RhcmsgPyAnIzY2NicgOiAnI2NjYydcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIGF4aXNMYWJlbDoge1xuICAgICAgICAgICAgY29sb3I6IGlzRGFyayA/ICcjZmZmZmZmJyA6ICcjMDAwMDAwJ1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgeUF4aXM6IHtcbiAgICAgICAgICB0eXBlOiAndmFsdWUnLFxuICAgICAgICAgIG5hbWU6ICdNb250YW50IChESCknLFxuICAgICAgICAgIG5hbWVUZXh0U3R5bGU6IHtcbiAgICAgICAgICAgIGNvbG9yOiBpc0RhcmsgPyAnI2ZmZmZmZicgOiAnIzAwMDAwMCdcbiAgICAgICAgICB9LFxuICAgICAgICAgIGF4aXNMaW5lOiB7XG4gICAgICAgICAgICBsaW5lU3R5bGU6IHtcbiAgICAgICAgICAgICAgY29sb3I6IGlzRGFyayA/ICcjNjY2JyA6ICcjY2NjJ1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgYXhpc0xhYmVsOiB7XG4gICAgICAgICAgICBmb3JtYXR0ZXI6ICh2YWx1ZSkgPT4gKHZhbHVlIC8gMTAwMCkudG9GaXhlZCgwKSArICdLJyxcbiAgICAgICAgICAgIGNvbG9yOiBpc0RhcmsgPyAnI2ZmZmZmZicgOiAnIzAwMDAwMCdcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNwbGl0TGluZToge1xuICAgICAgICAgICAgbGluZVN0eWxlOiB7XG4gICAgICAgICAgICAgIGNvbG9yOiBpc0RhcmsgPyAnIzMzMycgOiAnI2UwZTBlMCdcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHNlcmllczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdDQScsXG4gICAgICAgICAgICB0eXBlOiAnYmFyJyxcbiAgICAgICAgICAgIGRhdGE6IFt0aGlzLlQxLkNBLCB0aGlzLlQyLkNBLCB0aGlzLlQzLkNBLCB0aGlzLlQ0LkNBXSxcbiAgICAgICAgICAgIGl0ZW1TdHlsZTogeyBjb2xvcjogY29sb3JzLmluZGlnby5iYXNlIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdSZWNldHRlcycsXG4gICAgICAgICAgICB0eXBlOiAnYmFyJyxcbiAgICAgICAgICAgIGRhdGE6IFt0aGlzLlQxLlJlY2V0dGVzLCB0aGlzLlQyLlJlY2V0dGVzLCB0aGlzLlQzLlJlY2V0dGVzLCB0aGlzLlQ0LlJlY2V0dGVzXSxcbiAgICAgICAgICAgIGl0ZW1TdHlsZTogeyBjb2xvcjogY29sb3JzLmdyZWVuLmJhc2UgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ0TDqXBlbnNlcycsXG4gICAgICAgICAgICB0eXBlOiAnYmFyJyxcbiAgICAgICAgICAgIGRhdGE6IFt0aGlzLlQxLkRlcGVuc2VzLCB0aGlzLlQyLkRlcGVuc2VzLCB0aGlzLlQzLkRlcGVuc2VzLCB0aGlzLlQ0LkRlcGVuc2VzXSxcbiAgICAgICAgICAgIGl0ZW1TdHlsZTogeyBjb2xvcjogY29sb3JzLnJlZC5iYXNlIH1cbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH07XG4gICAgfSxcblxuICAgIGxpbmVDaGFydE9wdGlvbigpIHtcbiAgICAgIGNvbnN0IGlzRGFyayA9IHRoaXMuJHZ1ZXRpZnkudGhlbWUuZGFyaztcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogJ3RyYW5zcGFyZW50JyxcbiAgICAgICAgdGV4dFN0eWxlOiB7XG4gICAgICAgICAgY29sb3I6IGlzRGFyayA/ICcjZmZmZmZmJyA6ICcjMDAwMDAwJ1xuICAgICAgICB9LFxuICAgICAgICB0b29sdGlwOiB7XG4gICAgICAgICAgdHJpZ2dlcjogJ2F4aXMnLFxuICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogaXNEYXJrID8gJ3JnYmEoNTAsIDUwLCA1MCwgMC45KScgOiAncmdiYSgyNTUsIDI1NSwgMjU1LCAwLjkpJyxcbiAgICAgICAgICBib3JkZXJDb2xvcjogaXNEYXJrID8gJyM1NTUnIDogJyNjY2MnLFxuICAgICAgICAgIHRleHRTdHlsZToge1xuICAgICAgICAgICAgY29sb3I6IGlzRGFyayA/ICcjZmZmZmZmJyA6ICcjMDAwMDAwJ1xuICAgICAgICAgIH0sXG4gICAgICAgICAgZm9ybWF0dGVyOiAocGFyYW1zKSA9PiB7XG4gICAgICAgICAgICBsZXQgcmVzdWx0ID0gcGFyYW1zWzBdLm5hbWUgKyAnPGJyLz4nO1xuICAgICAgICAgICAgcGFyYW1zLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICAgIHJlc3VsdCArPSBgJHtpdGVtLm1hcmtlcn0gJHtpdGVtLnNlcmllc05hbWV9OiAke2l0ZW0udmFsdWUudG9Mb2NhbGVTdHJpbmcodW5kZWZpbmVkLCB7IG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMiB9KX0gREg8YnIvPmA7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBsZWdlbmQ6IHtcbiAgICAgICAgICBkYXRhOiBbJ1JlY2V0dGVzJywgJ0TDqXBlbnNlcycsICdSw6lzdWx0YXQnXSxcbiAgICAgICAgICB0ZXh0U3R5bGU6IHtcbiAgICAgICAgICAgIGNvbG9yOiBpc0RhcmsgPyAnI2ZmZmZmZicgOiAnIzAwMDAwMCdcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGdyaWQ6IHtcbiAgICAgICAgICBsZWZ0OiAnMyUnLFxuICAgICAgICAgIHJpZ2h0OiAnNCUnLFxuICAgICAgICAgIGJvdHRvbTogJzMlJyxcbiAgICAgICAgICBjb250YWluTGFiZWw6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgeEF4aXM6IHtcbiAgICAgICAgICB0eXBlOiAnY2F0ZWdvcnknLFxuICAgICAgICAgIGJvdW5kYXJ5R2FwOiBmYWxzZSxcbiAgICAgICAgICBkYXRhOiBbJ1QxJywgJ1QyJywgJ1QzJywgJ1Q0J10sXG4gICAgICAgICAgYXhpc0xpbmU6IHtcbiAgICAgICAgICAgIGxpbmVTdHlsZToge1xuICAgICAgICAgICAgICBjb2xvcjogaXNEYXJrID8gJyM2NjYnIDogJyNjY2MnXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICBheGlzTGFiZWw6IHtcbiAgICAgICAgICAgIGNvbG9yOiBpc0RhcmsgPyAnI2ZmZmZmZicgOiAnIzAwMDAwMCdcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHlBeGlzOiB7XG4gICAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgICBuYW1lOiAnTW9udGFudCAoREgpJyxcbiAgICAgICAgICBuYW1lVGV4dFN0eWxlOiB7XG4gICAgICAgICAgICBjb2xvcjogaXNEYXJrID8gJyNmZmZmZmYnIDogJyMwMDAwMDAnXG4gICAgICAgICAgfSxcbiAgICAgICAgICBheGlzTGluZToge1xuICAgICAgICAgICAgbGluZVN0eWxlOiB7XG4gICAgICAgICAgICAgIGNvbG9yOiBpc0RhcmsgPyAnIzY2NicgOiAnI2NjYydcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIGF4aXNMYWJlbDoge1xuICAgICAgICAgICAgZm9ybWF0dGVyOiAodmFsdWUpID0+ICh2YWx1ZSAvIDEwMDApLnRvRml4ZWQoMCkgKyAnSycsXG4gICAgICAgICAgICBjb2xvcjogaXNEYXJrID8gJyNmZmZmZmYnIDogJyMwMDAwMDAnXG4gICAgICAgICAgfSxcbiAgICAgICAgICBzcGxpdExpbmU6IHtcbiAgICAgICAgICAgIGxpbmVTdHlsZToge1xuICAgICAgICAgICAgICBjb2xvcjogaXNEYXJrID8gJyMzMzMnIDogJyNlMGUwZTAnXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBzZXJpZXM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnUmVjZXR0ZXMnLFxuICAgICAgICAgICAgdHlwZTogJ2xpbmUnLFxuICAgICAgICAgICAgc21vb3RoOiB0cnVlLFxuICAgICAgICAgICAgZGF0YTogW3RoaXMuVDEuUmVjZXR0ZXMsIHRoaXMuVDIuUmVjZXR0ZXMsIHRoaXMuVDMuUmVjZXR0ZXMsIHRoaXMuVDQuUmVjZXR0ZXNdLFxuICAgICAgICAgICAgaXRlbVN0eWxlOiB7IGNvbG9yOiBjb2xvcnMuZ3JlZW4uYmFzZSB9LFxuICAgICAgICAgICAgYXJlYVN0eWxlOiB7IG9wYWNpdHk6IDAuMyB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnRMOpcGVuc2VzJyxcbiAgICAgICAgICAgIHR5cGU6ICdsaW5lJyxcbiAgICAgICAgICAgIHNtb290aDogdHJ1ZSxcbiAgICAgICAgICAgIGRhdGE6IFt0aGlzLlQxLkRlcGVuc2VzLCB0aGlzLlQyLkRlcGVuc2VzLCB0aGlzLlQzLkRlcGVuc2VzLCB0aGlzLlQ0LkRlcGVuc2VzXSxcbiAgICAgICAgICAgIGl0ZW1TdHlsZTogeyBjb2xvcjogY29sb3JzLnJlZC5iYXNlIH0sXG4gICAgICAgICAgICBhcmVhU3R5bGU6IHsgb3BhY2l0eTogMC4zIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdSw6lzdWx0YXQnLFxuICAgICAgICAgICAgdHlwZTogJ2xpbmUnLFxuICAgICAgICAgICAgc21vb3RoOiB0cnVlLFxuICAgICAgICAgICAgZGF0YTogW3RoaXMuVDEuUmVzdWx0YXQsIHRoaXMuVDIuUmVzdWx0YXQsIHRoaXMuVDMuUmVzdWx0YXQsIHRoaXMuVDQuUmVzdWx0YXRdLFxuICAgICAgICAgICAgaXRlbVN0eWxlOiB7IGNvbG9yOiBjb2xvcnMucHVycGxlLmJhc2UgfSxcbiAgICAgICAgICAgIGxpbmVTdHlsZTogeyB3aWR0aDogMyB9XG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9O1xuICAgIH1cbiAgfSxcblxuICBtZXRob2RzOiB7XG4gICAgc3RhcnQoKSB7XG4gICAgICBsZXQgcGF0aCA9IFwiL2FwaWRhc2hib2FyZGFjY3VlaWxcIjtcbiAgICAgIGF4aW9zXG4gICAgICAgIC5nZXQodGhpcy5CYXNlX3VybF93ZWIgKyBwYXRoLCB7XG4gICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgQXV0aG9yaXphdGlvbjogbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJKV1RUb2tlblwiKSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHBhcmFtczogeyBkYXRlOiB0aGlzLmRhdGUsIHN0YXR1dDogdGhpcy5zdGF0dXQsIG1ldGhvZDogdGhpcy4kc3RvcmUuZ2V0dGVyc1sndGhlbWUvZGFzaGJvYXJkX21ldGhvZCddIH1cbiAgICAgICAgfSlcbiAgICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgbGV0IGRhdGEgPSByZXNwb25zZS5kYXRhO1xuXG4gICAgICAgICAgdGhpcy5DQSA9IGRhdGEuQ0EgfHwgMDtcbiAgICAgICAgICB0aGlzLlJlY2V0dGVzID0gZGF0YS5SZWNldHRlcyB8fCAwO1xuICAgICAgICAgIHRoaXMuRGVwZW5zZXMgPSBkYXRhLkRlcGVuc2VzIHx8IDA7XG4gICAgICAgICAgdGhpcy5UVkEgPSBkYXRhLlRWQSB8fCAwO1xuICAgICAgICAgIHRoaXMuUmVzdWx0YXQgPSBkYXRhLlJlc3VsdGF0IHx8IDA7XG4gICAgICAgICAgdGhpcy5UMSA9IGRhdGEuVDEgfHwgeyBDQTogMCwgUmVjZXR0ZXM6IDAsIERlcGVuc2VzOiAwLCBUVkE6IDAsIFJlc3VsdGF0OiAwIH07XG4gICAgICAgICAgdGhpcy5UMiA9IGRhdGEuVDIgfHwgeyBDQTogMCwgUmVjZXR0ZXM6IDAsIERlcGVuc2VzOiAwLCBUVkE6IDAsIFJlc3VsdGF0OiAwIH07XG4gICAgICAgICAgdGhpcy5UMyA9IGRhdGEuVDMgfHwgeyBDQTogMCwgUmVjZXR0ZXM6IDAsIERlcGVuc2VzOiAwLCBUVkE6IDAsIFJlc3VsdGF0OiAwIH07XG4gICAgICAgICAgdGhpcy5UNCA9IGRhdGEuVDQgfHwgeyBDQTogMCwgUmVjZXR0ZXM6IDAsIERlcGVuc2VzOiAwLCBUVkE6IDAsIFJlc3VsdGF0OiAwIH07XG4gICAgICAgICAgdGhpcy50cmltZXN0cmllbCh0aGlzLlRfdHJpbWVzdHJpZWwpO1xuXG4gICAgICAgICAgLy8gRm9yY2UgY2hhcnQgdXBkYXRlXG4gICAgICAgICAgdGhpcy5jaGFydEtleSsrO1xuXG4gICAgICAgICAgLy8gRW5hYmxlIGNoYXJ0c1xuICAgICAgICAgIHRoaXMuc2hvd1BpZUNoYXJ0ID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLnNob3dCYXJDaGFydCA9IHRydWU7XG4gICAgICAgICAgdGhpcy5zaG93TGluZUNoYXJ0ID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLmNoYXJ0ID0gXCJwbHVnaW5zLWNoYXJ0XCI7XG5cbiAgICAgICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoXCJvcHRpbWl6ZWRSZXNpemVcIikpO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihcIkVycm9yIGxvYWRpbmcgZGFzaGJvYXJkIGRhdGE6XCIsIGVycm9yKTtcbiAgICAgICAgfSk7XG5cbiAgICAgIC8vIEZldGNoIENyZWFuY2VzL0RldHRlc1xuICAgICAgYXhpb3NcbiAgICAgICAgLmdldCh0aGlzLkJhc2VfdXJsX3dlYiArIFwiL2FwaWRhc2hib2FyZGNyZWFuY2VzZGV0dGVzXCIsIHtcbiAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICBBdXRob3JpemF0aW9uOiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcIkpXVFRva2VuXCIpLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgcGFyYW1zOiB7IGRhdGU6IHRoaXMuZGF0ZSwgbWV0aG9kOiB0aGlzLiRzdG9yZS5nZXR0ZXJzWyd0aGVtZS9kYXNoYm9hcmRfbWV0aG9kJ10gfVxuICAgICAgICB9KVxuICAgICAgICAudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICBsZXQgZGF0YSA9IHJlc3BvbnNlLmRhdGE7XG4gICAgICAgICAgdGhpcy5DcmVhbmNlcyA9IGRhdGEuQ3JlYW5jZXMgfHwgMDtcbiAgICAgICAgICB0aGlzLkNyZWFuY2VzRmFjdHVyZXMgPSBkYXRhLkNyZWFuY2VzRmFjdHVyZXMgfHwgMDtcbiAgICAgICAgICB0aGlzLkNyZWFuY2VzQXZvaXJzID0gZGF0YS5DcmVhbmNlc0F2b2lycyB8fCAwO1xuICAgICAgICAgIHRoaXMuTkJDcmVhbmNlc0ZhY3R1cmVzID0gZGF0YS5OQkNyZWFuY2VzRmFjdHVyZXMgfHwgMDtcbiAgICAgICAgICB0aGlzLk5CQ3JlYW5jZXNBdm9pcnMgPSBkYXRhLk5CQ3JlYW5jZXNBdm9pcnMgfHwgMDtcblxuICAgICAgICAgIHRoaXMuRGV0dGVzID0gZGF0YS5EZXR0ZXMgfHwgMDtcbiAgICAgICAgICB0aGlzLkRldHRlc0ZhY3R1cmVzID0gZGF0YS5EZXR0ZXNGYWN0dXJlcyB8fCAwO1xuICAgICAgICAgIHRoaXMuRGV0dGVzQXZvaXJzID0gZGF0YS5EZXR0ZXNBdm9pcnMgfHwgMDtcbiAgICAgICAgICB0aGlzLk5CRGV0dGVzRmFjdHVyZXMgPSBkYXRhLk5CRGV0dGVzRmFjdHVyZXMgfHwgMDtcbiAgICAgICAgICB0aGlzLk5CRGV0dGVzQXZvaXJzID0gZGF0YS5OQkRldHRlc0F2b2lycyB8fCAwO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihcIkVycm9yIGxvYWRpbmcgY3JlZGl0L2RlYml0IGRhdGE6XCIsIGVycm9yKTtcbiAgICAgICAgfSk7XG5cbiAgICAgIC8vIEZldGNoIEZpbmFuY2lhbCBDaGFydCBEYXRhIChTZXBhcmF0ZSBlbmRwb2ludCB0aGF0IGNvcnJlY3RseSByZXR1cm5zIEdyYXBoaXF1ZXMpXG4gICAgICBheGlvc1xuICAgICAgICAuZ2V0KHRoaXMuQmFzZV91cmxfd2ViICsgXCIvYXBpZGFzaGJvYXJkY2hhcnR0cmFuc2FjdGlvbnNcIiwge1xuICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgIEF1dGhvcml6YXRpb246IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiSldUVG9rZW5cIiksXG4gICAgICAgICAgfSxcbiAgICAgICAgICBwYXJhbXM6IHsgZGF0ZTogdGhpcy5kYXRlLCBzdGF0dXQ6IHRoaXMuc3RhdHV0LCBtZXRob2Q6IHRoaXMuJHN0b3JlLmdldHRlcnNbJ3RoZW1lL2Rhc2hib2FyZF9tZXRob2QnXSB9XG4gICAgICAgIH0pXG4gICAgICAgIC50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgIGxldCBkYXRhID0gcmVzcG9uc2UuZGF0YTtcbiAgICAgICAgICBpZiAoZGF0YS5HcmFwaGlxdWVzKSB7XG4gICAgICAgICAgICB0aGlzLmZpbmFuY2lhbENoYXJ0T3B0aW9uID0gZGF0YS5HcmFwaGlxdWVzO1xuXG4gICAgICAgICAgICAvLyBTdHlsaW5nIGltcHJvdmVtZW50c1xuICAgICAgICAgICAgY29uc3QgaXNEYXJrID0gdGhpcy4kdnVldGlmeS50aGVtZS5kYXJrO1xuICAgICAgICAgICAgdGhpcy5maW5hbmNpYWxDaGFydE9wdGlvbi5iYWNrZ3JvdW5kQ29sb3IgPSAndHJhbnNwYXJlbnQnO1xuICAgICAgICAgICAgdGhpcy5maW5hbmNpYWxDaGFydE9wdGlvbi5sZWdlbmQudGV4dFN0eWxlID0geyBjb2xvcjogaXNEYXJrID8gJyNmZmYnIDogJyMzMzMnIH07XG5cbiAgICAgICAgICAgIC8vIEVuc3VyZSBheGVzIHJlYWRhYmlsaXR5XG4gICAgICAgICAgICBpZiAodGhpcy5maW5hbmNpYWxDaGFydE9wdGlvbi54QXhpcyAmJiB0aGlzLmZpbmFuY2lhbENoYXJ0T3B0aW9uLnhBeGlzWzBdKSB7XG4gICAgICAgICAgICAgIHRoaXMuZmluYW5jaWFsQ2hhcnRPcHRpb24ueEF4aXNbMF0uYXhpc0xhYmVsLmNvbG9yID0gaXNEYXJrID8gJyNmZmYnIDogJyMzMzMnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMuZmluYW5jaWFsQ2hhcnRPcHRpb24ueUF4aXMgJiYgdGhpcy5maW5hbmNpYWxDaGFydE9wdGlvbi55QXhpc1swXSkge1xuICAgICAgICAgICAgICB0aGlzLmZpbmFuY2lhbENoYXJ0T3B0aW9uLnlBeGlzWzBdLmF4aXNMYWJlbC5jb2xvciA9IGlzRGFyayA/ICcjZmZmJyA6ICcjMzMzJztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5zaG93RmluYW5jaWFsQ2hhcnQgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5jaGFydEtleSsrO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvciBsb2FkaW5nIGZpbmFuY2lhbCBjaGFydDpcIiwgZXJyb3IpO1xuICAgICAgICB9KTtcbiAgICB9LFxuXG4gICAgdHJpbWVzdHJpZWwoVCkge1xuICAgICAgdGhpcy5UX3RyaW1lc3RyaWVsID0gVDtcbiAgICAgIHRoaXMuVF9DQSA9IHRoaXNbVF1bXCJDQVwiXSB8fCAwO1xuICAgICAgdGhpcy5UX1JlY2V0dGVzID0gdGhpc1tUXVtcIlJlY2V0dGVzXCJdIHx8IDA7XG4gICAgICB0aGlzLlRfRGVwZW5zZXMgPSB0aGlzW1RdW1wiRGVwZW5zZXNcIl0gfHwgMDtcbiAgICAgIHRoaXMuVF9UVkEgPSB0aGlzW1RdW1wiVFZBXCJdIHx8IDA7XG4gICAgICB0aGlzLlRfUmVzdWx0YXQgPSB0aGlzW1RdW1wiUmVzdWx0YXRcIl0gfHwgMDtcbiAgICB9LFxuXG4gICAgZ2V0UXVhcnRlckRhdGEocXVhcnRlcikge1xuICAgICAgcmV0dXJuIHRoaXNbcXVhcnRlcl0gfHwgeyBDQTogMCwgUmVjZXR0ZXM6IDAsIERlcGVuc2VzOiAwLCBUVkE6IDAsIFJlc3VsdGF0OiAwIH07XG4gICAgfSxcblxuICAgIGdldFF1YXJ0ZXJQZXJjZW50YWdlKHF1YXJ0ZXIpIHtcbiAgICAgIGNvbnN0IG1heFJlc3VsdGF0ID0gTWF0aC5tYXgoXG4gICAgICAgIE1hdGguYWJzKHRoaXMuVDEuUmVzdWx0YXQpLFxuICAgICAgICBNYXRoLmFicyh0aGlzLlQyLlJlc3VsdGF0KSxcbiAgICAgICAgTWF0aC5hYnModGhpcy5UMy5SZXN1bHRhdCksXG4gICAgICAgIE1hdGguYWJzKHRoaXMuVDQuUmVzdWx0YXQpXG4gICAgICApO1xuICAgICAgcmV0dXJuIG1heFJlc3VsdGF0ID4gMCA/IChNYXRoLmFicyh0aGlzW3F1YXJ0ZXJdLlJlc3VsdGF0KSAvIG1heFJlc3VsdGF0KSAqIDEwMCA6IDA7XG4gICAgfSxcblxuICAgIGdldFF1YXJ0ZXJDb2xvcihxdWFydGVyKSB7XG4gICAgICBjb25zdCBjb2xvcnMgPSB7IFQxOiAnYmx1ZScsIFQyOiAnZ3JlZW4nLCBUMzogJ29yYW5nZScsIFQ0OiAncHVycGxlJyB9O1xuICAgICAgcmV0dXJuIGNvbG9yc1txdWFydGVyXSB8fCAncHJpbWFyeSc7XG4gICAgfVxuICB9LFxuXG4gIG1vdW50ZWQoKSB7XG4gICAgdGhpcy5zdGFydCgpO1xuICB9LFxuXG4gIHdhdGNoOiB7XG4gICAgc3RhdHV0KCkge1xuICAgICAgdGhpcy5zdGFydCgpO1xuICAgIH0sXG4gICAgVF90cmltZXN0cmllbCh2YWwpIHtcbiAgICAgIHRoaXMudHJpbWVzdHJpZWwodmFsKTtcbiAgICB9LFxuICAgICckdnVldGlmeS50aGVtZS5kYXJrJygpIHtcbiAgICAgIHRoaXMuY2hhcnRLZXkrKzsgLy8gRm9yY2UgY2hhcnQgcmVkcmF3IG9uIHRoZW1lIGNoYW5nZVxuICAgIH1cbiAgfVxufTtcbjwvc2NyaXB0PlxuXG48c3R5bGUgc2NvcGVkPlxuLyogS1BJIENhcmRzIGhvdmVyIGVmZmVjdCAqL1xuLmtwaS1jYXJkIHtcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMnMgZWFzZSwgYm94LXNoYWRvdyAwLjJzIGVhc2U7XG59XG5cbi5rcGktY2FyZDpob3ZlciB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNHB4KTtcbiAgYm94LXNoYWRvdzogMCA2cHggMTJweCByZ2JhKDAsIDAsIDAsIDAuMTUpICFpbXBvcnRhbnQ7XG59XG48L3N0eWxlPiIsIjx0ZW1wbGF0ZT5cbiAgPGNhcmQtY2FyZFxuICAgIGljb249XCJtZGktd2FsbGV0LXRyYXZlbFwiXG4gICAgOnRpdGxlPVwiJHQoJ0NhbGVuZHJpZXIgQW5udWVsJylcIlxuICAgIDp0ZXh0PVwiJHQoJ1dzdWJ0XycgKyAnQ2FsZW5kcmllciBBbm51ZWwnKVwiXG4gICAgY2xhc3M9XCJweC01IHB5LTMgZC1pbmxpbmUtYmxvY2sgbXgtYXV0b1wiXG4gICAgY29sb3I9XCJvcmFuZ2VcIlxuICAgIDpjbG9zZT1cImNsb3NlXCJcbiAgICBAY2xvc2U9XCJjbG9zZWV2ZW50XCJcbiAgPlxuXG5cbiAgICA8di1jYXJkIGNsYXNzPVwieWVhcmx5LWNhbGVuZGFyLXZpZXdcIj5cbiAgICAgICAgPCEtLSBIZWFkZXI6IFllYXIgU2VsZWN0b3IgKyBCYW5rIEFjY291bnQgRmlsdGVyICsgRXhwb3J0IC0tPlxuICAgICAgICA8di1jYXJkLXRpdGxlIGNsYXNzPVwicGItMiBuby1wcmludFwiPlxuICAgICAgICAgICAgPHYtcm93PlxuICAgICAgICAgICAgICAgIDx2LWNvbCBjb2xzPVwiMTJcIiBtZD1cIjNcIj5cbiAgICAgICAgICAgICAgICAgICAgPHYtc2VsZWN0IHYtbW9kZWw9XCJzZWxlY3RlZFllYXJcIiA6aXRlbXM9XCJhdmFpbGFibGVZZWFyc1wiIGxhYmVsPVwiQW5uw6llXCIgcHJlcGVuZC1pY29uPVwibWRpLWNhbGVuZGFyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbnNlIEBjaGFuZ2U9XCJmZXRjaFllYXJseURhdGFcIj48L3Ytc2VsZWN0PlxuICAgICAgICAgICAgICAgIDwvdi1jb2w+XG4gICAgICAgICAgICAgICAgPHYtY29sIGNvbHM9XCIxMlwiIG1kPVwiM1wiPlxuICAgICAgICAgICAgICAgICAgICA8cmVsZXZlLXNlbGVjdCBsYWJlbD1cIkNvbXB0ZSBiYW5jYWlyZVwiIEBjaGFuZ2U9XCJoYW5kbGVBY2NvdW50Q2hhbmdlXCIgZnJvbT1cImNvbXB0ZXNiYW5jYWlyZXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgOmNvbnRyb2xsZXJfcm9vdD1cImNvbnRyb2xsZXJfcm9vdFwiIC8+XG4gICAgICAgICAgICAgICAgPC92LWNvbD5cbiAgICAgICAgICAgICAgICA8di1jb2wgY29scz1cIjEyXCIgbWQ9XCI1XCI+XG4gICAgICAgICAgICAgICAgICAgIDx2LXJhZGlvLWdyb3VwIHYtbW9kZWw9XCJzdGF0dXRcIiByb3cgZGVuc2UgY2xhc3M9XCJtdC0wXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8di1yYWRpbyBsYWJlbD1cIlRvdXRlc1wiIHZhbHVlPVwiYWxsXCIgY29sb3I9XCJkZWVwLXB1cnBsZVwiPjwvdi1yYWRpbz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx2LXJhZGlvIGxhYmVsPVwiUsOpZ2zDqWVzXCIgdmFsdWU9XCJyZWdsZWVcIiBjb2xvcj1cInN1Y2Nlc3NcIj48L3YtcmFkaW8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8di1yYWRpbyBsYWJlbD1cIkVuIGF0dGVudGVcIiB2YWx1ZT1cImVuYXR0ZW50ZVwiIGNvbG9yPVwid2FybmluZ1wiPjwvdi1yYWRpbz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx2LXJhZGlvIGxhYmVsPVwiTm9uIGTDqWZpbmlcIiB2YWx1ZT1cIm5kXCIgY29sb3I9XCJpbmZvXCI+PC92LXJhZGlvPlxuICAgICAgICAgICAgICAgICAgICA8L3YtcmFkaW8tZ3JvdXA+XG4gICAgICAgICAgICAgICAgPC92LWNvbD5cbiAgICAgICAgICAgICAgICA8di1jb2wgY29scz1cIjEyXCIgbWQ9XCIxXCIgY2xhc3M9XCJ0ZXh0LXJpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICAgIDx2LWJ0biBjb2xvcj1cInByaW1hcnlcIiBAY2xpY2s9XCJleHBvcnRZZWFyXCIgOmxvYWRpbmc9XCJleHBvcnRpbmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx2LWljb24gbGVmdD5tZGktZG93bmxvYWQ8L3YtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEV4cG9ydGVyXG4gICAgICAgICAgICAgICAgICAgIDwvdi1idG4+XG4gICAgICAgICAgICAgICAgPC92LWNvbD5cbiAgICAgICAgICAgIDwvdi1yb3c+XG4gICAgICAgIDwvdi1jYXJkLXRpdGxlPlxuXG4gICAgICAgIDwhLS0gWWVhci1FbmQgQmFsYW5jZSBTdW1tYXJ5IC0tPlxuICAgICAgICA8di1jYXJkLXN1YnRpdGxlIHYtaWY9XCJ5ZWFybHlEYXRhICYmIHllYXJseURhdGEubW9udGhzICYmIHllYXJseURhdGEubW9udGhzLmxlbmd0aCA+IDAgJiYgc2VsZWN0ZWRBY2NvdW50SWRcIj5cbiAgICAgICAgICAgIDx2LXJvdz5cbiAgICAgICAgICAgICAgICA8di1jb2wgY29scz1cIjEyXCIgc209XCI2XCI+XG4gICAgICAgICAgICAgICAgICAgIDx2LWNhcmQgb3V0bGluZWQgY29sb3I9XCJpbmZvIGxpZ2h0ZW4tNVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHYtY2FyZC10ZXh0IGNsYXNzPVwidGV4dC1jZW50ZXIgcHktMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNhcHRpb25cIj5Tb2xkZSBJbml0aWFsIChKYW52aWVyKTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWg2IGluZm8tLXRleHQgZm9udC13ZWlnaHQtYm9sZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBmb3JtYXRNb25leSh5ZWFybHlEYXRhLm1vbnRoc1swXT8ub3BlbmluZ0JhbGFuY2UgfHwgMCkgfX0gREhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdi1jYXJkLXRleHQ+XG4gICAgICAgICAgICAgICAgICAgIDwvdi1jYXJkPlxuICAgICAgICAgICAgICAgIDwvdi1jb2w+XG4gICAgICAgICAgICAgICAgPHYtY29sIGNvbHM9XCIxMlwiIHNtPVwiNlwiPlxuICAgICAgICAgICAgICAgICAgICA8di1jYXJkIG91dGxpbmVkIDpjb2xvcj1cIm5ldEJhbGFuY2VDb2xvciArICcgbGlnaHRlbi01J1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHYtY2FyZC10ZXh0IGNsYXNzPVwidGV4dC1jZW50ZXIgcHktMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNhcHRpb25cIj5Tb2xkZSBGaW5hbCAoRMOpY2VtYnJlKTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWg2IGZvbnQtd2VpZ2h0LWJvbGRcIiA6Y2xhc3M9XCJuZXRCYWxhbmNlQ29sb3IgKyAnLS10ZXh0J1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBmb3JtYXRNb25leSh5ZWFybHlEYXRhLm1vbnRoc1sxMV0/LmNsb3NpbmdCYWxhbmNlIHx8IDApIH19IERIXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3YtY2FyZC10ZXh0PlxuICAgICAgICAgICAgICAgICAgICA8L3YtY2FyZD5cbiAgICAgICAgICAgICAgICA8L3YtY29sPlxuICAgICAgICAgICAgPC92LXJvdz5cbiAgICAgICAgPC92LWNhcmQtc3VidGl0bGU+XG5cbiAgICAgICAgPCEtLSBTdGF0dXMgRmlsdGVyIEluZGljYXRvciAtLT5cbiAgICAgICAgPHYtY2FyZC1zdWJ0aXRsZSBjbGFzcz1cInBiLTBcIj5cbiAgICAgICAgICAgIDx2LWNoaXAgOmNvbG9yPVwic3RhdHVzQ29sb3JcIiBsYWJlbCBzbWFsbCBjbGFzcz1cInB4LTRcIj5cbiAgICAgICAgICAgICAgICA8di1pY29uIGxlZnQgc21hbGw+bWRpLWZpbHRlcjwvdi1pY29uPlxuICAgICAgICAgICAgICAgIHt7IHN0YXR1c0xhYmVsIH19XG4gICAgICAgICAgICA8L3YtY2hpcD5cbiAgICAgICAgPC92LWNhcmQtc3VidGl0bGU+XG5cbiAgICAgICAgPCEtLSBZZWFybHkgVG90YWxzIFN1bW1hcnkgLS0+XG4gICAgICAgIDx2LWNhcmQtc3VidGl0bGUgdi1pZj1cInllYXJseURhdGFcIj5cbiAgICAgICAgICAgIDx2LXJvdz5cbiAgICAgICAgICAgICAgICA8di1jb2wgY29scz1cIjEyXCIgc209XCI0XCI+XG4gICAgICAgICAgICAgICAgICAgIDx2LWNhcmQgb3V0bGluZWQgY29sb3I9XCJzdWNjZXNzIGxpZ2h0ZW4tNVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHYtY2FyZC10ZXh0IGNsYXNzPVwidGV4dC1jZW50ZXIgcHktMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNhcHRpb25cIj5DcsOpZGl0IFRvdGFsPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtaDYgc3VjY2Vzcy0tdGV4dCBmb250LXdlaWdodC1ib2xkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGZvcm1hdE1vbmV5KHllYXJseURhdGEueWVhclRvdGFscy50b3RhbENyZWRpdCkgfX0gREhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdi1jYXJkLXRleHQ+XG4gICAgICAgICAgICAgICAgICAgIDwvdi1jYXJkPlxuICAgICAgICAgICAgICAgIDwvdi1jb2w+XG4gICAgICAgICAgICAgICAgPHYtY29sIGNvbHM9XCIxMlwiIHNtPVwiNFwiPlxuICAgICAgICAgICAgICAgICAgICA8di1jYXJkIG91dGxpbmVkIGNvbG9yPVwiZXJyb3IgbGlnaHRlbi01XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8di1jYXJkLXRleHQgY2xhc3M9XCJ0ZXh0LWNlbnRlciBweS0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2FwdGlvblwiPkTDqWJpdCBUb3RhbDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWg2IGVycm9yLS10ZXh0IGZvbnQtd2VpZ2h0LWJvbGRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZm9ybWF0TW9uZXkoeWVhcmx5RGF0YS55ZWFyVG90YWxzLnRvdGFsRGViaXQpIH19IERIXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3YtY2FyZC10ZXh0PlxuICAgICAgICAgICAgICAgICAgICA8L3YtY2FyZD5cbiAgICAgICAgICAgICAgICA8L3YtY29sPlxuICAgICAgICAgICAgICAgIDx2LWNvbCBjb2xzPVwiMTJcIiBzbT1cIjRcIj5cbiAgICAgICAgICAgICAgICAgICAgPHYtY2FyZCBvdXRsaW5lZCA6Y29sb3I9XCJuZXRCYWxhbmNlQ29sb3IgKyAnIGxpZ2h0ZW4tNSdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx2LWNhcmQtdGV4dCBjbGFzcz1cInRleHQtY2VudGVyIHB5LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jYXB0aW9uXCI+U29sZGUgTmV0PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtaDYgZm9udC13ZWlnaHQtYm9sZFwiIDpjbGFzcz1cIm5ldEJhbGFuY2VDb2xvciArICctLXRleHQnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGZvcm1hdE1vbmV5KHllYXJseURhdGEueWVhclRvdGFscy5uZXRCYWxhbmNlKSB9fSBESFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC92LWNhcmQtdGV4dD5cbiAgICAgICAgICAgICAgICAgICAgPC92LWNhcmQ+XG4gICAgICAgICAgICAgICAgPC92LWNvbD5cbiAgICAgICAgICAgIDwvdi1yb3c+XG4gICAgICAgIDwvdi1jYXJkLXN1YnRpdGxlPlxuXG4gICAgICAgIDwhLS0gTG9hZGluZyBTdGF0ZSAtLT5cbiAgICAgICAgPHYtY2FyZC10ZXh0IHYtaWY9XCJsb2FkaW5nXCIgY2xhc3M9XCJ0ZXh0LWNlbnRlciBweS0xMlwiPlxuICAgICAgICAgICAgPHYtcHJvZ3Jlc3MtY2lyY3VsYXIgaW5kZXRlcm1pbmF0ZSBjb2xvcj1cInByaW1hcnlcIiBzaXplPVwiNjRcIj48L3YtcHJvZ3Jlc3MtY2lyY3VsYXI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtNCB0ZXh0LWg2XCI+Q2hhcmdlbWVudCBkZXMgZG9ubsOpZXMuLi48L2Rpdj5cbiAgICAgICAgPC92LWNhcmQtdGV4dD5cblxuICAgICAgICA8IS0tIDEyLU1vbnRoIEdyaWQgLS0+XG4gICAgICAgIDx2LWNhcmQtdGV4dCB2LWVsc2UtaWY9XCJ5ZWFybHlEYXRhXCI+XG4gICAgICAgICAgICA8di1yb3c+XG4gICAgICAgICAgICAgICAgPHYtY29sIHYtZm9yPVwibW9udGggaW4geWVhcmx5RGF0YS5tb250aHNcIiA6a2V5PVwibW9udGgubW9udGhcIiBjb2xzPVwiMTJcIiBzbT1cIjZcIiBtZD1cIjRcIiBsZz1cIjNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGNhcmQtbW9udGgtc3VtbWFyeS1jYXJkIDptb250aD1cIm1vbnRoXCIgQGNsaWNrPVwib3Blbk1vbnRoRGV0YWlsKG1vbnRoKVwiIC8+XG4gICAgICAgICAgICAgICAgPC92LWNvbD5cbiAgICAgICAgICAgIDwvdi1yb3c+XG4gICAgICAgIDwvdi1jYXJkLXRleHQ+XG5cbiAgICAgICAgPCEtLSBFbXB0eSBTdGF0ZSAtLT5cbiAgICAgICAgPHYtY2FyZC10ZXh0IHYtZWxzZSBjbGFzcz1cInRleHQtY2VudGVyIHB5LTEyXCI+XG4gICAgICAgICAgICA8di1pY29uIHNpemU9XCI2NFwiIGNvbG9yPVwiZ3JleSBsaWdodGVuLTFcIj5tZGktY2FsZW5kYXItYmxhbms8L3YtaWNvbj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC00IHRleHQtaDYgZ3JleS0tdGV4dFwiPkF1Y3VuZSBkb25uw6llIGRpc3BvbmlibGU8L2Rpdj5cbiAgICAgICAgPC92LWNhcmQtdGV4dD5cbiAgICAgICAgPCEtLSBNb250aCBEZXRhaWwgRGlhbG9nIC0tPlxuICAgICAgICA8Y2FyZC1tb250aC1kZXRhaWwtZGlhbG9nIHYtbW9kZWw9XCJzaG93TW9udGhEaWFsb2dcIiA6bW9udGgtZGF0YT1cInNlbGVjdGVkTW9udGhEYXRhXCIgOnllYXI9XCJzZWxlY3RlZFllYXJcIlxuICAgICAgICAgICAgOmNvbXB0ZS1pZD1cInNlbGVjdGVkQWNjb3VudElkXCIgLz5cbiAgICA8L3YtY2FyZD5cbiAgICA8L2NhcmQtY2FyZD5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG5pbXBvcnQgYXhpb3MgZnJvbSBcImF4aW9zXCI7XG5pbXBvcnQganNQREYgZnJvbSBcImpzcGRmXCI7XG5pbXBvcnQgYXV0b1RhYmxlIGZyb20gXCJqc3BkZi1hdXRvdGFibGVcIjtcbmltcG9ydCB3aWRnZXRzTWl4aW4gZnJvbSBcIi4vLi4vd2lkZ2V0c01peGluXCI7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbWl4aW5zOiBbd2lkZ2V0c01peGluXSxcblxuICAgIHByb3BzOiB7XG4gICAgICAgIGNvbnRyb2xsZXJfcm9vdDoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgZGVmYXVsdDogXCJyZWxldmViYW5jYWlyZXNcIixcbiAgICAgICAgfSxcbiAgICB9LFxuXG4gICAgZGF0YSgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGxvYWRpbmc6IGZhbHNlLFxuICAgICAgICAgICAgZXhwb3J0aW5nOiBmYWxzZSxcbiAgICAgICAgICAgIHNlbGVjdGVkWWVhcjogbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpLFxuICAgICAgICAgICAgc2VsZWN0ZWRBY2NvdW50SWQ6IG51bGwsXG4gICAgICAgICAgICBzdGF0dXQ6ICdhbGwnLFxuICAgICAgICAgICAgeWVhcmx5RGF0YTogbnVsbCxcbiAgICAgICAgICAgIHNob3dNb250aERpYWxvZzogZmFsc2UsXG4gICAgICAgICAgICBzZWxlY3RlZE1vbnRoRGF0YTogbnVsbCxcbiAgICAgICAgfTtcbiAgICB9LFxuXG4gICAgY29tcHV0ZWQ6IHtcbiAgICAgICAgYXZhaWxhYmxlWWVhcnMoKSB7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50WWVhciA9IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKTtcbiAgICAgICAgICAgIGNvbnN0IHllYXJzID0gW107XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gY3VycmVudFllYXI7IGkgPj0gY3VycmVudFllYXIgLSA1OyBpLS0pIHtcbiAgICAgICAgICAgICAgICB5ZWFycy5wdXNoKGkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHllYXJzO1xuICAgICAgICB9LFxuXG4gICAgICAgIGJhbmtBY2NvdW50cygpIHtcbiAgICAgICAgICAgIC8vIEdldCBiYW5rIGFjY291bnRzIGZyb20gc3RvcmVcbiAgICAgICAgICAgIGNvbnN0IGl0ZW1zID0gdGhpcy4kc3RvcmUuZ2V0dGVyc1tcInNob3dfZGF0YS9nX2l0ZW1zXCJdKHtcbiAgICAgICAgICAgICAgICBjb250cm9sbGVyX3Jvb3Q6ICdjb21wdGVzYmFuY2FpcmVzJ1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdCYW5rIGFjY291bnRzIGZyb20gc3RvcmU6JywgaXRlbXMpO1xuXG4gICAgICAgICAgICAvLyBJZiBubyBpdGVtcyBpbiBzdG9yZSwgcmV0dXJuIGVtcHR5IGFycmF5XG4gICAgICAgICAgICBpZiAoIWl0ZW1zIHx8IGl0ZW1zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIC8vIFRyeSB0byBnZXQgZnJvbSBsb2NhbFN0b3JhZ2Ugb3IgZmV0Y2hcbiAgICAgICAgICAgICAgICB0aGlzLmZldGNoQmFua0FjY291bnRzKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gaXRlbXM7XG4gICAgICAgIH0sXG5cbiAgICAgICAgbmV0QmFsYW5jZUNvbG9yKCkge1xuICAgICAgICAgICAgaWYgKCF0aGlzLnllYXJseURhdGEgfHwgIXRoaXMueWVhcmx5RGF0YS5tb250aHMgfHwgIXRoaXMueWVhcmx5RGF0YS5tb250aHNbMTFdKSByZXR1cm4gJ2dyZXknO1xuICAgICAgICAgICAgY29uc3QgYmFsYW5jZSA9IHRoaXMueWVhcmx5RGF0YS5tb250aHNbMTFdLmNsb3NpbmdCYWxhbmNlIHx8IDA7XG4gICAgICAgICAgICBpZiAoYmFsYW5jZSA+IDApIHJldHVybiAnc3VjY2Vzcyc7XG4gICAgICAgICAgICBpZiAoYmFsYW5jZSA8IDApIHJldHVybiAnZXJyb3InO1xuICAgICAgICAgICAgcmV0dXJuICdncmV5JztcbiAgICAgICAgfSxcblxuICAgICAgICBzdGF0dXNDb2xvcigpIHtcbiAgICAgICAgICAgIHN3aXRjaCAodGhpcy5zdGF0dXQpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdhbGwnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2RlZXAtcHVycGxlJztcbiAgICAgICAgICAgICAgICBjYXNlICdyZWdsZWUnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3N1Y2Nlc3MnO1xuICAgICAgICAgICAgICAgIGNhc2UgJ2VuYXR0ZW50ZSc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnd2FybmluZyc7XG4gICAgICAgICAgICAgICAgY2FzZSAnbmQnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2luZm8nO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnZGVlcC1wdXJwbGUnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuXG4gICAgICAgIHN0YXR1c0xhYmVsKCkge1xuICAgICAgICAgICAgc3dpdGNoICh0aGlzLnN0YXR1dCkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ2FsbCc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnQWZmaWNoYWdlOiBUb3V0ZXMgbGVzIFRyYW5zYWN0aW9ucyc7XG4gICAgICAgICAgICAgICAgY2FzZSAncmVnbGVlJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdBZmZpY2hhZ2U6IFRyYW5zYWN0aW9ucyBSw6lnbMOpZXMnO1xuICAgICAgICAgICAgICAgIGNhc2UgJ2VuYXR0ZW50ZSc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnQWZmaWNoYWdlOiBUcmFuc2FjdGlvbnMgRW4gQXR0ZW50ZSc7XG4gICAgICAgICAgICAgICAgY2FzZSAnbmQnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ0FmZmljaGFnZTogVHJhbnNhY3Rpb25zIE5vbiBEw6lmaW5pZXMnO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnQWZmaWNoYWdlOiBUb3V0ZXMgbGVzIFRyYW5zYWN0aW9ucyc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgfSxcblxuICAgIG1ldGhvZHM6IHtcbiAgICAgICAgaGFuZGxlQWNjb3VudENoYW5nZSh2YWwpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdBY2NvdW50IHNlbGVjdGVkOicsIHZhbCk7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkQWNjb3VudElkID0gdmFsLmlkO1xuICAgICAgICAgICAgdGhpcy5mZXRjaFllYXJseURhdGEoKTtcbiAgICAgICAgfSxcblxuICAgICAgICBhc3luYyBmZXRjaEJhbmtBY2NvdW50cygpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgLy8gRGlzcGF0Y2ggYWN0aW9uIHRvIGxvYWQgYmFuayBhY2NvdW50cyBpZiBub3QgbG9hZGVkXG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy4kc3RvcmUuZGlzcGF0Y2goXCJydW5fc2hvd1wiLCB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWVzX2NvbnRyb2xsZXJzOiBbJ2NvbXB0ZXNiYW5jYWlyZXMnXVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBsb2FkaW5nIGJhbmsgYWNjb3VudHM6JywgZXJyb3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuXG4gICAgICAgIGFzeW5jIGZldGNoWWVhcmx5RGF0YSgpIHtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnRmV0Y2hpbmcgeWVhcmx5IGRhdGEuLi4nLCB7XG4gICAgICAgICAgICAgICAgeWVhcjogdGhpcy5zZWxlY3RlZFllYXIsXG4gICAgICAgICAgICAgICAgYWNjb3VudElkOiB0aGlzLnNlbGVjdGVkQWNjb3VudElkLFxuICAgICAgICAgICAgICAgIHN0YXR1dDogdGhpcy5zdGF0dXRcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgICAgICAgICAgICAgICAgeWVhcjogdGhpcy5zZWxlY3RlZFllYXIsXG4gICAgICAgICAgICAgICAgICAgIHN0YXR1dDogdGhpcy5zdGF0dXQsXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkQWNjb3VudElkKSB7XG4gICAgICAgICAgICAgICAgICAgIHBhcmFtcy5jb21wdGVzYmFuY2FpcmVzID0gdGhpcy5zZWxlY3RlZEFjY291bnRJZDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnQVBJIFJlcXVlc3QgcGFyYW1zOicsIHBhcmFtcyk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGF4aW9zLmdldCgnL3JlbGV2ZWJhbmNhaXJlcy95ZWFybHktc3VtbWFyeScsIHtcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1zLFxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ0FQSSBSZXNwb25zZTonLCByZXNwb25zZS5kYXRhKTtcbiAgICAgICAgICAgICAgICB0aGlzLnllYXJseURhdGEgPSByZXNwb25zZS5kYXRhO1xuICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBmZXRjaGluZyB5ZWFybHkgZGF0YTonLCBlcnJvcik7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZGV0YWlsczonLCBlcnJvci5yZXNwb25zZSk7XG5cbiAgICAgICAgICAgICAgICAvLyBTaG93IGVycm9yIHRvIHVzZXJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy4kc3RvcmUuY29tbWl0KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJHN0b3JlLmNvbW1pdCgnc25hY2tiYXIvc2hvd0Vycm9yJywgJ0VycmV1ciBsb3JzIGR1IGNoYXJnZW1lbnQgZGVzIGRvbm7DqWVzJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcblxuICAgICAgICBvcGVuTW9udGhEZXRhaWwobW9udGgpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdPcGVuaW5nIG1vbnRoIGRldGFpbDonLCBtb250aCk7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkTW9udGhEYXRhID0gbW9udGg7XG4gICAgICAgICAgICB0aGlzLnNob3dNb250aERpYWxvZyA9IHRydWU7XG4gICAgICAgIH0sXG5cbiAgICAgICAgZm9ybWF0TW9uZXkodmFsKSB7XG4gICAgICAgICAgICBjb25zdCBudW0gPSBwYXJzZUZsb2F0KHZhbCk7XG4gICAgICAgICAgICBpZiAoaXNOYU4obnVtKSB8fCB2YWwgPT09IG51bGwgfHwgdmFsID09PSBcIlwiIHx8IHZhbCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIFVzZSBmci1GUiBidXQgcmVwbGFjZSBub24tYnJlYWtpbmcgc3BhY2VzIHdpdGggc3RhbmRhcmQgc3BhY2VzIHRvIGF2b2lkIFBERiBhcnRpZmFjdHNcbiAgICAgICAgICAgIC8vIFxcdTIwMkYgaXMgbmFycm93IE5CU1AsIFxcdTAwQTAgaXMgTkJTUFxuICAgICAgICAgICAgcmV0dXJuIG51bS50b0xvY2FsZVN0cmluZygnZnItRlInLCB7XG4gICAgICAgICAgICAgICAgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAyLFxuICAgICAgICAgICAgICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0czogMixcbiAgICAgICAgICAgIH0pLnJlcGxhY2UoL1tcXHUwMEEwXFx1MjAyRl0vZywgJyAnKSA7XG4gICAgICAgIH0sXG5cbiAgICAgICAgZXhwb3J0WWVhcigpIHtcbiAgICAgICAgICAgIGlmICghdGhpcy55ZWFybHlEYXRhKSByZXR1cm47XG5cbiAgICAgICAgICAgIGNvbnN0IGRvYyA9IG5ldyBqc1BERigpO1xuICAgICAgICAgICAgY29uc3QgcGFnZVdpZHRoID0gZG9jLmludGVybmFsLnBhZ2VTaXplLndpZHRoO1xuXG4gICAgICAgICAgICAvLyAtLS0gVGl0bGUgLS0tXG4gICAgICAgICAgICBkb2Muc2V0Rm9udFNpemUoMTgpO1xuICAgICAgICAgICAgZG9jLnNldFRleHRDb2xvcig0MCk7XG4gICAgICAgICAgICBjb25zdCB0aXRsZSA9IGBSYXBwb3J0IEZpbmFuY2llciBBbm51ZWwgLSAke3RoaXMuc2VsZWN0ZWRZZWFyfWA7XG4gICAgICAgICAgICBkb2MudGV4dCh0aXRsZSwgcGFnZVdpZHRoIC8gMiwgMjAsIHsgYWxpZ246ICdjZW50ZXInIH0pO1xuXG4gICAgICAgICAgICAvLyAtLS0gU3VidGl0bGUgKEFjY291bnQpIC0tLVxuICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRBY2NvdW50SWQpIHtcbiAgICAgICAgICAgICAgICBkb2Muc2V0Rm9udFNpemUoMTIpO1xuICAgICAgICAgICAgICAgIGRvYy5zZXRUZXh0Q29sb3IoMTAwKTtcbiAgICAgICAgICAgICAgICBjb25zdCBzdWJ0aXRsZSA9IGBDb21wdGU6ICR7dGhpcy5nZXRBY2NvdW50TmFtZSh0aGlzLnNlbGVjdGVkQWNjb3VudElkKX1gO1xuICAgICAgICAgICAgICAgIGRvYy50ZXh0KHN1YnRpdGxlLCBwYWdlV2lkdGggLyAyLCAyOCwgeyBhbGlnbjogJ2NlbnRlcicgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBmaW5hbFkgPSAzNTtcblxuICAgICAgICAgICAgLy8gLS0tIFN1bW1hcnkgU2VjdGlvbiAoQW5udWFsIFRvdGFscykgLS0tXG4gICAgICAgICAgICAvLyB1c2luZyBhdXRvVGFibGUgdG8gY3JlYXRlIGEgY2xlYW4gc3VtbWFyeSBncmlkXG4gICAgICAgICAgICBpZiAodGhpcy55ZWFybHlEYXRhLm1vbnRocyAmJiB0aGlzLnllYXJseURhdGEubW9udGhzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzdW1tYXJ5SGVhZCA9IFtbJ1NvbGRlIEluaXRpYWwgKEphbiknLCAnU29sZGUgRmluYWwgKETDqWMpJywgJ1RvdGFsIENyw6lkaXQnLCAnVG90YWwgRMOpYml0JywgJ1NvbGRlIE5ldCddXTtcbiAgICAgICAgICAgICAgICBjb25zdCBzdW1tYXJ5RGF0YSA9IFtbXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybWF0TW9uZXkodGhpcy55ZWFybHlEYXRhLm1vbnRoc1swXT8ub3BlbmluZ0JhbGFuY2UgfHwgMCkgKyAnIERIJyxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtYXRNb25leSh0aGlzLnllYXJseURhdGEubW9udGhzWzExXT8uY2xvc2luZ0JhbGFuY2UgfHwgMCkgKyAnIERIJyxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtYXRNb25leSh0aGlzLnllYXJseURhdGEueWVhclRvdGFscy50b3RhbENyZWRpdCkgKyAnIERIJyxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtYXRNb25leSh0aGlzLnllYXJseURhdGEueWVhclRvdGFscy50b3RhbERlYml0KSArICcgREgnLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1hdE1vbmV5KHRoaXMueWVhcmx5RGF0YS55ZWFyVG90YWxzLm5ldEJhbGFuY2UpICsgJyBESCdcbiAgICAgICAgICAgICAgICBdXTtcblxuICAgICAgICAgICAgICAgIGF1dG9UYWJsZShkb2MsIHtcbiAgICAgICAgICAgICAgICAgICAgc3RhcnRZOiBmaW5hbFksXG4gICAgICAgICAgICAgICAgICAgIGhlYWQ6IHN1bW1hcnlIZWFkLFxuICAgICAgICAgICAgICAgICAgICBib2R5OiBzdW1tYXJ5RGF0YSxcbiAgICAgICAgICAgICAgICAgICAgdGhlbWU6ICdncmlkJyxcbiAgICAgICAgICAgICAgICAgICAgaGVhZFN0eWxlczogeyBmaWxsQ29sb3I6IFs2NiwgNjYsIDY2XSwgaGFsaWduOiAnY2VudGVyJyB9LFxuICAgICAgICAgICAgICAgICAgICBib2R5U3R5bGVzOiB7IGhhbGlnbjogJ2NlbnRlcicgfSxcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIGZpbmFsWSA9IGRvYy5sYXN0QXV0b1RhYmxlLmZpbmFsWSArIDE1O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyAtLS0gTW9udGhseSBCcmVha2Rvd24gVGFibGUgLS0tXG4gICAgICAgICAgICBkb2Muc2V0Rm9udFNpemUoMTQpO1xuICAgICAgICAgICAgZG9jLnNldFRleHRDb2xvcig0MCk7XG4gICAgICAgICAgICBkb2MudGV4dChcIkTDqXRhaWwgTWVuc3VlbFwiLCAxNCwgZmluYWxZIC0gNSk7XG5cbiAgICAgICAgICAgIGNvbnN0IHRhYmxlSGVhZCA9IFtbJ01vaXMnLCAnU29sZGUgSW5pdGlhbCcsICdDcsOpZGl0JywgJ0TDqWJpdCcsICdTb2xkZSBGaW5hbCcsICdWYXJpYXRpb24nXV07XG5cbiAgICAgICAgICAgIC8vIE1hcCBtb250aHMgdG8gZGF0YSByb3dzXG4gICAgICAgICAgICBjb25zdCB0YWJsZURhdGEgPSB0aGlzLnllYXJseURhdGEubW9udGhzLm1hcChtID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB2YXJpYXRpb24gPSBtLnRvdGFsQ3JlZGl0IC0gbS50b3RhbERlYml0O1xuICAgICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0TW9udGhOYW1lKG0ubW9udGgpLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1hdE1vbmV5KG0ub3BlbmluZ0JhbGFuY2UpICsgJyBESCcsXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybWF0TW9uZXkobS50b3RhbENyZWRpdCkgKyAnIERIJyxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtYXRNb25leShtLnRvdGFsRGViaXQpICsgJyBESCcsXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybWF0TW9uZXkobS5jbG9zaW5nQmFsYW5jZSkgKyAnIERIJyxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtYXRNb25leSh2YXJpYXRpb24pICsgJyBESCdcbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGF1dG9UYWJsZShkb2MsIHtcbiAgICAgICAgICAgICAgICBzdGFydFk6IGZpbmFsWSxcbiAgICAgICAgICAgICAgICBoZWFkOiB0YWJsZUhlYWQsXG4gICAgICAgICAgICAgICAgYm9keTogdGFibGVEYXRhLFxuICAgICAgICAgICAgICAgIHRoZW1lOiAnc3RyaXBlZCcsXG4gICAgICAgICAgICAgICAgaGVhZFN0eWxlczogeyBmaWxsQ29sb3I6IFs0MSwgMTI4LCAxODVdLCBoYWxpZ246ICdjZW50ZXInIH0sXG4gICAgICAgICAgICAgICAgY29sdW1uU3R5bGVzOiB7XG4gICAgICAgICAgICAgICAgICAgIDA6IHsgY2VsbFdpZHRoOiAzMCwgZm9udFN0eWxlOiAnYm9sZCcgfSwgLy8gTW9pc1xuICAgICAgICAgICAgICAgICAgICAxOiB7IGhhbGlnbjogJ3JpZ2h0JyB9LFxuICAgICAgICAgICAgICAgICAgICAyOiB7IGhhbGlnbjogJ3JpZ2h0JywgdGV4dENvbG9yOiBbNDYsIDEyNSwgNTBdIH0sIC8vIENyZWRpdCBHcmVlblxuICAgICAgICAgICAgICAgICAgICAzOiB7IGhhbGlnbjogJ3JpZ2h0JywgdGV4dENvbG9yOiBbMTk4LCA0MCwgNDBdIH0sIC8vIERlYml0IFJlZFxuICAgICAgICAgICAgICAgICAgICA0OiB7IGhhbGlnbjogJ3JpZ2h0JywgZm9udFN0eWxlOiAnYm9sZCcgfSxcbiAgICAgICAgICAgICAgICAgICAgNTogeyBoYWxpZ246ICdyaWdodCcgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgLy8gLS0tIEZvb3RlciAtLS1cbiAgICAgICAgICAgIGNvbnN0IHBhZ2VDb3VudCA9IGRvYy5pbnRlcm5hbC5nZXROdW1iZXJPZlBhZ2VzKCk7XG4gICAgICAgICAgICBkb2Muc2V0Rm9udFNpemUoOCk7XG4gICAgICAgICAgICBkb2Muc2V0VGV4dENvbG9yKDE1MCk7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8PSBwYWdlQ291bnQ7IGkrKykge1xuICAgICAgICAgICAgICAgIGRvYy5zZXRQYWdlKGkpO1xuICAgICAgICAgICAgICAgIGRvYy50ZXh0KCdHw6luw6lyw6kgbGUgJyArIG5ldyBEYXRlKCkudG9Mb2NhbGVEYXRlU3RyaW5nKCdmci1GUicpICsgJyDDoCAnICsgbmV3IERhdGUoKS50b0xvY2FsZVRpbWVTdHJpbmcoJ2ZyLUZSJyksIDE0LCBkb2MuaW50ZXJuYWwucGFnZVNpemUuaGVpZ2h0IC0gMTApO1xuICAgICAgICAgICAgICAgIGRvYy50ZXh0KCdQYWdlICcgKyBpICsgJyAvICcgKyBwYWdlQ291bnQsIGRvYy5pbnRlcm5hbC5wYWdlU2l6ZS53aWR0aCAtIDIwLCBkb2MuaW50ZXJuYWwucGFnZVNpemUuaGVpZ2h0IC0gMTAsIHsgYWxpZ246ICdyaWdodCcgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIFNhdmUgUERGXG4gICAgICAgICAgICBkb2Muc2F2ZShgUmFwcG9ydF9Bbm51ZWxfJHt0aGlzLnNlbGVjdGVkWWVhcn0ucGRmYCk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgZ2V0TW9udGhOYW1lKG1vbnRoSW5kZXgpIHtcbiAgICAgICAgICAgIGNvbnN0IG1vbnRocyA9IFsnSmFudmllcicsICdGw6l2cmllcicsICdNYXJzJywgJ0F2cmlsJywgJ01haScsICdKdWluJywgJ0p1aWxsZXQnLCAnQW/Du3QnLCAnU2VwdGVtYnJlJywgJ09jdG9icmUnLCAnTm92ZW1icmUnLCAnRMOpY2VtYnJlJ107XG4gICAgICAgICAgICByZXR1cm4gbW9udGhzW21vbnRoSW5kZXggLSAxXSB8fCBtb250aEluZGV4O1xuICAgICAgICB9LFxuXG4gICAgICAgIGdldEFjY291bnROYW1lKGlkKSB7XG4gICAgICAgICAgICBjb25zdCBhY2NvdW50ID0gdGhpcy5iYW5rQWNjb3VudHMuZmluZChhY2MgPT4gYWNjLmlkID09PSBpZCk7XG4gICAgICAgICAgICByZXR1cm4gYWNjb3VudCA/IGFjY291bnQubm9tIHx8IGFjY291bnQubGliZWxsZSB8fCAnQ29tcHRlJyA6ICdDb21wdGUnO1xuICAgICAgICB9LFxuICAgIH0sXG5cbiAgICBtb3VudGVkKCkge1xuICAgICAgICBjb25zb2xlLmxvZygnWWVhcmx5Q2FsZW5kYXJWaWV3IG1vdW50ZWQnKTtcbiAgICAgICAgdGhpcy5mZXRjaFllYXJseURhdGEoKTtcbiAgICB9LFxuXG4gICAgd2F0Y2g6IHtcbiAgICAgICAgc3RhdHV0KCkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ1N0YXR1cyBjaGFuZ2VkIHRvOicsIHRoaXMuc3RhdHV0KTtcbiAgICAgICAgICAgIHRoaXMuZmV0Y2hZZWFybHlEYXRhKCk7XG4gICAgICAgIH0sXG4gICAgfSxcbn07XG48L3NjcmlwdD5cblxuPHN0eWxlIHNjb3BlZD5cbi55ZWFybHktY2FsZW5kYXItdmlldyB7XG4gICAgbWFyZ2luOiAxNnB4IDA7XG59XG48L3N0eWxlPlxuIiwiPHRlbXBsYXRlPlxuICAgIDxjYXJkLWNhcmRcbiAgICBpY29uPVwibWRpLXdhbGxldC10cmF2ZWxcIlxuICAgIDp0aXRsZT1cIiR0KCdDYWxlbmRyaWVyIEFubnVlbCBib25zJylcIlxuICAgIDp0ZXh0PVwiJHQoJ1dzdWJ0XycgKyAnQ2FsZW5kcmllciBBbm51ZWwgYm9ucycpXCJcbiAgICBjbGFzcz1cInB4LTUgcHktMyBkLWlubGluZS1ibG9jayBteC1hdXRvXCJcbiAgICBjb2xvcj1cIm9yYW5nZVwiXG4gICAgOmNsb3NlPVwiY2xvc2VcIlxuICAgIEBjbG9zZT1cImNsb3NlZXZlbnRcIlxuICA+XG4gICAgPHYtY2FyZCBjbGFzcz1cInllYXJseS1jYWxlbmRhci12aWV3LWJvblwiPlxuICAgICAgICA8IS0tIEhlYWRlcjogWWVhciBTZWxlY3RvciArIEJhbmsgQWNjb3VudCBGaWx0ZXIgKyBFeHBvcnQgLS0+XG4gICAgICAgIDx2LWNhcmQtdGl0bGUgY2xhc3M9XCJwYi0yIG5vLXByaW50XCI+XG4gICAgICAgICAgICA8di1yb3c+XG4gICAgICAgICAgICAgICAgPHYtY29sIGNvbHM9XCIxMlwiIG1kPVwiNFwiPlxuICAgICAgICAgICAgICAgICAgICA8di1zZWxlY3Qgdi1tb2RlbD1cInNlbGVjdGVkWWVhclwiIDppdGVtcz1cImF2YWlsYWJsZVllYXJzXCIgbGFiZWw9XCJBbm7DqWVcIiBwcmVwZW5kLWljb249XCJtZGktY2FsZW5kYXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgZGVuc2UgQGNoYW5nZT1cImZldGNoWWVhcmx5RGF0YVwiPjwvdi1zZWxlY3Q+XG4gICAgICAgICAgICAgICAgPC92LWNvbD5cbiAgICAgICAgICAgICAgICA8di1jb2wgY29scz1cIjEyXCIgbWQ9XCI0XCI+XG4gICAgICAgICAgICAgICAgICAgIDxyZWxldmUtc2VsZWN0IGxhYmVsPVwiQ29tcHRlIGJhbmNhaXJlIChCb25zKVwiIEBjaGFuZ2U9XCJoYW5kbGVBY2NvdW50Q2hhbmdlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZyb209XCJjb21wdGVzYmFuY2FpcmVzYm9uXCIgOmNvbnRyb2xsZXJfcm9vdD1cImNvbnRyb2xsZXJfcm9vdFwiIC8+XG4gICAgICAgICAgICAgICAgPC92LWNvbD5cbiAgICAgICAgICAgICAgICA8di1jb2wgY29scz1cIjEyXCIgbWQ9XCI0XCIgY2xhc3M9XCJ0ZXh0LXJpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICAgIDx2LWJ0biBjb2xvcj1cInByaW1hcnlcIiBAY2xpY2s9XCJleHBvcnRZZWFyXCIgOmxvYWRpbmc9XCJleHBvcnRpbmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx2LWljb24gbGVmdD5tZGktZG93bmxvYWQ8L3YtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEV4cG9ydGVyXG4gICAgICAgICAgICAgICAgICAgIDwvdi1idG4+XG4gICAgICAgICAgICAgICAgPC92LWNvbD5cbiAgICAgICAgICAgIDwvdi1yb3c+XG4gICAgICAgIDwvdi1jYXJkLXRpdGxlPlxuXG4gICAgICAgIDwhLS0gWWVhci1FbmQgQmFsYW5jZSBTdW1tYXJ5IC0tPlxuICAgICAgICA8di1jYXJkLXN1YnRpdGxlIHYtaWY9XCJ5ZWFybHlEYXRhICYmIHllYXJseURhdGEubW9udGhzICYmIHllYXJseURhdGEubW9udGhzLmxlbmd0aCA+IDAgJiYgc2VsZWN0ZWRBY2NvdW50SWRcIj5cbiAgICAgICAgICAgIDx2LXJvdz5cbiAgICAgICAgICAgICAgICA8di1jb2wgY29scz1cIjEyXCIgc209XCI2XCI+XG4gICAgICAgICAgICAgICAgICAgIDx2LWNhcmQgb3V0bGluZWQgY29sb3I9XCJpbmZvIGxpZ2h0ZW4tNVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHYtY2FyZC10ZXh0IGNsYXNzPVwidGV4dC1jZW50ZXIgcHktMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNhcHRpb25cIj5Tb2xkZSBJbml0aWFsIChKYW52aWVyKTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWg2IGluZm8tLXRleHQgZm9udC13ZWlnaHQtYm9sZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBmb3JtYXRNb25leSh5ZWFybHlEYXRhLm1vbnRoc1swXT8ub3BlbmluZ0JhbGFuY2UgfHwgMCkgfX0gREhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdi1jYXJkLXRleHQ+XG4gICAgICAgICAgICAgICAgICAgIDwvdi1jYXJkPlxuICAgICAgICAgICAgICAgIDwvdi1jb2w+XG4gICAgICAgICAgICAgICAgPHYtY29sIGNvbHM9XCIxMlwiIHNtPVwiNlwiPlxuICAgICAgICAgICAgICAgICAgICA8di1jYXJkIG91dGxpbmVkIDpjb2xvcj1cIm5ldEJhbGFuY2VDb2xvciArICcgbGlnaHRlbi01J1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHYtY2FyZC10ZXh0IGNsYXNzPVwidGV4dC1jZW50ZXIgcHktMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNhcHRpb25cIj5Tb2xkZSBGaW5hbCAoRMOpY2VtYnJlKTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWg2IGZvbnQtd2VpZ2h0LWJvbGRcIiA6Y2xhc3M9XCJuZXRCYWxhbmNlQ29sb3IgKyAnLS10ZXh0J1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBmb3JtYXRNb25leSh5ZWFybHlEYXRhLm1vbnRoc1sxMV0/LmNsb3NpbmdCYWxhbmNlIHx8IDApIH19IERIXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3YtY2FyZC10ZXh0PlxuICAgICAgICAgICAgICAgICAgICA8L3YtY2FyZD5cbiAgICAgICAgICAgICAgICA8L3YtY29sPlxuICAgICAgICAgICAgPC92LXJvdz5cbiAgICAgICAgPC92LWNhcmQtc3VidGl0bGU+XG5cbiAgICAgICAgPCEtLSBZZWFybHkgVG90YWxzIFN1bW1hcnkgLS0+XG4gICAgICAgIDx2LWNhcmQtc3VidGl0bGUgdi1pZj1cInllYXJseURhdGFcIj5cbiAgICAgICAgICAgIDx2LXJvdz5cbiAgICAgICAgICAgICAgICA8di1jb2wgY29scz1cIjEyXCIgc209XCI0XCI+XG4gICAgICAgICAgICAgICAgICAgIDx2LWNhcmQgb3V0bGluZWQgY29sb3I9XCJzdWNjZXNzIGxpZ2h0ZW4tNVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHYtY2FyZC10ZXh0IGNsYXNzPVwidGV4dC1jZW50ZXIgcHktMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNhcHRpb25cIj5DcsOpZGl0IFRvdGFsPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtaDYgc3VjY2Vzcy0tdGV4dCBmb250LXdlaWdodC1ib2xkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGZvcm1hdE1vbmV5KHllYXJseURhdGEueWVhclRvdGFscy50b3RhbENyZWRpdCkgfX0gREhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdi1jYXJkLXRleHQ+XG4gICAgICAgICAgICAgICAgICAgIDwvdi1jYXJkPlxuICAgICAgICAgICAgICAgIDwvdi1jb2w+XG4gICAgICAgICAgICAgICAgPHYtY29sIGNvbHM9XCIxMlwiIHNtPVwiNFwiPlxuICAgICAgICAgICAgICAgICAgICA8di1jYXJkIG91dGxpbmVkIGNvbG9yPVwiZXJyb3IgbGlnaHRlbi01XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8di1jYXJkLXRleHQgY2xhc3M9XCJ0ZXh0LWNlbnRlciBweS0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2FwdGlvblwiPkTDqWJpdCBUb3RhbDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWg2IGVycm9yLS10ZXh0IGZvbnQtd2VpZ2h0LWJvbGRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZm9ybWF0TW9uZXkoeWVhcmx5RGF0YS55ZWFyVG90YWxzLnRvdGFsRGViaXQpIH19IERIXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3YtY2FyZC10ZXh0PlxuICAgICAgICAgICAgICAgICAgICA8L3YtY2FyZD5cbiAgICAgICAgICAgICAgICA8L3YtY29sPlxuICAgICAgICAgICAgICAgIDx2LWNvbCBjb2xzPVwiMTJcIiBzbT1cIjRcIj5cbiAgICAgICAgICAgICAgICAgICAgPHYtY2FyZCBvdXRsaW5lZCA6Y29sb3I9XCJuZXRCYWxhbmNlQ29sb3IgKyAnIGxpZ2h0ZW4tNSdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx2LWNhcmQtdGV4dCBjbGFzcz1cInRleHQtY2VudGVyIHB5LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jYXB0aW9uXCI+U29sZGUgTmV0PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtaDYgZm9udC13ZWlnaHQtYm9sZFwiIDpjbGFzcz1cIm5ldEJhbGFuY2VDb2xvciArICctLXRleHQnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGZvcm1hdE1vbmV5KHllYXJseURhdGEueWVhclRvdGFscy5uZXRCYWxhbmNlKSB9fSBESFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC92LWNhcmQtdGV4dD5cbiAgICAgICAgICAgICAgICAgICAgPC92LWNhcmQ+XG4gICAgICAgICAgICAgICAgPC92LWNvbD5cbiAgICAgICAgICAgIDwvdi1yb3c+XG4gICAgICAgIDwvdi1jYXJkLXN1YnRpdGxlPlxuXG4gICAgICAgIDwhLS0gTG9hZGluZyBTdGF0ZSAtLT5cbiAgICAgICAgPHYtY2FyZC10ZXh0IHYtaWY9XCJsb2FkaW5nXCIgY2xhc3M9XCJ0ZXh0LWNlbnRlciBweS0xMlwiPlxuICAgICAgICAgICAgPHYtcHJvZ3Jlc3MtY2lyY3VsYXIgaW5kZXRlcm1pbmF0ZSBjb2xvcj1cInByaW1hcnlcIiBzaXplPVwiNjRcIj48L3YtcHJvZ3Jlc3MtY2lyY3VsYXI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtNCB0ZXh0LWg2XCI+Q2hhcmdlbWVudCBkZXMgZG9ubsOpZXMuLi48L2Rpdj5cbiAgICAgICAgPC92LWNhcmQtdGV4dD5cblxuICAgICAgICA8IS0tIDEyLU1vbnRoIEdyaWQgLS0+XG4gICAgICAgIDx2LWNhcmQtdGV4dCB2LWVsc2UtaWY9XCJ5ZWFybHlEYXRhXCI+XG4gICAgICAgICAgICA8di1yb3c+XG4gICAgICAgICAgICAgICAgPHYtY29sIHYtZm9yPVwibW9udGggaW4geWVhcmx5RGF0YS5tb250aHNcIiA6a2V5PVwibW9udGgubW9udGhcIiBjb2xzPVwiMTJcIiBzbT1cIjZcIiBtZD1cIjRcIiBsZz1cIjNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGNhcmQtbW9udGgtc3VtbWFyeS1jYXJkIDptb250aD1cIm1vbnRoXCIgQGNsaWNrPVwib3Blbk1vbnRoRGV0YWlsKG1vbnRoKVwiIC8+XG4gICAgICAgICAgICAgICAgPC92LWNvbD5cbiAgICAgICAgICAgIDwvdi1yb3c+XG4gICAgICAgIDwvdi1jYXJkLXRleHQ+XG5cbiAgICAgICAgPCEtLSBFbXB0eSBTdGF0ZSAtLT5cbiAgICAgICAgPHYtY2FyZC10ZXh0IHYtZWxzZSBjbGFzcz1cInRleHQtY2VudGVyIHB5LTEyXCI+XG4gICAgICAgICAgICA8di1pY29uIHNpemU9XCI2NFwiIGNvbG9yPVwiZ3JleSBsaWdodGVuLTFcIj5tZGktY2FsZW5kYXItYmxhbms8L3YtaWNvbj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC00IHRleHQtaDYgZ3JleS0tdGV4dFwiPkF1Y3VuZSBkb25uw6llIGRpc3BvbmlibGU8L2Rpdj5cbiAgICAgICAgPC92LWNhcmQtdGV4dD5cblxuICAgICAgICA8IS0tIE1vbnRoIERldGFpbCBEaWFsb2cgLSBVc2luZyBzaGFyZWQgY29tcG9uZW50IC0tPlxuICAgICAgICA8Y2FyZC1tb250aC1kZXRhaWwtZGlhbG9nIHYtbW9kZWw9XCJzaG93TW9udGhEaWFsb2dcIiA6bW9udGgtZGF0YT1cInNlbGVjdGVkTW9udGhEYXRhXCIgOnllYXI9XCJzZWxlY3RlZFllYXJcIlxuICAgICAgICAgICAgOmNvbXB0ZS1pZD1cInNlbGVjdGVkQWNjb3VudElkXCIgOmNvbnRyb2xsZXItcm9vdD1cImNvbnRyb2xsZXJfcm9vdFwiIC8+XG4gICAgPC92LWNhcmQ+XG4gICAgPC9jYXJkLWNhcmQ+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0PlxuaW1wb3J0IGF4aW9zIGZyb20gXCJheGlvc1wiO1xuaW1wb3J0IGpzUERGIGZyb20gXCJqc3BkZlwiO1xuaW1wb3J0IGF1dG9UYWJsZSBmcm9tIFwianNwZGYtYXV0b3RhYmxlXCI7XG5pbXBvcnQgd2lkZ2V0c01peGluIGZyb20gXCIuLy4uL3dpZGdldHNNaXhpblwiO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gICAgbWl4aW5zOiBbd2lkZ2V0c01peGluXSxcblxuICAgIHByb3BzOiB7XG4gICAgICAgIGNvbnRyb2xsZXJfcm9vdDoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgZGVmYXVsdDogXCJyZWxldmViYW5jYWlyZXNib25cIixcbiAgICAgICAgfSxcbiAgICB9LFxuXG4gICAgZGF0YSgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGxvYWRpbmc6IGZhbHNlLFxuICAgICAgICAgICAgZXhwb3J0aW5nOiBmYWxzZSxcbiAgICAgICAgICAgIHNlbGVjdGVkWWVhcjogbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpLFxuICAgICAgICAgICAgc2VsZWN0ZWRBY2NvdW50SWQ6IG51bGwsXG4gICAgICAgICAgICB5ZWFybHlEYXRhOiBudWxsLFxuICAgICAgICAgICAgc2hvd01vbnRoRGlhbG9nOiBmYWxzZSxcbiAgICAgICAgICAgIHNlbGVjdGVkTW9udGhEYXRhOiBudWxsLFxuICAgICAgICB9O1xuICAgIH0sXG5cbiAgICBjb21wdXRlZDoge1xuICAgICAgICBhdmFpbGFibGVZZWFycygpIHtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRZZWFyID0gbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpO1xuICAgICAgICAgICAgY29uc3QgeWVhcnMgPSBbXTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSBjdXJyZW50WWVhcjsgaSA+PSBjdXJyZW50WWVhciAtIDU7IGktLSkge1xuICAgICAgICAgICAgICAgIHllYXJzLnB1c2goaSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4geWVhcnM7XG4gICAgICAgIH0sXG5cbiAgICAgICAgYmFua0FjY291bnRzKCkge1xuICAgICAgICAgICAgLy8gR2V0IGJhbmsgYWNjb3VudHMgZm9yIGJvbnMgZnJvbSBzdG9yZVxuICAgICAgICAgICAgY29uc3QgaXRlbXMgPSB0aGlzLiRzdG9yZS5nZXR0ZXJzW1wic2hvd19kYXRhL2dfaXRlbXNcIl0oe1xuICAgICAgICAgICAgICAgIGNvbnRyb2xsZXJfcm9vdDogJ2NvbXB0ZXNiYW5jYWlyZXNib24nXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgY29uc29sZS5sb2coJ0JvbiBiYW5rIGFjY291bnRzIGZyb20gc3RvcmU6JywgaXRlbXMpO1xuXG4gICAgICAgICAgICAvLyBJZiBubyBpdGVtcyBpbiBzdG9yZSwgcmV0dXJuIGVtcHR5IGFycmF5XG4gICAgICAgICAgICBpZiAoIWl0ZW1zIHx8IGl0ZW1zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIC8vIFRyeSB0byBnZXQgZnJvbSBsb2NhbFN0b3JhZ2Ugb3IgZmV0Y2hcbiAgICAgICAgICAgICAgICB0aGlzLmZldGNoQmFua0FjY291bnRzKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gaXRlbXM7XG4gICAgICAgIH0sXG5cbiAgICAgICAgbmV0QmFsYW5jZUNvbG9yKCkge1xuICAgICAgICAgICAgaWYgKCF0aGlzLnllYXJseURhdGEgfHwgIXRoaXMueWVhcmx5RGF0YS5tb250aHMgfHwgIXRoaXMueWVhcmx5RGF0YS5tb250aHNbMTFdKSByZXR1cm4gJ2dyZXknO1xuICAgICAgICAgICAgY29uc3QgYmFsYW5jZSA9IHRoaXMueWVhcmx5RGF0YS5tb250aHNbMTFdLmNsb3NpbmdCYWxhbmNlIHx8IDA7XG4gICAgICAgICAgICBpZiAoYmFsYW5jZSA+IDApIHJldHVybiAnc3VjY2Vzcyc7XG4gICAgICAgICAgICBpZiAoYmFsYW5jZSA8IDApIHJldHVybiAnZXJyb3InO1xuICAgICAgICAgICAgcmV0dXJuICdncmV5JztcbiAgICAgICAgfSxcbiAgICB9LFxuXG4gICAgbWV0aG9kczoge1xuICAgICAgICBoYW5kbGVBY2NvdW50Q2hhbmdlKHZhbCkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ0JvbiBhY2NvdW50IHNlbGVjdGVkOicsIHZhbCk7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkQWNjb3VudElkID0gdmFsLmlkO1xuICAgICAgICAgICAgdGhpcy5mZXRjaFllYXJseURhdGEoKTtcbiAgICAgICAgfSxcblxuICAgICAgICBhc3luYyBmZXRjaEJhbmtBY2NvdW50cygpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgLy8gRGlzcGF0Y2ggYWN0aW9uIHRvIGxvYWQgYm9uIGJhbmsgYWNjb3VudHMgaWYgbm90IGxvYWRlZFxuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuJHN0b3JlLmRpc3BhdGNoKFwicnVuX3Nob3dcIiwge1xuICAgICAgICAgICAgICAgICAgICBuYW1lc19jb250cm9sbGVyczogWydjb21wdGVzYmFuY2FpcmVzYm9uJ11cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgbG9hZGluZyBib24gYmFuayBhY2NvdW50czonLCBlcnJvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG5cbiAgICAgICAgYXN5bmMgZmV0Y2hZZWFybHlEYXRhKCkge1xuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdGZXRjaGluZyB5ZWFybHkgYm9uIGRhdGEuLi4nLCB7XG4gICAgICAgICAgICAgICAgeWVhcjogdGhpcy5zZWxlY3RlZFllYXIsXG4gICAgICAgICAgICAgICAgYWNjb3VudElkOiB0aGlzLnNlbGVjdGVkQWNjb3VudElkXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICAgICAgICAgICAgICAgIHllYXI6IHRoaXMuc2VsZWN0ZWRZZWFyLFxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZEFjY291bnRJZCkge1xuICAgICAgICAgICAgICAgICAgICBwYXJhbXMuY29tcHRlc2JhbmNhaXJlc2JvbiA9IHRoaXMuc2VsZWN0ZWRBY2NvdW50SWQ7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ0FQSSBSZXF1ZXN0IHBhcmFtczonLCBwYXJhbXMpO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBheGlvcy5nZXQoJy9yZWxldmViYW5jYWlyZXNib24veWVhcmx5LXN1bW1hcnknLCB7XG4gICAgICAgICAgICAgICAgICAgIHBhcmFtcyxcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdBUEkgUmVzcG9uc2U6JywgcmVzcG9uc2UuZGF0YSk7XG4gICAgICAgICAgICAgICAgdGhpcy55ZWFybHlEYXRhID0gcmVzcG9uc2UuZGF0YTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZmV0Y2hpbmcgeWVhcmx5IGJvbiBkYXRhOicsIGVycm9yKTtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBkZXRhaWxzOicsIGVycm9yLnJlc3BvbnNlKTtcblxuICAgICAgICAgICAgICAgIC8vIFNob3cgZXJyb3IgdG8gdXNlclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLiRzdG9yZS5jb21taXQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kc3RvcmUuY29tbWl0KCdzbmFja2Jhci9zaG93RXJyb3InLCAnRXJyZXVyIGxvcnMgZHUgY2hhcmdlbWVudCBkZXMgZG9ubsOpZXMnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuXG4gICAgICAgIG9wZW5Nb250aERldGFpbChtb250aCkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ09wZW5pbmcgYm9uIG1vbnRoIGRldGFpbDonLCBtb250aCk7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkTW9udGhEYXRhID0gbW9udGg7XG4gICAgICAgICAgICB0aGlzLnNob3dNb250aERpYWxvZyA9IHRydWU7XG4gICAgICAgIH0sXG5cbiAgICAgICAgZm9ybWF0TW9uZXkodmFsKSB7XG4gICAgICAgICAgICBjb25zdCBudW0gPSBwYXJzZUZsb2F0KHZhbCk7XG4gICAgICAgICAgICBpZiAoaXNOYU4obnVtKSB8fCB2YWwgPT09IG51bGwgfHwgdmFsID09PSBcIlwiIHx8IHZhbCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIFVzZSBmci1GUiBidXQgcmVwbGFjZSBub24tYnJlYWtpbmcgc3BhY2VzIHdpdGggc3RhbmRhcmQgc3BhY2VzIHRvIGF2b2lkIFBERiBhcnRpZmFjdHNcbiAgICAgICAgICAgIC8vIFxcdTIwMkYgaXMgbmFycm93IE5CU1AsIFxcdTAwQTAgaXMgTkJTUFxuICAgICAgICAgICAgcmV0dXJuIG51bS50b0xvY2FsZVN0cmluZygnZnItRlInLCB7XG4gICAgICAgICAgICAgICAgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAyLFxuICAgICAgICAgICAgICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0czogMixcbiAgICAgICAgICAgIH0pLnJlcGxhY2UoL1tcXHUwMEEwXFx1MjAyRl0vZywgJyAnKTtcbiAgICAgICAgfSxcblxuICAgICAgICBleHBvcnRZZWFyKCkge1xuICAgICAgICAgICAgaWYgKCF0aGlzLnllYXJseURhdGEpIHJldHVybjtcblxuICAgICAgICAgICAgY29uc3QgZG9jID0gbmV3IGpzUERGKCk7XG4gICAgICAgICAgICBjb25zdCBwYWdlV2lkdGggPSBkb2MuaW50ZXJuYWwucGFnZVNpemUud2lkdGg7XG5cbiAgICAgICAgICAgIC8vIC0tLSBUaXRsZSAtLS1cbiAgICAgICAgICAgIGRvYy5zZXRGb250U2l6ZSgxOCk7XG4gICAgICAgICAgICBkb2Muc2V0VGV4dENvbG9yKDQwKTtcbiAgICAgICAgICAgIGNvbnN0IHRpdGxlID0gYFJhcHBvcnQgRmluYW5jaWVyIEFubnVlbCAoQm9ucykgLSAke3RoaXMuc2VsZWN0ZWRZZWFyfWA7XG4gICAgICAgICAgICBkb2MudGV4dCh0aXRsZSwgcGFnZVdpZHRoIC8gMiwgMjAsIHsgYWxpZ246ICdjZW50ZXInIH0pO1xuXG4gICAgICAgICAgICAvLyAtLS0gU3VidGl0bGUgKEFjY291bnQpIC0tLVxuICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRBY2NvdW50SWQpIHtcbiAgICAgICAgICAgICAgICBkb2Muc2V0Rm9udFNpemUoMTIpO1xuICAgICAgICAgICAgICAgIGRvYy5zZXRUZXh0Q29sb3IoMTAwKTtcbiAgICAgICAgICAgICAgICBjb25zdCBzdWJ0aXRsZSA9IGBDb21wdGU6ICR7dGhpcy5nZXRBY2NvdW50TmFtZSh0aGlzLnNlbGVjdGVkQWNjb3VudElkKX1gO1xuICAgICAgICAgICAgICAgIGRvYy50ZXh0KHN1YnRpdGxlLCBwYWdlV2lkdGggLyAyLCAyOCwgeyBhbGlnbjogJ2NlbnRlcicgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBmaW5hbFkgPSAzNTtcblxuICAgICAgICAgICAgLy8gLS0tIFN1bW1hcnkgU2VjdGlvbiAoQW5udWFsIFRvdGFscykgLS0tXG4gICAgICAgICAgICAvLyB1c2luZyBhdXRvVGFibGUgdG8gY3JlYXRlIGEgY2xlYW4gc3VtbWFyeSBncmlkXG4gICAgICAgICAgICBpZiAodGhpcy55ZWFybHlEYXRhLm1vbnRocyAmJiB0aGlzLnllYXJseURhdGEubW9udGhzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzdW1tYXJ5SGVhZCA9IFtbJ1NvbGRlIEluaXRpYWwgKEphbiknLCAnU29sZGUgRmluYWwgKETDqWMpJywgJ1RvdGFsIENyw6lkaXQnLCAnVG90YWwgRMOpYml0JywgJ1NvbGRlIE5ldCddXTtcbiAgICAgICAgICAgICAgICBjb25zdCBzdW1tYXJ5RGF0YSA9IFtbXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybWF0TW9uZXkodGhpcy55ZWFybHlEYXRhLm1vbnRoc1swXT8ub3BlbmluZ0JhbGFuY2UgfHwgMCkgKyAnIERIJyxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtYXRNb25leSh0aGlzLnllYXJseURhdGEubW9udGhzWzExXT8uY2xvc2luZ0JhbGFuY2UgfHwgMCkgKyAnIERIJyxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtYXRNb25leSh0aGlzLnllYXJseURhdGEueWVhclRvdGFscy50b3RhbENyZWRpdCkgKyAnIERIJyxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtYXRNb25leSh0aGlzLnllYXJseURhdGEueWVhclRvdGFscy50b3RhbERlYml0KSArICcgREgnLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1hdE1vbmV5KHRoaXMueWVhcmx5RGF0YS55ZWFyVG90YWxzLm5ldEJhbGFuY2UpICsgJyBESCdcbiAgICAgICAgICAgICAgICBdXTtcblxuICAgICAgICAgICAgICAgIGF1dG9UYWJsZShkb2MsIHtcbiAgICAgICAgICAgICAgICAgICAgc3RhcnRZOiBmaW5hbFksXG4gICAgICAgICAgICAgICAgICAgIGhlYWQ6IHN1bW1hcnlIZWFkLFxuICAgICAgICAgICAgICAgICAgICBib2R5OiBzdW1tYXJ5RGF0YSxcbiAgICAgICAgICAgICAgICAgICAgdGhlbWU6ICdncmlkJyxcbiAgICAgICAgICAgICAgICAgICAgaGVhZFN0eWxlczogeyBmaWxsQ29sb3I6IFs2NiwgNjYsIDY2XSwgaGFsaWduOiAnY2VudGVyJyB9LFxuICAgICAgICAgICAgICAgICAgICBib2R5U3R5bGVzOiB7IGhhbGlnbjogJ2NlbnRlcicgfSxcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIGZpbmFsWSA9IGRvYy5sYXN0QXV0b1RhYmxlLmZpbmFsWSArIDE1O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyAtLS0gTW9udGhseSBCcmVha2Rvd24gVGFibGUgLS0tXG4gICAgICAgICAgICBkb2Muc2V0Rm9udFNpemUoMTQpO1xuICAgICAgICAgICAgZG9jLnNldFRleHRDb2xvcig0MCk7XG4gICAgICAgICAgICBkb2MudGV4dChcIkTDqXRhaWwgTWVuc3VlbFwiLCAxNCwgZmluYWxZIC0gNSk7XG5cbiAgICAgICAgICAgIGNvbnN0IHRhYmxlSGVhZCA9IFtbJ01vaXMnLCAnU29sZGUgSW5pdGlhbCcsICdDcsOpZGl0JywgJ0TDqWJpdCcsICdTb2xkZSBGaW5hbCcsICdWYXJpYXRpb24nXV07XG5cbiAgICAgICAgICAgIC8vIE1hcCBtb250aHMgdG8gZGF0YSByb3dzXG4gICAgICAgICAgICBjb25zdCB0YWJsZURhdGEgPSB0aGlzLnllYXJseURhdGEubW9udGhzLm1hcChtID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB2YXJpYXRpb24gPSBtLnRvdGFsQ3JlZGl0IC0gbS50b3RhbERlYml0O1xuICAgICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0TW9udGhOYW1lKG0ubW9udGgpLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1hdE1vbmV5KG0ub3BlbmluZ0JhbGFuY2UpICsgJyBESCcsXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybWF0TW9uZXkobS50b3RhbENyZWRpdCkgKyAnIERIJyxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtYXRNb25leShtLnRvdGFsRGViaXQpICsgJyBESCcsXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybWF0TW9uZXkobS5jbG9zaW5nQmFsYW5jZSkgKyAnIERIJyxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtYXRNb25leSh2YXJpYXRpb24pICsgJyBESCdcbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGF1dG9UYWJsZShkb2MsIHtcbiAgICAgICAgICAgICAgICBzdGFydFk6IGZpbmFsWSxcbiAgICAgICAgICAgICAgICBoZWFkOiB0YWJsZUhlYWQsXG4gICAgICAgICAgICAgICAgYm9keTogdGFibGVEYXRhLFxuICAgICAgICAgICAgICAgIHRoZW1lOiAnc3RyaXBlZCcsXG4gICAgICAgICAgICAgICAgaGVhZFN0eWxlczogeyBmaWxsQ29sb3I6IFs0MSwgMTI4LCAxODVdLCBoYWxpZ246ICdjZW50ZXInIH0sXG4gICAgICAgICAgICAgICAgY29sdW1uU3R5bGVzOiB7XG4gICAgICAgICAgICAgICAgICAgIDA6IHsgY2VsbFdpZHRoOiAzMCwgZm9udFN0eWxlOiAnYm9sZCcgfSwgLy8gTW9pc1xuICAgICAgICAgICAgICAgICAgICAxOiB7IGhhbGlnbjogJ3JpZ2h0JyB9LFxuICAgICAgICAgICAgICAgICAgICAyOiB7IGhhbGlnbjogJ3JpZ2h0JywgdGV4dENvbG9yOiBbNDYsIDEyNSwgNTBdIH0sIC8vIENyZWRpdCBHcmVlblxuICAgICAgICAgICAgICAgICAgICAzOiB7IGhhbGlnbjogJ3JpZ2h0JywgdGV4dENvbG9yOiBbMTk4LCA0MCwgNDBdIH0sIC8vIERlYml0IFJlZFxuICAgICAgICAgICAgICAgICAgICA0OiB7IGhhbGlnbjogJ3JpZ2h0JywgZm9udFN0eWxlOiAnYm9sZCcgfSxcbiAgICAgICAgICAgICAgICAgICAgNTogeyBoYWxpZ246ICdyaWdodCcgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgLy8gLS0tIEZvb3RlciAtLS1cbiAgICAgICAgICAgIGNvbnN0IHBhZ2VDb3VudCA9IGRvYy5pbnRlcm5hbC5nZXROdW1iZXJPZlBhZ2VzKCk7XG4gICAgICAgICAgICBkb2Muc2V0Rm9udFNpemUoOCk7XG4gICAgICAgICAgICBkb2Muc2V0VGV4dENvbG9yKDE1MCk7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8PSBwYWdlQ291bnQ7IGkrKykge1xuICAgICAgICAgICAgICAgIGRvYy5zZXRQYWdlKGkpO1xuICAgICAgICAgICAgICAgIGRvYy50ZXh0KCdHw6luw6lyw6kgbGUgJyArIG5ldyBEYXRlKCkudG9Mb2NhbGVEYXRlU3RyaW5nKCdmci1GUicpICsgJyDDoCAnICsgbmV3IERhdGUoKS50b0xvY2FsZVRpbWVTdHJpbmcoJ2ZyLUZSJyksIDE0LCBkb2MuaW50ZXJuYWwucGFnZVNpemUuaGVpZ2h0IC0gMTApO1xuICAgICAgICAgICAgICAgIGRvYy50ZXh0KCdQYWdlICcgKyBpICsgJyAvICcgKyBwYWdlQ291bnQsIGRvYy5pbnRlcm5hbC5wYWdlU2l6ZS53aWR0aCAtIDIwLCBkb2MuaW50ZXJuYWwucGFnZVNpemUuaGVpZ2h0IC0gMTAsIHsgYWxpZ246ICdyaWdodCcgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIFNhdmUgUERGXG4gICAgICAgICAgICBkb2Muc2F2ZShgUmFwcG9ydF9Bbm51ZWxfQm9uc18ke3RoaXMuc2VsZWN0ZWRZZWFyfS5wZGZgKTtcbiAgICAgICAgfSxcblxuICAgICAgICBnZXRNb250aE5hbWUobW9udGhJbmRleCkge1xuICAgICAgICAgICAgY29uc3QgbW9udGhzID0gWydKYW52aWVyJywgJ0bDqXZyaWVyJywgJ01hcnMnLCAnQXZyaWwnLCAnTWFpJywgJ0p1aW4nLCAnSnVpbGxldCcsICdBb8O7dCcsICdTZXB0ZW1icmUnLCAnT2N0b2JyZScsICdOb3ZlbWJyZScsICdEw6ljZW1icmUnXTtcbiAgICAgICAgICAgIHJldHVybiBtb250aHNbbW9udGhJbmRleCAtIDFdIHx8IG1vbnRoSW5kZXg7XG4gICAgICAgIH0sXG5cbiAgICAgICAgZ2V0QWNjb3VudE5hbWUoaWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGFjY291bnQgPSB0aGlzLmJhbmtBY2NvdW50cy5maW5kKGFjYyA9PiBhY2MuaWQgPT09IGlkKTtcbiAgICAgICAgICAgIHJldHVybiBhY2NvdW50ID8gYWNjb3VudC5ub20gfHwgYWNjb3VudC5saWJlbGxlIHx8IGFjY291bnQubGliZWxsZUNvbXB0ZSB8fCAnQ29tcHRlJyA6ICdDb21wdGUnO1xuICAgICAgICB9LFxuICAgIH0sXG5cbiAgICBtb3VudGVkKCkge1xuICAgICAgICBjb25zb2xlLmxvZygnWWVhcmx5Q2FsZW5kYXJWaWV3Qm9uIG1vdW50ZWQnKTtcbiAgICAgICAgdGhpcy5mZXRjaFllYXJseURhdGEoKTtcbiAgICB9LFxufTtcbjwvc2NyaXB0PlxuXG48c3R5bGUgc2NvcGVkPlxuLnllYXJseS1jYWxlbmRhci12aWV3LWJvbiB7XG4gICAgbWFyZ2luOiAxNnB4IDA7XG59XG48L3N0eWxlPlxuIiwiPHRlbXBsYXRlPlxuICA8Y2FyZC1jYXJkIGljb249XCJtZGktYWxlcnQtY2lyY2xlLW91dGxpbmVcIiA6dGl0bGU9XCJULndpZGdldFRpdGxlXCIgOnRleHQ9XCJULndpZGdldFN1YnRpdGxlXCJcbiAgICBjbGFzcz1cInB4LTUgcHktMyBkLWlubGluZS1ibG9jayBteC1hdXRvXCIgY29sb3I9XCJyZWQgZGFya2VuLTJcIiA6Y2xvc2U9XCJjbG9zZVwiIEBjbG9zZT1cImNsb3NlZXZlbnRcIj5cblxuICAgIDx2LWNvbnRhaW5lcj5cbiAgICAgIDwhLS0gQ29udHJvbHMgLS0+XG4gICAgICA8di1jYXJkIGNsYXNzPVwibWItNSBwYS00XCI+XG4gICAgICAgIDx2LXJvdyBhbGlnbj1cImNlbnRlclwiPlxuICAgICAgICAgIDx2LWNvbCBjb2xzPVwiMTJcIiBtZD1cIjNcIj5cbiAgICAgICAgICAgIDx2LXRleHQtZmllbGQgXG4gICAgICAgICAgICBcbiAgICAgICAgICAgIHYtbW9kZWwubnVtYmVyPVwidGhyZXNob2xkXCIgOmxhYmVsPVwiVC50aHJlc2hvbGRMYWJlbFwiIHR5cGU9XCJudW1iZXJcIiBzdGVwPVwiMTBcIiBtaW49XCIwXCJcbiAgICAgICAgICAgICAgb3V0bGluZWQgZGVuc2UgcHJlcGVuZC1pbm5lci1pY29uPVwibWRpLXNpZ21hLWxvd2VyXCIgQGNoYW5nZT1cImZldGNoRGF0YVwiXG4gICAgICAgICAgICAgIFxuICAgICAgICAgICAgICBzdWZmaXg9XCJESFwiPjwvdi10ZXh0LWZpZWxkPlxuICAgICAgICAgIDwvdi1jb2w+XG4gICAgICAgICAgPHYtY29sIGNvbHM9XCIxMlwiIG1kPVwiMlwiPlxuICAgICAgICAgICAgPHYtc2VsZWN0IHYtbW9kZWw9XCJzZWxlY3RlZFllYXJcIiA6aXRlbXM9XCJ5ZWFyT3B0aW9uc1wiIDpsYWJlbD1cIlQueWVhckxhYmVsXCIgb3V0bGluZWQgZGVuc2UgQGNoYW5nZT1cImZldGNoRGF0YVwiIHByZXBlbmQtaW5uZXItaWNvbj1cIm1kaS1jYWxlbmRhci1yYW5nZVwiPjwvdi1zZWxlY3Q+XG4gICAgICAgICAgPC92LWNvbD5cbiAgICAgICAgICA8di1jb2wgY29scz1cIjEyXCIgbWQ9XCIyXCI+XG4gICAgICAgICAgICA8di1zZWxlY3Qgdi1tb2RlbD1cInNvcnRCeVwiIDppdGVtcz1cInNvcnRPcHRpb25zXCIgOmxhYmVsPVwiVC5zb3J0QnlMYWJlbFwiIG91dGxpbmVkIGRlbnNlIEBjaGFuZ2U9XCJmZXRjaERhdGFcIj48L3Ytc2VsZWN0PlxuICAgICAgICAgIDwvdi1jb2w+XG4gICAgICAgICAgPHYtY29sIGNvbHM9XCIxMlwiIG1kPVwiMlwiPlxuICAgICAgICAgICAgPHYtc2VsZWN0IHYtbW9kZWw9XCJkb2N1bWVudFR5cGVcIiA6aXRlbXM9XCJkb2N1bWVudFR5cGVPcHRpb25zXCIgOmxhYmVsPVwiVC5kb2N1bWVudFR5cGVMYWJlbFwiIG91dGxpbmVkIGRlbnNlIEBjaGFuZ2U9XCJmZXRjaERhdGFcIj48L3Ytc2VsZWN0PlxuICAgICAgICAgIDwvdi1jb2w+XG4gICAgICAgICAgPHYtY29sIGNvbHM9XCIxMlwiIG1kPVwiM1wiIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktZW5kXCI+XG4gICAgICAgICAgICA8di1idG4gY29sb3I9XCJwcmltYXJ5XCIgQGNsaWNrPVwiZmV0Y2hEYXRhXCIgOmxvYWRpbmc9XCJsb2FkaW5nXCI+XG4gICAgICAgICAgICAgIDx2LWljb24gbGVmdD5tZGktcmVmcmVzaDwvdi1pY29uPlxuICAgICAgICAgICAgICB7eyBULnJlZnJlc2hCdG4gfX1cbiAgICAgICAgICAgIDwvdi1idG4+XG4gICAgICAgICAgICA8di1idG4gaWNvbiBAY2xpY2s9XCJ0b2dnbGVMYW5ndWFnZVwiIGNsYXNzPVwibWwtMlwiPlxuICAgICAgICAgICAgICA8di1pY29uPm1kaS10cmFuc2xhdGU8L3YtaWNvbj5cbiAgICAgICAgICAgIDwvdi1idG4+XG4gICAgICAgICAgPC92LWNvbD5cbiAgICAgICAgPC92LXJvdz5cbiAgICAgIDwvdi1jYXJkPlxuXG4gICAgICA8IS0tIFJlc3VsdHMgVGFicyAtLT5cbiAgICAgIDx2LXRhYnMgdi1tb2RlbD1cInRhYlwiIGJhY2tncm91bmQtY29sb3I9XCJ0cmFuc3BhcmVudFwiIGNvbG9yPVwicHJpbWFyeVwiIGdyb3c+XG4gICAgICAgIDx2LXRhYiA6a2V5PVwiMFwiPlxuICAgICAgICAgIDx2LWljb24gbGVmdD5tZGktY2FydC1hcnJvdy1kb3duPC92LWljb24+XG4gICAgICAgICAge3sgVC5zYWxlc1RhYiB9fVxuICAgICAgICAgIDx2LWNoaXAgeC1zbWFsbCBjbGFzcz1cIm1sLTJcIiBjb2xvcj1cInJlZFwiIHRleHQtY29sb3I9XCJ3aGl0ZVwiIHYtaWY9XCJyZWNldHRlc0RhdGEuY291bnQgPiAwXCI+XG4gICAgICAgICAgICB7eyByZWNldHRlc0RhdGEuY291bnQgfX1cbiAgICAgICAgICA8L3YtY2hpcD5cbiAgICAgICAgPC92LXRhYj5cbiAgICAgICAgPHYtdGFiIDprZXk9XCIxXCI+XG4gICAgICAgICAgPHYtaWNvbiBsZWZ0Pm1kaS1jYXJ0LWFycm93LXVwPC92LWljb24+XG4gICAgICAgICAge3sgVC5wdXJjaGFzZXNUYWIgfX1cbiAgICAgICAgICA8di1jaGlwIHgtc21hbGwgY2xhc3M9XCJtbC0yXCIgY29sb3I9XCJyZWRcIiB0ZXh0LWNvbG9yPVwid2hpdGVcIiB2LWlmPVwiZGVwZW5zZXNEYXRhLmNvdW50ID4gMFwiPlxuICAgICAgICAgICAge3sgZGVwZW5zZXNEYXRhLmNvdW50IH19XG4gICAgICAgICAgPC92LWNoaXA+XG4gICAgICAgIDwvdi10YWI+XG4gICAgICA8L3YtdGFicz5cblxuICAgICAgPHYtdGFicy1pdGVtcyB2LW1vZGVsPVwidGFiXCI+XG4gICAgICAgIDwhLS0gU2FsZXMgRGlzY3JlcGFuY2llcyAtLT5cbiAgICAgICAgPHYtdGFiLWl0ZW0gOmtleT1cIjBcIj5cbiAgICAgICAgICA8di1jYXJkIGZsYXQgY2xhc3M9XCJtdC00XCI+XG4gICAgICAgICAgICA8di1hbGVydCB2LWlmPVwicmVjZXR0ZXNEYXRhLnRvdGFsX3ZhcmlhbmNlID4gMFwiIHR5cGU9XCJ3YXJuaW5nXCIgZGVuc2Ugb3V0bGluZWQgY2xhc3M9XCJtYi00XCI+XG4gICAgICAgICAgICAgIHt7IFQudG90YWxWYXJpYW5jZSB9fToge3sgZm9ybWF0Q3VycmVuY3kocmVjZXR0ZXNEYXRhLnRvdGFsX3ZhcmlhbmNlKSB9fVxuICAgICAgICAgICAgPC92LWFsZXJ0PlxuICAgICAgICAgICAgPHYtZGF0YS10YWJsZSA6aGVhZGVycz1cInNhbGVzSGVhZGVyc1wiIDppdGVtcz1cInJlY2V0dGVzRGF0YS5kaXNjcmVwYW5jaWVzXCIgOmxvYWRpbmc9XCJsb2FkaW5nXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJlbGV2YXRpb24tMVwiIDpuby1kYXRhLXRleHQ9XCJULm5vRGlzY3JlcGFuY2llc1wiPlxuICAgICAgICAgICAgICA8dGVtcGxhdGUgdi1zbG90Oml0ZW0uaWQ9XCJ7IGl0ZW0gfVwiPlxuICAgICAgICAgICAgICAgIDx2LWJ0biB0ZXh0IHNtYWxsIGNvbG9yPVwicHJpbWFyeVwiIEBjbGljaz1cInNob3dJdGVtKGl0ZW0uaWQsIGdldENvbnRyb2xsZXJSb290KCdyZWNldHRlcycpKVwiPlxuICAgICAgICAgICAgICAgICAgICN7eyBpdGVtLmlkIH19XG4gICAgICAgICAgICAgICAgPC92LWJ0bj5cbiAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgPHRlbXBsYXRlIHYtc2xvdDppdGVtLnRvdGFsX2Ftb3VudD1cInsgaXRlbSB9XCI+XG4gICAgICAgICAgICAgICAge3sgZm9ybWF0Q3VycmVuY3koaXRlbS50b3RhbF9hbW91bnQpIH19XG4gICAgICAgICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6aXRlbS5zdW1fc2V0dGxlbWVudHM9XCJ7IGl0ZW0gfVwiPlxuICAgICAgICAgICAgICAgIHt7IGZvcm1hdEN1cnJlbmN5KGl0ZW0uc3VtX3NldHRsZW1lbnRzKSB9fVxuICAgICAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICAgICAgICA8dGVtcGxhdGUgdi1zbG90Oml0ZW0uZGlmZmVyZW5jZT1cInsgaXRlbSB9XCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyZWQtLXRleHQgZm9udC13ZWlnaHQtYm9sZFwiPnt7IGZvcm1hdEN1cnJlbmN5KGl0ZW0uZGlmZmVyZW5jZSkgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6aXRlbS5zdGF0dXM9XCJ7IGl0ZW0gfVwiPlxuICAgICAgICAgICAgICAgIDx2LWNoaXAgc21hbGwgOmNvbG9yPVwiaXRlbS50b3RhbF9hbW91bnQgLSBpdGVtLnN1bV9zZXR0bGVtZW50cyA+IDAgPyAnb3JhbmdlJyA6ICdyZWQnXCIgZGFyaz5cbiAgICAgICAgICAgICAgICAgICB7eyBpdGVtLnRvdGFsX2Ftb3VudCAtIGl0ZW0uc3VtX3NldHRsZW1lbnRzIDwgMCA/IFQuaGVhZGVycy5kZWJ0IDogVC5oZWFkZXJzLnN1cnBsdXMgfX1cbiAgICAgICAgICAgICAgICA8L3YtY2hpcD5cbiAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgPHRlbXBsYXRlIHYtc2xvdDppdGVtLmFjdGlvbnM9XCJ7IGl0ZW0gfVwiPlxuICAgICAgICAgICAgICAgIDx2LWJ0biBpY29uIHNtYWxsIGNvbG9yPVwicHJpbWFyeVwiIEBjbGljaz1cInNob3dJdGVtKGl0ZW0uaWQsIGdldENvbnRyb2xsZXJSb290KCdyZWNldHRlcycpKVwiIHYtc2hvdz1cImlzR3JhbnRlZCgndmlldycsIGdldENvbnRyb2xsZXJSb290KCdyZWNldHRlcycpKVwiPlxuICAgICAgICAgICAgICAgICAgPHYtaWNvbj5tZGktZXllPC92LWljb24+XG4gICAgICAgICAgICAgICAgPC92LWJ0bj5cbiAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvdi1kYXRhLXRhYmxlPlxuICAgICAgICAgIDwvdi1jYXJkPlxuICAgICAgICA8L3YtdGFiLWl0ZW0+XG5cbiAgICAgICAgPCEtLSBQdXJjaGFzZSBEaXNjcmVwYW5jaWVzIC0tPlxuICAgICAgICA8di10YWItaXRlbSA6a2V5PVwiMVwiPlxuICAgICAgICAgIDx2LWNhcmQgZmxhdCBjbGFzcz1cIm10LTRcIj5cbiAgICAgICAgICAgIDx2LWFsZXJ0IHYtaWY9XCJkZXBlbnNlc0RhdGEudG90YWxfdmFyaWFuY2UgPiAwXCIgdHlwZT1cIndhcm5pbmdcIiBkZW5zZSBvdXRsaW5lZCBjbGFzcz1cIm1iLTRcIj5cbiAgICAgICAgICAgICAge3sgVC50b3RhbFZhcmlhbmNlIH19OiB7eyBmb3JtYXRDdXJyZW5jeShkZXBlbnNlc0RhdGEudG90YWxfdmFyaWFuY2UpIH19XG4gICAgICAgICAgICA8L3YtYWxlcnQ+XG4gICAgICAgICAgICA8di1kYXRhLXRhYmxlIDpoZWFkZXJzPVwicHVyY2hhc2VIZWFkZXJzXCIgOml0ZW1zPVwiZGVwZW5zZXNEYXRhLmRpc2NyZXBhbmNpZXNcIiA6bG9hZGluZz1cImxvYWRpbmdcIlxuICAgICAgICAgICAgICBjbGFzcz1cImVsZXZhdGlvbi0xXCIgOm5vLWRhdGEtdGV4dD1cIlQubm9EaXNjcmVwYW5jaWVzXCI+XG4gICAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6aXRlbS5pZD1cInsgaXRlbSB9XCI+XG4gICAgICAgICAgICAgICAgPHYtYnRuIHRleHQgc21hbGwgY29sb3I9XCJwcmltYXJ5XCIgQGNsaWNrPVwic2hvd0l0ZW0oaXRlbS5pZCwgZ2V0Q29udHJvbGxlclJvb3QoJ2RlcGVuc2VzJykpXCI+XG4gICAgICAgICAgICAgICAgICAgI3t7IGl0ZW0uaWQgfX1cbiAgICAgICAgICAgICAgICA8L3YtYnRuPlxuICAgICAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICAgICAgICA8dGVtcGxhdGUgdi1zbG90Oml0ZW0udG90YWxfYW1vdW50PVwieyBpdGVtIH1cIj5cbiAgICAgICAgICAgICAgICB7eyBmb3JtYXRDdXJyZW5jeShpdGVtLnRvdGFsX2Ftb3VudCkgfX1cbiAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgPHRlbXBsYXRlIHYtc2xvdDppdGVtLnN1bV9zZXR0bGVtZW50cz1cInsgaXRlbSB9XCI+XG4gICAgICAgICAgICAgICAge3sgZm9ybWF0Q3VycmVuY3koaXRlbS5zdW1fc2V0dGxlbWVudHMpIH19XG4gICAgICAgICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6aXRlbS5kaWZmZXJlbmNlPVwieyBpdGVtIH1cIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJlZC0tdGV4dCBmb250LXdlaWdodC1ib2xkXCI+e3sgZm9ybWF0Q3VycmVuY3koaXRlbS5kaWZmZXJlbmNlKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgPHRlbXBsYXRlIHYtc2xvdDppdGVtLnN0YXR1cz1cInsgaXRlbSB9XCI+XG4gICAgICAgICAgICAgICAgPHYtY2hpcCBzbWFsbCA6Y29sb3I9XCJpdGVtLnRvdGFsX2Ftb3VudCAtIGl0ZW0uc3VtX3NldHRsZW1lbnRzID4gMCA/ICdvcmFuZ2UnIDogJ2JsdWUnXCIgZGFyaz5cbiAgICAgICAgICAgICAgICAgICB7eyBpdGVtLnRvdGFsX2Ftb3VudCAtIGl0ZW0uc3VtX3NldHRsZW1lbnRzIDwgMCA/IFQuaGVhZGVycy5kZWJ0IDogVC5oZWFkZXJzLnN1cnBsdXMgfX1cbiAgICAgICAgICAgICAgICA8L3YtY2hpcD5cbiAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgPHRlbXBsYXRlIHYtc2xvdDppdGVtLmFjdGlvbnM9XCJ7IGl0ZW0gfVwiPlxuICAgICAgICAgICAgICAgIDx2LWJ0biBpY29uIHNtYWxsIGNvbG9yPVwicHJpbWFyeVwiIEBjbGljaz1cInNob3dJdGVtKGl0ZW0uaWQsIGdldENvbnRyb2xsZXJSb290KCdkZXBlbnNlcycpKVwiIHYtc2hvdz1cImlzR3JhbnRlZCgndmlldycsIGdldENvbnRyb2xsZXJSb290KCdkZXBlbnNlcycpKVwiPlxuICAgICAgICAgICAgICAgICAgPHYtaWNvbj5tZGktZXllPC92LWljb24+XG4gICAgICAgICAgICAgICAgPC92LWJ0bj5cbiAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvdi1kYXRhLXRhYmxlPlxuICAgICAgICAgIDwvdi1jYXJkPlxuICAgICAgICA8L3YtdGFiLWl0ZW0+XG4gICAgICA8L3YtdGFicy1pdGVtcz5cblxuICAgIDwvdi1jb250YWluZXI+XG4gIDwvY2FyZC1jYXJkPlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdD5cbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XG5pbXBvcnQgd2lkZ2V0c01peGluIGZyb20gXCIuLi93aWRnZXRzTWl4aW5cIjtcblxuY29uc3QgdHJhbnNsYXRpb25zID0ge1xuICBmcjoge1xuICAgIHdpZGdldFRpdGxlOiBcIkFuYWx5c2UgZGVzIMOJY2FydHMgZGUgUsOoZ2xlbWVudFwiLFxuICAgIHdpZGdldFN1YnRpdGxlOiBcIkTDqXRlY3Rpb24gZGVzIMOpY2FydHMgZW50cmUgbGUgbW9udGFudCB0b3RhbCBldCBsZXMgcsOoZ2xlbWVudHMgc2Fpc2lzXCIsXG4gICAgdGhyZXNob2xkTGFiZWw6IFwiU2V1aWwgZGUgdG9sw6lyYW5jZVwiLFxuICAgIHllYXJMYWJlbDogXCJBbm7DqWUgZmluYW5jacOocmVcIixcbiAgICBzb3J0QnlMYWJlbDogXCJUcmllciBwYXJcIixcbiAgICBkb2N1bWVudFR5cGVMYWJlbDogXCJUeXBlIGRlIGRvY3VtZW50XCIsXG4gICAgZG9jVHlwZXM6IHtcbiAgICAgIGJsOiBcIkJvbnMgQkwvQlJcIixcbiAgICAgIGZhY3R1cmU6IFwiRmFjdHVyZXNcIlxuICAgIH0sXG4gICAgcmVmcmVzaEJ0bjogXCJBY3R1YWxpc2VyXCIsXG4gICAgc2FsZXNUYWI6IFwiVmVudGVzIChSZWNldHRlcylcIixcbiAgICBwdXJjaGFzZXNUYWI6IFwiQWNoYXRzIChEw6lwZW5zZXMpXCIsXG4gICAgdG90YWxWYXJpYW5jZTogXCLDiWNhcnQgdG90YWwgZMOpdGVjdMOpXCIsXG4gICAgbm9EaXNjcmVwYW5jaWVzOiBcIkF1Y3VuIMOpY2FydCBkw6l0ZWN0w6kgcG91ciBjZSBzZXVpbC5cIixcbiAgICBoZWFkZXJzOiB7XG4gICAgICBpZDogXCJJRFwiLFxuICAgICAgZGF0ZTogXCJEYXRlXCIsXG4gICAgICBjbGllbnQ6IFwiQ2xpZW50XCIsXG4gICAgICBmb3Vybmlzc2V1cjogXCJGb3Vybmlzc2V1clwiLFxuICAgICAgdG90YWw6IFwiTW9udGFudCBUb3RhbFwiLFxuICAgICAgc2V0dGxlbWVudHM6IFwiU29tbWUgUsOoZ2xlbWVudHNcIixcbiAgICAgIGRpZmY6IFwiw4ljYXJ0XCIsXG4gICAgICB1c2VyOiBcIlV0aWxpc2F0ZXVyXCIsXG4gICAgICBzdGF0dXM6IFwiTmF0dXJlXCIsXG4gICAgICBkZWJ0OiBcIi1cIixcbiAgICAgIHN1cnBsdXM6XCIrXCIsXG4gICAgICBhY3Rpb25zOiBcIkFjdGlvbnNcIlxuICAgIH0sXG4gICAgc29ydE9wdGlvbnM6IFtcbiAgICAgIHsgdGV4dDogXCLDiWNhcnRcIiwgdmFsdWU6IFwiZGlmZmVyZW5jZVwiIH0sXG4gICAgICB7IHRleHQ6IFwiTW9udGFudCBUb3RhbFwiLCB2YWx1ZTogXCJ0b3RhbF9hbW91bnRcIiB9LFxuICAgICAgeyB0ZXh0OiBcIkRhdGVcIiwgdmFsdWU6IFwiZGF0ZVwiIH1cbiAgICBdXG4gIH0sXG4gIGFyOiB7XG4gICAgd2lkZ2V0VGl0bGU6IFwi2KrYrdmE2YrZhCDZgdix2YjZgtin2Kog2KfZhNiq2LPZiNmK2KlcIixcbiAgICB3aWRnZXRTdWJ0aXRsZTogXCLZg9i02YEg2KfZhNiq2KjYp9mK2YYg2KjZitmGINin2YTZhdio2YTYuiDYp9mE2KXYrNmF2KfZhNmKINmI2LPZhtiv2KfYqiDYp9mE2KrYs9mI2YrYqSDYp9mE2YXYs9is2YTYqVwiLFxuICAgIHRocmVzaG9sZExhYmVsOiBcItit2K8g2KfZhNiq2LPYp9mF2K1cIixcbiAgICB5ZWFyTGFiZWw6IFwi2KfZhNiz2YbYqSDYp9mE2YXYp9mE2YrYqVwiLFxuICAgIHNvcnRCeUxhYmVsOiBcItiq2LHYqtmK2Kgg2K3Ys9ioXCIsXG4gICAgZG9jdW1lbnRUeXBlTGFiZWw6IFwi2YbZiNi5INin2YTZhdiz2KrZhtivXCIsXG4gICAgZG9jVHlwZXM6IHtcbiAgICAgIGJsOiBcItiz2YbYr9in2KogQkwvQlJcIixcbiAgICAgIGZhY3R1cmU6IFwi2YHZiNin2KrZitixXCJcbiAgICB9LFxuICAgIHJlZnJlc2hCdG46IFwi2KrYrdiv2YrYq1wiLFxuICAgIHNhbGVzVGFiOiBcItin2YTZhdio2YrYudin2KogKNin2YTZhdmC2KjZiNi22KfYqilcIixcbiAgICBwdXJjaGFzZXNUYWI6IFwi2KfZhNmF2LTYqtix2YrYp9iqICjYp9mE2YXYtdin2LHZitmBKVwiLFxuICAgIHRvdGFsVmFyaWFuY2U6IFwi2KXYrNmF2KfZhNmKINin2YTZgdix2YjZgtin2Kog2KfZhNmF2YPYqti02YHYqVwiLFxuICAgIG5vRGlzY3JlcGFuY2llczogXCLZhNinINiq2YjYrNivINmB2LHZiNmC2KfYqiDZhdmD2KrYtNmB2Kkg2YTZh9iw2Kcg2KfZhNit2K8uXCIsXG4gICAgaGVhZGVyczoge1xuICAgICAgaWQ6IFwi2LHZgtmFINin2YTYs9mG2K9cIixcbiAgICAgIGRhdGU6IFwi2KfZhNiq2KfYsdmK2K5cIixcbiAgICAgIGNsaWVudDogXCLYp9mE2LnZhdmK2YRcIixcbiAgICAgIGZvdXJuaXNzZXVyOiBcItin2YTZhdmI2LHYr1wiLFxuICAgICAgdG90YWw6IFwi2KfZhNmF2KjZhNi6INin2YTYpdis2YXYp9mE2YpcIixcbiAgICAgIHNldHRsZW1lbnRzOiBcItmF2KzZhdmI2Lkg2KfZhNiq2LPZiNmK2KfYqlwiLFxuICAgICAgZGlmZjogXCLYp9mE2YHYsdmCXCIsXG4gICAgICB1c2VyOiBcItin2YTZhdmI2LjZgVwiLFxuICAgICAgc3RhdHVzOiBcItin2YTYrdin2YTYqVwiLFxuICAgICAgZGVidDogXCItXCIsXG4gICAgICBzdXJwbHVzOlwiK1wiLFxuICAgICAgYWN0aW9uczogXCLYpdis2LHYp9ih2KfYqlwiXG4gICAgfSxcbiAgICBzb3J0T3B0aW9uczogW1xuICAgICAgeyB0ZXh0OiBcItin2YTZgdix2YJcIiwgdmFsdWU6IFwiZGlmZmVyZW5jZVwiIH0sXG4gICAgICB7IHRleHQ6IFwi2KfZhNmF2KjZhNi6INin2YTYpdis2YXYp9mE2YpcIiwgdmFsdWU6IFwidG90YWxfYW1vdW50XCIgfSxcbiAgICAgIHsgdGV4dDogXCLYp9mE2KrYp9ix2YrYrlwiLCB2YWx1ZTogXCJkYXRlXCIgfVxuICAgIF1cbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQge1xuICBtaXhpbnM6IFt3aWRnZXRzTWl4aW5dLFxuICBkYXRhKCkge1xuICAgIGNvbnN0IGN1cnJlbnRZZWFyID0gbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpO1xuICAgIHJldHVybiB7XG4gICAgICB0YWI6IG51bGwsXG4gICAgICBsb2FkaW5nOiBmYWxzZSxcbiAgICAgIHRocmVzaG9sZDogMTAsXG4gICAgICBzZWxlY3RlZFllYXI6IGN1cnJlbnRZZWFyLFxuICAgICAgc29ydEJ5OiAnZGlmZmVyZW5jZScsXG4gICAgICBzb3J0RGlyOiAnREVTQycsXG4gICAgICBkb2N1bWVudFR5cGU6ICdCTCcsXG4gICAgICBjdXJyZW50TGFuZzogJ2ZyJyxcbiAgICAgIHJlY2V0dGVzRGF0YTogeyBkaXNjcmVwYW5jaWVzOiBbXSwgY291bnQ6IDAsIHRvdGFsX3ZhcmlhbmNlOiAwIH0sXG4gICAgICBkZXBlbnNlc0RhdGE6IHsgZGlzY3JlcGFuY2llczogW10sIGNvdW50OiAwLCB0b3RhbF92YXJpYW5jZTogMCB9XG4gICAgfTtcbiAgfSxcbiAgY29tcHV0ZWQ6IHtcbiAgICBUKCkge1xuICAgICAgcmV0dXJuIHRyYW5zbGF0aW9uc1t0aGlzLmN1cnJlbnRMYW5nXSB8fCB0cmFuc2xhdGlvbnMuZnI7XG4gICAgfSxcbiAgICBzb3J0T3B0aW9ucygpIHtcbiAgICAgICByZXR1cm4gdGhpcy5ULnNvcnRPcHRpb25zO1xuICAgIH0sXG4gICAgZG9jdW1lbnRUeXBlT3B0aW9ucygpIHtcbiAgICAgIHJldHVybiBbXG4gICAgICAgIHsgdGV4dDogdGhpcy5ULmRvY1R5cGVzLmJsLCB2YWx1ZTogJ0JMJyB9LFxuICAgICAgICB7IHRleHQ6IHRoaXMuVC5kb2NUeXBlcy5mYWN0dXJlLCB2YWx1ZTogJ0ZhY3R1cmUnIH1cbiAgICAgIF07XG4gICAgfSxcbiAgICB5ZWFyT3B0aW9ucygpIHtcbiAgICAgIGNvbnN0IHllYXJzID0gW107XG4gICAgICBjb25zdCBjdXJyZW50WWVhciA9IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKTtcbiAgICAgIGZvciAobGV0IGkgPSBjdXJyZW50WWVhcjsgaSA+PSBjdXJyZW50WWVhciAtIDU7IGktLSkge1xuICAgICAgICB5ZWFycy5wdXNoKGkpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHllYXJzO1xuICAgIH0sXG4gICAgc2FsZXNIZWFkZXJzKCkge1xuICAgICAgcmV0dXJuIFtcbiAgICAgICAgeyB0ZXh0OiB0aGlzLlQuaGVhZGVycy5pZCwgdmFsdWU6ICdpZCcgfSxcbiAgICAgICAgeyB0ZXh0OiB0aGlzLlQuaGVhZGVycy5kYXRlLCB2YWx1ZTogJ2RhdGUnIH0sXG4gICAgICAgIHsgdGV4dDogdGhpcy5ULmhlYWRlcnMuY2xpZW50LCB2YWx1ZTogJ2NsaWVudF9uYW1lJyB9LFxuICAgICAgICB7IHRleHQ6IHRoaXMuVC5oZWFkZXJzLnRvdGFsLCB2YWx1ZTogJ3RvdGFsX2Ftb3VudCcsIGFsaWduOiAnZW5kJyB9LFxuICAgICAgICB7IHRleHQ6IHRoaXMuVC5oZWFkZXJzLnNldHRsZW1lbnRzLCB2YWx1ZTogJ3N1bV9zZXR0bGVtZW50cycsIGFsaWduOiAnZW5kJyB9LFxuICAgICAgICB7IHRleHQ6IHRoaXMuVC5oZWFkZXJzLmRpZmYsIHZhbHVlOiAnZGlmZmVyZW5jZScsIGFsaWduOiAnZW5kJyB9LFxuICAgICAgICB7IHRleHQ6IHRoaXMuVC5oZWFkZXJzLnN0YXR1cywgdmFsdWU6ICdzdGF0dXMnLCBhbGlnbjogJ2NlbnRlcicsIHNvcnRhYmxlOiBmYWxzZSB9LFxuICAgICAgICB7IHRleHQ6IHRoaXMuVC5oZWFkZXJzLnVzZXIsIHZhbHVlOiAndXNlcl91c2VybmFtZScgfSxcbiAgICAgICAgeyB0ZXh0OiB0aGlzLlQuaGVhZGVycy5hY3Rpb25zLCB2YWx1ZTogJ2FjdGlvbnMnLCBzb3J0YWJsZTogZmFsc2UsIGFsaWduOiAnY2VudGVyJyB9XG4gICAgICBdO1xuICAgIH0sXG4gICAgcHVyY2hhc2VIZWFkZXJzKCkge1xuICAgICAgcmV0dXJuIFtcbiAgICAgICAgeyB0ZXh0OiB0aGlzLlQuaGVhZGVycy5pZCwgdmFsdWU6ICdpZCcgfSxcbiAgICAgICAgeyB0ZXh0OiB0aGlzLlQuaGVhZGVycy5kYXRlLCB2YWx1ZTogJ2RhdGUnIH0sXG4gICAgICAgIHsgdGV4dDogdGhpcy5ULmhlYWRlcnMuZm91cm5pc3NldXIsIHZhbHVlOiAncHJvdmlkZXJfbmFtZScgfSxcbiAgICAgICAgeyB0ZXh0OiB0aGlzLlQuaGVhZGVycy50b3RhbCwgdmFsdWU6ICd0b3RhbF9hbW91bnQnLCBhbGlnbjogJ2VuZCcgfSxcbiAgICAgICAgeyB0ZXh0OiB0aGlzLlQuaGVhZGVycy5zZXR0bGVtZW50cywgdmFsdWU6ICdzdW1fc2V0dGxlbWVudHMnLCBhbGlnbjogJ2VuZCcgfSxcbiAgICAgICAgeyB0ZXh0OiB0aGlzLlQuaGVhZGVycy5kaWZmLCB2YWx1ZTogJ2RpZmZlcmVuY2UnLCBhbGlnbjogJ2VuZCcgfSxcbiAgICAgICAgeyB0ZXh0OiB0aGlzLlQuaGVhZGVycy5zdGF0dXMsIHZhbHVlOiAnc3RhdHVzJywgYWxpZ246ICdjZW50ZXInLCBzb3J0YWJsZTogZmFsc2UgfSxcbiAgICAgICAgeyB0ZXh0OiB0aGlzLlQuaGVhZGVycy51c2VyLCB2YWx1ZTogJ3VzZXJfdXNlcm5hbWUnIH0sXG4gICAgICAgIHsgdGV4dDogdGhpcy5ULmhlYWRlcnMuYWN0aW9ucywgdmFsdWU6ICdhY3Rpb25zJywgc29ydGFibGU6IGZhbHNlLCBhbGlnbjogJ2NlbnRlcicgfVxuICAgICAgXTtcbiAgICB9XG4gIH0sXG4gIG1ldGhvZHM6IHtcbiAgICBzaG93SXRlbShpZCwgY29udHJvbGxlcl9yb290KSB7XG4gICAgICB0aGlzLiRyb3V0ZXIucHVzaCh7XG4gICAgICAgIG5hbWU6IGNvbnRyb2xsZXJfcm9vdCArIFwiX3Nob3dfaXRlbVwiLFxuICAgICAgICBwYXJhbXM6IHsgaWQ6IGlkIH0sXG4gICAgICB9KTtcbiAgICB9LFxuICAgIGlzR3JhbnRlZChhdHRyaWJ1dGUsIGNvbnRyb2xsZXJfcm9vdCkge1xuICAgICAgcmV0dXJuIHRoaXMuJHN0b3JlLmdldHRlcnNbXCJzZWN1cml0eS9pc0dyYW50ZWRcIl0oXG4gICAgICAgIGF0dHJpYnV0ZSxcbiAgICAgICAgY29udHJvbGxlcl9yb290XG4gICAgICApO1xuICAgIH0sXG4gICAgdG9nZ2xlTGFuZ3VhZ2UoKSB7XG4gICAgICB0aGlzLmN1cnJlbnRMYW5nID0gdGhpcy5jdXJyZW50TGFuZyA9PT0gJ2ZyJyA/ICdhcicgOiAnZnInO1xuICAgIH0sXG4gICAgZ2V0Q29udHJvbGxlclJvb3QoYmFzZSkge1xuICAgICAgcmV0dXJuIHRoaXMuZG9jdW1lbnRUeXBlID09PSAnRmFjdHVyZScgPyBiYXNlIDogYmFzZSArICdib24nO1xuICAgIH0sXG4gICAgZm9ybWF0Q3VycmVuY3kodmFsdWUpIHtcbiAgICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkKSByZXR1cm4gJzAuMDAnO1xuICAgICAgcmV0dXJuIHBhcnNlRmxvYXQodmFsdWUpLnRvTG9jYWxlU3RyaW5nKHVuZGVmaW5lZCwgeyBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDIsIG1heGltdW1GcmFjdGlvbkRpZ2l0czogMiB9KTtcbiAgICB9LFxuICAgIGZldGNoRGF0YSgpIHtcbiAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICAgIHRocmVzaG9sZDogdGhpcy50aHJlc2hvbGQsXG4gICAgICAgIHNvcnRCeTogdGhpcy5zb3J0QnksXG4gICAgICAgIHNvcnREaXI6IHRoaXMuc29ydERpcixcbiAgICAgICAgeWVhcjogdGhpcy5zZWxlY3RlZFllYXJcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHR5cGVTdHIgPSB0aGlzLmRvY3VtZW50VHlwZSA9PT0gJ0ZhY3R1cmUnID8gJ2ZhY3R1cmVzJyA6ICdCTCc7XG4gICAgICBjb25zdCBmZXRjaFJlY2V0dGVzID0gYXhpb3MuZ2V0KGAvYW5hbHlzZS9jaGVjay1yZWNldHRlcy0ke3R5cGVTdHJ9LWRpc2NyZXBhbmNpZXNgLCB7IHBhcmFtcyB9KTtcbiAgICAgIGNvbnN0IGZldGNoRGVwZW5zZXMgPSBheGlvcy5nZXQoYC9hbmFseXNlL2NoZWNrLWRlcGVuc2VzLSR7dHlwZVN0cn0tZGlzY3JlcGFuY2llc2AsIHsgcGFyYW1zIH0pO1xuXG4gICAgICBQcm9taXNlLmFsbChbZmV0Y2hSZWNldHRlcywgZmV0Y2hEZXBlbnNlc10pXG4gICAgICAgIC50aGVuKChbcmVzUmVjZXR0ZXMsIHJlc0RlcGVuc2VzXSkgPT4ge1xuICAgICAgICAgIHRoaXMucmVjZXR0ZXNEYXRhID0gcmVzUmVjZXR0ZXMuZGF0YTtcbiAgICAgICAgICB0aGlzLmRlcGVuc2VzRGF0YSA9IHJlc0RlcGVuc2VzLmRhdGE7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaChlcnIgPT4ge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvciBmZXRjaGluZyBkaXNjcmVwYW5jaWVzOlwiLCBlcnIpO1xuICAgICAgICB9KVxuICAgICAgICAuZmluYWxseSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfSxcbiAgbW91bnRlZCgpIHtcbiAgICB0aGlzLmZldGNoRGF0YSgpO1xuICB9XG59O1xuPC9zY3JpcHQ+XG5cbjxzdHlsZSBzY29wZWQ+XG4udi1kYXRhLXRhYmxlIHtcbiAgZm9udC1zaXplOiAwLjlyZW07XG59XG48L3N0eWxlPlxuIiwiPHRlbXBsYXRlPjxjYXJkLWNhcmQgaWNvbj1cIm1kaS13YWxsZXQtdHJhdmVsXCIgOnRpdGxlPVwiJHQoJ1d0XycgKyAnUmFwcG9ydCBCTCcpXCIgOnRleHQ9XCIkdCgnV3N1YnRfJyArICdSYXBwb3J0IEJMJylcIlxuICAgIGNsYXNzPVwicHgtNSBweS0zIGQtaW5saW5lLWJsb2NrIG14LWF1dG9cIiBjb2xvcj1cIm9yYW5nZVwiIDpjbG9zZT1cImNsb3NlXCIgQGNsb3NlPVwiY2xvc2VldmVudFwiPlxuXG5cblxuICAgIDwhLS0gLi4uICjZhtmB2LMg2KfZhNmAIHRlbXBsYXRlINin2YTYs9in2KjZgtiMINmE2Kcg2YrYrdiq2KfYrCDYqti62YrZitixKSAuLi4gLS0+XG4gICAgPHYtY29udGFpbmVyPlxuXG4gICAgICA8di1jYXJkIGNsYXNzPVwibWItNVwiPlxuICAgICAgICA8di1yb3c+IDx2LWNvbCBjb2xzPVwiMTJcIiBtZD1cIjZcIj4gPHdpZGdldHMtYWxlcnRzbGlzdEJsSW1wZXllQ2xpZW50IC8+PC92LWNvbD4gPHYtY29sIGNvbHM9XCIxMlwiIG1kPVwiNlwiPlxuICAgICAgICAgICAgPHdpZGdldHMtYWxlcnRzbGlzdEJsSW1wZXllRm91cm5pc3NldXIgLz4gPC92LWNvbD4gPC92LXJvdz5cbiAgICAgICAgPHYtcm93IG5vLWd1dHRlcnMgY2xhc3M9XCJhbGlnbi1jZW50ZXIgcGEtM1wiPlxuICAgICAgICAgIDwhLS0g2KfYs9iq2K7Yr9in2YUg2KfZhNiq2LHYrNmF2Kkg2YTZhNi52YbZiNin2YYg2YjYp9mE2YbYtSDYp9mE2YHYsdi52YogLS0+XG4gICAgICAgICAgPHYtY29sPlxuICAgICAgICAgICAgPHYtY2FyZC10aXRsZT57eyBULnJlcG9ydFRpdGxlIH19PC92LWNhcmQtdGl0bGU+XG4gICAgICAgICAgICA8di1jYXJkLXN1YnRpdGxlPnt7IFQuc2VsZWN0UGVyaW9kIH19PC92LWNhcmQtc3VidGl0bGU+XG4gICAgICAgICAgPC92LWNvbD5cbiAgICAgICAgICA8di1jb2wgY29scz1cImF1dG9cIj5cbiAgICAgICAgICAgIDwhLS0g2LLYsSDYqtio2K/ZitmEINin2YTZhNi62KkgLS0+XG4gICAgICAgICAgICA8di1idG4gb3V0bGluZWQgQGNsaWNrPVwidG9nZ2xlTGFuZ3VhZ2VcIj5cbiAgICAgICAgICAgICAgPHYtaWNvbiBsZWZ0Pm1kaS10cmFuc2xhdGU8L3YtaWNvbj5cbiAgICAgICAgICAgICAge3sgVC5zd2l0Y2hUbyB9fSB7eyBjdXJyZW50TGFuZyA9PT0gJ2ZyJyA/ICfYp9mE2LnYsdio2YrYqScgOiAnRnJhbsOnYWlzJyB9fVxuICAgICAgICAgICAgPC92LWJ0bj5cbiAgICAgICAgICA8L3YtY29sPlxuXG4gICAgICAgIDwvdi1yb3c+XG5cbiAgICAgICAgPHYtY2FyZC10ZXh0PlxuICAgICAgICAgIDx2LXJvdyBkZW5zZT5cbiAgICAgICAgICAgIDx2LWNvbCBjb2xzPVwiMTJcIiBtZD1cIjRcIj5cbiAgICAgICAgICAgICAgPHYtbWVudSB2LW1vZGVsPVwibWVudVN0YXJ0RGF0ZVwiIDpjbG9zZS1vbi1jb250ZW50LWNsaWNrPVwiZmFsc2VcIiB0cmFuc2l0aW9uPVwic2NhbGUtdHJhbnNpdGlvblwiIG9mZnNldC15XG4gICAgICAgICAgICAgICAgbWluLXdpZHRoPVwiYXV0b1wiPlxuICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6YWN0aXZhdG9yPVwieyBvbiwgYXR0cnMgfVwiPlxuICAgICAgICAgICAgICAgICAgPCEtLSDYp9iz2KrYrtiv2KfZhSDYp9mE2KrYsdis2YXYqSDZhNmE2YAgTGFiZWwgLS0+XG4gICAgICAgICAgICAgICAgICA8di10ZXh0LWZpZWxkIDp2YWx1ZT1cImZvcm1hdHRlZFN0YXJ0RGF0ZVwiIDpsYWJlbD1cIlQuc3RhcnREYXRlTGFiZWxcIiBwcmVwZW5kLWljb249XCJtZGktY2FsZW5kYXJcIlxuICAgICAgICAgICAgICAgICAgICByZWFkb25seSB2LWJpbmQ9XCJhdHRyc1wiIHYtb249XCJvblwiIG91dGxpbmVkIGRlbnNlPjwvdi10ZXh0LWZpZWxkPlxuICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPCEtLSDYp9iz2KrYrtiv2KfZhSDYp9mE2YTYutipINin2YTYrdin2YTZitipINmE2YTZgCBMb2NhbGUgLS0+XG4gICAgICAgICAgICAgICAgPHYtZGF0ZS1waWNrZXIgdi1tb2RlbD1cInN0YXJ0RGF0ZVwiIEBpbnB1dD1cIm1lbnVTdGFydERhdGUgPSBmYWxzZVwiIDpsb2NhbGU9XCJjdXJyZW50TGFuZ1wiXG4gICAgICAgICAgICAgICAgICBuby10aXRsZT48L3YtZGF0ZS1waWNrZXI+XG4gICAgICAgICAgICAgIDwvdi1tZW51PlxuICAgICAgICAgICAgPC92LWNvbD5cbiAgICAgICAgICAgIDx2LWNvbCBjb2xzPVwiMTJcIiBtZD1cIjRcIj5cbiAgICAgICAgICAgICAgPHYtbWVudSB2LW1vZGVsPVwibWVudUVuZERhdGVcIiA6Y2xvc2Utb24tY29udGVudC1jbGljaz1cImZhbHNlXCIgdHJhbnNpdGlvbj1cInNjYWxlLXRyYW5zaXRpb25cIiBvZmZzZXQteVxuICAgICAgICAgICAgICAgIG1pbi13aWR0aD1cImF1dG9cIj5cbiAgICAgICAgICAgICAgICA8dGVtcGxhdGUgdi1zbG90OmFjdGl2YXRvcj1cInsgb24sIGF0dHJzIH1cIj5cbiAgICAgICAgICAgICAgICAgIDwhLS0g2KfYs9iq2K7Yr9in2YUg2KfZhNiq2LHYrNmF2Kkg2YTZhNmAIExhYmVsIC0tPlxuICAgICAgICAgICAgICAgICAgPHYtdGV4dC1maWVsZCA6dmFsdWU9XCJmb3JtYXR0ZWRFbmREYXRlXCIgOmxhYmVsPVwiVC5lbmREYXRlTGFiZWxcIiBwcmVwZW5kLWljb249XCJtZGktY2FsZW5kYXJcIiByZWFkb25seVxuICAgICAgICAgICAgICAgICAgICB2LWJpbmQ9XCJhdHRyc1wiIHYtb249XCJvblwiIG91dGxpbmVkIGRlbnNlPjwvdi10ZXh0LWZpZWxkPlxuICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPCEtLSDYp9iz2KrYrtiv2KfZhSDYp9mE2YTYutipINin2YTYrdin2YTZitipINmE2YTZgCBMb2NhbGUgLS0+XG4gICAgICAgICAgICAgICAgPHYtZGF0ZS1waWNrZXIgdi1tb2RlbD1cImVuZERhdGVcIiBAaW5wdXQ9XCJtZW51RW5kRGF0ZSA9IGZhbHNlXCIgOm1pbj1cInN0YXJ0RGF0ZVwiIDpsb2NhbGU9XCJjdXJyZW50TGFuZ1wiXG4gICAgICAgICAgICAgICAgICBuby10aXRsZT48L3YtZGF0ZS1waWNrZXI+XG4gICAgICAgICAgICAgIDwvdi1tZW51PlxuICAgICAgICAgICAgPC92LWNvbD5cbiAgICAgICAgICAgIDx2LWNvbCBjb2xzPVwiMTJcIiBtZD1cIjRcIiBjbGFzcz1cImQtZmxleCBhbGlnbi1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgPCEtLSDYp9iz2KrYrtiv2KfZhSDYp9mE2KrYsdis2YXYqSDZhNmG2LUg2KfZhNiy2LEgLS0+XG4gICAgICAgICAgICAgIDx2LWJ0biBjb2xvcj1cInByaW1hcnlcIiBAY2xpY2s9XCJmZXRjaERhdGFcIiA6bG9hZGluZz1cImxvYWRpbmdcIj5cbiAgICAgICAgICAgICAgICA8di1pY29uIGxlZnQ+bWRpLW1hZ25pZnk8L3YtaWNvbj5cbiAgICAgICAgICAgICAgICB7eyBULnZpZXdSZXBvcnRCdG4gfX1cbiAgICAgICAgICAgICAgPC92LWJ0bj5cbiAgICAgICAgICAgIDwvdi1jb2w+XG4gICAgICAgICAgPC92LXJvdz5cbiAgICAgICAgPC92LWNhcmQtdGV4dD5cbiAgICAgIDwvdi1jYXJkPlxuXG4gICAgICA8IS0tIExvYWRpbmcgLyBFcnJvciAvIE5vIERhdGEgU3RhdGVzIChXaXRoIFRyYW5zbGF0aW9ucykgLS0+XG4gICAgICA8di1yb3cgdi1pZj1cImxvYWRpbmdcIiBqdXN0aWZ5PVwiY2VudGVyXCIgY2xhc3M9XCJteS01XCI+PHYtcHJvZ3Jlc3MtY2lyY3VsYXIgaW5kZXRlcm1pbmF0ZSBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgIHNpemU9XCI2NFwiPjwvdi1wcm9ncmVzcy1jaXJjdWxhcj48L3Ytcm93PlxuICAgICAgPCEtLSDYp9iz2KrYrtiv2KfZhSDYp9mE2KrYsdis2YXYqSDZhNix2LPYp9mE2Kkg2KfZhNiu2LfYoyAtLT5cbiAgICAgIDx2LWFsZXJ0IHYtaWY9XCJlcnJvclwiIHR5cGU9XCJlcnJvclwiIGRlbnNlIG91dGxpbmVkIGNsYXNzPVwibXktM1wiPnt7IFQubG9hZGluZ0Vycm9yIH19OiB7eyBlcnJvciB9fTwvdi1hbGVydD5cbiAgICAgIDwhLS0g2KfYs9iq2K7Yr9in2YUg2KfZhNiq2LHYrNmF2Kkg2YTYsdiz2KfZhNipINi52K/ZhSDZiNis2YjYryDYqNmK2KfZhtin2KogLS0+XG4gICAgICA8di1hbGVydCB2LWlmPVwiIWxvYWRpbmcgJiYgIWVycm9yICYmICFyZXBvcnREYXRhPy5hbmFseXNpc1wiIHR5cGU9XCJpbmZvXCIgZGVuc2Ugb3V0bGluZWQgY2xhc3M9XCJteS0zXCI+XG4gICAgICAgIHt7IFQubm9BbmFseXNpc0RhdGEgfX1cbiAgICAgIDwvdi1hbGVydD5cblxuICAgICAgPCEtLSBBbmFseXNpcyBSZXN1bHRzIC0tPlxuICAgICAgPGRpdiB2LWlmPVwiIWxvYWRpbmcgJiYgIWVycm9yICYmIHJlcG9ydERhdGE/LmFuYWx5c2lzXCI+XG4gICAgICAgIDwhLS0gT3ZlcmFsbCBTdW1tYXJ5IC0tPlxuICAgICAgICA8di1jYXJkIGNsYXNzPVwibWItNFwiPlxuICAgICAgICAgIDwhLS0g2KfYs9iq2K7Yr9in2YUg2KfZhNiq2LHYrNmF2Kkg2YTZhNi52YbZiNin2YYgLS0+XG4gICAgICAgICAgPHYtY2FyZC10aXRsZT57eyBULmZpbmFuY2lhbFN1bW1hcnlUaXRsZSB9fSAoVFRDKTwvdi1jYXJkLXRpdGxlPlxuICAgICAgICAgIDx2LWNhcmQtdGV4dD5cbiAgICAgICAgICAgIDx2LXJvdyBkZW5zZSBqdXN0aWZ5PVwiY2VudGVyXCI+XG4gICAgICAgICAgICAgIDwhLS0g2KfYs9iq2K7Yr9in2YUg2KfZhNiq2LHYrNmF2Kkg2YTZhNmAIExhYmVscyDYp9mE2KvYp9io2KrYqSAtLT5cbiAgICAgICAgICAgICAgPHYtY29sIGNvbHM9XCIxMlwiIG1kPVwiNFwiPjxzdHJvbmc+e3sgVC50b3RhbFNhbGVzTGFiZWwgfX06PC9zdHJvbmc+IHt7XG4gICAgICAgICAgICAgICAgZm9ybWF0Q3VycmVuY3kocmVwb3J0RGF0YS5hbmFseXNpcy50b3RhbFZlbnRlc1RUQykgfX08L3YtY29sPlxuICAgICAgICAgICAgICA8di1jb2wgY29scz1cIjEyXCIgbWQ9XCI0XCI+PHN0cm9uZz57eyBULnRvdGFsQ29zdExhYmVsIH19Ojwvc3Ryb25nPiB7e1xuICAgICAgICAgICAgICAgIGZvcm1hdEN1cnJlbmN5KHJlcG9ydERhdGEuYW5hbHlzaXMudG90YWxBY2hhdFRUQykgfX08L3YtY29sPlxuXG5cbiAgICAgICAgICAgICAgPHYtY29sIGNvbHM9XCIxMlwiIG1kPVwiNFwiPiA8di1jaGlwIHNtYWxsXG4gICAgICAgICAgICAgICAgICA6Y29sb3I9XCJnZXRQcm9maXRNYXJnaW5Db2xvcihyZXBvcnREYXRhLmFuYWx5c2lzLm1hcmdlQmVuZWZpY2lhaXJlUG91cmNlbnRhZ2UpXCI+XG4gICAgICAgICAgICAgICAgICA8IS0tINin2LPYqtiu2K/Yp9mFINin2YTYqtix2KzZhdipINmE2YTZgCBMYWJlbHMg2KfZhNir2KfYqNiq2KkgLS0+XG4gICAgICAgICAgICAgICAgICA8c3Ryb25nPiB7eyBULnByb2ZpdE1hcmdpbkxhYmVsIH19Ojwvc3Ryb25nPiB7e1xuICAgICAgICAgICAgICAgICAgICBmb3JtYXRQZXJjZW50KHJlcG9ydERhdGEuYW5hbHlzaXMubWFyZ2VCZW5lZmljaWFpcmVQb3VyY2VudGFnZSkgfX0gLyB7e1xuICAgICAgICAgICAgICAgICAgICBmb3JtYXRDdXJyZW5jeShyZXBvcnREYXRhLmFuYWx5c2lzLm1hcmdlQmVuZWZpY2lhaXJlVFRDKSB9fSBUVENcbiAgICAgICAgICAgICAgICA8L3YtY2hpcD48L3YtY29sPlxuXG4gICAgICAgICAgICAgIDx2LWNvbCBjb2xzPVwiMTJcIiBtZD1cIjVcIj48c3Ryb25nPnt7IFQudG90YWxQYWlkTGFiZWwgfX06PC9zdHJvbmc+IHt7XG4gICAgICAgICAgICAgICAgZm9ybWF0Q3VycmVuY3kocmVwb3J0RGF0YS5hbmFseXNpcy50b3RhbERlamFyZWdsZSkgfX08L3YtY29sPlxuXG4gICAgICAgICAgICAgIDx2LWNvbCBjb2xzPVwiMTJcIiBtZD1cIjVcIj48c3Ryb25nPnt7IFQuYW1vdW50RHVlTGFiZWwgfX06PC9zdHJvbmc+IHt7XG4gICAgICAgICAgICAgICAgZm9ybWF0Q3VycmVuY3kocmVwb3J0RGF0YS5hbmFseXNpcy5tb250YW50ZW5jb3VycykgfX08L3YtY29sPlxuICAgICAgICAgICAgPC92LXJvdz5cbiAgICAgICAgICAgIDx2LWRpdmlkZXIgY2xhc3M9XCJteS0zXCI+PC92LWRpdmlkZXI+XG4gICAgICAgICAgICA8di1yb3cgZGVuc2UganVzdGlmeT1cImNlbnRlclwiPlxuXG4gICAgICAgICAgICAgIDx2LWNvbCBjb2xzPVwiMTJcIiBtZD1cIjVcIj5cbiAgICAgICAgICAgICAgICA8di1jaGlwIHNtYWxsIDpjb2xvcj1cImdldENvdmVyYWdlQ29sb3IocmVwb3J0RGF0YS5hbmFseXNpcy5jb3V0Q291dmVydHVyZVBvdXJjZW50YWdlKVwiPlxuICAgICAgICAgICAgICAgICAge3sgVC5jb3N0Q292ZXJhZ2VMYWJlbCB9fToge3sgZm9ybWF0UGVyY2VudChyZXBvcnREYXRhLmFuYWx5c2lzLmNvdXRDb3V2ZXJ0dXJlUG91cmNlbnRhZ2UpIH19XG4gICAgICAgICAgICAgICAgPC92LWNoaXA+XG4gICAgICAgICAgICAgIDwvdi1jb2w+XG4gICAgICAgICAgICAgIDx2LWNvbCBjb2xzPVwiMTJcIiBtZD1cIjVcIj5cbiAgICAgICAgICAgICAgICA8di1jaGlwIHNtYWxsIDpjb2xvcj1cImdldFJpc2tDb2xvcihyZXBvcnREYXRhLmFuYWx5c2lzLnJpc3F1ZVBvdXJjZW50YWdlKVwiPlxuICAgICAgICAgICAgICAgICAge3sgVC5yaXNrUmF0aW9MYWJlbCB9fTpcbiAgICAgICAgICAgICAgICAgIHt7IHJlcG9ydERhdGEuYW5hbHlzaXMucmlzcXVlUG91cmNlbnRhZ2UgIT09IG51bGwgP1xuICAgICAgICAgICAgICAgICAgICBmb3JtYXRQZXJjZW50KHJlcG9ydERhdGEuYW5hbHlzaXMucmlzcXVlUG91cmNlbnRhZ2UpIDpcbiAgICAgICAgICAgICAgICAgIFQubm90QXBwbGljYWJsZSB9fVxuICAgICAgICAgICAgICAgIDwvdi1jaGlwPlxuICAgICAgICAgICAgICA8L3YtY29sPlxuICAgICAgICAgICAgPC92LXJvdz5cblxuXG5cblxuICAgICAgICAgIDwvdi1jYXJkLXRleHQ+XG4gICAgICAgIDwvdi1jYXJkPlxuXG4gICAgICAgIDwhLS0gQW5hbHlzaXMgTWVzc2FnZXMgLS0+XG4gICAgICAgIDx2LWNhcmQgY2xhc3M9XCJtYi00XCI+XG4gICAgICAgICAgPCEtLSDYp9iz2KrYrtiv2KfZhSDYp9mE2KrYsdis2YXYqSDZhNmE2LnZhtmI2KfZhiAtLT5cbiAgICAgICAgICA8di1jYXJkLXRpdGxlPnt7IFQucXVhbGl0YXRpdmVBbmFseXNpc1RpdGxlIH19IChUVEMpPC92LWNhcmQtdGl0bGU+XG4gICAgICAgICAgPHYtY2FyZC10ZXh0PlxuICAgICAgICAgICAgPCEtLSDYp9iz2KrYrtiv2KfZhSDYp9mE2K7Ytdin2KbYtSDYp9mE2YXYrdiz2YjYqNipINin2YTYqtmKINiq2LnYqtmF2K8g2KfZhNii2YYg2LnZhNmJINin2YTZhNi62KkgLS0+XG4gICAgICAgICAgICA8di1hbGVydCA6dHlwZT1cImdldEFsZXJ0VHlwZSgncHJvZml0YWJpbGl0eScpXCIgZGVuc2Ugb3V0bGluZWQgY2xhc3M9XCJtYi0yXCI+XG4gICAgICAgICAgICAgIHt7IHByb2ZpdGFiaWxpdHlUdGNNZXNzYWdlIH19XG4gICAgICAgICAgICA8L3YtYWxlcnQ+XG5cbiAgICAgICAgICAgIDx2LWFsZXJ0IDp0eXBlPVwiZ2V0QWxlcnRUeXBlKCdjb3ZlcmFnZScpXCIgZGVuc2Ugb3V0bGluZWQ+XG4gICAgICAgICAgICAgIHt7IGNvdmVyYWdlTWVzc2FnZSB9fVxuICAgICAgICAgICAgPC92LWFsZXJ0PlxuICAgICAgICAgICAgPHYtYWxlcnQgOnR5cGU9XCJnZXRBbGVydFR5cGUoJ3Jpc2snKVwiIGRlbnNlIG91dGxpbmVkIGNsYXNzPVwibWItMlwiPlxuICAgICAgICAgICAgICB7eyByaXNrTWVzc2FnZSB9fVxuICAgICAgICAgICAgPC92LWFsZXJ0PlxuICAgICAgICAgIDwvdi1jYXJkLXRleHQ+XG4gICAgICAgIDwvdi1jYXJkPlxuXG4gICAgICAgIDwhLS0gU2FsZXMgQmVsb3cgQ29zdCAoVXNpbmcgdi1kYXRhLXRhYmxlKSAtLT5cbiAgICAgICAgPHYtY2FyZCBjbGFzcz1cIm1iLTRcIj5cbiAgICAgICAgICA8di1jYXJkLXRpdGxlPnt7IFQuc2FsZXNCZWxvd0Nvc3RUaXRsZSB9fSAoVFRDKTwvdi1jYXJkLXRpdGxlPlxuICAgICAgICAgIDx2LWNhcmQtdGV4dD5cbiAgICAgICAgICAgIDwhLS0g2KfYs9iq2K7Yr9in2YUgY29tcHV0ZWQgcHJvcGVydHkgc2FsZXNCZWxvd0Nvc3RBcnJheSAtLT5cbiAgICAgICAgICAgIDxkaXYgdi1pZj1cInNhbGVzQmVsb3dDb3N0QXJyYXkgJiYgc2FsZXNCZWxvd0Nvc3RBcnJheS5sZW5ndGggPiAwXCI+XG4gICAgICAgICAgICAgIDx2LWFsZXJ0IHR5cGU9XCJlcnJvclwiIGRlbnNlIG91dGxpbmVkIGNsYXNzPVwibWItM1wiPlxuICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgVC53YXJuaW5nTGFiZWwgfX08L3N0cm9uZz4ge3sgVC5zYWxlc0JlbG93Q29zdFdhcm5pbmcgfX1cbiAgICAgICAgICAgICAgICAoe3sgVC50b3RhbEl0ZW1zIH19OiB7eyBzYWxlc0JlbG93Q29zdEFycmF5Lmxlbmd0aCB9fSlcbiAgICAgICAgICAgICAgPC92LWFsZXJ0PlxuXG4gICAgICAgICAgICAgIDwhLS0gRGF0YSBUYWJsZSAtLT5cbiAgICAgICAgICAgICAgPHYtZGF0YS10YWJsZSA6aGVhZGVycz1cInRyYW5zbGF0ZWRTYWxlc0JlbG93Q29zdEhlYWRlcnNcIiA6aXRlbXM9XCJzYWxlc0JlbG93Q29zdEFycmF5XCIgOml0ZW1zLXBlci1wYWdlPVwiNVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJlbGV2YXRpb24tMVwiIHNob3ctZXhwYW5kIHNpbmdsZS1leHBhbmQgaXRlbS1rZXk9XCJpZFwiIDpuby1kYXRhLXRleHQ9XCJULm5vRGF0YVNhbGVzQmVsb3dDb3N0XCJcbiAgICAgICAgICAgICAgICA6Zm9vdGVyLXByb3BzPVwieyAnaXRlbXMtcGVyLXBhZ2UtdGV4dCc6IFQuaXRlbXNQZXJQYWdlVGV4dCB9XCIgZGVuc2U+XG5cbiAgICAgICAgICAgICAgICA8dGVtcGxhdGUgdi1zbG90Oml0ZW0ucmVmPVwieyBpdGVtIH1cIj5cbiAgICAgICAgICAgICAgICAgIDx0YWJsZS1mb3JlaWdua2V5IGNvbnRyb2xsZXI9XCJib25zdmVudGVzXCIgOmlkPVwiaXRlbVsnaWQnXVwiIDp0ZXh0PVwiaXRlbS5yZWZcIiA6aXRlbXNob3c9XCJbXG4gICAgICAgICAgICAgICAgICAgICd0aXRyZScsXG4gICAgICAgICAgICAgICAgICAgICdyZWYnLFxuICAgICAgICAgICAgICAgICAgICAnY2xpZW50JyxcbiAgICAgICAgICAgICAgICAgICAgJ21vbnRhbnRUdGMnLFxuICAgICAgICAgICAgICAgICAgICAnZGF0ZScsXG4gICAgICAgICAgICAgICAgICAgICdlbnRyZXBvdCcsXG4gICAgICAgICAgICAgICAgICAgICd1c2VyJyxcbiAgICAgICAgICAgICAgICAgIF1cIj48L3RhYmxlLWZvcmVpZ25rZXk+XG4gICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cblxuXG5cblxuXG4gICAgICAgICAgICAgICAgPCEtLSBTbG90INmE2LnYr9ivINin2YTZhdmG2KrYrNin2KogLS0+XG4gICAgICAgICAgICAgICAgPHRlbXBsYXRlIHYtc2xvdDppdGVtLnByb2R1Y3RDb3VudD1cInsgaXRlbSB9XCI+XG4gICAgICAgICAgICAgICAgICA8di1jaGlwIHNtYWxsIGNvbG9yPVwiZXJyb3JcIiBkYXJrPnt7IGl0ZW0ucHJvZHVjdENvdW50IH19PC92LWNoaXA+XG4gICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cblxuICAgICAgICAgICAgICAgIDwhLS0gU2xvdCDZhNmE2LXZgSDYp9mE2YXZiNiz2LkgLS0+XG4gICAgICAgICAgICAgICAgPHRlbXBsYXRlIHYtc2xvdDpleHBhbmRlZC1pdGVtPVwieyBoZWFkZXJzLCBpdGVtIH1cIj5cbiAgICAgICAgICAgICAgICAgIDx0ZCA6Y29sc3Bhbj1cImhlYWRlcnMubGVuZ3RoXCIgY2xhc3M9XCJwYS0wXCI+XG4gICAgICAgICAgICAgICAgICAgIDx2LWxpc3QgZGVuc2Ugc3ViaGVhZGVyIGNsYXNzPVwicHktMiBncmV5IGxpZ2h0ZW4tNFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDx2LXN1YmhlYWRlcj57eyBULnByb2R1Y3RzU29sZEF0TG9zcyB9fTwvdi1zdWJoZWFkZXI+XG4gICAgICAgICAgICAgICAgICAgICAgPHYtbGlzdC1pdGVtIHYtZm9yPVwicHJvZHVjdCBpbiBpdGVtLnByb2R1Y3RzXCIgOmtleT1cInByb2R1Y3QucHJvZHVjdElkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8di1saXN0LWl0ZW0tY29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHYtbGlzdC1pdGVtLXRpdGxlIGNsYXNzPVwiZm9udC13ZWlnaHQtbWVkaXVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgcHJvZHVjdC5kZXNpZ25hdGlvbiB9fSA8c3BhbiBjbGFzcz1cImNhcHRpb25cIj4oSUQ6IHt7IHByb2R1Y3QucHJvZHVjdElkIH19KTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC92LWxpc3QtaXRlbS10aXRsZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHYtbGlzdC1pdGVtLXN1YnRpdGxlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2LWNoaXAgc21hbGwgb3V0bGluZWQgY29sb3I9XCJyZWRcIiBjbGFzcz1cIm1hLTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IFQuc2VsbGluZ1ByaWNlTGFiZWwgfX06IHt7IGZvcm1hdEN1cnJlbmN5KHByb2R1Y3QuYWN0dWFsU2VsbGluZ1ByaWNlVHRjKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdi1jaGlwPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2LWNoaXAgc21hbGwgb3V0bGluZWQgY29sb3I9XCJibHVlLWdyZXlcIiBjbGFzcz1cIm1hLTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IFQuY29zdFByaWNlTGFiZWwgfX06IHt7IGZvcm1hdEN1cnJlbmN5KHByb2R1Y3QuY29zdFByaWNlVHRjKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdi1jaGlwPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3YtbGlzdC1pdGVtLXN1YnRpdGxlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC92LWxpc3QtaXRlbS1jb250ZW50PlxuICAgICAgICAgICAgICAgICAgICAgIDwvdi1saXN0LWl0ZW0+XG4gICAgICAgICAgICAgICAgICAgIDwvdi1saXN0PlxuICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICAgICAgICA8L3YtZGF0YS10YWJsZT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiB2LWVsc2U+XG4gICAgICAgICAgICAgIDx2LWFsZXJ0IHR5cGU9XCJzdWNjZXNzXCIgZGVuc2Ugb3V0bGluZWQ+XG4gICAgICAgICAgICAgICAge3sgVC5ub1NhbGVzQmVsb3dDb3N0Rm91bmQgfX1cbiAgICAgICAgICAgICAgPC92LWFsZXJ0PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC92LWNhcmQtdGV4dD5cbiAgICAgICAgPC92LWNhcmQ+XG5cbiAgICAgICAgPCEtLSBUb3AgUHJvZml0YWJsZSBQcm9kdWN0cyAoVFRDKSAtLT5cbiAgICAgICAgPHYtY2FyZD5cbiAgICAgICAgICA8IS0tINin2LPYqtiu2K/Yp9mFINin2YTYqtix2KzZhdipINmE2YTYudmG2YjYp9mGIC0tPlxuICAgICAgICAgIDx2LWNhcmQtdGl0bGU+e3sgVC50b3BQcm9kdWN0c1RpdGxlIH19IChUVEMpPC92LWNhcmQtdGl0bGU+XG4gICAgICAgICAgPHYtY2FyZC10ZXh0PlxuICAgICAgICAgICAgPHYtZGF0YS10YWJsZSA6aGVhZGVycz1cInRyYW5zbGF0ZWRUb3BQcm9kdWN0c1R0Y0hlYWRlcnNcIiA6aXRlbXM9XCJyZXBvcnREYXRhLnRvcFByb2R1Y3RzVHRjIHx8IFtdXCJcbiAgICAgICAgICAgICAgOml0ZW1zLXBlci1wYWdlPVwiMTBcIiBjbGFzcz1cImVsZXZhdGlvbi0xXCIgZGVuc2UgOm5vLWRhdGEtdGV4dD1cIlQubm9EYXRhUHJvZHVjdHNcIlxuICAgICAgICAgICAgICA6Zm9vdGVyLXByb3BzPVwieyAnaXRlbXMtcGVyLXBhZ2UtdGV4dCc6IFQuaXRlbXNQZXJQYWdlVGV4dCB9XCI+XG4gICAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6aXRlbS50b3RhbFNhbGVzVHRjPVwieyBpdGVtIH1cIj5cbiAgICAgICAgICAgICAgICB7eyBmb3JtYXRDdXJyZW5jeShpdGVtLnRvdGFsU2FsZXNUdGMpIH19XG4gICAgICAgICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6aXRlbS50b3RhbENvc3RUdGM9XCJ7IGl0ZW0gfVwiPlxuICAgICAgICAgICAgICAgIHt7IGZvcm1hdEN1cnJlbmN5KGl0ZW0udG90YWxDb3N0VHRjKSB9fVxuICAgICAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICAgICAgICA8dGVtcGxhdGUgdi1zbG90Oml0ZW0ucHJvZml0VHRjPVwieyBpdGVtIH1cIj5cbiAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IGZvcm1hdEN1cnJlbmN5KGl0ZW0ucHJvZml0VHRjKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICAgICAgPC92LWRhdGEtdGFibGU+XG4gICAgICAgICAgPC92LWNhcmQtdGV4dD5cbiAgICAgICAgPC92LWNhcmQ+XG5cbiAgICAgIDwvZGl2PlxuXG4gICAgPC92LWNvbnRhaW5lcj5cblxuXG5cbiAgPC9jYXJkLWNhcmQ+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0PlxuaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcbmltcG9ydCB3aWRnZXRzTWl4aW4gZnJvbSBcIi4vLi4vd2lkZ2V0c01peGluXCI7XG5cbi8vIC0tLSDYqti52LHZitmBINin2YTYqtix2KzZhdipINmD2KvYp9io2Kog2KPZiCDYp9iz2KrZitix2KfYr9mH2KcgLS0tXG5jb25zdCB0cmFuc2xhdGlvbnMgPSB7XG4gIGZyOiB7XG4gICAgcmVwb3J0VGl0bGU6IFwiUmFwcG9ydCBkJ0FuYWx5c2UgZGVzIFZlbnRlc1wiLFxuICAgIHNlbGVjdFBlcmlvZDogXCJTw6lsZWN0aW9ubmV6IGxhIHDDqXJpb2RlIHBvdXIgYWZmaWNoZXIgbGUgcmFwcG9ydFwiLFxuICAgIHN0YXJ0RGF0ZUxhYmVsOiBcIkRhdGUgZGUgZMOpYnV0XCIsXG4gICAgZW5kRGF0ZUxhYmVsOiBcIkRhdGUgZGUgZmluXCIsXG4gICAgdmlld1JlcG9ydEJ0bjogXCJBZmZpY2hlciBsZSByYXBwb3J0XCIsXG4gICAgc3dpdGNoVG86IFwiUGFzc2VyIGVuXCIsXG4gICAgbG9hZGluZ0Vycm9yOiBcIkVycmV1ciBkZSBjaGFyZ2VtZW50IGRlcyBkb25uw6llc1wiLFxuICAgIG5vQW5hbHlzaXNEYXRhOiBcIkF1Y3VuZSBkb25uw6llIGQnYW5hbHlzZSBwb3VyIGNldHRlIHDDqXJpb2RlLiBWZXVpbGxleiBzw6lsZWN0aW9ubmVyIHVuZSBhdXRyZSBww6lyaW9kZSBvdSB2w6lyaWZpZXIgbGVzIHZlbnRlcy5cIixcbiAgICBmaW5hbmNpYWxTdW1tYXJ5VGl0bGU6IFwiUsOpc3Vtw6kgRmluYW5jaWVyXCIsXG4gICAgdG90YWxTYWxlc0xhYmVsOiBcIlZlbnRlcyB0b3RhbGVzIChUVEMpXCIsXG4gICAgdG90YWxQYWlkTGFiZWw6IFwiVG90YWwgRW5jYWlzc8OpXCIsXG4gICAgYW1vdW50RHVlTGFiZWw6IFwiTW9udGFudCBEw7tcIixcbiAgICB0b3RhbENvc3RMYWJlbDogXCJDb8O7dCBUb3RhbCAoVFRDKVwiLFxuICAgIGdyb3NzUHJvZml0TGFiZWw6IFwiTWFyZ2UgQnJ1dGUgKFRUQylcIixcbiAgICBwcm9maXRNYXJnaW5MYWJlbDogXCJNYXJnZSBCw6luw6lmaWNpYWlyZSAoVFRDKVwiLFxuICAgIGNvc3RDb3ZlcmFnZUxhYmVsOiBcIkNvdXZlcnR1cmUgZGVzIENvw7t0cyAoVFRDKVwiLFxuICAgIHJpc2tSYXRpb0xhYmVsOiBcIlJpc3F1ZSAoRMO7L01hcmdlIFRUQylcIixcbiAgICBub3RBcHBsaWNhYmxlOiBcIk4vQVwiLFxuICAgIHF1YWxpdGF0aXZlQW5hbHlzaXNUaXRsZTogXCJBbmFseXNlIFF1YWxpdGF0aXZlXCIsXG4gICAgc2FsZXNCZWxvd0Nvc3RUaXRsZTogXCJBbGVydGVzIDogUHJvZHVpdHMgdmVuZHVzIMOgIHBlcnRlXCIsXG4gICAgd2FybmluZ0xhYmVsOiBcIkF0dGVudGlvbiAhXCIsXG4gICAgc2FsZXNCZWxvd0Nvc3RXYXJuaW5nOiBcIkxlcyBwcm9kdWl0cyBzdWl2YW50cyBvbnQgw6l0w6kgdHJvdXbDqXMgdmVuZHVzIMOgIHVuIHByaXggaW5mw6lyaWV1ciDDoCBsZXVyIGNvw7t0IGRhbnMgbGVzIHZlbnRlcyBtZW50aW9ubsOpZXMgOlwiLFxuICAgIHNhbGVzUmVjZWlwdExhYmVsOiBcIkJvbiBkZSBWZW50ZVwiLFxuICAgIGNsaWVudExhYmVsOiBcIkNsaWVudFwiLFxuICAgIHNlbGxpbmdQcmljZUxhYmVsOiBcIlByaXggZGUgVmVudGUgVW5pdGFpcmUgKFRUQylcIixcbiAgICBjb3N0UHJpY2VMYWJlbDogXCJDb8O7dCBVbml0YWlyZSAoVFRDKVwiLFxuICAgIG5vU2FsZXNCZWxvd0Nvc3RGb3VuZDogXCJBdWN1biBwcm9kdWl0IHZlbmR1IMOgIHBlcnRlIG4nYSDDqXTDqSB0cm91dsOpIHBvdXIgY2V0dGUgcMOpcmlvZGUuXCIsXG4gICAgdG9wUHJvZHVjdHNUaXRsZTogXCJQcm9kdWl0cyBsZXMgcGx1cyBSZW50YWJsZXNcIixcbiAgICBub0RhdGFQcm9kdWN0czogXCJBdWN1biBwcm9kdWl0IHJlbnRhYmxlIChUVEMpIHRyb3V2w6kgcG91ciBjZXR0ZSBww6lyaW9kZS5cIixcbiAgICBpdGVtc1BlclBhZ2VUZXh0OiBcIsOJbMOpbWVudHMgcGFyIHBhZ2UgOlwiLFxuICAgIHRvdGFsSXRlbXM6IFwiVG90YWxcIixcbiAgICBub0RhdGFTYWxlc0JlbG93Q29zdDogXCJBdWN1bmUgdmVudGUgYXZlYyBwcm9kdWl0cyDDoCBwZXJ0ZSB0cm91dsOpZVwiLFxuICAgIHByb2R1Y3RzU29sZEF0TG9zczogXCJQcm9kdWl0cyB2ZW5kdXMgw6AgcGVydGUgZGFucyBjZSBib25cIixcbiAgICAvLyDYsdiz2KfYptmEINiq2K3ZhNmK2YTZitipXG4gICAgcHJvZml0TXNnUG9zaXRpdmU6IFwiUG9zaXRpZiAoVFRDKSA6IExlcyB2ZW50ZXMgZ8OpbsOocmVudCB1bmUgbWFyZ2UgYsOpbsOpZmljaWFpcmUgYnJ1dGUgZGUge3ZhbHVlfS5cIixcbiAgICBwcm9maXRNc2dOZXV0cmFsOiBcIk5ldXRyZSAoVFRDKSA6IFBvaW50IG1vcnQgYXR0ZWludCAoTWFyZ2Uge3ZhbHVlfSkuXCIsXG4gICAgcHJvZml0TXNnTmVnYXRpdmU6IFwiTsOpZ2F0aWYgKFRUQykgOiBQZXJ0ZSBicnV0ZSBlbnJlZ2lzdHLDqWUgKE1hcmdlIHt2YWx1ZX0pLlwiLFxuICAgIHJpc2tNc2dMb3c6IFwiUmlzcXVlIGZhaWJsZSA6IEF1Y3VuIG1vbnRhbnQgZMO7LlwiLFxuICAgIHJpc2tNc2dIaWdoTG9zczogXCJSaXNxdWUgdHLDqHMgw6lsZXbDqSA6IFZlbnRlcyBub24gcmVudGFibGVzIChUVEMpIGV0IHVuIG1vbnRhbnQgZMO7IGRlIHt2YWx1ZX0uXCIsXG4gICAgcmlza01zZ0hpZ2hSYXRpbzogXCJSaXNxdWUgw6lsZXbDqSA6IExlIG1vbnRhbnQgZMO7IHJlcHLDqXNlbnRlIHt2YWx1ZX0gZGUgbGEgbWFyZ2UgKFRUQykuXCIsXG4gICAgcmlza01zZ01lZGl1bVJhdGlvOiBcIlJpc3F1ZSBtb3llbiA6IExlIG1vbnRhbnQgZMO7IHJlcHLDqXNlbnRlIHt2YWx1ZX0gZGUgbGEgbWFyZ2UgKFRUQykuXCIsXG4gICAgcmlza01zZ09rUmF0aW86IFwiUmlzcXVlIGFjY2VwdGFibGUgOiBMZSBtb250YW50IGTDuyBuZSByZXByw6lzZW50ZSBxdWUge3ZhbHVlfSBkZSBsYSBtYXJnZSAoVFRDKS5cIixcbiAgICByaXNrTXNnRXJyb3I6IFwiUmlzcXVlIMOpbGV2w6kgOiBMZSBtb250YW50IGTDuyB7dmFsdWV9IG5lIHBldXQgw6p0cmUgY29tcGFyw6kgw6AgbGEgbWFyZ2UuXCIsXG4gICAgY292ZXJhZ2VNc2dFeGNlbGxlbnQ6IFwiRXhjZWxsZW50ZSBjb3V2ZXJ0dXJlIDogTGVzIGVuY2Fpc3NlbWVudHMgY291dnJlbnQge3ZhbHVlfSBkdSBjb8O7dCBkZXMgbWFyY2hhbmRpc2VzIChUVEMpLlwiLFxuICAgIGNvdmVyYWdlTXNnSW5jb21wbGV0ZTogXCJDb3V2ZXJ0dXJlIGluY29tcGzDqHRlIDogTGVzIGVuY2Fpc3NlbWVudHMgbmUgY291dnJlbnQgcXVlIHt2YWx1ZX0gZHUgY2/Du3QgZGVzIG1hcmNoYW5kaXNlcyAoVFRDKS5cIixcbiAgICBjb3ZlcmFnZU1zZ05vQ29zdDogXCJBdWN1biBjb8O7dCBkZSBtYXJjaGFuZGlzZSBlbnJlZ2lzdHLDqSBldCBhdWN1biBlbmNhaXNzZW1lbnQgKENvdXZlcnR1cmUgMCUpLlwiLFxuICAgIGNvdmVyYWdlTXNnRXJyb3I6IFwiSW1wb3NzaWJsZSBkZSBkw6l0ZXJtaW5lciBsZSB0YXV4IGRlIGNvdXZlcnR1cmUgZGVzIGNvw7t0cy5cIixcbiAgICAvLyDYsdik2YjYsyDYp9mE2KzYr9in2YjZhFxuICAgIHNhbGVzQmVsb3dDb3N0SGVhZGVyczogW1xuICAgICAgeyB0ZXh0OiAnQm9uIElEJywgdmFsdWU6ICdpZCcsIHNvcnRhYmxlOiB0cnVlLCBhbGlnbjogJ3N0YXJ0JyB9LFxuICAgICAgeyB0ZXh0OiAnUsOpZsOpcmVuY2UnLCB2YWx1ZTogJ3JlZicsIHNvcnRhYmxlOiBmYWxzZSB9LFxuICAgICAgeyB0ZXh0OiAnQ2xpZW50JywgdmFsdWU6ICdjbGllbnROb20nLCBzb3J0YWJsZTogZmFsc2UgfSxcbiAgICAgIHsgdGV4dDogJ05iLiBQcm9kdWl0cycsIHZhbHVlOiAncHJvZHVjdENvdW50Jywgc29ydGFibGU6IHRydWUsIGFsaWduOiAnY2VudGVyJyB9LFxuICAgICAgeyB0ZXh0OiAnJywgdmFsdWU6ICdkYXRhLXRhYmxlLWV4cGFuZCcgfSxcbiAgICBdLFxuICAgIHRvcFByb2R1Y3RzSGVhZGVyczogWyAvLyDYp9mE2YXZgdiq2KfYrSDYp9mE2LXYrdmK2K0g2YTYsdik2YjYsyDYrNiv2YjZhCDYp9mE2YXZhtiq2KzYp9iqINin2YTZhdix2KjYrdipXG4gICAgICB7IHRleHQ6ICdJRCcsIHZhbHVlOiAncHJvZHVjdElkJywgc29ydGFibGU6IGZhbHNlIH0sXG4gICAgICB7IHRleHQ6ICdEw6lzaWduYXRpb24nLCB2YWx1ZTogJ2Rlc2lnbmF0aW9uJywgc29ydGFibGU6IGZhbHNlIH0sXG4gICAgICB7IHRleHQ6ICdRdMOpIFZlbmR1ZScsIHZhbHVlOiAndG90YWxRdWFudGl0eVNvbGQnLCBhbGlnbjogJ2VuZCcsIHNvcnRhYmxlOiBmYWxzZSB9LFxuICAgICAgeyB0ZXh0OiAnVmVudGVzIFRvdC4gKFRUQyknLCB2YWx1ZTogJ3RvdGFsU2FsZXNUdGMnLCBhbGlnbjogJ2VuZCcsIHNvcnRhYmxlOiBmYWxzZSB9LFxuICAgICAgeyB0ZXh0OiAnQ2/Du3QgVG90LiAoVFRDKScsIHZhbHVlOiAndG90YWxDb3N0VHRjJywgYWxpZ246ICdlbmQnLCBzb3J0YWJsZTogZmFsc2UgfSxcbiAgICAgIHsgdGV4dDogJ01hcmdlIEJydXRlIChUVEMpJywgdmFsdWU6ICdwcm9maXRUdGMnLCBhbGlnbjogJ2VuZCcsIHNvcnRhYmxlOiB0cnVlIH0sXG4gICAgXSxcbiAgfSxcbiAgYXI6IHtcbiAgICAvLyAuLi4gKNmG2YHYsyDYp9mE2YXZgdin2KrZititINmF2Lkg2KfZhNiq2LHYrNmF2Kkg2KfZhNi52LHYqNmK2KkpIC4uLlxuICAgIHJlcG9ydFRpdGxlOiBcItiq2YLYsdmK2LEg2KrYrdmE2YrZhCDYp9mE2YXYqNmK2LnYp9iqXCIsXG4gICAgc2VsZWN0UGVyaW9kOiBcItit2K/YryDYp9mE2YHYqtix2Kkg2KfZhNiy2YXZhtmK2Kkg2YTYudix2LYg2KfZhNiq2YLYsdmK2LFcIixcbiAgICBzdGFydERhdGVMYWJlbDogXCLYqtin2LHZitiuINin2YTYqNiv2KFcIixcbiAgICBlbmREYXRlTGFiZWw6IFwi2KrYp9ix2YrYriDYp9mE2KfZhtiq2YfYp9ihXCIsXG4gICAgdmlld1JlcG9ydEJ0bjogXCLYudix2LYg2KfZhNiq2YLYsdmK2LFcIixcbiAgICBzd2l0Y2hUbzogXCLYp9mE2KrYrdmI2YrZhCDYpdmE2YlcIixcbiAgICBsb2FkaW5nRXJyb3I6IFwi2K7Yt9ijINmB2Yog2KrYrdmF2YrZhCDYp9mE2KjZitin2YbYp9iqXCIsXG4gICAgbm9BbmFseXNpc0RhdGE6IFwi2YTYpyDYqtmI2KzYryDYqNmK2KfZhtin2Kog2KrYrdmE2YrZhCDZhNmH2LDZhyDYp9mE2YHYqtix2KkuINin2YTYsdis2KfYoSDYqtit2K/ZitivINmB2KrYsdipINij2K7YsdmJINij2Ygg2KfZhNiq2K3ZgtmCINmF2YYg2YjYrNmI2K8g2YXYqNmK2LnYp9iqLlwiLFxuICAgIGZpbmFuY2lhbFN1bW1hcnlUaXRsZTogXCLYp9mE2YXZhNiu2LUg2KfZhNmF2KfZhNmKXCIsXG4gICAgdG90YWxTYWxlc0xhYmVsOiBcItil2KzZhdin2YTZiiDYp9mE2YXYqNmK2LnYp9iqIChUVEMpXCIsXG4gICAgdG90YWxQYWlkTGFiZWw6IFwi2KXYrNmF2KfZhNmKINin2YTZhdiz2K/Yr1wiLFxuICAgIGFtb3VudER1ZUxhYmVsOiBcItin2YTZhdio2YTYuiDYp9mE2YXYs9iq2K3ZglwiLFxuICAgIHRvdGFsQ29zdExhYmVsOiBcItil2KzZhdin2YTZiiDYp9mE2KrZg9mE2YHYqSAoVFRDKVwiLFxuICAgIGdyb3NzUHJvZml0TGFiZWw6IFwi2KfZhNix2KjYrSDYp9mE2KXYrNmF2KfZhNmKIChUVEMpXCIsXG4gICAgcHJvZml0TWFyZ2luTGFiZWw6IFwi2YfYp9mF2LQg2KfZhNix2KjYrSAoVFRDKVwiLFxuICAgIGNvc3RDb3ZlcmFnZUxhYmVsOiBcItiq2LrYt9mK2Kkg2KfZhNiq2YPZhNmB2KkgKFRUQylcIixcbiAgICByaXNrUmF0aW9MYWJlbDogXCLZhtiz2KjYqSDYp9mE2YXYrtin2LfYsdipICjYp9mE2YXYs9iq2K3Zgi/Yp9mE2LHYqNitIFRUQylcIixcbiAgICBub3RBcHBsaWNhYmxlOiBcIti62YrYsSDZhdiq2KfYrVwiLFxuICAgIHF1YWxpdGF0aXZlQW5hbHlzaXNUaXRsZTogXCLYp9mE2KrYrdmE2YrZhCDYp9mE2YbZiNi52YpcIixcbiAgICBzYWxlc0JlbG93Q29zdFRpdGxlOiBcItiq2YbYqNmK2YfYp9iqOiDZhdmG2KrYrNin2Kog2KjZiti52Kog2KjYo9mC2YQg2YXZhiDYqtmD2YTZgdiq2YfYp1wiLFxuICAgIHdhcm5pbmdMYWJlbDogXCLYqtit2LDZitixIVwiLFxuICAgIHNhbGVzQmVsb3dDb3N0V2FybmluZzogXCLYqtmFINin2YTYudir2YjYsSDYudmE2Ykg2KfZhNmF2YbYqtis2KfYqiDYp9mE2KrYp9mE2YrYqSDZhdio2KfYudipINio2LPYudixINij2YLZhCDZhdmGINiq2YPZhNmB2KrZh9inINmB2Yog2KfZhNmF2KjZiti52KfYqiDYp9mE2YXYsNmD2YjYsdipOlwiLFxuICAgIHNhbGVzUmVjZWlwdExhYmVsOiBcItmI2LXZhCDYp9mE2KjZiti5XCIsXG4gICAgY2xpZW50TGFiZWw6IFwi2KfZhNi52YXZitmEXCIsXG4gICAgc2VsbGluZ1ByaWNlTGFiZWw6IFwi2LPYudixINio2YrYuSDYp9mE2YjYrdiv2KkgKFRUQylcIixcbiAgICBjb3N0UHJpY2VMYWJlbDogXCLYqtmD2YTZgdipINin2YTZiNit2K/YqSAoVFRDKVwiLFxuICAgIG5vU2FsZXNCZWxvd0Nvc3RGb3VuZDogXCLZhNmFINmK2KrZhSDYp9mE2LnYq9mI2LEg2LnZhNmJINij2Yog2YXZhtiq2KzYp9iqINio2YrYudiqINio2KPZgtmEINmF2YYg2KrZg9mE2YHYqtmH2Kcg2YHZiiDZh9iw2Ycg2KfZhNmB2KrYsdipLlwiLFxuICAgIHRvcFByb2R1Y3RzVGl0bGU6IFwi2KfZhNmF2YbYqtis2KfYqiDYp9mE2KPZg9ir2LEg2LHYqNit2YrYqVwiLFxuICAgIG5vRGF0YVByb2R1Y3RzOiBcItmE2Kcg2KrZiNis2K8g2YXZhtiq2KzYp9iqINmF2LHYqNit2KkgKFRUQykg2YHZiiDZh9iw2Ycg2KfZhNmB2KrYsdipLlwiLFxuICAgIGl0ZW1zUGVyUGFnZVRleHQ6IFwi2LnZhtin2LXYsSDZhNmD2YQg2LXZgdit2Kk6XCIsXG4gICAgdG90YWxJdGVtczogXCLYp9mE2KXYrNmF2KfZhNmKXCIsXG4gICAgbm9EYXRhU2FsZXNCZWxvd0Nvc3Q6IFwi2YTZhSDZitiq2YUg2KfZhNi52KvZiNixINi52YTZiSDZhdio2YrYudin2Kog2KjZhdmG2KrYrNin2Kog2K7Yp9iz2LHYqVwiLFxuICAgIHByb2R1Y3RzU29sZEF0TG9zczogXCLYp9mE2YXZhtiq2KzYp9iqINin2YTZhdio2KfYudipINio2K7Ys9in2LHYqSDZgdmKINmH2LDYpyDYp9mE2YjYtdmEXCIsXG4gICAgLy8g2LHYs9in2KbZhCDYqtit2YTZitmE2YrYqVxuICAgIHByb2ZpdE1zZ1Bvc2l0aXZlOiBcItil2YrYrNin2KjZiiAoVFRDKTog2KfZhNmF2KjZiti52KfYqiDYqtit2YLZgiDYsdio2K3Zi9inINil2KzZhdin2YTZitmL2Kcg2KjZh9in2YXYtCB7dmFsdWV9LlwiLFxuICAgIHByb2ZpdE1zZ05ldXRyYWw6IFwi2YXYqti52KfYr9mEIChUVEMpOiDZhtmC2LfYqSDYp9mE2KrYudin2K/ZhCDZhdit2YLZgtipICjZh9in2YXYtCB7dmFsdWV9KS5cIixcbiAgICBwcm9maXRNc2dOZWdhdGl2ZTogXCLYs9mE2KjZiiAoVFRDKTog2KrZiNis2K8g2K7Ys9in2LHYqSDYpdis2YXYp9mE2YrYqSAo2YfYp9mF2LQge3ZhbHVlfSkuXCIsXG4gICAgcmlza01zZ0xvdzogXCLZhdiu2KfYt9ixINmF2YbYrtmB2LbYqTog2YTYpyDYqtmI2KzYryDZhdio2KfZhNi6INmF2LPYqtit2YLYqS5cIixcbiAgICByaXNrTXNnSGlnaExvc3M6IFwi2K7Yt9ixINmF2LHYqtmB2Lkg2KzYr9in2Ys6INin2YTYtdmB2YLYqSDYutmK2LEg2YXYsdio2K3YqSAoVFRDKSDZiNmH2YbYp9mDINmF2KjZhNi6INmF2LPYqtit2YIgKHt2YWx1ZX0pLlwiLFxuICAgIHJpc2tNc2dIaWdoUmF0aW86IFwi2K7Yt9ixINmF2LHYqtmB2Lk6INin2YTZhdio2YTYuiDYp9mE2YXYs9iq2K3ZgiDZitmF2KvZhCB7dmFsdWV9INmF2YYg2KfZhNix2KjYrSAoVFRDKS5cIixcbiAgICByaXNrTXNnTWVkaXVtUmF0aW86IFwi2K7Yt9ixINmF2KrZiNiz2Lc6INin2YTZhdio2YTYuiDYp9mE2YXYs9iq2K3ZgiDZitmF2KvZhCB7dmFsdWV9INmF2YYg2KfZhNix2KjYrSAoVFRDKS5cIixcbiAgICByaXNrTXNnT2tSYXRpbzogXCLYrti32LEg2YXZgtio2YjZhDog2KfZhNmF2KjZhNi6INin2YTZhdiz2KrYrdmCINmK2YXYq9mEINmB2YLYtyB7dmFsdWV9INmF2YYg2KfZhNix2KjYrSAoVFRDKS5cIixcbiAgICByaXNrTXNnRXJyb3I6IFwi2K7Yt9ixINmF2LHYqtmB2Lk6INin2YTZhdio2YTYuiDYp9mE2YXYs9iq2K3ZgiB7dmFsdWV9INmE2Kcg2YrZhdmD2YYg2YXZgtin2LHZhtiq2Ycg2KjYp9mE2LHYqNitLlwiLFxuICAgIGNvdmVyYWdlTXNnRXhjZWxsZW50OiBcItiq2LrYt9mK2Kkg2YXZhdiq2KfYstipOiDYp9mE2YXYqNin2YTYuiDYp9mE2YXYs9iv2K/YqSDYqti62LfZiiB7dmFsdWV9INmF2YYg2KrZg9mE2YHYqSDYp9mE2KjYttin2LnYqSAoVFRDKS5cIixcbiAgICBjb3ZlcmFnZU1zZ0luY29tcGxldGU6IFwi2KrYuti32YrYqSDYutmK2LEg2YXZg9iq2YXZhNipOiDYp9mE2YXYqNin2YTYuiDYp9mE2YXYs9iv2K/YqSDYqti62LfZiiDZgdmC2Lcge3ZhbHVlfSDZhdmGINiq2YPZhNmB2Kkg2KfZhNio2LbYp9i52KkgKFRUQykuXCIsXG4gICAgY292ZXJhZ2VNc2dOb0Nvc3Q6IFwi2YTYpyDYqtmI2KzYryDYqtmD2YTZgdipINio2LbYp9i52Kkg2YXYs9is2YTYqSDZiNmE2YUg2YrYqtmFINin2LPYqtmE2KfZhSDYr9mB2LnYp9iqICjYqti62LfZitipIDAlKS5cIixcbiAgICBjb3ZlcmFnZU1zZ0Vycm9yOiBcItmE2Kcg2YrZhdmD2YYg2KrYrdiv2YrYryDZhtiz2KjYqSDYqti62LfZitipINin2YTYqtmD2YTZgdipLlwiLFxuICAgIC8vINix2KTZiNizINin2YTYrNiv2KfZiNmEXG4gICAgc2FsZXNCZWxvd0Nvc3RIZWFkZXJzOiBbXG4gICAgICB7IHRleHQ6ICdJRCcsIHZhbHVlOiAnaWQnLCBzb3J0YWJsZTogdHJ1ZSwgYWxpZ246ICdzdGFydCcgfSxcbiAgICAgIHsgdGV4dDogJ9in2YTZhdix2KzYuScsIHZhbHVlOiAncmVmJywgc29ydGFibGU6IHRydWUgfSxcbiAgICAgIHsgdGV4dDogJ9in2YTYudmF2YrZhCcsIHZhbHVlOiAnY2xpZW50Tm9tJywgc29ydGFibGU6IHRydWUgfSxcbiAgICAgIHsgdGV4dDogJ9i52K/YryDYp9mE2YXZhtiq2KzYp9iqJywgdmFsdWU6ICdwcm9kdWN0Q291bnQnLCBzb3J0YWJsZTogdHJ1ZSwgYWxpZ246ICdjZW50ZXInIH0sXG4gICAgICB7IHRleHQ6ICcnLCB2YWx1ZTogJ2RhdGEtdGFibGUtZXhwYW5kJyB9LFxuICAgIF0sXG4gICAgdG9wUHJvZHVjdHNIZWFkZXJzOiBbIC8vINin2YTZhdmB2KrYp9itINin2YTYtdit2YrYrVxuICAgICAgeyB0ZXh0OiAnSUQnLCB2YWx1ZTogJ3Byb2R1Y3RJZCcsIHNvcnRhYmxlOiB0cnVlIH0sXG4gICAgICB7IHRleHQ6ICfYp9mE2KfYs9mFJywgdmFsdWU6ICdkZXNpZ25hdGlvbicsIHNvcnRhYmxlOiB0cnVlIH0sXG4gICAgICB7IHRleHQ6ICfYp9mE2YPZhdmK2Kkg2KfZhNmF2KjYp9i52KknLCB2YWx1ZTogJ3RvdGFsUXVhbnRpdHlTb2xkJywgYWxpZ246ICdlbmQnLCBzb3J0YWJsZTogdHJ1ZSB9LFxuICAgICAgeyB0ZXh0OiAn2KXYrNmF2KfZhNmKINin2YTZhdio2YrYudin2KogKFRUQyknLCB2YWx1ZTogJ3RvdGFsU2FsZXNUdGMnLCBhbGlnbjogJ2VuZCcsIHNvcnRhYmxlOiB0cnVlIH0sXG4gICAgICB7IHRleHQ6ICfYpdis2YXYp9mE2Yog2KfZhNiq2YPZhNmB2KkgKFRUQyknLCB2YWx1ZTogJ3RvdGFsQ29zdFR0YycsIGFsaWduOiAnZW5kJywgc29ydGFibGU6IHRydWUgfSxcbiAgICAgIHsgdGV4dDogJ9in2YTYsdio2K0g2KfZhNil2KzZhdin2YTZiiAoVFRDKScsIHZhbHVlOiAncHJvZml0VHRjJywgYWxpZ246ICdlbmQnLCBzb3J0YWJsZTogdHJ1ZSB9LFxuICAgIF0sXG4gIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbWl4aW5zOiBbd2lkZ2V0c01peGluXSxcbiAgZGF0YSgpIHtcbiAgICBjb25zdCB0b2RheSA9IG5ldyBEYXRlKCk7XG4gICAgY29uc3QgZmlyc3REYXkgPSBuZXcgRGF0ZSh0b2RheS5nZXRGdWxsWWVhcigpLCB0b2RheS5nZXRNb250aCgpLCAxKTtcbiAgICBjb25zdCBsYXN0RGF5ID0gbmV3IERhdGUodG9kYXkuZ2V0RnVsbFllYXIoKSwgdG9kYXkuZ2V0TW9udGgoKSArIDEsIDApO1xuICAgIHJldHVybiB7XG4gICAgICBzdGFydERhdGU6IGZpcnN0RGF5LnRvSVNPU3RyaW5nKCkuc3Vic3RyKDAsIDEwKSxcbiAgICAgIGVuZERhdGU6IGxhc3REYXkudG9JU09TdHJpbmcoKS5zdWJzdHIoMCwgMTApLFxuICAgICAgbWVudVN0YXJ0RGF0ZTogZmFsc2UsXG4gICAgICBtZW51RW5kRGF0ZTogZmFsc2UsXG4gICAgICBsb2FkaW5nOiBmYWxzZSxcbiAgICAgIGVycm9yOiBudWxsLFxuICAgICAgcmVwb3J0RGF0YTogbnVsbCxcbiAgICAgIGN1cnJlbnRMYW5nOiAnZnInLFxuICAgICAgLy8g2YTYpyDYqti22LkgdHJhbnNsYXRpb25zINmH2YbYp1xuICAgIH07XG4gIH0sXG4gIGNvbXB1dGVkOiB7XG4gICAgLy8g2YLZhSDYqNin2YTZiNi12YjZhCDYpdmE2YkgdHJhbnNsYXRpb25zINmF2KjYp9i02LHYqVxuICAgIFQoKSB7XG4gICAgICByZXR1cm4gdHJhbnNsYXRpb25zW3RoaXMuY3VycmVudExhbmddIHx8IHRyYW5zbGF0aW9ucy5mcjtcbiAgICB9LFxuICAgIGlzUnRsKCkgeyByZXR1cm4gdGhpcy5jdXJyZW50TGFuZyA9PT0gJ2FyJzsgfSxcbiAgICBmb3JtYXR0ZWRTdGFydERhdGUoKSB7IHJldHVybiB0aGlzLmZvcm1hdERhdGVGb3JEaXNwbGF5KHRoaXMuc3RhcnREYXRlKTsgfSxcbiAgICBmb3JtYXR0ZWRFbmREYXRlKCkgeyByZXR1cm4gdGhpcy5mb3JtYXREYXRlRm9yRGlzcGxheSh0aGlzLmVuZERhdGUpOyB9LFxuICAgIGFuYWx5c2lzTnVtYmVycygpIHtcbiAgICAgIGlmICghdGhpcy5yZXBvcnREYXRhPy5hbmFseXNpcykgcmV0dXJuIG51bGw7XG4gICAgICBjb25zdCBhbmFseXNpcyA9IHRoaXMucmVwb3J0RGF0YS5hbmFseXNpcztcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHRvdGFsVmVudGVzVFRDOiBwYXJzZUZsb2F0KGFuYWx5c2lzLnRvdGFsVmVudGVzVFRDKSB8fCAwLFxuICAgICAgICB0b3RhbERlamFyZWdsZTogcGFyc2VGbG9hdChhbmFseXNpcy50b3RhbERlamFyZWdsZSkgfHwgMCxcbiAgICAgICAgbW9udGFudEVuY291cnM6IHBhcnNlRmxvYXQoYW5hbHlzaXMubW9udGFudGVuY291cnMpIHx8IDAsXG4gICAgICAgIHRvdGFsQWNoYXRUVEM6IHBhcnNlRmxvYXQoYW5hbHlzaXMudG90YWxBY2hhdFRUQykgfHwgMCxcbiAgICAgICAgbWFyZ2VCZW5lZmljaWFpcmVUVEM6IHBhcnNlRmxvYXQoYW5hbHlzaXMubWFyZ2VCZW5lZmljaWFpcmVUVEMpIHx8IDAsXG4gICAgICAgIG1hcmdlQmVuZWZpY2lhaXJlUG91cmNlbnRhZ2U6IGFuYWx5c2lzLm1hcmdlQmVuZWZpY2lhaXJlUG91cmNlbnRhZ2UsXG4gICAgICAgIHJpc3F1ZVBvdXJjZW50YWdlOiBhbmFseXNpcy5yaXNxdWVQb3VyY2VudGFnZSxcbiAgICAgICAgY291dENvdXZlcnR1cmVQb3VyY2VudGFnZTogYW5hbHlzaXMuY291dENvdXZlcnR1cmVQb3VyY2VudGFnZSxcbiAgICAgIH07XG4gICAgfSxcbiAgICBwcm9maXRhYmlsaXR5VHRjTWVzc2FnZSgpIHtcbiAgICAgIGlmICghdGhpcy5hbmFseXNpc051bWJlcnMpIHJldHVybiB0aGlzLlQucHJvZml0TXNnRXJyb3IgfHwgJ9mE2Kcg2YrZhdmD2YYg2KrYrdiv2YrYryDYp9mE2LHYqNit2YrYqS4nO1xuICAgICAgY29uc3QgbWFyZ2luUGVyY2VudCA9IHRoaXMuYW5hbHlzaXNOdW1iZXJzLm1hcmdlQmVuZWZpY2lhaXJlUG91cmNlbnRhZ2U7XG4gICAgICBjb25zdCBmb3JtYXR0ZWRNYXJnaW4gPSB0aGlzLmZvcm1hdFBlcmNlbnQobWFyZ2luUGVyY2VudCk7XG4gICAgICBpZiAodGhpcy5hbmFseXNpc051bWJlcnMubWFyZ2VCZW5lZmljaWFpcmVUVEMgPiAwKSB7IHJldHVybiAodGhpcy5ULnByb2ZpdE1zZ1Bvc2l0aXZlIHx8ICcnKS5yZXBsYWNlKCd7dmFsdWV9JywgZm9ybWF0dGVkTWFyZ2luKTsgfVxuICAgICAgZWxzZSBpZiAodGhpcy5hbmFseXNpc051bWJlcnMubWFyZ2VCZW5lZmljaWFpcmVUVEMgPT09IDApIHsgcmV0dXJuICh0aGlzLlQucHJvZml0TXNnTmV1dHJhbCB8fCAnJykucmVwbGFjZSgne3ZhbHVlfScsIGZvcm1hdHRlZE1hcmdpbik7IH1cbiAgICAgIGVsc2UgeyByZXR1cm4gKHRoaXMuVC5wcm9maXRNc2dOZWdhdGl2ZSB8fCAnJykucmVwbGFjZSgne3ZhbHVlfScsIGZvcm1hdHRlZE1hcmdpbik7IH1cbiAgICB9LFxuICAgIHJpc2tNZXNzYWdlKCkge1xuICAgICAgaWYgKCF0aGlzLmFuYWx5c2lzTnVtYmVycykgcmV0dXJuIHRoaXMuVC5yaXNrTXNnRXJyb3IgfHwgJ9mE2Kcg2YrZhdmD2YYg2KrYrdiv2YrYryDYp9mE2YXYrtin2LfYsS4nO1xuICAgICAgY29uc3QgeyBtb250YW50RW5jb3VycywgbWFyZ2VCZW5lZmljaWFpcmVUVEMsIHJpc3F1ZVBvdXJjZW50YWdlIH0gPSB0aGlzLmFuYWx5c2lzTnVtYmVycztcbiAgICAgIGNvbnN0IGZvcm1hdHRlZEFtb3VudCA9IHRoaXMuZm9ybWF0Q3VycmVuY3kobW9udGFudEVuY291cnMpO1xuICAgICAgaWYgKG1vbnRhbnRFbmNvdXJzIDw9IDApIHsgcmV0dXJuIHRoaXMuVC5yaXNrTXNnTG93OyB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgaWYgKG1hcmdlQmVuZWZpY2lhaXJlVFRDIDw9IDApIHsgcmV0dXJuICh0aGlzLlQucmlza01zZ0hpZ2hMb3NzIHx8ICcnKS5yZXBsYWNlKCd7dmFsdWV9JywgZm9ybWF0dGVkQW1vdW50KTsgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICBjb25zdCByaXNrUGVyY2VudEZvcm1hdHRlZCA9IHRoaXMuZm9ybWF0UGVyY2VudChyaXNxdWVQb3VyY2VudGFnZSk7XG4gICAgICAgICAgaWYgKHJpc3F1ZVBvdXJjZW50YWdlID09PSBudWxsKSB7IHJldHVybiAodGhpcy5ULnJpc2tNc2dFcnJvciB8fCAnJykucmVwbGFjZSgne3ZhbHVlfScsIGZvcm1hdHRlZEFtb3VudCk7IH1cbiAgICAgICAgICBlbHNlIGlmIChyaXNxdWVQb3VyY2VudGFnZSA+PSAxMDApIHsgcmV0dXJuICh0aGlzLlQucmlza01zZ0hpZ2hSYXRpbyB8fCAnJykucmVwbGFjZSgne3ZhbHVlfScsIHJpc2tQZXJjZW50Rm9ybWF0dGVkKTsgfVxuICAgICAgICAgIGVsc2UgaWYgKHJpc3F1ZVBvdXJjZW50YWdlID4gNTApIHsgcmV0dXJuICh0aGlzLlQucmlza01zZ01lZGl1bVJhdGlvIHx8ICcnKS5yZXBsYWNlKCd7dmFsdWV9Jywgcmlza1BlcmNlbnRGb3JtYXR0ZWQpOyB9XG4gICAgICAgICAgZWxzZSB7IHJldHVybiAodGhpcy5ULnJpc2tNc2dPa1JhdGlvIHx8ICcnKS5yZXBsYWNlKCd7dmFsdWV9Jywgcmlza1BlcmNlbnRGb3JtYXR0ZWQpOyB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIGNvdmVyYWdlTWVzc2FnZSgpIHtcbiAgICAgIGlmICghdGhpcy5hbmFseXNpc051bWJlcnMpIHJldHVybiB0aGlzLlQuY292ZXJhZ2VNc2dFcnJvciB8fCAn2YTYpyDZitmF2YPZhiDYqtit2K/ZitivINin2YTYqti62LfZitipLic7XG4gICAgICBjb25zdCB7IGNvdXRDb3V2ZXJ0dXJlUG91cmNlbnRhZ2UsIHRvdGFsQWNoYXRUVEMgfSA9IHRoaXMuYW5hbHlzaXNOdW1iZXJzO1xuICAgICAgY29uc3QgY292ZXJhZ2VQZXJjZW50Rm9ybWF0dGVkID0gdGhpcy5mb3JtYXRQZXJjZW50KGNvdXRDb3V2ZXJ0dXJlUG91cmNlbnRhZ2UpO1xuICAgICAgaWYgKGNvdXRDb3V2ZXJ0dXJlUG91cmNlbnRhZ2UgPT09IG51bGwpIHsgcmV0dXJuIHRoaXMuVC5jb3ZlcmFnZU1zZ0Vycm9yOyB9XG4gICAgICBlbHNlIGlmIChjb3V0Q291dmVydHVyZVBvdXJjZW50YWdlID49IDEwMCkgeyByZXR1cm4gKHRoaXMuVC5jb3ZlcmFnZU1zZ0V4Y2VsbGVudCB8fCAnJykucmVwbGFjZSgne3ZhbHVlfScsIGNvdmVyYWdlUGVyY2VudEZvcm1hdHRlZCk7IH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBpZiAodG90YWxBY2hhdFRUQyA+IDApIHsgcmV0dXJuICh0aGlzLlQuY292ZXJhZ2VNc2dJbmNvbXBsZXRlIHx8ICcnKS5yZXBsYWNlKCd7dmFsdWV9JywgY292ZXJhZ2VQZXJjZW50Rm9ybWF0dGVkKTsgfVxuICAgICAgICBlbHNlIHsgcmV0dXJuIHRoaXMuVC5jb3ZlcmFnZU1zZ05vQ29zdDsgfVxuICAgICAgfVxuICAgIH0sXG4gICAgLy8gLS0tINin2YTYqti12K3ZititINmH2YbYpyAtLS1cbiAgICBzYWxlc0JlbG93Q29zdEFycmF5KCkge1xuICAgICAgaWYgKCF0aGlzLnJlcG9ydERhdGE/LnNhbGVzQmVsb3dDb3N0KSByZXR1cm4gW107XG4gICAgICByZXR1cm4gT2JqZWN0LmVudHJpZXModGhpcy5yZXBvcnREYXRhLnNhbGVzQmVsb3dDb3N0KS5tYXAoKFtpZCwgZGF0YV0pID0+ICh7XG4gICAgICAgIGlkOiBpZCxcbiAgICAgICAgcHJvZHVjdENvdW50OiBkYXRhLnByb2R1Y3RzPy5sZW5ndGggfHwgMCwgLy8gPC0tINil2LbYp9mB2KkgcHJvZHVjdENvdW50XG4gICAgICAgIC4uLmRhdGFcbiAgICAgIH0pKTtcbiAgICB9LFxuICAgIC8vIC0tLSDYp9mE2KrYtdit2YrYrSDZh9mG2KcgLS0tXG4gICAgdHJhbnNsYXRlZFNhbGVzQmVsb3dDb3N0SGVhZGVycygpIHtcbiAgICAgIHJldHVybiB0aGlzLlQuc2FsZXNCZWxvd0Nvc3RIZWFkZXJzIHx8IFtdOyAvLyA8LS0g2KXYttin2YHYqSBjb21wdXRlZCBwcm9wZXJ0eVxuICAgIH0sXG4gICAgLy8gLS0tINin2YTYqti12K3ZititINmH2YbYpyAtLS1cbiAgICB0cmFuc2xhdGVkVG9wUHJvZHVjdHNUdGNIZWFkZXJzKCkge1xuICAgICAgcmV0dXJuIHRoaXMuVC50b3BQcm9kdWN0c0hlYWRlcnMgfHwgW107IC8vIDwtLSDYp9iz2KrYrtiv2KfZhSDYp9mE2YXZgdiq2KfYrSDYp9mE2LXYrdmK2K1cbiAgICB9XG4gIH0sXG4gIG1ldGhvZHM6IHtcbiAgICBmb3JtYXREYXRlRm9yRGlzcGxheShkYXRlU3RyaW5nKSB7IGlmICghZGF0ZVN0cmluZykgcmV0dXJuIG51bGw7IGNvbnN0IFt5ZWFyLCBtb250aCwgZGF5XSA9IGRhdGVTdHJpbmcuc3BsaXQoJy0nKTsgcmV0dXJuIGAke2RheX0vJHttb250aH0vJHt5ZWFyfWA7IH0sXG4gICAgZm9ybWF0RGF0ZUZvckFwaShkYXRlU3RyaW5nKSB7IGlmICghZGF0ZVN0cmluZykgcmV0dXJuIG51bGw7IHJldHVybiBkYXRlU3RyaW5nOyB9LFxuICAgIGZvcm1hdEN1cnJlbmN5KHZhbHVlKSB7IGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkKSByZXR1cm4gJ04vQSc7IGNvbnN0IG51bWJlciA9IHBhcnNlRmxvYXQodmFsdWUpOyBpZiAoaXNOYU4obnVtYmVyKSkgcmV0dXJuICdOL0EnOyByZXR1cm4gbnVtYmVyLnRvRml4ZWQoMikucmVwbGFjZSgvXFxkKD89KFxcZHszfSkrXFwuKS9nLCAnJCYsJyk7IH0sXG4gICAgZm9ybWF0UGVyY2VudCh2YWx1ZSkgeyBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCkgcmV0dXJuICdOL0EnOyBjb25zdCBudW1iZXIgPSBwYXJzZUZsb2F0KHZhbHVlKTsgaWYgKGlzTmFOKG51bWJlcikpIHJldHVybiAnTi9BJzsgcmV0dXJuIG51bWJlci50b0ZpeGVkKDIpICsgJyUnOyB9LFxuICAgIGZldGNoRGF0YSgpIHtcbiAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7IHRoaXMuZXJyb3IgPSBudWxsOyB0aGlzLnJlcG9ydERhdGEgPSBudWxsO1xuICAgICAgLy8g2YTYpyDYrdin2KzYqSDZhNil2LnYp9iv2Kkg2KrYudmK2YrZhiBjdXJyZW50UGFnZVNhbGVzQmVsb3dDb3N0XG4gICAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICAgIHN0YXJ0RGF0ZTogdGhpcy5mb3JtYXREYXRlRm9yQXBpKHRoaXMuc3RhcnREYXRlKSxcbiAgICAgICAgZW5kRGF0ZTogdGhpcy5mb3JtYXREYXRlRm9yQXBpKHRoaXMuZW5kRGF0ZSksXG4gICAgICAgIG1ldGhvZDogdGhpcy4kc3RvcmUuZ2V0dGVyc1sndGhlbWUvZGFzaGJvYXJkX21ldGhvZCddXG4gICAgICB9O1xuICAgICAgYXhpb3MuZ2V0KCcvYXBpZGFzaGJvYXJkbWluYWRtaW4nLCB7IHBhcmFtcyB9KVxuICAgICAgICAudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgICAgaWYgKHJlc3BvbnNlLmRhdGEgJiYgKHJlc3BvbnNlLmRhdGEuYW5hbHlzaXMgfHwgcmVzcG9uc2UuZGF0YS5zYWxlc0JlbG93Q29zdCB8fCByZXNwb25zZS5kYXRhLnRvcFByb2R1Y3RzVHRjKSkge1xuICAgICAgICAgICAgdGhpcy5yZXBvcnREYXRhID0ge1xuICAgICAgICAgICAgICBhbmFseXNpczogcmVzcG9uc2UuZGF0YS5hbmFseXNpcyB8fCBudWxsLFxuICAgICAgICAgICAgICBzYWxlc0JlbG93Q29zdDogcmVzcG9uc2UuZGF0YS5zYWxlc0JlbG93Q29zdCB8fCB7fSxcbiAgICAgICAgICAgICAgdG9wUHJvZHVjdHNUdGM6IHJlc3BvbnNlLmRhdGEudG9wUHJvZHVjdHNUdGMgfHwgW11cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSBlbHNlIHsgdGhpcy5yZXBvcnREYXRhID0gbnVsbDsgfVxuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goZXJyb3IgPT4geyBjb25zb2xlLmVycm9yKFwiRXJyb3I6XCIsIGVycm9yKTsgdGhpcy5lcnJvciA9IGVycm9yLnJlc3BvbnNlPy5kYXRhPy5lcnJvciB8fCBlcnJvci5tZXNzYWdlIHx8ICdFcnJvcic7IHRoaXMucmVwb3J0RGF0YSA9IG51bGw7IH0pXG4gICAgICAgIC5maW5hbGx5KCgpID0+IHsgdGhpcy5sb2FkaW5nID0gZmFsc2U7IH0pO1xuICAgIH0sXG4gICAgZ2V0QWxlcnRUeXBlKHR5cGUpIHtcbiAgICAgIGlmICghdGhpcy5hbmFseXNpc051bWJlcnMpIHJldHVybiAnaW5mbyc7XG4gICAgICBjb25zdCB7IG1hcmdlQmVuZWZpY2lhaXJlVFRDLCBtb250YW50RW5jb3VycywgY291dENvdXZlcnR1cmVQb3VyY2VudGFnZSwgcmlzcXVlUG91cmNlbnRhZ2UgfSA9IHRoaXMuYW5hbHlzaXNOdW1iZXJzO1xuICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgIGNhc2UgJ3Byb2ZpdGFiaWxpdHknOiBpZiAobWFyZ2VCZW5lZmljaWFpcmVUVEMgPiAwKSByZXR1cm4gJ3N1Y2Nlc3MnOyBpZiAobWFyZ2VCZW5lZmljaWFpcmVUVEMgPT09IDApIHJldHVybiAnd2FybmluZyc7IHJldHVybiAnZXJyb3InO1xuICAgICAgICBjYXNlICdyaXNrJzogaWYgKG1vbnRhbnRFbmNvdXJzIDw9IDApIHJldHVybiAnc3VjY2Vzcyc7IGlmIChtYXJnZUJlbmVmaWNpYWlyZVRUQyA8PSAwKSByZXR1cm4gJ2Vycm9yJzsgaWYgKHJpc3F1ZVBvdXJjZW50YWdlID09PSBudWxsKSByZXR1cm4gJ2Vycm9yJzsgaWYgKHJpc3F1ZVBvdXJjZW50YWdlID49IDEwMCkgcmV0dXJuICdlcnJvcic7IGlmIChyaXNxdWVQb3VyY2VudGFnZSA+IDUwKSByZXR1cm4gJ3dhcm5pbmcnOyByZXR1cm4gJ3N1Y2Nlc3MnO1xuICAgICAgICBjYXNlICdjb3ZlcmFnZSc6IGlmIChjb3V0Q291dmVydHVyZVBvdXJjZW50YWdlID09PSBudWxsKSByZXR1cm4gJ2luZm8nOyBpZiAoY291dENvdXZlcnR1cmVQb3VyY2VudGFnZSA+PSAxMDApIHJldHVybiAnc3VjY2Vzcyc7IHJldHVybiAnd2FybmluZyc7XG4gICAgICAgIGRlZmF1bHQ6IHJldHVybiAnaW5mbyc7XG4gICAgICB9XG4gICAgfSxcbiAgICBnZXRQcm9maXRNYXJnaW5Db2xvcihwZXJjZW50KSB7IGlmIChwZXJjZW50ID09PSBudWxsIHx8IHBlcmNlbnQgPT09IHVuZGVmaW5lZCkgcmV0dXJuICdncmV5JzsgaWYgKHBlcmNlbnQgPiA1KSByZXR1cm4gJ3N1Y2Nlc3MnOyBpZiAocGVyY2VudCA+IDApIHJldHVybiAnd2FybmluZyc7IHJldHVybiAnZXJyb3InOyB9LFxuICAgIGdldENvdmVyYWdlQ29sb3IocGVyY2VudCkgeyBpZiAocGVyY2VudCA9PT0gbnVsbCB8fCBwZXJjZW50ID09PSB1bmRlZmluZWQpIHJldHVybiAnZ3JleSc7IGlmIChwZXJjZW50ID49IDEwMCkgcmV0dXJuICdzdWNjZXNzJzsgaWYgKHBlcmNlbnQgPj0gNTApIHJldHVybiAnd2FybmluZyc7IHJldHVybiAnZXJyb3InOyB9LFxuICAgIGdldFJpc2tDb2xvcihwZXJjZW50KSB7IGlmIChwZXJjZW50ID09PSBudWxsIHx8IHBlcmNlbnQgPT09IHVuZGVmaW5lZCkgcmV0dXJuICdzdWNjZXNzJzsgaWYgKHBlcmNlbnQgPCA1MCkgcmV0dXJuICdzdWNjZXNzJzsgaWYgKHBlcmNlbnQgPCAxMDApIHJldHVybiAnd2FybmluZyc7IHJldHVybiAnZXJyb3InOyB9LFxuICAgIHRvZ2dsZUxhbmd1YWdlKCkge1xuICAgICAgdGhpcy5jdXJyZW50TGFuZyA9IHRoaXMuY3VycmVudExhbmcgPT09ICdmcicgPyAnYXInIDogJ2ZyJztcbiAgICAgIC8vINmK2YXZg9mG2YMg2KrYrdiv2YrYqyBWdWV0aWZ5IGxvY2FsZSDZh9mG2Kcg2KXYsNinINij2LHYr9iqXG4gICAgICAvLyB0aGlzLiR2dWV0aWZ5LmxhbmcuY3VycmVudCA9IHRoaXMuY3VycmVudExhbmc7XG4gICAgfVxuICB9LFxuICBtb3VudGVkKCkge1xuICAgIHRoaXMuZmV0Y2hEYXRhKCk7XG4gIH1cbn07XG48L3NjcmlwdD5cblxuPHN0eWxlIHNjb3BlZD5cbi52LWRhdGEtdGFibGUge1xuICBmb250LXNpemU6IDAuOWVtO1xufVxuXG5saSBzbWFsbCB7XG4gIGNvbG9yOiAjNTU1O1xufVxuXG5bZGlyPVwicnRsXCJdIC52LWxpc3QtaXRlbV9fc3VidGl0bGUgdWwge1xuICBwYWRkaW5nLWxlZnQ6IDAgIWltcG9ydGFudDtcbiAgcGFkZGluZy1yaWdodDogMjBweCAhaW1wb3J0YW50O1xufVxuXG4udi1kYXRhLXRhYmxlPi52LWRhdGEtdGFibGVfX3dyYXBwZXI+dGFibGU+dGJvZHk+dHIudi1kYXRhLXRhYmxlX19leHBhbmRlZF9fY29udGVudCB7XG4gIGJveC1zaGFkb3c6IG5vbmU7XG59XG48L3N0eWxlPiIsIjx0ZW1wbGF0ZT5cbiAgPGNhcmQtY2FyZFxuICAgIDpjbG9zZT1cImNsb3NlXCJcbiAgICBAY2xvc2U9XCJjbG9zZWV2ZW50XCJcbiAgICBpY29uPVwibWRpLWNhbGVuZGFyLWNoZWNrLW91dGxpbmVcIlxuICAgIGNvbG9yPVwib3JhbmdlXCJcbiAgICA6dGl0bGU9XCIkdCgnY29tcHRlc2JhbmNhaXJlc2JvbkJvbnN2ZW50ZXMnKVwiXG4gICAgY2xhc3M9XCJweC01IHB5LTNcIlxuICA+XG4gICAgPHYtcm93IGNsYXNzPVwiZmlsbC1oZWlnaHRcIj5cbiAgICAgIDx2LWNvbD5cbiAgICAgICAgPHYtc2hlZXQ+XG4gICAgICAgICAgPHYtdG9vbGJhci10aXRsZSB2LWlmPVwiJHJlZnMuY2FsZW5kYXJcIj5cbiAgICAgICAgICAgIHt7ICRyZWZzLmNhbGVuZGFyLnRpdGxlIH19XG4gICAgICAgICAgPC92LXRvb2xiYXItdGl0bGU+XG4gICAgICAgIDwvdi1zaGVldD5cbiAgICAgICAgPHYtc2hlZXQgaGVpZ2h0PVwiODBcIj5cbiAgICAgICAgICA8di10b29sYmFyIGZsYXQ+XG4gICAgICAgICAgICA8di1idG5cbiAgICAgICAgICAgICAgOmxvYWRpbmc9XCJsb2FkaW5nXCJcbiAgICAgICAgICAgICAgb3V0bGluZWRcbiAgICAgICAgICAgICAgY2xhc3M9XCJtci00XCJcbiAgICAgICAgICAgICAgY29sb3I9XCJncmV5IGRhcmtlbi0yXCJcbiAgICAgICAgICAgICAgQGNsaWNrPVwic2V0VG9kYXlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyAkdChcImF1am91cmQnaHVpXCIpIH19XG4gICAgICAgICAgICA8L3YtYnRuPlxuICAgICAgICAgICAgPHYtYnRuIGZhYiB0ZXh0IHNtYWxsIGNvbG9yPVwiZ3JleSBkYXJrZW4tMlwiIEBjbGljaz1cInByZXZcIj5cbiAgICAgICAgICAgICAgPHYtaWNvbiBzbWFsbD4gbWRpLWNoZXZyb24tbGVmdCA8L3YtaWNvbj5cbiAgICAgICAgICAgIDwvdi1idG4+XG4gICAgICAgICAgICA8di1idG4gZmFiIHRleHQgc21hbGwgY29sb3I9XCJncmV5IGRhcmtlbi0yXCIgQGNsaWNrPVwibmV4dFwiPlxuICAgICAgICAgICAgICA8di1pY29uIHNtYWxsPiBtZGktY2hldnJvbi1yaWdodCA8L3YtaWNvbj5cbiAgICAgICAgICAgIDwvdi1idG4+XG5cbiAgICAgICAgICAgIDx2LXNwYWNlcj48L3Ytc3BhY2VyPlxuXG4gICAgICAgICAgICA8di1hdXRvY29tcGxldGVcbiAgICAgICAgICAgICAgOmxvYWRpbmc9XCJsb2FkaW5nXCJcbiAgICAgICAgICAgICAgbXVsdGlwbGVcbiAgICAgICAgICAgICAgOmNsZWFyYWJsZT1cInRydWVcIlxuICAgICAgICAgICAgICBsYWJlbD1cImNvbXB0ZXNiYW5jYWlyZXNib25cIlxuICAgICAgICAgICAgICBAY2hhbmdlPVwiY29tcHRlc2JhbmNhaXJlc2JvbkNoYW5nZVwiXG4gICAgICAgICAgICAgIDppdGVtcz1cImNvbXB0ZXNiYW5jYWlyZXNib25JdGVtc1wiXG4gICAgICAgICAgICAgIGl0ZW0tdGV4dD1cInRleHRcIlxuICAgICAgICAgICAgICBpdGVtLXZhbHVlPVwidmFsdWVcIlxuICAgICAgICAgICAgICA6bWVzc2FnZXM9XCInICBUb3RhbF9UVEMgOiAgJyArIFRvdGFsX1RUQyArICcgREgnXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvdi1hdXRvY29tcGxldGU+XG4gICAgICAgICAgICA8di1zcGFjZXI+PC92LXNwYWNlcj5cbiAgICAgICAgICAgIDx2LW1lbnUgYm90dG9tIHJpZ2h0PlxuICAgICAgICAgICAgICA8dGVtcGxhdGUgdi1zbG90OmFjdGl2YXRvcj1cInsgb24sIGF0dHJzIH1cIj5cbiAgICAgICAgICAgICAgICA8di1idG4gb3V0bGluZWQgY29sb3I9XCJncmV5IGRhcmtlbi0yXCIgdi1iaW5kPVwiYXR0cnNcIiB2LW9uPVwib25cIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IHR5cGVUb0xhYmVsW3R5cGVdIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPHYtaWNvbiByaWdodD4gbWRpLW1lbnUtZG93biA8L3YtaWNvbj5cbiAgICAgICAgICAgICAgICA8L3YtYnRuPlxuICAgICAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICAgICAgICA8di1saXN0PlxuICAgICAgICAgICAgICAgIDx2LWxpc3QtaXRlbSBAY2xpY2s9XCJ0eXBlID0gJ2RheSdcIj5cbiAgICAgICAgICAgICAgICAgIDx2LWxpc3QtaXRlbS10aXRsZT4ge3sgJHQoXCJKb3VyXCIpIH19IDwvdi1saXN0LWl0ZW0tdGl0bGU+XG4gICAgICAgICAgICAgICAgPC92LWxpc3QtaXRlbT5cblxuICAgICAgICAgICAgICAgIDx2LWxpc3QtaXRlbSBAY2xpY2s9XCJ0eXBlID0gJ21vbnRoJ1wiPlxuICAgICAgICAgICAgICAgICAgPHYtbGlzdC1pdGVtLXRpdGxlPiB7eyAkdChcIk1vaXNcIikgfX0gPC92LWxpc3QtaXRlbS10aXRsZT5cbiAgICAgICAgICAgICAgICA8L3YtbGlzdC1pdGVtPlxuICAgICAgICAgICAgICA8L3YtbGlzdD5cbiAgICAgICAgICAgIDwvdi1tZW51PlxuICAgICAgICAgIDwvdi10b29sYmFyPlxuICAgICAgICA8L3Ytc2hlZXQ+XG5cbiAgICAgICAgPHYtc2hlZXQgaGVpZ2h0PVwiNjAwXCI+XG4gICAgICAgICAgPHYtY2FsZW5kYXJcbiAgICAgICAgICAgIDpsb2NhbGU9XCIkdCgnbG9jYWxlJylcIlxuICAgICAgICAgICAgcmVmPVwiY2FsZW5kYXJcIlxuICAgICAgICAgICAgdi1tb2RlbD1cImZvY3VzXCJcbiAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICA6ZXZlbnRzPVwiZXZlbnRzXCJcbiAgICAgICAgICAgIDpldmVudC1jb2xvcj1cImdldEV2ZW50Q29sb3JcIlxuICAgICAgICAgICAgOnR5cGU9XCJ0eXBlXCJcbiAgICAgICAgICAgIEBjbGljazpldmVudD1cInNob3dFdmVudFwiXG4gICAgICAgICAgICBAY2xpY2s6bW9yZT1cInZpZXdEYXlcIlxuICAgICAgICAgICAgQGNsaWNrOmRhdGU9XCJ2aWV3RGF5XCJcbiAgICAgICAgICAgIEBjaGFuZ2U9XCJ1cGRhdGVSYW5nZVwiXG4gICAgICAgICAgPjwvdi1jYWxlbmRhcj5cblxuICAgICAgICAgIDx2LW1lbnVcbiAgICAgICAgICAgIHYtbW9kZWw9XCJzZWxlY3RlZE9wZW5cIlxuICAgICAgICAgICAgOmNsb3NlLW9uLWNvbnRlbnQtY2xpY2s9XCJmYWxzZVwiXG4gICAgICAgICAgICA6YWN0aXZhdG9yPVwic2VsZWN0ZWRFbGVtZW50XCJcbiAgICAgICAgICAgIG9mZnNldC14XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHYtY2FyZCBjb2xvcj1cImdyZXkgbGlnaHRlbi00XCIgbWluLXdpZHRoPVwiMzUwcHhcIiBmbGF0PlxuICAgICAgICAgICAgICA8di10b29sYmFyIDpjb2xvcj1cInNlbGVjdGVkRXZlbnQuY29sb3JcIiBkYXJrPlxuICAgICAgICAgICAgICAgIDx2LWJ0blxuICAgICAgICAgICAgICAgICAgdi1pZj1cInNlbGVjdGVkRXZlbnQuX2lkXyA+IDBcIlxuICAgICAgICAgICAgICAgICAgaWNvblxuICAgICAgICAgICAgICAgICAgQGNsaWNrPVwiXG4gICAgICAgICAgICAgICAgICAgIHNob3dJdGVtKHNlbGVjdGVkRXZlbnQuX2lkXywgc2VsZWN0ZWRFdmVudC5jb250cm9sbGVyX3Jvb3RfKVxuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgIHYtc2hvdz1cImlzR3JhbnRlZCgndmlldycsIHNlbGVjdGVkRXZlbnQuY29udHJvbGxlcl9yb290XylcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDx2LWljb24+bWRpLXZpZXctY2Fyb3VzZWw8L3YtaWNvbj5cbiAgICAgICAgICAgICAgICA8L3YtYnRuPlxuXG4gICAgICAgICAgICAgICAgPHYtdG9vbGJhci10aXRsZSB2LWh0bWw9XCJzZWxlY3RlZEV2ZW50Lm5hbWVcIj4gPC92LXRvb2xiYXItdGl0bGU+XG4gICAgICAgICAgICAgICAgPHYtc3BhY2VyPjwvdi1zcGFjZXI+XG5cbiAgICAgICAgICAgICAgICA8di1idG4gaWNvbiBAY2xpY2s9XCJzZWxlY3RlZE9wZW4gPSBmYWxzZVwiPlxuICAgICAgICAgICAgICAgICAgPHYtaWNvbj5tZGktY2xvc2U8L3YtaWNvbj5cbiAgICAgICAgICAgICAgICA8L3YtYnRuPlxuICAgICAgICAgICAgICA8L3YtdG9vbGJhcj5cbiAgICAgICAgICAgICAgPHYtY2FyZC10ZXh0PlxuICAgICAgICAgICAgICAgIDx2LXRvb2xiYXIgZmxhdD5cbiAgICAgICAgICAgICAgICAgIDx2LXRvb2xiYXItdGl0bGU+XG4gICAgICAgICAgICAgICAgICAgIHt7IHNlbGVjdGVkRXZlbnQuY2xpZW50XyB9fVxuICAgICAgICAgICAgICAgICAgPC92LXRvb2xiYXItdGl0bGU+XG5cbiAgICAgICAgICAgICAgICAgIDx2LXNwYWNlcj48L3Ytc3BhY2VyPlxuICAgICAgICAgICAgICAgICAgPHYtY2hpcCBjbGFzcz1cIm1hLTJcIiA6Y29sb3I9XCJzZWxlY3RlZEV2ZW50LmNvbG9yXCIgZGFyaz5cbiAgICAgICAgICAgICAgICAgICAge3sgc2VsZWN0ZWRFdmVudC5jb21wdGVzYmFuY2FpcmVzYm9uXyB9fVxuICAgICAgICAgICAgICAgICAgPC92LWNoaXA+XG4gICAgICAgICAgICAgICAgPC92LXRvb2xiYXI+XG5cbiAgICAgICAgICAgICAgICA8di10b29sYmFyIGZsYXQ+XG5cbiAgICAgICAgICAgICAgICAgIDx2LWNoaXAgY2xhc3M9XCJtYS0yXCIgOmNvbG9yPVwic2VsZWN0ZWRFdmVudC5jb2xvclwiIGRhcms+XG4gICAgICAgICAgICAgICAgICAgIHt7IHNlbGVjdGVkRXZlbnQucmVjZXR0ZXNPUmRlcGVuc2VzXyB9fVxuICAgICAgICAgICAgICAgICAgPC92LWNoaXA+XG5cbiAgICAgICAgICAgICAgICAgIDx2LXNwYWNlcj48L3Ytc3BhY2VyPlxuICAgICAgICAgICAgICAgICAgPHYtY2hpcCBjbGFzcz1cIm1hLTJcIiA6Y29sb3I9XCJzZWxlY3RlZEV2ZW50LmNvbG9yXCIgZGFyaz5cbiAgICAgICAgICAgICAgICAgICAge3sgc2VsZWN0ZWRFdmVudC5jYXRlZ29yaWVzcmVjZXR0ZXNPUmRlcGVuc2VzXyB9fVxuICAgICAgICAgICAgICAgICAgPC92LWNoaXA+XG5cbiAgICAgICAgICAgICAgICAgIDx2LXNwYWNlcj48L3Ytc3BhY2VyPlxuICAgICAgICAgICAgICAgICAgPHYtY2hpcCBjbGFzcz1cIm1hLTJcIiA6Y29sb3I9XCJzZWxlY3RlZEV2ZW50LmNvbG9yXCIgZGFyaz5cbiAgICAgICAgICAgICAgICAgICAge3sgc2VsZWN0ZWRFdmVudC5tb2RlUGFpZW1lbnRfIH19XG4gICAgICAgICAgICAgICAgICA8L3YtY2hpcD5cbiAgICAgICAgICAgICAgICA8L3YtdG9vbGJhcj5cblxuICAgICAgICAgICAgICAgIDx2LXNpbXBsZS10YWJsZSBkZW5zZSBjb2xvcj1cImdyZXkgbGlnaHRlbi00XCI+XG4gICAgICAgICAgICAgICAgICA8dGVtcGxhdGUgdi1zbG90OmRlZmF1bHQ+XG4gICAgICAgICAgICAgICAgICAgIDx0aGVhZD5cbiAgICAgICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJ0ZXh0LWxlZnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJHQoc2VsZWN0ZWRFdmVudC50cl90YWJsZV9bMF0pIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwidGV4dC1sZWZ0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICR0KHNlbGVjdGVkRXZlbnQudHJfdGFibGVfWzFdKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPlxuICAgICAgICAgICAgICAgICAgICA8dGJvZHk+XG4gICAgICAgICAgICAgICAgICAgICAgPHRyXG4gICAgICAgICAgICAgICAgICAgICAgICB2LWZvcj1cIml0ZW0gaW4gc2VsZWN0ZWRFdmVudC50ZF90YWJsZV9cIlxuICAgICAgICAgICAgICAgICAgICAgICAgOmtleT1cIml0ZW0ua2V5XCJcbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgaXRlbS5hIH19PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyBpdGVtLmIgfX08L3RkPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDwvdi1zaW1wbGUtdGFibGU+XG5cbiAgICAgICAgICAgICAgICA8aDQgcmlnaHQ+TW9udGFudCBUVEMgOiB7eyBzZWxlY3RlZEV2ZW50Lm1vbnRhbnRUdGNfIH19IERIPC9oND5cbiAgICAgICAgICAgICAgPC92LWNhcmQtdGV4dD5cbiAgICAgICAgICAgIDwvdi1jYXJkPlxuICAgICAgICAgIDwvdi1tZW51PlxuICAgICAgICA8L3Ytc2hlZXQ+XG4gICAgICA8L3YtY29sPlxuICAgIDwvdi1yb3c+XG4gIDwvY2FyZC1jYXJkPlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdD5cbmltcG9ydCBheGlvcyBmcm9tIFwiYXhpb3NcIjtcblxuXG5pbXBvcnQgd2lkZ2V0c01peGluIGZyb20gXCIuLi93aWRnZXRzTWl4aW5cIjtcblxuZXhwb3J0IGRlZmF1bHQge1xuICBtaXhpbnM6IFt3aWRnZXRzTWl4aW5dLFxuICBkYXRhOiAoKSA9PiAoe1xuICAgIGNvbXB0ZXNiYW5jYWlyZXNib25JdGVtczogW10sXG4gICAgY29udHJvbGxlcl9yb290XzE6IFwicmVjZXR0ZXNib25cIixcbiAgICBjb250cm9sbGVyX3Jvb3RfMjogXCJkZXBlbnNlc2JvblwiLFxuICAgIGZvY3VzOiBcIlwiLFxuICAgIHR5cGU6IFwibW9udGhcIixcblxuICAgIHNlbGVjdGVkRXZlbnQ6IHt9LFxuICAgIHNlbGVjdGVkRWxlbWVudDogbnVsbCxcbiAgICBzZWxlY3RlZE9wZW46IGZhbHNlLFxuICAgIGV2ZW50c0FsbDogW10sXG4gICAgZXZlbnRzOiBbXSxcbiAgICBldmVudHNUVEM6IHt9LFxuICAgIFRvdGFsX1RUQzogMCxcbiAgICB0eXBlVG9MYWJlbDoge1xuICAgICAgbW9udGg6IFwiTW9pc1wiLFxuXG4gICAgICBkYXk6IFwiSm91clwiLFxuICAgIH0sXG4gICAgbWluOiAwLFxuICAgIG1heDogMCxcbiAgICBzdGFydF9kYXRlOiAwLFxuICAgIGVuZF9kYXRlOiAwLFxuICAgIGxvYWRpbmc6IGZhbHNlLFxuICB9KSxcbiAgbW91bnRlZCgpIHtcbiAgICB0aGlzLiRyZWZzLmNhbGVuZGFyLmNoZWNrQ2hhbmdlKCk7XG4gICAgLy8gdGhpcy5zdGFydCgpO1xuICB9LFxuICBtZXRob2RzOiB7XG4gICAgdmlld0RheSh7IGRhdGUgfSkge1xuICAgICAgdGhpcy5mb2N1cyA9IGRhdGU7XG4gICAgICB0aGlzLnR5cGUgPSBcImRheVwiO1xuICAgIH0sXG4gICAgZ2V0RXZlbnRDb2xvcihldmVudCkge1xuICAgICAgcmV0dXJuIGV2ZW50LmNvbG9yO1xuICAgIH0sXG4gICAgc2V0VG9kYXkoKSB7XG4gICAgICB0aGlzLmZvY3VzID0gXCJcIjtcbiAgICB9LFxuICAgIHByZXYoKSB7XG4gICAgICB0aGlzLiRyZWZzLmNhbGVuZGFyLnByZXYoKTtcbiAgICB9LFxuICAgIG5leHQoKSB7XG4gICAgICB0aGlzLiRyZWZzLmNhbGVuZGFyLm5leHQoKTtcbiAgICB9LFxuXG4gICAgc2hvd0V2ZW50KHsgbmF0aXZlRXZlbnQsIGV2ZW50IH0pIHtcbiAgICAgIGNvbnN0IG9wZW4gPSAoKSA9PiB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRFdmVudCA9IGV2ZW50O1xuICAgICAgICB0aGlzLnNlbGVjdGVkRWxlbWVudCA9IG5hdGl2ZUV2ZW50LnRhcmdldDtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZE9wZW4gPSB0cnVlO1xuICAgICAgICB9LCAxMCk7XG4gICAgICB9O1xuXG4gICAgICBpZiAodGhpcy5zZWxlY3RlZE9wZW4pIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZE9wZW4gPSBmYWxzZTtcbiAgICAgICAgc2V0VGltZW91dChvcGVuLCAxMCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvcGVuKCk7XG4gICAgICB9XG5cbiAgICAgIG5hdGl2ZUV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH0sXG4gICAgdXBkYXRlUmFuZ2UoeyBzdGFydCwgZW5kIH0pIHtcbiAgICAgIGNvbnNvbGUubG9nKHN0YXJ0KTtcbiAgICAgIGNvbnNvbGUubG9nKGVuZCk7XG5cbiAgICAgIHRoaXMubWluID0gbmV3IERhdGUoYCR7c3RhcnQuZGF0ZX1UMDA6MDA6MDBgKS5nZXRUaW1lKCk7XG4gICAgICB0aGlzLm1heCA9IG5ldyBEYXRlKGAke2VuZC5kYXRlfVQyMzo1OTo1OWApLmdldFRpbWUoKTtcblxuICAgICAgdGhpcy5zdGFydF9kYXRlID0gc3RhcnQuZGF0ZTtcbiAgICAgIHRoaXMuZW5kX2RhdGUgPSBlbmQuZGF0ZTtcbiAgICAgIHRoaXMuc3RhcnQoKTtcbiAgICB9LFxuICAgIGNvbXB0ZXNiYW5jYWlyZXNib25DaGFuZ2UodmFsKSB7XG4gICAgICBjb25zb2xlLmxvZyh0aGlzLmV2ZW50c0FsbCk7XG5cbiAgICAgIGxldCBldmVudHNEQiA9IHRoaXMuZXZlbnRzQWxsLmZpbHRlcigoaXRlbSkgPT4ge1xuICAgICAgICByZXR1cm4gdmFsLmluY2x1ZGVzKGl0ZW0uY29tcHRlc2JhbmNhaXJlc2Jvbl9pZF8pO1xuICAgICAgfSk7XG5cbiAgICAgIGxldCBldmVudHNUVEMgPSB7fTtcbiAgICAgIGV2ZW50c0RCLmZvckVhY2goKGVsZW1lbnQpID0+IHtcbiAgICAgICAgaWYgKGV2ZW50c1RUQ1tlbGVtZW50LnN0YXJ0XSA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBldmVudHNUVENbZWxlbWVudC5zdGFydF0gPSB7XG4gICAgICAgICAgICBuYW1lOiBcIlRPVEFMIFRUQ1wiLFxuICAgICAgICAgICAgY29sb3I6IFwiaW5kaWdvXCIsXG4gICAgICAgICAgICBzdGFydDogZWxlbWVudC5zdGFydCxcbiAgICAgICAgICAgIGVuZDogZWxlbWVudC5zdGFydCxcbiAgICAgICAgICAgIHRyX3RhYmxlXzogW1wiYm9uc1ZlbnRlc1wiLCBcIm1vbnRhbnRSZWdsZW1lbnRcIl0sXG4gICAgICAgICAgICB0ZF90YWJsZV86IFtdLFxuICAgICAgICAgICAgbW9udGFudFR0Y186IDAsXG4gICAgICAgICAgICBjbGllbnRfOiBcIlwiLFxuICAgICAgICAgICAgY29tcHRlc2JhbmNhaXJlc2Jvbl86IFwiXCIsXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCB0dGMgPVxuICAgICAgICAgIGV2ZW50c1RUQ1tlbGVtZW50LnN0YXJ0XVtcIm1vbnRhbnRUdGNfXCJdICogMSArXG4gICAgICAgICAgZWxlbWVudFtcIm1vbnRhbnRUdGNfXCJdICogMTtcblxuICAgICAgICBldmVudHNUVENbZWxlbWVudC5zdGFydF1bXCJtb250YW50VHRjX1wiXSA9IHR0Yy50b0ZpeGVkKDIpO1xuICAgICAgICBldmVudHNUVENbZWxlbWVudC5zdGFydF1bXCJjb21wdGVzYmFuY2FpcmVzYm9uX1wiXSA9XG4gICAgICAgICAgdHRjLnRvTG9jYWxlU3RyaW5nKHVuZGVmaW5lZCwge1xuICAgICAgICAgICAgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAyLFxuICAgICAgICAgIH0pICsgXCIgREhcIjtcbiAgICAgICAgZXZlbnRzVFRDW2VsZW1lbnQuc3RhcnRdW1wibmFtZVwiXSA9XG4gICAgICAgICAgXCJUT1RBTCBUVEMgOiBcIiArXG4gICAgICAgICAgdHRjLnRvTG9jYWxlU3RyaW5nKHVuZGVmaW5lZCwge1xuICAgICAgICAgICAgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAyLFxuICAgICAgICAgIH0pICtcbiAgICAgICAgICBcIiBESCBcIjtcbiAgICAgICAgZXZlbnRzVFRDW2VsZW1lbnQuc3RhcnRdW1widGRfdGFibGVfXCJdLnB1c2goe1xuICAgICAgICAgIGE6IGVsZW1lbnQubmFtZSxcbiAgICAgICAgICBiOiBlbGVtZW50Lm1vbnRhbnRUdGNfLFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgICBsZXQgZXZlbnRzID0gW107XG4gICAgICB0aGlzLmV2ZW50c1RUQyA9IGV2ZW50c1RUQztcbiAgICAgIGZvciAobGV0IGtleSBpbiBldmVudHNUVEMpIHtcbiAgICAgICAgZXZlbnRzLnB1c2goZXZlbnRzVFRDW2tleV0pO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmV2ZW50cyA9IGV2ZW50cy5jb25jYXQoZXZlbnRzREIpO1xuXG4gICAgICBjb25zb2xlLmxvZyh0aGlzLmV2ZW50cyk7XG4gICAgICB0aGlzLmNhbGN1bF90b3RhbF90dGNfKCk7XG4gICAgfSxcbiAgICBjYWxjdWxfdG90YWxfdHRjXygpIHtcbiAgICAgIGxldCBtaW4gPSB0aGlzLm1pbjtcbiAgICAgIGxldCBtYXggPSB0aGlzLm1heDtcblxuICAgICAgY29uc29sZS5sb2cobWluKTtcbiAgICAgIGNvbnNvbGUubG9nKG1heCk7XG4gICAgICBsZXQgJFRvdGFsX1RUQyA9IDA7XG4gICAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLmV2ZW50c1RUQykge1xuICAgICAgICBjb25zdCBUaW1lX1RUQyA9IG5ldyBEYXRlKGAke2tleX1UMDA6MDA6MDBgKS5nZXRUaW1lKCk7XG5cbiAgICAgICAgaWYgKFRpbWVfVFRDID49IG1pbiAmJiBUaW1lX1RUQyA8PSBtYXgpIHtcbiAgICAgICAgICAkVG90YWxfVFRDID0gJFRvdGFsX1RUQyArIHRoaXMuZXZlbnRzVFRDW2tleV1bXCJtb250YW50VHRjX1wiXSAqIDE7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNvbnNvbGUubG9nKCRUb3RhbF9UVEMpO1xuICAgICAgdGhpcy5Ub3RhbF9UVEMgPSAkVG90YWxfVFRDLnRvTG9jYWxlU3RyaW5nKHVuZGVmaW5lZCwge1xuICAgICAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDIsXG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIGNvdW50KHBhdGhzKSB7XG4gICAgICBpZiAodGhpcy5zdGFydF9kYXRlID09IHRoaXMuZW5kX2RhdGUpIHtcbiAgICAgICAgdGhpcy5jYWxjdWxfdG90YWxfdHRjXygpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGxldCBzZWFyY2ggPSBcIj5kYXRlPT09XCIgKyB0aGlzLnN0YXJ0X2RhdGUgKyBcIn5cIiArIHRoaXMuZW5kX2RhdGU7XG5cbiAgICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgICAgb3B0aW9uc0RhdGFUYWJsZTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgIGdyb3VwQnk6IFtdLFxuICAgICAgICAgIGdyb3VwRGVzYzogW10sXG4gICAgICAgICAgaXRlbXNQZXJQYWdlOiAtMSxcbiAgICAgICAgICBtdWx0aVNvcnQ6IGZhbHNlLFxuICAgICAgICAgIG11c3RTb3J0OiBmYWxzZSxcbiAgICAgICAgICBwYWdlOiAxLFxuICAgICAgICAgIHNvcnRCeTogW10sXG4gICAgICAgICAgc29ydERlc2M6IFtdLFxuICAgICAgICB9KSxcbiAgICAgICAgc2VhcmNoRGF0YVRhYmxlOiBKU09OLnN0cmluZ2lmeShzZWFyY2gpLFxuICAgICAgICBBdHRyaWJ1dGVzVGFibGVIaWRlOiBcIlwiLFxuICAgICAgfTtcbiAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgICB0aGlzLmNvbXB0ZXNiYW5jYWlyZXNib25JdGVtcyA9IFtdO1xuICAgICAgdGhpcy5ldmVudHNBbGwgPSBbXTtcbiAgICAgIHRoaXMuZXZlbnRzID0gW107XG4gICAgICB0aGlzLmV2ZW50c1RUQyA9IHt9O1xuICAgICAgdGhpcy5Ub3RhbF9UVEMgPSAwO1xuICAgICAgbGV0IHBhdGgxID0gcGF0aHNbdGhpcy5jb250cm9sbGVyX3Jvb3RfMV07XG4gICAgICBpZiAocGF0aDEgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGF4aW9zXG4gICAgICAgICAgLmdldCh0aGlzLkJhc2VfdXJsX3dlYiArIHBhdGgxLCB7ICBoZWFkZXJzOiB7XG4gICAgICAgICAgQXV0aG9yaXphdGlvbjogIGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiSldUVG9rZW5cIiksXG4gICAgICAgIH0sIHBhcmFtczogcGFyYW1zIH0pXG4gICAgICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmV2ZW50c0FsbCA9IFtdO1xuXG4gICAgICAgICAgICBsZXQgZGF0YSA9IHJlc3BvbnNlLmRhdGFbXCJkYXRhU2V0XCJdO1xuICAgICAgICAgICAgY29uc29sZS5sb2coZGF0YSk7XG4gICAgICAgICAgICBkYXRhLmZvckVhY2goKGVsZW1lbnQpID0+IHtcbiAgICAgICAgICAgICAgbGV0IGV2ZW50ID0ge307XG5cbiAgICAgICAgICAgICAgbGV0IHJlbGV2ZXMgPSBlbGVtZW50W1wicmVsZXZlUmVjZXR0ZXNib25zXCJdW1wiZGF0YVNldFwiXTtcbiAgICAgICAgICAgICAgbGV0IGluZm9yZWxldmVzID0gW107XG4gICAgICAgICAgICAgIGxldCBpID0gMDtcbiAgICAgICAgICAgICAgcmVsZXZlcy5mb3JFYWNoKChyZWxldmUpID0+IHtcbiAgICAgICAgICAgICAgICBpKys7XG4gICAgICAgICAgICAgICAgaW5mb3JlbGV2ZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgICBrZXk6IGksXG4gICAgICAgICAgICAgICAgICBhOiByZWxldmVbXCJib25zVmVudGVzXCJdLFxuICAgICAgICAgICAgICAgICAgYjogcmVsZXZlW1wibW9udGFudFJlZ2xlbWVudFwiXSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgZXZlbnRbXCJ0ZF90YWJsZV9cIl0gPSBpbmZvcmVsZXZlcztcbiAgICAgICAgICAgICAgZXZlbnRbXCJ0cl90YWJsZV9cIl0gPSBbXCJib25zVmVudGVzXCIsIFwibW9udGFudFJlZ2xlbWVudFwiXTtcblxuICAgICAgICAgICAgICBldmVudFtcIl9pZF9cIl0gPSBlbGVtZW50LmlkO1xuICAgICAgICAgICAgICBldmVudFtcInN0YXJ0XCJdID0gZWxlbWVudC5kYXRlO1xuICAgICAgICAgICAgICBldmVudFtcImVuZFwiXSA9IGVsZW1lbnQuZGF0ZTtcblxuICAgICAgICAgICAgICBldmVudFtcImNvbXB0ZXNiYW5jYWlyZXNib25fXCJdID0gZWxlbWVudC5jb21wdGVzYmFuY2FpcmVzYm9uO1xuICAgICAgICAgICAgICBldmVudFtcImNvbXB0ZXNiYW5jYWlyZXNib25faWRfXCJdID0gZWxlbWVudC5jb21wdGVzYmFuY2FpcmVzYm9uX2lkO1xuXG4gICAgICAgICAgICAgIGV2ZW50W1wiY29sb3JcIl0gPVwidGVhbCBkYXJrZW4tM1wiXG4gICAgICAgICAgICAgICAvLyB1dGlsW1wiY29sb3JcIl1bXCJ2YWx1ZUNvbG9yXCJdW2VsZW1lbnQuY29tcHRlc2JhbmNhaXJlc2Jvbl9pZF07XG5cbiAgICAgICAgICAgICAgZXZlbnRbXCJjb250cm9sbGVyX3Jvb3RfXCJdID0gdGhpcy5jb250cm9sbGVyX3Jvb3RfMTtcbiAgICAgICAgICAgICAgZXZlbnRbXCJjbGllbnRfXCJdID0gZWxlbWVudFtcImNsaWVudFwiXTtcbiAgICAgICAgICAgICAgZXZlbnRbXCJyZWNldHRlc09SZGVwZW5zZXNfXCJdID0gXCJyZWNldHRlc1wiO1xuICAgICAgICAgICAgICBldmVudFtcIm1vZGVQYWllbWVudF9cIl0gPSBlbGVtZW50W1wibW9kZVBhaWVtZW50XCJdO1xuICAgICAgICAgICAgICBldmVudFtcImNhdGVnb3JpZXNyZWNldHRlc09SZGVwZW5zZXNfXCJdID1cbiAgICAgICAgICAgICAgICBlbGVtZW50W1wiY2F0ZWdvcmllc3JlY2V0dGVzXCJdO1xuXG4gICAgICAgICAgICAgIGV2ZW50W1wibW9udGFudFR0Y19cIl0gPSBlbGVtZW50W1wibW9udGFudFwiXS50b0xvY2FsZVN0cmluZyhcbiAgICAgICAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAyLFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgZXZlbnRbXCJuYW1lXCJdID0gZWxlbWVudFtcInVzZXJcIl0gKyBcIiBcIiArIGVsZW1lbnRbXCJ0b1N0cmluZ1wiXTtcblxuICAgICAgICAgICAgICB0aGlzLmV2ZW50c0FsbC5wdXNoKGV2ZW50KTtcblxuICAgICAgICAgICAgICB0aGlzLmNvbXB0ZXNiYW5jYWlyZXNib25JdGVtcy5wdXNoKHtcbiAgICAgICAgICAgICAgICB0ZXh0OiBlbGVtZW50LmNvbXB0ZXNiYW5jYWlyZXNib24sXG4gICAgICAgICAgICAgICAgdmFsdWU6IGVsZW1lbnQuY29tcHRlc2JhbmNhaXJlc2Jvbl9pZCxcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIC8vIGNsb25lIGFycmF5XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuICAgICAgICAgICAgbGV0IHBhdGgyID0gcGF0aHNbdGhpcy5jb250cm9sbGVyX3Jvb3RfMl07XG4gICAgICAgICAgICBheGlvc1xuICAgICAgICAgICAgICAuZ2V0KHRoaXMuQmFzZV91cmxfd2ViICsgcGF0aDIsIHsgIGhlYWRlcnM6IHtcbiAgICAgICAgICBBdXRob3JpemF0aW9uOiAgbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJKV1RUb2tlblwiKSxcbiAgICAgICAgfSwgcGFyYW1zOiBwYXJhbXMgfSlcbiAgICAgICAgICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG5cbiAgICAgICAgICAgICAgICBsZXQgZGF0YSA9IHJlc3BvbnNlLmRhdGFbXCJkYXRhU2V0XCJdO1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGRhdGEpO1xuXG4gICAgICAgICAgICAgICAgZGF0YS5mb3JFYWNoKChlbGVtZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICBsZXQgZXZlbnQgPSB7fTtcblxuICAgICAgICAgICAgICAgICAgbGV0IHJlbGV2ZXMgPSBlbGVtZW50W1wicmVsZXZlRGVwZW5zZXNib25zXCJdW1wiZGF0YVNldFwiXTtcbiAgICAgICAgICAgICAgICAgIGxldCBpbmZvcmVsZXZlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgbGV0IGkgPSAwO1xuICAgICAgICAgICAgICAgICAgcmVsZXZlcy5mb3JFYWNoKChyZWxldmUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaSsrO1xuICAgICAgICAgICAgICAgICAgICBpbmZvcmVsZXZlcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICBrZXk6IGksXG4gICAgICAgICAgICAgICAgICAgICAgYTogcmVsZXZlW1wiQm9uc0FjaGF0c1wiXSxcbiAgICAgICAgICAgICAgICAgICAgICBiOiByZWxldmVbXCJtb250YW50UmVnbGVtZW50XCJdLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICBldmVudFtcInRkX3RhYmxlX1wiXSA9IGluZm9yZWxldmVzO1xuICAgICAgICAgICAgICAgICAgZXZlbnRbXCJ0cl90YWJsZV9cIl0gPSBbXCJCb25zQWNoYXRzXCIsIFwibW9udGFudFJlZ2xlbWVudFwiXTtcblxuICAgICAgICAgICAgICAgICAgZXZlbnRbXCJfaWRfXCJdID0gZWxlbWVudC5pZDtcbiAgICAgICAgICAgICAgICAgIGV2ZW50W1wic3RhcnRcIl0gPSBlbGVtZW50LmRhdGU7XG4gICAgICAgICAgICAgICAgICBldmVudFtcImVuZFwiXSA9IGVsZW1lbnQuZGF0ZTtcblxuICAgICAgICAgICAgICAgICAgZXZlbnRbXCJjb21wdGVzYmFuY2FpcmVzYm9uX1wiXSA9IGVsZW1lbnQuY29tcHRlc2JhbmNhaXJlc2JvbjtcbiAgICAgICAgICAgICAgICAgIGV2ZW50W1wiY29tcHRlc2JhbmNhaXJlc2Jvbl9pZF9cIl0gPVxuICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmNvbXB0ZXNiYW5jYWlyZXNib25faWQ7XG5cbiAgICAgICAgICAgICAgICAgIGV2ZW50W1wiY29sb3JcIl0gPVwiZGVlcC1vcmFuZ2VcIlxuICAgICAgICAgICAgICAgICAgICAvL3V0aWxbXCJjb2xvclwiXVtcInZhbHVlQ29sb3JcIl1bZWxlbWVudC5jb21wdGVzYmFuY2FpcmVzYm9uX2lkXTtcblxuICAgICAgICAgICAgICAgICAgZXZlbnRbXCJjb250cm9sbGVyX3Jvb3RfXCJdID0gdGhpcy5jb250cm9sbGVyX3Jvb3RfMjtcbiAgICAgICAgICAgICAgICAgIGV2ZW50W1wiY2xpZW50X1wiXSA9IGVsZW1lbnRbXCJmb3Vybmlzc2V1clwiXTtcbiAgICAgICAgICAgICAgICAgIGV2ZW50W1wicmVjZXR0ZXNPUmRlcGVuc2VzX1wiXSA9IFwiZGVwZW5zZXNcIjtcbiAgICAgICAgICAgICAgICAgIGV2ZW50W1wibW9kZVBhaWVtZW50X1wiXSA9IGVsZW1lbnRbXCJtb2RlUGFpZW1lbnRcIl07XG4gICAgICAgICAgICAgICAgICBldmVudFtcImNhdGVnb3JpZXNyZWNldHRlc09SZGVwZW5zZXNfXCJdID1cbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudFtcImNhdGVnb3JpZXNkZXBlbnNlc1wiXTtcblxuICAgICAgICAgICAgICAgICAgZXZlbnRbXCJtb250YW50VHRjX1wiXSA9IC0xICogZWxlbWVudFtcIm1vbnRhbnRcIl07XG4gICAgICAgICAgICAgICAgICBldmVudFtcIm5hbWVcIl0gPSBlbGVtZW50W1widXNlclwiXSArIFwiIFwiICsgZWxlbWVudFtcInRvU3RyaW5nXCJdO1xuXG4gICAgICAgICAgICAgICAgICB0aGlzLmV2ZW50c0FsbC5wdXNoKGV2ZW50KTtcblxuICAgICAgICAgICAgICAgICAgdGhpcy5jb21wdGVzYmFuY2FpcmVzYm9uSXRlbXMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIHRleHQ6IGVsZW1lbnQuY29tcHRlc2JhbmNhaXJlc2JvbixcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGVsZW1lbnQuY29tcHRlc2JhbmNhaXJlc2Jvbl9pZCxcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgLy8gY2xvbmUgYXJyYXlcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIHRoaXMuZXZlbnRzID0gWy4uLnRoaXMuZXZlbnRzQWxsXTtcblxuICAgICAgICAgICAgICAgIHRoaXMuY2FsY3VsX3RvdGFsX3R0Y18oKTtcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICAgICAgICB9KVxuICAgICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICBzaG93SXRlbShpZCwgY29udHJvbGxlcl9yb290KSB7XG4gICAgICB0aGlzLiRyb3V0ZXIucHVzaCh7XG4gICAgICAgIG5hbWU6IGNvbnRyb2xsZXJfcm9vdCArIFwiX3Nob3dfaXRlbVwiLFxuICAgICAgICBwYXJhbXM6IHsgaWQ6IGlkIH0sXG4gICAgICB9KTtcbiAgICB9LFxuICAgIGlzR3JhbnRlZChhdHRyaWJ1dGUsIGNvbnRyb2xsZXJfcm9vdCkge1xuICAgICAgcmV0dXJuIHRoaXMuJHN0b3JlLmdldHRlcnNbXCJzZWN1cml0eS9pc0dyYW50ZWRcIl0oXG4gICAgICAgIGF0dHJpYnV0ZSxcbiAgICAgICAgY29udHJvbGxlcl9yb290XG4gICAgICApO1xuICAgIH0sXG4gICAgc3RhcnQoKSB7XG4gICAgICB0aGlzLmNvdW50KHRoaXMucGF0aHNfc3RhdGlzdGlxdWVzKTtcbiAgICB9LFxuICB9LFxuXG4gIHdhdGNoOiB7XG4gICAgcGF0aHNfc3RhdGlzdGlxdWVzKCkge1xuICAgICAgdGhpcy5zdGFydCgpO1xuICAgIH0sXG4gIH0sXG4gIGNvbXB1dGVkOiB7XG4gICAgQmFzZV91cmxfd2ViKCkge1xuICAgICAgcmV0dXJuIHRoaXMuJHN0b3JlLmdldHRlcnNbXCJnZXRfQmFzZV91cmxcIl07XG4gICAgfSxcbiAgICBwYXRoc19zdGF0aXN0aXF1ZXMoKSB7XG4gICAgICByZXR1cm4gdGhpcy4kc3RvcmUuZ2V0dGVyc1tcImdldF9wYXRoc1wiXTtcbiAgICB9LFxuICB9LFxufTtcbjwvc2NyaXB0PlxuPHN0eWxlID5cbi52LWNhbGVuZGFyLWRhaWx5X19zY3JvbGwtYXJlYSB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG48L3N0eWxlPiIsIjx0ZW1wbGF0ZT5cbiAgPGNhcmQtY2FyZCA6Y2xvc2U9XCJjbG9zZVwiIEBjbG9zZT1cImNsb3NlZXZlbnRcIiBpY29uPVwibWRpLWNhbGVuZGFyLWNoZWNrLW91dGxpbmVcIiBjb2xvcj1cIm9yYW5nZVwiXG4gICAgOnRpdGxlPVwiJHQoJ2NvbXB0ZXNCYW5jYWlyZXNmYWN0dXJlc1ZlbnRlcycpXCIgY2xhc3M9XCJweC01IHB5LTNcIj5cbiAgICA8di1yb3cgY2xhc3M9XCJmaWxsLWhlaWdodFwiPlxuICAgICAgPHYtY29sPlxuICAgICAgICA8di1zaGVldD5cbiAgICAgICAgICA8di10b29sYmFyLXRpdGxlIHYtaWY9XCIkcmVmcy5jYWxlbmRhclwiPlxuICAgICAgICAgICAge3sgJHJlZnMuY2FsZW5kYXIudGl0bGUgfX1cbiAgICAgICAgICA8L3YtdG9vbGJhci10aXRsZT5cbiAgICAgICAgPC92LXNoZWV0PlxuICAgICAgICA8di1zaGVldCBoZWlnaHQ9XCI4MFwiPlxuICAgICAgICAgIDx2LXRvb2xiYXIgZmxhdD5cbiAgICAgICAgICAgIDx2LWJ0biA6bG9hZGluZz1cImxvYWRpbmdcIiBvdXRsaW5lZCBjbGFzcz1cIm1yLTRcIiBjb2xvcj1cImdyZXkgZGFya2VuLTJcIiBAY2xpY2s9XCJzZXRUb2RheVwiPlxuICAgICAgICAgICAgICB7eyAkdChcImF1am91cmQnaHVpXCIpIH19XG4gICAgICAgICAgICA8L3YtYnRuPlxuICAgICAgICAgICAgPHYtYnRuIGZhYiB0ZXh0IHNtYWxsIGNvbG9yPVwiZ3JleSBkYXJrZW4tMlwiIEBjbGljaz1cInByZXZcIj5cbiAgICAgICAgICAgICAgPHYtaWNvbiBzbWFsbD4gbWRpLWNoZXZyb24tbGVmdCA8L3YtaWNvbj5cbiAgICAgICAgICAgIDwvdi1idG4+XG4gICAgICAgICAgICA8di1idG4gZmFiIHRleHQgc21hbGwgY29sb3I9XCJncmV5IGRhcmtlbi0yXCIgQGNsaWNrPVwibmV4dFwiPlxuICAgICAgICAgICAgICA8di1pY29uIHNtYWxsPiBtZGktY2hldnJvbi1yaWdodCA8L3YtaWNvbj5cbiAgICAgICAgICAgIDwvdi1idG4+XG5cbiAgICAgICAgICAgIDx2LXNwYWNlcj48L3Ytc3BhY2VyPlxuXG4gICAgICAgICAgICA8di1hdXRvY29tcGxldGUgOmxvYWRpbmc9XCJsb2FkaW5nXCIgbXVsdGlwbGUgOmNsZWFyYWJsZT1cInRydWVcIiBsYWJlbD1cImNvbXB0ZXNCYW5jYWlyZXNcIlxuICAgICAgICAgICAgICBAY2hhbmdlPVwiY29tcHRlc0JhbmNhaXJlc0NoYW5nZVwiIDppdGVtcz1cImNvbXB0ZXNCYW5jYWlyZXNJdGVtc1wiIGl0ZW0tdGV4dD1cInRleHRcIiBpdGVtLXZhbHVlPVwidmFsdWVcIlxuICAgICAgICAgICAgICA6bWVzc2FnZXM9XCInICBUb3RhbF9UVEMgOiAgJyArIFRvdGFsX1RUQyArICcgREgnXCI+XG4gICAgICAgICAgICA8L3YtYXV0b2NvbXBsZXRlPlxuICAgICAgICAgICAgPHYtc3BhY2VyPjwvdi1zcGFjZXI+XG4gICAgICAgICAgICA8di1tZW51IGJvdHRvbSByaWdodD5cbiAgICAgICAgICAgICAgPHRlbXBsYXRlIHYtc2xvdDphY3RpdmF0b3I9XCJ7IG9uLCBhdHRycyB9XCI+XG4gICAgICAgICAgICAgICAgPHYtYnRuIG91dGxpbmVkIGNvbG9yPVwiZ3JleSBkYXJrZW4tMlwiIHYtYmluZD1cImF0dHJzXCIgdi1vbj1cIm9uXCI+XG4gICAgICAgICAgICAgICAgICA8c3Bhbj57eyB0eXBlVG9MYWJlbFt0eXBlXSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDx2LWljb24gcmlnaHQ+IG1kaS1tZW51LWRvd24gPC92LWljb24+XG4gICAgICAgICAgICAgICAgPC92LWJ0bj5cbiAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgPHYtbGlzdD5cbiAgICAgICAgICAgICAgICA8di1saXN0LWl0ZW0gQGNsaWNrPVwidHlwZSA9ICdkYXknXCI+XG4gICAgICAgICAgICAgICAgICA8di1saXN0LWl0ZW0tdGl0bGU+IHt7ICR0KFwiSm91clwiKSB9fSA8L3YtbGlzdC1pdGVtLXRpdGxlPlxuICAgICAgICAgICAgICAgIDwvdi1saXN0LWl0ZW0+XG5cbiAgICAgICAgICAgICAgICA8di1saXN0LWl0ZW0gQGNsaWNrPVwidHlwZSA9ICdtb250aCdcIj5cbiAgICAgICAgICAgICAgICAgIDx2LWxpc3QtaXRlbS10aXRsZT4ge3sgJHQoXCJNb2lzXCIpIH19IDwvdi1saXN0LWl0ZW0tdGl0bGU+XG4gICAgICAgICAgICAgICAgPC92LWxpc3QtaXRlbT5cbiAgICAgICAgICAgICAgPC92LWxpc3Q+XG4gICAgICAgICAgICA8L3YtbWVudT5cbiAgICAgICAgICA8L3YtdG9vbGJhcj5cbiAgICAgICAgPC92LXNoZWV0PlxuXG4gICAgICAgIDx2LXNoZWV0IGhlaWdodD1cIjYwMFwiPlxuICAgICAgICAgIDx2LWNhbGVuZGFyIDpsb2NhbGU9XCIkdCgnbG9jYWxlJylcIiByZWY9XCJjYWxlbmRhclwiIHYtbW9kZWw9XCJmb2N1c1wiIGNvbG9yPVwicHJpbWFyeVwiIDpldmVudHM9XCJldmVudHNcIlxuICAgICAgICAgICAgOmV2ZW50LWNvbG9yPVwiZ2V0RXZlbnRDb2xvclwiIDp0eXBlPVwidHlwZVwiIEBjbGljazpldmVudD1cInNob3dFdmVudFwiIEBjbGljazptb3JlPVwidmlld0RheVwiXG4gICAgICAgICAgICBAY2xpY2s6ZGF0ZT1cInZpZXdEYXlcIiBAY2hhbmdlPVwidXBkYXRlUmFuZ2VcIj48L3YtY2FsZW5kYXI+XG5cbiAgICAgICAgICA8di1tZW51IHYtbW9kZWw9XCJzZWxlY3RlZE9wZW5cIiA6Y2xvc2Utb24tY29udGVudC1jbGljaz1cImZhbHNlXCIgOmFjdGl2YXRvcj1cInNlbGVjdGVkRWxlbWVudFwiIG9mZnNldC14PlxuICAgICAgICAgICAgPHYtY2FyZCBjb2xvcj1cImdyZXkgbGlnaHRlbi00XCIgbWluLXdpZHRoPVwiMzUwcHhcIiBmbGF0PlxuICAgICAgICAgICAgICA8di10b29sYmFyIDpjb2xvcj1cInNlbGVjdGVkRXZlbnQuY29sb3JcIiBkYXJrPlxuICAgICAgICAgICAgICAgIDx2LWJ0biB2LWlmPVwic2VsZWN0ZWRFdmVudC5faWRfID4gMFwiIGljb24gQGNsaWNrPVwiXG4gICAgICAgICAgICAgICAgICBzaG93SXRlbShzZWxlY3RlZEV2ZW50Ll9pZF8sIHNlbGVjdGVkRXZlbnQuY29udHJvbGxlcl9yb290XylcbiAgICAgICAgICAgICAgICAgIFwiIHYtc2hvdz1cImlzR3JhbnRlZCgndmlldycsIHNlbGVjdGVkRXZlbnQuY29udHJvbGxlcl9yb290XylcIj5cbiAgICAgICAgICAgICAgICAgIDx2LWljb24+bWRpLXZpZXctY2Fyb3VzZWw8L3YtaWNvbj5cbiAgICAgICAgICAgICAgICA8L3YtYnRuPlxuXG4gICAgICAgICAgICAgICAgPHYtdG9vbGJhci10aXRsZSB2LWh0bWw9XCJzZWxlY3RlZEV2ZW50Lm5hbWVcIj4gPC92LXRvb2xiYXItdGl0bGU+XG4gICAgICAgICAgICAgICAgPHYtc3BhY2VyPjwvdi1zcGFjZXI+XG5cbiAgICAgICAgICAgICAgICA8di1idG4gaWNvbiBAY2xpY2s9XCJzZWxlY3RlZE9wZW4gPSBmYWxzZVwiPlxuICAgICAgICAgICAgICAgICAgPHYtaWNvbj5tZGktY2xvc2U8L3YtaWNvbj5cbiAgICAgICAgICAgICAgICA8L3YtYnRuPlxuICAgICAgICAgICAgICA8L3YtdG9vbGJhcj5cbiAgICAgICAgICAgICAgPHYtY2FyZC10ZXh0PlxuICAgICAgICAgICAgICAgIDx2LXRvb2xiYXIgZmxhdD5cbiAgICAgICAgICAgICAgICAgIDx2LXRvb2xiYXItdGl0bGU+XG4gICAgICAgICAgICAgICAgICAgIHt7IHNlbGVjdGVkRXZlbnQuY2xpZW50XyB9fVxuICAgICAgICAgICAgICAgICAgPC92LXRvb2xiYXItdGl0bGU+XG5cbiAgICAgICAgICAgICAgICAgIDx2LXNwYWNlcj48L3Ytc3BhY2VyPlxuICAgICAgICAgICAgICAgICAgPHYtY2hpcCBjbGFzcz1cIm1hLTJcIiA6Y29sb3I9XCJzZWxlY3RlZEV2ZW50LmNvbG9yXCIgZGFyaz5cbiAgICAgICAgICAgICAgICAgICAge3sgc2VsZWN0ZWRFdmVudC5jb21wdGVzQmFuY2FpcmVzXyB9fVxuICAgICAgICAgICAgICAgICAgPC92LWNoaXA+XG4gICAgICAgICAgICAgICAgPC92LXRvb2xiYXI+XG5cbiAgICAgICAgICAgICAgICA8di10b29sYmFyIGZsYXQ+XG5cbiAgICAgICAgICAgICAgICAgIDx2LWNoaXAgY2xhc3M9XCJtYS0yXCIgOmNvbG9yPVwic2VsZWN0ZWRFdmVudC5jb2xvclwiIGRhcms+XG4gICAgICAgICAgICAgICAgICAgIHt7IHNlbGVjdGVkRXZlbnQucmVjZXR0ZXNPUmRlcGVuc2VzXyB9fVxuICAgICAgICAgICAgICAgICAgPC92LWNoaXA+XG5cbiAgICAgICAgICAgICAgICAgIDx2LXNwYWNlcj48L3Ytc3BhY2VyPlxuICAgICAgICAgICAgICAgICAgPHYtY2hpcCBjbGFzcz1cIm1hLTJcIiA6Y29sb3I9XCJzZWxlY3RlZEV2ZW50LmNvbG9yXCIgZGFyaz5cbiAgICAgICAgICAgICAgICAgICAge3sgc2VsZWN0ZWRFdmVudC5jYXRlZ29yaWVzcmVjZXR0ZXNPUmRlcGVuc2VzXyB9fVxuICAgICAgICAgICAgICAgICAgPC92LWNoaXA+XG5cbiAgICAgICAgICAgICAgICAgIDx2LXNwYWNlcj48L3Ytc3BhY2VyPlxuICAgICAgICAgICAgICAgICAgPHYtY2hpcCBjbGFzcz1cIm1hLTJcIiA6Y29sb3I9XCJzZWxlY3RlZEV2ZW50LmNvbG9yXCIgZGFyaz5cbiAgICAgICAgICAgICAgICAgICAge3sgc2VsZWN0ZWRFdmVudC5tb2RlUGFpZW1lbnRfIH19XG4gICAgICAgICAgICAgICAgICA8L3YtY2hpcD5cbiAgICAgICAgICAgICAgICAgIDx2LXNwYWNlcj48L3Ytc3BhY2VyPlxuXG4gICAgICAgICAgICAgICAgICA8di1jaGlwIGNsYXNzPVwibWEtMiBzaGFrZS1idG4gXCIgZGFyaz5cbiAgICAgICAgICAgICAgICAgICAge3sgc2VsZWN0ZWRFdmVudC5zdGF0dXRfIH19XG4gICAgICAgICAgICAgICAgICA8L3YtY2hpcD5cblxuICAgICAgICAgICAgICAgIDwvdi10b29sYmFyPlxuXG4gICAgICAgICAgICAgICAgPHYtc2ltcGxlLXRhYmxlIGRlbnNlIGNvbG9yPVwiZ3JleSBsaWdodGVuLTRcIj5cbiAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6ZGVmYXVsdD5cbiAgICAgICAgICAgICAgICAgICAgPHRoZWFkPlxuICAgICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRleHQtbGVmdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAkdChzZWxlY3RlZEV2ZW50LnRyX3RhYmxlX1swXSkgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJ0ZXh0LWxlZnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJHQoc2VsZWN0ZWRFdmVudC50cl90YWJsZV9bMV0pIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+XG4gICAgICAgICAgICAgICAgICAgIDx0Ym9keT5cbiAgICAgICAgICAgICAgICAgICAgICA8dHIgdi1mb3I9XCJpdGVtIGluIHNlbGVjdGVkRXZlbnQudGRfdGFibGVfXCIgOmtleT1cIml0ZW0ua2V5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgaXRlbS5hIH19PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyBpdGVtLmIgfX08L3RkPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDwvdi1zaW1wbGUtdGFibGU+XG5cbiAgICAgICAgICAgICAgICA8aDQgcmlnaHQ+TW9udGFudCBUVEMgOiB7eyBzZWxlY3RlZEV2ZW50Lm1vbnRhbnRUdGNfIH19IERIIDwvaDQ+XG4gICAgICAgICAgICAgIDwvdi1jYXJkLXRleHQ+XG4gICAgICAgICAgICA8L3YtY2FyZD5cbiAgICAgICAgICA8L3YtbWVudT5cbiAgICAgICAgPC92LXNoZWV0PlxuICAgICAgPC92LWNvbD5cbiAgICA8L3Ytcm93PlxuICA8L2NhcmQtY2FyZD5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG5pbXBvcnQgYXhpb3MgZnJvbSBcImF4aW9zXCI7XG5cblxuaW1wb3J0IHdpZGdldHNNaXhpbiBmcm9tIFwiLi4vd2lkZ2V0c01peGluXCI7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbWl4aW5zOiBbd2lkZ2V0c01peGluXSxcbiAgZGF0YTogKCkgPT4gKHtcbiAgICBjb21wdGVzQmFuY2FpcmVzSXRlbXM6IFtdLFxuICAgIGNvbnRyb2xsZXJfcm9vdF8xOiBcInJlY2V0dGVzXCIsXG4gICAgY29udHJvbGxlcl9yb290XzI6IFwiZGVwZW5zZXNcIixcbiAgICBmb2N1czogXCJcIixcbiAgICB0eXBlOiBcIm1vbnRoXCIsXG5cbiAgICBzZWxlY3RlZEV2ZW50OiB7fSxcbiAgICBzZWxlY3RlZEVsZW1lbnQ6IG51bGwsXG4gICAgc2VsZWN0ZWRPcGVuOiBmYWxzZSxcbiAgICBldmVudHNBbGw6IFtdLFxuICAgIGV2ZW50czogW10sXG4gICAgZXZlbnRzVFRDOiB7fSxcbiAgICBUb3RhbF9UVEM6IDAsXG4gICAgdHlwZVRvTGFiZWw6IHtcbiAgICAgIG1vbnRoOiBcIk1vaXNcIixcblxuICAgICAgZGF5OiBcIkpvdXJcIixcbiAgICB9LFxuICAgIG1pbjogMCxcbiAgICBtYXg6IDAsXG4gICAgc3RhcnRfZGF0ZTogMCxcbiAgICBlbmRfZGF0ZTogMCxcbiAgICBsb2FkaW5nOiBmYWxzZSxcbiAgfSksXG4gIG1vdW50ZWQoKSB7XG4gICAgdGhpcy4kcmVmcy5jYWxlbmRhci5jaGVja0NoYW5nZSgpO1xuICAgIC8vIHRoaXMuc3RhcnQoKTtcbiAgfSxcbiAgbWV0aG9kczoge1xuICAgIHZpZXdEYXkoeyBkYXRlIH0pIHtcbiAgICAgIHRoaXMuZm9jdXMgPSBkYXRlO1xuICAgICAgdGhpcy50eXBlID0gXCJkYXlcIjtcbiAgICB9LFxuICAgIGdldEV2ZW50Q29sb3IoZXZlbnQpIHtcbiAgICAgIHJldHVybiBldmVudC5jb2xvcjtcbiAgICB9LFxuICAgIHNldFRvZGF5KCkge1xuICAgICAgdGhpcy5mb2N1cyA9IFwiXCI7XG4gICAgfSxcbiAgICBwcmV2KCkge1xuICAgICAgdGhpcy4kcmVmcy5jYWxlbmRhci5wcmV2KCk7XG4gICAgfSxcbiAgICBuZXh0KCkge1xuICAgICAgdGhpcy4kcmVmcy5jYWxlbmRhci5uZXh0KCk7XG4gICAgfSxcblxuICAgIHNob3dFdmVudCh7IG5hdGl2ZUV2ZW50LCBldmVudCB9KSB7XG4gICAgICBjb25zdCBvcGVuID0gKCkgPT4ge1xuICAgICAgICB0aGlzLnNlbGVjdGVkRXZlbnQgPSBldmVudDtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEVsZW1lbnQgPSBuYXRpdmVFdmVudC50YXJnZXQ7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRPcGVuID0gdHJ1ZTtcbiAgICAgICAgfSwgMTApO1xuICAgICAgfTtcblxuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRPcGVuKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRPcGVuID0gZmFsc2U7XG4gICAgICAgIHNldFRpbWVvdXQob3BlbiwgMTApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3BlbigpO1xuICAgICAgfVxuXG4gICAgICBuYXRpdmVFdmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9LFxuICAgIHVwZGF0ZVJhbmdlKHsgc3RhcnQsIGVuZCB9KSB7XG4gICAgICBjb25zb2xlLmxvZyhzdGFydCk7XG4gICAgICBjb25zb2xlLmxvZyhlbmQpO1xuXG4gICAgICB0aGlzLm1pbiA9IG5ldyBEYXRlKGAke3N0YXJ0LmRhdGV9VDAwOjAwOjAwYCkuZ2V0VGltZSgpO1xuICAgICAgdGhpcy5tYXggPSBuZXcgRGF0ZShgJHtlbmQuZGF0ZX1UMjM6NTk6NTlgKS5nZXRUaW1lKCk7XG5cbiAgICAgIHRoaXMuc3RhcnRfZGF0ZSA9IHN0YXJ0LmRhdGU7XG4gICAgICB0aGlzLmVuZF9kYXRlID0gZW5kLmRhdGU7XG4gICAgICB0aGlzLnN0YXJ0KCk7XG4gICAgfSxcbiAgICBjb21wdGVzQmFuY2FpcmVzQ2hhbmdlKHZhbCkge1xuICAgICAgY29uc29sZS5sb2codGhpcy5ldmVudHNBbGwpO1xuXG4gICAgICBsZXQgZXZlbnRzREIgPSB0aGlzLmV2ZW50c0FsbC5maWx0ZXIoKGl0ZW0pID0+IHtcbiAgICAgICAgcmV0dXJuIHZhbC5pbmNsdWRlcyhpdGVtLmNvbXB0ZXNCYW5jYWlyZXNfaWRfKTtcbiAgICAgIH0pO1xuXG4gICAgICBsZXQgZXZlbnRzVFRDID0ge307XG4gICAgICBldmVudHNEQi5mb3JFYWNoKChlbGVtZW50KSA9PiB7XG4gICAgICAgIGlmIChldmVudHNUVENbZWxlbWVudC5zdGFydF0gPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgZXZlbnRzVFRDW2VsZW1lbnQuc3RhcnRdID0ge1xuICAgICAgICAgICAgbmFtZTogXCJUT1RBTCBUVENcIixcbiAgICAgICAgICAgIGNvbG9yOiBcImluZGlnb1wiLFxuICAgICAgICAgICAgc3RhcnQ6IGVsZW1lbnQuc3RhcnQsXG4gICAgICAgICAgICBlbmQ6IGVsZW1lbnQuc3RhcnQsXG4gICAgICAgICAgICB0cl90YWJsZV86IFtcImZhY3R1cmVzVmVudGVzXCIsIFwibW9udGFudFJlZ2xlbWVudFwiXSxcbiAgICAgICAgICAgIHRkX3RhYmxlXzogW10sXG4gICAgICAgICAgICBtb250YW50VHRjXzogMCxcbiAgICAgICAgICAgIGNsaWVudF86IFwiXCIsXG4gICAgICAgICAgICBjb21wdGVzQmFuY2FpcmVzXzogXCJcIixcbiAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHR0YyA9XG4gICAgICAgICAgZXZlbnRzVFRDW2VsZW1lbnQuc3RhcnRdW1wibW9udGFudFR0Y19cIl0gKiAxICtcbiAgICAgICAgICBlbGVtZW50W1wibW9udGFudFR0Y19cIl0gKiAxO1xuXG4gICAgICAgIGV2ZW50c1RUQ1tlbGVtZW50LnN0YXJ0XVtcIm1vbnRhbnRUdGNfXCJdID0gdHRjLnRvRml4ZWQoMik7XG4gICAgICAgIGV2ZW50c1RUQ1tlbGVtZW50LnN0YXJ0XVtcImNvbXB0ZXNCYW5jYWlyZXNfXCJdID1cbiAgICAgICAgICB0dGMudG9Mb2NhbGVTdHJpbmcodW5kZWZpbmVkLCB7XG4gICAgICAgICAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDIsXG4gICAgICAgICAgfSkgKyBcIiBESFwiO1xuICAgICAgICBldmVudHNUVENbZWxlbWVudC5zdGFydF1bXCJuYW1lXCJdID1cbiAgICAgICAgICBcIlRPVEFMIFRUQyA6IFwiICtcbiAgICAgICAgICB0dGMudG9Mb2NhbGVTdHJpbmcodW5kZWZpbmVkLCB7XG4gICAgICAgICAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDIsXG4gICAgICAgICAgfSkgK1xuICAgICAgICAgIFwiIERIIFwiO1xuICAgICAgICBldmVudHNUVENbZWxlbWVudC5zdGFydF1bXCJ0ZF90YWJsZV9cIl0ucHVzaCh7XG4gICAgICAgICAgYTogZWxlbWVudC5uYW1lLFxuICAgICAgICAgIGI6IGVsZW1lbnQubW9udGFudFR0Y18sXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICAgIGxldCBldmVudHMgPSBbXTtcbiAgICAgIHRoaXMuZXZlbnRzVFRDID0gZXZlbnRzVFRDO1xuICAgICAgZm9yIChsZXQga2V5IGluIGV2ZW50c1RUQykge1xuICAgICAgICBldmVudHMucHVzaChldmVudHNUVENba2V5XSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZXZlbnRzID0gZXZlbnRzLmNvbmNhdChldmVudHNEQik7XG5cbiAgICAgIGNvbnNvbGUubG9nKHRoaXMuZXZlbnRzKTtcbiAgICAgIHRoaXMuY2FsY3VsX3RvdGFsX3R0Y18oKTtcbiAgICB9LFxuICAgIGNhbGN1bF90b3RhbF90dGNfKCkge1xuICAgICAgbGV0IG1pbiA9IHRoaXMubWluO1xuICAgICAgbGV0IG1heCA9IHRoaXMubWF4O1xuXG4gICAgICBjb25zb2xlLmxvZyhtaW4pO1xuICAgICAgY29uc29sZS5sb2cobWF4KTtcbiAgICAgIGxldCAkVG90YWxfVFRDID0gMDtcbiAgICAgIGZvciAoY29uc3Qga2V5IGluIHRoaXMuZXZlbnRzVFRDKSB7XG4gICAgICAgIGNvbnN0IFRpbWVfVFRDID0gbmV3IERhdGUoYCR7a2V5fVQwMDowMDowMGApLmdldFRpbWUoKTtcblxuICAgICAgICBpZiAoVGltZV9UVEMgPj0gbWluICYmIFRpbWVfVFRDIDw9IG1heCkge1xuICAgICAgICAgICRUb3RhbF9UVEMgPSAkVG90YWxfVFRDICsgdGhpcy5ldmVudHNUVENba2V5XVtcIm1vbnRhbnRUdGNfXCJdICogMTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY29uc29sZS5sb2coJFRvdGFsX1RUQyk7XG4gICAgICB0aGlzLlRvdGFsX1RUQyA9ICRUb3RhbF9UVEMudG9Mb2NhbGVTdHJpbmcodW5kZWZpbmVkLCB7XG4gICAgICAgIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMixcbiAgICAgIH0pO1xuICAgIH0sXG5cbiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgY291bnQocGF0aHMpIHtcbiAgICAgIGlmICh0aGlzLnN0YXJ0X2RhdGUgPT0gdGhpcy5lbmRfZGF0ZSkge1xuICAgICAgICB0aGlzLmNhbGN1bF90b3RhbF90dGNfKCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgbGV0IHNlYXJjaCA9IFwiPmRhdGU9PT1cIiArIHRoaXMuc3RhcnRfZGF0ZSArIFwiflwiICsgdGhpcy5lbmRfZGF0ZTtcblxuICAgICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICBvcHRpb25zRGF0YVRhYmxlOiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgZ3JvdXBCeTogW10sXG4gICAgICAgICAgZ3JvdXBEZXNjOiBbXSxcbiAgICAgICAgICBpdGVtc1BlclBhZ2U6IC0xLFxuICAgICAgICAgIG11bHRpU29ydDogZmFsc2UsXG4gICAgICAgICAgbXVzdFNvcnQ6IGZhbHNlLFxuICAgICAgICAgIHBhZ2U6IDEsXG4gICAgICAgICAgc29ydEJ5OiBbXSxcbiAgICAgICAgICBzb3J0RGVzYzogW10sXG4gICAgICAgIH0pLFxuICAgICAgICBzZWFyY2hEYXRhVGFibGU6IEpTT04uc3RyaW5naWZ5KHNlYXJjaCksXG4gICAgICAgIEF0dHJpYnV0ZXNUYWJsZUhpZGU6IFwiXCIsXG4gICAgICB9O1xuICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgIHRoaXMuY29tcHRlc0JhbmNhaXJlc0l0ZW1zID0gW107XG4gICAgICB0aGlzLmV2ZW50c0FsbCA9IFtdO1xuICAgICAgdGhpcy5ldmVudHMgPSBbXTtcbiAgICAgIHRoaXMuZXZlbnRzVFRDID0ge307XG4gICAgICB0aGlzLlRvdGFsX1RUQyA9IDA7XG4gICAgICBsZXQgcGF0aDEgPSBwYXRoc1t0aGlzLmNvbnRyb2xsZXJfcm9vdF8xXTtcbiAgICAgIGlmIChwYXRoMSAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgYXhpb3NcbiAgICAgICAgICAuZ2V0KHRoaXMuQmFzZV91cmxfd2ViICsgcGF0aDEsIHtcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgQXV0aG9yaXphdGlvbjogbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJKV1RUb2tlblwiKSxcbiAgICAgICAgICAgIH0sIHBhcmFtczogcGFyYW1zXG4gICAgICAgICAgfSlcbiAgICAgICAgICAudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZXZlbnRzQWxsID0gW107XG5cbiAgICAgICAgICAgIGxldCBkYXRhID0gcmVzcG9uc2UuZGF0YVtcImRhdGFTZXRcIl07XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhkYXRhKTtcbiAgICAgICAgICAgIGRhdGEuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xuICAgICAgICAgICAgICBsZXQgZXZlbnQgPSB7fTtcblxuICAgICAgICAgICAgICBsZXQgcmVsZXZlcyA9IGVsZW1lbnRbXCJyZWxldmVSZWNldHRlc1wiXVtcImRhdGFTZXRcIl07XG4gICAgICAgICAgICAgIGxldCBpbmZvcmVsZXZlcyA9IFtdO1xuICAgICAgICAgICAgICBsZXQgaSA9IDA7XG4gICAgICAgICAgICAgIHJlbGV2ZXMuZm9yRWFjaCgocmVsZXZlKSA9PiB7XG4gICAgICAgICAgICAgICAgaSsrO1xuICAgICAgICAgICAgICAgIGluZm9yZWxldmVzLnB1c2goe1xuICAgICAgICAgICAgICAgICAga2V5OiBpLFxuICAgICAgICAgICAgICAgICAgYTogcmVsZXZlW1wiZmFjdHVyZXNWZW50ZXNcIl0sXG4gICAgICAgICAgICAgICAgICBiOiByZWxldmVbXCJtb250YW50UmVnbGVtZW50XCJdLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICBldmVudFtcInRkX3RhYmxlX1wiXSA9IGluZm9yZWxldmVzO1xuICAgICAgICAgICAgICBldmVudFtcInRyX3RhYmxlX1wiXSA9IFtcImZhY3R1cmVzVmVudGVzXCIsIFwibW9udGFudFJlZ2xlbWVudFwiXTtcblxuICAgICAgICAgICAgICBldmVudFtcIl9pZF9cIl0gPSBlbGVtZW50LmlkO1xuICAgICAgICAgICAgICBldmVudFtcInN0YXJ0XCJdID0gZWxlbWVudC5kYXRlO1xuICAgICAgICAgICAgICBldmVudFtcImVuZFwiXSA9IGVsZW1lbnQuZGF0ZTtcblxuICAgICAgICAgICAgICBldmVudFtcImNvbXB0ZXNCYW5jYWlyZXNfXCJdID0gZWxlbWVudC5jb21wdGVzQmFuY2FpcmVzO1xuICAgICAgICAgICAgICBldmVudFtcImNvbXB0ZXNCYW5jYWlyZXNfaWRfXCJdID0gZWxlbWVudC5jb21wdGVzQmFuY2FpcmVzX2lkO1xuXG4gICAgICAgICAgICAgIGV2ZW50W1wiY29sb3JcIl0gPSBcInRlYWwgZGFya2VuLTNcIlxuXG4gICAgICAgICAgICAgIGlmIChlbGVtZW50W1wic3RhdHV0XCJdID09IFwiZW5hdHRlbnRlXCIpIHtcbiAgICAgICAgICAgICAgICBldmVudFtcImNvbG9yXCJdID0gXCJlcnJvclwiXG4gICAgICAgICAgICAgIH1cblxuXG4gICAgICAgICAgICAgIC8vIHV0aWxbXCJjb2xvclwiXVtcInZhbHVlQ29sb3JcIl1bZWxlbWVudC5jb21wdGVzQmFuY2FpcmVzX2lkXTtcblxuICAgICAgICAgICAgICBldmVudFtcImNvbnRyb2xsZXJfcm9vdF9cIl0gPSB0aGlzLmNvbnRyb2xsZXJfcm9vdF8xO1xuICAgICAgICAgICAgICBldmVudFtcImNsaWVudF9cIl0gPSBlbGVtZW50W1wiY2xpZW50XCJdO1xuICAgICAgICAgICAgICBldmVudFtcInJlY2V0dGVzT1JkZXBlbnNlc19cIl0gPSBcInJlY2V0dGVzXCI7XG4gICAgICAgICAgICAgIGV2ZW50W1wibW9kZVBhaWVtZW50X1wiXSA9IGVsZW1lbnRbXCJtb2RlUGFpZW1lbnRcIl07XG4gICAgICAgICAgICAgIGV2ZW50W1wic3RhdHV0X1wiXSA9IGVsZW1lbnRbXCJzdGF0dXRcIl07XG4gICAgICAgICAgICAgIGV2ZW50W1wiY2F0ZWdvcmllc3JlY2V0dGVzT1JkZXBlbnNlc19cIl0gPVxuICAgICAgICAgICAgICAgIGVsZW1lbnRbXCJjYXRlZ29yaWVzcmVjZXR0ZXNcIl07XG5cbiAgICAgICAgICAgICAgZXZlbnRbXCJtb250YW50VHRjX1wiXSA9IGVsZW1lbnRbXCJtb250YW50XCJdLnRvTG9jYWxlU3RyaW5nKFxuICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDIsXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICApO1xuXG5cbiAgICAgICAgICAgICAgZXZlbnRbXCJuYW1lXCJdID0gZWxlbWVudFtcInVzZXJcIl0gKyBcIiBcIiArIGVsZW1lbnRbXCJ0b1N0cmluZ1wiXTtcbiAgICAgICAgICAgICAgaWYgKGVsZW1lbnRbXCJzdGF0dXRcIl0gPT0gXCJlbmF0dGVudGVcIikge1xuICAgICAgICAgICAgICAgIGV2ZW50W1wibmFtZVwiXSA9IFwi4pqg77iPXCIgKyBldmVudFtcInJlY2V0dGVzT1JkZXBlbnNlc19cIl0gKyBcIiAgXCIgKyBldmVudFtcIm5hbWVcIl07XG4gICAgICAgICAgICAgIH1cblxuXG4gICAgICAgICAgICAgIHRoaXMuZXZlbnRzQWxsLnB1c2goZXZlbnQpO1xuXG4gICAgICAgICAgICAgIHRoaXMuY29tcHRlc0JhbmNhaXJlc0l0ZW1zLnB1c2goe1xuICAgICAgICAgICAgICAgIHRleHQ6IGVsZW1lbnQuY29tcHRlc0JhbmNhaXJlcyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogZWxlbWVudC5jb21wdGVzQmFuY2FpcmVzX2lkLFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgLy8gY2xvbmUgYXJyYXlcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4gICAgICAgICAgICBsZXQgcGF0aDIgPSBwYXRoc1t0aGlzLmNvbnRyb2xsZXJfcm9vdF8yXTtcbiAgICAgICAgICAgIGF4aW9zXG4gICAgICAgICAgICAgIC5nZXQodGhpcy5CYXNlX3VybF93ZWIgKyBwYXRoMiwge1xuICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAgIEF1dGhvcml6YXRpb246IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiSldUVG9rZW5cIiksXG4gICAgICAgICAgICAgICAgfSwgcGFyYW1zOiBwYXJhbXNcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG5cbiAgICAgICAgICAgICAgICBsZXQgZGF0YSA9IHJlc3BvbnNlLmRhdGFbXCJkYXRhU2V0XCJdO1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGRhdGEpO1xuXG4gICAgICAgICAgICAgICAgZGF0YS5mb3JFYWNoKChlbGVtZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICBsZXQgZXZlbnQgPSB7fTtcblxuICAgICAgICAgICAgICAgICAgbGV0IHJlbGV2ZXMgPSBlbGVtZW50W1wicmVsZXZlRGVwZW5zZXNcIl1bXCJkYXRhU2V0XCJdO1xuICAgICAgICAgICAgICAgICAgbGV0IGluZm9yZWxldmVzID0gW107XG4gICAgICAgICAgICAgICAgICBsZXQgaSA9IDA7XG4gICAgICAgICAgICAgICAgICByZWxldmVzLmZvckVhY2goKHJlbGV2ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpKys7XG4gICAgICAgICAgICAgICAgICAgIGluZm9yZWxldmVzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgIGtleTogaSxcbiAgICAgICAgICAgICAgICAgICAgICBhOiByZWxldmVbXCJmYWN0dXJlc0FjaGF0c1wiXSxcbiAgICAgICAgICAgICAgICAgICAgICBiOiByZWxldmVbXCJtb250YW50UmVnbGVtZW50XCJdLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICBldmVudFtcInRkX3RhYmxlX1wiXSA9IGluZm9yZWxldmVzO1xuICAgICAgICAgICAgICAgICAgZXZlbnRbXCJ0cl90YWJsZV9cIl0gPSBbXCJmYWN0dXJlc0FjaGF0c1wiLCBcIm1vbnRhbnRSZWdsZW1lbnRcIl07XG5cbiAgICAgICAgICAgICAgICAgIGV2ZW50W1wiX2lkX1wiXSA9IGVsZW1lbnQuaWQ7XG4gICAgICAgICAgICAgICAgICBldmVudFtcInN0YXJ0XCJdID0gZWxlbWVudC5kYXRlO1xuICAgICAgICAgICAgICAgICAgZXZlbnRbXCJlbmRcIl0gPSBlbGVtZW50LmRhdGU7XG5cbiAgICAgICAgICAgICAgICAgIGV2ZW50W1wiY29tcHRlc0JhbmNhaXJlc19cIl0gPSBlbGVtZW50LmNvbXB0ZXNCYW5jYWlyZXM7XG4gICAgICAgICAgICAgICAgICBldmVudFtcImNvbXB0ZXNCYW5jYWlyZXNfaWRfXCJdID1cbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5jb21wdGVzQmFuY2FpcmVzX2lkO1xuXG4gICAgICAgICAgICAgICAgICBldmVudFtcImNvbG9yXCJdID0gXCJibHVlXCJcbiAgICAgICAgICAgICAgICAgIGlmIChlbGVtZW50W1wic3RhdHV0XCJdID09IFwiZW5hdHRlbnRlXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgZXZlbnRbXCJjb2xvclwiXSA9IFwiZXJyb3JcIlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgLy91dGlsW1wiY29sb3JcIl1bXCJ2YWx1ZUNvbG9yXCJdW2VsZW1lbnQuY29tcHRlc0JhbmNhaXJlc19pZF07XG5cbiAgICAgICAgICAgICAgICAgIGV2ZW50W1wiY29udHJvbGxlcl9yb290X1wiXSA9IHRoaXMuY29udHJvbGxlcl9yb290XzI7XG4gICAgICAgICAgICAgICAgICBldmVudFtcImNsaWVudF9cIl0gPSBlbGVtZW50W1wiZm91cm5pc3NldXJcIl07XG4gICAgICAgICAgICAgICAgICBldmVudFtcInJlY2V0dGVzT1JkZXBlbnNlc19cIl0gPSBcImRlcGVuc2VzXCI7XG4gICAgICAgICAgICAgICAgICBldmVudFtcIm1vZGVQYWllbWVudF9cIl0gPSBlbGVtZW50W1wibW9kZVBhaWVtZW50XCJdO1xuICAgICAgICAgICAgICAgICAgZXZlbnRbXCJzdGF0dXRfXCJdID0gZWxlbWVudFtcInN0YXR1dFwiXTtcbiAgICAgICAgICAgICAgICAgIGV2ZW50W1wiY2F0ZWdvcmllc3JlY2V0dGVzT1JkZXBlbnNlc19cIl0gPVxuICAgICAgICAgICAgICAgICAgICBlbGVtZW50W1wiY2F0ZWdvcmllc2RlcGVuc2VzXCJdO1xuXG4gICAgICAgICAgICAgICAgICBldmVudFtcIm1vbnRhbnRUdGNfXCJdID0gLTEgKiBlbGVtZW50W1wibW9udGFudFwiXTtcbiAgICAgICAgICAgICAgICAgIGV2ZW50W1wibmFtZVwiXSA9IGVsZW1lbnRbXCJ1c2VyXCJdICsgXCIgXCIgKyBlbGVtZW50W1widG9TdHJpbmdcIl07XG4gICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudFtcInN0YXR1dFwiXSA9PSBcImVuYXR0ZW50ZVwiKSB7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50W1wibmFtZVwiXSA9IFwi4pqg77iPXCIgKyBldmVudFtcInJlY2V0dGVzT1JkZXBlbnNlc19cIl0gKyBcIiBcIiArIGV2ZW50W1wibmFtZVwiXTtcbiAgICAgICAgICAgICAgICAgIH1cblxuXG4gICAgICAgICAgICAgICAgICB0aGlzLmV2ZW50c0FsbC5wdXNoKGV2ZW50KTtcblxuICAgICAgICAgICAgICAgICAgdGhpcy5jb21wdGVzQmFuY2FpcmVzSXRlbXMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIHRleHQ6IGVsZW1lbnQuY29tcHRlc0JhbmNhaXJlcyxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGVsZW1lbnQuY29tcHRlc0JhbmNhaXJlc19pZCxcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgLy8gY2xvbmUgYXJyYXlcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIHRoaXMuZXZlbnRzID0gWy4uLnRoaXMuZXZlbnRzQWxsXTtcblxuICAgICAgICAgICAgICAgIHRoaXMuY2FsY3VsX3RvdGFsX3R0Y18oKTtcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICAgICAgICB9KVxuICAgICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICBzaG93SXRlbShpZCwgY29udHJvbGxlcl9yb290KSB7XG4gICAgICB0aGlzLiRyb3V0ZXIucHVzaCh7XG4gICAgICAgIG5hbWU6IGNvbnRyb2xsZXJfcm9vdCArIFwiX3VwZGF0ZVwiLFxuICAgICAgICBwYXJhbXM6IHsgaWQ6IGlkIH0sXG4gICAgICB9KTtcbiAgICB9LFxuICAgIGlzR3JhbnRlZChhdHRyaWJ1dGUsIGNvbnRyb2xsZXJfcm9vdCkge1xuICAgICAgcmV0dXJuIHRoaXMuJHN0b3JlLmdldHRlcnNbXCJzZWN1cml0eS9pc0dyYW50ZWRcIl0oXG4gICAgICAgIGF0dHJpYnV0ZSxcbiAgICAgICAgY29udHJvbGxlcl9yb290XG4gICAgICApO1xuICAgIH0sXG4gICAgc3RhcnQoKSB7XG4gICAgICB0aGlzLmNvdW50KHRoaXMucGF0aHNfc3RhdGlzdGlxdWVzKTtcbiAgICB9LFxuICB9LFxuXG4gIHdhdGNoOiB7XG4gICAgcGF0aHNfc3RhdGlzdGlxdWVzKCkge1xuICAgICAgdGhpcy5zdGFydCgpO1xuICAgIH0sXG4gIH0sXG4gIGNvbXB1dGVkOiB7XG4gICAgQmFzZV91cmxfd2ViKCkge1xuICAgICAgcmV0dXJuIHRoaXMuJHN0b3JlLmdldHRlcnNbXCJnZXRfQmFzZV91cmxcIl07XG4gICAgfSxcbiAgICBwYXRoc19zdGF0aXN0aXF1ZXMoKSB7XG4gICAgICByZXR1cm4gdGhpcy4kc3RvcmUuZ2V0dGVyc1tcImdldF9wYXRoc1wiXTtcbiAgICB9LFxuICB9LFxufTtcbjwvc2NyaXB0PlxuPHN0eWxlIHNjb3BlZD5cbi52LWNhbGVuZGFyLWRhaWx5X19zY3JvbGwtYXJlYSB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5cbi8qINin2YTYqtij2KvZitixINin2YTYqNi12LHZiiDZhNmE2KfZh9iq2LLYp9iyINiv2KfYrtmEINin2YTYudmG2KfYtdixICovXG4uc2hha2UtYnRuIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGZvbnQtc2l6ZTogMTZweDtcbiAgcGFkZGluZzogMTBweCAyMHB4O1xuICBhbmltYXRpb246IGJsaW5rIDFzIDFzIGVhc2Utb3V0IGluZmluaXRlO1xuICAvKiDYp9mE2YjZhdmK2LYg2KfZhNmF2LPYqtmF2LEgKi9cbn1cblxuLyog2K3YsdmD2Kkg2KfZhNin2YfYqtiy2KfYsiDYr9in2K7ZhCDYp9mE2LnZhtin2LXYsSAqL1xuLnNoYWtlLWJ0biBzcGFuLFxuLnNoYWtlLWJ0biB2LWljb24ge1xuICBhbmltYXRpb246IHNoYWtlIDFzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xufVxuXG4vKiDYrdix2YPYqSDYp9mE2KfZh9iq2LLYp9iyICjYudmG2K8g2KrYt9io2YrZgiDYp9mE2KfZh9iq2LLYp9iyINi52YTZiSDYp9mE2YbYtSDZiNin2YTYo9mK2YLZiNmG2Kkg2YHZgti3KSAqL1xuQGtleWZyYW1lcyBzaGFrZSB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7XG4gIH1cblxuICAyNSUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtM3B4KTtcbiAgfVxuXG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDNweCk7XG4gIH1cblxuICA3NSUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtM3B4KTtcbiAgfVxuXG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTtcbiAgfVxufVxuXG4vKiDYrdix2YPYqSDYp9mE2YjZhdmK2LYgKi9cbkBrZXlmcmFtZXMgYmxpbmsge1xuICAwJSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2U1NzM3MztcbiAgfVxuXG4gIDUwJSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2Y0NDMzNjtcbiAgfVxuXG4gIDEwMCUge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNlNTczNzM7XG4gIH1cbn1cbjwvc3R5bGU+XG4iLCI8dGVtcGxhdGU+XG4gIDxjYXJkLWNhcmRcbiAgICBcbiAgICA6Y2xvc2U9XCJjbG9zZVwiXG4gICAgQGNsb3NlPVwiY2xvc2VldmVudFwiXG4gICAgaWNvbj1cIm1kaS1jYWxlbmRhci1jaGVjay1vdXRsaW5lXCJcbiAgICBjb2xvcj1cIm9yYW5nZVwiXG4gICAgOnRpdGxlPVwiJHQoJ2VudHJlcG90Qm9uc3ZlbnRlcycpXCJcbiAgICBjbGFzcz1cInB4LTUgcHktM1wiXG4gID5cbiAgICA8di1yb3cgY2xhc3M9XCJmaWxsLWhlaWdodFwiPlxuICAgICAgPHYtY29sPlxuICAgICAgICA8di1zaGVldD5cbiAgICAgICAgICA8di10b29sYmFyLXRpdGxlIHYtaWY9XCIkcmVmcy5jYWxlbmRhclwiPlxuICAgICAgICAgICAge3sgJHJlZnMuY2FsZW5kYXIudGl0bGUgfX1cbiAgICAgICAgICA8L3YtdG9vbGJhci10aXRsZT5cbiAgICAgICAgPC92LXNoZWV0PlxuICAgICAgICA8di1zaGVldCBoZWlnaHQ9XCI4MFwiPlxuICAgICAgICAgIDx2LXRvb2xiYXIgZmxhdD5cbiAgICAgICAgICAgIDx2LWJ0blxuICAgICAgICAgICAgICA6bG9hZGluZz1cImxvYWRpbmdcIlxuICAgICAgICAgICAgICBvdXRsaW5lZFxuICAgICAgICAgICAgICBjbGFzcz1cIm1yLTRcIlxuICAgICAgICAgICAgICBjb2xvcj1cImdyZXkgZGFya2VuLTJcIlxuICAgICAgICAgICAgICBAY2xpY2s9XCJzZXRUb2RheVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7ICR0KFwiYXVqb3VyZCdodWlcIikgfX1cbiAgICAgICAgICAgIDwvdi1idG4+XG4gICAgICAgICAgICA8di1idG4gZmFiIHRleHQgc21hbGwgY29sb3I9XCJncmV5IGRhcmtlbi0yXCIgQGNsaWNrPVwicHJldlwiPlxuICAgICAgICAgICAgICA8di1pY29uIHNtYWxsPiBtZGktY2hldnJvbi1sZWZ0IDwvdi1pY29uPlxuICAgICAgICAgICAgPC92LWJ0bj5cbiAgICAgICAgICAgIDx2LWJ0biBmYWIgdGV4dCBzbWFsbCBjb2xvcj1cImdyZXkgZGFya2VuLTJcIiBAY2xpY2s9XCJuZXh0XCI+XG4gICAgICAgICAgICAgIDx2LWljb24gc21hbGw+IG1kaS1jaGV2cm9uLXJpZ2h0IDwvdi1pY29uPlxuICAgICAgICAgICAgPC92LWJ0bj5cblxuICAgICAgICAgICAgPHYtc3BhY2VyPjwvdi1zcGFjZXI+XG5cbiAgICAgICAgICAgIDx2LWF1dG9jb21wbGV0ZVxuICAgICAgICAgICAgICA6bG9hZGluZz1cImxvYWRpbmdcIlxuICAgICAgICAgICAgICBtdWx0aXBsZVxuICAgICAgICAgICAgICA6Y2xlYXJhYmxlPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIGxhYmVsPVwiZW50cmVwb3RcIlxuICAgICAgICAgICAgICBAY2hhbmdlPVwiZW50cmVwb3RDaGFuZ2VcIlxuICAgICAgICAgICAgICA6aXRlbXM9XCJlbnRyZXBvdEl0ZW1zXCJcbiAgICAgICAgICAgICAgaXRlbS10ZXh0PVwidGV4dFwiXG4gICAgICAgICAgICAgIGl0ZW0tdmFsdWU9XCJ2YWx1ZVwiXG4gICAgICAgICAgICAgIDptZXNzYWdlcz1cIicgIFRvdGFsX1RUQyA6ICAnICsgVG90YWxfVFRDICsgJyBESCdcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC92LWF1dG9jb21wbGV0ZT5cbiAgICAgICAgICAgIDx2LXNwYWNlcj48L3Ytc3BhY2VyPlxuICAgICAgICAgICAgPHYtbWVudSBib3R0b20gcmlnaHQgPlxuICAgICAgICAgICAgICA8dGVtcGxhdGUgdi1zbG90OmFjdGl2YXRvcj1cInsgb24sIGF0dHJzIH1cIj5cbiAgICAgICAgICAgICAgICA8di1idG4gb3V0bGluZWQgY29sb3I9XCJncmV5IGRhcmtlbi0yXCIgdi1iaW5kPVwiYXR0cnNcIiB2LW9uPVwib25cIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IHR5cGVUb0xhYmVsW3R5cGVdIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPHYtaWNvbiByaWdodD4gbWRpLW1lbnUtZG93biA8L3YtaWNvbj5cbiAgICAgICAgICAgICAgICA8L3YtYnRuPlxuICAgICAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICAgICAgICA8di1saXN0PlxuICAgICAgICAgICAgICAgIDx2LWxpc3QtaXRlbSBAY2xpY2s9XCJ0eXBlID0gJ2RheSdcIj5cbiAgICAgICAgICAgICAgICAgIDx2LWxpc3QtaXRlbS10aXRsZT4ge3sgJHQoXCJKb3VyXCIpIH19IDwvdi1saXN0LWl0ZW0tdGl0bGU+XG4gICAgICAgICAgICAgICAgPC92LWxpc3QtaXRlbT5cblxuICAgICAgICAgICAgICAgIDx2LWxpc3QtaXRlbSBAY2xpY2s9XCJ0eXBlID0gJ21vbnRoJ1wiPlxuICAgICAgICAgICAgICAgICAgPHYtbGlzdC1pdGVtLXRpdGxlPiB7eyAkdChcIk1vaXNcIikgfX0gPC92LWxpc3QtaXRlbS10aXRsZT5cbiAgICAgICAgICAgICAgICA8L3YtbGlzdC1pdGVtPlxuICAgICAgICAgICAgICA8L3YtbGlzdD5cbiAgICAgICAgICAgIDwvdi1tZW51PlxuICAgICAgICAgIDwvdi10b29sYmFyPlxuICAgICAgICA8L3Ytc2hlZXQ+XG5cbiAgICAgICAgPHYtc2hlZXQgaGVpZ2h0PVwiNjAwXCI+XG4gICAgICAgICAgPHYtY2FsZW5kYXJcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgOmxvY2FsZT1cIiR0KCdsb2NhbGUnKVwiXG4gICAgICAgICAgICByZWY9XCJjYWxlbmRhclwiXG4gICAgICAgICAgICB2LW1vZGVsPVwiZm9jdXNcIlxuICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgIDpldmVudHM9XCJldmVudHNcIlxuICAgICAgICAgICAgOmV2ZW50LWNvbG9yPVwiZ2V0RXZlbnRDb2xvclwiXG4gICAgICAgICAgICA6dHlwZT1cInR5cGVcIlxuICAgICAgICAgICAgQGNsaWNrOmV2ZW50PVwic2hvd0V2ZW50XCJcbiAgICAgICAgICAgIEBjbGljazptb3JlPVwidmlld0RheVwiXG4gICAgICAgICAgICBAY2xpY2s6ZGF0ZT1cInZpZXdEYXlcIlxuICAgICAgICAgICAgQGNoYW5nZT1cInVwZGF0ZVJhbmdlXCJcbiAgICAgICAgICA+PC92LWNhbGVuZGFyPlxuXG4gICAgICAgICAgPHYtbWVudVxuICAgICAgICAgICAgdi1tb2RlbD1cInNlbGVjdGVkT3BlblwiXG4gICAgICAgICAgICA6Y2xvc2Utb24tY29udGVudC1jbGljaz1cImZhbHNlXCJcbiAgICAgICAgICAgIDphY3RpdmF0b3I9XCJzZWxlY3RlZEVsZW1lbnRcIlxuICAgICAgICAgICAgb2Zmc2V0LXhcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8di1jYXJkIGNvbG9yPVwiZ3JleSBsaWdodGVuLTRcIiBtaW4td2lkdGg9XCIzNTBweFwiIGZsYXQ+XG4gICAgICAgICAgICAgIDx2LXRvb2xiYXIgOmNvbG9yPVwic2VsZWN0ZWRFdmVudC5jb2xvclwiIGRhcms+XG4gICAgICAgICAgICAgICAgPHYtYnRuXG4gICAgICAgICAgICAgICAgICB2LWlmPVwic2VsZWN0ZWRFdmVudC5faWRfID4gMFwiXG4gICAgICAgICAgICAgICAgICBpY29uXG4gICAgICAgICAgICAgICAgICBAY2xpY2s9XCJzaG93SXRlbShzZWxlY3RlZEV2ZW50Ll9pZF8pXCJcbiAgICAgICAgICAgICAgICAgIHYtc2hvdz1cImlzR3JhbnRlZCgndmlldycpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8di1pY29uPm1kaS12aWV3LWNhcm91c2VsPC92LWljb24+XG4gICAgICAgICAgICAgICAgPC92LWJ0bj5cblxuICAgICAgICAgICAgICAgIDx2LXRvb2xiYXItdGl0bGUgdi1odG1sPVwic2VsZWN0ZWRFdmVudC5uYW1lXCI+IDwvdi10b29sYmFyLXRpdGxlPlxuICAgICAgICAgICAgICAgIDx2LXNwYWNlcj48L3Ytc3BhY2VyPlxuXG4gICAgICAgICAgICAgICAgPHYtYnRuIGljb24gQGNsaWNrPVwic2VsZWN0ZWRPcGVuID0gZmFsc2VcIj5cbiAgICAgICAgICAgICAgICAgIDx2LWljb24+bWRpLWNsb3NlPC92LWljb24+XG4gICAgICAgICAgICAgICAgPC92LWJ0bj5cbiAgICAgICAgICAgICAgPC92LXRvb2xiYXI+XG4gICAgICAgICAgICAgIDx2LWNhcmQtdGV4dD5cbiAgICAgICAgICAgICAgICA8di10b29sYmFyIGZsYXQ+XG4gICAgICAgICAgICAgICAgICA8di10b29sYmFyLXRpdGxlPlxuICAgICAgICAgICAgICAgICAgICB7eyBzZWxlY3RlZEV2ZW50LmNsaWVudF8gfX1cbiAgICAgICAgICAgICAgICAgIDwvdi10b29sYmFyLXRpdGxlPlxuXG4gICAgICAgICAgICAgICAgICA8di1zcGFjZXI+PC92LXNwYWNlcj5cbiAgICAgICAgICAgICAgICAgIDx2LWNoaXAgY2xhc3M9XCJtYS0yXCIgOmNvbG9yPVwic2VsZWN0ZWRFdmVudC5jb2xvclwiIGRhcms+XG4gICAgICAgICAgICAgICAgICAgIHt7IHNlbGVjdGVkRXZlbnQuZW50cmVwb3RfIH19XG4gICAgICAgICAgICAgICAgICA8L3YtY2hpcD5cbiAgICAgICAgICAgICAgICA8L3YtdG9vbGJhcj5cblxuICAgICAgICAgICAgICAgIDx2LXNpbXBsZS10YWJsZSBkZW5zZSBjb2xvcj1cImdyZXkgbGlnaHRlbi00XCI+XG4gICAgICAgICAgICAgICAgICA8dGVtcGxhdGUgdi1zbG90OmRlZmF1bHQ+XG4gICAgICAgICAgICAgICAgICAgIDx0aGVhZD5cbiAgICAgICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJ0ZXh0LWxlZnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJHQoc2VsZWN0ZWRFdmVudC50cl90YWJsZV9bMF0pIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwidGV4dC1sZWZ0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICR0KHNlbGVjdGVkRXZlbnQudHJfdGFibGVfWzFdKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPlxuICAgICAgICAgICAgICAgICAgICA8dGJvZHk+XG4gICAgICAgICAgICAgICAgICAgICAgPHRyXG4gICAgICAgICAgICAgICAgICAgICAgICB2LWZvcj1cIml0ZW0gaW4gc2VsZWN0ZWRFdmVudC50ZF90YWJsZV9cIlxuICAgICAgICAgICAgICAgICAgICAgICAgOmtleT1cIml0ZW0ua2V5XCJcbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgaXRlbS5hIH19PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyBpdGVtLmIgfX08L3RkPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDwvdi1zaW1wbGUtdGFibGU+XG5cbiAgICAgICAgICAgICAgICA8aDQgcmlnaHQ+TW9udGFudCBUVEMgOiB7eyBzZWxlY3RlZEV2ZW50Lm1vbnRhbnRUdGNfIH19IERIPC9oND5cbiAgICAgICAgICAgICAgPC92LWNhcmQtdGV4dD5cbiAgICAgICAgICAgIDwvdi1jYXJkPlxuICAgICAgICAgIDwvdi1tZW51PlxuICAgICAgICA8L3Ytc2hlZXQ+XG4gICAgICA8L3YtY29sPlxuICAgIDwvdi1yb3c+XG4gIDwvY2FyZC1jYXJkPlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdD5cbmltcG9ydCBheGlvcyBmcm9tIFwiYXhpb3NcIjtcblxuaW1wb3J0IHV0aWwgZnJvbSBcIkAvdXRpbFwiO1xuXG5pbXBvcnQgd2lkZ2V0c01peGluIGZyb20gXCIuLi93aWRnZXRzTWl4aW5cIjtcblxuZXhwb3J0IGRlZmF1bHQge1xuICBtaXhpbnM6IFt3aWRnZXRzTWl4aW5dLFxuICBkYXRhOiAoKSA9PiAoe1xuICAgIGVudHJlcG90SXRlbXM6IFtdLFxuICAgIGNvbnRyb2xsZXJfcm9vdDogXCJib25zdmVudGVzXCIsXG4gICAgZm9jdXM6IFwiXCIsXG4gICAgdHlwZTogXCJtb250aFwiLFxuXG4gICAgc2VsZWN0ZWRFdmVudDoge30sXG4gICAgc2VsZWN0ZWRFbGVtZW50OiBudWxsLFxuICAgIHNlbGVjdGVkT3BlbjogZmFsc2UsXG4gICAgZXZlbnRzQWxsOiBbXSxcbiAgICBldmVudHM6IFtdLFxuICAgIGV2ZW50c1RUQzoge30sXG4gICAgVG90YWxfVFRDOiAwLFxuICAgIHR5cGVUb0xhYmVsOiB7XG4gICAgICBtb250aDogXCJNb2lzXCIsXG5cbiAgICAgIGRheTogXCJKb3VyXCIsXG4gICAgfSxcbiAgICBtaW46IDAsXG4gICAgbWF4OiAwLFxuICAgIHN0YXJ0X2RhdGU6IDAsXG4gICAgZW5kX2RhdGU6IDAsXG4gICAgbG9hZGluZzogZmFsc2UsXG4gIH0pLFxuICBtb3VudGVkKCkge1xuICAgIHRoaXMuJHJlZnMuY2FsZW5kYXIuY2hlY2tDaGFuZ2UoKTtcbiAgICAvLyB0aGlzLnN0YXJ0KCk7XG4gIH0sXG4gIG1ldGhvZHM6IHtcbiAgICB2aWV3RGF5KHsgZGF0ZSB9KSB7XG4gICAgICB0aGlzLmZvY3VzID0gZGF0ZTtcbiAgICAgIHRoaXMudHlwZSA9IFwiZGF5XCI7XG4gICAgfSxcbiAgICBnZXRFdmVudENvbG9yKGV2ZW50KSB7XG4gICAgICByZXR1cm4gZXZlbnQuY29sb3I7XG4gICAgfSxcbiAgICBzZXRUb2RheSgpIHtcbiAgICAgIHRoaXMuZm9jdXMgPSBcIlwiO1xuICAgIH0sXG4gICAgcHJldigpIHtcbiAgICAgIHRoaXMuJHJlZnMuY2FsZW5kYXIucHJldigpO1xuICAgIH0sXG4gICAgbmV4dCgpIHtcbiAgICAgIHRoaXMuJHJlZnMuY2FsZW5kYXIubmV4dCgpO1xuICAgIH0sXG5cbiAgICBzaG93RXZlbnQoeyBuYXRpdmVFdmVudCwgZXZlbnQgfSkge1xuICAgICAgY29uc3Qgb3BlbiA9ICgpID0+IHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEV2ZW50ID0gZXZlbnQ7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRFbGVtZW50ID0gbmF0aXZlRXZlbnQudGFyZ2V0O1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkT3BlbiA9IHRydWU7XG4gICAgICAgIH0sIDEwKTtcbiAgICAgIH07XG5cbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkT3Blbikge1xuICAgICAgICB0aGlzLnNlbGVjdGVkT3BlbiA9IGZhbHNlO1xuICAgICAgICBzZXRUaW1lb3V0KG9wZW4sIDEwKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9wZW4oKTtcbiAgICAgIH1cblxuICAgICAgbmF0aXZlRXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfSxcbiAgICB1cGRhdGVSYW5nZSh7IHN0YXJ0LCBlbmQgfSkge1xuICAgICAgY29uc29sZS5sb2coc3RhcnQpO1xuICAgICAgY29uc29sZS5sb2coZW5kKTtcblxuICAgICAgdGhpcy5taW4gPSBuZXcgRGF0ZShgJHtzdGFydC5kYXRlfVQwMDowMDowMGApLmdldFRpbWUoKTtcbiAgICAgIHRoaXMubWF4ID0gbmV3IERhdGUoYCR7ZW5kLmRhdGV9VDIzOjU5OjU5YCkuZ2V0VGltZSgpO1xuXG4gICAgICB0aGlzLnN0YXJ0X2RhdGUgPSBzdGFydC5kYXRlO1xuICAgICAgdGhpcy5lbmRfZGF0ZSA9IGVuZC5kYXRlO1xuICAgICAgdGhpcy5zdGFydCgpO1xuICAgIH0sXG4gICAgZW50cmVwb3RDaGFuZ2UodmFsKSB7XG4gICAgICBjb25zb2xlLmxvZyh0aGlzLmV2ZW50c0FsbCk7XG5cbiAgICAgIGxldCBldmVudHNEQiA9IHRoaXMuZXZlbnRzQWxsLmZpbHRlcigoaXRlbSkgPT4ge1xuICAgICAgICByZXR1cm4gdmFsLmluY2x1ZGVzKGl0ZW0uZW50cmVwb3RfaWRfKTtcbiAgICAgIH0pO1xuXG4gICAgICBsZXQgZXZlbnRzVFRDID0ge307XG4gICAgICBldmVudHNEQi5mb3JFYWNoKChlbGVtZW50KSA9PiB7XG4gICAgICAgIGlmIChldmVudHNUVENbZWxlbWVudC5zdGFydF0gPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgZXZlbnRzVFRDW2VsZW1lbnQuc3RhcnRdID0ge1xuICAgICAgICAgICAgbmFtZTogXCJUT1RBTCBUVENcIixcbiAgICAgICAgICAgIGNvbG9yOiBcImluZGlnb1wiLFxuICAgICAgICAgICAgc3RhcnQ6IGVsZW1lbnQuc3RhcnQsXG4gICAgICAgICAgICBlbmQ6IGVsZW1lbnQuc3RhcnQsXG4gICAgICAgICAgICB0cl90YWJsZV86IFtcImJvbnN2ZW50ZXNcIiwgXCJtb250YW50VHRjXCJdLFxuICAgICAgICAgICAgdGRfdGFibGVfOiBbXSxcbiAgICAgICAgICAgIG1vbnRhbnRUdGNfOiAwLFxuICAgICAgICAgICAgY2xpZW50XzogXCJcIixcbiAgICAgICAgICAgIGVudHJlcG90XzogXCJcIixcbiAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHR0YyA9XG4gICAgICAgICAgZXZlbnRzVFRDW2VsZW1lbnQuc3RhcnRdW1wibW9udGFudFR0Y19cIl0gKiAxICtcbiAgICAgICAgICBlbGVtZW50W1wibW9udGFudFR0Y19cIl0gKiAxO1xuXG4gICAgICAgIGV2ZW50c1RUQ1tlbGVtZW50LnN0YXJ0XVtcIm1vbnRhbnRUdGNfXCJdID0gdHRjLnRvRml4ZWQoMik7XG4gICAgICAgIGV2ZW50c1RUQ1tlbGVtZW50LnN0YXJ0XVtcImVudHJlcG90X1wiXSA9XG4gICAgICAgICAgdHRjLnRvTG9jYWxlU3RyaW5nKHVuZGVmaW5lZCwge1xuICAgICAgICAgICAgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAyLFxuICAgICAgICAgIH0pICsgXCIgREhcIjtcbiAgICAgICAgZXZlbnRzVFRDW2VsZW1lbnQuc3RhcnRdW1wibmFtZVwiXSA9XG4gICAgICAgICAgXCJUT1RBTCBUVEMgOiBcIiArXG4gICAgICAgICAgdHRjLnRvTG9jYWxlU3RyaW5nKHVuZGVmaW5lZCwge1xuICAgICAgICAgICAgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAyLFxuICAgICAgICAgIH0pICtcbiAgICAgICAgICBcIiBESCBcIjtcbiAgICAgICAgZXZlbnRzVFRDW2VsZW1lbnQuc3RhcnRdW1widGRfdGFibGVfXCJdLnB1c2goe1xuICAgICAgICAgIGE6IGVsZW1lbnQubmFtZSxcbiAgICAgICAgICBiOiBlbGVtZW50Lm1vbnRhbnRUdGNfLFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgICBsZXQgZXZlbnRzID0gW107XG4gICAgICB0aGlzLmV2ZW50c1RUQyA9IGV2ZW50c1RUQztcbiAgICAgIGZvciAobGV0IGtleSBpbiBldmVudHNUVEMpIHtcbiAgICAgICAgZXZlbnRzLnB1c2goZXZlbnRzVFRDW2tleV0pO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmV2ZW50cyA9IGV2ZW50cy5jb25jYXQoZXZlbnRzREIpO1xuXG4gICAgICBjb25zb2xlLmxvZyh0aGlzLmV2ZW50cyk7XG4gICAgICB0aGlzLmNhbGN1bF90b3RhbF90dGNfKCk7XG4gICAgfSxcbiAgICBjYWxjdWxfdG90YWxfdHRjXygpIHtcbiAgICAgIGxldCBtaW4gPSB0aGlzLm1pbjtcbiAgICAgIGxldCBtYXggPSB0aGlzLm1heDtcblxuICAgICAgY29uc29sZS5sb2cobWluKTtcbiAgICAgIGNvbnNvbGUubG9nKG1heCk7XG4gICAgICBsZXQgJFRvdGFsX1RUQyA9IDA7XG4gICAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLmV2ZW50c1RUQykge1xuICAgICAgICBjb25zdCBUaW1lX1RUQyA9IG5ldyBEYXRlKGAke2tleX1UMDA6MDA6MDBgKS5nZXRUaW1lKCk7XG5cbiAgICAgICAgaWYgKFRpbWVfVFRDID49IG1pbiAmJiBUaW1lX1RUQyA8PSBtYXgpIHtcbiAgICAgICAgICAkVG90YWxfVFRDID0gJFRvdGFsX1RUQyArIHRoaXMuZXZlbnRzVFRDW2tleV1bXCJtb250YW50VHRjX1wiXSAqIDE7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNvbnNvbGUubG9nKCRUb3RhbF9UVEMpO1xuICAgICAgdGhpcy5Ub3RhbF9UVEMgPSAkVG90YWxfVFRDLnRvTG9jYWxlU3RyaW5nKHVuZGVmaW5lZCwge1xuICAgICAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDIsXG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIGNvdW50KHBhdGhzLCBjb250cm9sbGVyKSB7XG4gICAgICBsZXQgcGF0aCA9IHBhdGhzW2NvbnRyb2xsZXJdO1xuICAgICAgaWYgKHRoaXMuc3RhcnRfZGF0ZSA9PSB0aGlzLmVuZF9kYXRlKSB7XG4gICAgICAgIHRoaXMuY2FsY3VsX3RvdGFsX3R0Y18oKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBsZXQgc2VhcmNoID0gXCI+ZGF0ZT09PVwiICsgdGhpcy5zdGFydF9kYXRlICsgXCJ+XCIgKyB0aGlzLmVuZF9kYXRlO1xuXG4gICAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICAgIG9wdGlvbnNEYXRhVGFibGU6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICBncm91cEJ5OiBbXSxcbiAgICAgICAgICBncm91cERlc2M6IFtdLFxuICAgICAgICAgIGl0ZW1zUGVyUGFnZTogLTEsXG4gICAgICAgICAgbXVsdGlTb3J0OiBmYWxzZSxcbiAgICAgICAgICBtdXN0U29ydDogZmFsc2UsXG4gICAgICAgICAgcGFnZTogMSxcbiAgICAgICAgICBzb3J0Qnk6IFtdLFxuICAgICAgICAgIHNvcnREZXNjOiBbXSxcbiAgICAgICAgfSksXG4gICAgICAgIHNlYXJjaERhdGFUYWJsZTogSlNPTi5zdHJpbmdpZnkoc2VhcmNoKSxcbiAgICAgICAgQXR0cmlidXRlc1RhYmxlSGlkZTogXCJcIixcbiAgICAgIH07XG4gICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgdGhpcy5lbnRyZXBvdEl0ZW1zID0gW107XG4gICAgICB0aGlzLmV2ZW50c0FsbCA9IFtdO1xuICAgICAgdGhpcy5ldmVudHMgPSBbXTtcbiAgICAgIHRoaXMuZXZlbnRzVFRDID0ge307XG4gICAgICB0aGlzLlRvdGFsX1RUQyA9IDA7XG4gICAgICBpZiAocGF0aCAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgYXhpb3NcbiAgICAgICAgICAuZ2V0KHRoaXMuQmFzZV91cmxfd2ViICsgcGF0aCwgeyAgaGVhZGVyczoge1xuICAgICAgICAgIEF1dGhvcml6YXRpb246ICBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcIkpXVFRva2VuXCIpLFxuICAgICAgICB9LCBwYXJhbXM6IHBhcmFtcyB9KVxuICAgICAgICAgIC50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmV2ZW50c0FsbCA9IFtdO1xuXG4gICAgICAgICAgICBsZXQgZGF0YSA9IHJlc3BvbnNlLmRhdGFbXCJkYXRhU2V0XCJdO1xuXG4gICAgICAgICAgICBkYXRhLmZvckVhY2goKGVsZW1lbnQpID0+IHtcbiAgICAgICAgICAgICAgbGV0IGV2ZW50ID0ge307XG5cbiAgICAgICAgICAgICAgbGV0IHByb2R1aXRzID0gZWxlbWVudFtcInByb2R1aXRzQm9uc1ZlbnRlc1wiXVtcImRhdGFTZXRcIl07XG4gICAgICAgICAgICAgIGxldCBpbmZvcHJvZHVpdCA9IFtdO1xuICAgICAgICAgICAgICBsZXQgaSA9IDA7XG4gICAgICAgICAgICAgIHByb2R1aXRzLmZvckVhY2goKHByb2R1aXQpID0+IHtcbiAgICAgICAgICAgICAgICBpKys7XG4gICAgICAgICAgICAgICAgaW5mb3Byb2R1aXQucHVzaCh7XG4gICAgICAgICAgICAgICAgICBrZXk6IGksXG4gICAgICAgICAgICAgICAgICBhOiBwcm9kdWl0W1wicHJvZHVpdFwiXSxcbiAgICAgICAgICAgICAgICAgIGI6IHByb2R1aXRbXCJxdWFudGl0ZVwiXSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgZXZlbnRbXCJ0ZF90YWJsZV9cIl0gPSBpbmZvcHJvZHVpdDtcbiAgICAgICAgICAgICAgZXZlbnRbXCJ0cl90YWJsZV9cIl0gPSBbXCJwcm9kdWl0XCIsIFwicXVhbnRpdGVcIl07XG5cbiAgICAgICAgICAgICAgZXZlbnRbXCJfaWRfXCJdID0gZWxlbWVudC5pZDtcbiAgICAgICAgICAgICAgZXZlbnRbXCJzdGFydFwiXSA9IGVsZW1lbnQuZGF0ZTtcbiAgICAgICAgICAgICAgZXZlbnRbXCJlbmRcIl0gPSBlbGVtZW50LmRhdGU7XG5cbiAgICAgICAgICAgICAgZXZlbnRbXCJlbnRyZXBvdF9cIl0gPSBlbGVtZW50LmVudHJlcG90O1xuICAgICAgICAgICAgICBldmVudFtcImVudHJlcG90X2lkX1wiXSA9IGVsZW1lbnQuZW50cmVwb3RfaWQ7XG5cbiAgICAgICAgICAgICAgZXZlbnRbXCJjb2xvclwiXSA9IHV0aWxbXCJjb2xvclwiXVtcInZhbHVlQ29sb3JcIl1bZWxlbWVudC5lbnRyZXBvdF9pZF07XG5cbiAgICAgICAgICAgICAgZXZlbnRbXCJjbGllbnRfXCJdID0gZWxlbWVudFtcImNsaWVudFwiXTtcbiAgICAgICAgICAgICAgZXZlbnRbXCJtb250YW50VHRjX1wiXSA9IGVsZW1lbnRbXCJtb250YW50VHRjXCJdLnRvTG9jYWxlU3RyaW5nKFxuICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDIsXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICBldmVudFtcIm5hbWVcIl0gPSBlbGVtZW50W1widXNlclwiXSArIFwiIFwiICsgZWxlbWVudFtcInRvU3RyaW5nXCJdO1xuXG4gICAgICAgICAgICAgIHRoaXMuZXZlbnRzQWxsLnB1c2goZXZlbnQpO1xuXG4gICAgICAgICAgICAgIHRoaXMuZW50cmVwb3RJdGVtcy5wdXNoKHtcbiAgICAgICAgICAgICAgICB0ZXh0OiBlbGVtZW50LmVudHJlcG90LFxuICAgICAgICAgICAgICAgIHZhbHVlOiBlbGVtZW50LmVudHJlcG90X2lkLFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgLy8gY2xvbmUgYXJyYXlcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB0aGlzLmV2ZW50cyA9IFsuLi50aGlzLmV2ZW50c0FsbF07XG5cbiAgICAgICAgICAgIHRoaXMuY2FsY3VsX3RvdGFsX3R0Y18oKTtcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJwYXRoXCIpO1xuICAgICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICBzaG93SXRlbShpZCkge1xuICAgICAgdGhpcy4kcm91dGVyLnB1c2goe1xuICAgICAgICBuYW1lOiB0aGlzLmNvbnRyb2xsZXJfcm9vdCArIFwiX3Nob3dfaXRlbVwiLFxuICAgICAgICBwYXJhbXM6IHsgaWQ6IGlkIH0sXG4gICAgICB9KTtcbiAgICB9LFxuICAgIGlzR3JhbnRlZChhdHRyaWJ1dGUpIHtcbiAgICAgIHJldHVybiB0aGlzLiRzdG9yZS5nZXR0ZXJzW1wic2VjdXJpdHkvaXNHcmFudGVkXCJdKFxuICAgICAgICBhdHRyaWJ1dGUsXG4gICAgICAgIHRoaXMuY29udHJvbGxlcl9yb290XG4gICAgICApO1xuICAgIH0sXG4gICAgc3RhcnQoKSB7XG4gICAgICB0aGlzLmNvdW50KHRoaXMucGF0aHNfc3RhdGlzdGlxdWVzLCB0aGlzLmNvbnRyb2xsZXJfcm9vdCk7XG4gICAgfSxcbiAgfSxcblxuICB3YXRjaDoge1xuICAgIHBhdGhzX3N0YXRpc3RpcXVlcygpIHtcbiAgICAgIHRoaXMuc3RhcnQoKTtcbiAgICB9LFxuICB9LFxuICBjb21wdXRlZDoge1xuICAgIEJhc2VfdXJsX3dlYigpIHtcbiAgICAgIHJldHVybiB0aGlzLiRzdG9yZS5nZXR0ZXJzW1wiZ2V0X0Jhc2VfdXJsXCJdO1xuICAgIH0sXG4gICAgcGF0aHNfc3RhdGlzdGlxdWVzKCkge1xuICAgICAgcmV0dXJuIHRoaXMuJHN0b3JlLmdldHRlcnNbXCJnZXRfcGF0aHNcIl07XG4gICAgfSxcbiAgfSxcbn07XG48L3NjcmlwdD5cbjxzdHlsZSA+XG4udi1jYWxlbmRhci1kYWlseV9fc2Nyb2xsLWFyZWEge1xuICBkaXNwbGF5OiBub25lO1xufVxuPC9zdHlsZT4iLCI8dGVtcGxhdGU+XG4gIDxjYXJkLWNhcmQgOmNsb3NlPVwiY2xvc2VcIiBAY2xvc2U9XCJjbG9zZWV2ZW50XCIgaWNvbj1cIm1kaS1wYWNrYWdlLWRvd25cIiBjb2xvcj1cIm9yYW5nZVwiIDp0aXRsZT1cIiR0KCdpbnZlbnRhaXJlUGhvbmUnKVwiXG4gICAgY2xhc3M9XCJweC01IHB5LTNcIj5cbiAgICA8ZGl2IHYtaWY9XCJlbnRyZXBvdF9pZCA+IDBcIj5cbiAgICAgIDxpbnZlbnRhaXJlcGhvbmUtZW50cmVwb3QgQGNoYW5nZT1cInNlbGVjdGVkX0VudHJlcG90XCIgLz5cbiAgICAgIDxicj5cbiAgICAgIDx2LXJvdz5cbiAgICAgICAgPHYtY29sIGNvbHM9XCI1XCI+XG4gICAgICAgICAgPHYtYnRuIGRhcmsgY29sb3I9XCJwcmltYXJ5XCIgQGNsaWNrPVwiZ2V0X3NlY3RldXJzVXNlcnNcIj5cbiAgICAgICAgICAgIDx2LWljb24+bWRpLWNsb3VkLWRvd25sb2FkLW91dGxpbmU8L3YtaWNvbj5cbiAgICAgICAgICA8L3YtYnRuPjwvdi1jb2w+XG4gICAgICAgIDxzdHJvbmcgY2xhc3M9XCJyZWQtLXRleHQgdGV4dC0tbGlnaHRlbi0xXCI+IHt7IG1zZyB9fSA8L3N0cm9uZz5cbiAgICAgIDwvdi1yb3c+XG5cblxuXG4gICAgICA8di10YWJzIGNsYXNzPVwibXQtNlwiIHYtaWY9XCJtc2cgPT0gJydcIiB2LW1vZGVsPVwidGFiX1NlY3RldXJcIiBncm93IGNlbnRlci1hY3RpdmVcbiAgICAgICAgbmV4dC1pY29uPVwibWRpLWFycm93LXJpZ2h0LWJvbGQtYm94LW91dGxpbmVcIiBwcmV2LWljb249XCJtZGktYXJyb3ctbGVmdC1ib2xkLWJveC1vdXRsaW5lXCIgc2hvdy1hcnJvd3NcbiAgICAgICAgaWNvbnMtYW5kLXRleHQ+XG4gICAgICAgIDx2LXRhYnMtc2xpZGVyPjwvdi10YWJzLXNsaWRlcj5cblxuICAgICAgICA8di10YWIgdi1mb3I9XCIodXNlcnNMaXN0LCBrZXlzZWN0ZXVyKSBpbiBzZWN0ZXVyc1VzZXJzXCIgOmtleT1cImtleXNlY3RldXJcIiA6aHJlZj1cIicjdGFiLScgKyBrZXlzZWN0ZXVyXCI+XG4gICAgICAgICAgPHN0cm9uZyA6Y2xhc3M9XCJ1c2Vyc0xpc3RbdXNlcnNMaXN0Lmxlbmd0aCAtIDFdWydpZF91c2VyJ10gPT0gJydcbiAgICAgICAgICAgID8gJ3JlZC0tdGV4dCdcbiAgICAgICAgICAgIDogJydcbiAgICAgICAgICAgIFwiPlxuICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAga2V5c2VjdGV1ciA9PSBcImludmVudGFpcmVcIlxuICAgICAgICAgICAgICAgID8gXCJJbnZlbnRhaXJlXCJcbiAgICAgICAgICAgICAgICA6IFwiU2VjdGV1ciA6XCIgKyBrZXlzZWN0ZXVyXG4gICAgICAgICAgICB9fTwvc3Ryb25nPlxuICAgICAgICAgIDx2LWljb24geC1sYXJnZSA6Y29sb3I9XCJ1c2Vyc0xpc3RbdXNlcnNMaXN0Lmxlbmd0aCAtIDFdWydpZF91c2VyJ10gPT0gJycgPyAncmVkJyA6ICcnXG4gICAgICAgICAgICBcIiB2LWlmPVwidXNlcnNMaXN0W3VzZXJzTGlzdC5sZW5ndGggLSAxXVsnaWRfdXNlciddID09ICcnXCI+bWRpLWFsZXJ0LWRlY2FncmFtLW91dGxpbmU8L3YtaWNvbj5cbiAgICAgICAgICA8di1pY29uIHYtZWxzZT5tZGktY2hlY2stYm9sZDwvdi1pY29uPlxuICAgICAgICA8L3YtdGFiPlxuXG4gICAgICAgIDx2LXRhYnMtaXRlbXMgdi1tb2RlbD1cInRhYl9TZWN0ZXVyXCI+XG4gICAgICAgICAgPHYtdGFiLWl0ZW0gdi1mb3I9XCIodXNlcnNMaXN0LCBrZXlzZWN0ZXVyKSBpbiBzZWN0ZXVyc1VzZXJzXCIgOmtleT1cImtleXNlY3RldXJcIiA6dmFsdWU9XCIndGFiLScgKyBrZXlzZWN0ZXVyXCI+XG4gICAgICAgICAgICA8di1jYXJkIGZsYXQgbWluLWhlaWdodD1cIjEwMDBcIiA6ZWxldmF0aW9uPVwiMFwiPlxuICAgICAgICAgICAgICA8di1yb3cgY2xhc3M9XCJqdXN0aWZ5LWNlbnRlciBhbGlnbi1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICA8di1jb2wgY29scz1cIjExXCI+XG4gICAgICAgICAgICAgICAgICA8di1jYXJkIGNsYXNzPVwibXQtMTIgbWItMTJcIj5cbiAgICAgICAgICAgICAgICAgICAgPHYtY2FyZC10aXRsZT5cbiAgICAgICAgICAgICAgICAgICAgICA8di1yb3c+XG4gICAgICAgICAgICAgICAgICAgICAgICA8di1jb2wgY29scz1cIjNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHYtcm93PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHYtY29sIGNvbHM9XCI2XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8di1idG4gYmxvY2sgZGFyayBjb2xvcj1cImJsdWVcIiBAY2xpY2s9XCJnZXRfdG90YWxpbnZlbnRhaXJlXCI+e3sgaWRlbnRpZmlhbnQgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHYtaWNvbj5tZGktdXBkYXRlPC92LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3YtYnRuPjwvdi1jb2w+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvdi1yb3c+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3YtY29sPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHYtY29sIGNvbHM9XCIyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx2LWJ0biBzbWFsbCBjb2xvcj1cInN1Y2Nlc3NcIiBAY2xpY2s9XCJleGNlbGpzXCIgZmFiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2LWljb24+bWRpLW1pY3Jvc29mdC1leGNlbDwvdi1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3YtYnRuPjwvdi1jb2w+XG4gICAgICAgICAgICAgICAgICAgICAgICA8di1jb2wgY29scz1cIjJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHYtYnRuIHNtYWxsIGNvbG9yPVwiZXJyb3JcIiBAY2xpY2s9XCJyZW1vdmUoKVwiIGZhYiB2LWlmPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWRlbnRpZmlhbnQgIT0gJ2RpZmZlcmVuY2UnICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWRlbnRpZmlhbnQgIT0gJycgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWFudCAhPSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHYtaWNvbj5tZGktdHJhc2gtY2FuPC92LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvdi1idG4+PC92LWNvbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx2LWNvbCBjb2xzPVwiNVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8di1zcGFjZXI+IDwvdi1zcGFjZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx2LXRleHQtZmllbGQgdi1tb2RlbD1cInNlYXJjaFwiIGFwcGVuZC1pY29uPVwibWRpLW1hZ25pZnlcIiBsYWJlbD1cIlNlYXJjaFwiIHNpbmdsZS1saW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlkZS1kZXRhaWxzPjwvdi10ZXh0LWZpZWxkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC92LWNvbD5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPHYtY29sIGNvbHM9XCIxMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aW52ZW50YWlyZXBob25lLXNlbGVjdHVzZXIgOnVzZXJzTGlzdD1cInVzZXJzTGlzdFwiIEBjaGFuZ2U9XCJ1c2VyX2NoYWdlXCIgLz48L3YtY29sPjwvdi1yb3c+XG4gICAgICAgICAgICAgICAgICAgIDwvdi1jYXJkLXRpdGxlPlxuXG4gICAgICAgICAgICAgICAgICAgIDxpbnZlbnRhaXJlcGhvbmUtZXZlbnRvcnRvdGFsIDpoZWFkZXJzX3RvdGFsPVwiaGVhZGVyc190b3RhbFwiIDpkYXRhc2V0X3RvdGFsPVwiZGF0YXNldF90b3RhbFwiXG4gICAgICAgICAgICAgICAgICAgICAgOmhlYWRlcnNfZXZlbnQ9XCJoZWFkZXJzX2V2ZW50XCIgOmRhdGFzZXRfZXZlbnQ9XCJkYXRhc2V0X2V2ZW50XCIgOmxvYWRpbmc9XCJsb2FkaW5nXCJcbiAgICAgICAgICAgICAgICAgICAgICA6c2VhcmNoPVwic2VhcmNoXCIgLz5cblxuXG4gICAgICAgICAgICAgICAgICA8L3YtY2FyZD5cbiAgICAgICAgICAgICAgICA8L3YtY29sPlxuICAgICAgICAgICAgICA8L3Ytcm93PlxuXG4gICAgICAgICAgICAgIDx2LXJvdz5cblxuICAgICAgICAgICAgICAgIDx2LWNvbCBjb2xzPVwiMTFcIj5cbiAgICAgICAgICAgICAgICAgIDx2LXRleHQtZmllbGQgbGFiZWw9XCIgTsKwIFNlY3RldXJcIiB2LW1vZGVsPVwiY2hhbmdlU2VjdGV1clwiXG4gICAgICAgICAgICAgICAgICAgIDpwcmVmaXg9XCInVmV1aWxsZXogZW50cmVyIGxlIG51bcOpcm8gZGUgc2VjdGV1ciBwb3VyIGxlIG1vZGlmaWVyIHBvdXIgJyArIGlkZW50aWZpYW50XCJcbiAgICAgICAgICAgICAgICAgICAgOmFwcGVuZC1pY29uPVwiY2hhbmdlU2VjdGV1ciA+IDAgPyAnbWRpLXNlbmQnIDogJydcIiBAY2xpY2s6YXBwZW5kPVwiY2hhbmdlX3NlY3RldXIoKVwiPjwvdi10ZXh0LWZpZWxkPlxuICAgICAgICAgICAgICAgIDwvdi1jb2w+XG4gICAgICAgICAgICAgIDwvdi1yb3c+XG4gICAgICAgICAgICA8L3YtY2FyZD5cbiAgICAgICAgICA8L3YtdGFiLWl0ZW0+XG4gICAgICAgIDwvdi10YWJzLWl0ZW1zPlxuICAgICAgPC92LXRhYnM+XG4gICAgPC9kaXY+XG4gICAgPGRpdiB2LWVsc2U+XG4gICAgICA8aW52ZW50YWlyZXBob25lLWVudHJlcG90IEBjaGFuZ2U9XCJzZWxlY3RlZF9FbnRyZXBvdFwiIC8+XG4gICAgPC9kaXY+XG4gIDwvY2FyZC1jYXJkPlxuPC90ZW1wbGF0ZT5cbjxzY3JpcHQ+XG5pbXBvcnQgaTE4biBmcm9tIFwiQC9wbHVnaW5zL2kxOG5cIjtcbmltcG9ydCBheGlvcyBmcm9tIFwiYXhpb3NcIjtcblxuaW1wb3J0IEV4cG9ydEpzb25FeGNlbCBmcm9tIFwianMtZXhwb3J0LWV4Y2VsXCI7XG5cbmltcG9ydCB3aWRnZXRzTWl4aW4gZnJvbSBcIi4uL3dpZGdldHNNaXhpblwiO1xuZXhwb3J0IGRlZmF1bHQge1xuICBtaXhpbnM6IFt3aWRnZXRzTWl4aW5dLFxuICBkYXRhOiAoKSA9PiAoe1xuICAgIGNoYW5nZVNlY3RldXI6IFwiXCIsXG4gICAgbXNnOiBcIlwiLFxuICAgIHNlYXJjaDogXCJcIixcbiAgICBlbnRyZXBvdF9pZDogXCJcIixcbiAgICBpbnZlbnRhaXJlcGhvbmVfaWQ6IFwiXCIsXG4gICAgdXNlcl9pZDogXCJcIixcbiAgICBpZGVudGlmaWFudDogXCJcIixcbiAgICBzZWN0ZXVyOiBcIlwiLFxuXG4gICAgdGFiX1NlY3RldXI6IFwiXCIsXG5cbiAgICBzZWN0ZXVyc1VzZXJzOiB7fSxcblxuICAgIGRhdGFzZXRfZXZlbnQ6IFtdLFxuICAgIGhlYWRlcnNfZXZlbnQ6IFtdLFxuICAgIGRhdGFzZXRfdG90YWw6IFtdLFxuICAgIGhlYWRlcnNfdG90YWw6IFtdLFxuICAgIGxvYWRpbmc6IGZhbHNlLFxuICB9KSxcblxuICBjb21wdXRlZDoge1xuICAgIEJhc2VfdXJsX3dlYigpIHtcbiAgICAgIHJldHVybiB0aGlzLiRzdG9yZS5nZXR0ZXJzW1wiZ2V0X0Jhc2VfdXJsXCJdO1xuICAgIH0sXG4gICAgc2VsZWN0X3NlY3RldXIoKSB7XG4gICAgICByZXR1cm4gdGhpcy50YWJfU2VjdGV1ci5zcGxpdChcInRhYi1cIilbMV07XG4gICAgfSxcbiAgICBzZWxlY3RfdXNlcl9pZCgpIHtcbiAgICAgIHJldHVybiB0aGlzLnNlY3RldXJzVXNlcnNbdGhpcy5zZWxlY3Rfc2VjdGV1cl07XG4gICAgfSxcbiAgICB1c2VyYnlzZWN0ZXVyKCkge1xuICAgICAgcmV0dXJuIHRoaXMuc2VjdGV1cnNVc2Vyc1t0aGlzLnNlbGVjdF9zZWN0ZXVyXTtcbiAgICB9LFxuICB9LFxuICBtZXRob2RzOiB7XG4gICAgc2VsZWN0ZWRfRW50cmVwb3QodmFsKSB7XG4gICAgICB0aGlzLmVudHJlcG90X2lkID0gdmFsLnZhbHVlO1xuICAgICAgdGhpcy5nZXRfc2VjdGV1cnNVc2VycygpO1xuICAgIH0sXG4gICAgdXNlcl9jaGFnZShpbmRleCkge1xuICAgICAgdGhpcy51c2VyX2lkID0gXCJcIjtcbiAgICAgIHRoaXMuc2VjdGV1ciA9IFwiXCI7XG5cbiAgICAgIGlmIChpbmRleCAhPSB1bmRlZmluZWQgJiYgdGhpcy5zZWxlY3RfdXNlcl9pZFtpbmRleF0gIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuc2VjdGV1ciA9IHRoaXMuc2VsZWN0X3NlY3RldXI7XG4gICAgICAgIHRoaXMuY2hhbmdlU2VjdGV1ciA9IHRoaXMuc2VsZWN0X3NlY3RldXI7XG4gICAgICAgIHRoaXMudXNlcl9pZCA9IHRoaXMuc2VsZWN0X3VzZXJfaWRbaW5kZXhdW1wiaWRfdXNlclwiXTtcbiAgICAgICAgdGhpcy5pZGVudGlmaWFudCA9IHRoaXMuc2VsZWN0X3VzZXJfaWRbaW5kZXhdW1wiaWRlbnRpZmlhbnRcIl07XG4gICAgICAgIHRoaXMuaW52ZW50YWlyZXBob25lX2lkID0gdGhpcy5zZWxlY3RfdXNlcl9pZFtpbmRleF1bXCJpbnZlbnRhaXJlcGhvbmVfaWRcIl07XG4gICAgICAgIHRoaXMuZ2V0X3RvdGFsaW52ZW50YWlyZSgpO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICBhc3luYyBnZXRfc2VjdGV1cnNVc2VycygpIHtcbiAgICAgIHRoaXMudGFiX1NlY3RldXIgPSBcIlwiO1xuXG4gICAgICB0aGlzLnNlY3RldXJzVXNlcnMgPSB7fTtcblxuICAgICAgY29uc3QgcGFyYW1zID0geyBlbnRyZXBvdF9pZDogdGhpcy5lbnRyZXBvdF9pZCB9O1xuXG4gICAgICBjb25zdCBzZWN0ZXVyc1VzZXJzID0gYXdhaXQgYXhpb3NcbiAgICAgICAgLmdldCh0aGlzLkJhc2VfdXJsX3dlYiArIFwiL2ludmVudGFpcmVwaG9uZS9zZWN0ZXVyc3VzZXJzXCIsIHtcbiAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICBBdXRob3JpemF0aW9uOiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcIkpXVFRva2VuXCIpLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgcGFyYW1zOiBwYXJhbXMsXG4gICAgICAgIH0pXG4gICAgICAgIC50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgIHJldHVybiByZXNwb25zZS5kYXRhO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goKCkgPT4ge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCIvaW52ZW50YWlyZXBob25lL3NlY3RldXJzdXNlcnNcIik7XG4gICAgICAgIH0pO1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoc2VjdGV1cnNVc2VycykgJiYgc2VjdGV1cnNVc2Vycy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdGhpcy5tc2cgPSBcIlNWUCBhcHB1eWV6IHN1ciBlbnZveWVyIGRlcyBkb25uw6llcyAoc2VuZCBEQVRBKVwiO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5tc2cgPSBcIlwiO1xuICAgICAgICB0aGlzLnNlY3RldXJzVXNlcnMgPSBzZWN0ZXVyc1VzZXJzO1xuICAgICAgfVxuICAgIH0sXG4gICAgYXN5bmMgY2hhbmdlX3NlY3RldXIoKSB7XG5cbiAgICAgIGlmICh0aGlzLnNlY3RldXIgIT0gdGhpcy5jaGFuZ2VTZWN0ZXVyKSB7XG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgICAgICBpbnZlbnRhaXJlcGhvbmVfaWQ6IHRoaXMuaW52ZW50YWlyZXBob25lX2lkLFxuICAgICAgICAgIGNoYW5nZVNlY3RldXI6IHRoaXMuY2hhbmdlU2VjdGV1cixcbiAgICAgICAgICBzZWN0ZXVyOiB0aGlzLnNlY3RldXIsXG5cbiAgICAgICAgICBlbnRyZXBvdF9pZDogdGhpcy5lbnRyZXBvdF9pZCxcbiAgICAgICAgICB1c2VyX2lkOiB0aGlzLnVzZXJfaWQsXG5cbiAgICAgICAgfTtcbiAgICAgICAgY29uc29sZS5sb2cocGFyYW1zKTtcblxuXG4gICAgICAgIGNvbnN0IGZvcm1kYXRhID0gbmV3IEZvcm1EYXRhKClcblxuICAgICAgICBmb3JtZGF0YS5hcHBlbmQoJ2NoYW5nZVNlY3RldXInLCB0aGlzLmNoYW5nZVNlY3RldXIpXG4gICAgICAgIGZvcm1kYXRhLmFwcGVuZCgnaW52ZW50YWlyZXBob25lX2lkJywgdGhpcy5pbnZlbnRhaXJlcGhvbmVfaWQpXG5cblxuXG4gICAgICAgIGxldCB1cmxQYWdlID0gdGhpcy5CYXNlX3VybF93ZWIgKyAnL2ludmVudGFpcmVwaG9uZS91cGRhdGVjaGFuZ2VzZWN0ZXVyJ1xuXG4gICAgICAgIGF3YWl0IGF4aW9zXG4gICAgICAgICAgLnBvc3QodXJsUGFnZSwgZm9ybWRhdGEsIHtcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdtdWx0aXBhcnQvZm9ybS1kYXRhJyxcblxuICAgICAgICAgICAgICBBdXRob3JpemF0aW9uOiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcIkpXVFRva2VuXCIpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KVxuICAgICAgICAgIC50aGVuKGFzeW5jIChyZXNwb25zZSkgPT4ge1xuXG4gICAgICAgICAgICB0aGlzLmdldF9zZWN0ZXVyc1VzZXJzKCk7XG5cbiAgICAgICAgICB9KVxuXG5cblxuXG5cblxuXG5cbiAgICAgIH1cblxuXG5cblxuXG4gICAgfSxcbiAgICBhc3luYyBnZXRfdG90YWxpbnZlbnRhaXJlKCkge1xuICAgICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICBlbnRyZXBvdF9pZDogdGhpcy5lbnRyZXBvdF9pZCxcbiAgICAgICAgdXNlcl9pZDogdGhpcy51c2VyX2lkLFxuICAgICAgICBzZWN0ZXVyOiB0aGlzLnNlY3RldXIsXG4gICAgICB9O1xuICAgICAgdGhpcy5kYXRhc2V0X2V2ZW50ID0gW107XG5cbiAgICAgIHRoaXMuZGF0YXNldF90b3RhbCA9IFtdO1xuICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcblxuICAgICAgbGV0IGRhdGEgPSBhd2FpdCBheGlvc1xuICAgICAgICAuZ2V0KHRoaXMuQmFzZV91cmxfd2ViICsgXCIvaW52ZW50YWlyZXBob25lL3RvdGFsaW52ZW50YWlyZVwiLCB7XG4gICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgQXV0aG9yaXphdGlvbjogbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJKV1RUb2tlblwiKSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHBhcmFtczogcGFyYW1zLFxuICAgICAgICB9KVxuICAgICAgICAudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKCgpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKFwiL2ludmVudGFpcmVwaG9uZS90b3RhbGludmVudGFpcmVcIik7XG4gICAgICAgIH0pO1xuXG4gICAgICB0aGlzLmRhdGFzZXRfZXZlbnQgPSBkYXRhW1wiZXZlbnRcIl1bXCJkYXRhc2V0XCJdO1xuICAgICAgdGhpcy5oZWFkZXJzX2V2ZW50ID0gZGF0YVtcImV2ZW50XCJdW1wiaGVhZGVyc1wiXTtcbiAgICAgIHRoaXMuZGF0YXNldF90b3RhbCA9IGRhdGFbXCJ0b3RhbFwiXVtcImRhdGFzZXRcIl07XG4gICAgICB0aGlzLmhlYWRlcnNfdG90YWwgPSBkYXRhW1widG90YWxcIl1bXCJoZWFkZXJzXCJdO1xuICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgfSxcbiAgICByZW1vdmUoKSB7XG4gICAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICAgIGVudHJlcG90X2lkOiB0aGlzLmVudHJlcG90X2lkLFxuICAgICAgICB1c2VyX2lkOiB0aGlzLnVzZXJfaWQsXG4gICAgICAgIHNlY3RldXI6IHRoaXMuc2VjdGV1cixcbiAgICAgIH07XG5cbiAgICAgIGF4aW9zXG4gICAgICAgIC5kZWxldGUodGhpcy5CYXNlX3VybF93ZWIgKyBcIi9pbnZlbnRhaXJlcGhvbmUvZGVsZXRlXCIsIHtcbiAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICBBdXRob3JpemF0aW9uOiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcIkpXVFRva2VuXCIpLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgcGFyYW1zOiBwYXJhbXMsXG4gICAgICAgIH0pXG4gICAgICAgIC50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgIHRoaXMudGFiX1NlY3RldXIgPSBcIlwiO1xuXG4gICAgICAgICAgdGhpcy5zZWN0ZXVyc1VzZXJzID0ge307XG5cbiAgICAgICAgICB0aGlzLmdldF9zZWN0ZXVyc1VzZXJzKCk7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaCgoKSA9PiB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihcIi9pbnZlbnRhaXJlcGhvbmUvcmVtb3ZlXCIpO1xuICAgICAgICB9KTtcbiAgICB9LFxuICAgIHNhdmVFeGNlbChoZWFkZXJzXywgZGF0YXNldF8sIGZpbGVOYW1lKSB7XG4gICAgICBsZXQgc2hlZXRoZWFkZXJfID0gW107XG4gICAgICBsZXQgc2hlZXRoZWFkZXJ2YWx1ZV8gPSBbXTtcbiAgICAgIGxldCBjb2x1bW5XaWR0aHNfID0gW107XG4gICAgICBoZWFkZXJzXy5mb3JFYWNoKChoZWFkZXJzKSA9PiB7XG4gICAgICAgIHNoZWV0aGVhZGVyXy5wdXNoKGhlYWRlcnMudGV4dCk7XG4gICAgICAgIHNoZWV0aGVhZGVydmFsdWVfLnB1c2goaGVhZGVycy52YWx1ZSk7XG4gICAgICAgIGNvbHVtbldpZHRoc18ucHVzaChoZWFkZXJzLnRleHQubGVuZ3RoICsgNSk7XG4gICAgICB9KTtcblxuICAgICAgbGV0IG9wdGlvbiA9IHt9O1xuXG4gICAgICBvcHRpb24uZmlsZU5hbWUgPSBmaWxlTmFtZTtcblxuICAgICAgb3B0aW9uLmRhdGFzID0gW1xuICAgICAgICB7XG4gICAgICAgICAgc2hlZXROYW1lOiBmaWxlTmFtZSxcblxuICAgICAgICAgIHNoZWV0SGVhZGVyOiBzaGVldGhlYWRlcl8sXG4gICAgICAgICAgc2hlZXRGaWx0ZXI6IHNoZWV0aGVhZGVydmFsdWVfLFxuICAgICAgICAgIGNvbHVtbldpZHRoczogY29sdW1uV2lkdGhzXyxcbiAgICAgICAgICBzaGVldERhdGE6IGRhdGFzZXRfLFxuICAgICAgICB9LFxuICAgICAgXTtcblxuICAgICAgbmV3IEV4cG9ydEpzb25FeGNlbChvcHRpb24pLnNhdmVFeGNlbCgpO1xuICAgIH0sXG4gICAgZXhjZWxqcygpIHtcbiAgICAgIGxldCBmaWxlTmFtZSA9IFwiXCI7XG4gICAgICBpZiAodGhpcy5pZGVudGlmaWFudCA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZmlsZU5hbWUgPSBcIi1zZWN0dWVyLVwiO1xuXG4gICAgICAgIGxldCBzaGVldGhlYWRlciA9IFtcbiAgICAgICAgICB7IHRleHQ6IFwiaWRfcHJvZHVpdFwiLCB2YWx1ZTogXCJwcm9kdWl0X2lkXCIgfSxcbiAgICAgICAgICB7IHRleHQ6IFwiaWRfbG90XCIsIHZhbHVlOiBcImxvdF9pZFwiIH0sXG4gICAgICAgICAgeyB0ZXh0OiBcInByb2R1aXRcIiwgdmFsdWU6IFwiZGVzaWduYXRpb25cIiB9LFxuICAgICAgICAgIHsgdGV4dDogXCJsb3RcIiwgdmFsdWU6IFwibG90XCIgfSxcbiAgICAgICAgICB7IHRleHQ6IFwiUVRFXCIsIHZhbHVlOiBcInN0b2NrcmVlbFwiIH0sXG4gICAgICAgIF07XG5cbiAgICAgICAgbGV0IGRhdGFzZXRfdG90YWwgPSBbXTtcbiAgICAgICAgdGhpcy5kYXRhc2V0X3RvdGFsLmZvckVhY2goKGVsZW1lbnQpID0+IHtcbiAgICAgICAgICBpZiAoZWxlbWVudFtcImxvdF9pZFwiXSA9PSAwKSB7XG4gICAgICAgICAgICBlbGVtZW50W1wibG90X2lkXCJdID0gbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgICAgZGF0YXNldF90b3RhbC5wdXNoKGVsZW1lbnQpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnNhdmVFeGNlbChzaGVldGhlYWRlciwgZGF0YXNldF90b3RhbCwgXCJ0b3RhbC1cIiArIGZpbGVOYW1lKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZpbGVOYW1lID0gdGhpcy5pZGVudGlmaWFudCArIFwiLXNlY3R1ZXItXCIgKyB0aGlzLnNlY3RldXI7XG4gICAgICAgIHRoaXMuc2F2ZUV4Y2VsKFxuICAgICAgICAgIHRoaXMuaGVhZGVyc190b3RhbCxcbiAgICAgICAgICB0aGlzLmRhdGFzZXRfdG90YWwsXG4gICAgICAgICAgXCJ0b3RhbC1cIiArIGZpbGVOYW1lXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuc2F2ZUV4Y2VsKFxuICAgICAgICAgIHRoaXMuaGVhZGVyc19ldmVudCxcbiAgICAgICAgICB0aGlzLmRhdGFzZXRfZXZlbnQsXG4gICAgICAgICAgXCJldmVudC1cIiArIGZpbGVOYW1lXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSxcbiAgfSxcblxuICB3YXRjaDoge1xuICAgIHRhYl9TZWN0ZXVyKG5ld1ZhbHVlLCBvbGRWYWx1ZSkge1xuICAgICAgdGhpcy5kYXRhc2V0X2V2ZW50ID0gW107XG4gICAgICB0aGlzLmRhdGFzZXRfdG90YWwgPSBbXTtcbiAgICAgIHRoaXMuaGVhZGVyc19ldmVudCA9IFtdO1xuICAgICAgdGhpcy5oZWFkZXJzX3RvdGFsID0gW107XG4gICAgICB0aGlzLnVzZXJfY2hhZ2UoMCk7XG4gICAgfSxcbiAgfSxcbn07XG48L3NjcmlwdD5cbjxzdHlsZT5cbi52LXNoZWV0LS1vZmZzZXQge1xuICB0b3A6IC0yNHB4O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG48L3N0eWxlPiIsIjx0ZW1wbGF0ZT5cbiAgPGNhcmQtY2FyZFxuICAgIDpjbG9zZT1cImNsb3NlXCJcbiAgICBAY2xvc2U9XCJjbG9zZWV2ZW50XCJcbiAgICBpY29uPVwibWRpLXBhY2thZ2UtZG93blwiXG4gICAgY29sb3I9XCJvcmFuZ2VcIlxuICAgIDp0aXRsZT1cIiR0KCdsaXN0U3RvY2snKVwiXG4gICAgY2xhc3M9XCJweC01IHB5LTNcIlxuICA+XG4gICAgPHYtc2hlZXRcbiAgICAgIGNsYXNzPVwidi1zaGVldC0tb2Zmc2V0IG14LWF1dG9cIlxuICAgICAgY29sb3I9XCJjeWFuXCJcbiAgICAgIGVsZXZhdGlvbj1cIjEyXCJcbiAgICAgIG1heC13aWR0aD1cImNhbGMoMTAwJSAtIDMycHgpXCJcbiAgICA+XG4gICAgICA8di1kYXRhLXRhYmxlXG4gICAgICAgIGRlbnNlXG4gICAgICAgXG4gICAgICAgIDpoZWFkZXJzPVwidGl0bGVzXCJcbiAgICAgICAgOml0ZW1zPVwiZGF0YVNldFwiXG4gICAgICAgIDpzaG93LWV4cGFuZD1cInRydWVcIlxuICAgICAgICA6c2luZ2xlLWV4cGFuZD1cInRydWVcIlxuICAgICAgICBjbGFzcz1cImVsZXZhdGlvbi0xXCJcbiAgICAgICAgbm8tZGF0YS10ZXh0XG4gICAgICAgIGl0ZW0ta2V5PVwidGl0cmVcIlxuICAgICAgPlxuICAgICAgICA8dGVtcGxhdGUgdi1zbG90OmV4cGFuZGVkLWl0ZW09XCJ7IGl0ZW0gfVwiPlxuICAgICAgICAgIDx0ZCA6Y29sc3Bhbj1cInRpdGxlcy5sZW5ndGggKyAxXCI+XG4gICAgICAgICAgICA8di1kYXRhLXRhYmxlXG4gICAgICAgICAgICAgIDpoZWFkZXJzPVwiaGVhZGVyc1wiXG4gICAgICAgICAgICAgIDppdGVtcz1cIml0ZW1bJ3Byb2R1aXRzU3RvY2thbGVydHMnXVwiXG4gICAgICAgICAgICAgIGhpZGUtZGVmYXVsdC1mb290ZXJcbiAgICAgICAgICAgICAgZGVuc2VcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHRlbXBsYXRlIHYtc2xvdDppdGVtLnN0b2NrPVwieyBpdGVtIH1cIj5cbiAgICAgICAgICAgICAgICA8di1jaGlwIGNvbG9yPVwicmVkXCIgZGFyaz57eyBpdGVtLnN0b2NrIH19PC92LWNoaXA+XG4gICAgICAgICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6aXRlbS5TdG9ja2NvbW1hbmRlPVwieyBpdGVtIH1cIj5cbiAgICAgICAgICAgICAgICA8di1jaGlwIGNvbG9yPVwib3JhbmdlXCIgZGFyaz57eyBpdGVtLlN0b2NrY29tbWFuZGUgfX08L3YtY2hpcD5cbiAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvdi1kYXRhLXRhYmxlPlxuICAgICAgICAgIDwvdGQ+XG4gICAgICAgIDwvdGVtcGxhdGU+XG5cbiAgICAgICAgPCEtLSAtLT5cbiAgICAgIDwvdi1kYXRhLXRhYmxlPlxuICAgIDwvdi1zaGVldD5cblxuICAgIDx2LWNhcmQtdGV4dCBjbGFzcz1cInB0LTBcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZSBmb250LXdlaWdodC1saWdodCBtYi0yIHJlZC0tdGV4dFwiPlxuICAgICAgICBQcm9kdWl0cyBlbiBhbGVydGUgc3RvY2tcbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInN1YmhlYWRpbmcgZm9udC13ZWlnaHQtbGlnaHQgZ3JleS0tdGV4dFwiPlxuICAgICAgICBTdG9jayBpbmbDqXJpZXVyIGF1IHN0b2NrIGQnYWxlcnRlXG4gICAgICA8L2Rpdj5cbiAgICAgIDx2LWRpdmlkZXIgY2xhc3M9XCJteS0yXCI+PC92LWRpdmlkZXI+XG4gICAgICA8di1pY29uIGNsYXNzPVwibXItMlwiIHNtYWxsPm1kaS1jbG9jazwvdi1pY29uPlxuICAgICAgPHNwYW4gY2xhc3M9XCJjYXB0aW9uIGdyZXktLXRleHQgZm9udC13ZWlnaHQtbGlnaHRcIj57e1xuICAgICAgICBuZXcgRGF0ZSgpLnRvTG9jYWxlU3RyaW5nKClcbiAgICAgIH19PC9zcGFuPlxuICAgIDwvdi1jYXJkLXRleHQ+XG4gIDwvY2FyZC1jYXJkPlxuPC90ZW1wbGF0ZT5cbjxzY3JpcHQ+XG5pbXBvcnQgaTE4biBmcm9tIFwiQC9wbHVnaW5zL2kxOG5cIjtcbmltcG9ydCBheGlvcyBmcm9tIFwiYXhpb3NcIjtcblxuaW1wb3J0IHdpZGdldHNNaXhpbiBmcm9tIFwiLi8uLi93aWRnZXRzTWl4aW5cIjtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgbWl4aW5zOiBbd2lkZ2V0c01peGluXSxcbiAgZGF0YTogKCkgPT4gKHtcbiAgICBoZWFkZXJzOiBbXG4gICAgICB7IHRleHQ6IGkxOG4udChcInJlZlwiKSwgdmFsdWU6IFwicmVmXCIgfSxcbiAgICAgIHsgdGV4dDogaTE4bi50KFwiZGVzaWduYXRpb25cIiksIHZhbHVlOiBcImRlc2lnbmF0aW9uXCIgfSxcbiAgICAgIHsgdGV4dDogaTE4bi50KFwic3RvY2tcIiksIHZhbHVlOiBcInN0b2NrXCIgfSxcbiAgICAgIHsgdGV4dDogaTE4bi50KFwic3RvY2thbGVydGVcIiksIHZhbHVlOiBcInN0b2NrYWxlcnRlXCIgfSxcbiAgICAgIHsgdGV4dDogaTE4bi50KFwiU1ZQIGNvbW1hbmRlciBcIiksIHZhbHVlOiBcIlN0b2NrY29tbWFuZGVcIiB9LFxuICAgIF0sXG4gICAgc3RvY2thbGVydGU6IHt9LFxuICB9KSxcblxuICBtZXRob2RzOiB7fSxcbiAgICBjb21wdXRlZDoge1xuXG5CYXNlX3VybF93ZWIoKSB7XG4gICAgICByZXR1cm4gdGhpcy4kc3RvcmUuZ2V0dGVyc1tcImdldF9CYXNlX3VybFwiXTtcbiAgICB9LFxuICAgIHRpdGxlcygpIHtcbiAgICAgIHJldHVybiBbeyB0ZXh0OiBpMThuLnQoXCJ0aXRyZVwiKSwgdmFsdWU6IFwidGl0cmVcIiB9XTtcbiAgICB9LFxuICAgIGRhdGFTZXQoKSB7XG4gICAgICBsZXQgZGF0YVNldCA9IFtdO1xuXG4gICAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLnN0b2NrYWxlcnRlKSB7XG4gICAgICAgIGRhdGFTZXQucHVzaCh7XG5cbiAgICAgICAgICB0aXRyZToga2V5LFxuICAgICAgICAgIHByb2R1aXRzU3RvY2thbGVydHM6IHRoaXMuc3RvY2thbGVydGVba2V5XSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgIFxuICAgICAgcmV0dXJuIGRhdGFTZXQ7XG4gICAgfSxcbiAgfSxcblxuICBtb3VudGVkKCkge1xuICAgIGxldCBwYXRoID0gXCIvc3RvY2thbGVydC9zdGF0aXN0aXF1ZVwiO1xuXG4gICAgYXhpb3NcbiAgICAgIC5nZXQodGhpcy5CYXNlX3VybF93ZWIrcGF0aCwgeyAgIGhlYWRlcnM6IHtcbiAgICAgICAgICBBdXRob3JpemF0aW9uOiAgbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJKV1RUb2tlblwiKSxcbiAgICAgICAgfSxwYXJhbXM6IHt9IH0pXG4gICAgICAudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgdGhpcy5zdG9ja2FsZXJ0ZSA9IHJlc3BvbnNlLmRhdGE7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKCgpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcihcInBhdGhcIik7XG4gICAgICB9KTtcbiAgfSxcbn07XG48L3NjcmlwdD5cbjxzdHlsZT5cbi52LXNoZWV0LS1vZmZzZXQge1xuICB0b3A6IC0yNHB4O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG48L3N0eWxlPiIsIlxuQGltcG9ydCB1cmwoJ2h0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzMj9mYW1pbHk9T3JiaXRyb246d2dodEA1MDA7OTAwJmRpc3BsYXk9c3dhcCcpO1xuXG4vLyAtLS0gQ29uZmlndXJhdGlvbiAtLS1cbiRhbmltLXNwZWVkLXNsb3c6IDEycztcbiRhbmltLXNwZWVkLW1pZDogOHM7XG4kYW5pbS1zcGVlZC1mYXN0OiA0cztcbiRicmFuZC1mb250OiAnT3JiaXRyb24nLCBzYW5zLXNlcmlmO1xuXG4vLyAtLS0gVGhlbWUgQ29sb3JzIChDU1MgVmFyaWFibGVzKSAtLS1cbi5sb2FkaW5nLWNvbnRhaW5lciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQgMC44cyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtcbiAgXG4gIC8qIERhcmsgVGhlbWUgKEN5YmVyL05lb24pICovXG4gICYudGhlbWUtZGFyayB7XG4gICAgYmFja2dyb3VuZDogIzA5MDkwYjtcbiAgICAtLXByaW1hcnk6ICM2MzY2ZjE7ICAgIC8qIEluZGlnbyAqL1xuICAgIC0tc2Vjb25kYXJ5OiAjZWM0ODk5OyAgLyogUGluayAqL1xuICAgIC0tYWNjZW50OiAjMDZiNmQ0OyAgICAgLyogQ3lhbiAqL1xuICAgIC0tdHJhY2s6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wMyk7XG4gICAgLS10ZXh0LW1haW46ICNmZmZmZmY7XG4gICAgLS10ZXh0LXN1YjogIzY0NzQ4YjtcbiAgICAtLWdsb3ctb3BhY2l0eTogMC42O1xuICAgIC0tb3JiLWNvbG9yOiAjNGY0NmU1O1xuICB9XG5cbiAgLyogTGlnaHQgVGhlbWUgKENsZWFuL0NvcnBvcmF0ZSkgKi9cbiAgJi50aGVtZS1saWdodCB7XG4gICAgYmFja2dyb3VuZDogI2Y4ZmFmYztcbiAgICAtLXByaW1hcnk6ICMyNTYzZWI7ICAgIC8qIEJsdWUgKi9cbiAgICAtLXNlY29uZGFyeTogIzdjM2FlZDsgIC8qIFZpb2xldCAqL1xuICAgIC0tYWNjZW50OiAjMGVhNWU5OyAgICAgLyogU2t5ICovXG4gICAgLS10cmFjazogcmdiYSgwLCAwLCAwLCAwLjAzKTtcbiAgICAtLXRleHQtbWFpbjogIzFlMjkzYjtcbiAgICAtLXRleHQtc3ViOiAjOTRhM2I4O1xuICAgIC0tZ2xvdy1vcGFjaXR5OiAwLjQ7XG4gICAgLS1vcmItY29sb3I6ICNiZmRiZmU7XG4gIH1cbn1cblxuLy8gLS0tIEF0bW9zcGhlcmUgKEJhY2tncm91bmQgR2xvdykgLS0tXG4uYXRtb3NwaGVyZSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG59XG5cbi5nbG93LW9yYiB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICBmaWx0ZXI6IGJsdXIoODBweCk7XG4gIG9wYWNpdHk6IDAuMTU7XG4gIGFuaW1hdGlvbjogZmxvYXQtb3JiIDEwcyBpbmZpbml0ZSBlYXNlLWluLW91dCBhbHRlcm5hdGU7XG4gIFxuICAmLmdsb3ctMSB7XG4gICAgdG9wOiAtMTAlO1xuICAgIGxlZnQ6IC0xMCU7XG4gICAgd2lkdGg6IDUwdnc7XG4gICAgaGVpZ2h0OiA1MHZ3O1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXByaW1hcnkpO1xuICB9XG4gIFxuICAmLmdsb3ctMiB7XG4gICAgYm90dG9tOiAtMTAlO1xuICAgIHJpZ2h0OiAtMTAlO1xuICAgIHdpZHRoOiA0MHZ3O1xuICAgIGhlaWdodDogNDB2dztcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zZWNvbmRhcnkpO1xuICAgIGFuaW1hdGlvbi1kZWxheTogLTVzO1xuICB9XG59XG5cbkBrZXlmcmFtZXMgZmxvYXQtb3JiIHtcbiAgMCUgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKSBzY2FsZSgxKTsgfVxuICAxMDAlIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMzBweCwgNTBweCkgc2NhbGUoMS4xKTsgfVxufVxuXG4vLyAtLS0gV3JhcHBlciAtLS1cbi5sb2FkZXItd3JhcHBlciB7XG4gIHotaW5kZXg6IDI7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICB0cmFuc2Zvcm0tc3R5bGU6IHByZXNlcnZlLTNkO1xuICBwZXJzcGVjdGl2ZTogMTAwMHB4O1xufVxuXG4vLyAtLS0gU3ltcGhvbnkgTG9hZGVyIC0tLVxuLnN5bXBob255LWxvYWRlciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgd2lkdGg6IDMwMHB4O1xuICBoZWlnaHQ6IDMwMHB4O1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cblxuLy8gVHJhY2tzIChUaGUgZmFpbnQgbGluZXMpXG4udHJhY2sge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tdHJhY2spO1xuICBib3gtc2hhZG93OiAwIDAgMjBweCByZ2JhKDAsMCwwLDAuMDIpO1xuICBcbiAgJi50cmFjay1vdXRlciB7IHdpZHRoOiAyODBweDsgaGVpZ2h0OiAyODBweDsgfVxuICAmLnRyYWNrLW1pZGRsZSB7IHdpZHRoOiAxOTBweDsgaGVpZ2h0OiAxOTBweDsgfVxuICAmLnRyYWNrLWlubmVyIHsgd2lkdGg6IDExMHB4OyBoZWlnaHQ6IDExMHB4OyB9XG59XG5cbi8vIE9yYml0cyAmIERvdHNcbi5vcmJpdCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cblxuLm9yYml0LW91dGVyIHtcbiAgd2lkdGg6IDI4MHB4OyBoZWlnaHQ6IDI4MHB4O1xuICBhbmltYXRpb246IHNwaW4gJGFuaW0tc3BlZWQtc2xvdyBsaW5lYXIgaW5maW5pdGU7XG59XG5cbi5vcmJpdC1taWRkbGUge1xuICB3aWR0aDogMTkwcHg7IGhlaWdodDogMTkwcHg7XG4gIGFuaW1hdGlvbjogc3BpbiAkYW5pbS1zcGVlZC1taWQgbGluZWFyIGluZmluaXRlIHJldmVyc2U7XG59XG5cbi5vcmJpdC1pbm5lciB7XG4gIHdpZHRoOiAxMTBweDsgaGVpZ2h0OiAxMTBweDtcbiAgYW5pbWF0aW9uOiBzcGluICRhbmltLXNwZWVkLWZhc3QgbGluZWFyIGluZmluaXRlO1xufVxuXG4ub3JiaXQtZG90LXdyYXBwZXIge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogNTAlO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICB0cmFuc2Zvcm06IHJvdGF0ZShjYWxjKDM2MGRlZyAvIHZhcigtLXRvdGFsKSAqIHZhcigtLWkpKSk7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuXG4ub3JiaXQtZG90IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IC02cHg7IC8vIEhhbGYgb2YgaGVpZ2h0XG4gIGxlZnQ6IDUwJTtcbiAgd2lkdGg6IDEycHg7XG4gIGhlaWdodDogMTJweDtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1wcmltYXJ5KSwgdmFyKC0tYWNjZW50KSk7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgYm94LXNoYWRvdzogMCAwIDEwcHggdmFyKC0tcHJpbWFyeSk7XG4gIGFuaW1hdGlvbjogcHVsc2UtZG90IDJzIGVhc2UtaW4tb3V0IGluZmluaXRlIGFsdGVybmF0ZTtcbn1cblxuQGtleWZyYW1lcyBzcGluIHtcbiAgdG8geyB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOyB9XG59XG5cbkBrZXlmcmFtZXMgcHVsc2UtZG90IHtcbiAgZnJvbSB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKSBzY2FsZSgwLjgpOyBvcGFjaXR5OiAwLjg7IH1cbiAgdG8geyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSkgc2NhbGUoMS4yKTsgb3BhY2l0eTogMTsgYm94LXNoYWRvdzogMCAwIDE1cHggdmFyKC0tYWNjZW50KTsgfVxufVxuXG4vLyAtLS0gR29vZXkgQ29yZSAtLS1cbi5nb29leS1jb3JlIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB3aWR0aDogODBweDtcbiAgaGVpZ2h0OiA4MHB4O1xuICBmaWx0ZXI6IHVybCgnI2dvby1lZmZlY3QnKTtcbn1cblxuLmxpcXVpZC1ibG9iIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDUwJTtcbiAgbGVmdDogNTAlO1xuICB3aWR0aDogMzBweDtcbiAgaGVpZ2h0OiAzMHB4O1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGJhY2tncm91bmQ6IHZhcigtLXNlY29uZGFyeSk7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuICBcbiAgLy8gQ3JlYXRpbmcgdGhlIGJsb2IgZGFuY2VcbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCA2IHtcbiAgICAmOm50aC1jaGlsZCgjeyRpfSkge1xuICAgICAgYmFja2dyb3VuZDogaWYoJGkgJSAyID09IDAsIHZhcigtLXByaW1hcnkpLCB2YXIoLS1zZWNvbmRhcnkpKTtcbiAgICAgIGFuaW1hdGlvbjogYmxvYi1kYW5jZSAjezMgKyAkaSAqIDAuNX1zIGN1YmljLWJlemllcigwLjQ1LCAwLjA1LCAwLjU1LCAwLjk1KSBpbmZpbml0ZTtcbiAgICB9XG4gIH1cbn1cblxuQGtleWZyYW1lcyBibG9iLWRhbmNlIHtcbiAgMCUgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKSByb3RhdGUoMGRlZykgdHJhbnNsYXRlKDAsIDApOyB9XG4gIDMzJSB7IHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpIHJvdGF0ZSgxMjBkZWcpIHRyYW5zbGF0ZSgyNXB4LCAwKTsgfVxuICA2NiUgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKSByb3RhdGUoMjQwZGVnKSB0cmFuc2xhdGUoLTE1cHgsIDIwcHgpOyB9XG4gIDEwMCUgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKSByb3RhdGUoMzYwZGVnKSB0cmFuc2xhdGUoMCwgMCk7IH1cbn1cblxuLy8gLS0tIExvZ28gU2VjdGlvbiAmIFBhcnRpY2xlcyAtLS1cbi5sb2dvLXNlY3Rpb24ge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG1hcmdpbi10b3A6IDJyZW07XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbi5lbmVyZ3ktcmFpbiB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAtNDBweDtcbiAgd2lkdGg6IDEwMHB4O1xuICBoZWlnaHQ6IDUwcHg7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICBcbiAgc3BhbiB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogLTEwcHg7XG4gICAgbGVmdDogY2FsYygxMCUgKiB2YXIoLS1kKSk7XG4gICAgd2lkdGg6IDJweDtcbiAgICBoZWlnaHQ6IDEwcHg7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgdHJhbnNwYXJlbnQsIHZhcigtLWFjY2VudCkpO1xuICAgIG9wYWNpdHk6IDA7XG4gICAgYW5pbWF0aW9uOiByYWluLWRyb3AgMnMgaW5maW5pdGUgbGluZWFyO1xuICAgIGFuaW1hdGlvbi1kZWxheTogY2FsYygwLjJzICogdmFyKC0tZCkpO1xuICB9XG59XG5cbkBrZXlmcmFtZXMgcmFpbi1kcm9wIHtcbiAgMCUgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCkgc2NhbGVZKDEpOyBvcGFjaXR5OiAwOyB9XG4gIDUwJSB7IG9wYWNpdHk6IDE7IH1cbiAgMTAwJSB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSg2MHB4KSBzY2FsZVkoMC41KTsgb3BhY2l0eTogMDsgfVxufVxuXG4uYW5pbWF0ZWQtbG9nbyB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZm9udC1mYW1pbHk6ICRicmFuZC1mb250O1xuICBmb250LXNpemU6IDRyZW07XG4gIGZvbnQtd2VpZ2h0OiA5MDA7XG4gIGxldHRlci1zcGFjaW5nOiAwLjVyZW07XG4gIGRpc3BsYXk6IGZsZXg7XG4gIG92ZXJmbG93OiBoaWRkZW47IC8vIEZvciBzY2FubGluZVxuICBwYWRkaW5nOiAwIDEwcHg7XG4gIFxuICAuY2hhciB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIC13ZWJraXQtdGV4dC1zdHJva2U6IDJweCByZ2JhKDEyMCwgMTIwLCAxMjAsIDAuMyk7IC8vIE91dGxpbmUgaW5pdGlhbGx5XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIFxuICAgICY6OmJlZm9yZSB7XG4gICAgICBjb250ZW50OiBhdHRyKGRhdGEtY2hhcik7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB0b3A6IDA7XG4gICAgICBsZWZ0OiAwO1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICBjb2xvcjogdmFyKC0tdGV4dC1tYWluKTtcbiAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICBib3JkZXItYm90dG9tOiAycHggc29saWQgdmFyKC0tcHJpbWFyeSk7XG4gICAgICBhbmltYXRpb246IGZpbGwtdGV4dCA0cyBjdWJpYy1iZXppZXIoMC44NiwgMCwgMC4wNywgMSkgaW5maW5pdGUgYWx0ZXJuYXRlO1xuICAgIH1cbiAgICBcbiAgICAvLyBTcGVjaWZpYyBkZWxheXMgZm9yIEEtVy1BXG4gICAgJjpudGgtY2hpbGQoMSk6OmJlZm9yZSB7IGFuaW1hdGlvbi1kZWxheTogMHM7IGhlaWdodDogMCU7IH1cbiAgICAmOm50aC1jaGlsZCgyKTo6YmVmb3JlIHsgYW5pbWF0aW9uLWRlbGF5OiAwLjJzOyBoZWlnaHQ6IDAlOyB9XG4gICAgJjpudGgtY2hpbGQoMyk6OmJlZm9yZSB7IGFuaW1hdGlvbi1kZWxheTogMC40czsgaGVpZ2h0OiAwJTsgfVxuICB9XG59XG5cbi8vIFRleHQgZmlsbCBhbmltYXRpb24gLSBzaW11bGF0ZXMgbGlxdWlkIGZpbGxpbmcgdXBcbkBrZXlmcmFtZXMgZmlsbC10ZXh0IHtcbiAgMCUsIDIwJSB7IGhlaWdodDogMCU7IGZpbHRlcjogZHJvcC1zaGFkb3coMCAwIDAgdHJhbnNwYXJlbnQpOyB9XG4gIDUwJSwgNzAlIHsgaGVpZ2h0OiAxMDAlOyBmaWx0ZXI6IGRyb3Atc2hhZG93KDAgMCAxMHB4IHZhcigtLXByaW1hcnkpKTsgfVxuICAxMDAlIHsgaGVpZ2h0OiAxMDAlOyBmaWx0ZXI6IGRyb3Atc2hhZG93KDAgMCAxNXB4IHZhcigtLWFjY2VudCkpOyBjb2xvcjogdmFyKC0tcHJpbWFyeSk7IC13ZWJraXQtdGV4dC1zdHJva2U6IDA7IH1cbn1cblxuLnNjYW4tbGluZSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAycHg7XG4gIGJhY2tncm91bmQ6IHZhcigtLWFjY2VudCk7XG4gIGJveC1zaGFkb3c6IDAgMCAxNXB4IHZhcigtLWFjY2VudCk7XG4gIGFuaW1hdGlvbjogc2NhbiAzcyBsaW5lYXIgaW5maW5pdGU7XG4gIG9wYWNpdHk6IDAuNTtcbn1cblxuQGtleWZyYW1lcyBzY2FuIHtcbiAgMCUgeyB0b3A6IDAlOyBvcGFjaXR5OiAwOyB9XG4gIDEwJSB7IG9wYWNpdHk6IDE7IH1cbiAgOTAlIHsgb3BhY2l0eTogMTsgfVxuICAxMDAlIHsgdG9wOiAxMDAlOyBvcGFjaXR5OiAwOyB9XG59XG5cbi5sb2FkaW5nLXRleHQge1xuICBtYXJnaW4tdG9wOiAxMHB4O1xuICBmb250LWZhbWlseTogJ0NvdXJpZXIgTmV3JywgbW9ub3NwYWNlO1xuICBmb250LXNpemU6IDAuOHJlbTtcbiAgbGV0dGVyLXNwYWNpbmc6IDAuM3JlbTtcbiAgY29sb3I6IHZhcigtLXRleHQtc3ViKTtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgYW5pbWF0aW9uOiBibGluayAycyBpbmZpbml0ZTtcbn1cblxuQGtleWZyYW1lcyBibGluayB7XG4gIDAlLCAxMDAlIHsgb3BhY2l0eTogMC41OyB9XG4gIDUwJSB7IG9wYWNpdHk6IDE7IH1cbn1cblxuLy8gLS0tIFJlc3BvbnNpdmVuZXNzIC0tLVxuQG1lZGlhIChtYXgtd2lkdGg6IDYwMHB4KSB7XG4gIC5zeW1waG9ueS1sb2FkZXIgeyB0cmFuc2Zvcm06IHNjYWxlKDAuNyk7IH1cbiAgLmFuaW1hdGVkLWxvZ28geyBmb250LXNpemU6IDIuNXJlbTsgbGV0dGVyLXNwYWNpbmc6IDAuM3JlbTsgfVxuICAubG9nby1zZWN0aW9uIHsgbWFyZ2luLXRvcDogMDsgfVxufVxuIiwiPHRlbXBsYXRlPlxuICA8di1jYXJkIGNsYXNzPVwicHktNSBhcHAtY29udGFpbmVyXCI+XG4gICAgPCEtLSDYudmG2YjYp9mGINin2YTYqti32KjZitmCIC0tPlxuICAgIDx2LXJvdyBqdXN0aWZ5PVwiY2VudGVyXCIgY2xhc3M9XCJtYi01XCI+XG4gICAgICA8di1jb2wgY29scz1cIjEyXCIgbWQ9XCI4XCIgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlxuICAgICAgICA8aDEgY2xhc3M9XCJhcHAtdGl0bGVcIj5HZXN0aW9uIGRlcyBUw6JjaGVzPC9oMT5cbiAgICAgIDwvdi1jb2w+XG4gICAgPC92LXJvdz5cblxuICAgIDwhLS0g2KXYttin2YHYqSDZhdmH2YXYqSDYrNiv2YrYr9ipIC0tPlxuICAgIDx2LXJvdyBjbGFzcz1cIm1iLTRcIj5cbiAgICAgIDx2LWNvbCBjb2xzPVwiMTJcIiBtZD1cIjhcIj5cbiAgICAgICAgPHYtdGV4dC1maWVsZCB2LW1vZGVsPVwibmV3VG9kb1wiIG1heGxlbmd0aD1cIjMwMFwiIGNvdW50ZXI9XCIzMDBcIiBsYWJlbD1cIkFqb3V0ZXIgdW5lIG5vdXZlbGxlIHTDomNoZVwiIG91dGxpbmVkXG4gICAgICAgICAgQGtleXVwLmVudGVyPVwiYWRkVG9kb1wiPlxuICAgICAgICA8L3YtdGV4dC1maWVsZD5cbiAgICAgIDwvdi1jb2w+XG4gICAgICA8di1jb2wgY29scz1cIjEyXCIgbWQ9XCI0XCI+XG4gICAgICAgIDx2LXNlbGVjdCB2LW1vZGVsPVwic2VsZWN0ZWRDb2xvclwiIDppdGVtcz1cImNvbG9yT3B0aW9uc1wiIGxhYmVsPVwiQ2hvaXNpc3NleiBsJ2ltcG9ydGFuY2VcIiBvdXRsaW5lZD5cbiAgICAgICAgPC92LXNlbGVjdD5cbiAgICAgIDwvdi1jb2w+XG4gICAgPC92LXJvdz5cblxuICAgIDwhLS0g2LnYsdi2INin2YTZhdmH2KfZhSAtLT5cbiAgICA8di1yb3c+XG4gICAgICA8di1jb2wgY29scz1cIjEyXCI+XG4gICAgICAgIDx0cmFuc2l0aW9uLWdyb3VwIG5hbWU9XCJmYWRlXCIgdGFnPVwiZGl2XCI+XG4gICAgICAgICAgPHYtY2hpcCB2LWZvcj1cInRvZG8gaW4gdG9kb3NcIiA6a2V5PVwidG9kby5pZFwiIDpjb2xvcj1cInRvZG8uY29sb3JcIiB0ZXh0LWNvbG9yPVwid2hpdGVcIiBjbGFzcz1cIm1hLTIgdG9kby1jaGlwXCJcbiAgICAgICAgICAgIGNsb3NlIEBjbGljaz1cInJlbW92ZVRvZG8odG9kby5pZClcIiBAY2xpY2s6Y2xvc2U9XCJyZW1vdmVUb2RvKHRvZG8uaWQpXCI+XG4gICAgICAgICAgICA8di1pY29uIGxlZnQ+bWRpLWNpcmNsZS1zbWFsbDwvdi1pY29uPlxuICAgICAgICAgICAge3sgdG9kby50ZXh0IH19XG4gICAgICAgICAgPC92LWNoaXA+XG4gICAgICAgIDwvdHJhbnNpdGlvbi1ncm91cD5cbiAgICAgIDwvdi1jb2w+XG4gICAgPC92LXJvdz5cblxuICAgIDwhLS0g2LnYsdi2INix2LPYp9im2YQg2KfZhNit2YPZhdipINi52YbYr9mF2Kcg2KrZg9mI2YYg2KfZhNmF2YfYp9mFINmB2KfYsdi62KkgLS0+XG4gICAgPHYtcm93IHYtaWY9XCJ0b2Rvcy5sZW5ndGggPT09IDBcIj5cbiAgICAgIDx2LWNvbCBjb2xzPVwiMTJcIiBjbGFzcz1cInRleHQtY2VudGVyXCI+XG4gICAgICAgIDx2LWNhcmQgY2xhc3M9XCJ3aXNkb20tY2FyZFwiIGVsZXZhdGlvbj1cIjVcIj5cbiAgICAgICAgICA8di1jYXJkLXRleHQ+XG4gICAgICAgICAgICA8cCBjbGFzcz1cIndpc2RvbS10ZXh0XCI+e3sgY3VycmVudFdpc2RvbS50ZXh0IH19PC9wPlxuICAgICAgICAgICAgPHAgY2xhc3M9XCJ3aXNkb20tYXV0aG9yXCI+4oCUIHt7IGN1cnJlbnRXaXNkb20uYXV0aG9yIH19PC9wPlxuICAgICAgICAgIDwvdi1jYXJkLXRleHQ+XG4gICAgICAgIDwvdi1jYXJkPlxuICAgICAgPC92LWNvbD5cbiAgICA8L3Ytcm93PlxuICA8L3YtY2FyZD5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG4vL2ltcG9ydCB7IHY0IGFzIHV1aWR2NCB9IGZyb20gJ3V1aWQnOyAvLyDZhdmD2KrYqNipIFVVSUQg2YTYpdmG2LTYp9ihINmF2LnYsdmB2KfYqiDZgdix2YrYr9ipXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuXG4gICAgICBuZXdUb2RvOiBcIlwiLCAvLyBOb3V2ZWxsZSB0w6JjaGVcbiAgICAgIHNlbGVjdGVkQ29sb3I6IFwiZ3JleVwiLCAvLyBDb3VsZXVyIHBhciBkw6lmYXV0XG4gICAgICB0b2RvczogW10sIC8vIExpc3RlIGRlcyB0w6JjaGVzXG4gICAgICBjb2xvck9wdGlvbnM6IFtcbiAgICAgICAgeyB0ZXh0OiBcIk9yZGluYWlyZVwiLCB2YWx1ZTogXCJncmV5XCIgfSxcbiAgICAgICAgeyB0ZXh0OiBcIkltcG9ydGFudFwiLCB2YWx1ZTogXCJvcmFuZ2VcIiB9LFxuICAgICAgICB7IHRleHQ6IFwiVXJnZW50XCIsIHZhbHVlOiBcInJlZFwiIH0sXG4gICAgICBdLCAvLyBPcHRpb25zIGRlcyBjb3VsZXVyc1xuICAgICAgd2lzZG9tTWVzc2FnZXM6IFtcbiAgICAgICAgeyB0ZXh0OiBcItin2YTYudmF2YQg2YfZiCDYp9mE2KPYs9in2LMg2KfZhNiw2Yog2KrZj9io2YbZiSDYudmE2YrZhyDYp9mE2K3Zitin2Kkg2KfZhNmG2KfYrNit2KkuXCIsIGF1dGhvcjogXCLYo9ix2LPYt9mIXCIgfSxcbiAgICAgICAgeyB0ZXh0OiBcIkxlIHRyYXZhaWwgZXN0IGxhIGNsw6kgZGUgdG91dGUgcsOpdXNzaXRlLlwiLCBhdXRob3I6IFwiVmljdG9yIEh1Z29cIiB9LFxuICAgICAgICB7IHRleHQ6IFwi2KfZhNil2KjYr9in2Lkg2YfZiCDYp9mE2LDZg9in2KEg2KfZhNiw2Yog2YrZhNmH2YguXCIsIGF1dGhvcjogXCLYo9mE2KjYsdiqINij2YrZhti02KrYp9mK2YZcIiB9LFxuICAgICAgICB7IHRleHQ6IFwiTGUgc3VjY8OocyBlc3QgbGEgc29tbWUgZGUgcGV0aXRzIGVmZm9ydHMgcsOpcMOpdMOpcyBqb3VyIGFwcsOocyBqb3VyLlwiLCBhdXRob3I6IFwiUm9iZXJ0IENvbGxpZXJcIiB9LFxuICAgICAgICB7IHRleHQ6IFwi2YTYpyDYqtmG2KrYuNixINin2YTYuNix2YjZgSDYp9mE2YXYq9in2YTZitip2Iwg2KfYqNiv2KMg2KfZhNii2YYg2YjYrdmI2YQg2KfZhNi42LHZiNmBINil2YTZiSDZhdir2KfZhNmK2KkuXCIsIGF1dGhvcjogXCLYrNmK2YUg2LHZiNmGXCIgfSxcbiAgICAgIF0sIC8vINmC2KfYptmF2Kkg2KfZhNit2YPZhVxuICAgICAgY3VycmVudFdpc2RvbTogeyB0ZXh0OiBcIlwiLCBhdXRob3I6IFwiXCIgfSwgLy8g2KfZhNit2YPZhdipINin2YTYrdin2YTZitipXG4gICAgICB3aXNkb21JbnRlcnZhbDogbnVsbCwgLy8g2YXYpNmC2Kog2KrYutmK2YrYsSDYp9mE2K3Zg9mF2KlcbiAgICB9O1xuICB9LFxuICBjcmVhdGVkKCkge1xuICAgIHRoaXMubG9hZFRvZG9zKCk7IC8vINiq2K3ZhdmK2YQg2KfZhNmF2YfYp9mFINi52YbYryDYqNiv2KEg2KfZhNiq2LfYqNmK2YJcbiAgICB0aGlzLnN0YXJ0V2lzZG9tSW50ZXJ2YWwoKTsgLy8g2KjYr9ihINi52LHYtiDYp9mE2K3Zg9mFXG4gIH0sXG4gIGJlZm9yZURlc3Ryb3koKSB7XG4gICAgdGhpcy5zdG9wV2lzZG9tSW50ZXJ2YWwoKTsgLy8g2KXZitmC2KfZgSDYp9mE2YXYpNmC2Kog2LnZhtivINiq2K/ZhdmK2LEg2KfZhNmF2YPZiNmGXG4gIH0sXG4gIG1ldGhvZHM6IHtcbiAgICAvLyDYpdi22KfZgdipINmF2YfZhdipINis2K/Zitiv2KlcbiAgICBhZGRUb2RvKCkge1xuICAgICAgaWYgKHRoaXMubmV3VG9kby50cmltKCkgPT09IFwiXCIpIHJldHVybjsgLy8g2KfZhNiq2KPZg9ivINmF2YYg2KPZhiDYp9mE2YbYtSDYutmK2LEg2YHYp9ix2LpcbiAgICAgIHRoaXMudG9kb3MucHVzaCh7XG4gICAgICAgIGlkOiBEYXRlLm5vdygpLCAvLyDYpdmG2LTYp9ihINmF2LnYsdmBINmB2LHZitivINmE2YTZhdmH2YXYqVxuICAgICAgICB0ZXh0OiB0aGlzLm5ld1RvZG8sXG4gICAgICAgIGNvbG9yOiB0aGlzLnNlbGVjdGVkQ29sb3IsXG4gICAgICB9KTtcbiAgICAgIHRoaXMubmV3VG9kbyA9IFwiXCI7IC8vINmF2LPYrSDYrdmC2YQg2KfZhNil2K/Yrtin2YRcbiAgICAgIHRoaXMuc2F2ZVRvZG9zKCk7IC8vINit2YHYuCDYp9mE2YXZh9in2YUg2YHZiiBsb2NhbFN0b3JhZ2VcbiAgICB9LFxuICAgIC8vINil2LLYp9mE2Kkg2YXZh9mF2KlcbiAgICByZW1vdmVUb2RvKGlkKSB7XG4gICAgICBsZXQgdG9kbyA9IHRoaXMudG9kb3MuZmlsdGVyKHRvZG8gPT4gdG9kby5pZCA9PT0gaWQpO1xuICAgICAgaWYgKGNvbmZpcm0oXCLDinRlcy12b3VzIHPDu3IgZGUgdm91bG9pciBzdXBwcmltZXIgY2V0dGUgVE9ETyA/ICBcIiArIHRvZG9bMF0udGV4dCkpIHtcbiAgICAgICAgdGhpcy50b2RvcyA9IHRoaXMudG9kb3MuZmlsdGVyKHRvZG8gPT4gdG9kby5pZCAhPT0gaWQpO1xuICAgICAgICB0aGlzLnNhdmVUb2RvcygpOyAvLyDYrdmB2Lgg2KfZhNmF2YfYp9mFINio2LnYryDYp9mE2KrYudiv2YrZhFxuICAgICAgfVxuICAgIH0sXG4gICAgLy8g2K3Zgdi4INin2YTZhdmH2KfZhSDZgdmKIGxvY2FsU3RvcmFnZVxuICAgIHNhdmVUb2RvcygpIHtcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFwidG9kb3NcIiwgSlNPTi5zdHJpbmdpZnkodGhpcy50b2RvcykpO1xuICAgIH0sXG4gICAgLy8g2KrYrdmF2YrZhCDYp9mE2YXZh9in2YUg2YXZhiBsb2NhbFN0b3JhZ2VcbiAgICBsb2FkVG9kb3MoKSB7XG4gICAgICBjb25zdCBzYXZlZFRvZG9zID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJ0b2Rvc1wiKTtcbiAgICAgIGlmIChzYXZlZFRvZG9zKSB7XG4gICAgICAgIHRoaXMudG9kb3MgPSBKU09OLnBhcnNlKHNhdmVkVG9kb3MpO1xuICAgICAgfVxuICAgIH0sXG4gICAgLy8g2KfYrtiq2YrYp9ixINit2YPZhdipINi52LTZiNin2KbZitipXG4gICAgZ2V0UmFuZG9tV2lzZG9tKCkge1xuICAgICAgY29uc3QgcmFuZG9tSW5kZXggPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiB0aGlzLndpc2RvbU1lc3NhZ2VzLmxlbmd0aCk7XG4gICAgICB0aGlzLmN1cnJlbnRXaXNkb20gPSB0aGlzLndpc2RvbU1lc3NhZ2VzW3JhbmRvbUluZGV4XTtcbiAgICB9LFxuICAgIC8vINio2K/YoSDYudix2LYg2KfZhNit2YPZhSDZg9mEIDUg2KvZiNin2YbZjVxuICAgIHN0YXJ0V2lzZG9tSW50ZXJ2YWwoKSB7XG4gICAgICB0aGlzLndpc2RvbUludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy50b2Rvcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICB0aGlzLmdldFJhbmRvbVdpc2RvbSgpO1xuICAgICAgICB9XG4gICAgICB9LCA1MDAwKTsgLy8g2KrYutmK2YrYsSDYp9mE2K3Zg9mF2Kkg2YPZhCA1INir2YjYp9mG2Y1cbiAgICB9LFxuICAgIC8vINil2YrZgtin2YEg2LnYsdi2INin2YTYrdmD2YVcbiAgICBzdG9wV2lzZG9tSW50ZXJ2YWwoKSB7XG4gICAgICBjbGVhckludGVydmFsKHRoaXMud2lzZG9tSW50ZXJ2YWwpO1xuICAgIH0sXG4gIH0sXG59O1xuPC9zY3JpcHQ+XG5cbjxzdHlsZSBzY29wZWQ+XG4vKiDYp9mE2KXYt9in2LEg2KfZhNis2YXYp9mE2Yog2YTZhNit2KfZiNmK2KkgKi9cbi5hcHAtY29udGFpbmVyIHtcbiBcbiBcbiAgYm9yZGVyLXJhZGl1czogMTZweDtcbiAgYm94LXNoYWRvdzogMCA4cHggMTZweCByZ2JhKDAsIDAsIDAsIDAuMSk7XG4gIHBhZGRpbmc6IDMwcHg7XG4gIG1heC13aWR0aDogODAwcHg7XG4gIG1hcmdpbjogMCBhdXRvO1xufVxuXG4vKiDYudmG2YjYp9mGINin2YTYqti32KjZitmCICovXG4uYXBwLXRpdGxlIHtcbiAgZm9udC1zaXplOiAyNnB4O1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgY29sb3I6ICM0NDQ0NDQ7XG4gIHRleHQtc2hhZG93OiAxcHggMXB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMSk7XG59XG5cbi8qINmF2LjZh9ixINin2YTZhdmH2KfZhSAqL1xuLnRvZG8tY2hpcCB7XG4gIGZvbnQtc2l6ZTogMTZweDtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgYm9yZGVyLXJhZGl1czogMjBweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2YxZjFmMTtcbiAgY29sb3I6ICMzMzMzMzM7XG4gIGJveC1zaGFkb3c6IDAgNHB4IDZweCByZ2JhKDAsIDAsIDAsIDAuMDUpO1xuICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlO1xufVxuXG4udG9kby1jaGlwOmhvdmVyIHtcbiAgdHJhbnNmb3JtOiBzY2FsZSgxLjA1KTtcbiAgYm94LXNoYWRvdzogMCA2cHggMTBweCByZ2JhKDAsIDAsIDAsIDAuMSk7XG59XG5cbi8qINiq2KPYq9mK2LHYp9iqINin2YTYp9mG2KrZgtin2YTYp9iqICovXG4uZmFkZS1lbnRlci1hY3RpdmUsXG4uZmFkZS1sZWF2ZS1hY3RpdmUge1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuNXMgZWFzZSwgdHJhbnNmb3JtIDAuNXMgZWFzZTtcbn1cblxuLmZhZGUtZW50ZXIsXG4uZmFkZS1sZWF2ZS10byB7XG4gIG9wYWNpdHk6IDA7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgyMHB4KTtcbn1cblxuLyog2KjYt9in2YLYqSDYp9mE2K3Zg9mF2KkgKi9cbi53aXNkb20tY2FyZCB7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzAwZGVnLCAjZmZmZmZmLCAjZjVmNWY1KTtcbiAgYm9yZGVyLXJhZGl1czogMTJweDtcbiAgcGFkZGluZzogMjBweDtcbiAgbWFyZ2luOiAyMHB4IGF1dG87XG4gIG1heC13aWR0aDogNjAwcHg7XG4gIGJveC1zaGFkb3c6IDAgNnB4IDEycHggcmdiYSgwLCAwLCAwLCAwLjEpO1xufVxuXG4ud2lzZG9tLXRleHQge1xuICBmb250LXNpemU6IDE4cHg7XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgY29sb3I6ICM1NTU1NTU7XG59XG5cbi53aXNkb20tYXV0aG9yIHtcbiAgZm9udC1zaXplOiAxNnB4O1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgY29sb3I6ICM4ODg4ODg7XG4gIG1hcmdpbi10b3A6IDEwcHg7XG59XG48L3N0eWxlPlxuIiwiPHRlbXBsYXRlPlxuICA8di1jb250YWluZXI+XG4gICAgPGRpdiB2LWlmPVwiIWxvYWRpbmcgJiZwcm9kdWN0c0JlbG93Q29zdCAmJiBwcm9kdWN0c0JlbG93Q29zdC5sZW5ndGg9PTBcIiBjbGFzcz1cInRleHQtY2VudGVyIHBhLTVcIj5cbiAgICAgIDx2LWFsZXJ0IHR5cGU9XCJzdWNjZXNzXCIgZGVuc2Ugb3V0bGluZWQgaWNvbj1cIm1kaS1jaGVjay1jaXJjbGUtb3V0bGluZVwiPlxuICAgICAgICAgICAgICB7eyBULm5vUHJvZHVjdHNCZWxvd0Nvc3RJblJlY2VpcHQgfX1cbiAgICAgICAgICAgIDwvdi1hbGVydD5cbiAgICAgPC9kaXY+XG4gICAgPCEtLSDYudix2LYg2KfZhNmF2K3YqtmI2Ykg2KjYudivINin2YTYqtit2YXZitmEINmI2LnYr9mFINmI2KzZiNivINij2K7Yt9in2KEgLS0+XG4gICAgPGRpdiB2LWVsc2UtaWY9XCIhbG9hZGluZyAmJiAhZXJyb3IgJiYgcmVwb3J0RGF0YVwiPlxuICAgICAgPHYtY2FyZD5cbiAgICAgICAgPCEtLSDYp9iz2KrYrtiv2KfZhSDZhdix2KzYuSDYp9mE2YjYtdmEINmB2Yog2KfZhNi52YbZiNin2YYg2KXYsNinINmD2KfZhiDZhdiq2KfYrdin2YsgLS0+XG4gICAgICAgIDx2LWNhcmQtdGl0bGU+XG4gICAgICAgICAge3sgVC5zYWxlc0JlbG93Q29zdFRpdGxlIH19XG4gICAgICAgICAgPHNwYW4gdi1pZj1cInJlcG9ydERhdGEucmVmXCIgY2xhc3M9XCJmb250LXdlaWdodC1yZWd1bGFyIGdyZXktLXRleHQgdGV4dC0tZGFya2VuLTEgbWwtMlwiPlxuICAgICAgICAgICAgKHt7IFQuc2FsZXNSZWNlaXB0TGFiZWwgfX06IHt7IHJlcG9ydERhdGEucmVmIH19KVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC92LWNhcmQtdGl0bGU+XG4gICAgICAgIDx2LWNhcmQtc3VidGl0bGUgdi1pZj1cInJlcG9ydERhdGEuY2xpZW50Tm9tXCI+XG4gICAgICAgICAge3sgVC5jbGllbnRMYWJlbCB9fToge3sgcmVwb3J0RGF0YS5jbGllbnROb20gfX1cbiAgICAgICAgPC92LWNhcmQtc3VidGl0bGU+XG4gICAgICAgIDx2LWRpdmlkZXI+PC92LWRpdmlkZXI+XG5cbiAgICAgICAgPHYtY2FyZC10ZXh0PlxuICAgICAgICAgIDwhLS0g2KfZhNiq2K3ZgtmCINmF2YYg2YjYrNmI2K8g2YXZhtiq2KzYp9iqINmF2KjYp9i52Kkg2KjYrtiz2KfYsdipIC0tPlxuICAgICAgICAgIDxkaXYgdi1pZj1cInByb2R1Y3RzQmVsb3dDb3N0ICYmIHByb2R1Y3RzQmVsb3dDb3N0Lmxlbmd0aCA+IDBcIj5cbiAgICAgICAgICAgIDx2LWFsZXJ0IHR5cGU9XCJlcnJvclwiIGRlbnNlIG91dGxpbmVkIGNsYXNzPVwibWItNFwiPlxuICAgICAgICAgICAgICA8di1pY29uIHNtYWxsIGxlZnQ+bWRpLWFsZXJ0LW9jdGFnb24tb3V0bGluZTwvdi1pY29uPlxuICAgICAgICAgICAgICA8c3Ryb25nPnt7IFQud2FybmluZ0xhYmVsIH19PC9zdHJvbmc+IHt7IFQuc2FsZXNCZWxvd0Nvc3RXYXJuaW5nU2luZ2xlLnJlcGxhY2UoJ3tjb3VudH0nLCBwcm9kdWN0c0JlbG93Q29zdC5sZW5ndGgpIH19XG4gICAgICAgICAgICA8L3YtYWxlcnQ+XG5cbiAgICAgICAgICAgIDwhLS0g2KzYr9mI2YQg2LnYsdi2INin2YTZhdmG2KrYrNin2Kog2KfZhNmF2KjYp9i52Kkg2KjYrtiz2KfYsdipIC0tPlxuICAgICAgICAgICAgPHYtZGF0YS10YWJsZVxuICAgICAgICAgICAgICA6aGVhZGVycz1cInRyYW5zbGF0ZWRQcm9kdWN0SGVhZGVyc1wiXG4gICAgICAgICAgICAgIDppdGVtcz1cInByb2R1Y3RzQmVsb3dDb3N0XCJcbiAgICAgICAgICAgICAgOml0ZW1zLXBlci1wYWdlPVwiMTBcIiAgXG4gICAgICAgICAgICAgIGl0ZW0ta2V5PVwicHJvZHVjdElkXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJlbGV2YXRpb24tMVwiXG4gICAgICAgICAgICAgIDpuby1kYXRhLXRleHQ9XCJULm5vUHJvZHVjdHNCZWxvd0Nvc3RJblJlY2VpcHRcIlxuICAgICAgICAgICAgICA6Zm9vdGVyLXByb3BzPVwieyAnaXRlbXMtcGVyLXBhZ2UtdGV4dCc6IFQuaXRlbXNQZXJQYWdlVGV4dCB9XCJcbiAgICAgICAgICAgICAgZGVuc2VcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPCEtLSDYqtmG2LPZitmCINi52YXZiNivINiz2LnYsSDYp9mE2KjZiti5IC0tPlxuICAgICAgICAgICAgICA8dGVtcGxhdGUgdi1zbG90Oml0ZW0uYWN0dWFsU2VsbGluZ1ByaWNlVHRjPVwieyBpdGVtIH1cIj5cbiAgICAgICAgICAgICAgICA8di1jaGlwIHNtYWxsIG91dGxpbmVkIGNvbG9yPVwicmVkXCI+XG4gICAgICAgICAgICAgICAgICAge3sgZm9ybWF0Q3VycmVuY3koaXRlbS5hY3R1YWxTZWxsaW5nUHJpY2VUdGMpIH19XG4gICAgICAgICAgICAgICAgPC92LWNoaXA+XG4gICAgICAgICAgICAgIDwvdGVtcGxhdGU+XG5cbiAgICAgICAgICAgICAgPCEtLSDYqtmG2LPZitmCINi52YXZiNivINiz2LnYsSDYp9mE2KrZg9mE2YHYqSAtLT5cbiAgICAgICAgICAgICAgPHRlbXBsYXRlIHYtc2xvdDppdGVtLmNvc3RQcmljZVR0Yz1cInsgaXRlbSB9XCI+XG4gICAgICAgICAgICAgICAgIDx2LWNoaXAgc21hbGwgb3V0bGluZWQgY29sb3I9XCJibHVlLWdyZXlcIj5cbiAgICAgICAgICAgICAgICAgICB7eyBmb3JtYXRDdXJyZW5jeShpdGVtLmNvc3RQcmljZVR0YykgfX1cbiAgICAgICAgICAgICAgICAgPC92LWNoaXA+XG4gICAgICAgICAgICAgIDwvdGVtcGxhdGU+XG5cbiAgICAgICAgICAgICAgIDwhLS0g2YrZhdmD2YYg2KXYttin2YHYqSDYo9i52YXYr9ipINij2K7YsdmJINmF2KvZhCDYp9mE2YPZhdmK2Kkg2KXYsNinINmE2LLZhSDYp9mE2KPZhdixIC0tPlxuICAgICAgICAgICAgICAgPHRlbXBsYXRlIHYtc2xvdDppdGVtLnF1YW50aXR5PVwieyBpdGVtIH1cIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9udC13ZWlnaHQtbWVkaXVtXCI+e3sgaXRlbS5xdWFudGl0eSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+XG5cbiAgICAgICAgICAgIDwvdi1kYXRhLXRhYmxlPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwhLS0g2LHYs9in2YTYqSDZgdmKINit2KfZhCDYudiv2YUg2YjYrNmI2K8g2YXZhtiq2KzYp9iqINmF2KjYp9i52Kkg2KjYrtiz2KfYsdipIC0tPlxuICAgICAgICAgIDxkaXYgdi1lbHNlPlxuICAgICAgICAgICAgPHYtYWxlcnQgdHlwZT1cInN1Y2Nlc3NcIiBkZW5zZSBvdXRsaW5lZCBpY29uPVwibWRpLWNoZWNrLWNpcmNsZS1vdXRsaW5lXCI+XG4gICAgICAgICAgICAgIHt7IFQubm9Qcm9kdWN0c0JlbG93Q29zdEluUmVjZWlwdCB9fVxuICAgICAgICAgICAgPC92LWFsZXJ0PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3YtY2FyZC10ZXh0PlxuICAgICAgPC92LWNhcmQ+XG4gICAgPC9kaXY+XG4gICAgIDwhLS0g2K3Yp9mE2KfYqiDYp9mE2KrYrdmF2YrZhCDZiNin2YTYrti32KMgLS0+XG4gICBcblxuICAgIDwhLS0g2K3Yp9mE2KfYqiDYp9mE2KrYrdmF2YrZhCDZiNin2YTYrti32KMgLS0+XG4gICAgPGRpdiB2LWVsc2UtaWY9XCJsb2FkaW5nXCIgY2xhc3M9XCJ0ZXh0LWNlbnRlciBwYS01XCI+XG4gICAgICA8di1wcm9ncmVzcy1jaXJjdWxhciBpbmRldGVybWluYXRlIGNvbG9yPVwicHJpbWFyeVwiPjwvdi1wcm9ncmVzcy1jaXJjdWxhcj5cbiAgICAgIDxwIGNsYXNzPVwibXQtMlwiPnt7IFQubG9hZGluZ0RhdGEgfX08L3A+XG4gICAgPC9kaXY+XG4gICAgPGRpdiB2LWVsc2UtaWY9XCJlcnJvclwiPlxuICAgICAgPHYtYWxlcnQgdHlwZT1cImVycm9yXCIgcHJvbWluZW50IGJvcmRlcj1cImxlZnRcIiBpY29uPVwibWRpLWFsZXJ0LWNpcmNsZS1vdXRsaW5lXCI+XG4gICAgICAgIHt7IFQubG9hZGluZ0Vycm9yIH19OiB7eyBlcnJvciB9fVxuICAgICAgPC92LWFsZXJ0PlxuICAgIDwvZGl2PlxuICAgIDwhLS0g2K3Yp9mE2Kkg2LnYr9mFINmI2KzZiNivINio2YrYp9mG2KfYqiDYo9iz2KfYs9in2YsgKNmC2K8g2YTYpyDYqtit2K/YqyDYpdiw2Kcg2YPYp9mGINin2YTYrti32KMg2YrYudin2YTYrNmH2KcpIC0tPlxuICAgICA8ZGl2IHYtZWxzZSBjbGFzcz1cInRleHQtY2VudGVyIHBhLTVcIj5cbiAgICAgICAgIDx2LWFsZXJ0IHR5cGU9XCJpbmZvXCIgb3V0bGluZWQgaWNvbj1cIm1kaS1pbmZvcm1hdGlvbi1vdXRsaW5lXCI+XG4gICAgICAgICAgICAge3sgVC5ub0FuYWx5c2lzRGF0YUZvclJlY2VpcHQgfX1cbiAgICAgICAgIDwvdi1hbGVydD5cbiAgICA8L2Rpdj5cbiAgPC92LWNvbnRhaW5lcj5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG5pbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnO1xuXG4vLyAtLS0g2KfZhNiq2LHYrNmF2KfYqiDYp9mE2YXYrdiv2KvYqSAtLS1cbmNvbnN0IHRyYW5zbGF0aW9ucyA9IHtcbiAgZnI6IHtcbiAgICAvLyAuLi4gKNin2K3YqtmB2Lgg2KjYp9mE2KrYsdis2YXYp9iqINin2YTYudin2YXYqSDZhdir2YQgbG9hZGluZ0Vycm9yLCBpdGVtc1BlclBhZ2VUZXh0KVxuICAgIGxvYWRpbmdEYXRhOiBcIkNoYXJnZW1lbnQgZGVzIGRvbm7DqWVzLi4uXCIsXG4gICAgbG9hZGluZ0Vycm9yOiBcIkVycmV1ciBkZSBjaGFyZ2VtZW50IGRlcyBkb25uw6llc1wiLFxuICAgIG5vQW5hbHlzaXNEYXRhRm9yUmVjZWlwdDogXCJJbXBvc3NpYmxlIGRlIHLDqWN1cMOpcmVyIGxlcyBkb25uw6llcyBkJ2FuYWx5c2UgcG91ciBjZSBib24gZGUgdmVudGUuXCIsXG4gICAgc2FsZXNCZWxvd0Nvc3RUaXRsZTogXCJBbGVydGUgOiBQcm9kdWl0cyB2ZW5kdXMgw6AgcGVydGVcIiwgLy8g2LnZhtmI2KfZhiDYo9io2LPYt1xuICAgIHNhbGVzUmVjZWlwdExhYmVsOiBcIkJvbiBkZSBWZW50ZVwiLFxuICAgIGNsaWVudExhYmVsOiBcIkNsaWVudFwiLFxuICAgIHdhcm5pbmdMYWJlbDogXCJBdHRlbnRpb24gIVwiLFxuICAgIHNhbGVzQmVsb3dDb3N0V2FybmluZ1NpbmdsZTogXCJMZXMge2NvdW50fSBwcm9kdWl0KHMpIHN1aXZhbnQocykgb250IMOpdMOpIHZlbmR1cyDDoCB1biBwcml4IGluZsOpcmlldXIgw6AgbGV1ciBjb8O7dCBUVEMuXCIsIC8vINix2LPYp9mE2Kkg2YXYrti12LXYqSDZhNmI2LXZhCDZiNin2K3Yr1xuICAgIG5vUHJvZHVjdHNCZWxvd0Nvc3RJblJlY2VpcHQ6IFwiTGUgZmljaGllciBhIMOpdMOpIGV4YW1pbsOpIGF2ZWMgc3VjY8Oocy5cIiwgLy8g2LHYs9in2YTYqSDZhdiu2LXYtdipXG4gICAgaXRlbXNQZXJQYWdlVGV4dDogXCLDiWzDqW1lbnRzIHBhciBwYWdlIDpcIixcbiAgICBub3RBcHBsaWNhYmxlOiBcIk4vQVwiLFxuICAgICAvLyDYsdik2YjYsyDYrNiv2YjZhCDYp9mE2YXZhtiq2KzYp9iqXG4gICAgIHByb2R1Y3RIZWFkZXJzOiBbXG4gICAgICAgIC8vIHsgdGV4dDogJ0lEIFByb2R1aXQnLCB2YWx1ZTogJ3Byb2R1Y3RJZCcsIHNvcnRhYmxlOiBmYWxzZSwgd2lkdGg6ICcxMCUnIH0sIC8vINmK2YXZg9mGINil2LbYp9mB2KrZhyDYpdiw2Kcg2YTYstmFINin2YTYo9mF2LFcbiAgICAgICAgeyB0ZXh0OiAnRMOpc2lnbmF0aW9uIFByb2R1aXQnLCB2YWx1ZTogJ2Rlc2lnbmF0aW9uJywgc29ydGFibGU6IHRydWUsIHdpZHRoOiAnNDUlJyB9LFxuICAgICAgICB7IHRleHQ6ICdRdMOpJywgdmFsdWU6ICdxdWFudGl0eScsIHNvcnRhYmxlOiBmYWxzZSwgYWxpZ246ICdlbmQnLCB3aWR0aDogJzEwJScgfSxcbiAgICAgICAgeyB0ZXh0OiAnUHJpeCBWZW50ZSBVLiAoVFRDKScsIHZhbHVlOiAnYWN0dWFsU2VsbGluZ1ByaWNlVHRjJywgc29ydGFibGU6IHRydWUsIGFsaWduOiAnZW5kJywgd2lkdGg6ICcyMCUnIH0sXG4gICAgICAgIHsgdGV4dDogJ0Nvw7t0IFUuIChUVEMpJywgdmFsdWU6ICdjb3N0UHJpY2VUdGMnLCBzb3J0YWJsZTogdHJ1ZSwgYWxpZ246ICdlbmQnLCB3aWR0aDogJzIwJScgfSxcbiAgICBdLFxuICB9LFxuICBhcjoge1xuICAgIC8vIC4uLiAo2KfZhNiq2LHYrNmF2KfYqiDYp9mE2LnYsdio2YrYqSDYp9mE2YXZgtin2KjZhNipKVxuICAgIGxvYWRpbmdEYXRhOiBcItis2KfYsdmKINiq2K3ZhdmK2YQg2KfZhNio2YrYp9mG2KfYqi4uLlwiLFxuICAgIGxvYWRpbmdFcnJvcjogXCLYrti32KMg2YHZiiDYqtit2YXZitmEINin2YTYqNmK2KfZhtin2KpcIixcbiAgICBub0FuYWx5c2lzRGF0YUZvclJlY2VpcHQ6IFwi2KrYudiw2LEg2KzZhNioINio2YrYp9mG2KfYqiDYp9mE2KrYrdmE2YrZhCDZhNmI2LXZhCDYp9mE2KjZiti5INmH2LDYpy5cIixcbiAgICBzYWxlc0JlbG93Q29zdFRpdGxlOiBcItiq2YbYqNmK2Yc6INmF2YbYqtis2KfYqiDYqNmK2LnYqiDYqNij2YLZhCDZhdmGINiq2YPZhNmB2KrZh9inXCIsXG4gICAgc2FsZXNSZWNlaXB0TGFiZWw6IFwi2YjYtdmEINin2YTYqNmK2LlcIixcbiAgICBjbGllbnRMYWJlbDogXCLYp9mE2LnZhdmK2YRcIixcbiAgICB3YXJuaW5nTGFiZWw6IFwi2KrYrdiw2YrYsSFcIixcbiAgICBzYWxlc0JlbG93Q29zdFdhcm5pbmdTaW5nbGU6IFwi2KrZhSDYp9mE2LnYq9mI2LEg2LnZhNmJIHtjb3VudH0g2YXZhtiq2Kwv2YXZhtiq2KzYp9iqINiq2YUg2KjZiti52YfYpyDYqNiz2LnYsSDYo9mC2YQg2YXZhiDYqtmD2YTZgdiq2YfYpyAoVFRDKS5cIixcbiAgICBub1Byb2R1Y3RzQmVsb3dDb3N0SW5SZWNlaXB0OiBcItiq2YUg2YHYrdi1INin2YTZhdmE2YEg2KjZhtis2KfYrS5cIixcbiAgICBpdGVtc1BlclBhZ2VUZXh0OiBcIti52YbYp9i12LEg2YTZg9mEINi12YHYrdipOlwiLFxuICAgIG5vdEFwcGxpY2FibGU6IFwi2LrZitixINmF2KrYp9itXCIsXG4gICAgLy8g2LHYpNmI2LMg2KzYr9mI2YQg2KfZhNmF2YbYqtis2KfYqlxuICAgICBwcm9kdWN0SGVhZGVyczogW1xuICAgICAgICAvLyB7IHRleHQ6ICfZhdi52LHZgSDYp9mE2YXZhtiq2KwnLCB2YWx1ZTogJ3Byb2R1Y3RJZCcsIHNvcnRhYmxlOiBmYWxzZSwgd2lkdGg6ICcxMCUnIH0sXG4gICAgICAgIHsgdGV4dDogJ9in2LPZhSDYp9mE2YXZhtiq2KwnLCB2YWx1ZTogJ2Rlc2lnbmF0aW9uJywgc29ydGFibGU6IHRydWUsIHdpZHRoOiAnNDUlJyB9LFxuICAgICAgICB7IHRleHQ6ICfYp9mE2YPZhdmK2KknLCB2YWx1ZTogJ3F1YW50aXR5Jywgc29ydGFibGU6IGZhbHNlLCBhbGlnbjogJ2VuZCcsIHdpZHRoOiAnMTAlJyB9LFxuICAgICAgICB7IHRleHQ6ICfYs9i52LEg2KjZiti5INin2YTZiNit2K/YqSAoVFRDKScsIHZhbHVlOiAnYWN0dWFsU2VsbGluZ1ByaWNlVHRjJywgc29ydGFibGU6IHRydWUsIGFsaWduOiAnZW5kJywgd2lkdGg6ICcyMCUnIH0sXG4gICAgICAgIHsgdGV4dDogJ9iq2YPZhNmB2Kkg2KfZhNmI2K3Yr9ipIChUVEMpJywgdmFsdWU6ICdjb3N0UHJpY2VUdGMnLCBzb3J0YWJsZTogdHJ1ZSwgYWxpZ246ICdlbmQnLCB3aWR0aDogJzIwJScgfSxcbiAgICAgIF0sXG4gIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgcHJvcHM6IHtcbiAgICAvLyDYp9iz2KrZgtio2KfZhCDZhdi52LHZgSDZiNi12YQg2KfZhNio2YrYuSDZg9mAIHByb3Ag2LHZgtmF2Yog2YjZhdi32YTZiNioXG4gICAgaWRib25zdmVudGU6IHtcbiAgICAgICAgdHlwZTogTnVtYmVyLFxuICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICB9XG4gIH0sXG4gIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxvYWRpbmc6IGZhbHNlLFxuICAgICAgZXJyb3I6IG51bGwsXG4gICAgICAvLyByZXBvcnREYXRhINiz2YrYrdiq2YjZiiDYp9mE2KLZhiDYudmE2Ykg2YPYp9im2YYg2YjYp9it2K86IHsgcmVmOiAnLi4uJywgY2xpZW50Tm9tOiAnLi4uJywgcHJvZHVjdHM6IFsuLi5dIH0g2KPZiCBudWxsXG4gICAgICByZXBvcnREYXRhOiBudWxsLFxuICAgIFxuICAgIH07XG4gIH0sXG4gIGNvbXB1dGVkOiB7XG4gICAgY3VycmVudExhbmcoKSB7XG4gICAgICAvLyDZitmF2YPZhtmDINin2LPYqtiu2K/Yp9mFIFZ1ZUkxOG4g2KPZiCDYo9mKINmF2YPYqtio2Kkg2KPYrtix2Ykg2YTYqtit2K/ZitivINin2YTZhNi62Kkg2KfZhNit2KfZhNmK2KlcbiAgICAgIHJldHVybiB0aGlzLiR2dWV0aWZ5LmxhbmcuY3VycmVudCB8fCAnZnInOyAvLyDYp9mB2KrYsdin2LbZitin2Ysg2KfZhNmB2LHZhtiz2YrYqVxuICAgIH0sXG5cbiAgICAvLyDYp9mE2YjYtdmI2YQg2YTZhNiq2LHYrNmF2Kkg2KjZhtin2KHZiyDYudmE2Ykg2KfZhNmE2LrYqSDYp9mE2K3Yp9mE2YrYqVxuICAgIFQoKSB7XG4gICAgICByZXR1cm4gdHJhbnNsYXRpb25zW3RoaXMuY3VycmVudExhbmddIHx8IHRyYW5zbGF0aW9ucy5mcjtcbiAgICB9LFxuICAgIC8vINiu2KfYtdmK2Kkg2YXYrdiz2YjYqNipINmE2YTYrdi12YjZhCDYudmE2Ykg2YLYp9im2YXYqSDYp9mE2YXZhtiq2KzYp9iqINmF2KjYp9i02LHYqVxuICAgIHByb2R1Y3RzQmVsb3dDb3N0KCkge1xuICAgICAgLy8g2KrYo9mD2K8g2YXZhiDYo9mGIHJlcG9ydERhdGEg2YXZiNis2YjYryDZiNij2YYg2YTYr9mK2Ycg2K7Yp9i12YrYqSBwcm9kdWN0cyDZiNmH2Yog2YXYtdmB2YjZgdipXG4gICAgICByZXR1cm4gdGhpcy5yZXBvcnREYXRhPy5wcm9kdWN0cyAmJiBBcnJheS5pc0FycmF5KHRoaXMucmVwb3J0RGF0YS5wcm9kdWN0cylcbiAgICAgICAgICAgICA/IHRoaXMucmVwb3J0RGF0YS5wcm9kdWN0c1xuICAgICAgICAgICAgIDogW107XG4gICAgfSxcbiAgICAvLyDYrtin2LXZitipINmF2K3Ys9mI2KjYqSDZhNmE2K3YtdmI2YQg2LnZhNmJINix2KTZiNizINin2YTYrNiv2YjZhCDYp9mE2YXYqtix2KzZhdipINmE2YTZhdmG2KrYrNin2KpcbiAgICB0cmFuc2xhdGVkUHJvZHVjdEhlYWRlcnMoKSB7XG4gICAgICByZXR1cm4gdGhpcy5ULnByb2R1Y3RIZWFkZXJzIHx8IFtdO1xuICAgIH0sXG4gIH0sXG4gIG1ldGhvZHM6IHtcbiAgICAvLyDYqtmG2LPZitmCINin2YTYudmF2YTYqSDZhNmE2LnYsdi2XG4gICAgZm9ybWF0Q3VycmVuY3kodmFsdWUpIHtcbiAgICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkKSByZXR1cm4gdGhpcy5ULm5vdEFwcGxpY2FibGUgfHwgJ04vQSc7XG4gICAgICBjb25zdCBudW1iZXIgPSBwYXJzZUZsb2F0KHZhbHVlKTtcbiAgICAgIGlmIChpc05hTihudW1iZXIpKSByZXR1cm4gdGhpcy5ULm5vdEFwcGxpY2FibGUgfHwgJ04vQSc7XG4gICAgICByZXR1cm4gbnVtYmVyLnRvRml4ZWQoMikucmVwbGFjZSgvXFxkKD89KFxcZHszfSkrXFwuKS9nLCAnJCYsJykgKyAnICcgKyAodGhpcy5jdXJyZW50TGFuZyA9PT0gJ2FyJyA/ICfYry7ZhS4nIDogJ0RocycpOyAvLyDZhdir2KfZhCDZhNil2LbYp9mB2Kkg2KfZhNi52YXZhNipXG4gICAgfSxcbiAgICAvLyDYrNmE2Kgg2KfZhNio2YrYp9mG2KfYqiDZhdmGINin2YTZgCBBUEkg2YTZhNmAIGlkINin2YTZhdit2K/Yr1xuICAgIGZldGNoRGF0YSgpIHtcbiAgICAgIC8vINin2YTYqtij2YPYryDZhdmGINij2YYg2KfZhNmAIElEINi12KfZhNitINmC2KjZhCDYp9mE2KXYsdiz2KfZhFxuICAgICAgaWYgKCF0aGlzLmlkYm9uc3ZlbnRlIHx8IHRoaXMuaWRib25zdmVudGUgPD0gMCkge1xuICAgICAgICAgIHRoaXMuZXJyb3IgPSBcItmF2LnYsdmBINmI2LXZhCDYp9mE2KjZiti5INi62YrYsSDYtdin2YTYrS5cIjtcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgICB0aGlzLmVycm9yID0gbnVsbDtcbiAgICAgIHRoaXMucmVwb3J0RGF0YSA9IG51bGw7IC8vINil2LnYp9iv2Kkg2KrYudmK2YrZhiDYp9mE2KjZitin2YbYp9iqINmC2KjZhCDYp9mE2LfZhNioINin2YTYrNiv2YrYr1xuXG4gICAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICAgIC8vINin2LPYqtiu2K/Yp9mFINin2LPZhSDYp9mE2YXYudmE2YXYqSDYp9mE2LDZiiDZitiq2YjZgti52Ycg2KfZhNmAIEFQSSAo2KfZgdiq2LHYttmG2Kcg2KPZhtmHIGlkYm9uc3ZlbnRlKVxuICAgICAgICBpZGJvbnN2ZW50ZTogdGhpcy5pZGJvbnN2ZW50ZSxcbiAgICAgIH07XG5cbiAgICAgIC8vINin2LPYqtiv2LnYp9ihINin2YTZgCBBUEkg2KfZhNis2K/ZitivXG4gICAgICBheGlvcy5nZXQoJy9hbmFseXNlcHJvZHVpdHNibCcsIHsgcGFyYW1zIH0pXG4gICAgICAgIC50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAvLyDYqtit2YLZgiDZhdmF2Kcg2KXYsNinINmD2KfZhiBzYWxlc0JlbG93Q29zdCDZhdmI2KzZiNiv2YvYpyDZgdmKINin2YTYp9iz2KrYrNin2KjYqSDZiNio2Ycg2KjZitin2YbYp9iqXG4gICAgICAgICAgaWYgKHJlc3BvbnNlLmRhdGEgJiYgcmVzcG9uc2UuZGF0YS5zYWxlc0JlbG93Q29zdCAmJiB0eXBlb2YgcmVzcG9uc2UuZGF0YS5zYWxlc0JlbG93Q29zdCA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAvLyDYqNmF2Kcg2KPZhiDYp9mE2K/Yp9mE2KkgUEhQINiq2LHYrNi5IFtpZCA9PiBkYXRhXSwg2YbYrdiq2KfYrCDZhNin2LPYqtiu2LHYp9isIGRhdGFcbiAgICAgICAgICAgICBjb25zdCBkYXRhS2V5cyA9IE9iamVjdC5rZXlzKHJlc3BvbnNlLmRhdGEuc2FsZXNCZWxvd0Nvc3QpO1xuICAgICAgICAgICAgIGlmIChkYXRhS2V5cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgIC8vINin2YTYrdi12YjZhCDYudmE2Ykg2KfZhNio2YrYp9mG2KfYqiDZhdmGINij2YjZhCDZhdmB2KrYp9itICjZitis2Kgg2KPZhiDZitmD2YjZhiDZh9mG2KfZgyDZiNin2K3YryDZgdmC2LcpXG4gICAgICAgICAgICAgICAgIHRoaXMucmVwb3J0RGF0YSA9IHJlc3BvbnNlLmRhdGEuc2FsZXNCZWxvd0Nvc3RbZGF0YUtleXNbMF1dO1xuICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAvLyDYqtmFINin2YTYudir2YjYsSDYudmE2Ykgc2FsZXNCZWxvd0Nvc3Qg2YTZg9mG2Ycg2YHYp9ix2LogKNmE2Kcg2KrZiNis2K8g2YXZhtiq2KzYp9iqINio2K7Ys9in2LHYqSlcbiAgICAgICAgICAgICAgICAgIC8vINmK2YXZg9mGINiq2LnZitmK2YYgcmVwb3J0RGF0YSDYpdmE2Ykg2YPYp9im2YYg2YHYp9ix2Log2KPZiCBudWxs2Iwg2K3Ys9ioINmD2YrZgdmK2Kkg2YXYudin2YTYrNiq2Ycg2YHZiiDYp9mE2YLYp9mE2KhcbiAgICAgICAgICAgICAgICAgIC8vINmH2YbYpyDYs9mG2LnYqtio2LHZhyDZg9ij2YbZhyDZhNinINiq2YjYrNivINio2YrYp9mG2KfYqiDYqtiz2KrYrdmCINin2YTYudix2LYg2YHZiiDYp9mE2KzYr9mI2YRcbiAgICAgICAgICAgICAgICAgIHRoaXMucmVwb3J0RGF0YSA9IHsgcHJvZHVjdHM6IFtdIH07IC8vINij2YggeyBwcm9kdWN0czogW10gfSDYpdiw2Kcg2KPYsdiv2Kog2LHYs9in2YTYqSBcItmE2Kcg2YrZiNis2K9cIiDYr9in2K7ZhCDYp9mE2KzYr9mI2YRcbiAgICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vINmE2YUg2YrYqtmFINin2YTYudir2YjYsSDYudmE2Ykg2KjZitin2YbYp9iqIHNhbGVzQmVsb3dDb3N0INmF2KrZiNmC2LnYqVxuICAgICAgICAgICAgdGhpcy5yZXBvcnREYXRhID0gbnVsbDtcbiAgICAgICAgICAgIC8vINmK2YXZg9mGINiq2LPYrNmK2YQg2KrYrdiw2YrYsSDZh9mG2Kcg2KXYsNinINij2LHYr9iqXG4gICAgICAgICAgICBjb25zb2xlLndhcm4oXCJBUEkgcmVzcG9uc2UgZGlkIG5vdCBjb250YWluIHRoZSBleHBlY3RlZCAnc2FsZXNCZWxvd0Nvc3QnIG9iamVjdCBzdHJ1Y3R1cmUuXCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKGVycm9yID0+IHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKFwiRXJyb3IgZmV0Y2hpbmcgc2FsZXMgYmVsb3cgY29zdCBkYXRhOlwiLCBlcnJvcik7XG4gICAgICAgICAgdGhpcy5lcnJvciA9IGVycm9yLnJlc3BvbnNlPy5kYXRhPy5tZXNzYWdlIHx8IGVycm9yLnJlc3BvbnNlPy5kYXRhPy5lcnJvciB8fCBlcnJvci5tZXNzYWdlIHx8ICdVbmtub3duIGVycm9yIG9jY3VycmVkJztcbiAgICAgICAgICB0aGlzLnJlcG9ydERhdGEgPSBudWxsO1xuICAgICAgICB9KVxuICAgICAgICAuZmluYWxseSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIH0pO1xuICAgIH0sXG4gICBcbiAgfSxcbiAgLy8g2KfYs9iq2K/Yudin2KEgZmV0Y2hEYXRhINi52YbYryDYqtit2YXZitmEINin2YTZhdmD2YjZhiDZiNi52YbYryDYqti62YrZitixINin2YTZgCBwcm9wIGlkYm9uc3ZlbnRlXG4gIHdhdGNoOiB7XG4gICAgICBpZGJvbnN2ZW50ZToge1xuICAgICAgICAgIGhhbmRsZXI6ICdmZXRjaERhdGEnLCAvLyDYp9iz2KrYr9i52KfYoSBmZXRjaERhdGEg2LnZhtivINiq2LrZitmK2LEgaWRib25zdmVudGVcbiAgICAgICAgICBpbW1lZGlhdGU6IHRydWUgICAgICAvLyDYp9iz2KrYr9i52KfYoSBmZXRjaERhdGEg2YHZiNix2KfZiyDYudmG2K8g2KrYrdmF2YrZhCDYp9mE2YXZg9mI2YYg2KjYp9mE2YAgaWQg2KfZhNij2YjZhNmKXG4gICAgICB9XG4gIH0sXG4vLyAgIG1vdW50ZWQoKSB7IC8vINmE2YUg2YbYudivINio2K3Yp9is2Kkg2YTZgCBtb3VudGVkINmE2KPZhiB3YXRjaCDZhdi5IGltbWVkaWF0ZTogdHJ1ZSDYs9mK2YLZiNmFINio2KfZhNmF2YfZhdipXG4vLyAgICAgLy8gdGhpcy5mZXRjaERhdGEoKTtcbi8vICAgfVxufTtcbjwvc2NyaXB0PlxuXG48c3R5bGUgc2NvcGVkPlxuLyog2KPZhtmF2KfYtyDZhNiq2K3Ys9mK2YYg2KfZhNmF2LjZh9ixICovXG4udi1jYXJkLXRpdGxlIHtcbiAgY29sb3I6ICNjNjI4Mjg7IC8qINmE2YjZhiDYo9it2YXYsSDYr9in2YPZhiDZhNmE2KrZhtio2YrZhyAqL1xuICAvKiBwYWRkaW5nLWJvdHRvbTogOHB4OyAqL1xufVxuLnYtY2FyZC1zdWJ0aXRsZSB7XG4gICAgcGFkZGluZy10b3A6IDA7XG4gICAgcGFkZGluZy1ib3R0b206IDE2cHg7XG59XG4udi1kYXRhLXRhYmxlIHtcbiAgZm9udC1zaXplOiAwLjlyZW07IC8qINit2KzZhSDYrti3INmF2YbYp9iz2Kgg2YTZhNmC2LHYp9ih2KkgKi9cbn1cbi52LWRhdGEtdGFibGUgdGgge1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkICFpbXBvcnRhbnQ7IC8qINiu2Lcg2LnYsdmK2LYg2YTYsdik2YjYsyDYp9mE2KPYudmF2K/YqSAqL1xuICAgIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNjUpICFpbXBvcnRhbnQ7IC8qINmE2YjZhiDYo9i62YXZgiDZgtmE2YrZhNin2Ysg2YTYsdik2YjYsyDYp9mE2KPYudmF2K/YqSAqL1xufVxuXG4udi1jaGlwIHtcbiAgICBmb250LXdlaWdodDogNTAwO1xufVxuXG4vKiDZitmF2YPZhtmDINil2LbYp9mB2Kkg2KfZhNmF2LLZitivINmF2YYg2KfZhNij2YbZhdin2Lcg2K3Ys9ioINin2YTYrdin2KzYqSAqL1xuPC9zdHlsZT4iLCI8dGVtcGxhdGU+XG4gIDx2LXJvdz5cbiAgICA8di1jb2w+XG4gICAgICA8di1jYXJkPlxuXG4gICAgICAgIDx2LWNhcmQtdGl0bGU+XG4gICAgICAgICAgPHYtaWNvbiBjbGFzcz1cIm1yLTJcIiBzbWFsbD5tZGktY2xvY2s8L3YtaWNvbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImNhcHRpb24gZ3JleS0tdGV4dCBmb250LXdlaWdodC1saWdodFwiPnt7XG4gICAgICAgICAgICBuZXcgRGF0ZSgpLnRvTG9jYWxlU3RyaW5nKClcbiAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICA8di1zcGFjZXI+PC92LXNwYWNlcj5cbiAgICAgICAgICA8di10ZXh0LWZpZWxkXG4gICAgICAgICAgICB2LW1vZGVsPVwic2VhcmNoXCJcbiAgICAgICAgICAgIGFwcGVuZC1pY29uPVwibWRpLW1hZ25pZnlcIlxuICAgICAgICAgICBcbiAgICAgICAgICAgIGxhYmVsPVwicmVjaGVyY2hlIFwiXG4gICAgICAgICAgICBzaW5nbGUtbGluZVxuICAgICAgICAgICAgaGlkZS1kZXRhaWxzXG4gICAgICAgICAgPjwvdi10ZXh0LWZpZWxkPlxuICAgICAgICA8L3YtY2FyZC10aXRsZT5cblxuXG4gICAgICAgIDx2LWRhdGEtdGFibGVcbiAgICAgICAgICBkZW5zZVxuICAgICAgICAgIDpzZWFyY2g9XCJzZWFyY2hcIlxuICAgICAgICAgIDpsb2FkaW5nPVwibG9hZGluZ1wiXG4gICAgICAgICAgOmhlYWRlcnM9XCJoZWFkZXJzXCJcbiAgICAgICAgICA6aXRlbXM9XCJsaXN0aW1wZXllRmFjdHVyZVwiXG4gICAgICAgICAgbm8tcmVzdWx0cy10ZXh0PVwiQXVjdW4gw6lsw6ltZW50IHRyb3V2w6lcIlxuICAgICAgICAgIG5vLWRhdGEtdGV4dD1cIkF1Y3VuIMOpbMOpbWVudCB0cm91dsOpXCJcbiAgICAgICAgICBsb2NhbGU9XCJmclwiXG4gICAgICAgICAgOmZvb3Rlci1wcm9wcz1cIntcbiAgICAgICAgICAgIGl0ZW1zUGVyUGFnZVRleHQ6ICfDiWxlbWVudHMgcGFyIHBhZ2U6JyxcbiAgICAgICAgICAgIGl0ZW1zUGVyUGFnZUFsbDogJ1RvdXMnLFxuICAgICAgICAgICAgbmV4dFBhZ2U6ICdQYWdlIHN1aXZhbnRlJyxcbiAgICAgICAgICAgIHByZXZQYWdlOiAnUGFnZSBwcsOpY8OpZGVudGUnLFxuICAgICAgICAgICAgZmlyc3RQYWdlOiAnUHJlbWnDqHJlIHBhZ2UnLFxuICAgICAgICAgICAgbGFzdFBhZ2U6ICdEZXJuacOocmUgcGFnZScsXG4gICAgICAgICAgICBwYWdlVGV4dDogJ3swfS17MX0gZGUgezJ9JyxcbiAgICAgICAgICB9XCJcbiAgICAgICAgICBjbGFzcz1cImVsZXZhdGlvbi0xXCJcbiAgICAgICAgPlxuICAgICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6aXRlbS5tb250YW50VHRjPVwieyBpdGVtIH1cIj5cbiAgICAgICAgICAgIDx2LWNoaXAgY29sb3I9XCJyZWRcIiBkYXJrIHYtaWY9XCJpdGVtLmRlamFyZWdsZSA9PSAwXCI+e3tcbiAgICAgICAgICAgICAgaXRlbS5tb250YW50VHRjXG4gICAgICAgICAgICB9fTwvdi1jaGlwPlxuICAgICAgICAgICAgPHYtY2hpcCBjb2xvcj1cIm9yYW5nZVwiIGRhcmsgdi1lbHNlPnt7IGl0ZW0ubW9udGFudFR0YyB9fTwvdi1jaGlwPlxuICAgICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgIDwvdi1kYXRhLXRhYmxlPlxuXG5cblxuICAgICAgICA8di1jYXJkLXRleHQgY2xhc3M9XCJwdC0wXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlIGZvbnQtd2VpZ2h0LWxpZ2h0IG1iLTIgcmVkLS10ZXh0XCI+XG4gICAgICAgICAgICBGYWN0dXJlcyBjbGllbnRzIGltcGF5w6llc1xuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWJoZWFkaW5nIGZvbnQtd2VpZ2h0LWxpZ2h0IGdyZXktLXRleHRcIj5cbiAgICAgICAgICAgIDEgZW4gcmV0YXJkIChSZXRhcmQgPSBEYXRlIGRlIHLDqWbDqXJlbmNlIDwgRGF0ZSBkdSBqb3VyICsyIGpvdXJzKVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDx2LWRpdmlkZXIgY2xhc3M9XCJteS0yXCI+PC92LWRpdmlkZXI+XG4gICAgICAgICAgPHYtaWNvbiBjbGFzcz1cIm1yLTJcIiBzbWFsbD5tZGktY2xvY2s8L3YtaWNvbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImNhcHRpb24gZ3JleS0tdGV4dCBmb250LXdlaWdodC1saWdodFwiPnt7XG4gICAgICAgICAgICBuZXcgRGF0ZSgpLnRvTG9jYWxlU3RyaW5nKClcbiAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgPC92LWNhcmQtdGV4dD5cbiAgICAgICAgXG4gICAgICA8L3YtY2FyZD5cbiAgICA8L3YtY29sPlxuICA8L3Ytcm93PlxuPC90ZW1wbGF0ZT5cbjxzY3JpcHQ+XG5pbXBvcnQgaTE4biBmcm9tIFwiQC9wbHVnaW5zL2kxOG5cIjtcbmltcG9ydCBheGlvcyBmcm9tIFwiYXhpb3NcIjtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgZGF0YTogKCkgPT4gKHtcbiAgICBsb2FkaW5nOiBmYWxzZSxcbiAgICBzZWFyY2g6IFwiXCIsXG4gICAgaGVhZGVyczogW1xuICAgICAgeyB0ZXh0OiBpMThuLnQoXCJyZWZcIiksIHZhbHVlOiBcInJlZlwiIH0sXG4gICAgICB7IHRleHQ6IGkxOG4udChcImNsaWVudFwiKSwgdmFsdWU6IFwiY2xpZW50XCIgfSxcblxuICAgICAgeyB0ZXh0OiBpMThuLnQoXCJtb250YW50VHRjXCIpLCB2YWx1ZTogXCJtb250YW50VHRjXCIgfSxcbiAgICAgIHsgdGV4dDogaTE4bi50KFwiZGVqYXJlZ2xlXCIpLCB2YWx1ZTogXCJkZWphcmVnbGVcIiB9LFxuICAgICAgeyB0ZXh0OiBpMThuLnQoXCJkYXRlXCIpLCB2YWx1ZTogXCJkYXRlXCIgfSxcbiAgICBdLFxuICAgIGxpc3RpbXBleWVGYWN0dXJlOiBbXSxcbiAgfSksXG4gIGNvbXB1dGVkOiB7XG4gICAgcGF0aHNfc3RhdGlzdGlxdWVzKCkge1xuICAgICAgcmV0dXJuIHRoaXMuJHN0b3JlLmdldHRlcnNbXCJnZXRfc3RhdGlzdGlxdWVzXCJdO1xuICAgIH0sXG4gIH0sXG4gIG1ldGhvZHM6IHtcbiAgICBjb3VudChwYXRocywgY29udHJvbGxlcikge1xuICAgICAgbGV0IHBhdGggPSBwYXRoc1tjb250cm9sbGVyXTtcbiAgICAgIHRoaXMubG9hZGluZz10cnVlO1xuICAgICAgaWYgKHBhdGggIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGF4aW9zXG4gICAgICAgICAgLmdldChwYXRoLCB7ICBoZWFkZXJzOiB7XG4gICAgICAgICAgQXV0aG9yaXphdGlvbjogIGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiSldUVG9rZW5cIiksXG4gICAgICAgIH0sIHBhcmFtczoge30gfSlcbiAgICAgICAgICAudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgIHRoaXMubGlzdGltcGV5ZUZhY3R1cmUgPSByZXNwb25zZS5kYXRhW1wiaW1wZXllXCJdO1xuICAgICAgICAgICAgIHRoaXMubG9hZGluZz1mYWxzZTtcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJwYXRoXCIpO1xuICAgICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0sXG4gICAgc3RhcnQoKSB7XG4gICAgICB0aGlzLmNvdW50KHRoaXMucGF0aHNfc3RhdGlzdGlxdWVzLCBcImZhY3R1cmVzdmVudGVzXCIpO1xuICAgIH0sXG4gIH0sXG5cbiAgbW91bnRlZCgpIHtcbiAgICB0aGlzLnN0YXJ0KCk7XG4gIH0sXG4gIHdhdGNoOiB7XG4gICAgcGF0aHNfc3RhdGlzdGlxdWVzKCkge1xuICAgICAgdGhpcy5zdGFydCgpO1xuICAgIH0sXG4gIH0sXG59O1xuPC9zY3JpcHQ+XG5cblxuPHN0eWxlPlxuLnYtc2hlZXQtLW9mZnNldCB7XG4gIHRvcDogLTI0cHg7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cbjwvc3R5bGU+IiwiPHRlbXBsYXRlPlxuICA8di1yb3c+XG4gICAgPHYtY29sPlxuICAgICAgPHYtY2FyZCBjbGFzcz1cIm10LTQgbXgtYXV0b1wiPlxuICA8di1jYXJkLXRpdGxlPlxuICAgICAgICAgIDx2LWljb24gY2xhc3M9XCJtci0yXCIgc21hbGw+bWRpLWNsb2NrPC92LWljb24+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJjYXB0aW9uIGdyZXktLXRleHQgZm9udC13ZWlnaHQtbGlnaHRcIj57e1xuICAgICAgICAgICAgbmV3IERhdGUoKS50b0xvY2FsZVN0cmluZygpXG4gICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgPHYtc3BhY2VyPjwvdi1zcGFjZXI+XG4gICAgICAgICAgPHYtdGV4dC1maWVsZFxuICAgICAgICAgICAgdi1tb2RlbD1cInNlYXJjaFwiXG4gICAgICAgICAgICBhcHBlbmQtaWNvbj1cIm1kaS1tYWduaWZ5XCJcbiAgICAgICAgICAgXG4gICAgICAgICAgICBsYWJlbD1cInJlY2hlcmNoZSBcIlxuICAgICAgICAgICAgc2luZ2xlLWxpbmVcbiAgICAgICAgICAgIGhpZGUtZGV0YWlsc1xuICAgICAgICAgID48L3YtdGV4dC1maWVsZD5cbiAgICAgICAgPC92LWNhcmQtdGl0bGU+XG5cblxuICAgICBcbiAgICAgICAgICA8di1kYXRhLXRhYmxlXG4gICAgICAgICAgOmxvYWRpbmc9XCJsb2FkaW5nXCJcbiAgICAgICAgICAgIGRlbnNlXG4gICAgICAgICAgICA6c2VhcmNoPVwic2VhcmNoXCJcbiAgICAgICAgICAgIDpoZWFkZXJzPVwiaGVhZGVyc1wiXG4gICAgICAgICAgICA6aXRlbXM9XCJsaXN0aW1wZXllRmFjdHVyZVwiXG4gICAgICAgICAgIFxuICAgICAgICAgICBuby1yZXN1bHRzLXRleHQ9XCJBdWN1biDDqWzDqW1lbnQgdHJvdXbDqVwiXG4gICAgICAgICAgbm8tZGF0YS10ZXh0PVwiQXVjdW4gw6lsw6ltZW50IHRyb3V2w6lcIlxuICAgICAgICAgIGxvY2FsZT1cImZyXCJcbiAgICAgICAgICA6Zm9vdGVyLXByb3BzPVwie1xuICAgICAgICAgICAgaXRlbXNQZXJQYWdlVGV4dDogJ8OJbGVtZW50cyBwYXIgcGFnZTonLFxuICAgICAgICAgICAgaXRlbXNQZXJQYWdlQWxsOiAnVG91cycsXG4gICAgICAgICAgICBuZXh0UGFnZTogJ1BhZ2Ugc3VpdmFudGUnLFxuICAgICAgICAgICAgcHJldlBhZ2U6ICdQYWdlIHByw6ljw6lkZW50ZScsXG4gICAgICAgICAgICBmaXJzdFBhZ2U6ICdQcmVtacOocmUgcGFnZScsXG4gICAgICAgICAgICBsYXN0UGFnZTogJ0Rlcm5pw6hyZSBwYWdlJyxcbiAgICAgICAgICAgIHBhZ2VUZXh0OiAnezB9LXsxfSBkZSB7Mn0nLFxuICAgICAgICAgIH1cIlxuICAgICAgICAgIGNsYXNzPVwiZWxldmF0aW9uLTFcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6aXRlbS5tb250YW50VHRjPVwieyBpdGVtIH1cIj5cbiAgICAgICAgICAgICAgPHYtY2hpcCBjb2xvcj1cInJlZFwiIGRhcmsgdi1pZj1cIml0ZW0uZGVqYXJlZ2xlID09IDBcIj57e1xuICAgICAgICAgICAgICAgIGl0ZW0ubW9udGFudFR0Y1xuICAgICAgICAgICAgICB9fTwvdi1jaGlwPlxuICAgICAgICAgICAgICA8di1jaGlwIGNvbG9yPVwib3JhbmdlXCIgZGFyayB2LWVsc2U+e3sgaXRlbS5tb250YW50VHRjIH19PC92LWNoaXA+XG4gICAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICAgIDwvdi1kYXRhLXRhYmxlPlxuICAgICAgXG5cbiAgICAgICAgPHYtY2FyZC10ZXh0IGNsYXNzPVwicHQtMFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZSBmb250LXdlaWdodC1saWdodCBtYi0yIHJlZC0tdGV4dFwiPlxuICAgICAgICAgICAgRmFjdHVyZXMgZm91cm5pc3NldXJzIGltcGF5w6llc1xuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWJoZWFkaW5nIGZvbnQtd2VpZ2h0LWxpZ2h0IGdyZXktLXRleHRcIj5cbiAgICAgICAgICAgIDEgZW4gcmV0YXJkIChSZXRhcmQgPSBEYXRlIGRlIHLDqWbDqXJlbmNlIDwgRGF0ZSBkdSBqb3VyICsyIGpvdXJzKVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDx2LWRpdmlkZXIgY2xhc3M9XCJteS0yXCI+PC92LWRpdmlkZXI+XG4gICAgICAgICAgPHYtaWNvbiBjbGFzcz1cIm1yLTJcIiBzbWFsbD5tZGktY2xvY2s8L3YtaWNvbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImNhcHRpb24gZ3JleS0tdGV4dCBmb250LXdlaWdodC1saWdodFwiPnt7XG4gICAgICAgICAgICBuZXcgRGF0ZSgpLnRvTG9jYWxlU3RyaW5nKClcbiAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgPC92LWNhcmQtdGV4dD5cbiAgICAgIDwvdi1jYXJkPlxuICAgIDwvdi1jb2w+PC92LXJvd1xuICA+XG48L3RlbXBsYXRlPlxuPHNjcmlwdD5cbmltcG9ydCBpMThuIGZyb20gXCJAL3BsdWdpbnMvaTE4blwiO1xuaW1wb3J0IGF4aW9zIGZyb20gXCJheGlvc1wiO1xuZXhwb3J0IGRlZmF1bHQge1xuICBkYXRhOiAoKSA9PiAoe1xuICAgIGxvYWRpbmc6ZmFsc2UsXG4gICBcbiAgICAgICAgc2VhcmNoOiBcIlwiLFxuICAgIGhlYWRlcnM6IFtcbiAgICAgIHsgdGV4dDogaTE4bi50KFwiZm91cm5pc3NldXJcIiksIHZhbHVlOiBcImZvdXJuaXNzZXVyXCIgfSxcblxuICAgICAgeyB0ZXh0OiBpMThuLnQoXCJtb250YW50VHRjXCIpLCB2YWx1ZTogXCJtb250YW50VHRjXCIgfSxcbiAgICAgIHsgdGV4dDogaTE4bi50KFwiZGVqYXJlZ2xlXCIpLCB2YWx1ZTogXCJkZWphcmVnbGVcIiB9LFxuICAgICAgeyB0ZXh0OiBpMThuLnQoXCJkYXRlXCIpLCB2YWx1ZTogXCJkYXRlXCIgfSxcbiAgICBdLFxuICAgIGxpc3RpbXBleWVGYWN0dXJlOiBbXSxcbiAgfSksXG4gIGNvbXB1dGVkOiB7XG4gICAgcGF0aHNfc3RhdGlzdGlxdWVzKCkge1xuICAgICAgcmV0dXJuIHRoaXMuJHN0b3JlLmdldHRlcnNbXCJnZXRfc3RhdGlzdGlxdWVzXCJdO1xuICAgIH0sXG4gIH0sXG4gIG1ldGhvZHM6IHtcbiAgICBjb3VudChwYXRocywgY29udHJvbGxlcikge1xuICAgICAgbGV0IHBhdGggPSBwYXRoc1tjb250cm9sbGVyXTtcbiAgICAgICB0aGlzLmxvYWRpbmc9dHJ1ZTtcbiAgICAgIGlmIChwYXRoICE9IHVuZGVmaW5lZCkge1xuICAgICAgICBheGlvc1xuICAgICAgICAgIC5nZXQocGF0aCwgeyAgIGhlYWRlcnM6IHtcbiAgICAgICAgICBBdXRob3JpemF0aW9uOiAgbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJKV1RUb2tlblwiKSxcbiAgICAgICAgfSxwYXJhbXM6IHt9IH0pXG4gICAgICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmxpc3RpbXBleWVGYWN0dXJlID0gcmVzcG9uc2UuZGF0YVtcImltcGV5ZVwiXTtcbiAgICAgICAgICAgICB0aGlzLmxvYWRpbmc9ZmFsc2U7XG4gICAgICAgICAgfSlcbiAgICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFwicGF0aFwiKTtcbiAgICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHN0YXJ0KCkge1xuICAgICAgdGhpcy5jb3VudCh0aGlzLnBhdGhzX3N0YXRpc3RpcXVlcywgXCJmYWN0dXJlc2FjaGF0c1wiKTtcbiAgICB9LFxuICB9LFxuXG4gIG1vdW50ZWQoKSB7XG4gICAgdGhpcy5zdGFydCgpO1xuICB9LFxuICB3YXRjaDoge1xuICAgIHBhdGhzX3N0YXRpc3RpcXVlcygpIHtcbiAgICAgIHRoaXMuc3RhcnQoKTtcbiAgICB9LFxuICB9LFxufTtcbjwvc2NyaXB0PlxuPHN0eWxlPlxuLnYtc2hlZXQtLW9mZnNldCB7XG4gIHRvcDogLTI0cHg7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cbjwvc3R5bGU+IiwiPHRlbXBsYXRlPlxuICA8di1jYXJkID5cbiAgICA8di1jYXJkLXRpdGxlPlxuICAgICAgICAgIDx2LWljb24gY2xhc3M9XCJtci0yXCIgc21hbGw+bWRpLWNsb2NrPC92LWljb24+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJjYXB0aW9uIGdyZXktLXRleHQgZm9udC13ZWlnaHQtbGlnaHRcIj57e1xuICAgICAgICAgICAgbmV3IERhdGUoKS50b0xvY2FsZVN0cmluZygpXG4gICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgPHYtc3BhY2VyPjwvdi1zcGFjZXI+XG4gICAgICAgICAgPHYtdGV4dC1maWVsZFxuICAgICAgICAgICAgdi1tb2RlbD1cInNlYXJjaFwiXG4gICAgICAgICAgICBhcHBlbmQtaWNvbj1cIm1kaS1tYWduaWZ5XCJcbiAgICAgICAgICAgXG4gICAgICAgICAgICBsYWJlbD1cInJlY2hlcmNoZSBcIlxuICAgICAgICAgICAgc2luZ2xlLWxpbmVcbiAgICAgICAgICAgIGhpZGUtZGV0YWlsc1xuICAgICAgICAgID48L3YtdGV4dC1maWVsZD5cbiAgICAgICAgPC92LWNhcmQtdGl0bGU+XG5cblxuICAgICAgPHYtZGF0YS10YWJsZVxuICAgICAgOnNlYXJjaD1cInNlYXJjaFwiXG4gICAgICAgICAgOmxvYWRpbmc9XCJsb2FkaW5nXCJcbiAgICAgICAgZGVuc2VcbiAgICAgICAgaGlkZS1kZWZhdWx0LWZvb3RlclxuICAgICAgICA6aGVhZGVycz1cImhlYWRlcnNcIlxuICAgICAgICA6aXRlbXM9XCJsaXN0cmVnbGVtZW50ZW5hdHRlbnRlXCJcbiAgICAgICAgIG5vLXJlc3VsdHMtdGV4dD1cIkF1Y3VuIMOpbMOpbWVudCB0cm91dsOpXCJcbiAgICAgICAgICBuby1kYXRhLXRleHQ9XCJBdWN1biDDqWzDqW1lbnQgdHJvdXbDqVwiXG4gICAgICAgICAgbG9jYWxlPVwiZnJcIlxuICAgICAgICAgIDpmb290ZXItcHJvcHM9XCJ7XG4gICAgICAgICAgICBpdGVtc1BlclBhZ2VUZXh0OiAnw4lsZW1lbnRzIHBhciBwYWdlOicsXG4gICAgICAgICAgICBpdGVtc1BlclBhZ2VBbGw6ICdUb3VzJyxcbiAgICAgICAgICAgIG5leHRQYWdlOiAnUGFnZSBzdWl2YW50ZScsXG4gICAgICAgICAgICBwcmV2UGFnZTogJ1BhZ2UgcHLDqWPDqWRlbnRlJyxcbiAgICAgICAgICAgIGZpcnN0UGFnZTogJ1ByZW1pw6hyZSBwYWdlJyxcbiAgICAgICAgICAgIGxhc3RQYWdlOiAnRGVybmnDqHJlIHBhZ2UnLFxuICAgICAgICAgICAgcGFnZVRleHQ6ICd7MH0tezF9IGRlIHsyfScsXG4gICAgICAgICAgfVwiXG4gICAgICAgIGNsYXNzPVwiZWxldmF0aW9uLTFcIlxuICAgICAgPlxuXG4gICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6aXRlbS5zdGF0dXQ9XCJ7IGl0ZW0gfVwiPlxuXG4gICAgICAgICAgPHYtY2hpcCBjb2xvcj1cIm9yYW5nZVwiIGRhcmsgdi1pZj1cIihuZXcgRGF0ZShpdGVtLmRhdGVvcGVyYXRpb24pKS5nZXRUaW1lKCkgPj0gZGF0ZS5nZXRUaW1lKClcIj5cbiAgICAgICAgICAgIDxoMz5lbiBhdHRlbnRlIGNvbmZpcm1hdGlvbjwvaDM+XG4gICAgICAgICAgPC92LWNoaXA+XG5cbiAgICAgICAgICAgIDx2LWNoaXAgY29sb3I9XCJwaW5rXCIgZGFyayB2LWlmPVwiKG5ldyBEYXRlKGl0ZW0uZGF0ZW9wZXJhdGlvbikpLmdldFRpbWUoKSA8IGRhdGUuZ2V0VGltZSgpXCI+XG4gICAgICAgICAgICA8aDM+ZW4gYXR0ZW50ZSBjb25maXJtYXRpb248L2gzPlxuICAgICAgICAgICA8L3YtY2hpcD5cblxuICAgICAgICA8L3RlbXBsYXRlPlxuXG4gICAgICAgIFxuICAgICAgPC92LWRhdGEtdGFibGU+XG5cblxuXG5cbiAgICA8di1jYXJkLXRleHQgY2xhc3M9XCJwdC0wXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwidGl0bGUgZm9udC13ZWlnaHQtbGlnaHQgbWItMiByZWQtLXRleHRcIj5yZWdsZW1lbnQgZW4gYXR0ZW50ZTwvZGl2PlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInN1YmhlYWRpbmcgZm9udC13ZWlnaHQtbGlnaHQgZ3JleS0tdGV4dFwiXG4gICAgICA+MSBlbiByZXRhcmQgKFJldGFyZCA9IERhdGUgZGUgcsOpZsOpcmVuY2UgPiBEYXRlIGR1IGpvdXIgKzIgam91cnMpPC9kaXY+XG4gICAgICA8di1kaXZpZGVyIGNsYXNzPVwibXktMlwiPjwvdi1kaXZpZGVyPlxuICAgICAgPHYtaWNvbiBjbGFzcz1cIm1yLTJcIiBzbWFsbD5tZGktY2xvY2s8L3YtaWNvbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiY2FwdGlvbiBncmV5LS10ZXh0IGZvbnQtd2VpZ2h0LWxpZ2h0XCI+e3sobmV3IERhdGUoKSkudG9Mb2NhbGVTdHJpbmcoKX19PC9zcGFuPlxuICAgIDwvdi1jYXJkLXRleHQ+XG4gIDwvdi1jYXJkPlxuPC90ZW1wbGF0ZT5cbjxzY3JpcHQ+XG5pbXBvcnQgaTE4biBmcm9tIFwiQC9wbHVnaW5zL2kxOG5cIjtcbmltcG9ydCBheGlvcyBmcm9tIFwiYXhpb3NcIjtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgZGF0YTogKCkgPT4gKHtcblxuICAgIGRhdGU6IG5ldyBEYXRlKCksXG4gICAgc2VhcmNoOlwiXCIsXG4gICAgbG9hZGluZzpmYWxzZSxcblxuICAgIGhlYWRlcnM6IFtcbiAgICAgIHsgdGV4dDogaTE4bi50KFwiZGF0ZW9wZXJhdGlvblwiKSwgdmFsdWU6IFwiZGF0ZW9wZXJhdGlvblwiIH0sXG4gICAgICB7IHRleHQ6IGkxOG4udChcIm1vbnRhbnRcIiksIHZhbHVlOiBcIm1vbnRhbnRcIiB9LFxuXG4gICAgIFxuICAgICAgeyB0ZXh0OiBpMThuLnQoXCJzdGF0dXRcIiksIHZhbHVlOiBcInN0YXR1dFwiIH0sXG4gICAgICB7IHRleHQ6IGkxOG4udChcImZvdXJuaXNzZXVyXCIpLCB2YWx1ZTogXCJmb3Vybmlzc2V1clwiIH0sXG4gICAgICAgeyB0ZXh0OiBpMThuLnQoXCJjbGllbnRcIiksIHZhbHVlOiBcImNsaWVudFwiIH1cbiAgICBdLFxuICAgIGxpc3RyZWdsZW1lbnRlbmF0dGVudGU6IFtdXG4gIH0pLFxuICBjb21wdXRlZDoge1xuICAgIHBhdGhzX3N0YXRpc3RpcXVlcygpIHtcbiAgICAgIHJldHVybiB0aGlzLiRzdG9yZS5nZXR0ZXJzW1wiZ2V0X3N0YXRpc3RpcXVlc1wiXTtcbiAgICB9XG4gIH0sXG4gIG1ldGhvZHM6IHtcbiAgICBcbiAgICBjb3VudChwYXRocywgY29udHJvbGxlcikge1xuICAgICAgdGhpcy5sb2FkaW5nPXRydWU7XG4gICAgICBsZXQgcGF0aCA9IHBhdGhzW2NvbnRyb2xsZXJdO1xuICAgICAgaWYgKHBhdGggIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGF4aW9zXG4gICAgICAgICAgLmdldChwYXRoLCB7ICBoZWFkZXJzOiB7XG4gICAgICAgICAgQXV0aG9yaXphdGlvbjogIGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiSldUVG9rZW5cIiksXG4gICAgICAgIH0sIHBhcmFtczoge30gfSlcbiAgICAgICAgICAudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmc9ZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmxpc3RyZWdsZW1lbnRlbmF0dGVudGUgPSByZXNwb25zZS5kYXRhW1wiZGF0YVNldFwiXTtcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5jYXRjaChlcnJvciA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFwicGF0aFwiKTtcbiAgICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHN0YXJ0KCkge1xuICAgICAgdGhpcy5jb3VudCh0aGlzLnBhdGhzX3N0YXRpc3RpcXVlcywgXCJyZWxldmViYW5jYWlyZXNcIik7XG4gICAgfVxuICB9LFxuXG4gIG1vdW50ZWQoKSB7XG4gICAgdGhpcy5zdGFydCgpO1xuICB9LFxuICB3YXRjaDoge1xuICAgIHBhdGhzX3N0YXRpc3RpcXVlcygpIHtcbiAgICAgIHRoaXMuc3RhcnQoKTtcbiAgICB9XG4gIH1cbn07XG48L3NjcmlwdD5cbjxzdHlsZT5cbi52LXNoZWV0LS1vZmZzZXQge1xuICB0b3A6IC0yNHB4O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG48L3N0eWxlPiIsIi8vIEltcG9ydGF0aW9uIGRlIFZ1ZXRpZnkgYXByw6hzIGxhIGTDqWZpbml0aW9uIGRlIG5vcyB2YXJpYWJsZXNcclxuJGNvbG9yLXBhY2s6IHRydWVcclxuQGltcG9ydCAnfnZ1ZXRpZnkvc3JjL3N0eWxlcy9tYWluLnNhc3MnXHJcblxyXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gKiBbU3R5bGVzIEdsb2JhdXggJiBGb25kIGQnw6ljcmFuXVxyXG4gKi9cclxuLnRoZW1lLS1saWdodC52LWFwcGxpY2F0aW9uXHJcbiAgYmFja2dyb3VuZC1jb2xvcjogI0Y4RkFGQyAhaW1wb3J0YW50IC8vINiu2YTZgdmK2Kkg2YHYp9iq2K3YqSDYudi12LHZitipINmI2YXYsdmK2K3YqVxyXG5cclxuLnRoZW1lLS1kYXJrLnYtYXBwbGljYXRpb25cclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMEYxNzJBICFpbXBvcnRhbnQgLy8g2K7ZhNmB2YrYqSDYr9in2YPZhtipINin2K3Yqtix2KfZgdmK2KlcclxuXHJcbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAqIFtBbcOpbGlvcmF0aW9ucyBkZXMgQ29tcG9zYW50c11cclxuICovXHJcbi8vIEJvdXRvbnMgLSBTdHlsZSBtb2Rlcm5lIHNhbnMgYW5pbWF0aW9ucyBkaXN0cmF5YW50ZXNcclxuLnYtYnRuXHJcbiAgdGV4dC10cmFuc2Zvcm06IG5vbmVcclxuICBmb250LXdlaWdodDogNjAwXHJcbiAgbGV0dGVyLXNwYWNpbmc6IDAuNXB4XHJcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjE1cyBlYXNlLCBib3gtc2hhZG93IDAuMTVzIGVhc2UgLy8g2YHZgti3INiq2LrZitmK2LHYp9iqINiu2YHZitmB2KlcclxuICBcclxuICAmOm5vdCgudi1idG4tLWljb24pOm5vdCgudi1idG4tLXRleHQpOm5vdCgudi1idG4tLWZhYilcclxuICAgIGJveC1zaGFkb3c6IDAgMXB4IDNweCByZ2JhKDAsMCwwLDAuMSkgIWltcG9ydGFudCAvLyDYuNmEINin2K3Yqtix2KfZgdmKINiu2YHZitmBXHJcbiAgICAmOmhvdmVyXHJcbiAgICAgIGJveC1zaGFkb3c6IDAgMnB4IDZweCByZ2JhKDAsMCwwLDAuMTUpICFpbXBvcnRhbnQgLy8g2LLZitin2K/YqSDYrtmB2YrZgdipINmB2Yog2KfZhNi42YQg2YHZgti3XHJcbiAgICAmOmFjdGl2ZVxyXG4gICAgICBib3gtc2hhZG93OiAwIDFweCAycHggcmdiYSgwLDAsMCwwLjEyKSAhaW1wb3J0YW50XHJcblxyXG4vLyBDYXJ0ZXMgLSDYqti12YXZitmFINin2K3Yqtix2KfZgdmKINmG2LjZitmBINio2K/ZiNmGINit2LHZg9in2KpcclxuLnYtY2FyZFxyXG4gIGJvcmRlci1yYWRpdXM6IDEycHggIWltcG9ydGFudFxyXG4gIGJveC1zaGFkb3c6IDAgMXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMDYpLCAwIDFweCAycHggcmdiYSgwLCAwLCAwLCAwLjA0KSAhaW1wb3J0YW50XHJcbiAgdHJhbnNpdGlvbjogYm94LXNoYWRvdyAwLjE1cyBlYXNlIC8vINmB2YLYtyDYp9mE2LjZhFxyXG4gIFxyXG4gICY6aG92ZXJcclxuICAgIGJveC1zaGFkb3c6IDAgNHB4IDZweCByZ2JhKDAsIDAsIDAsIDAuMDgpLCAwIDJweCA0cHggcmdiYSgwLCAwLCAwLCAwLjA2KSAhaW1wb3J0YW50IC8vINiy2YrYp9iv2Kkg2K7ZgdmK2YHYqVxyXG5cclxuICAudi1jYXJkX190aXRsZVxyXG4gICAgZm9udC1zaXplOiAxLjE1cmVtXHJcbiAgICBmb250LXdlaWdodDogNjAwXHJcbiAgICBsZXR0ZXItc3BhY2luZzogLTAuMnB4XHJcbiAgICBjb2xvcjogdmFyKC0tdi1wcmltYXJ5LWJhc2UpXHJcblxyXG4vLyBCYXJyZSBkJ2FwcGxpY2F0aW9uIChBcHAgQmFyKSAtIEVmZmV0IFwiR2xhc3Ntb3JwaGlzbVwiXHJcbi52LWFwcC1iYXJcclxuICAmLnYtdG9vbGJhci52LXNoZWV0XHJcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuNHMgZWFzZS1vdXQsIGJveC1zaGFkb3cgMC40cyBlYXNlLW91dCAhaW1wb3J0YW50XHJcblxyXG4gICAgLy8gRWZmZXQgcG91ciBsZSB0aMOobWUgY2xhaXJcclxuICAgIC50aGVtZS0tbGlnaHQgJlxyXG4gICAgICBiYWNrZ3JvdW5kOiByZ2JhKDIzNCwgMjM0LCAyMzQsIDAuNykgIWltcG9ydGFudCAvLyBGb25kIGdyaXMgY2xhaXIgc2VtaS10cmFuc3BhcmVudFxyXG4gICAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMTBweClcclxuICAgICAgLXdlYmtpdC1iYWNrZHJvcC1maWx0ZXI6IGJsdXIoMTBweClcclxuICAgIFxyXG4gICAgLy8gRWZmZXQgcG91ciBsZSB0aMOobWUgc29tYnJlXHJcbiAgICAudGhlbWUtLWRhcmsgJlxyXG4gICAgICBiYWNrZ3JvdW5kOiByZ2JhKDMwLCAzMCwgMzAsIDAuNykgIWltcG9ydGFudCAvLyBGb25kIHNvbWJyZSBzZW1pLXRyYW5zcGFyZW50XHJcbiAgICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigxMHB4KVxyXG4gICAgICAtd2Via2l0LWJhY2tkcm9wLWZpbHRlcjogYmx1cigxMHB4KVxyXG5cclxuICAgIGJveC1zaGFkb3c6IDAgMnB4IDEwcHggcmdiYSgwLCAwLCAwLCAwLjA3KSAhaW1wb3J0YW50XHJcbiAgXHJcbiAgLnYtdG9vbGJhcl9fdGl0bGVcclxuICAgIGZvbnQtd2VpZ2h0OiA2MDBcclxuXHJcbiAgLnYtYnRuLS1pY29uOmhvdmVyXHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMDQpIC8vINiu2YHZitmBINis2K/Yp9mLXHJcbiAgICAudGhlbWUtLWRhcmsgJlxyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDYpXHJcblxyXG4vLyBDaGFtcHMgZGUgdGV4dGUgZXQgc8OpbGVjdGlvbiAtIFN0eWxlIG1vZGVybmVcclxuLnYtdGV4dC1maWVsZC0tb3V0bGluZWQsIC52LXNlbGVjdC0tb3V0bGluZWQsIC52LWF1dG9jb21wbGV0ZS0tb3V0bGluZWRcclxuICBmaWVsZHNldFxyXG4gICAgYm9yZGVyLXJhZGl1czogMTJweCAhaW1wb3J0YW50XHJcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlXHJcbiAgXHJcbiAgJjpob3Zlcjpub3QoLnYtaW5wdXQtLWlzLWZvY3VzZWQpXHJcbiAgICBmaWVsZHNldFxyXG4gICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tdi1wcmltYXJ5LWJhc2UtcmdiKSwgMC40KVxyXG5cclxuICAmLnYtaW5wdXQtLWlzLWZvY3VzZWRcclxuICAgIGZpZWxkc2V0XHJcbiAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdi1wcmltYXJ5LWJhc2UpICFpbXBvcnRhbnRcclxuICAgICAgYm9yZGVyLXdpZHRoOiAycHggIWltcG9ydGFudFxyXG4gICAgICBib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSh2YXIoLS12LXByaW1hcnktYmFzZS1yZ2IpLCAwLjEwKSAvLyDYo9iu2YFcclxuXHJcbi8vIFRhYmxlYXV4IGRlIGRvbm7DqWVzIChEYXRhIFRhYmxlcykgLSDYqti12YXZitmFINij2YbZitmCINmI2KfYrdiq2LHYp9mB2YpcclxuLnYtZGF0YS10YWJsZVxyXG4gIGJvcmRlci1yYWRpdXM6IDEycHggIWltcG9ydGFudFxyXG4gIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudFxyXG4gIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMCwwLDAsMC4wNilcclxuXHJcbiAgLnRoZW1lLS1kYXJrICZcclxuICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsMC4wOClcclxuXHJcbiAgdGhlYWRcclxuICAgIHRoXHJcbiAgICAgIGZvbnQtc2l6ZTogMC44cmVtICFpbXBvcnRhbnRcclxuICAgICAgZm9udC13ZWlnaHQ6IDcwMCAhaW1wb3J0YW50XHJcbiAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2VcclxuICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuOHB4ICFpbXBvcnRhbnRcclxuICAgICAgY29sb3I6IHZhcigtLXYtc2Vjb25kYXJ5LXRleHQtYmFzZSkgIWltcG9ydGFudFxyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsMCwwLDAuMDIpXHJcbiAgICAgIHBhZGRpbmctdG9wOiAxNnB4ICFpbXBvcnRhbnRcclxuICAgICAgcGFkZGluZy1ib3R0b206IDE2cHggIWltcG9ydGFudFxyXG5cclxuICAgICAgLnRoZW1lLS1kYXJrICZcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwyNTUsMjU1LDAuMDMpXHJcbiAgXHJcbiAgdGJvZHlcclxuICAgIHRyXHJcbiAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4xMnMgZWFzZVxyXG4gICAgICBcclxuICAgICAgJjpob3ZlclxyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0tdi1wcmltYXJ5LWJhc2UtcmdiKSwgMC4wMylcclxuICAgICAgXHJcbiAgICAgIHRkXHJcbiAgICAgICAgZm9udC1zaXplOiAwLjk1cmVtICFpbXBvcnRhbnRcclxuICAgICAgICBwYWRkaW5nLXRvcDogMTJweCAhaW1wb3J0YW50XHJcbiAgICAgICAgcGFkZGluZy1ib3R0b206IDEycHggIWltcG9ydGFudFxyXG4gIFxyXG4gIC8vINiq2K3Ys9mK2YYg2LnZhtin2LXYsSDYp9mE2KrYsdmC2YrZhVxyXG4gIC52LWRhdGEtZm9vdGVyXHJcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgcmdiYSgwLDAsMCwwLjA2KVxyXG4gICAgcGFkZGluZzogMTJweCAxNnB4XHJcbiAgICBcclxuICAgIC50aGVtZS0tZGFyayAmXHJcbiAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCByZ2JhKDI1NSwyNTUsMjU1LDAuMDgpXHJcblxyXG4vLyBGZW7DqnRyZXMgbW9kYWxlcyAoRGlhbG9ncykgLSBDb2lucyBhcnJvbmRpc1xyXG4udi1kaWFsb2cgPiAudi1jYXJkXHJcbiAgYm9yZGVyLXJhZGl1czogMTJweCAhaW1wb3J0YW50XHJcbiAgb3ZlcmZsb3c6IGhpZGRlbiAvLyBFbXDDqmNoZSBsZSBjb250ZW51IGRlIGTDqWJvcmRlciBkZXMgY29pbnMgYXJyb25kaXNcclxuXHJcbi8vIEJhcnJlIGRlIGTDqWZpbGVtZW50IChTY3JvbGxiYXIpIC0g2KrYtdmF2YrZhSDYudi12LHZiiDZhti42YrZgVxyXG46Oi13ZWJraXQtc2Nyb2xsYmFyXHJcbiAgd2lkdGg6IDEwcHhcclxuICBoZWlnaHQ6IDEwcHhcclxuXHJcbjo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2tcclxuICBiYWNrZ3JvdW5kOiByZ2JhKDAsMCwwLDAuMDMpXHJcbiAgLnRoZW1lLS1kYXJrICZcclxuICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LDI1NSwyNTUsMC4wNSlcclxuXHJcbjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWJcclxuICBiYWNrZ3JvdW5kOiByZ2JhKDAsMCwwLDAuMilcclxuICBib3JkZXItcmFkaXVzOiAxMHB4XHJcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjE1cyBlYXNlXHJcbiAgXHJcbiAgJjpob3ZlclxyXG4gICAgYmFja2dyb3VuZDogcmdiYSgwLDAsMCwwLjMpXHJcbiAgXHJcbiAgLnRoZW1lLS1kYXJrICZcclxuICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LDI1NSwyNTUsMC4zKVxyXG4gICAgXHJcbiAgICAmOmhvdmVyXHJcbiAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LDI1NSwyNTUsMC40KVxyXG5cclxuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICogW0Ftw6lsaW9yYXRpb24gZHUgY29tcG9zYW50IEJyZWFkY3J1bWJzXVxyXG4gKi9cclxuLnYtYnJlYWRjcnVtYnNcclxuICBwYWRkaW5nOiAxMHB4IDE2cHggIWltcG9ydGFudFxyXG4gIFxyXG4gIC52LWJyZWFkY3J1bWJzX19pdGVtXHJcbiAgICBmb250LXNpemU6IDAuODc1cmVtXHJcbiAgICBmb250LXdlaWdodDogNTAwXHJcbiAgICBjb2xvcjogdmFyKC0tdi1zZWNvbmRhcnktdGV4dC1iYXNlKVxyXG5cclxuICAgIGFcclxuICAgICAgcGFkZGluZzogNXB4IDEwcHhcclxuICAgICAgYm9yZGVyLXJhZGl1czogMTJweFxyXG4gICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMTVzIGVhc2UsIGNvbG9yIDAuMTVzIGVhc2VcclxuICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lXHJcbiAgICAgIGNvbG9yOiBpbmhlcml0XHJcbiAgICAgICY6aG92ZXJcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLXYtcHJpbWFyeS1iYXNlLXJnYiksIDAuMDgpXHJcbiAgICAgICAgY29sb3I6IHZhcigtLXYtcHJpbWFyeS1iYXNlKVxyXG4gIFxyXG4gIC52LWJyZWFkY3J1bWJzX19pdGVtLS1kaXNhYmxlZFxyXG4gICAgcGFkZGluZzogNXB4IDEwcHhcclxuICAgIGJvcmRlci1yYWRpdXM6IDEycHhcclxuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXYtcHJpbWFyeS1iYXNlKVxyXG4gICAgY29sb3I6IHdoaXRlICFpbXBvcnRhbnRcclxuICAgIGJveC1zaGFkb3c6IDAgMXB4IDNweCByZ2JhKDAsMCwwLDAuMTIpXHJcbiAgICBcclxuICAudi1icmVhZGNydW1ic19fZGl2aWRlclxyXG4gICAgcGFkZGluZzogMCA2cHggIWltcG9ydGFudFxyXG4gICAgLnYtaWNvblxyXG4gICAgICBmb250LXNpemU6IDE2cHhcclxuICAgICAgb3BhY2l0eTogMC41XHJcblxyXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gKiBbQW3DqWxpb3JhdGlvbiBkdSBjb21wb3NhbnQgVGFic11cclxuICovXHJcbi52LXRhYnMtYmFyXHJcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudFxyXG5cclxuLnYtdGFiXHJcbiAgdGV4dC10cmFuc2Zvcm06IG5vbmVcclxuICBmb250LXdlaWdodDogNjAwXHJcbiAgZm9udC1zaXplOiAwLjk1cmVtXHJcbiAgbGV0dGVyLXNwYWNpbmc6IDAuMTVweFxyXG4gIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNTUpXHJcbiAgbWluLXdpZHRoOiA5MHB4XHJcbiAgdHJhbnNpdGlvbjogY29sb3IgMC4xNXMgZWFzZVxyXG4gIFxyXG4gICYudi10YWItLWFjdGl2ZVxyXG4gICAgY29sb3I6IHZhcigtLXYtcHJpbWFyeS1iYXNlKSAhaW1wb3J0YW50XHJcbiAgXHJcbiAgLnRoZW1lLS1kYXJrICZcclxuICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNjUpXHJcbiAgICAmLnYtdGFiLS1hY3RpdmVcclxuICAgICAgY29sb3I6IHZhcigtLXYtcHJpbWFyeS1iYXNlKSAhaW1wb3J0YW50XHJcblxyXG4udi10YWJzLXNsaWRlclxyXG4gIGJvcmRlci1yYWRpdXM6IDNweFxyXG4gIGhlaWdodDogM3B4ICFpbXBvcnRhbnRcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS12LXByaW1hcnktYmFzZSkgIWltcG9ydGFudFxyXG4gIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2VcclxuXHJcbi52LXRhYnMtaXRlbXNcclxuICAudi1jYXJkICZcclxuICAgIGJvcmRlci1yYWRpdXM6IDAgMCAxMnB4IDEycHggIWltcG9ydGFudFxyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGVcclxuXHJcbiAgICAudGhlbWUtLWRhcmsgJlxyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMUUyOTNCXHJcblxyXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gKiBbQ2xhc3NlcyB1dGlsaXRhaXJlcyAtINio2K/ZiNmGINit2LHZg9in2Kog2YXYsti52KzYqV1cclxuICovXHJcbi8vINmB2YLYtyDZhNmE2LnZhtin2LXYsSDYp9mE2KrZiiDYqtit2KrYp9isINmB2LnZhNin2YsgdHJhbnNpdGlvbnMg2KjYs9mK2LfYqVxyXG4uc21vb3RoLWJnXHJcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjE1cyBlYXNlXHJcblxyXG4uc21vb3RoLXNoYWRvd1xyXG4gIHRyYW5zaXRpb246IGJveC1zaGFkb3cgMC4xNXMgZWFzZVxyXG5cclxuLmVsZXZhdGlvbi1zb2Z0XHJcbiAgYm94LXNoYWRvdzogMCAxcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4wNiksIDAgMXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMDQpICFpbXBvcnRhbnRcclxuXHJcbiIsIkBrZXlmcmFtZXMgdi1zaGFrZSB7XG4gIDU5JSB7XG4gICAgbWFyZ2luLWxlZnQ6IDA7XG4gIH1cblxuICA2MCUsIDgwJSB7XG4gICAgbWFyZ2luLWxlZnQ6IDJweDtcbiAgfVxuXG4gIDcwJSwgOTAlIHtcbiAgICBtYXJnaW4tbGVmdDogLTJweDtcbiAgfVxufVxuIiwiQG1peGluIGJhY2tncm91bmQtY29sb3IoJGNvbG9yX3ZhbHVlKSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICRjb2xvcl92YWx1ZSAhaW1wb3J0YW50O1xuICBib3JkZXItY29sb3I6ICRjb2xvcl92YWx1ZSAhaW1wb3J0YW50O1xufVxuQG1peGluIHRleHQtY29sb3IoJGNvbG9yX3ZhbHVlKSB7XG4gIGNvbG9yOiAkY29sb3JfdmFsdWUgIWltcG9ydGFudDtcbiAgY2FyZXQtY29sb3I6ICRjb2xvcl92YWx1ZSAhaW1wb3J0YW50O1xufVxuXG4vLyBQdXQgdGhlIGxvb3AgaW4gYSBmdW5jdGlvbiBzbyBpdCBjYW4ndCBsZWFrXG5AZWFjaCAkY29sb3JfbmFtZSwgJGNvbG9yX3ZhbHVlIGluICRzaGFkZXMge1xuICAudi1hcHBsaWNhdGlvbiAuI3skY29sb3JfbmFtZX0ge1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtY29sb3IoJGNvbG9yX3ZhbHVlKTtcbiAgfVxuXG4gIC52LWFwcGxpY2F0aW9uIC4jeyRjb2xvcl9uYW1lfS0tdGV4dCB7XG4gICAgQGluY2x1ZGUgdGV4dC1jb2xvcigkY29sb3JfdmFsdWUpO1xuICB9XG59XG5cbkBpZiAoJGNvbG9yLXBhY2spIHtcbiAgQGVhY2ggJGNvbG9yX25hbWUsICRjb2xvcl9jb2xvciBpbiAkY29sb3JzIHtcbiAgICBAZWFjaCAkY29sb3JfdHlwZSwgJGNvbG9yX3ZhbHVlIGluICRjb2xvcl9jb2xvciB7XG4gICAgICBAaWYgKCRjb2xvcl90eXBlID09ICdiYXNlJykge1xuICAgICAgICAudi1hcHBsaWNhdGlvbiAuI3skY29sb3JfbmFtZX0ge1xuICAgICAgICAgIEBpbmNsdWRlIGJhY2tncm91bmQtY29sb3IoJGNvbG9yX3ZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC52LWFwcGxpY2F0aW9uIC4jeyRjb2xvcl9uYW1lfS0tdGV4dCB7XG4gICAgICAgICAgQGluY2x1ZGUgdGV4dC1jb2xvcigkY29sb3JfdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBAZWxzZSBpZiAoJGNvbG9yX3R5cGUgIT0gJ3NoYWRlcycpIHtcbiAgICAgICAgLnYtYXBwbGljYXRpb24gLiN7JGNvbG9yX25hbWV9LiN7JGNvbG9yX3R5cGV9IHtcbiAgICAgICAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLWNvbG9yKCRjb2xvcl92YWx1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICAudi1hcHBsaWNhdGlvbiAuI3skY29sb3JfbmFtZX0tLXRleHQudGV4dC0tI3skY29sb3JfdHlwZX0ge1xuICAgICAgICAgIEBpbmNsdWRlIHRleHQtY29sb3IoJGNvbG9yX3ZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLyohXG4gKiByZXNzLmNzcyDigKIgdjIuMC40XG4gKiBNSVQgTGljZW5zZVxuICogZ2l0aHViLmNvbS9maWxpcGVsaW5oYXJlcy9yZXNzXG4gKi9cblxuLyogIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIyBHbG9iYWwgc2VsZWN0b3JzXG4gICAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbmh0bWwge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBvdmVyZmxvdy15OiBzY3JvbGw7IC8qIEFsbCBicm93c2VycyB3aXRob3V0IG92ZXJsYXlpbmcgc2Nyb2xsYmFycyAqL1xuICAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC8qIFByZXZlbnQgYWRqdXN0bWVudHMgb2YgZm9udCBzaXplIGFmdGVyIG9yaWVudGF0aW9uIGNoYW5nZXMgaW4gaU9TICovXG4gIHdvcmQtYnJlYWs6IG5vcm1hbDtcbiAgLW1vei10YWItc2l6ZTogNDtcbiAgdGFiLXNpemU6IDQ7XG59XG5cbiosXG46OmJlZm9yZSxcbjo6YWZ0ZXIge1xuICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OyAvKiBTZXQgYGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXRgIHRvIGFsbCBlbGVtZW50cyBhbmQgcHNldWRvIGVsZW1lbnRzICovXG4gIGJveC1zaXppbmc6IGluaGVyaXQ7XG59XG5cbjo6YmVmb3JlLFxuOjphZnRlciB7XG4gIHRleHQtZGVjb3JhdGlvbjogaW5oZXJpdDsgLyogSW5oZXJpdCB0ZXh0LWRlY29yYXRpb24gYW5kIHZlcnRpY2FsIGFsaWduIHRvIDo6YmVmb3JlIGFuZCA6OmFmdGVyIHBzZXVkbyBlbGVtZW50cyAqL1xuICB2ZXJ0aWNhbC1hbGlnbjogaW5oZXJpdDtcbn1cblxuKiB7XG4gIHBhZGRpbmc6IDA7IC8qIFJlc2V0IGBwYWRkaW5nYCBhbmQgYG1hcmdpbmAgb2YgYWxsIGVsZW1lbnRzICovXG4gIG1hcmdpbjogMDtcbn1cblxuLyogIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIyBHZW5lcmFsIGVsZW1lbnRzXG4gICAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbmhyIHtcbiAgb3ZlcmZsb3c6IHZpc2libGU7IC8qIFNob3cgdGhlIG92ZXJmbG93IGluIEVkZ2UgYW5kIElFICovXG4gIGhlaWdodDogMDsgLyogQWRkIHRoZSBjb3JyZWN0IGJveCBzaXppbmcgaW4gRmlyZWZveCAqL1xufVxuXG5kZXRhaWxzLFxubWFpbiB7XG4gIGRpc3BsYXk6IGJsb2NrOyAvKiBSZW5kZXIgdGhlIGBtYWluYCBlbGVtZW50IGNvbnNpc3RlbnRseSBpbiBJRS4gKi9cbn1cblxuc3VtbWFyeSB7XG4gIGRpc3BsYXk6IGxpc3QtaXRlbTsgLyogQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gYWxsIGJyb3dzZXJzICovXG59XG5cbnNtYWxsIHtcbiAgZm9udC1zaXplOiA4MCU7IC8qIFNldCBmb250LXNpemUgdG8gODAlIGluIGBzbWFsbGAgZWxlbWVudHMgKi9cbn1cblxuW2hpZGRlbl0ge1xuICBkaXNwbGF5OiBub25lOyAvKiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBJRSAqL1xufVxuXG5hYmJyW3RpdGxlXSB7XG4gIGJvcmRlci1ib3R0b206IG5vbmU7IC8qIFJlbW92ZSB0aGUgYm90dG9tIGJvcmRlciBpbiBDaHJvbWUgNTcgKi9cbiAgLyogQWRkIHRoZSBjb3JyZWN0IHRleHQgZGVjb3JhdGlvbiBpbiBDaHJvbWUsIEVkZ2UsIElFLCBPcGVyYSwgYW5kIFNhZmFyaSAqL1xuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmUgZG90dGVkO1xufVxuXG5hIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7IC8qIFJlbW92ZSB0aGUgZ3JheSBiYWNrZ3JvdW5kIG9uIGFjdGl2ZSBsaW5rcyBpbiBJRSAxMCAqL1xufVxuXG5hOmFjdGl2ZSxcbmE6aG92ZXIge1xuICBvdXRsaW5lLXdpZHRoOiAwOyAvKiBSZW1vdmUgdGhlIG91dGxpbmUgd2hlbiBob3ZlcmluZyBpbiBhbGwgYnJvd3NlcnMgKi9cbn1cblxuY29kZSxcbmtiZCxcbnByZSxcbnNhbXAge1xuICBmb250LWZhbWlseTogbW9ub3NwYWNlLCBtb25vc3BhY2U7IC8qIFNwZWNpZnkgdGhlIGZvbnQgZmFtaWx5IG9mIGNvZGUgZWxlbWVudHMgKi9cbn1cblxucHJlIHtcbiAgZm9udC1zaXplOiAxZW07IC8qIENvcnJlY3QgdGhlIG9kZCBgZW1gIGZvbnQgc2l6aW5nIGluIGFsbCBicm93c2VycyAqL1xufVxuXG5iLFxuc3Ryb25nIHtcbiAgZm9udC13ZWlnaHQ6IGJvbGRlcjsgLyogQWRkIHRoZSBjb3JyZWN0IGZvbnQgd2VpZ2h0IGluIENocm9tZSwgRWRnZSwgYW5kIFNhZmFyaSAqL1xufVxuXG4vKiBodHRwczovL2dpc3QuZ2l0aHViLmNvbS91bnJ1dGhsZXNzLzQxMzkzMCAqL1xuc3ViLFxuc3VwIHtcbiAgZm9udC1zaXplOiA3NSU7XG4gIGxpbmUtaGVpZ2h0OiAwO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcbn1cblxuc3ViIHtcbiAgYm90dG9tOiAtMC4yNWVtO1xufVxuXG5zdXAge1xuICB0b3A6IC0wLjVlbTtcbn1cblxuLyogIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIyBGb3Jtc1xuICAgIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG5pbnB1dCB7XG4gIGJvcmRlci1yYWRpdXM6IDA7XG59XG5cbi8qIFJlcGxhY2UgcG9pbnRlciBjdXJzb3IgaW4gZGlzYWJsZWQgZWxlbWVudHMgKi9cbltkaXNhYmxlZF0ge1xuICBjdXJzb3I6IGRlZmF1bHQ7XG59XG5cblt0eXBlPVwibnVtYmVyXCJdOjotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uLFxuW3R5cGU9XCJudW1iZXJcIl06Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b24ge1xuICBoZWlnaHQ6IGF1dG87IC8qIENvcnJlY3QgdGhlIGN1cnNvciBzdHlsZSBvZiBpbmNyZW1lbnQgYW5kIGRlY3JlbWVudCBidXR0b25zIGluIENocm9tZSAqL1xufVxuXG5bdHlwZT1cInNlYXJjaFwiXSB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogdGV4dGZpZWxkOyAvKiBDb3JyZWN0IHRoZSBvZGQgYXBwZWFyYW5jZSBpbiBDaHJvbWUgYW5kIFNhZmFyaSAqL1xuICBvdXRsaW5lLW9mZnNldDogLTJweDsgLyogQ29ycmVjdCB0aGUgb3V0bGluZSBzdHlsZSBpbiBTYWZhcmkgKi9cbn1cblxuW3R5cGU9XCJzZWFyY2hcIl06Oi13ZWJraXQtc2VhcmNoLWNhbmNlbC1idXR0b24sXG5bdHlwZT1cInNlYXJjaFwiXTo6LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbiB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsgLyogUmVtb3ZlIHRoZSBpbm5lciBwYWRkaW5nIGluIENocm9tZSBhbmQgU2FmYXJpIG9uIG1hY09TICovXG59XG5cbnRleHRhcmVhIHtcbiAgb3ZlcmZsb3c6IGF1dG87IC8qIEludGVybmV0IEV4cGxvcmVyIDExKyAqL1xuICByZXNpemU6IHZlcnRpY2FsOyAvKiBTcGVjaWZ5IHRleHRhcmVhIHJlc2l6YWJpbGl0eSAqL1xufVxuXG5idXR0b24sXG5pbnB1dCxcbm9wdGdyb3VwLFxuc2VsZWN0LFxudGV4dGFyZWEge1xuICBmb250OiBpbmhlcml0OyAvKiBTcGVjaWZ5IGZvbnQgaW5oZXJpdGFuY2Ugb2YgZm9ybSBlbGVtZW50cyAqL1xufVxuXG5vcHRncm91cCB7XG4gIGZvbnQtd2VpZ2h0OiBib2xkOyAvKiBSZXN0b3JlIHRoZSBmb250IHdlaWdodCB1bnNldCBieSB0aGUgcHJldmlvdXMgcnVsZSAqL1xufVxuXG5idXR0b24ge1xuICBvdmVyZmxvdzogdmlzaWJsZTsgLyogQWRkcmVzcyBgb3ZlcmZsb3dgIHNldCB0byBgaGlkZGVuYCBpbiBJRSA4LzkvMTAvMTEgKi9cbn1cblxuYnV0dG9uLFxuc2VsZWN0IHtcbiAgdGV4dC10cmFuc2Zvcm06IG5vbmU7IC8qIEZpcmVmb3ggNDArLCBJbnRlcm5ldCBFeHBsb3JlciAxMS0gKi9cbn1cblxuLyogQXBwbHkgY3Vyc29yIHBvaW50ZXIgdG8gYnV0dG9uIGVsZW1lbnRzICovXG5idXR0b24sXG5bdHlwZT1cImJ1dHRvblwiXSxcblt0eXBlPVwicmVzZXRcIl0sXG5bdHlwZT1cInN1Ym1pdFwiXSxcbltyb2xlPVwiYnV0dG9uXCJdIHtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBjb2xvcjogaW5oZXJpdDtcbn1cblxuLyogUmVtb3ZlIGlubmVyIHBhZGRpbmcgYW5kIGJvcmRlciBpbiBGaXJlZm94IDQrICovXG5idXR0b246Oi1tb3otZm9jdXMtaW5uZXIsXG5bdHlwZT1cImJ1dHRvblwiXTo6LW1vei1mb2N1cy1pbm5lcixcblt0eXBlPVwicmVzZXRcIl06Oi1tb3otZm9jdXMtaW5uZXIsXG5bdHlwZT1cInN1Ym1pdFwiXTo6LW1vei1mb2N1cy1pbm5lciB7XG4gIGJvcmRlci1zdHlsZTogbm9uZTtcbiAgcGFkZGluZzogMDtcbn1cblxuLyogUmVwbGFjZSBmb2N1cyBzdHlsZSByZW1vdmVkIGluIHRoZSBib3JkZXIgcmVzZXQgYWJvdmUgKi9cbmJ1dHRvbjotbW96LWZvY3VzcmluZyxcblt0eXBlPVwiYnV0dG9uXCJdOjotbW96LWZvY3VzLWlubmVyLFxuW3R5cGU9XCJyZXNldFwiXTo6LW1vei1mb2N1cy1pbm5lcixcblt0eXBlPVwic3VibWl0XCJdOjotbW96LWZvY3VzLWlubmVyIHtcbiAgb3V0bGluZTogMXB4IGRvdHRlZCBCdXR0b25UZXh0O1xufVxuXG5idXR0b24sXG5odG1sIFt0eXBlPVwiYnV0dG9uXCJdLCAvKiBQcmV2ZW50IGEgV2ViS2l0IGJ1ZyB3aGVyZSAoMikgZGVzdHJveXMgbmF0aXZlIGBhdWRpb2AgYW5kIGB2aWRlb2Bjb250cm9scyBpbiBBbmRyb2lkIDQgKi9cblt0eXBlPVwicmVzZXRcIl0sXG5bdHlwZT1cInN1Ym1pdFwiXSB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uOyAvKiBDb3JyZWN0IHRoZSBpbmFiaWxpdHkgdG8gc3R5bGUgY2xpY2thYmxlIHR5cGVzIGluIGlPUyAqL1xufVxuXG4vKiBSZW1vdmUgdGhlIGRlZmF1bHQgYnV0dG9uIHN0eWxpbmcgaW4gYWxsIGJyb3dzZXJzICovXG5idXR0b24sXG5pbnB1dCxcbnNlbGVjdCxcbnRleHRhcmVhIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGJvcmRlci1zdHlsZTogbm9uZTtcbn1cblxuLyogU3R5bGUgc2VsZWN0IGxpa2UgYSBzdGFuZGFyZCBpbnB1dCAqL1xuc2VsZWN0IHtcbiAgLW1vei1hcHBlYXJhbmNlOiBub25lOyAvKiBGaXJlZm94IDM2KyAqL1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7IC8qIENocm9tZSA0MSsgKi9cbn1cblxuc2VsZWN0OjotbXMtZXhwYW5kIHtcbiAgZGlzcGxheTogbm9uZTsgLyogSW50ZXJuZXQgRXhwbG9yZXIgMTErICovXG59XG5cbnNlbGVjdDo6LW1zLXZhbHVlIHtcbiAgY29sb3I6IGN1cnJlbnRDb2xvcjsgLyogSW50ZXJuZXQgRXhwbG9yZXIgMTErICovXG59XG5cbmxlZ2VuZCB7XG4gIGJvcmRlcjogMDsgLyogQ29ycmVjdCBgY29sb3JgIG5vdCBiZWluZyBpbmhlcml0ZWQgaW4gSUUgOC85LzEwLzExICovXG4gIGNvbG9yOiBpbmhlcml0OyAvKiBDb3JyZWN0IHRoZSBjb2xvciBpbmhlcml0YW5jZSBmcm9tIGBmaWVsZHNldGAgZWxlbWVudHMgaW4gSUUgKi9cbiAgZGlzcGxheTogdGFibGU7IC8qIENvcnJlY3QgdGhlIHRleHQgd3JhcHBpbmcgaW4gRWRnZSBhbmQgSUUgKi9cbiAgbWF4LXdpZHRoOiAxMDAlOyAvKiBDb3JyZWN0IHRoZSB0ZXh0IHdyYXBwaW5nIGluIEVkZ2UgYW5kIElFICovXG4gIHdoaXRlLXNwYWNlOiBub3JtYWw7IC8qIENvcnJlY3QgdGhlIHRleHQgd3JhcHBpbmcgaW4gRWRnZSBhbmQgSUUgKi9cbiAgbWF4LXdpZHRoOiAxMDAlOyAvKiBDb3JyZWN0IHRoZSB0ZXh0IHdyYXBwaW5nIGluIEVkZ2UgMTgtIGFuZCBJRSAqL1xufVxuXG46Oi13ZWJraXQtZmlsZS11cGxvYWQtYnV0dG9uIHtcbiAgLyogQ29ycmVjdCB0aGUgaW5hYmlsaXR5IHRvIHN0eWxlIGNsaWNrYWJsZSB0eXBlcyBpbiBpT1MgYW5kIFNhZmFyaSAqL1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IGJ1dHRvbjtcbiAgY29sb3I6IGluaGVyaXQ7XG4gIGZvbnQ6IGluaGVyaXQ7IC8qIENoYW5nZSBmb250IHByb3BlcnRpZXMgdG8gYGluaGVyaXRgIGluIENocm9tZSBhbmQgU2FmYXJpICovXG59XG5cbi8qICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICMgU3BlY2lmeSBtZWRpYSBlbGVtZW50IHN0eWxlXG4gICAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbmltZyB7XG4gIGJvcmRlci1zdHlsZTogbm9uZTsgLyogUmVtb3ZlIGJvcmRlciB3aGVuIGluc2lkZSBgYWAgZWxlbWVudCBpbiBJRSA4LzkvMTAgKi9cbn1cblxuLyogQWRkIHRoZSBjb3JyZWN0IHZlcnRpY2FsIGFsaWdubWVudCBpbiBDaHJvbWUsIEZpcmVmb3gsIGFuZCBPcGVyYSAqL1xucHJvZ3Jlc3Mge1xuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XG59XG5cbi8qICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICMgQWNjZXNzaWJpbGl0eVxuICAgIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKiBIaWRlIGNvbnRlbnQgZnJvbSBzY3JlZW5zIGJ1dCBub3Qgc2NyZWVucmVhZGVycyAqL1xuQG1lZGlhIHNjcmVlbiB7XG4gIFtoaWRkZW5+PVwic2NyZWVuXCJdIHtcbiAgICBkaXNwbGF5OiBpbmhlcml0O1xuICB9XG4gIFtoaWRkZW5+PVwic2NyZWVuXCJdOm5vdCg6YWN0aXZlKTpub3QoOmZvY3VzKTpub3QoOnRhcmdldCkge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZSAhaW1wb3J0YW50O1xuICAgIGNsaXA6IHJlY3QoMCAwIDAgMCkgIWltcG9ydGFudDtcbiAgfVxufVxuXG4vKiBTcGVjaWZ5IHRoZSBwcm9ncmVzcyBjdXJzb3Igb2YgdXBkYXRpbmcgZWxlbWVudHMgKi9cblthcmlhLWJ1c3k9XCJ0cnVlXCJdIHtcbiAgY3Vyc29yOiBwcm9ncmVzcztcbn1cblxuLyogU3BlY2lmeSB0aGUgcG9pbnRlciBjdXJzb3Igb2YgdHJpZ2dlciBlbGVtZW50cyAqL1xuW2FyaWEtY29udHJvbHNdIHtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4vKiBTcGVjaWZ5IHRoZSB1bnN0eWxlZCBjdXJzb3Igb2YgZGlzYWJsZWQsIG5vdC1lZGl0YWJsZSwgb3Igb3RoZXJ3aXNlIGlub3BlcmFibGUgZWxlbWVudHMgKi9cblthcmlhLWRpc2FibGVkPVwidHJ1ZVwiXSB7XG4gIGN1cnNvcjogZGVmYXVsdDtcbn1cbiIsIkBpbXBvcnQgJy4uL3Rvb2xzL19lbGV2YXRpb24uc2Fzcyc7XG5cbiR6OiAyNDtcbkB3aGlsZSAkeiA+PSAwIHtcbiAgLnYtYXBwbGljYXRpb24gLmVsZXZhdGlvbi0jeyR6fSB7XG4gICAgQGluY2x1ZGUgZWxldmF0aW9uKCR6LCAkaW1wb3J0YW50OiB0cnVlKTtcbiAgfVxuXG4gICR6OiAkeiAtIDE7XG59XG4iLCJAbWl4aW4gZWxldmF0aW9uKCR6LCAkaW1wb3J0YW50OiBmYWxzZSlcbiAgYm94LXNoYWRvdzogbWFwLWdldCgkc2hhZG93LWtleS11bWJyYSwgJHopLCBtYXAtZ2V0KCRzaGFkb3cta2V5LXBlbnVtYnJhLCAkeiksIG1hcC1nZXQoJHNoYWRvdy1rZXktYW1iaWVudCwgJHopIGlmKCRpbXBvcnRhbnQsICFpbXBvcnRhbnQsIG51bGwpXG5cbkBtaXhpbiBlbGV2YXRpb25UcmFuc2l0aW9uKCRkdXJhdGlvbjogMjgwbXMsICRlYXNpbmc6IGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSkpXG4gIHRyYW5zaXRpb246IGJveC1zaGFkb3cgJGR1cmF0aW9uICRlYXNpbmdcbiIsIkBtaXhpbiB0cmFuc2l0aW9uLWRlZmF1bHQoKSB7XG4gICYtZW50ZXItYWN0aXZlLFxuICAmLWxlYXZlLWFjdGl2ZSB7XG4gICAgdHJhbnNpdGlvbjogJHByaW1hcnktdHJhbnNpdGlvbiAhaW1wb3J0YW50O1xuICB9XG5cbiAgJi1tb3ZlIHtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gLjZzO1xuICB9XG59XG5cbi8vIENvbXBvbmVudCBzcGVjaWZpYyB0cmFuc2l0aW9uc1xuLmNhcm91c2VsLXRyYW5zaXRpb24ge1xuICAmLWVudGVyIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgxMDAlLCAwKTtcbiAgfVxuXG4gICYtbGVhdmUsICYtbGVhdmUtdG8ge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTEwMCUsIDApO1xuICB9XG59XG5cbi5jYXJvdXNlbC1yZXZlcnNlLXRyYW5zaXRpb24ge1xuICAmLWVudGVyIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMTAwJSwgMCk7XG4gIH1cblxuICAmLWxlYXZlLCAmLWxlYXZlLXRvIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDEwMCUsIDApO1xuICB9XG59XG5cbi5kaWFsb2ctdHJhbnNpdGlvbiB7XG4gICYtZW50ZXItYWN0aXZlLFxuICAmLWxlYXZlLWFjdGl2ZSB7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmUgIWltcG9ydGFudDtcbiAgfVxuXG4gICYtZW50ZXIsICYtbGVhdmUtdG8ge1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMC41KTtcbiAgICBvcGFjaXR5OiAwO1xuICB9XG5cbiAgJi1lbnRlci10bywgJi1sZWF2ZSB7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxufVxuXG4uZGlhbG9nLWJvdHRvbS10cmFuc2l0aW9uIHtcbiAgJi1lbnRlciwgJi1sZWF2ZS10byB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpO1xuICB9XG59XG5cbi5kaWFsb2ctdG9wLXRyYW5zaXRpb24ge1xuICAmLWVudGVyLCAmLWxlYXZlLXRvIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEwMCUpO1xuICB9XG59XG5cbi5waWNrZXItdHJhbnNpdGlvbixcbi5waWNrZXItcmV2ZXJzZS10cmFuc2l0aW9uIHtcbiAgJi1lbnRlci1hY3RpdmUsXG4gICYtbGVhdmUtYWN0aXZlIHtcbiAgICB0cmFuc2l0aW9uOiAuM3MgbWFwLWdldCgkdHJhbnNpdGlvbiwgJ2xpbmVhci1vdXQtc2xvdy1pbicpO1xuICB9XG5cbiAgJi1lbnRlcixcbiAgJi1sZWF2ZS10byB7XG4gICAgb3BhY2l0eTogMDtcbiAgfVxuXG4gICYtbGVhdmUsXG4gICYtbGVhdmUtYWN0aXZlLFxuICAmLWxlYXZlLXRvIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGUgIWltcG9ydGFudDtcbiAgfVxufVxuXG4ucGlja2VyLXRyYW5zaXRpb24ge1xuICAmLWVudGVyIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAxMDAlKTtcbiAgfVxuXG4gICYtbGVhdmUtdG8ge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC0xMDAlKTtcbiAgfVxufVxuXG4ucGlja2VyLXJldmVyc2UtdHJhbnNpdGlvbiB7XG4gICYtZW50ZXIge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC0xMDAlKTtcbiAgfVxuXG4gICYtbGVhdmUtdG8ge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDEwMCUpO1xuICB9XG59XG5cbi5waWNrZXItdGl0bGUtdHJhbnNpdGlvbiB7XG4gICYtZW50ZXItdG8sXG4gICYtbGVhdmUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xuICB9XG5cbiAgJi1lbnRlciB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTEwMCUsIDApO1xuICB9XG5cbiAgJi1sZWF2ZS10byB7XG4gICAgb3BhY2l0eTogMDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgxMDAlLCAwKTtcbiAgfVxuXG4gICYtbGVhdmUsXG4gICYtbGVhdmUtdG8sXG4gICYtbGVhdmUtYWN0aXZlIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGUgIWltcG9ydGFudDtcbiAgfVxufVxuXG4udGFiLXRyYW5zaXRpb24ge1xuICAmLWVudGVyIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgxMDAlLCAwKTtcbiAgfVxuXG4gICYtbGVhdmUsICYtbGVhdmUtYWN0aXZlIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICB9XG5cbiAgJi1sZWF2ZS10byB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC0xMDAlLCAwKTtcbiAgfVxufVxuXG4udGFiLXJldmVyc2UtdHJhbnNpdGlvbiB7XG4gICYtZW50ZXIge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC0xMDAlLCAwKTtcbiAgfVxuXG4gICYtbGVhdmUsICYtbGVhdmUtdG8ge1xuICAgIHRvcDogMDtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMTAwJSwgMCk7XG4gIH1cbn1cblxuLy8gR2VuZXJpYyB0cmFuc2l0aW9uc1xuLmV4cGFuZC10cmFuc2l0aW9uIHtcbiAgQGluY2x1ZGUgdHJhbnNpdGlvbi1kZWZhdWx0KCk7XG59XG5cbi5leHBhbmQteC10cmFuc2l0aW9uIHtcbiAgQGluY2x1ZGUgdHJhbnNpdGlvbi1kZWZhdWx0KCk7XG59XG5cbi5zY2FsZS10cmFuc2l0aW9uIHtcbiAgQGluY2x1ZGUgdHJhbnNpdGlvbi1kZWZhdWx0KCk7XG5cbiAgJi1lbnRlciwgJi1sZWF2ZSwgJi1sZWF2ZS10byB7XG4gICAgb3BhY2l0eTogMDtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDApO1xuICB9XG59XG5cbi5zY2FsZS1yb3RhdGUtdHJhbnNpdGlvbiB7XG4gIEBpbmNsdWRlIHRyYW5zaXRpb24tZGVmYXVsdCgpO1xuXG4gICYtZW50ZXIsICYtbGVhdmUsICYtbGVhdmUtdG8ge1xuICAgIG9wYWNpdHk6IDA7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgwKSByb3RhdGUoLTQ1ZGVnKTtcbiAgfVxufVxuXG4uc2NhbGUtcm90YXRlLXJldmVyc2UtdHJhbnNpdGlvbiB7XG4gIEBpbmNsdWRlIHRyYW5zaXRpb24tZGVmYXVsdCgpO1xuXG4gICYtZW50ZXIsICYtbGVhdmUsICYtbGVhdmUtdG8ge1xuICAgIG9wYWNpdHk6IDA7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgwKSByb3RhdGUoNDVkZWcpO1xuICB9XG59XG5cbi5tZXNzYWdlLXRyYW5zaXRpb24ge1xuICBAaW5jbHVkZSB0cmFuc2l0aW9uLWRlZmF1bHQoKTtcblxuICAmLWVudGVyLCAmLWxlYXZlLXRvIHtcbiAgICBvcGFjaXR5OiAwO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTVweCk7XG4gIH1cblxuICAmLWxlYXZlLCAmLWxlYXZlLWFjdGl2ZSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICB9XG59XG5cbi5zbGlkZS15LXRyYW5zaXRpb24ge1xuICBAaW5jbHVkZSB0cmFuc2l0aW9uLWRlZmF1bHQoKTtcblxuICAmLWVudGVyLCAmLWxlYXZlLXRvIHtcbiAgICBvcGFjaXR5OiAwO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTVweCk7XG4gIH1cbn1cblxuLnNsaWRlLXktcmV2ZXJzZS10cmFuc2l0aW9uIHtcbiAgQGluY2x1ZGUgdHJhbnNpdGlvbi1kZWZhdWx0KCk7XG5cbiAgJi1lbnRlciwgJi1sZWF2ZS10byB7XG4gICAgb3BhY2l0eTogMDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTVweCk7XG4gIH1cbn1cblxuLnNjcm9sbC15LXRyYW5zaXRpb24ge1xuICBAaW5jbHVkZSB0cmFuc2l0aW9uLWRlZmF1bHQoKTtcblxuICAmLWVudGVyLCAmLWxlYXZlLXRvIHtcbiAgICBvcGFjaXR5OiAwO1xuICB9XG5cbiAgJi1lbnRlciB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xNXB4KTtcbiAgfVxuXG4gICYtbGVhdmUtdG8ge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxNXB4KTtcbiAgfVxufVxuXG4uc2Nyb2xsLXktcmV2ZXJzZS10cmFuc2l0aW9uIHtcbiAgQGluY2x1ZGUgdHJhbnNpdGlvbi1kZWZhdWx0KCk7XG5cbiAgJi1lbnRlciwgJi1sZWF2ZS10byB7XG4gICAgb3BhY2l0eTogMDtcbiAgfVxuXG4gICYtZW50ZXIge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxNXB4KTtcbiAgfVxuXG4gICYtbGVhdmUtdG8ge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTVweCk7XG4gIH1cbn1cblxuLnNjcm9sbC14LXRyYW5zaXRpb24ge1xuICBAaW5jbHVkZSB0cmFuc2l0aW9uLWRlZmF1bHQoKTtcblxuICAmLWVudGVyLCAmLWxlYXZlLXRvIHtcbiAgICBvcGFjaXR5OiAwO1xuICB9XG5cbiAgJi1lbnRlciB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xNXB4KTtcbiAgfVxuXG4gICYtbGVhdmUtdG8ge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxNXB4KTtcbiAgfVxufVxuXG4uc2Nyb2xsLXgtcmV2ZXJzZS10cmFuc2l0aW9uIHtcbiAgQGluY2x1ZGUgdHJhbnNpdGlvbi1kZWZhdWx0KCk7XG5cbiAgJi1lbnRlciwgJi1sZWF2ZS10byB7XG4gICAgb3BhY2l0eTogMDtcbiAgfVxuXG4gICYtZW50ZXIge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxNXB4KTtcbiAgfVxuXG4gICYtbGVhdmUtdG8ge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTVweCk7XG4gIH1cbn1cblxuLnNsaWRlLXgtdHJhbnNpdGlvbiB7XG4gIEBpbmNsdWRlIHRyYW5zaXRpb24tZGVmYXVsdCgpO1xuXG4gICYtZW50ZXIsICYtbGVhdmUtdG8ge1xuICAgIG9wYWNpdHk6IDA7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xNXB4KTtcbiAgfVxufVxuXG4uc2xpZGUteC1yZXZlcnNlLXRyYW5zaXRpb24ge1xuICBAaW5jbHVkZSB0cmFuc2l0aW9uLWRlZmF1bHQoKTtcblxuICAmLWVudGVyLCAmLWxlYXZlLXRvIHtcbiAgICBvcGFjaXR5OiAwO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxNXB4KTtcbiAgfVxufVxuXG4uZmFkZS10cmFuc2l0aW9uIHtcbiAgQGluY2x1ZGUgdHJhbnNpdGlvbi1kZWZhdWx0KCk7XG5cbiAgJi1lbnRlciwgJi1sZWF2ZS10byB7XG4gICAgb3BhY2l0eTogMCAhaW1wb3J0YW50O1xuICB9XG59XG5cbi5mYWItdHJhbnNpdGlvbiB7XG4gIEBpbmNsdWRlIHRyYW5zaXRpb24tZGVmYXVsdCgpO1xuXG4gICYtZW50ZXIsICYtbGVhdmUtdG8ge1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMCkgcm90YXRlKC00NWRlZyk7XG4gIH1cbn1cbiIsIi52LWFwcGxpY2F0aW9uIC5ibG9ja3F1b3RlXG4gIHBhZGRpbmc6ICRzcGFjZXIqNCAwICRzcGFjZXIqNCAkc3BhY2VyKjZcbiAgZm9udC1zaXplOiAkYmxvY2txdW90ZS1mb250LXNpemVcbiAgZm9udC13ZWlnaHQ6ICRibG9ja3F1b3RlLWZvbnQtd2VpZ2h0XG4iLCJAaW1wb3J0ICcuLi90b29scy9fZnVuY3Rpb25zLnNhc3MnO1xuXG4kY29sb3ItcGFjazogdHJ1ZSAhZGVmYXVsdDtcblxuJGJvZHktZm9udC1mYW1pbHk6ICdSb2JvdG8nLCBzYW5zLXNlcmlmICFkZWZhdWx0O1xuJGZvbnQtc2l6ZS1yb290OiAxNnB4ICFkZWZhdWx0O1xuJGxpbmUtaGVpZ2h0LXJvb3Q6IDEuNSAhZGVmYXVsdDtcbiRib3JkZXItcmFkaXVzLXJvb3Q6IDRweCAhZGVmYXVsdDtcblxuJHJvdW5kZWQ6ICgpICFkZWZhdWx0O1xuJHJvdW5kZWQ6IG1hcC1kZWVwLW1lcmdlKFxuICAoXG4gICAgMDogMCxcbiAgICAnc20nOiAkYm9yZGVyLXJhZGl1cy1yb290IC8gMixcbiAgICBudWxsOiAkYm9yZGVyLXJhZGl1cy1yb290LFxuICAgICdsZyc6ICRib3JkZXItcmFkaXVzLXJvb3QgKiAyLFxuICAgICd4bCc6ICRib3JkZXItcmFkaXVzLXJvb3QgKiA2LFxuICAgICdwaWxsJzogOTk5OXB4LFxuICAgICdjaXJjbGUnOiA1MCVcbiAgKSxcbiAgJHJvdW5kZWRcbik7XG5cbiRzcGFjZXI6IDRweCAhZGVmYXVsdDtcbiRzcGFjZXJzLXN0ZXBzOiAxNiAhZGVmYXVsdDsgXG5cbiRzcGFjZXJzOiAoKSAhZGVmYXVsdDtcbkBpZiAodHlwZS1vZigkc3BhY2VycykgPT0gbGlzdCkge1xuICBAZm9yICRpIGZyb20gMCB0aHJvdWdoICRzcGFjZXJzLXN0ZXBzIHtcbiAgICAkc3BhY2VyczogbWFwLW1lcmdlKCRzcGFjZXJzLCAoJGk6ICRzcGFjZXIgKiAkaSkpXG4gIH1cbn1cblxuJG5lZ2F0aXZlLXNwYWNlcnM6ICgpICFkZWZhdWx0O1xuQGlmICh0eXBlLW9mKCRuZWdhdGl2ZS1zcGFjZXJzKSA9PSBsaXN0KSB7XG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJHNwYWNlcnMtc3RlcHMge1xuICAgICRuZWdhdGl2ZS1zcGFjZXJzOiBtYXAtbWVyZ2UoJG5lZ2F0aXZlLXNwYWNlcnMsIChcIm5cIiArICRpOiAtJHNwYWNlciAqICRpKSlcbiAgfVxufVxuXG4kZ3JpZC1icmVha3BvaW50czogKCkgIWRlZmF1bHQ7XG4kZ3JpZC1icmVha3BvaW50czogbWFwLWRlZXAtbWVyZ2UoXG4gIChcbiAgICAneHMnOiAwLFxuICAgICdzbSc6IDYwMHB4LFxuICAgICdtZCc6IDk2MHB4LFxuICAgICdsZyc6IDEyODBweCAtIDE2cHgsXG4gICAgJ3hsJzogMTkyMHB4IC0gMTZweFxuICApLFxuICAkZ3JpZC1icmVha3BvaW50c1xuKTtcblxuJGdyaWQtZ3V0dGVyOiAkc3BhY2VyICogNiAhZGVmYXVsdDtcbiRmb3JtLWdyaWQtZ3V0dGVyOiAkc3BhY2VyICogMiAhZGVmYXVsdDtcbiRncmlkLWNvbHVtbnM6IDEyICFkZWZhdWx0O1xuXG4kY29udGFpbmVyLXBhZGRpbmcteDogJGdyaWQtZ3V0dGVyIC8gMiAhZGVmYXVsdDtcblxuJGdyaWQtZ3V0dGVyczogKCkgIWRlZmF1bHQ7XG4kZ3JpZC1ndXR0ZXJzOiBtYXAtZGVlcC1tZXJnZShcbiAgKFxuICAgICd4cyc6ICRncmlkLWd1dHRlciAvIDEyLFxuICAgICdzbSc6ICRncmlkLWd1dHRlciAvIDYsXG4gICAgJ21kJzogJGdyaWQtZ3V0dGVyIC8gMyxcbiAgICAnbGcnOiAkZ3JpZC1ndXR0ZXIgKiAyLzMsXG4gICAgJ3hsJzogJGdyaWQtZ3V0dGVyXG4gICksXG4gICRncmlkLWd1dHRlcnNcbik7XG5cbiRjb250YWluZXItbWF4LXdpZHRoczogKCkgIWRlZmF1bHQ7XG4kY29udGFpbmVyLW1heC13aWR0aHM6IG1hcC1kZWVwLW1lcmdlKFxuICAoXG4gICAgJ21kJzogbWFwLWdldCgkZ3JpZC1icmVha3BvaW50cywgJ21kJykgKiAwLjkzNzUsXG4gICAgJ2xnJzogbWFwLWdldCgkZ3JpZC1icmVha3BvaW50cywgJ2xnJykgKiAwLjkzNzUsXG4gICAgJ3hsJzogbWFwLWdldCgkZ3JpZC1icmVha3BvaW50cywgJ3hsJykgKiAwLjkzNzVcbiAgKSxcbiAgJGNvbnRhaW5lci1tYXgtd2lkdGhzXG4pO1xuXG4kZGlzcGxheS1icmVha3BvaW50czogKCkgIWRlZmF1bHQ7XG4kZGlzcGxheS1icmVha3BvaW50czogbWFwLWRlZXAtbWVyZ2UoXG4gIChcbiAgICAncHJpbnQtb25seSc6ICdvbmx5IHByaW50JyxcbiAgICAnc2NyZWVuLW9ubHknOiAnb25seSBzY3JlZW4nLFxuICAgICd4cy1vbmx5JzogJ29ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAje21hcC1nZXQoJGdyaWQtYnJlYWtwb2ludHMsICdzbScpIC0gMC4wMn0pJyxcbiAgICAnc20tb25seSc6ICdvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogI3ttYXAtZ2V0KCRncmlkLWJyZWFrcG9pbnRzLCAnc20nKX0pIGFuZCAobWF4LXdpZHRoOiAje21hcC1nZXQoJGdyaWQtYnJlYWtwb2ludHMsICdtZCcpIC0gMC4wMn0pJyxcbiAgICAnc20tYW5kLWRvd24nOiAnb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6ICN7bWFwLWdldCgkZ3JpZC1icmVha3BvaW50cywgJ21kJykgLSAwLjAyfSknLFxuICAgICdzbS1hbmQtdXAnOiAnb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6ICN7bWFwLWdldCgkZ3JpZC1icmVha3BvaW50cywgJ3NtJyl9KScsXG4gICAgJ21kLW9ubHknOiAnb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6ICN7bWFwLWdldCgkZ3JpZC1icmVha3BvaW50cywgJ21kJyl9KSBhbmQgKG1heC13aWR0aDogI3ttYXAtZ2V0KCRncmlkLWJyZWFrcG9pbnRzLCAnbGcnKSAtIDAuMDJ9KScsXG4gICAgJ21kLWFuZC1kb3duJzogJ29ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAje21hcC1nZXQoJGdyaWQtYnJlYWtwb2ludHMsICdsZycpIC0gMC4wMn0pJyxcbiAgICAnbWQtYW5kLXVwJzogJ29ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAje21hcC1nZXQoJGdyaWQtYnJlYWtwb2ludHMsICdtZCcpfSknLFxuICAgICdsZy1vbmx5JzogJ29ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAje21hcC1nZXQoJGdyaWQtYnJlYWtwb2ludHMsICdsZycpfSkgYW5kIChtYXgtd2lkdGg6ICN7bWFwLWdldCgkZ3JpZC1icmVha3BvaW50cywgJ3hsJykgLSAwLjAyfSknLFxuICAgICdsZy1hbmQtZG93bic6ICdvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogI3ttYXAtZ2V0KCRncmlkLWJyZWFrcG9pbnRzLCAneGwnKSAtIDAuMDJ9KScsXG4gICAgJ2xnLWFuZC11cCc6ICdvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogI3ttYXAtZ2V0KCRncmlkLWJyZWFrcG9pbnRzLCAnbGcnKX0pJyxcbiAgICAneGwtb25seSc6ICdvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogI3ttYXAtZ2V0KCRncmlkLWJyZWFrcG9pbnRzLCAneGwnKX0pJ1xuICApLFxuICAkZGlzcGxheS1icmVha3BvaW50c1xuKTtcblxuJGZvbnQtd2VpZ2h0czogKCkgIWRlZmF1bHQ7XG4kZm9udC13ZWlnaHRzOiBtYXAtZGVlcC1tZXJnZShcbiAgKFxuICAgICd0aGluJzogMTAwLFxuICAgICdsaWdodCc6IDMwMCxcbiAgICAncmVndWxhcic6IDQwMCxcbiAgICAnbWVkaXVtJzogNTAwLFxuICAgICdib2xkJzogNzAwLFxuICAgICdibGFjayc6IDkwMFxuICApLFxuICAkZm9udC13ZWlnaHRzXG4pO1xuXG4kaGVhZGluZy1mb250LWZhbWlseTogJGJvZHktZm9udC1mYW1pbHkgIWRlZmF1bHQ7XG5cbiRoZWFkaW5nczogKCkgIWRlZmF1bHQ7XG4kaGVhZGluZ3M6IG1hcC1kZWVwLW1lcmdlKFxuICAoXG4gICAgJ2gxJzogKFxuICAgICAgJ3NpemUnOiA2cmVtLFxuICAgICAgJ3dlaWdodCc6IDMwMCxcbiAgICAgICdsaW5lLWhlaWdodCc6IDZyZW0sXG4gICAgICAnbGV0dGVyLXNwYWNpbmcnOiAtLjAxNTYyNWVtLFxuICAgICAgJ2ZvbnQtZmFtaWx5JzogJGhlYWRpbmctZm9udC1mYW1pbHksXG4gICAgICAndGV4dC10cmFuc2Zvcm0nOiBmYWxzZVxuICAgICksXG4gICAgJ2gyJzogKFxuICAgICAgJ3NpemUnOiAzLjc1cmVtLFxuICAgICAgJ3dlaWdodCc6IDMwMCxcbiAgICAgICdsaW5lLWhlaWdodCc6IDMuNzVyZW0sXG4gICAgICAnbGV0dGVyLXNwYWNpbmcnOiAtLjAwODMzMzMzMzNlbSxcbiAgICAgICdmb250LWZhbWlseSc6ICRoZWFkaW5nLWZvbnQtZmFtaWx5LFxuICAgICAgJ3RleHQtdHJhbnNmb3JtJzogZmFsc2VcbiAgICApLFxuICAgICdoMyc6IChcbiAgICAgICdzaXplJzogM3JlbSxcbiAgICAgICd3ZWlnaHQnOiA0MDAsXG4gICAgICAnbGluZS1oZWlnaHQnOiAzLjEyNXJlbSxcbiAgICAgICdsZXR0ZXItc3BhY2luZyc6IG5vcm1hbCxcbiAgICAgICdmb250LWZhbWlseSc6ICRoZWFkaW5nLWZvbnQtZmFtaWx5LFxuICAgICAgJ3RleHQtdHJhbnNmb3JtJzogZmFsc2VcbiAgICApLFxuICAgICdoNCc6IChcbiAgICAgICdzaXplJzogMi4xMjVyZW0sXG4gICAgICAnd2VpZ2h0JzogNDAwLFxuICAgICAgJ2xpbmUtaGVpZ2h0JzogMi41cmVtLFxuICAgICAgJ2xldHRlci1zcGFjaW5nJzogLjAwNzM1Mjk0MTJlbSxcbiAgICAgICdmb250LWZhbWlseSc6ICRoZWFkaW5nLWZvbnQtZmFtaWx5LFxuICAgICAgJ3RleHQtdHJhbnNmb3JtJzogZmFsc2VcbiAgICApLFxuICAgICdoNSc6IChcbiAgICAgICdzaXplJzogMS41cmVtLFxuICAgICAgJ3dlaWdodCc6IDQwMCxcbiAgICAgICdsaW5lLWhlaWdodCc6IDJyZW0sXG4gICAgICAnbGV0dGVyLXNwYWNpbmcnOiBub3JtYWwsXG4gICAgICAnZm9udC1mYW1pbHknOiAkaGVhZGluZy1mb250LWZhbWlseSxcbiAgICAgICd0ZXh0LXRyYW5zZm9ybSc6IGZhbHNlXG4gICAgKSxcbiAgICAnaDYnOiAoXG4gICAgICAnc2l6ZSc6IDEuMjVyZW0sXG4gICAgICAnd2VpZ2h0JzogNTAwLFxuICAgICAgJ2xpbmUtaGVpZ2h0JzogMnJlbSxcbiAgICAgICdsZXR0ZXItc3BhY2luZyc6IC4wMTI1ZW0sXG4gICAgICAnZm9udC1mYW1pbHknOiAkaGVhZGluZy1mb250LWZhbWlseSxcbiAgICAgICd0ZXh0LXRyYW5zZm9ybSc6IGZhbHNlXG4gICAgKSxcbiAgICAnc3VidGl0bGUtMSc6IChcbiAgICAgICdzaXplJzogMXJlbSxcbiAgICAgICd3ZWlnaHQnOiBub3JtYWwsXG4gICAgICAnbGluZS1oZWlnaHQnOiAxLjc1cmVtLFxuICAgICAgJ2xldHRlci1zcGFjaW5nJzogLjAwOTM3NWVtLFxuICAgICAgJ2ZvbnQtZmFtaWx5JzogJGJvZHktZm9udC1mYW1pbHksXG4gICAgICAndGV4dC10cmFuc2Zvcm0nOiBmYWxzZVxuICAgICksXG4gICAgJ3N1YnRpdGxlLTInOiAoXG4gICAgICAnc2l6ZSc6IC44NzVyZW0sXG4gICAgICAnd2VpZ2h0JzogNTAwLFxuICAgICAgJ2xpbmUtaGVpZ2h0JzogMS4zNzVyZW0sXG4gICAgICAnbGV0dGVyLXNwYWNpbmcnOiAuMDA3MTQyODU3MWVtLFxuICAgICAgJ2ZvbnQtZmFtaWx5JzogJGJvZHktZm9udC1mYW1pbHksXG4gICAgICAndGV4dC10cmFuc2Zvcm0nOiBmYWxzZVxuICAgICksXG4gICAgJ2JvZHktMSc6IChcbiAgICAgICdzaXplJzogMXJlbSxcbiAgICAgICd3ZWlnaHQnOiA0MDAsXG4gICAgICAnbGluZS1oZWlnaHQnOiAxLjVyZW0sXG4gICAgICAnbGV0dGVyLXNwYWNpbmcnOiAuMDMxMjVlbSxcbiAgICAgICdmb250LWZhbWlseSc6ICRib2R5LWZvbnQtZmFtaWx5LFxuICAgICAgJ3RleHQtdHJhbnNmb3JtJzogZmFsc2VcbiAgICApLFxuICAgICdib2R5LTInOiAoXG4gICAgICAnc2l6ZSc6IC44NzVyZW0sXG4gICAgICAnd2VpZ2h0JzogNDAwLFxuICAgICAgJ2xpbmUtaGVpZ2h0JzogMS4yNXJlbSxcbiAgICAgICdsZXR0ZXItc3BhY2luZyc6IC4wMTc4NTcxNDI5ZW0sXG4gICAgICAnZm9udC1mYW1pbHknOiAkYm9keS1mb250LWZhbWlseSxcbiAgICAgICd0ZXh0LXRyYW5zZm9ybSc6IGZhbHNlXG4gICAgKSxcbiAgICAnYnV0dG9uJzogKFxuICAgICAgJ3NpemUnOiAuODc1cmVtLFxuICAgICAgJ3dlaWdodCc6IDUwMCxcbiAgICAgICdsaW5lLWhlaWdodCc6IDIuMjVyZW0sXG4gICAgICAnbGV0dGVyLXNwYWNpbmcnOiAuMDg5Mjg1NzE0M2VtLFxuICAgICAgJ2ZvbnQtZmFtaWx5JzogJGJvZHktZm9udC1mYW1pbHksXG4gICAgICAndGV4dC10cmFuc2Zvcm0nOiB1cHBlcmNhc2VcbiAgICApLFxuICAgICdjYXB0aW9uJzogKFxuICAgICAgJ3NpemUnOiAuNzVyZW0sXG4gICAgICAnd2VpZ2h0JzogNDAwLFxuICAgICAgJ2xpbmUtaGVpZ2h0JzogMS4yNXJlbSxcbiAgICAgICdsZXR0ZXItc3BhY2luZyc6IC4wMzMzMzMzMzMzZW0sXG4gICAgICAnZm9udC1mYW1pbHknOiAkYm9keS1mb250LWZhbWlseSxcbiAgICAgICd0ZXh0LXRyYW5zZm9ybSc6IGZhbHNlXG4gICAgKSxcbiAgICAnb3ZlcmxpbmUnOiAoXG4gICAgICAnc2l6ZSc6IC43NXJlbSxcbiAgICAgICd3ZWlnaHQnOiA1MDAsXG4gICAgICAnbGluZS1oZWlnaHQnOiAycmVtLFxuICAgICAgJ2xldHRlci1zcGFjaW5nJzogLjE2NjY2NjY2NjdlbSxcbiAgICAgICdmb250LWZhbWlseSc6ICRib2R5LWZvbnQtZmFtaWx5LFxuICAgICAgJ3RleHQtdHJhbnNmb3JtJzogdXBwZXJjYXNlXG4gICAgKVxuICApLFxuICAkaGVhZGluZ3Ncbik7XG5cbiR0eXBvZ3JhcGh5OiAoKSAhZGVmYXVsdDtcbkBlYWNoICR0eXBlLCAkdmFsdWVzIGluICRoZWFkaW5ncyB7XG4gICR0eXBvZ3JhcGh5OiBtYXAtZGVlcC1tZXJnZShcbiAgICAkdHlwb2dyYXBoeSxcbiAgICAoI3skdHlwZX06IG1hcC12YWx1ZXMoJHZhbHVlcykpXG4gICk7XG59XG5cbiR0cmFuc2l0aW9uOiAoKSAhZGVmYXVsdDtcbiR0cmFuc2l0aW9uOiBtYXAtZGVlcC1tZXJnZShcbiAgKFxuICAgICdmYXN0LW91dC1zbG93LWluJzogY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKSxcbiAgICAnbGluZWFyLW91dC1zbG93LWluJzogY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSksXG4gICAgJ2Zhc3Qtb3V0LWxpbmVhci1pbic6IGN1YmljLWJlemllcigwLjQsIDAsIDEsIDEpLFxuICAgICdlYXNlLWluLW91dCc6IGN1YmljLWJlemllcigwLjQsIDAsIDAuNiwgMSksXG4gICAgJ2Zhc3QtaW4tZmFzdC1vdXQnOiBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKSxcbiAgICAnc3dpbmcnOiBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjUsIDEpXG4gICksXG4gICR0cmFuc2l0aW9uXG4pO1xuJHByaW1hcnktdHJhbnNpdGlvbjogMC4zcyBtYXAtZ2V0KCR0cmFuc2l0aW9uLCAnc3dpbmcnKSAhZGVmYXVsdDtcbiRzZWNvbmRhcnktdHJhbnNpdGlvbjogMC4ycyBtYXAtZ2V0KCR0cmFuc2l0aW9uLCAnZWFzZS1pbi1vdXQnKSAhZGVmYXVsdDtcblxuLy8gUmlwcGxlcyAvLztcbiRyaXBwbGUtYW5pbWF0aW9uLXRyYW5zaXRpb24taW46IHRyYW5zZm9ybSAwLjI1cyBtYXAtZ2V0KCR0cmFuc2l0aW9uLCAnZmFzdC1vdXQtc2xvdy1pbicpLCBvcGFjaXR5IDAuMXMgbWFwLWdldCgkdHJhbnNpdGlvbiwgJ2Zhc3Qtb3V0LXNsb3ctaW4nKSAhZGVmYXVsdDtcbiRyaXBwbGUtYW5pbWF0aW9uLXRyYW5zaXRpb24tb3V0OiBvcGFjaXR5IDAuM3MgbWFwLWdldCgkdHJhbnNpdGlvbiwgJ2Zhc3Qtb3V0LXNsb3ctaW4nKSAhZGVmYXVsdDtcbiRyaXBwbGUtYW5pbWF0aW9uLXZpc2libGUtb3BhY2l0eTogMC4yNSAhZGVmYXVsdDtcblxuLy8gRWxlbWVudHMgLy87XG4kYm9vdGFibGUtdHJhbnNpdGlvbjogMC4ycyBtYXAtZ2V0KCR0cmFuc2l0aW9uLCAnZmFzdC1vdXQtc2xvdy1pbicpICFkZWZhdWx0O1xuJGJsb2NrcXVvdGUtZm9udC1zaXplOiAxOHB4ICFkZWZhdWx0O1xuJGJsb2NrcXVvdGUtZm9udC13ZWlnaHQ6IDMwMCAhZGVmYXVsdDtcbiRjb2RlLWtiZC1ib3JkZXItcmFkaXVzOiAzcHggIWRlZmF1bHQ7XG4kY29kZS1rYmQtZm9udC1zaXplOiA4NSUgIWRlZmF1bHQ7XG4kY29kZS1rYmQtZm9udC13ZWlnaHQ6IG5vcm1hbCAhZGVmYXVsdDtcbiRjb2RlLXBhZGRpbmc6IC4yZW0gLjRlbSAhZGVmYXVsdDtcbiRrYmQtcGFkZGluZzogLjJlbSAuNHJlbSAhZGVmYXVsdDtcbiRpbnB1dC10b3Atc3BhY2luZzogMTZweCAhZGVmYXVsdDtcbiR0ZXh0LWZpZWxkLWFjdGl2ZS1sYWJlbC1oZWlnaHQ6IDEycHggIWRlZmF1bHQ7XG4iLCJAaW1wb3J0ICcuLi9zdHlsZXMuc2FzcydcblxuLnYtYXBwbGljYXRpb25cbiAgY29kZSwga2JkXG4gICAgYm9yZGVyLXJhZGl1czogJGNvZGUta2JkLWJvcmRlci1yYWRpdXNcbiAgICBmb250LXNpemU6ICRjb2RlLWtiZC1mb250LXNpemVcbiAgICBmb250LXdlaWdodDogJGNvZGUta2JkLWZvbnQtd2VpZ2h0XG5cbiAgY29kZVxuICAgIHBhZGRpbmc6ICRjb2RlLXBhZGRpbmdcblxuICBrYmRcbiAgICBwYWRkaW5nOiAka2JkLXBhZGRpbmdcbiAgICArZWxldmF0aW9uKDIpXG5cbit0aGVtZSh2LWFwcGxpY2F0aW9uKSB1c2luZyAoJG1hdGVyaWFsKVxuICBjb2RlXG4gICAgYmFja2dyb3VuZC1jb2xvcjogbWFwLWRlZXAtZ2V0KCRtYXRlcmlhbCwgJ2NvZGUnLCAnYmFja2dyb3VuZCcpXG4gICAgY29sb3I6IG1hcC1kZWVwLWdldCgkbWF0ZXJpYWwsICdjb2RlJywgJ2NvbG9yJylcblxuICBrYmRcbiAgICBiYWNrZ3JvdW5kOiBtYXAtZGVlcC1nZXQoJG1hdGVyaWFsLCAna2JkJywgJ2JhY2tncm91bmQnKVxuICAgIGNvbG9yOiBtYXAtZGVlcC1nZXQoJG1hdGVyaWFsLCAna2JkJywgJ2NvbG9yJylcbiIsImh0bWxcbiAgZm9udC1zaXplOiAkZm9udC1zaXplLXJvb3RcbiAgb3ZlcmZsb3cteDogaGlkZGVuXG4gIHRleHQtcmVuZGVyaW5nOiBvcHRpbWl6ZUxlZ2liaWxpdHlcbiAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWRcbiAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZVxuICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMClcblxuaHRtbC5vdmVyZmxvdy15LWhpZGRlblxuICBvdmVyZmxvdy15OiBoaWRkZW4gIWltcG9ydGFudFxuXG4udi1hcHBsaWNhdGlvblxuICBmb250LWZhbWlseTogJGJvZHktZm9udC1mYW1pbHlcbiAgbGluZS1oZWlnaHQ6ICRsaW5lLWhlaWdodC1yb290XG5cbiAgOjotbXMtY2xlYXIsXG4gIDo6LW1zLXJldmVhbFxuICAgIGRpc3BsYXk6IG5vbmVcblxuLy8gaU9TIFNhZmFyaSBoYWNrIHRvIGFsbG93IGNsaWNrIGV2ZW50cyBvbiBib2R5XG5Ac3VwcG9ydHMgKC13ZWJraXQtdG91Y2gtY2FsbG91dDogbm9uZSlcbiAgYm9keVxuICAgIGN1cnNvcjogcG9pbnRlclxuIiwiQG1peGluIGhlYWRpbmcoJG1hdGVyaWFsKVxuICBjb2xvcjogbWFwLWRlZXAtZ2V0KCRtYXRlcmlhbCwgJ3RleHQnLCAncHJpbWFyeScpXG5cbi52LWFwcGxpY2F0aW9uIC50aGVtZS0tbGlnaHQuaGVhZGluZ1xuICAraGVhZGluZygkbWF0ZXJpYWwtbGlnaHQpXG5cbi52LWFwcGxpY2F0aW9uIC50aGVtZS0tZGFyay5oZWFkaW5nXG4gICtoZWFkaW5nKCRtYXRlcmlhbC1kYXJrKVxuIiwiLnYtYXBwbGljYXRpb25cbiAgdWwsIG9sXG4gICAgcGFkZGluZy1sZWZ0OiAkc3BhY2VyICogNlxuIiwiLnYtYXBwbGljYXRpb25cbiAgLmRpc3BsYXktNFxuICAgIGZvbnQtc2l6ZTogbWFwLWRlZXAtZ2V0KCRoZWFkaW5ncywgJ2gxJywgJ3NpemUnKSAhaW1wb3J0YW50XG4gICAgZm9udC13ZWlnaHQ6IG1hcC1kZWVwLWdldCgkaGVhZGluZ3MsICdoMScsICd3ZWlnaHQnKVxuICAgIGxpbmUtaGVpZ2h0OiBtYXAtZGVlcC1nZXQoJGhlYWRpbmdzLCAnaDEnLCAnbGluZS1oZWlnaHQnKVxuICAgIGxldHRlci1zcGFjaW5nOiBtYXAtZGVlcC1nZXQoJGhlYWRpbmdzLCAnaDEnLCAnbGV0dGVyLXNwYWNpbmcnKSAhaW1wb3J0YW50XG4gICAgZm9udC1mYW1pbHk6IG1hcC1kZWVwLWdldCgkaGVhZGluZ3MsICdoMScsICdmb250LWZhbWlseScpICFpbXBvcnRhbnRcblxuICAuZGlzcGxheS0zXG4gICAgZm9udC1zaXplOiBtYXAtZGVlcC1nZXQoJGhlYWRpbmdzLCAnaDInLCAnc2l6ZScpICFpbXBvcnRhbnRcbiAgICBmb250LXdlaWdodDogbWFwLWRlZXAtZ2V0KCRoZWFkaW5ncywgJ2gyJywgJ3dlaWdodCcpXG4gICAgbGluZS1oZWlnaHQ6IG1hcC1kZWVwLWdldCgkaGVhZGluZ3MsICdoMicsICdsaW5lLWhlaWdodCcpXG4gICAgbGV0dGVyLXNwYWNpbmc6IG1hcC1kZWVwLWdldCgkaGVhZGluZ3MsICdoMicsICdsZXR0ZXItc3BhY2luZycpICFpbXBvcnRhbnRcbiAgICBmb250LWZhbWlseTogbWFwLWRlZXAtZ2V0KCRoZWFkaW5ncywgJ2gyJywgJ2ZvbnQtZmFtaWx5JykgIWltcG9ydGFudFxuXG4gIC5kaXNwbGF5LTJcbiAgICBmb250LXNpemU6IG1hcC1kZWVwLWdldCgkaGVhZGluZ3MsICdoMycsICdzaXplJykgIWltcG9ydGFudFxuICAgIGZvbnQtd2VpZ2h0OiBtYXAtZGVlcC1nZXQoJGhlYWRpbmdzLCAnaDMnLCAnd2VpZ2h0JylcbiAgICBsaW5lLWhlaWdodDogbWFwLWRlZXAtZ2V0KCRoZWFkaW5ncywgJ2gzJywgJ2xpbmUtaGVpZ2h0JylcbiAgICBsZXR0ZXItc3BhY2luZzogbWFwLWRlZXAtZ2V0KCRoZWFkaW5ncywgJ2gzJywgJ2xldHRlci1zcGFjaW5nJykgIWltcG9ydGFudFxuICAgIGZvbnQtZmFtaWx5OiBtYXAtZGVlcC1nZXQoJGhlYWRpbmdzLCAnaDMnLCAnZm9udC1mYW1pbHknKSAhaW1wb3J0YW50XG5cbiAgLmRpc3BsYXktMVxuICAgIGZvbnQtc2l6ZTogbWFwLWRlZXAtZ2V0KCRoZWFkaW5ncywgJ2g0JywgJ3NpemUnKSAhaW1wb3J0YW50XG4gICAgZm9udC13ZWlnaHQ6IG1hcC1kZWVwLWdldCgkaGVhZGluZ3MsICdoNCcsICd3ZWlnaHQnKVxuICAgIGxpbmUtaGVpZ2h0OiBtYXAtZGVlcC1nZXQoJGhlYWRpbmdzLCAnaDQnLCAnbGluZS1oZWlnaHQnKVxuICAgIGxldHRlci1zcGFjaW5nOiBtYXAtZGVlcC1nZXQoJGhlYWRpbmdzLCAnaDQnLCAnbGV0dGVyLXNwYWNpbmcnKSAhaW1wb3J0YW50XG4gICAgZm9udC1mYW1pbHk6IG1hcC1kZWVwLWdldCgkaGVhZGluZ3MsICdoNCcsICdmb250LWZhbWlseScpICFpbXBvcnRhbnRcblxuICAuaGVhZGxpbmVcbiAgICBmb250LXNpemU6IG1hcC1kZWVwLWdldCgkaGVhZGluZ3MsICdoNScsICdzaXplJykgIWltcG9ydGFudFxuICAgIGZvbnQtd2VpZ2h0OiBtYXAtZGVlcC1nZXQoJGhlYWRpbmdzLCAnaDUnLCAnd2VpZ2h0JylcbiAgICBsaW5lLWhlaWdodDogbWFwLWRlZXAtZ2V0KCRoZWFkaW5ncywgJ2g1JywgJ2xpbmUtaGVpZ2h0JylcbiAgICBsZXR0ZXItc3BhY2luZzogbWFwLWRlZXAtZ2V0KCRoZWFkaW5ncywgJ2g1JywgJ2xldHRlci1zcGFjaW5nJykgIWltcG9ydGFudFxuICAgIGZvbnQtZmFtaWx5OiBtYXAtZGVlcC1nZXQoJGhlYWRpbmdzLCAnaDUnLCAnZm9udC1mYW1pbHknKSAhaW1wb3J0YW50XG5cbiAgLnRpdGxlXG4gICAgZm9udC1zaXplOiBtYXAtZGVlcC1nZXQoJGhlYWRpbmdzLCAnaDYnLCAnc2l6ZScpICFpbXBvcnRhbnRcbiAgICBmb250LXdlaWdodDogbWFwLWRlZXAtZ2V0KCRoZWFkaW5ncywgJ2g2JywgJ3dlaWdodCcpXG4gICAgbGluZS1oZWlnaHQ6IG1hcC1kZWVwLWdldCgkaGVhZGluZ3MsICdoNicsICdsaW5lLWhlaWdodCcpXG4gICAgbGV0dGVyLXNwYWNpbmc6IG1hcC1kZWVwLWdldCgkaGVhZGluZ3MsICdoNicsICdsZXR0ZXItc3BhY2luZycpICFpbXBvcnRhbnRcbiAgICBmb250LWZhbWlseTogbWFwLWRlZXAtZ2V0KCRoZWFkaW5ncywgJ2g2JywgJ2ZvbnQtZmFtaWx5JykgIWltcG9ydGFudFxuXG4gIC5zdWJ0aXRsZS0yXG4gICAgZm9udC1zaXplOiBtYXAtZGVlcC1nZXQoJGhlYWRpbmdzLCAnc3VidGl0bGUtMicsICdzaXplJykgIWltcG9ydGFudFxuICAgIGZvbnQtd2VpZ2h0OiBtYXAtZGVlcC1nZXQoJGhlYWRpbmdzLCAnc3VidGl0bGUtMicsICd3ZWlnaHQnKVxuICAgIGxldHRlci1zcGFjaW5nOiBtYXAtZGVlcC1nZXQoJGhlYWRpbmdzLCAnc3VidGl0bGUtMicsICdsZXR0ZXItc3BhY2luZycpICFpbXBvcnRhbnRcbiAgICBsaW5lLWhlaWdodDogbWFwLWRlZXAtZ2V0KCRoZWFkaW5ncywgJ3N1YnRpdGxlLTInLCAnbGluZS1oZWlnaHQnKVxuICAgIGZvbnQtZmFtaWx5OiBtYXAtZGVlcC1nZXQoJGhlYWRpbmdzLCAnc3VidGl0bGUtMicsICdmb250LWZhbWlseScpICFpbXBvcnRhbnRcblxuICAuc3VidGl0bGUtMVxuICAgIGZvbnQtc2l6ZTogbWFwLWRlZXAtZ2V0KCRoZWFkaW5ncywgJ3N1YnRpdGxlLTEnLCAnc2l6ZScpICFpbXBvcnRhbnRcbiAgICBmb250LXdlaWdodDogbWFwLWRlZXAtZ2V0KCRoZWFkaW5ncywgJ3N1YnRpdGxlLTEnLCAnd2VpZ2h0JylcbiAgICBsZXR0ZXItc3BhY2luZzogbWFwLWRlZXAtZ2V0KCRoZWFkaW5ncywgJ3N1YnRpdGxlLTEnLCAnbGV0dGVyLXNwYWNpbmcnKSAhaW1wb3J0YW50XG4gICAgbGluZS1oZWlnaHQ6IG1hcC1kZWVwLWdldCgkaGVhZGluZ3MsICdzdWJ0aXRsZS0xJywgJ2xpbmUtaGVpZ2h0JylcbiAgICBmb250LWZhbWlseTogbWFwLWRlZXAtZ2V0KCRoZWFkaW5ncywgJ3N1YnRpdGxlLTEnLCAnZm9udC1mYW1pbHknKSAhaW1wb3J0YW50XG5cbiAgLmJvZHktMlxuICAgIGZvbnQtc2l6ZTogbWFwLWRlZXAtZ2V0KCRoZWFkaW5ncywgJ2JvZHktMicsICdzaXplJykgIWltcG9ydGFudFxuICAgIGZvbnQtd2VpZ2h0OiBtYXAtZGVlcC1nZXQoJGhlYWRpbmdzLCAnYm9keS0yJywgJ3dlaWdodCcpXG4gICAgbGV0dGVyLXNwYWNpbmc6IG1hcC1kZWVwLWdldCgkaGVhZGluZ3MsICdib2R5LTInLCAnbGV0dGVyLXNwYWNpbmcnKSAhaW1wb3J0YW50XG4gICAgbGluZS1oZWlnaHQ6IG1hcC1kZWVwLWdldCgkaGVhZGluZ3MsICdib2R5LTInLCAnbGluZS1oZWlnaHQnKVxuICAgIGZvbnQtZmFtaWx5OiBtYXAtZGVlcC1nZXQoJGhlYWRpbmdzLCAnYm9keS0yJywgJ2ZvbnQtZmFtaWx5JykgIWltcG9ydGFudFxuXG4gIC5ib2R5LTFcbiAgICBmb250LXNpemU6IG1hcC1kZWVwLWdldCgkaGVhZGluZ3MsICdib2R5LTEnLCAnc2l6ZScpICFpbXBvcnRhbnRcbiAgICBmb250LXdlaWdodDogbWFwLWRlZXAtZ2V0KCRoZWFkaW5ncywgJ2JvZHktMScsICd3ZWlnaHQnKVxuICAgIGxldHRlci1zcGFjaW5nOiBtYXAtZGVlcC1nZXQoJGhlYWRpbmdzLCAnYm9keS0xJywgJ2xldHRlci1zcGFjaW5nJykgIWltcG9ydGFudFxuICAgIGxpbmUtaGVpZ2h0OiBtYXAtZGVlcC1nZXQoJGhlYWRpbmdzLCAnYm9keS0xJywgJ2xpbmUtaGVpZ2h0JylcbiAgICBmb250LWZhbWlseTogbWFwLWRlZXAtZ2V0KCRoZWFkaW5ncywgJ2JvZHktMScsICdmb250LWZhbWlseScpICFpbXBvcnRhbnRcblxuICAuY2FwdGlvblxuICAgIGZvbnQtc2l6ZTogbWFwLWRlZXAtZ2V0KCRoZWFkaW5ncywgJ2NhcHRpb24nLCAnc2l6ZScpICFpbXBvcnRhbnRcbiAgICBmb250LXdlaWdodDogbWFwLWRlZXAtZ2V0KCRoZWFkaW5ncywgJ2NhcHRpb24nLCAnd2VpZ2h0JylcbiAgICBsZXR0ZXItc3BhY2luZzogbWFwLWRlZXAtZ2V0KCRoZWFkaW5ncywgJ2NhcHRpb24nLCAnbGV0dGVyLXNwYWNpbmcnKSAhaW1wb3J0YW50XG4gICAgbGluZS1oZWlnaHQ6IG1hcC1kZWVwLWdldCgkaGVhZGluZ3MsICdjYXB0aW9uJywgJ2xpbmUtaGVpZ2h0JylcbiAgICBmb250LWZhbWlseTogbWFwLWRlZXAtZ2V0KCRoZWFkaW5ncywgJ2NhcHRpb24nLCAnZm9udC1mYW1pbHknKSAhaW1wb3J0YW50XG5cbiAgLm92ZXJsaW5lXG4gICAgZm9udC1zaXplOiBtYXAtZGVlcC1nZXQoJGhlYWRpbmdzLCAnb3ZlcmxpbmUnLCAnc2l6ZScpICFpbXBvcnRhbnRcbiAgICBmb250LXdlaWdodDogbWFwLWRlZXAtZ2V0KCRoZWFkaW5ncywgJ292ZXJsaW5lJywgJ3dlaWdodCcpXG4gICAgbGV0dGVyLXNwYWNpbmc6IG1hcC1kZWVwLWdldCgkaGVhZGluZ3MsICdvdmVybGluZScsICdsZXR0ZXItc3BhY2luZycpICFpbXBvcnRhbnRcbiAgICBsaW5lLWhlaWdodDogbWFwLWRlZXAtZ2V0KCRoZWFkaW5ncywgJ292ZXJsaW5lJywgJ2xpbmUtaGVpZ2h0JylcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlXG4gICAgZm9udC1mYW1pbHk6IG1hcC1kZWVwLWdldCgkaGVhZGluZ3MsICdvdmVybGluZScsICdmb250LWZhbWlseScpICFpbXBvcnRhbnRcblxuICBwXG4gICAgbWFyZ2luLWJvdHRvbTogJHNwYWNlciAqIDRcbiIsIi52LWFwcGxpY2F0aW9uXG4gIEBlYWNoICRzaXplLCAkbWVkaWFfcXVlcnkgaW4gJGRpc3BsYXktYnJlYWtwb2ludHNcbiAgICAuaGlkZGVuXG4gICAgICAmLSN7JHNpemV9XG4gICAgICAgIEBtZWRpYSAjeyRtZWRpYV9xdWVyeX1cbiAgICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnRcbiIsIi8vIFNvdXJjZTogaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2Jsb2IvbWFzdGVyL3Njc3MvbWl4aW5zL19zY3JlZW4tcmVhZGVyLnNjc3NcblxuLmQtc3Itb25seSxcbi5kLXNyLW9ubHktZm9jdXNhYmxlOm5vdCg6Zm9jdXMpXG4gIGJvcmRlcjogMCAhaW1wb3J0YW50XG4gIGNsaXA6IHJlY3QoMCwgMCwgMCwgMCkgIWltcG9ydGFudFxuICBoZWlnaHQ6IDFweCAhaW1wb3J0YW50XG4gIG1hcmdpbjogLTFweCAhaW1wb3J0YW50IC8vIEZpeCBmb3IgaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2lzc3Vlcy8yNTY4NlxuICBvdmVyZmxvdzogaGlkZGVuICFpbXBvcnRhbnRcbiAgcGFkZGluZzogMCAhaW1wb3J0YW50XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZSAhaW1wb3J0YW50XG4gIHdoaXRlLXNwYWNlOiBub3dyYXAgIWltcG9ydGFudFxuICB3aWR0aDogMXB4ICFpbXBvcnRhbnRcbiIsIi52LWFwcGxpY2F0aW9uXG4gIEBlYWNoICRuYW1lLCAkd2VpZ2h0IGluICRmb250LXdlaWdodHNcbiAgICAuZm9udC13ZWlnaHRcbiAgICAgICYtI3skbmFtZX1cbiAgICAgICAgZm9udC13ZWlnaHQ6ICR3ZWlnaHQgIWltcG9ydGFudFxuXG4gIC5mb250LWl0YWxpY1xuICAgIGZvbnQtc3R5bGU6IGl0YWxpYyAhaW1wb3J0YW50XG4iLCIudi1hcHBsaWNhdGlvblxuICBAZWFjaCAkbmFtZSwgJGJlemllciBpbiAkdHJhbnNpdGlvblxuICAgIC50cmFuc2l0aW9uLSN7JG5hbWV9XG4gICAgICB0cmFuc2l0aW9uOiAwLjNzICRiZXppZXIgIWltcG9ydGFudFxuIiwiPWdlbmVyYXRlLXV0aWxpdHkoJHV0aWxpdHksICRpbmZpeCwgJGZvcmNlRGlyKVxuICAkdmFsdWVzOiBtYXAtZ2V0KCR1dGlsaXR5LCB2YWx1ZXMpXG5cbiAgLy8gSWYgdGhlIHZhbHVlcyBhcmUgYSBsaXN0IG9yIHN0cmluZywgY29udmVydCBpdCBpbnRvIGEgbWFwXG4gIEBpZiB0eXBlLW9mKCR2YWx1ZXMpID09IFwic3RyaW5nXCIgb3IgdHlwZS1vZihudGgoJHZhbHVlcywgMSkpICE9IFwibGlzdFwiXG4gICAgJHZhbHVlczogemlwKCR2YWx1ZXMsICR2YWx1ZXMpXG5cbiAgQGVhY2ggJHZhbHVlIGluICR2YWx1ZXNcbiAgICAkcHJvcGVydGllczogbWFwLWdldCgkdXRpbGl0eSwgcHJvcGVydHkpXG5cbiAgICAvLyBNdWx0aXBsZSBwcm9wZXJ0aWVzIGFyZSBwb3NzaWJsZSwgZm9yIGV4YW1wbGUgd2l0aCB2ZXJ0aWNhbCBvciBob3Jpem9udGFsIG1hcmdpbnMgb3IgcGFkZGluZ3NcbiAgICBAaWYgdHlwZS1vZigkcHJvcGVydGllcykgPT0gJ3N0cmluZydcbiAgICAgICRwcm9wZXJ0aWVzOiBhcHBlbmQoKCksICRwcm9wZXJ0aWVzKVxuXG4gICAgLy8gUHJvcGVydHkgY2FuIGJlIGEgbWFwLCB3aGVyZSB0aGUga2V5IGlzIGEgbWl4aW4gdG8gaW5jbHVkZVxuICAgIEBpZiB0eXBlLW9mKCRwcm9wZXJ0aWVzKSA9PSAnbWFwJ1xuICAgICAgQGVhY2ggJGRpciBpbiAkcHJvcGVydGllc1xuICAgICAgICAkbWl4aW46IG50aCgkZGlyLCAxKVxuICAgICAgICAvLyBTQVNTIGRvZXNuJ3Qgc3VwcG9ydCBkeW5hbWljIG1peGluIGludm9jYXRpb25cbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3Nhc3Mvc2Fzcy9pc3N1ZXMvNjI2XG4gICAgICAgIEBpZiAkbWl4aW4gPT0gJ2x0cidcbiAgICAgICAgICAudi1hcHBsaWNhdGlvbi0taXMtbHRyXG4gICAgICAgICAgICArZ2VuZXJhdGUtdXRpbGl0eS1ib2R5KCR1dGlsaXR5LCBudGgoJGRpciwgMiksICR2YWx1ZSwgJGluZml4KVxuICAgICAgICBAZWxzZSBpZiAkbWl4aW4gPT0gJ3J0bCdcbiAgICAgICAgICAudi1hcHBsaWNhdGlvbi0taXMtcnRsXG4gICAgICAgICAgICArZ2VuZXJhdGUtdXRpbGl0eS1ib2R5KCR1dGlsaXR5LCBudGgoJGRpciwgMiksICR2YWx1ZSwgJGluZml4KVxuICAgICAgICBAZWxzZVxuICAgICAgICAgIEBlcnJvciAnT25seSBSVEwgYW5kIExUUiBhcmUgc3VwcG9ydGVkJ1xuICAgIEBlbHNlXG4gICAgICBAaWYgJGZvcmNlRGlyID09ICdsdHInXG4gICAgICAgIC52LWFwcGxpY2F0aW9uLS1pcy1sdHJcbiAgICAgICAgICArZ2VuZXJhdGUtdXRpbGl0eS1ib2R5KCR1dGlsaXR5LCAkcHJvcGVydGllcywgJHZhbHVlLCAkaW5maXgpXG4gICAgICBAZWxzZSBpZiAkZm9yY2VEaXIgPT0gJ3J0bCdcbiAgICAgICAgLnYtYXBwbGljYXRpb24tLWlzLXJ0bFxuICAgICAgICAgICtnZW5lcmF0ZS11dGlsaXR5LWJvZHkoJHV0aWxpdHksICRwcm9wZXJ0aWVzLCAkdmFsdWUsICRpbmZpeClcbiAgICAgIEBlbHNlXG4gICAgICAgIC52LWFwcGxpY2F0aW9uXG4gICAgICAgICAgK2dlbmVyYXRlLXV0aWxpdHktYm9keSgkdXRpbGl0eSwgJHByb3BlcnRpZXMsICR2YWx1ZSwgJGluZml4KVxuXG49Z2VuZXJhdGUtdXRpbGl0eS1ib2R5KCR1dGlsaXR5LCAkcHJvcGVydGllcywgJHZhbHVlLCAkaW5maXgpXG4gIC8vIFVzZSBjdXN0b20gY2xhc3MgaWYgcHJlc2VudFxuICAkcHJvcGVydHktY2xhc3M6IG1hcC1nZXQoJHV0aWxpdHksIGNsYXNzKVxuICAkcHJvcGVydHktY2xhc3M6IGlmKCRwcm9wZXJ0eS1jbGFzcywgJHByb3BlcnR5LWNsYXNzLCBudGgoJHByb3BlcnRpZXMsIDEpKVxuXG4gIC8vIERvbid0IHByZWZpeCBpZiB2YWx1ZSBrZXkgaXMgbnVsbCAoZWcuIHdpdGggc2hhZG93IGNsYXNzKVxuICAkcHJvcGVydHktY2xhc3MtbW9kaWZpZXI6IGlmKG50aCgkdmFsdWUsIDEpLCBcIi1cIiArIG50aCgkdmFsdWUsIDEpLCBcIlwiKVxuXG4gICR2YWx1ZTogbnRoKCR2YWx1ZSwgMilcblxuICAuI3skcHJvcGVydHktY2xhc3MgKyAkaW5maXggKyAkcHJvcGVydHktY2xhc3MtbW9kaWZpZXJ9XG4gICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCBsZW5ndGgoJHByb3BlcnRpZXMpXG4gICAgICAkcHJvcGVydHk6IG50aCgkcHJvcGVydGllcywgJGkpXG4gICAgICAkdmFsOiAkdmFsdWVcbiAgICAgIEBpZiB0eXBlLW9mKCR2YWx1ZSkgPT0gJ2xpc3QnIGFuZCBsZW5ndGgoJHByb3BlcnRpZXMpID09IGxlbmd0aCgkdmFsdWUpXG4gICAgICAgICR2YWw6IG50aCgkdmFsdWUsICRpKVxuICAgICAgQGlmICR2YWwgIT0gZmFsc2VcbiAgICAgICAgLy8gQ2hlY2sgaWYgdW5pbXBvcnRhbnQgcHJvcGVydHkgZXhpc3RzLlxuICAgICAgICAvLyBUaGlzIGFsbG93cyB5b3UgdG8gY29uZGl0aW9uYWwgc2tpcFxuICAgICAgICAvLyBkZWZpbmluZyBhIHByb3BlcnR5IGFzIGltcG9ydGFudC5cbiAgICAgICAgJHVuaW1wb3J0YW50OiBtYXAtZ2V0KCR1dGlsaXR5LCB1bmltcG9ydGFudClcbiAgICAgICAgI3skcHJvcGVydHl9OiAkdmFsIGlmKGluZGV4KCR1bmltcG9ydGFudCwgJHByb3BlcnR5KSwgbnVsbCwgIWltcG9ydGFudClcbiIsIkBpbXBvcnQgJy4vX2Z1bmN0aW9ucydcbkBpbXBvcnQgJy4vX2Jvb3RhYmxlJ1xuQGltcG9ydCAnLi9fZWxldmF0aW9uJ1xuQGltcG9ydCAnLi9fcmFkaXVzJ1xuQGltcG9ydCAnLi9fcnRsJ1xuQGltcG9ydCAnLi9fc2hlZXQnXG5AaW1wb3J0ICcuL19zdGF0ZXMnXG5AaW1wb3J0ICcuL190aGVtZSdcbkBpbXBvcnQgJy4vX3V0aWxpdGllcydcbkBpbXBvcnQgJy4vX2Rpc3BsYXknXG5cbj1tZWRpYS1icmVha3BvaW50LXVwKCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKVxuICAkbWluOiBicmVha3BvaW50LW1pbigkbmFtZSwgJGJyZWFrcG9pbnRzKVxuICBAaWYgJG1pblxuICAgIEBtZWRpYSAobWluLXdpZHRoOiAkbWluKVxuICAgICAgQGNvbnRlbnRcbiAgQGVsc2VcbiAgICBAY29udGVudFxuIiwiQHVzZSBcInNhc3M6c3RyaW5nXCJcblxuQGltcG9ydCAnLi9fZGlzcGxheS5zYXNzJ1xuQGltcG9ydCAnLi9fc2NyZWVucmVhZGVycy5zYXNzJ1xuQGltcG9ydCAnLi9fdGV4dC5zYXNzJ1xuQGltcG9ydCAnLi9fdHJhbnNpdGlvbi5zYXNzJ1xuXG4vLyBVdGlsaXRpZXNcbkBlYWNoICRicmVha3BvaW50IGluIG1hcC1rZXlzKCRncmlkLWJyZWFrcG9pbnRzKVxuICAvLyBHZW5lcmF0ZSBtZWRpYSBxdWVyeSBpZiBuZWVkZWRcbiAgK21lZGlhLWJyZWFrcG9pbnQtdXAoJGJyZWFrcG9pbnQpXG4gICAgJGluZml4OiBicmVha3BvaW50LWluZml4KCRicmVha3BvaW50LCAkZ3JpZC1icmVha3BvaW50cylcblxuICAgIC8vIExvb3Agb3ZlciBlYWNoIHV0aWxpdHkgcHJvcGVydHlcbiAgICBAZWFjaCAka2V5LCAkdXRpbGl0eSBpbiAkdXRpbGl0aWVzXG4gICAgICAvLyBUaGUgdXRpbGl0eSBjYW4gYmUgZGlzYWJsZWQgd2l0aCBgZmFsc2VgLCB0aHVzIGNoZWNrIGlmIHRoZSB1dGlsaXR5IGlzIGEgbWFwIGZpcnN0XG4gICAgICAvLyBPbmx5IHByb2NlZWQgaWYgcmVzcG9uc2l2ZSBtZWRpYSBxdWVyaWVzIGFyZSBlbmFibGVkIG9yIGlmIGl0J3MgdGhlIGJhc2UgbWVkaWEgcXVlcnlcbiAgICAgIEBpZiBzdHJpbmcuc2xpY2UoJGtleSwgLTQpID09ICc6bHRyJ1xuICAgICAgICBAaWYgdHlwZS1vZigkdXRpbGl0eSkgPT0gXCJtYXBcIiBhbmQgKG1hcC1nZXQoJHV0aWxpdHksIHJlc3BvbnNpdmUpIG9yICRpbmZpeCA9PSBcIlwiKVxuICAgICAgICAgICtnZW5lcmF0ZS11dGlsaXR5KCR1dGlsaXR5LCAkaW5maXgsICdsdHInKVxuICAgICAgQGVsc2UgaWYgc3RyaW5nLnNsaWNlKCRrZXksIC00KSA9PSAnOnJ0bCdcbiAgICAgICAgQGlmIHR5cGUtb2YoJHV0aWxpdHkpID09IFwibWFwXCIgYW5kIChtYXAtZ2V0KCR1dGlsaXR5LCByZXNwb25zaXZlKSBvciAkaW5maXggPT0gXCJcIilcbiAgICAgICAgICArZ2VuZXJhdGUtdXRpbGl0eSgkdXRpbGl0eSwgJGluZml4LCAncnRsJylcbiAgICAgIEBlbHNlXG4gICAgICAgIEBpZiB0eXBlLW9mKCR1dGlsaXR5KSA9PSBcIm1hcFwiIGFuZCAobWFwLWdldCgkdXRpbGl0eSwgcmVzcG9uc2l2ZSkgb3IgJGluZml4ID09IFwiXCIpXG4gICAgICAgICAgK2dlbmVyYXRlLXV0aWxpdHkoJHV0aWxpdHksICRpbmZpeCwgJ2JpZGknKVxuXG5cbi8vIFByaW50IHV0aWxpdGllc1xuQG1lZGlhIHByaW50XG4gIEBlYWNoICRrZXksICR1dGlsaXR5IGluICR1dGlsaXRpZXNcbiAgICAvLyBUaGUgdXRpbGl0eSBjYW4gYmUgZGlzYWJsZWQgd2l0aCBgZmFsc2VgLCB0aHVzIGNoZWNrIGlmIHRoZSB1dGlsaXR5IGlzIGEgbWFwIGZpcnN0XG4gICAgLy8gVGhlbiBjaGVjayBpZiB0aGUgdXRpbGl0eSBuZWVkcyBwcmludCBzdHlsZXNcbiAgICBAaWYgc3RyaW5nLnNsaWNlKCRrZXksIC00KSA9PSAnOmx0cidcbiAgICAgIEBpZiB0eXBlLW9mKCR1dGlsaXR5KSA9PSBcIm1hcFwiIGFuZCBtYXAtZ2V0KCR1dGlsaXR5LCBwcmludCkgPT0gdHJ1ZVxuICAgICAgICArZ2VuZXJhdGUtdXRpbGl0eSgkdXRpbGl0eSwgXCItcHJpbnRcIiwgJ2x0cicpXG4gICAgQGVsc2UgaWYgc3RyaW5nLnNsaWNlKCRrZXksIC00KSA9PSAnOnJ0bCdcbiAgICAgIEBpZiB0eXBlLW9mKCR1dGlsaXR5KSA9PSBcIm1hcFwiIGFuZCBtYXAtZ2V0KCR1dGlsaXR5LCBwcmludCkgPT0gdHJ1ZVxuICAgICAgICArZ2VuZXJhdGUtdXRpbGl0eSgkdXRpbGl0eSwgXCItcHJpbnRcIiwgJ3J0bCcpXG4gICAgQGVsc2VcbiAgICAgIEBpZiB0eXBlLW9mKCR1dGlsaXR5KSA9PSBcIm1hcFwiIGFuZCBtYXAtZ2V0KCR1dGlsaXR5LCBwcmludCkgPT0gdHJ1ZVxuICAgICAgICArZ2VuZXJhdGUtdXRpbGl0eSgkdXRpbGl0eSwgXCItcHJpbnRcIiwgJ2JpZGknKVxuIiwiPHRlbXBsYXRlPlxuICA8di1hcHAgaWQ9XCJpbnNwaXJlXCI+XG4gICAgPGNhbnZhcyBpZD1cImFuaW1hdGVkLWJnXCI+PC9jYW52YXM+XG4gICAgPHRoZW1lLWRyYXdlci1sZWZ0IC8+XG4gICAgPHRoZW1lLWRyYXdlci1yaWdodCAvPlxuXG4gICAgPHRoZW1lLXRvb2xiYXIgYXBwIC8+XG5cbiAgICA8di1tYWluIHN0eWxlPVwibWFyZ2luLWJvdHRvbTogNDRweFwiPlxuICAgICAgPHYtY29udGFpbmVyIGZsdWlkPlxuICAgICAgICA8dHJhbnNpdGlvbiBuYW1lPVwiem9vbVwiIG1vZGU9XCJvdXQtaW5cIj5cbiAgICAgICAgICA8cm91dGVyLXZpZXcgLz5cbiAgICAgICAgPC90cmFuc2l0aW9uPlxuICAgICAgPC92LWNvbnRhaW5lcj5cbiAgICA8L3YtbWFpbj5cblxuICAgIDx0aGVtZS1idG4tcGFsZXR0ZSAvPlxuICAgIDx0aGVtZS1mbGFzaCAvPlxuICAgIDx0aGVtZS1mb290ZXIgYXBwIC8+XG4gICAgPGFpLWNoYXQtYXNzaXN0YW50IC8+XG4gIDwvdi1hcHA+XG48L3RlbXBsYXRlPlxuXG5cblxuXG5cbjxzY3JpcHQ+XG5pbXBvcnQgQWlDaGF0QXNzaXN0YW50IGZyb20gJy4vY29tcG9uZW50cy9BaUNoYXRBc3Npc3RhbnQudnVlJztcblxuZXhwb3J0IGRlZmF1bHQge1xuICBjb21wb25lbnRzOiB7XG4gICAgQWlDaGF0QXNzaXN0YW50XG4gIH0sXG4gIGNyZWF0ZWQoKSB7XG4gICAgdGhpcy4kc3RvcmUuZGlzcGF0Y2goXCJydW5fZ2V0X21ldGFEYXRhXCIpO1xuICB9LG1ldGhvZHM6IHtcbiAgICBpbml0Q2FudmFzQW5pbWF0aW9uKCkge1xuICAgICAgY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJhbmltYXRlZC1iZ1wiKTtcbiAgICAgIGNvbnN0IGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KFwiMmRcIik7XG5cbiAgICAgIGxldCBwYXJ0aWNsZXMgPSBbXTtcbiAgICAgIGNvbnN0IG51bVBhcnRpY2xlcyA9IDgwOyAvLyDYstmK2KfYr9ipINi52K/YryDYp9mE2KzYs9mK2YXYp9iqINmE2KzYudmEINin2YTYqtij2KvZitixINij2YPYq9ixINmI2LbZiNit2YvYp1xuXG4gICAgICAvLyDYqtit2K/ZitirINit2KzZhSDYp9mE2YAgY2FudmFzINmE2YXZhNihINin2YTYtdmB2K3YqVxuICAgICAgZnVuY3Rpb24gcmVzaXplQ2FudmFzKCkge1xuICAgICAgICBjYW52YXMud2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aDtcbiAgICAgICAgY2FudmFzLmhlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdodDtcbiAgICAgIH1cbiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwicmVzaXplXCIsIHJlc2l6ZUNhbnZhcyk7XG4gICAgICByZXNpemVDYW52YXMoKTtcblxuICAgICAgLy8g2KXZhti02KfYoSDYp9mE2KzYs9mK2YXYp9iqINin2YTZhdiq2K3YsdmD2KlcbiAgICAgIGNsYXNzIFBhcnRpY2xlIHtcbiAgICAgICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgICAgdGhpcy54ID0gTWF0aC5yYW5kb20oKSAqIGNhbnZhcy53aWR0aDtcbiAgICAgICAgICB0aGlzLnkgPSBNYXRoLnJhbmRvbSgpICogY2FudmFzLmhlaWdodDtcbiAgICAgICAgICB0aGlzLnJhZGl1cyA9IE1hdGgucmFuZG9tKCkgKiA0ICsgMTtcbiAgICAgICAgICB0aGlzLmR4ID0gKE1hdGgucmFuZG9tKCkgLSAwLjUpICogMS41O1xuICAgICAgICAgIHRoaXMuZHkgPSAoTWF0aC5yYW5kb20oKSAtIDAuNSkgKiAxLjU7XG4gICAgICAgICAgdGhpcy5hbHBoYSA9IE1hdGgucmFuZG9tKCkgKiAwLjUgKyAwLjU7XG4gICAgICAgICAgY29uc3QgY29sb3JzID0gW1xuICAgICAgICAgICAgXCJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOSlcIiwgIC8vINij2KjZiti2INmF2LTYuVxuICAgICAgICAgICAgXCJyZ2JhKDI1NSwgMjIzLCAxODYsIDAuOClcIiwgIC8vINij2LXZgdixINiv2KfZgdimXG4gICAgICAgICAgICBcInJnYmEoMTczLCAyMTYsIDIzMCwgMC44KVwiLCAgLy8g2KPYstix2YIg2LPZhdin2YjZiiDZgdin2KrYrVxuICAgICAgICAgICAgXCJyZ2JhKDI1NSwgMTgyLCAxOTMsIDAuOClcIiwgIC8vINmI2LHYr9mKINmG2KfYudmFXG4gICAgICAgICAgICBcInJnYmEoMTg2LCA4NSwgMjExLCAwLjgpXCIsICAgLy8g2KjZhtmB2LPYrNmKINiy2KfZh9mKXG4gICAgICAgICAgICBcInJnYmEoMTM1LCAyMDYsIDI1MCwgMC44KVwiLCAgLy8g2KPYstix2YIg2YHYp9iq2K1cbiAgICAgICAgICAgIFwicmdiYSgyNDAsIDI0OCwgMjU1LCAwLjgpXCIsICAvLyDYo9io2YrYtiDZhdiy2LHZglxuICAgICAgICAgICAgXCJyZ2JhKDI1NSwgMTA1LCAxODAsIDAuOSlcIiwgIC8vINmI2LHYr9mKINmG2YrZiNmGXG4gICAgICAgICAgICBcInJnYmEoMCwgMjU1LCAxMjcsIDAuOSlcIiwgICAgLy8g2KPYrti22LEg2YXYtNi5ICjZhtmK2YjZhilcbiAgICAgICAgICAgIFwicmdiYSgyNTUsIDE0MCwgMCwgMC45KVwiLCAgICAvLyDYqNix2KrZgtin2YTZiiDZhtin2LHZilxuICAgICAgICAgICAgXCJyZ2JhKDAsIDE5MSwgMjU1LCAwLjkpXCIsICAgIC8vINij2LLYsdmCINmD2YfYsdio2KfYptmKXG4gICAgICAgICAgICBcInJnYmEoMjU1LCAyMCwgMTQ3LCAwLjkpXCIsICAgLy8g2YjYsdiv2Yog2LrYp9mF2YIg2KzYsNin2KhcbiAgICAgICAgICAgIFwicmdiYSgyMTgsIDE2NSwgMzIsIDAuOSlcIiwgICAvLyDYsNmH2KjZiiDZgdin2K7YsVxuICAgICAgICAgICAgXCJyZ2JhKDEzOCwgNDMsIDIyNiwgMC45KVwiLCAgIC8vINij2LHYrNmI2KfZhtmKINmF2YTZg9mKXG4gICAgICAgICAgICBcInJnYmEoNzUsIDAsIDEzMCwgMC45KVwiLCAgICAgLy8g2YbZitmE2Yog2LnZhdmK2YJcbiAgICAgICAgICAgIFwicmdiYSgyNTUsIDY5LCAwLCAwLjkpXCIsICAgICAvLyDYo9it2YXYsSDYqNix2YPYp9mG2YpcbiAgICAgICAgICAgIFwicmdiYSgzNCwgMTM5LCAzNCwgMC45KVwiLCAgICAvLyDYo9iu2LbYsSDYutin2YXZgiDZhdix2YrYrVxuICAgICAgICAgICAgXCJyZ2JhKDAsIDI1NSwgMjU1LCAwLjkpXCIsICAgIC8vINmB2YrYsdmI2LLZiiDYs9in2LfYuVxuICAgICAgICAgICAgXCJyZ2JhKDE5OSwgMjEsIDEzMywgMC45KVwiLCAgIC8vINio2YbZgdiz2KzZiiDZgdin2YLYuVxuXG5cbiAgICAgICAgICAgIFwicmdiYSgwLCAyNTUsIDEyNywgMC4wKVwiLCAgICAvLyDYo9iu2LbYsSDZhdi02LkgKNmG2YrZiNmGKVxuICAgICAgICAgICAgXCJyZ2JhKDI1NSwgMTQwLCAwLCAwLjIpXCIsICAgIC8vINio2LHYqtmC2KfZhNmKINmG2KfYsdmKXG4gICAgICAgICAgICBcInJnYmEoMCwgMTkxLCAyNTUsIDAuMylcIiwgICAgLy8g2KPYstix2YIg2YPZh9ix2KjYp9im2YpcbiAgICAgICAgICAgIFwicmdiYSgyNTUsIDIwLCAxNDcsIDAuMSlcIiwgICAvLyDZiNix2K/ZiiDYutin2YXZgiDYrNiw2KfYqFxuICAgICAgICAgICAgXCJyZ2JhKDIxOCwgMTY1LCAzMiwgMC4xKVwiLCAgIC8vINiw2YfYqNmKINmB2KfYrtixXG4gICAgICAgICAgICBcInJnYmEoMTM4LCA0MywgMjI2LCAwLjEpXCIsICAgLy8g2KPYsdis2YjYp9mG2Yog2YXZhNmD2YpcbiAgICAgICAgICAgIFwicmdiYSg3NSwgMCwgMTMwLCAwLjEpXCIsICAgICAvLyDZhtmK2YTZiiDYudmF2YrZglxuICAgICAgICAgICAgXCJyZ2JhKDI1NSwgNjksIDAsIDAuMSlcIiwgICAgIC8vINij2K3ZhdixINio2LHZg9in2YbZilxuICAgICAgICAgICAgXCJyZ2JhKDM0LCAxMzksIDM0LCAwLjEpXCIsICAgIC8vINij2K7YttixINi62KfZhdmCINmF2LHZititXG5cbiAgICAgICAgICBdO1xuXG4gICAgICAgICAgdGhpcy5jb2xvciA9IGNvbG9yc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBjb2xvcnMubGVuZ3RoKV07XG4gICAgICAgIH1cblxuICAgICAgICBtb3ZlKCkge1xuICAgICAgICAgIHRoaXMueCArPSB0aGlzLmR4O1xuICAgICAgICAgIHRoaXMueSArPSB0aGlzLmR5O1xuXG4gICAgICAgICAgLy8g2KfYsdiq2K/Yp9ivINin2YTYrNiz2YrZhdin2Kog2LnZhtivINin2YTYrdmI2KfZgVxuICAgICAgICAgIGlmICh0aGlzLnggPiBjYW52YXMud2lkdGggfHwgdGhpcy54IDwgMCkgdGhpcy5keCAqPSAtMTtcbiAgICAgICAgICBpZiAodGhpcy55ID4gY2FudmFzLmhlaWdodCB8fCB0aGlzLnkgPCAwKSB0aGlzLmR5ICo9IC0xO1xuICAgICAgICB9XG5cbiAgICAgICAgZHJhdygpIHtcbiAgICAgICAgICBjdHguYmVnaW5QYXRoKCk7XG4gICAgICAgICAgY3R4LmFyYyh0aGlzLngsIHRoaXMueSwgdGhpcy5yYWRpdXMsIDAsIE1hdGguUEkgKiAyKTtcbiAgICAgICAgICBjdHguZmlsbFN0eWxlID0gdGhpcy5jb2xvcjtcbiAgICAgICAgICBjdHguZmlsbCgpO1xuICAgICAgICAgIGN0eC5jbG9zZVBhdGgoKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyDYqtmH2YrYptipINin2YTYrNiz2YrZhdin2KpcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbnVtUGFydGljbGVzOyBpKyspIHtcbiAgICAgICAgcGFydGljbGVzLnB1c2gobmV3IFBhcnRpY2xlKCkpO1xuICAgICAgfVxuXG4gICAgICAvLyDYsdiz2YUg2YjYqtit2K/ZitirINin2YTYrdix2YPYqSDZhdi5INiq2KPYq9mK2LEg2KfZhNiw2YrZhFxuICAgICAgZnVuY3Rpb24gYW5pbWF0ZSgpIHtcbiAgICAgICAgY3R4LmZpbGxTdHlsZSA9IFwicmdiYSgyMywgMzEsIDYzLCAwLjkpXCI7IC8vINiq2KPYq9mK2LEg2KfZhNiw2YrZhCDZitis2LnZhCDYp9mE2K3YsdmD2KfYqiDYp9mG2LPZitin2KjZitipXG4gICAgICAgIGN0eC5maWxsUmVjdCgwLCAwLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQpO1xuXG4gICAgICAgIHBhcnRpY2xlcy5mb3JFYWNoKChwKSA9PiB7XG4gICAgICAgICAgcC5tb3ZlKCk7XG4gICAgICAgICAgcC5kcmF3KCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShhbmltYXRlKTtcbiAgICAgIH1cblxuICAgICAgYW5pbWF0ZSgpO1xuICAgIH0sXG4gIH0sIG1vdW50ZWQoKSB7XG4gICAgdGhpcy5pbml0Q2FudmFzQW5pbWF0aW9uKCk7XG4gIH0sXG59O1xuPC9zY3JpcHQ+XG5cbjxzdHlsZSBsYW5nPVwiY3NzXCI+XG4udGhlbWUtLWRhcmsudi1hcHBsaWNhdGlvbi0taXMtbHRyLnYtYXBwbGljYXRpb24ge1xuICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuNzApICFpbXBvcnRhbnQ7XG59XG5cbi50aGVtZS0tbGlnaHQudi1hcHBsaWNhdGlvbi0taXMtbHRyLnYtYXBwbGljYXRpb24ge1xuICBiYWNrZ3JvdW5kOiByZ2JhKDI0MCwgMjQwLCAyNDAsIDAuNzUpICFpbXBvcnRhbnQ7XG59XG5cbiNhbmltYXRlZC1iZyB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICB3aWR0aDogMTAwdnc7XG4gIGhlaWdodDogMTAwdmg7XG4gIHotaW5kZXg6IC0xO1xuICBiYWNrZ3JvdW5kOiByZ2JhKDIzNiwgMjMzLCAyMzMsIDAuOSk7IC8qINiu2YTZgdmK2Kkg2YHYp9iq2K3YqSDYtNio2Ycg2LTZgdin2YHYqSAqL1xufVxuXG5cbi5zZi1kaXNwbGF5LW5vbmUge1xuICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O1xufVxuPC9zdHlsZT4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=*/