valtech-components 2.0.1013 → 2.0.1015

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. package/esm2022/lib/components/molecules/content-reaction/content-reaction.component.mjs +16 -4
  2. package/esm2022/lib/components/molecules/content-reaction/types.mjs +1 -1
  3. package/esm2022/lib/components/organisms/about-view/about-view.component.mjs +27 -5
  4. package/esm2022/lib/components/organisms/about-view/types.mjs +1 -1
  5. package/esm2022/lib/components/organisms/settings-hub/settings-menu.mjs +9 -0
  6. package/esm2022/lib/components/templates/docs-page/docs-page.component.mjs +1 -1
  7. package/esm2022/lib/version.mjs +2 -2
  8. package/esm2022/public-api.mjs +2 -1
  9. package/fesm2022/valtech-components.mjs +50 -9
  10. package/fesm2022/valtech-components.mjs.map +1 -1
  11. package/lib/components/molecules/content-reaction/content-reaction.component.d.ts +12 -1
  12. package/lib/components/molecules/content-reaction/types.d.ts +8 -0
  13. package/lib/components/organisms/about-view/about-view.component.d.ts +1 -0
  14. package/lib/components/organisms/about-view/types.d.ts +9 -0
  15. package/lib/components/organisms/settings-hub/settings-menu.d.ts +21 -0
  16. package/lib/version.d.ts +1 -1
  17. package/package.json +1 -1
  18. package/public-api.d.ts +1 -0
  19. package/src/lib/assets/fonts/Khula/khula-300-latin-ext.woff2 +0 -0
  20. package/src/lib/assets/fonts/Khula/khula-300-latin.woff2 +0 -0
  21. package/src/lib/assets/fonts/Khula/khula-400-latin-ext.woff2 +0 -0
  22. package/src/lib/assets/fonts/Khula/khula-400-latin.woff2 +0 -0
  23. package/src/lib/assets/fonts/Khula/khula-600-latin-ext.woff2 +0 -0
  24. package/src/lib/assets/fonts/Khula/khula-600-latin.woff2 +0 -0
  25. package/src/lib/assets/fonts/Khula/khula-700-latin-ext.woff2 +0 -0
  26. package/src/lib/assets/fonts/Khula/khula-700-latin.woff2 +0 -0
  27. package/src/lib/assets/fonts/Khula/khula-800-latin-ext.woff2 +0 -0
  28. package/src/lib/assets/fonts/Khula/khula-800-latin.woff2 +0 -0
  29. package/src/lib/services/firebase/firebase-messaging-sw.js +145 -0
  30. package/styles/fonts.scss +35 -3
@@ -1,7 +1,9 @@
1
1
  import { Component, inject, Input, Output, EventEmitter, signal, computed, } from '@angular/core';
2
2
  import { CommonModule } from '@angular/common';
3
3
  import { FormsModule } from '@angular/forms';
4
- import { IonButton, IonSpinner, IonTextarea } from '@ionic/angular/standalone';
4
+ import { IonButton, IonIcon, IonSpinner, IonTextarea } from '@ionic/angular/standalone';
5
+ import { addIcons } from 'ionicons';
6
+ import { closeOutline } from 'ionicons/icons';
5
7
  import { FeedbackService } from '../../../services/feedback/feedback.service';
6
8
  import { ToastService } from '../../../services/toast.service';
7
9
  import { I18nService } from '../../../services/i18n';
@@ -27,6 +29,7 @@ const CONTENT_REACTION_I18N = {
27
29
  positiveLabel: 'Sí, mucho',
28
30
  negativeLabel: 'No tanto',
29
31
  negativeFeedbackTitle: '¿Cuéntanos qué no te gustó?',
32
+ close: 'Cerrar',
30
33
  },
31
34
  en: {
32
35
  question: 'Was this content helpful?',
@@ -39,6 +42,7 @@ const CONTENT_REACTION_I18N = {
39
42
  positiveLabel: 'Yes, a lot',
40
43
  negativeLabel: 'Not really',
41
44
  negativeFeedbackTitle: "Tell us what you didn't like?",
45
+ close: 'Close',
42
46
  },
43
47
  };
44
48
  /**
@@ -93,6 +97,7 @@ export class ContentReactionComponent {
93
97
  readonly: this.props.readonly ?? false,
94
98
  // Variante: 'emoji' cuando se declara explícitamente o cuando se pasan emojis custom.
95
99
  variant: this.props.variant ?? (this.props.emojis ? 'emoji' : 'buttons'),
100
+ showCloseButton: this.props.showCloseButton ?? false,
96
101
  }));
97
102
  this.activeReactionValues = computed(() => this.resolvedProps().emojis.length === 2 ? ['negative', 'positive'] : ['negative', 'neutral', 'positive']);
98
103
  this.showCommentField = computed(() => {
@@ -105,6 +110,7 @@ export class ContentReactionComponent {
105
110
  return this.resolvedProps().showComment;
106
111
  });
107
112
  this.canSubmit = computed(() => this.state().selectedValue !== null && !this.state().isLoading);
113
+ addIcons({ closeOutline });
108
114
  // Auto-registro de defaults i18n (es/en) si el consumer no proveyó el
109
115
  // namespace. Garantiza que `t()` nunca caiga en key faltante. Ver
110
116
  // CONTENT_REACTION_I18N. Idempotente: solo la 1ª instancia registra.
@@ -112,6 +118,10 @@ export class ContentReactionComponent {
112
118
  this.i18n.registerContent('ContentReaction', CONTENT_REACTION_I18N);
113
119
  }
114
120
  }
121
+ /** Cierra el modal/sheet contenedor (si el componente se abrió vía ModalService). */
122
+ close() {
123
+ void this._modalRef?.dismiss();
124
+ }
115
125
  ngOnInit() {
116
126
  this.loadPreviousReaction();
117
127
  }
@@ -251,16 +261,18 @@ export class ContentReactionComponent {
251
261
  return this.i18n.t(key, 'ContentReaction') || translations[key] || key;
252
262
  }
253
263
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ContentReactionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
254
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ContentReactionComponent, isStandalone: true, selector: "val-content-reaction", inputs: { props: "props" }, outputs: { reactionSubmit: "reactionSubmit", reactionChange: "reactionChange" }, usesOnChanges: true, ngImport: i0, template: "@if (isConfigured()) {\n<div class=\"content-reaction\" [class.disabled]=\"resolvedProps().disabled\" [class.readonly]=\"resolvedProps().readonly\">\n <!-- Loading inicial -->\n @if (state().isLoading && !state().selectedValue) {\n <div class=\"loading-container\">\n <ion-spinner name=\"crescent\"></ion-spinner>\n </div>\n } @else {\n <!-- Pregunta -->\n <p class=\"question\">\n {{ state().selectedValue === 'negative' ? t('negativeFeedbackTitle') : resolvedProps().question }}\n </p>\n\n <!-- Botones de reacci\u00F3n \u2014 variante emoji (caras, estrellas, thumbs, \u2026) -->\n @if (resolvedProps().variant === 'emoji') {\n <div class=\"reaction-buttons reaction-buttons--emoji\">\n @for (value of activeReactionValues(); track value; let i = $index) {\n <ion-button\n fill=\"clear\"\n shape=\"round\"\n [class.selected]=\"isSelected(value)\"\n [attr.aria-label]=\"resolvedProps().emojiLabels[i]\"\n [attr.aria-pressed]=\"isSelected(value)\"\n [disabled]=\"resolvedProps().disabled || resolvedProps().readonly\"\n (click)=\"selectReaction(value)\"\n >\n <span class=\"emoji-btn\">{{ resolvedProps().emojis[i] }}</span>\n </ion-button>\n }\n </div>\n } @else {\n <!-- Botones de reacci\u00F3n \u2014 variante texto (default) -->\n <div class=\"reaction-buttons\">\n <ion-button\n [fill]=\"isSelected('positive') ? 'solid' : 'outline'\"\n shape=\"round\"\n color=\"dark\"\n [attr.aria-pressed]=\"isSelected('positive')\"\n [disabled]=\"resolvedProps().disabled || resolvedProps().readonly\"\n (click)=\"selectReaction('positive')\"\n >\n {{ t('positiveLabel') }}\n </ion-button>\n <ion-button\n [fill]=\"isSelected('negative') ? 'solid' : 'outline'\"\n shape=\"round\"\n color=\"dark\"\n [attr.aria-pressed]=\"isSelected('negative')\"\n [disabled]=\"resolvedProps().disabled || resolvedProps().readonly\"\n (click)=\"selectReaction('negative')\"\n >\n {{ t('negativeLabel') }}\n </ion-button>\n </div>\n }\n\n <!-- Campo de comentario (solo si hay selecci\u00F3n) -->\n @if (showCommentField()) {\n <div class=\"comment-section\">\n <ion-textarea\n [value]=\"state().comment\"\n [placeholder]=\"resolvedProps().commentPlaceholder\"\n [maxlength]=\"resolvedProps().maxCommentLength\"\n [disabled]=\"resolvedProps().disabled\"\n [rows]=\"3\"\n class=\"comment-textarea\"\n (ionInput)=\"updateComment($event)\"\n ></ion-textarea>\n <span class=\"char-count\"> {{ state().comment.length }}/{{ resolvedProps().maxCommentLength }} </span>\n </div>\n }\n\n <!-- Bot\u00F3n de env\u00EDo -->\n @if (state().selectedValue && !state().isSubmitted) {\n <ion-button expand=\"block\" shape=\"round\" [disabled]=\"!canSubmit()\" (click)=\"submitReaction()\" class=\"submit-button\">\n @if (state().isLoading) {\n <ion-spinner name=\"crescent\"></ion-spinner>\n } @else { {{ state().hadPreviousReaction ? t('update') : t('submit') }} }\n </ion-button>\n }\n\n <!-- Mensaje de confirmaci\u00F3n -->\n @if (state().isSubmitted) {\n <p class=\"submitted-message\">{{ t('thankYou') }}</p>\n }\n\n <!-- Error -->\n @if (state().error) {\n <p class=\"error-message\">{{ state().error }}</p>\n } }\n</div>\n}\n", styles: [":host{display:block}.content-reaction{padding:16px;text-align:center}.content-reaction.disabled{opacity:.6;pointer-events:none}.content-reaction.readonly{pointer-events:none}.question{font-size:1.0625rem;font-weight:700;color:var(--ion-color-dark);margin:0 0 16px}.reaction-buttons{display:flex;justify-content:center;gap:12px;margin-bottom:20px}.reaction-buttons--emoji{gap:8px}.reaction-buttons--emoji ion-button{--padding-start: 4px;--padding-end: 4px;transition:transform .15s ease}.reaction-buttons--emoji ion-button.selected{transform:scale(1.25)}.reaction-buttons--emoji ion-button:not(.selected):not([disabled]){opacity:.55}.reaction-buttons--emoji ion-button:not(.selected):not([disabled]):hover{opacity:1}.emoji-btn{font-size:2rem;line-height:1;display:block}.comment-section{margin-top:16px;animation:slideIn .3s ease-out}.comment-section .comment-textarea{--background: transparent;--border-radius: 8px;--padding-start: 12px;--padding-end: 12px;width:100%}.comment-section .char-count{display:block;text-align:right;font-size:.75rem;color:var(--ion-color-medium);margin-top:4px}.submit-button{margin-top:16px}.submitted-message{margin-top:16px;color:var(--ion-color-success);font-weight:500;animation:fadeIn .3s ease-out}.error-message{margin-top:8px;color:var(--ion-color-danger);font-size:.875rem}.loading-container{display:flex;justify-content:center;padding:20px}@keyframes slideIn{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }, { kind: "component", type: IonTextarea, selector: "ion-textarea", inputs: ["autoGrow", "autocapitalize", "autofocus", "clearOnEdit", "color", "cols", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "maxlength", "minlength", "mode", "name", "placeholder", "readonly", "required", "rows", "shape", "spellcheck", "value", "wrap"] }] }); }
264
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ContentReactionComponent, isStandalone: true, selector: "val-content-reaction", inputs: { props: "props", _modalRef: "_modalRef" }, outputs: { reactionSubmit: "reactionSubmit", reactionChange: "reactionChange" }, usesOnChanges: true, ngImport: i0, template: "@if (isConfigured()) {\n<div class=\"content-reaction\" [class.disabled]=\"resolvedProps().disabled\" [class.readonly]=\"resolvedProps().readonly\">\n <!-- Bot\u00F3n de cierre (solo en modo modal/sheet) -->\n @if (resolvedProps().showCloseButton) {\n <ion-button fill=\"clear\" color=\"dark\" class=\"close-button\" [attr.aria-label]=\"t('close')\" (click)=\"close()\">\n <ion-icon name=\"close-outline\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n }\n <!-- Loading inicial -->\n @if (state().isLoading && !state().selectedValue) {\n <div class=\"loading-container\">\n <ion-spinner name=\"crescent\"></ion-spinner>\n </div>\n } @else {\n <!-- Pregunta -->\n <p class=\"question\">\n {{ state().selectedValue === 'negative' ? t('negativeFeedbackTitle') : resolvedProps().question }}\n </p>\n\n <!-- Botones de reacci\u00F3n \u2014 variante emoji (caras, estrellas, thumbs, \u2026) -->\n @if (resolvedProps().variant === 'emoji') {\n <div class=\"reaction-buttons reaction-buttons--emoji\">\n @for (value of activeReactionValues(); track value; let i = $index) {\n <ion-button\n fill=\"clear\"\n shape=\"round\"\n [class.selected]=\"isSelected(value)\"\n [attr.aria-label]=\"resolvedProps().emojiLabels[i]\"\n [attr.aria-pressed]=\"isSelected(value)\"\n [disabled]=\"resolvedProps().disabled || resolvedProps().readonly\"\n (click)=\"selectReaction(value)\"\n >\n <span class=\"emoji-btn\">{{ resolvedProps().emojis[i] }}</span>\n </ion-button>\n }\n </div>\n } @else {\n <!-- Botones de reacci\u00F3n \u2014 variante texto (default) -->\n <div class=\"reaction-buttons\">\n <ion-button\n [fill]=\"isSelected('positive') ? 'solid' : 'outline'\"\n shape=\"round\"\n color=\"dark\"\n [attr.aria-pressed]=\"isSelected('positive')\"\n [disabled]=\"resolvedProps().disabled || resolvedProps().readonly\"\n (click)=\"selectReaction('positive')\"\n >\n {{ t('positiveLabel') }}\n </ion-button>\n <ion-button\n [fill]=\"isSelected('negative') ? 'solid' : 'outline'\"\n shape=\"round\"\n color=\"dark\"\n [attr.aria-pressed]=\"isSelected('negative')\"\n [disabled]=\"resolvedProps().disabled || resolvedProps().readonly\"\n (click)=\"selectReaction('negative')\"\n >\n {{ t('negativeLabel') }}\n </ion-button>\n </div>\n }\n\n <!-- Campo de comentario (solo si hay selecci\u00F3n) -->\n @if (showCommentField()) {\n <div class=\"comment-section\">\n <ion-textarea\n [value]=\"state().comment\"\n [placeholder]=\"resolvedProps().commentPlaceholder\"\n [maxlength]=\"resolvedProps().maxCommentLength\"\n [disabled]=\"resolvedProps().disabled\"\n [rows]=\"3\"\n class=\"comment-textarea\"\n (ionInput)=\"updateComment($event)\"\n ></ion-textarea>\n <span class=\"char-count\"> {{ state().comment.length }}/{{ resolvedProps().maxCommentLength }} </span>\n </div>\n }\n\n <!-- Bot\u00F3n de env\u00EDo -->\n @if (state().selectedValue && !state().isSubmitted) {\n <ion-button expand=\"block\" shape=\"round\" [disabled]=\"!canSubmit()\" (click)=\"submitReaction()\" class=\"submit-button\">\n @if (state().isLoading) {\n <ion-spinner name=\"crescent\"></ion-spinner>\n } @else { {{ state().hadPreviousReaction ? t('update') : t('submit') }} }\n </ion-button>\n }\n\n <!-- Mensaje de confirmaci\u00F3n -->\n @if (state().isSubmitted) {\n <p class=\"submitted-message\">{{ t('thankYou') }}</p>\n }\n\n <!-- Error -->\n @if (state().error) {\n <p class=\"error-message\">{{ state().error }}</p>\n } }\n</div>\n}\n", styles: [":host{display:block}.content-reaction{position:relative;padding:16px;text-align:center}.content-reaction.disabled{opacity:.6;pointer-events:none}.content-reaction.readonly{pointer-events:none}.close-button{position:absolute;top:0;right:0;margin:0;--padding-start: 6px;--padding-end: 6px;--color: var(--ion-color-medium)}.close-button ion-icon{font-size:1.5rem}.question{font-size:1.0625rem;font-weight:700;color:var(--ion-color-dark);margin:0 0 16px}.reaction-buttons{display:flex;justify-content:center;gap:12px;margin-bottom:20px}.reaction-buttons--emoji{gap:8px}.reaction-buttons--emoji ion-button{--padding-start: 4px;--padding-end: 4px;transition:transform .15s ease}.reaction-buttons--emoji ion-button.selected{transform:scale(1.25)}.reaction-buttons--emoji ion-button:not(.selected):not([disabled]){opacity:.55}.reaction-buttons--emoji ion-button:not(.selected):not([disabled]):hover{opacity:1}.emoji-btn{font-size:2rem;line-height:1;display:block}.comment-section{margin-top:16px;animation:slideIn .3s ease-out}.comment-section .comment-textarea{--background: transparent;--border-radius: 8px;--padding-start: 12px;--padding-end: 12px;width:100%}.comment-section .char-count{display:block;text-align:right;font-size:.75rem;color:var(--ion-color-medium);margin-top:4px}.submit-button{margin-top:16px}.submitted-message{margin-top:16px;color:var(--ion-color-success);font-weight:500;animation:fadeIn .3s ease-out}.error-message{margin-top:8px;color:var(--ion-color-danger);font-size:.875rem}.loading-container{display:flex;justify-content:center;padding:20px}@keyframes slideIn{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }, { kind: "component", type: IonTextarea, selector: "ion-textarea", inputs: ["autoGrow", "autocapitalize", "autofocus", "clearOnEdit", "color", "cols", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "maxlength", "minlength", "mode", "name", "placeholder", "readonly", "required", "rows", "shape", "spellcheck", "value", "wrap"] }] }); }
255
265
  }
256
266
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ContentReactionComponent, decorators: [{
257
267
  type: Component,
258
- args: [{ selector: 'val-content-reaction', standalone: true, imports: [CommonModule, FormsModule, IonButton, IonSpinner, IonTextarea], template: "@if (isConfigured()) {\n<div class=\"content-reaction\" [class.disabled]=\"resolvedProps().disabled\" [class.readonly]=\"resolvedProps().readonly\">\n <!-- Loading inicial -->\n @if (state().isLoading && !state().selectedValue) {\n <div class=\"loading-container\">\n <ion-spinner name=\"crescent\"></ion-spinner>\n </div>\n } @else {\n <!-- Pregunta -->\n <p class=\"question\">\n {{ state().selectedValue === 'negative' ? t('negativeFeedbackTitle') : resolvedProps().question }}\n </p>\n\n <!-- Botones de reacci\u00F3n \u2014 variante emoji (caras, estrellas, thumbs, \u2026) -->\n @if (resolvedProps().variant === 'emoji') {\n <div class=\"reaction-buttons reaction-buttons--emoji\">\n @for (value of activeReactionValues(); track value; let i = $index) {\n <ion-button\n fill=\"clear\"\n shape=\"round\"\n [class.selected]=\"isSelected(value)\"\n [attr.aria-label]=\"resolvedProps().emojiLabels[i]\"\n [attr.aria-pressed]=\"isSelected(value)\"\n [disabled]=\"resolvedProps().disabled || resolvedProps().readonly\"\n (click)=\"selectReaction(value)\"\n >\n <span class=\"emoji-btn\">{{ resolvedProps().emojis[i] }}</span>\n </ion-button>\n }\n </div>\n } @else {\n <!-- Botones de reacci\u00F3n \u2014 variante texto (default) -->\n <div class=\"reaction-buttons\">\n <ion-button\n [fill]=\"isSelected('positive') ? 'solid' : 'outline'\"\n shape=\"round\"\n color=\"dark\"\n [attr.aria-pressed]=\"isSelected('positive')\"\n [disabled]=\"resolvedProps().disabled || resolvedProps().readonly\"\n (click)=\"selectReaction('positive')\"\n >\n {{ t('positiveLabel') }}\n </ion-button>\n <ion-button\n [fill]=\"isSelected('negative') ? 'solid' : 'outline'\"\n shape=\"round\"\n color=\"dark\"\n [attr.aria-pressed]=\"isSelected('negative')\"\n [disabled]=\"resolvedProps().disabled || resolvedProps().readonly\"\n (click)=\"selectReaction('negative')\"\n >\n {{ t('negativeLabel') }}\n </ion-button>\n </div>\n }\n\n <!-- Campo de comentario (solo si hay selecci\u00F3n) -->\n @if (showCommentField()) {\n <div class=\"comment-section\">\n <ion-textarea\n [value]=\"state().comment\"\n [placeholder]=\"resolvedProps().commentPlaceholder\"\n [maxlength]=\"resolvedProps().maxCommentLength\"\n [disabled]=\"resolvedProps().disabled\"\n [rows]=\"3\"\n class=\"comment-textarea\"\n (ionInput)=\"updateComment($event)\"\n ></ion-textarea>\n <span class=\"char-count\"> {{ state().comment.length }}/{{ resolvedProps().maxCommentLength }} </span>\n </div>\n }\n\n <!-- Bot\u00F3n de env\u00EDo -->\n @if (state().selectedValue && !state().isSubmitted) {\n <ion-button expand=\"block\" shape=\"round\" [disabled]=\"!canSubmit()\" (click)=\"submitReaction()\" class=\"submit-button\">\n @if (state().isLoading) {\n <ion-spinner name=\"crescent\"></ion-spinner>\n } @else { {{ state().hadPreviousReaction ? t('update') : t('submit') }} }\n </ion-button>\n }\n\n <!-- Mensaje de confirmaci\u00F3n -->\n @if (state().isSubmitted) {\n <p class=\"submitted-message\">{{ t('thankYou') }}</p>\n }\n\n <!-- Error -->\n @if (state().error) {\n <p class=\"error-message\">{{ state().error }}</p>\n } }\n</div>\n}\n", styles: [":host{display:block}.content-reaction{padding:16px;text-align:center}.content-reaction.disabled{opacity:.6;pointer-events:none}.content-reaction.readonly{pointer-events:none}.question{font-size:1.0625rem;font-weight:700;color:var(--ion-color-dark);margin:0 0 16px}.reaction-buttons{display:flex;justify-content:center;gap:12px;margin-bottom:20px}.reaction-buttons--emoji{gap:8px}.reaction-buttons--emoji ion-button{--padding-start: 4px;--padding-end: 4px;transition:transform .15s ease}.reaction-buttons--emoji ion-button.selected{transform:scale(1.25)}.reaction-buttons--emoji ion-button:not(.selected):not([disabled]){opacity:.55}.reaction-buttons--emoji ion-button:not(.selected):not([disabled]):hover{opacity:1}.emoji-btn{font-size:2rem;line-height:1;display:block}.comment-section{margin-top:16px;animation:slideIn .3s ease-out}.comment-section .comment-textarea{--background: transparent;--border-radius: 8px;--padding-start: 12px;--padding-end: 12px;width:100%}.comment-section .char-count{display:block;text-align:right;font-size:.75rem;color:var(--ion-color-medium);margin-top:4px}.submit-button{margin-top:16px}.submitted-message{margin-top:16px;color:var(--ion-color-success);font-weight:500;animation:fadeIn .3s ease-out}.error-message{margin-top:8px;color:var(--ion-color-danger);font-size:.875rem}.loading-container{display:flex;justify-content:center;padding:20px}@keyframes slideIn{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}\n"] }]
268
+ args: [{ selector: 'val-content-reaction', standalone: true, imports: [CommonModule, FormsModule, IonButton, IonIcon, IonSpinner, IonTextarea], template: "@if (isConfigured()) {\n<div class=\"content-reaction\" [class.disabled]=\"resolvedProps().disabled\" [class.readonly]=\"resolvedProps().readonly\">\n <!-- Bot\u00F3n de cierre (solo en modo modal/sheet) -->\n @if (resolvedProps().showCloseButton) {\n <ion-button fill=\"clear\" color=\"dark\" class=\"close-button\" [attr.aria-label]=\"t('close')\" (click)=\"close()\">\n <ion-icon name=\"close-outline\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n }\n <!-- Loading inicial -->\n @if (state().isLoading && !state().selectedValue) {\n <div class=\"loading-container\">\n <ion-spinner name=\"crescent\"></ion-spinner>\n </div>\n } @else {\n <!-- Pregunta -->\n <p class=\"question\">\n {{ state().selectedValue === 'negative' ? t('negativeFeedbackTitle') : resolvedProps().question }}\n </p>\n\n <!-- Botones de reacci\u00F3n \u2014 variante emoji (caras, estrellas, thumbs, \u2026) -->\n @if (resolvedProps().variant === 'emoji') {\n <div class=\"reaction-buttons reaction-buttons--emoji\">\n @for (value of activeReactionValues(); track value; let i = $index) {\n <ion-button\n fill=\"clear\"\n shape=\"round\"\n [class.selected]=\"isSelected(value)\"\n [attr.aria-label]=\"resolvedProps().emojiLabels[i]\"\n [attr.aria-pressed]=\"isSelected(value)\"\n [disabled]=\"resolvedProps().disabled || resolvedProps().readonly\"\n (click)=\"selectReaction(value)\"\n >\n <span class=\"emoji-btn\">{{ resolvedProps().emojis[i] }}</span>\n </ion-button>\n }\n </div>\n } @else {\n <!-- Botones de reacci\u00F3n \u2014 variante texto (default) -->\n <div class=\"reaction-buttons\">\n <ion-button\n [fill]=\"isSelected('positive') ? 'solid' : 'outline'\"\n shape=\"round\"\n color=\"dark\"\n [attr.aria-pressed]=\"isSelected('positive')\"\n [disabled]=\"resolvedProps().disabled || resolvedProps().readonly\"\n (click)=\"selectReaction('positive')\"\n >\n {{ t('positiveLabel') }}\n </ion-button>\n <ion-button\n [fill]=\"isSelected('negative') ? 'solid' : 'outline'\"\n shape=\"round\"\n color=\"dark\"\n [attr.aria-pressed]=\"isSelected('negative')\"\n [disabled]=\"resolvedProps().disabled || resolvedProps().readonly\"\n (click)=\"selectReaction('negative')\"\n >\n {{ t('negativeLabel') }}\n </ion-button>\n </div>\n }\n\n <!-- Campo de comentario (solo si hay selecci\u00F3n) -->\n @if (showCommentField()) {\n <div class=\"comment-section\">\n <ion-textarea\n [value]=\"state().comment\"\n [placeholder]=\"resolvedProps().commentPlaceholder\"\n [maxlength]=\"resolvedProps().maxCommentLength\"\n [disabled]=\"resolvedProps().disabled\"\n [rows]=\"3\"\n class=\"comment-textarea\"\n (ionInput)=\"updateComment($event)\"\n ></ion-textarea>\n <span class=\"char-count\"> {{ state().comment.length }}/{{ resolvedProps().maxCommentLength }} </span>\n </div>\n }\n\n <!-- Bot\u00F3n de env\u00EDo -->\n @if (state().selectedValue && !state().isSubmitted) {\n <ion-button expand=\"block\" shape=\"round\" [disabled]=\"!canSubmit()\" (click)=\"submitReaction()\" class=\"submit-button\">\n @if (state().isLoading) {\n <ion-spinner name=\"crescent\"></ion-spinner>\n } @else { {{ state().hadPreviousReaction ? t('update') : t('submit') }} }\n </ion-button>\n }\n\n <!-- Mensaje de confirmaci\u00F3n -->\n @if (state().isSubmitted) {\n <p class=\"submitted-message\">{{ t('thankYou') }}</p>\n }\n\n <!-- Error -->\n @if (state().error) {\n <p class=\"error-message\">{{ state().error }}</p>\n } }\n</div>\n}\n", styles: [":host{display:block}.content-reaction{position:relative;padding:16px;text-align:center}.content-reaction.disabled{opacity:.6;pointer-events:none}.content-reaction.readonly{pointer-events:none}.close-button{position:absolute;top:0;right:0;margin:0;--padding-start: 6px;--padding-end: 6px;--color: var(--ion-color-medium)}.close-button ion-icon{font-size:1.5rem}.question{font-size:1.0625rem;font-weight:700;color:var(--ion-color-dark);margin:0 0 16px}.reaction-buttons{display:flex;justify-content:center;gap:12px;margin-bottom:20px}.reaction-buttons--emoji{gap:8px}.reaction-buttons--emoji ion-button{--padding-start: 4px;--padding-end: 4px;transition:transform .15s ease}.reaction-buttons--emoji ion-button.selected{transform:scale(1.25)}.reaction-buttons--emoji ion-button:not(.selected):not([disabled]){opacity:.55}.reaction-buttons--emoji ion-button:not(.selected):not([disabled]):hover{opacity:1}.emoji-btn{font-size:2rem;line-height:1;display:block}.comment-section{margin-top:16px;animation:slideIn .3s ease-out}.comment-section .comment-textarea{--background: transparent;--border-radius: 8px;--padding-start: 12px;--padding-end: 12px;width:100%}.comment-section .char-count{display:block;text-align:right;font-size:.75rem;color:var(--ion-color-medium);margin-top:4px}.submit-button{margin-top:16px}.submitted-message{margin-top:16px;color:var(--ion-color-success);font-weight:500;animation:fadeIn .3s ease-out}.error-message{margin-top:8px;color:var(--ion-color-danger);font-size:.875rem}.loading-container{display:flex;justify-content:center;padding:20px}@keyframes slideIn{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}\n"] }]
259
269
  }], ctorParameters: () => [], propDecorators: { props: [{
260
270
  type: Input
271
+ }], _modalRef: [{
272
+ type: Input
261
273
  }], reactionSubmit: [{
262
274
  type: Output
263
275
  }], reactionChange: [{
264
276
  type: Output
265
277
  }] } });
266
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1yZWFjdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL2NvbnRlbnQtcmVhY3Rpb24vY29udGVudC1yZWFjdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL2NvbnRlbnQtcmVhY3Rpb24vY29udGVudC1yZWFjdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFJWixNQUFNLEVBQ04sUUFBUSxHQUVULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDL0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBRTlFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMvRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOztBQUdsRTs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxxQkFBcUIsR0FBRztJQUM1QixFQUFFLEVBQUU7UUFDRixRQUFRLEVBQUUsa0NBQWtDO1FBQzVDLGtCQUFrQixFQUFFLDZCQUE2QjtRQUNqRCxNQUFNLEVBQUUsZ0JBQWdCO1FBQ3hCLE1BQU0sRUFBRSxvQkFBb0I7UUFDNUIsUUFBUSxFQUFFLDBCQUEwQjtRQUNw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QUM1QixRQUFRLEVBQUUsMEJBQTBCO1lBQ3BDLFNBQVMsRUFBRSwrQkFBK0I7WUFDMUMsZUFBZSxFQUFFLG9DQUFvQztZQUNyRCxhQUFhLEVBQUUsV0FBVztZQUMxQixhQUFhLEVBQUUsVUFBVTtZQUN6QixxQkFBcUIsRUFBRSw2QkFBNkI7U0FDckQsQ0FBQztRQUNGLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLGlCQUFpQixDQUFDLElBQUksWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQztJQUN6RSxDQUFDOytHQXpPVSx3QkFBd0I7bUdBQXhCLHdCQUF3QixrTkMvRXJDLG93R0E0RkEsNmlERGpCWSxZQUFZLDhCQUFFLFdBQVcsK0JBQUUsU0FBUyxvUEFBRSxVQUFVLHlHQUFFLFdBQVc7OzRGQUk1RCx3QkFBd0I7a0JBUHBDLFNBQVM7K0JBQ0Usc0JBQXNCLGNBQ3BCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxXQUFXLENBQUM7d0RBWS9ELEtBQUs7c0JBQWIsS0FBSztnQkFDSSxjQUFjO3NCQUF2QixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIGluamVjdCxcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBPbkluaXQsXG4gIE9uQ2hhbmdlcyxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgc2lnbmFsLFxuICBjb21wdXRlZCxcbiAgaXNEZXZNb2RlLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IElvbkJ1dHRvbiwgSW9uU3Bpbm5lciwgSW9uVGV4dGFyZWEgfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IEZlZWRiYWNrU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2ZlZWRiYWNrL2ZlZWRiYWNrLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVhY3Rpb25WYWx1ZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2ZlZWRiYWNrL3R5cGVzJztcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3RvYXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9pMThuJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYXV0aC9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29udGVudFJlYWN0aW9uTWV0YWRhdGEsIENvbnRlbnRSZWFjdGlvblN0YXRlLCBSZWFjdGlvblN1Ym1pdEV2ZW50LCBSZWFjdGlvbkNoYW5nZUV2ZW50IH0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogRGVmYXVsdHMgaTE4biBkZWwgY29tcG9uZW50ZSAoZXMvZW4pLiBFbCBjb21wb25lbnRlIGxvcyBhdXRvLXJlZ2lzdHJhIGVuIHN1XG4gKiBjb25zdHJ1Y3RvciBzaSBlbCBjb25zdW1lciBubyBwcm92ZXnDsyBlbCBuYW1lc3BhY2UgYENvbnRlbnRSZWFjdGlvbmAuIEVzdG9cbiAqIGdhcmFudGl6YSBxdWUgTlVOQ0EgaGF5YSB1bmEga2V5IGZhbHRhbnRlOiB1bmEga2V5IGZhbHRhbnRlIHNlIGV2YWzDumEgZW4gZWxcbiAqIHRlbXBsYXRlIHBvciBjYWRhIGNoYW5nZS1kZXRlY3Rpb24g4oaSIGBjb25zb2xlLndhcm5gIHBvciBDRCDihpIgY29uIGVsXG4gKiBgdmFsLWRlYnVnLWNvbnNvbGVgIGFjdGl2byAoZXNwZWphIGNvbnNvbGUuKiBhIHVuIHNpZ25hbCkgc2UgZGlzcGFyYSB1biBsb29wXG4gKiBpbmZpbml0byBxdWUgY29uZ2VsYSBlbCBuYXZlZ2Fkb3IgZW4gZGV2LiBBdXRvLXJlZ2lzdHJhciBsbyBlbGltaW5hIGRlIHJhw616LlxuICovXG5jb25zdCBDT05URU5UX1JFQUNUSU9OX0kxOE4gPSB7XG4gIGVzOiB7XG4gICAgcXVlc3Rpb246ICfCv1RlIHJlc3VsdMOzIMO6dGlsIGVzdGUgY29udGVuaWRvPycsXG4gICAgY29tbWVudFBsYWNlaG9sZGVyOiAnQ3XDqW50YW5vcyBtw6FzIChvcGNpb25hbCkuLi4nLFxuICAgIHN1Ym1pdDogJ0VudmlhciBvcGluacOzbicsXG4gICAgdXBkYXRlOiAnQWN0dWFsaXphciBvcGluacOzbicsXG4gICAgdGhhbmtZb3U6ICfCoUdyYWNpYXMgcG9yIHR1IG9waW5pw7NuIScsXG4gICAgc3VibWl0dGVkOiAnVHUgb3BpbmnDs24gaGEgc2lkbyByZWdpc3RyYWRhJyxcbiAgICBlcnJvclN1Ym1pdHRpbmc6ICdFcnJvciBhbCBlbnZpYXIuIEludGVudGEgZGUgbnVldm8uJyxcbiAgICBwb3NpdGl2ZUxhYmVsOiAnU8OtLCBtdWNobycsXG4gICAgbmVnYXRpdmVMYWJlbDogJ05vIHRhbnRvJyxcbiAgICBuZWdhdGl2ZUZlZWRiYWNrVGl0bGU6ICfCv0N1w6ludGFub3MgcXXDqSBubyB0ZSBndXN0w7M/JyxcbiAgfSxcbiAgZW46IHtcbiAgICBxdWVzdGlvbjogJ1dhcyB0aGlzIGNvbnRlbnQgaGVscGZ1bD8nLFxuICAgIGNvbW1lbnRQbGFjZWhvbGRlcjogJ1RlbGwgdXMgbW9yZSAob3B0aW9uYWwpLi4uJyxcbiAgICBzdWJtaXQ6ICdTZW5kIGZlZWRiYWNrJyxcbiAgICB1cGRhdGU6ICdVcGRhdGUgZmVlZGJhY2snLFxuICAgIHRoYW5rWW91OiAnVGhhbmtzIGZvciB5b3VyIGZlZWRiYWNrIScsXG4gICAgc3VibWl0dGVkOiAnWW91ciBmZWVkYmFjayBoYXMgYmVlbiByZWNvcmRlZCcsXG4gICAgZXJyb3JTdWJtaXR0aW5nOiAnRmFpbGVkIHRvIHNlbmQuIFBsZWFzZSB0cnkgYWdhaW4uJyxcbiAgICBwb3NpdGl2ZUxhYmVsOiAnWWVzLCBhIGxvdCcsXG4gICAgbmVnYXRpdmVMYWJlbDogJ05vdCByZWFsbHknLFxuICAgIG5lZ2F0aXZlRmVlZGJhY2tUaXRsZTogXCJUZWxsIHVzIHdoYXQgeW91IGRpZG4ndCBsaWtlP1wiLFxuICB9LFxufTtcblxuLyoqXG4gKiBDb21wb25lbnRlIHBhcmEgcmVhY2Npb25lcyBkZSBjb250ZW5pZG8gY29uIGVtb2ppcy5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgaHRtbFxuICogPHZhbC1jb250ZW50LXJlYWN0aW9uXG4gKiAgIFtwcm9wc109XCJ7XG4gKiAgICAgZW50aXR5UmVmOiB7IGVudGl0eVR5cGU6ICdhcnRpY2xlJywgZW50aXR5SWQ6ICdhcnQtMTIzJyB9LFxuICogICAgIHF1ZXN0aW9uOiAnwr9UZSBmdWUgw7p0aWwgZXN0ZSBhcnTDrWN1bG8/J1xuICogICB9XCJcbiAqICAgKHJlYWN0aW9uU3VibWl0KT1cIm9uUmVhY3Rpb25TdWJtaXQoJGV2ZW50KVwiXG4gKiAvPlxuICogYGBgXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1jb250ZW50LXJlYWN0aW9uJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRm9ybXNNb2R1bGUsIElvbkJ1dHRvbiwgSW9uU3Bpbm5lciwgSW9uVGV4dGFyZWFdLFxuICB0ZW1wbGF0ZVVybDogJy4vY29udGVudC1yZWFjdGlvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NvbnRlbnQtcmVhY3Rpb24uY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgQ29udGVudFJlYWN0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICBwcml2YXRlIGZlZWRiYWNrU2VydmljZSA9IGluamVjdChGZWVkYmFja1NlcnZpY2UpO1xuICBwcml2YXRlIHRvYXN0ID0gaW5qZWN0KFRvYXN0U2VydmljZSk7XG4gIHByaXZhdGUgaTE4biA9IGluamVjdChJMThuU2VydmljZSk7XG4gIHByaXZhdGUgYXV0aCA9IGluamVjdChBdXRoU2VydmljZSwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcblxuICByZWFkb25seSBpc0NvbmZpZ3VyZWQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmZlZWRiYWNrU2VydmljZS5pc0NvbmZpZ3VyZWQoKSk7XG5cbiAgQElucHV0KCkgcHJvcHM6IFBhcnRpYWw8Q29udGVudFJlYWN0aW9uTWV0YWRhdGE+ID0ge307XG4gIEBPdXRwdXQoKSByZWFjdGlvblN1Ym1pdCA9IG5ldyBFdmVudEVtaXR0ZXI8UmVhY3Rpb25TdWJtaXRFdmVudD4oKTtcbiAgQE91dHB1dCgpIHJlYWN0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxSZWFjdGlvbkNoYW5nZUV2ZW50PigpO1xuXG4gIC8vIEVzdGFkbyByZWFjdGl2b1xuICBzdGF0ZSA9IHNpZ25hbDxDb250ZW50UmVhY3Rpb25TdGF0ZT4oe1xuICAgIHNlbGVjdGVkVmFsdWU6IG51bGwsXG4gICAgY29tbWVudDogJycsXG4gICAgaXNMb2FkaW5nOiBmYWxzZSxcbiAgICBpc1N1Ym1pdHRlZDogZmFsc2UsXG4gICAgaGFkUHJldmlvdXNSZWFjdGlvbjogZmFsc2UsXG4gICAgZXJyb3I6IG51bGwsXG4gIH0pO1xuXG4gIC8vIFZhbG9yZXMgcG9yIGRlZmVjdG9cbiAgcmVhZG9ubHkgZGVmYXVsdEVtb2ppczogW3N0cmluZywgc3RyaW5nLCBzdHJpbmddID0gWyfwn5ieJywgJ/CfmJAnLCAn8J+YiiddO1xuICByZWFkb25seSBkZWZhdWx0TGFiZWxzOiBbc3RyaW5nLCBzdHJpbmcsIHN0cmluZ10gPSBbJ05vIG1lIGF5dWTDsycsICdSZWd1bGFyJywgJ011eSDDunRpbCddO1xuXG4gIC8vIENvbXB1dGVkIHByb3BlcnRpZXNcbiAgcmVzb2x2ZWRQcm9wcyA9IGNvbXB1dGVkKCgpID0+ICh7XG4gICAgZW50aXR5UmVmOiB0aGlzLnByb3BzLmVudGl0eVJlZiEsXG4gICAgcXVlc3Rpb246IHRoaXMucHJvcHMucXVlc3Rpb24gfHwgdGhpcy50KCdxdWVzdGlvbicpLFxuICAgIHNob3dDb21tZW50OiB0aGlzLnByb3BzLnNob3dDb21tZW50ID8/IHRydWUsXG4gICAgY29tbWVudE9uVmFsdWVzOiB0aGlzLnByb3BzLmNvbW1lbnRPblZhbHVlcyxcbiAgICBjb21tZW50UGxhY2Vob2xkZXI6IHRoaXMucHJvcHMuY29tbWVudFBsYWNlaG9sZGVyIHx8IHRoaXMudCgnY29tbWVudFBsYWNlaG9sZGVyJyksXG4gICAgbWF4Q29tbWVudExlbmd0aDogdGhpcy5wcm9wcy5tYXhDb21tZW50TGVuZ3RoID8/IDUwMCxcbiAgICBlbW9qaXM6IHRoaXMucHJvcHMuZW1vamlzIHx8IHRoaXMuZGVmYXVsdEVtb2ppcyxcbiAgICBlbW9qaUxhYmVsczogdGhpcy5wcm9wcy5lbW9qaUxhYmVscyB8fCB0aGlzLmRlZmF1bHRMYWJlbHMsXG4gICAgc2hvd1RoYW5rWW91OiB0aGlzLnByb3BzLnNob3dUaGFua1lvdSA/PyB0cnVlLFxuICAgIHRoYW5rWW91TWVzc2FnZTogdGhpcy5wcm9wcy50aGFua1lvdU1lc3NhZ2UgfHwgdGhpcy50KCd0aGFua1lvdScpLFxuICAgIGRpc2FibGVkOiB0aGlzLnByb3BzLmRpc2FibGVkID8/IGZhbHNlLFxuICAgIHJlYWRvbmx5OiB0aGlzLnByb3BzLnJlYWRvbmx5ID8/IGZhbHNlLFxuICAgIC8vIFZhcmlhbnRlOiAnZW1vamknIGN1YW5kbyBzZSBkZWNsYXJhIGV4cGzDrWNpdGFtZW50ZSBvIGN1YW5kbyBzZSBwYXNhbiBlbW9qaXMgY3VzdG9tLlxuICAgIHZhcmlhbnQ6IHRoaXMucHJvcHMudmFyaWFudCA/PyAodGhpcy5wcm9wcy5lbW9qaXMgPyAnZW1vamknIDogJ2J1dHRvbnMnKSxcbiAgfSkpO1xuXG4gIHJlYWRvbmx5IGFjdGl2ZVJlYWN0aW9uVmFsdWVzID0gY29tcHV0ZWQ8UmVhY3Rpb25WYWx1ZVtdPigoKSA9PlxuICAgIHRoaXMucmVzb2x2ZWRQcm9wcygpLmVtb2ppcy5sZW5ndGggPT09IDIgPyBbJ25lZ2F0aXZlJywgJ3Bvc2l0aXZlJ10gOiBbJ25lZ2F0aXZlJywgJ25ldXRyYWwnLCAncG9zaXRpdmUnXVxuICApO1xuXG4gIHNob3dDb21tZW50RmllbGQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3Qgc2VsID0gdGhpcy5zdGF0ZSgpLnNlbGVjdGVkVmFsdWU7XG4gICAgaWYgKCFzZWwpIHJldHVybiBmYWxzZTtcbiAgICBjb25zdCBjb21tZW50T24gPSB0aGlzLnJlc29sdmVkUHJvcHMoKS5jb21tZW50T25WYWx1ZXM7XG4gICAgaWYgKGNvbW1lbnRPbiAhPT0gdW5kZWZpbmVkKSByZXR1cm4gY29tbWVudE9uLmluY2x1ZGVzKHNlbCk7XG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZWRQcm9wcygpLnNob3dDb21tZW50O1xuICB9KTtcblxuICBjYW5TdWJtaXQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnN0YXRlKCkuc2VsZWN0ZWRWYWx1ZSAhPT0gbnVsbCAmJiAhdGhpcy5zdGF0ZSgpLmlzTG9hZGluZyk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgLy8gQXV0by1yZWdpc3RybyBkZSBkZWZhdWx0cyBpMThuIChlcy9lbikgc2kgZWwgY29uc3VtZXIgbm8gcHJvdmV5w7MgZWxcbiAgICAvLyBuYW1lc3BhY2UuIEdhcmFudGl6YSBxdWUgYHQoKWAgbnVuY2EgY2FpZ2EgZW4ga2V5IGZhbHRhbnRlLiBWZXJcbiAgICAvLyBDT05URU5UX1JFQUNUSU9OX0kxOE4uIElkZW1wb3RlbnRlOiBzb2xvIGxhIDHCqiBpbnN0YW5jaWEgcmVnaXN0cmEuXG4gICAgaWYgKCF0aGlzLmkxOG4uaGFzTmFtZXNwYWNlKCdDb250ZW50UmVhY3Rpb24nKSkge1xuICAgICAgdGhpcy5pMThuLnJlZ2lzdGVyQ29udGVudCgnQ29udGVudFJlYWN0aW9uJywgQ09OVEVOVF9SRUFDVElPTl9JMThOKTtcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmxvYWRQcmV2aW91c1JlYWN0aW9uKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXNbJ3Byb3BzJ10gJiYgIWNoYW5nZXNbJ3Byb3BzJ10uZmlyc3RDaGFuZ2UpIHtcbiAgICAgIHRoaXMubG9hZFByZXZpb3VzUmVhY3Rpb24oKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGxvYWRQcmV2aW91c1JlYWN0aW9uKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghdGhpcy5wcm9wcy5lbnRpdHlSZWYpIHJldHVybjtcblxuICAgIC8vIFNpIGhheSBpbml0aWFsVmFsdWUsIHVzYXJsbyBkaXJlY3RhbWVudGUgc2luIGNvbnN1bHRhclxuICAgIGlmICh0aGlzLnByb3BzLmluaXRpYWxWYWx1ZSkge1xuICAgICAgdGhpcy5zdGF0ZS51cGRhdGUocyA9PiAoe1xuICAgICAgICAuLi5zLFxuICAgICAgICBzZWxlY3RlZFZhbHVlOiB0aGlzLnByb3BzLmluaXRpYWxWYWx1ZSEsXG4gICAgICAgIGhhZFByZXZpb3VzUmVhY3Rpb246IHRydWUsXG4gICAgICAgIGlzTG9hZGluZzogZmFsc2UsXG4gICAgICAgIGlzU3VibWl0dGVkOiB0cnVlLFxuICAgICAgfSkpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFNpIHNraXBJbml0aWFsQ2hlY2sgZXN0w6EgYWN0aXZvLCBubyBjb25zdWx0YXJcbiAgICBpZiAodGhpcy5wcm9wcy5za2lwSW5pdGlhbENoZWNrKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zdGF0ZS51cGRhdGUocyA9PiAoeyAuLi5zLCBpc0xvYWRpbmc6IHRydWUsIGVycm9yOiBudWxsIH0pKTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBjaGVjayA9IGF3YWl0IHRoaXMuZmVlZGJhY2tTZXJ2aWNlLmNoZWNrRmVlZGJhY2soXG4gICAgICAgIHRoaXMucHJvcHMuZW50aXR5UmVmLmVudGl0eVR5cGUsXG4gICAgICAgIHRoaXMucHJvcHMuZW50aXR5UmVmLmVudGl0eUlkXG4gICAgICApO1xuXG4gICAgICBpZiAoY2hlY2suaGFzRmVlZGJhY2sgJiYgY2hlY2sucmVhY3Rpb25WYWx1ZSkge1xuICAgICAgICB0aGlzLnN0YXRlLnVwZGF0ZShzID0+ICh7XG4gICAgICAgICAgLi4ucyxcbiAgICAgICAgICBzZWxlY3RlZFZhbHVlOiBjaGVjay5yZWFjdGlvblZhbHVlISxcbiAgICAgICAgICBoYWRQcmV2aW91c1JlYWN0aW9uOiB0cnVlLFxuICAgICAgICAgIGlzTG9hZGluZzogZmFsc2UsXG4gICAgICAgICAgaXNTdWJtaXR0ZWQ6IHRydWUsXG4gICAgICAgIH0pKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc3RhdGUudXBkYXRlKHMgPT4gKHsgLi4ucywgaXNMb2FkaW5nOiBmYWxzZSB9KSk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGxvYWRpbmcgcHJldmlvdXMgcmVhY3Rpb246JywgZXJyb3IpO1xuICAgICAgdGhpcy5zdGF0ZS51cGRhdGUocyA9PiAoeyAuLi5zLCBpc0xvYWRpbmc6IGZhbHNlIH0pKTtcbiAgICB9XG4gIH1cblxuICBzZWxlY3RSZWFjdGlvbih2YWx1ZTogUmVhY3Rpb25WYWx1ZSk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJlc29sdmVkUHJvcHMoKS5kaXNhYmxlZCB8fCB0aGlzLnJlc29sdmVkUHJvcHMoKS5yZWFkb25seSkgcmV0dXJuO1xuXG4gICAgY29uc3QgcHJldmlvdXNWYWx1ZSA9IHRoaXMuc3RhdGUoKS5zZWxlY3RlZFZhbHVlO1xuXG4gICAgdGhpcy5zdGF0ZS51cGRhdGUocyA9PiAoe1xuICAgICAgLi4ucyxcbiAgICAgIHNlbGVjdGVkVmFsdWU6IHZhbHVlLFxuICAgICAgaXNTdWJtaXR0ZWQ6IGZhbHNlLFxuICAgICAgZXJyb3I6IG51bGwsXG4gICAgfSkpO1xuXG4gICAgdGhpcy5yZWFjdGlvbkNoYW5nZS5lbWl0KHsgdmFsdWUsIHByZXZpb3VzVmFsdWUgfSk7XG4gIH1cblxuICBhc3luYyBzdWJtaXRSZWFjdGlvbigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBjdXJyZW50U3RhdGUgPSB0aGlzLnN0YXRlKCk7XG4gICAgY29uc3QgcHJvcHMgPSB0aGlzLnJlc29sdmVkUHJvcHMoKTtcblxuICAgIGlmICghY3VycmVudFN0YXRlLnNlbGVjdGVkVmFsdWUgfHwgcHJvcHMuZGlzYWJsZWQpIHJldHVybjtcblxuICAgIHRoaXMuc3RhdGUudXBkYXRlKHMgPT4gKHsgLi4ucywgaXNMb2FkaW5nOiB0cnVlLCBlcnJvcjogbnVsbCB9KSk7XG5cbiAgICB0cnkge1xuICAgICAgLy8gRGV0ZXJtaW5hciBzaSB1c2FyIGVuZHBvaW50IGFuw7NuaW1vIG8gYXV0ZW50aWNhZG9cbiAgICAgIGNvbnN0IGlzQXV0aGVudGljYXRlZCA9IHRoaXMuYXV0aD8uaXNBdXRoZW50aWNhdGVkKCkgPz8gZmFsc2U7XG4gICAgICBjb25zdCB1c2VBbm9ueW1vdXMgPSB0aGlzLnByb3BzLmFsbG93QW5vbnltb3VzICYmICFpc0F1dGhlbnRpY2F0ZWQ7XG5cbiAgICAgIGlmICh1c2VBbm9ueW1vdXMpIHtcbiAgICAgICAgLy8gVXNhciBlbmRwb2ludCBhbsOzbmltbyAocMO6YmxpY28pXG4gICAgICAgIGF3YWl0IHRoaXMuZmVlZGJhY2tTZXJ2aWNlLmNyZWF0ZUFub255bW91c1JlYWN0aW9uKFxuICAgICAgICAgIHByb3BzLmVudGl0eVJlZixcbiAgICAgICAgICBjdXJyZW50U3RhdGUuc2VsZWN0ZWRWYWx1ZSxcbiAgICAgICAgICBjdXJyZW50U3RhdGUuY29tbWVudCB8fCB1bmRlZmluZWRcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFVzYXIgZW5kcG9pbnQgYXV0ZW50aWNhZG9cbiAgICAgICAgYXdhaXQgdGhpcy5mZWVkYmFja1NlcnZpY2UuY3JlYXRlUmVhY3Rpb24oXG4gICAgICAgICAgcHJvcHMuZW50aXR5UmVmLFxuICAgICAgICAgIGN1cnJlbnRTdGF0ZS5zZWxlY3RlZFZhbHVlLFxuICAgICAgICAgIGN1cnJlbnRTdGF0ZS5jb21tZW50IHx8IHVuZGVmaW5lZFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnN0YXRlLnVwZGF0ZShzID0+ICh7XG4gICAgICAgIC4uLnMsXG4gICAgICAgIGlzTG9hZGluZzogZmFsc2UsXG4gICAgICAgIGlzU3VibWl0dGVkOiB0cnVlLFxuICAgICAgICBjb21tZW50OiAnJyxcbiAgICAgICAgaGFkUHJldmlvdXNSZWFjdGlvbjogIXVzZUFub255bW91cywgLy8gU29sbyBwYXJhIGF1dGVudGljYWRvc1xuICAgICAgfSkpO1xuXG4gICAgICB0aGlzLnJlYWN0aW9uU3VibWl0LmVtaXQoe1xuICAgICAgICB2YWx1ZTogY3VycmVudFN0YXRlLnNlbGVjdGVkVmFsdWUsXG4gICAgICAgIGNvbW1lbnQ6IGN1cnJlbnRTdGF0ZS5jb21tZW50IHx8IHVuZGVmaW5lZCxcbiAgICAgICAgZW50aXR5UmVmOiBwcm9wcy5lbnRpdHlSZWYsXG4gICAgICAgIGlzVXBkYXRlOiBjdXJyZW50U3RhdGUuaGFkUHJldmlvdXNSZWFjdGlvbixcbiAgICAgIH0pO1xuXG4gICAgICBpZiAocHJvcHMuc2hvd1RoYW5rWW91KSB7XG4gICAgICAgIHRoaXMudG9hc3Quc2hvdyh7XG4gICAgICAgICAgbWVzc2FnZTogcHJvcHMudGhhbmtZb3VNZXNzYWdlLFxuICAgICAgICAgIGR1cmF0aW9uOiAyMDAwLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRXJyb3Igc3VibWl0dGluZyByZWFjdGlvbjonLCBlcnJvcik7XG4gICAgICB0aGlzLnN0YXRlLnVwZGF0ZShzID0+ICh7XG4gICAgICAgIC4uLnMsXG4gICAgICAgIGlzTG9hZGluZzogZmFsc2UsXG4gICAgICAgIGVycm9yOiB0aGlzLnQoJ2Vycm9yU3VibWl0dGluZycpLFxuICAgICAgfSkpO1xuXG4gICAgICB0aGlzLnRvYXN0LnNob3coe1xuICAgICAgICBtZXNzYWdlOiB0aGlzLnQoJ2Vycm9yU3VibWl0dGluZycpLFxuICAgICAgICBkdXJhdGlvbjogMzAwMCxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZUNvbW1lbnQoZXZlbnQ6IEN1c3RvbUV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgdmFsdWUgPSBldmVudC5kZXRhaWwudmFsdWUgfHwgJyc7XG4gICAgdGhpcy5zdGF0ZS51cGRhdGUocyA9PiAoeyAuLi5zLCBjb21tZW50OiB2YWx1ZSB9KSk7XG4gIH1cblxuICBnZXRFbW9qaShpbmRleDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvbHZlZFByb3BzKCkuZW1vamlzW2luZGV4XTtcbiAgfVxuXG4gIGdldEVtb2ppTGFiZWwoaW5kZXg6IG51bWJlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZWRQcm9wcygpLmVtb2ppTGFiZWxzW2luZGV4XTtcbiAgfVxuXG4gIGlzU2VsZWN0ZWQodmFsdWU6IFJlYWN0aW9uVmFsdWUpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZSgpLnNlbGVjdGVkVmFsdWUgPT09IHZhbHVlO1xuICB9XG5cbiAgdChrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgdHJhbnNsYXRpb25zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICAgcXVlc3Rpb246ICfCv1RlIHJlc3VsdMOzIMO6dGlsIGVzdGUgY29udGVuaWRvPycsXG4gICAgICBjb21tZW50UGxhY2Vob2xkZXI6ICdDdcOpbnRhbm9zIG3DoXMgKG9wY2lvbmFsKS4uLicsXG4gICAgICBzdWJtaXQ6ICdFbnZpYXIgb3BpbmnDs24nLFxuICAgICAgdXBkYXRlOiAnQWN0dWFsaXphciBvcGluacOzbicsXG4gICAgICB0aGFua1lvdTogJ8KhR3JhY2lhcyBwb3IgdHUgb3BpbmnDs24hJyxcbiAgICAgIHN1Ym1pdHRlZDogJ1R1IG9waW5pw7NuIGhhIHNpZG8gcmVnaXN0cmFkYScsXG4gICAgICBlcnJvclN1Ym1pdHRpbmc6ICdFcnJvciBhbCBlbnZpYXIuIEludGVudGEgZGUgbnVldm8uJyxcbiAgICAgIHBvc2l0aXZlTGFiZWw6ICdTw60sIG11Y2hvJyxcbiAgICAgIG5lZ2F0aXZlTGFiZWw6ICdObyB0YW50bycsXG4gICAgICBuZWdhdGl2ZUZlZWRiYWNrVGl0bGU6ICfCv0N1w6ludGFub3MgcXXDqSBubyB0ZSBndXN0w7M/JyxcbiAgICB9O1xuICAgIHJldHVybiB0aGlzLmkxOG4udChrZXksICdDb250ZW50UmVhY3Rpb24nKSB8fCB0cmFuc2xhdGlvbnNba2V5XSB8fCBrZXk7XG4gIH1cbn1cbiIsIkBpZiAoaXNDb25maWd1cmVkKCkpIHtcbjxkaXYgY2xhc3M9XCJjb250ZW50LXJlYWN0aW9uXCIgW2NsYXNzLmRpc2FibGVkXT1cInJlc29sdmVkUHJvcHMoKS5kaXNhYmxlZFwiIFtjbGFzcy5yZWFkb25seV09XCJyZXNvbHZlZFByb3BzKCkucmVhZG9ubHlcIj5cbiAgPCEtLSBMb2FkaW5nIGluaWNpYWwgLS0+XG4gIEBpZiAoc3RhdGUoKS5pc0xvYWRpbmcgJiYgIXN0YXRlKCkuc2VsZWN0ZWRWYWx1ZSkge1xuICA8ZGl2IGNsYXNzPVwibG9hZGluZy1jb250YWluZXJcIj5cbiAgICA8aW9uLXNwaW5uZXIgbmFtZT1cImNyZXNjZW50XCI+PC9pb24tc3Bpbm5lcj5cbiAgPC9kaXY+XG4gIH0gQGVsc2Uge1xuICA8IS0tIFByZWd1bnRhIC0tPlxuICA8cCBjbGFzcz1cInF1ZXN0aW9uXCI+XG4gICAge3sgc3RhdGUoKS5zZWxlY3RlZFZhbHVlID09PSAnbmVnYXRpdmUnID8gdCgnbmVnYXRpdmVGZWVkYmFja1RpdGxlJykgOiByZXNvbHZlZFByb3BzKCkucXVlc3Rpb24gfX1cbiAgPC9wPlxuXG4gIDwhLS0gQm90b25lcyBkZSByZWFjY2nDs24g4oCUIHZhcmlhbnRlIGVtb2ppIChjYXJhcywgZXN0cmVsbGFzLCB0aHVtYnMsIOKApikgLS0+XG4gIEBpZiAocmVzb2x2ZWRQcm9wcygpLnZhcmlhbnQgPT09ICdlbW9qaScpIHtcbiAgPGRpdiBjbGFzcz1cInJlYWN0aW9uLWJ1dHRvbnMgcmVhY3Rpb24tYnV0dG9ucy0tZW1vamlcIj5cbiAgICBAZm9yICh2YWx1ZSBvZiBhY3RpdmVSZWFjdGlvblZhbHVlcygpOyB0cmFjayB2YWx1ZTsgbGV0IGkgPSAkaW5kZXgpIHtcbiAgICA8aW9uLWJ1dHRvblxuICAgICAgZmlsbD1cImNsZWFyXCJcbiAgICAgIHNoYXBlPVwicm91bmRcIlxuICAgICAgW2NsYXNzLnNlbGVjdGVkXT1cImlzU2VsZWN0ZWQodmFsdWUpXCJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwicmVzb2x2ZWRQcm9wcygpLmVtb2ppTGFiZWxzW2ldXCJcbiAgICAgIFthdHRyLmFyaWEtcHJlc3NlZF09XCJpc1NlbGVjdGVkKHZhbHVlKVwiXG4gICAgICBbZGlzYWJsZWRdPVwicmVzb2x2ZWRQcm9wcygpLmRpc2FibGVkIHx8IHJlc29sdmVkUHJvcHMoKS5yZWFkb25seVwiXG4gICAgICAoY2xpY2spPVwic2VsZWN0UmVhY3Rpb24odmFsdWUpXCJcbiAgICA+XG4gICAgICA8c3BhbiBjbGFzcz1cImVtb2ppLWJ0blwiPnt7IHJlc29sdmVkUHJvcHMoKS5lbW9qaXNbaV0gfX08L3NwYW4+XG4gICAgPC9pb24tYnV0dG9uPlxuICAgIH1cbiAgPC9kaXY+XG4gIH0gQGVsc2Uge1xuICA8IS0tIEJvdG9uZXMgZGUgcmVhY2Npw7NuIOKAlCB2YXJpYW50ZSB0ZXh0byAoZGVmYXVsdCkgLS0+XG4gIDxkaXYgY2xhc3M9XCJyZWFjdGlvbi1idXR0b25zXCI+XG4gICAgPGlvbi1idXR0b25cbiAgICAgIFtmaWxsXT1cImlzU2VsZWN0ZWQoJ3Bvc2l0aXZlJykgPyAnc29saWQnIDogJ291dGxpbmUnXCJcbiAgICAgIHNoYXBlPVwicm91bmRcIlxuICAgICAgY29sb3I9XCJkYXJrXCJcbiAgICAgIFthdHRyLmFyaWEtcHJlc3NlZF09XCJpc1NlbGVjdGVkKCdwb3NpdGl2ZScpXCJcbiAgICAgIFtkaXNhYmxlZF09XCJyZXNvbHZlZFByb3BzKCkuZGlzYWJsZWQgfHwgcmVzb2x2ZWRQcm9wcygpLnJlYWRvbmx5XCJcbiAgICAgIChjbGljayk9XCJzZWxlY3RSZWFjdGlvbigncG9zaXRpdmUnKVwiXG4gICAgPlxuICAgICAge3sgdCgncG9zaXRpdmVMYWJlbCcpIH19XG4gICAgPC9pb24tYnV0dG9uPlxuICAgIDxpb24tYnV0dG9uXG4gICAgICBbZmlsbF09XCJpc1NlbGVjdGVkKCduZWdhdGl2ZScpID8gJ3NvbGlkJyA6ICdvdXRsaW5lJ1wiXG4gICAgICBzaGFwZT1cInJvdW5kXCJcbiAgICAgIGNvbG9yPVwiZGFya1wiXG4gICAgICBbYXR0ci5hcmlhLXByZXNzZWRdPVwiaXNTZWxlY3RlZCgnbmVnYXRpdmUnKVwiXG4gICAgICBbZGlzYWJsZWRdPVwicmVzb2x2ZWRQcm9wcygpLmRpc2FibGVkIHx8IHJlc29sdmVkUHJvcHMoKS5yZWFkb25seVwiXG4gICAgICAoY2xpY2spPVwic2VsZWN0UmVhY3Rpb24oJ25lZ2F0aXZlJylcIlxuICAgID5cbiAgICAgIHt7IHQoJ25lZ2F0aXZlTGFiZWwnKSB9fVxuICAgIDwvaW9uLWJ1dHRvbj5cbiAgPC9kaXY+XG4gIH1cblxuICA8IS0tIENhbXBvIGRlIGNvbWVudGFyaW8gKHNvbG8gc2kgaGF5IHNlbGVjY2nDs24pIC0tPlxuICBAaWYgKHNob3dDb21tZW50RmllbGQoKSkge1xuICA8ZGl2IGNsYXNzPVwiY29tbWVudC1zZWN0aW9uXCI+XG4gICAgPGlvbi10ZXh0YXJlYVxuICAgICAgW3ZhbHVlXT1cInN0YXRlKCkuY29tbWVudFwiXG4gICAgICBbcGxhY2Vob2xkZXJdPVwicmVzb2x2ZWRQcm9wcygpLmNvbW1lbnRQbGFjZWhvbGRlclwiXG4gICAgICBbbWF4bGVuZ3RoXT1cInJlc29sdmVkUHJvcHMoKS5tYXhDb21tZW50TGVuZ3RoXCJcbiAgICAgIFtkaXNhYmxlZF09XCJyZXNvbHZlZFByb3BzKCkuZGlzYWJsZWRcIlxuICAgICAgW3Jvd3NdPVwiM1wiXG4gICAgICBjbGFzcz1cImNvbW1lbnQtdGV4dGFyZWFcIlxuICAgICAgKGlvbklucHV0KT1cInVwZGF0ZUNvbW1lbnQoJGV2ZW50KVwiXG4gICAgPjwvaW9uLXRleHRhcmVhPlxuICAgIDxzcGFuIGNsYXNzPVwiY2hhci1jb3VudFwiPiB7eyBzdGF0ZSgpLmNvbW1lbnQubGVuZ3RoIH19L3t7IHJlc29sdmVkUHJvcHMoKS5tYXhDb21tZW50TGVuZ3RoIH19IDwvc3Bhbj5cbiAgPC9kaXY+XG4gIH1cblxuICA8IS0tIEJvdMOzbiBkZSBlbnbDrW8gLS0+XG4gIEBpZiAoc3RhdGUoKS5zZWxlY3RlZFZhbHVlICYmICFzdGF0ZSgpLmlzU3VibWl0dGVkKSB7XG4gIDxpb24tYnV0dG9uIGV4cGFuZD1cImJsb2NrXCIgc2hhcGU9XCJyb3VuZFwiIFtkaXNhYmxlZF09XCIhY2FuU3VibWl0KClcIiAoY2xpY2spPVwic3VibWl0UmVhY3Rpb24oKVwiIGNsYXNzPVwic3VibWl0LWJ1dHRvblwiPlxuICAgIEBpZiAoc3RhdGUoKS5pc0xvYWRpbmcpIHtcbiAgICA8aW9uLXNwaW5uZXIgbmFtZT1cImNyZXNjZW50XCI+PC9pb24tc3Bpbm5lcj5cbiAgICB9IEBlbHNlIHsge3sgc3RhdGUoKS5oYWRQcmV2aW91c1JlYWN0aW9uID8gdCgndXBkYXRlJykgOiB0KCdzdWJtaXQnKSB9fSB9XG4gIDwvaW9uLWJ1dHRvbj5cbiAgfVxuXG4gIDwhLS0gTWVuc2FqZSBkZSBjb25maXJtYWNpw7NuIC0tPlxuICBAaWYgKHN0YXRlKCkuaXNTdWJtaXR0ZWQpIHtcbiAgPHAgY2xhc3M9XCJzdWJtaXR0ZWQtbWVzc2FnZVwiPnt7IHQoJ3RoYW5rWW91JykgfX08L3A+XG4gIH1cblxuICA8IS0tIEVycm9yIC0tPlxuICBAaWYgKHN0YXRlKCkuZXJyb3IpIHtcbiAgPHAgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCI+e3sgc3RhdGUoKS5lcnJvciB9fTwvcD5cbiAgfSB9XG48L2Rpdj5cbn1cbiJdfQ==
278
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1yZWFjdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL2NvbnRlbnQtcmVhY3Rpb24vY29udGVudC1yZWFjdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL2NvbnRlbnQtcmVhY3Rpb24vY29udGVudC1yZWFjdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFJWixNQUFNLEVBQ04sUUFBUSxHQUVULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3hGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDcEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUU5RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDL0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQzs7QUFHbEU7Ozs7Ozs7R0FPRztBQUNILE1BQU0scUJBQXFCLEdBQUc7SUFDNUIsRUFBRSxFQUFFO1FBQ0YsUUFBUSxFQUFFLGtDQUFrQztRQUM1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b250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgaW5qZWN0LFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIE9uSW5pdCxcbiAgT25DaGFuZ2VzLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBzaWduYWwsXG4gIGNvbXB1dGVkLFxuICBpc0Rldk1vZGUsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgSW9uQnV0dG9uLCBJb25JY29uLCBJb25TcGlubmVyLCBJb25UZXh0YXJlYSB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgYWRkSWNvbnMgfSBmcm9tICdpb25pY29ucyc7XG5pbXBvcnQgeyBjbG9zZU91dGxpbmUgfSBmcm9tICdpb25pY29ucy9pY29ucyc7XG5pbXBvcnQgeyBGZWVkYmFja1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9mZWVkYmFjay9mZWVkYmFjay5zZXJ2aWNlJztcbmltcG9ydCB7IFJlYWN0aW9uVmFsdWUgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9mZWVkYmFjay90eXBlcyc7XG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy90b2FzdC5zZXJ2aWNlJztcbmltcG9ydCB7IEkxOG5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaTE4bic7XG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2F1dGgvYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IENvbnRlbnRSZWFjdGlvbk1ldGFkYXRhLCBDb250ZW50UmVhY3Rpb25TdGF0ZSwgUmVhY3Rpb25TdWJtaXRFdmVudCwgUmVhY3Rpb25DaGFuZ2VFdmVudCB9IGZyb20gJy4vdHlwZXMnO1xuXG4vKipcbiAqIERlZmF1bHRzIGkxOG4gZGVsIGNvbXBvbmVudGUgKGVzL2VuKS4gRWwgY29tcG9uZW50ZSBsb3MgYXV0by1yZWdpc3RyYSBlbiBzdVxuICogY29uc3RydWN0b3Igc2kgZWwgY29uc3VtZXIgbm8gcHJvdmV5w7MgZWwgbmFtZXNwYWNlIGBDb250ZW50UmVhY3Rpb25gLiBFc3RvXG4gKiBnYXJhbnRpemEgcXVlIE5VTkNBIGhheWEgdW5hIGtleSBmYWx0YW50ZTogdW5hIGtleSBmYWx0YW50ZSBzZSBldmFsw7phIGVuIGVsXG4gKiB0ZW1wbGF0ZSBwb3IgY2FkYSBjaGFuZ2UtZGV0ZWN0aW9uIOKGkiBgY29uc29sZS53YXJuYCBwb3IgQ0Qg4oaSIGNvbiBlbFxuICogYHZhbC1kZWJ1Zy1jb25zb2xlYCBhY3Rpdm8gKGVzcGVqYSBjb25zb2xlLiogYSB1biBzaWduYWwpIHNlIGRpc3BhcmEgdW4gbG9vcFxuICogaW5maW5pdG8gcXVlIGNvbmdlbGEgZWwgbmF2ZWdhZG9yIGVuIGRldi4gQXV0by1yZWdpc3RyYXIgbG8gZWxpbWluYSBkZSByYcOtei5cbiAqL1xuY29uc3QgQ09OVEVOVF9SRUFDVElPTl9JMThOID0ge1xuICBlczoge1xuICAgIHF1ZXN0aW9uOiAnwr9UZSByZXN1bHTDsyDDunRpbCBlc3RlIGNvbnRlbmlkbz8nLFxuICAgIGNvbW1lbnRQbGFjZWhvbGRlcjogJ0N1w6ludGFub3MgbcOhcyAob3BjaW9uYWwpLi4uJyxcbiAgICBzdWJtaXQ6ICdFbnZpYXIgb3BpbmnDs24nLFxuICAgIHVwZGF0ZTogJ0FjdHVhbGl6YXIgb3BpbmnDs24nLFxuICAgIHRoYW5rWW91OiAnwqFHcmFjaWFzIHBvciB0dSBvcGluacOzbiEnLFxuICAgIHN1Ym1pdHRlZDogJ1R1IG9waW5pw7NuIGhhIHNpZG8gcmVnaXN0cmFkYScsXG4gICAgZXJyb3JTdWJtaXR0aW5nOiAnRXJyb3IgYWwgZW52aWFyLiBJbnRlbnRhIGRlIG51ZXZvLicsXG4gICAgcG9zaXRpdmVMYWJlbDogJ1PDrSwgbXVjaG8nLFxuICAgIG5lZ2F0aXZlTGFiZWw6ICdObyB0YW50bycsXG4gICAgbmVnYXRpdmVGZWVkYmFja1RpdGxlOiAnwr9DdcOpbnRhbm9zIHF1w6kgbm8gdGUgZ3VzdMOzPycsXG4gICAgY2xvc2U6ICdDZXJyYXInLFxuICB9LFxuICBlbjoge1xuICAgIHF1ZXN0aW9uOiAnV2FzIHRoaXMgY29udGVudCBoZWxwZnVsPycsXG4gICAgY29tbWVudFBsYWNlaG9sZGVyOiAnVGVsbCB1cyBtb3JlIChvcHRpb25hbCkuLi4nLFxuICAgIHN1Ym1pdDogJ1NlbmQgZmVlZGJhY2snLFxuICAgIHVwZGF0ZTogJ1VwZGF0ZSBmZWVkYmFjaycsXG4gICAgdGhhbmtZb3U6ICdUaGFua3MgZm9yIHlvdXIgZmVlZGJhY2shJyxcbiAgICBzdWJtaXR0ZWQ6ICdZb3VyIGZlZWRiYWNrIGhhcyBiZWVuIHJlY29yZGVkJyxcbiAgICBlcnJvclN1Ym1pdHRpbmc6ICdGYWlsZWQgdG8gc2VuZC4gUGxlYXNlIHRyeSBhZ2Fpbi4nLFxuICAgIHBvc2l0aXZlTGFiZWw6ICdZZXMsIGEgbG90JyxcbiAgICBuZWdhdGl2ZUxhYmVsOiAnTm90IHJlYWxseScsXG4gICAgbmVnYXRpdmVGZWVkYmFja1RpdGxlOiBcIlRlbGwgdXMgd2hhdCB5b3UgZGlkbid0IGxpa2U/XCIsXG4gICAgY2xvc2U6ICdDbG9zZScsXG4gIH0sXG59O1xuXG4vKipcbiAqIENvbXBvbmVudGUgcGFyYSByZWFjY2lvbmVzIGRlIGNvbnRlbmlkbyBjb24gZW1vamlzLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGBodG1sXG4gKiA8dmFsLWNvbnRlbnQtcmVhY3Rpb25cbiAqICAgW3Byb3BzXT1cIntcbiAqICAgICBlbnRpdHlSZWY6IHsgZW50aXR5VHlwZTogJ2FydGljbGUnLCBlbnRpdHlJZDogJ2FydC0xMjMnIH0sXG4gKiAgICAgcXVlc3Rpb246ICfCv1RlIGZ1ZSDDunRpbCBlc3RlIGFydMOtY3Vsbz8nXG4gKiAgIH1cIlxuICogICAocmVhY3Rpb25TdWJtaXQpPVwib25SZWFjdGlvblN1Ym1pdCgkZXZlbnQpXCJcbiAqIC8+XG4gKiBgYGBcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLWNvbnRlbnQtcmVhY3Rpb24nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGb3Jtc01vZHVsZSwgSW9uQnV0dG9uLCBJb25JY29uLCBJb25TcGlubmVyLCBJb25UZXh0YXJlYV0sXG4gIHRlbXBsYXRlVXJsOiAnLi9jb250ZW50LXJlYWN0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY29udGVudC1yZWFjdGlvbi5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBDb250ZW50UmVhY3Rpb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIHByaXZhdGUgZmVlZGJhY2tTZXJ2aWNlID0gaW5qZWN0KEZlZWRiYWNrU2VydmljZSk7XG4gIHByaXZhdGUgdG9hc3QgPSBpbmplY3QoVG9hc3RTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBpMThuID0gaW5qZWN0KEkxOG5TZXJ2aWNlKTtcbiAgcHJpdmF0ZSBhdXRoID0gaW5qZWN0KEF1dGhTZXJ2aWNlLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuXG4gIHJlYWRvbmx5IGlzQ29uZmlndXJlZCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuZmVlZGJhY2tTZXJ2aWNlLmlzQ29uZmlndXJlZCgpKTtcblxuICBASW5wdXQoKSBwcm9wczogUGFydGlhbDxDb250ZW50UmVhY3Rpb25NZXRhZGF0YT4gPSB7fTtcblxuICAvKipcbiAgICogUmVmZXJlbmNpYSBhbCBtb2RhbCBpbnllY3RhZGEgcG9yIGBNb2RhbFNlcnZpY2VgIGN1YW5kbyBlbCBjb21wb25lbnRlIHNlXG4gICAqIGFicmUgY29tbyBtb2RhbC9zaGVldCAoYGNvbXBvbmVudFByb3BzLl9tb2RhbFJlZmApLiBQZXJtaXRlIGNlcnJhcnNlIGRlc2RlXG4gICAqIGRlbnRybyAoYm90w7NuIGRlIGNpZXJyZSkuIGB1bmRlZmluZWRgIGVuIHVzbyBpbmxpbmUuXG4gICAqL1xuICBASW5wdXQoKSBfbW9kYWxSZWY/OiB7IGRpc21pc3M6IChkYXRhPzogdW5rbm93biwgcm9sZT86IHN0cmluZykgPT4gUHJvbWlzZTxib29sZWFuPiB9O1xuXG4gIEBPdXRwdXQoKSByZWFjdGlvblN1Ym1pdCA9IG5ldyBFdmVudEVtaXR0ZXI8UmVhY3Rpb25TdWJtaXRFdmVudD4oKTtcbiAgQE91dHB1dCgpIHJlYWN0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxSZWFjdGlvbkNoYW5nZUV2ZW50PigpO1xuXG4gIC8vIEVzdGFkbyByZWFjdGl2b1xuICBzdGF0ZSA9IHNpZ25hbDxDb250ZW50UmVhY3Rpb25TdGF0ZT4oe1xuICAgIHNlbGVjdGVkVmFsdWU6IG51bGwsXG4gICAgY29tbWVudDogJycsXG4gICAgaXNMb2FkaW5nOiBmYWxzZSxcbiAgICBpc1N1Ym1pdHRlZDogZmFsc2UsXG4gICAgaGFkUHJldmlvdXNSZWFjdGlvbjogZmFsc2UsXG4gICAgZXJyb3I6IG51bGwsXG4gIH0pO1xuXG4gIC8vIFZhbG9yZXMgcG9yIGRlZmVjdG9cbiAgcmVhZG9ubHkgZGVmYXVsdEVtb2ppczogW3N0cmluZywgc3RyaW5nLCBzdHJpbmddID0gWyfwn5ieJywgJ/CfmJAnLCAn8J+YiiddO1xuICByZWFkb25seSBkZWZhdWx0TGFiZWxzOiBbc3RyaW5nLCBzdHJpbmcsIHN0cmluZ10gPSBbJ05vIG1lIGF5dWTDsycsICdSZWd1bGFyJywgJ011eSDDunRpbCddO1xuXG4gIC8vIENvbXB1dGVkIHByb3BlcnRpZXNcbiAgcmVzb2x2ZWRQcm9wcyA9IGNvbXB1dGVkKCgpID0+ICh7XG4gICAgZW50aXR5UmVmOiB0aGlzLnByb3BzLmVudGl0eVJlZiEsXG4gICAgcXVlc3Rpb246IHRoaXMucHJvcHMucXVlc3Rpb24gfHwgdGhpcy50KCdxdWVzdGlvbicpLFxuICAgIHNob3dDb21tZW50OiB0aGlzLnByb3BzLnNob3dDb21tZW50ID8/IHRydWUsXG4gICAgY29tbWVudE9uVmFsdWVzOiB0aGlzLnByb3BzLmNvbW1lbnRPblZhbHVlcyxcbiAgICBjb21tZW50UGxhY2Vob2xkZXI6IHRoaXMucHJvcHMuY29tbWVudFBsYWNlaG9sZGVyIHx8IHRoaXMudCgnY29tbWVudFBsYWNlaG9sZGVyJyksXG4gICAgbWF4Q29tbWVudExlbmd0aDogdGhpcy5wcm9wcy5tYXhDb21tZW50TGVuZ3RoID8/IDUwMCxcbiAgICBlbW9qaXM6IHRoaXMucHJvcHMuZW1vamlzIHx8IHRoaXMuZGVmYXVsdEVtb2ppcyxcbiAgICBlbW9qaUxhYmVsczogdGhpcy5wcm9wcy5lbW9qaUxhYmVscyB8fCB0aGlzLmRlZmF1bHRMYWJlbHMsXG4gICAgc2hvd1RoYW5rWW91OiB0aGlzLnByb3BzLnNob3dUaGFua1lvdSA/PyB0cnVlLFxuICAgIHRoYW5rWW91TWVzc2FnZTogdGhpcy5wcm9wcy50aGFua1lvdU1lc3NhZ2UgfHwgdGhpcy50KCd0aGFua1lvdScpLFxuICAgIGRpc2FibGVkOiB0aGlzLnByb3BzLmRpc2FibGVkID8/IGZhbHNlLFxuICAgIHJlYWRvbmx5OiB0aGlzLnByb3BzLnJlYWRvbmx5ID8/IGZhbHNlLFxuICAgIC8vIFZhcmlhbnRlOiAnZW1vamknIGN1YW5kbyBzZSBkZWNsYXJhIGV4cGzDrWNpdGFtZW50ZSBvIGN1YW5kbyBzZSBwYXNhbiBlbW9qaXMgY3VzdG9tLlxuICAgIHZhcmlhbnQ6IHRoaXMucHJvcHMudmFyaWFudCA/PyAodGhpcy5wcm9wcy5lbW9qaXMgPyAnZW1vamknIDogJ2J1dHRvbnMnKSxcbiAgICBzaG93Q2xvc2VCdXR0b246IHRoaXMucHJvcHMuc2hvd0Nsb3NlQnV0dG9uID8/IGZhbHNlLFxuICB9KSk7XG5cbiAgcmVhZG9ubHkgYWN0aXZlUmVhY3Rpb25WYWx1ZXMgPSBjb21wdXRlZDxSZWFjdGlvblZhbHVlW10+KCgpID0+XG4gICAgdGhpcy5yZXNvbHZlZFByb3BzKCkuZW1vamlzLmxlbmd0aCA9PT0gMiA/IFsnbmVnYXRpdmUnLCAncG9zaXRpdmUnXSA6IFsnbmVnYXRpdmUnLCAnbmV1dHJhbCcsICdwb3NpdGl2ZSddXG4gICk7XG5cbiAgc2hvd0NvbW1lbnRGaWVsZCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBzZWwgPSB0aGlzLnN0YXRlKCkuc2VsZWN0ZWRWYWx1ZTtcbiAgICBpZiAoIXNlbCkgcmV0dXJuIGZhbHNlO1xuICAgIGNvbnN0IGNvbW1lbnRPbiA9IHRoaXMucmVzb2x2ZWRQcm9wcygpLmNvbW1lbnRPblZhbHVlcztcbiAgICBpZiAoY29tbWVudE9uICE9PSB1bmRlZmluZWQpIHJldHVybiBjb21tZW50T24uaW5jbHVkZXMoc2VsKTtcbiAgICByZXR1cm4gdGhpcy5yZXNvbHZlZFByb3BzKCkuc2hvd0NvbW1lbnQ7XG4gIH0pO1xuXG4gIGNhblN1Ym1pdCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuc3RhdGUoKS5zZWxlY3RlZFZhbHVlICE9PSBudWxsICYmICF0aGlzLnN0YXRlKCkuaXNMb2FkaW5nKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBhZGRJY29ucyh7IGNsb3NlT3V0bGluZSB9KTtcbiAgICAvLyBBdXRvLXJlZ2lzdHJvIGRlIGRlZmF1bHRzIGkxOG4gKGVzL2VuKSBzaSBlbCBjb25zdW1lciBubyBwcm92ZXnDsyBlbFxuICAgIC8vIG5hbWVzcGFjZS4gR2FyYW50aXphIHF1ZSBgdCgpYCBudW5jYSBjYWlnYSBlbiBrZXkgZmFsdGFudGUuIFZlclxuICAgIC8vIENPTlRFTlRfUkVBQ1RJT05fSTE4Ti4gSWRlbXBvdGVudGU6IHNvbG8gbGEgMcKqIGluc3RhbmNpYSByZWdpc3RyYS5cbiAgICBpZiAoIXRoaXMuaTE4bi5oYXNOYW1lc3BhY2UoJ0NvbnRlbnRSZWFjdGlvbicpKSB7XG4gICAgICB0aGlzLmkxOG4ucmVnaXN0ZXJDb250ZW50KCdDb250ZW50UmVhY3Rpb24nLCBDT05URU5UX1JFQUNUSU9OX0kxOE4pO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBDaWVycmEgZWwgbW9kYWwvc2hlZXQgY29udGVuZWRvciAoc2kgZWwgY29tcG9uZW50ZSBzZSBhYnJpw7MgdsOtYSBNb2RhbFNlcnZpY2UpLiAqL1xuICBjbG9zZSgpOiB2b2lkIHtcbiAgICB2b2lkIHRoaXMuX21vZGFsUmVmPy5kaXNtaXNzKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmxvYWRQcmV2aW91c1JlYWN0aW9uKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXNbJ3Byb3BzJ10gJiYgIWNoYW5nZXNbJ3Byb3BzJ10uZmlyc3RDaGFuZ2UpIHtcbiAgICAgIHRoaXMubG9hZFByZXZpb3VzUmVhY3Rpb24oKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGxvYWRQcmV2aW91c1JlYWN0aW9uKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghdGhpcy5wcm9wcy5lbnRpdHlSZWYpIHJldHVybjtcblxuICAgIC8vIFNpIGhheSBpbml0aWFsVmFsdWUsIHVzYXJsbyBkaXJlY3RhbWVudGUgc2luIGNvbnN1bHRhclxuICAgIGlmICh0aGlzLnByb3BzLmluaXRpYWxWYWx1ZSkge1xuICAgICAgdGhpcy5zdGF0ZS51cGRhdGUocyA9PiAoe1xuICAgICAgICAuLi5zLFxuICAgICAgICBzZWxlY3RlZFZhbHVlOiB0aGlzLnByb3BzLmluaXRpYWxWYWx1ZSEsXG4gICAgICAgIGhhZFByZXZpb3VzUmVhY3Rpb246IHRydWUsXG4gICAgICAgIGlzTG9hZGluZzogZmFsc2UsXG4gICAgICAgIGlzU3VibWl0dGVkOiB0cnVlLFxuICAgICAgfSkpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFNpIHNraXBJbml0aWFsQ2hlY2sgZXN0w6EgYWN0aXZvLCBubyBjb25zdWx0YXJcbiAgICBpZiAodGhpcy5wcm9wcy5za2lwSW5pdGlhbENoZWNrKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zdGF0ZS51cGRhdGUocyA9PiAoeyAuLi5zLCBpc0xvYWRpbmc6IHRydWUsIGVycm9yOiBudWxsIH0pKTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBjaGVjayA9IGF3YWl0IHRoaXMuZmVlZGJhY2tTZXJ2aWNlLmNoZWNrRmVlZGJhY2soXG4gICAgICAgIHRoaXMucHJvcHMuZW50aXR5UmVmLmVudGl0eVR5cGUsXG4gICAgICAgIHRoaXMucHJvcHMuZW50aXR5UmVmLmVudGl0eUlkXG4gICAgICApO1xuXG4gICAgICBpZiAoY2hlY2suaGFzRmVlZGJhY2sgJiYgY2hlY2sucmVhY3Rpb25WYWx1ZSkge1xuICAgICAgICB0aGlzLnN0YXRlLnVwZGF0ZShzID0+ICh7XG4gICAgICAgICAgLi4ucyxcbiAgICAgICAgICBzZWxlY3RlZFZhbHVlOiBjaGVjay5yZWFjdGlvblZhbHVlISxcbiAgICAgICAgICBoYWRQcmV2aW91c1JlYWN0aW9uOiB0cnVlLFxuICAgICAgICAgIGlzTG9hZGluZzogZmFsc2UsXG4gICAgICAgICAgaXNTdWJtaXR0ZWQ6IHRydWUsXG4gICAgICAgIH0pKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc3RhdGUudXBkYXRlKHMgPT4gKHsgLi4ucywgaXNMb2FkaW5nOiBmYWxzZSB9KSk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGxvYWRpbmcgcHJldmlvdXMgcmVhY3Rpb246JywgZXJyb3IpO1xuICAgICAgdGhpcy5zdGF0ZS51cGRhdGUocyA9PiAoeyAuLi5zLCBpc0xvYWRpbmc6IGZhbHNlIH0pKTtcbiAgICB9XG4gIH1cblxuICBzZWxlY3RSZWFjdGlvbih2YWx1ZTogUmVhY3Rpb25WYWx1ZSk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJlc29sdmVkUHJvcHMoKS5kaXNhYmxlZCB8fCB0aGlzLnJlc29sdmVkUHJvcHMoKS5yZWFkb25seSkgcmV0dXJuO1xuXG4gICAgY29uc3QgcHJldmlvdXNWYWx1ZSA9IHRoaXMuc3RhdGUoKS5zZWxlY3RlZFZhbHVlO1xuXG4gICAgdGhpcy5zdGF0ZS51cGRhdGUocyA9PiAoe1xuICAgICAgLi4ucyxcbiAgICAgIHNlbGVjdGVkVmFsdWU6IHZhbHVlLFxuICAgICAgaXNTdWJtaXR0ZWQ6IGZhbHNlLFxuICAgICAgZXJyb3I6IG51bGwsXG4gICAgfSkpO1xuXG4gICAgdGhpcy5yZWFjdGlvbkNoYW5nZS5lbWl0KHsgdmFsdWUsIHByZXZpb3VzVmFsdWUgfSk7XG4gIH1cblxuICBhc3luYyBzdWJtaXRSZWFjdGlvbigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBjdXJyZW50U3RhdGUgPSB0aGlzLnN0YXRlKCk7XG4gICAgY29uc3QgcHJvcHMgPSB0aGlzLnJlc29sdmVkUHJvcHMoKTtcblxuICAgIGlmICghY3VycmVudFN0YXRlLnNlbGVjdGVkVmFsdWUgfHwgcHJvcHMuZGlzYWJsZWQpIHJldHVybjtcblxuICAgIHRoaXMuc3RhdGUudXBkYXRlKHMgPT4gKHsgLi4ucywgaXNMb2FkaW5nOiB0cnVlLCBlcnJvcjogbnVsbCB9KSk7XG5cbiAgICB0cnkge1xuICAgICAgLy8gRGV0ZXJtaW5hciBzaSB1c2FyIGVuZHBvaW50IGFuw7NuaW1vIG8gYXV0ZW50aWNhZG9cbiAgICAgIGNvbnN0IGlzQXV0aGVudGljYXRlZCA9IHRoaXMuYXV0aD8uaXNBdXRoZW50aWNhdGVkKCkgPz8gZmFsc2U7XG4gICAgICBjb25zdCB1c2VBbm9ueW1vdXMgPSB0aGlzLnByb3BzLmFsbG93QW5vbnltb3VzICYmICFpc0F1dGhlbnRpY2F0ZWQ7XG5cbiAgICAgIGlmICh1c2VBbm9ueW1vdXMpIHtcbiAgICAgICAgLy8gVXNhciBlbmRwb2ludCBhbsOzbmltbyAocMO6YmxpY28pXG4gICAgICAgIGF3YWl0IHRoaXMuZmVlZGJhY2tTZXJ2aWNlLmNyZWF0ZUFub255bW91c1JlYWN0aW9uKFxuICAgICAgICAgIHByb3BzLmVudGl0eVJlZixcbiAgICAgICAgICBjdXJyZW50U3RhdGUuc2VsZWN0ZWRWYWx1ZSxcbiAgICAgICAgICBjdXJyZW50U3RhdGUuY29tbWVudCB8fCB1bmRlZmluZWRcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFVzYXIgZW5kcG9pbnQgYXV0ZW50aWNhZG9cbiAgICAgICAgYXdhaXQgdGhpcy5mZWVkYmFja1NlcnZpY2UuY3JlYXRlUmVhY3Rpb24oXG4gICAgICAgICAgcHJvcHMuZW50aXR5UmVmLFxuICAgICAgICAgIGN1cnJlbnRTdGF0ZS5zZWxlY3RlZFZhbHVlLFxuICAgICAgICAgIGN1cnJlbnRTdGF0ZS5jb21tZW50IHx8IHVuZGVmaW5lZFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnN0YXRlLnVwZGF0ZShzID0+ICh7XG4gICAgICAgIC4uLnMsXG4gICAgICAgIGlzTG9hZGluZzogZmFsc2UsXG4gICAgICAgIGlzU3VibWl0dGVkOiB0cnVlLFxuICAgICAgICBjb21tZW50OiAnJyxcbiAgICAgICAgaGFkUHJldmlvdXNSZWFjdGlvbjogIXVzZUFub255bW91cywgLy8gU29sbyBwYXJhIGF1dGVudGljYWRvc1xuICAgICAgfSkpO1xuXG4gICAgICB0aGlzLnJlYWN0aW9uU3VibWl0LmVtaXQoe1xuICAgICAgICB2YWx1ZTogY3VycmVudFN0YXRlLnNlbGVjdGVkVmFsdWUsXG4gICAgICAgIGNvbW1lbnQ6IGN1cnJlbnRTdGF0ZS5jb21tZW50IHx8IHVuZGVmaW5lZCxcbiAgICAgICAgZW50aXR5UmVmOiBwcm9wcy5lbnRpdHlSZWYsXG4gICAgICAgIGlzVXBkYXRlOiBjdXJyZW50U3RhdGUuaGFkUHJldmlvdXNSZWFjdGlvbixcbiAgICAgIH0pO1xuXG4gICAgICBpZiAocHJvcHMuc2hvd1RoYW5rWW91KSB7XG4gICAgICAgIHRoaXMudG9hc3Quc2hvdyh7XG4gICAgICAgICAgbWVzc2FnZTogcHJvcHMudGhhbmtZb3VNZXNzYWdlLFxuICAgICAgICAgIGR1cmF0aW9uOiAyMDAwLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRXJyb3Igc3VibWl0dGluZyByZWFjdGlvbjonLCBlcnJvcik7XG4gICAgICB0aGlzLnN0YXRlLnVwZGF0ZShzID0+ICh7XG4gICAgICAgIC4uLnMsXG4gICAgICAgIGlzTG9hZGluZzogZmFsc2UsXG4gICAgICAgIGVycm9yOiB0aGlzLnQoJ2Vycm9yU3VibWl0dGluZycpLFxuICAgICAgfSkpO1xuXG4gICAgICB0aGlzLnRvYXN0LnNob3coe1xuICAgICAgICBtZXNzYWdlOiB0aGlzLnQoJ2Vycm9yU3VibWl0dGluZycpLFxuICAgICAgICBkdXJhdGlvbjogMzAwMCxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZUNvbW1lbnQoZXZlbnQ6IEN1c3RvbUV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgdmFsdWUgPSBldmVudC5kZXRhaWwudmFsdWUgfHwgJyc7XG4gICAgdGhpcy5zdGF0ZS51cGRhdGUocyA9PiAoeyAuLi5zLCBjb21tZW50OiB2YWx1ZSB9KSk7XG4gIH1cblxuICBnZXRFbW9qaShpbmRleDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvbHZlZFByb3BzKCkuZW1vamlzW2luZGV4XTtcbiAgfVxuXG4gIGdldEVtb2ppTGFiZWwoaW5kZXg6IG51bWJlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZWRQcm9wcygpLmVtb2ppTGFiZWxzW2luZGV4XTtcbiAgfVxuXG4gIGlzU2VsZWN0ZWQodmFsdWU6IFJlYWN0aW9uVmFsdWUpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZSgpLnNlbGVjdGVkVmFsdWUgPT09IHZhbHVlO1xuICB9XG5cbiAgdChrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgdHJhbnNsYXRpb25zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICAgcXVlc3Rpb246ICfCv1RlIHJlc3VsdMOzIMO6dGlsIGVzdGUgY29udGVuaWRvPycsXG4gICAgICBjb21tZW50UGxhY2Vob2xkZXI6ICdDdcOpbnRhbm9zIG3DoXMgKG9wY2lvbmFsKS4uLicsXG4gICAgICBzdWJtaXQ6ICdFbnZpYXIgb3BpbmnDs24nLFxuICAgICAgdXBkYXRlOiAnQWN0dWFsaXphciBvcGluacOzbicsXG4gICAgICB0aGFua1lvdTogJ8KhR3JhY2lhcyBwb3IgdHUgb3BpbmnDs24hJyxcbiAgICAgIHN1Ym1pdHRlZDogJ1R1IG9waW5pw7NuIGhhIHNpZG8gcmVnaXN0cmFkYScsXG4gICAgICBlcnJvclN1Ym1pdHRpbmc6ICdFcnJvciBhbCBlbnZpYXIuIEludGVudGEgZGUgbnVldm8uJyxcbiAgICAgIHBvc2l0aXZlTGFiZWw6ICdTw60sIG11Y2hvJyxcbiAgICAgIG5lZ2F0aXZlTGFiZWw6ICdObyB0YW50bycsXG4gICAgICBuZWdhdGl2ZUZlZWRiYWNrVGl0bGU6ICfCv0N1w6ludGFub3MgcXXDqSBubyB0ZSBndXN0w7M/JyxcbiAgICB9O1xuICAgIHJldHVybiB0aGlzLmkxOG4udChrZXksICdDb250ZW50UmVhY3Rpb24nKSB8fCB0cmFuc2xhdGlvbnNba2V5XSB8fCBrZXk7XG4gIH1cbn1cbiIsIkBpZiAoaXNDb25maWd1cmVkKCkpIHtcbjxkaXYgY2xhc3M9XCJjb250ZW50LXJlYWN0aW9uXCIgW2NsYXNzLmRpc2FibGVkXT1cInJlc29sdmVkUHJvcHMoKS5kaXNhYmxlZFwiIFtjbGFzcy5yZWFkb25seV09XCJyZXNvbHZlZFByb3BzKCkucmVhZG9ubHlcIj5cbiAgPCEtLSBCb3TDs24gZGUgY2llcnJlIChzb2xvIGVuIG1vZG8gbW9kYWwvc2hlZXQpIC0tPlxuICBAaWYgKHJlc29sdmVkUHJvcHMoKS5zaG93Q2xvc2VCdXR0b24pIHtcbiAgPGlvbi1idXR0b24gZmlsbD1cImNsZWFyXCIgY29sb3I9XCJkYXJrXCIgY2xhc3M9XCJjbG9zZS1idXR0b25cIiBbYXR0ci5hcmlhLWxhYmVsXT1cInQoJ2Nsb3NlJylcIiAoY2xpY2spPVwiY2xvc2UoKVwiPlxuICAgIDxpb24taWNvbiBuYW1lPVwiY2xvc2Utb3V0bGluZVwiIHNsb3Q9XCJpY29uLW9ubHlcIj48L2lvbi1pY29uPlxuICA8L2lvbi1idXR0b24+XG4gIH1cbiAgPCEtLSBMb2FkaW5nIGluaWNpYWwgLS0+XG4gIEBpZiAoc3RhdGUoKS5pc0xvYWRpbmcgJiYgIXN0YXRlKCkuc2VsZWN0ZWRWYWx1ZSkge1xuICA8ZGl2IGNsYXNzPVwibG9hZGluZy1jb250YWluZXJcIj5cbiAgICA8aW9uLXNwaW5uZXIgbmFtZT1cImNyZXNjZW50XCI+PC9pb24tc3Bpbm5lcj5cbiAgPC9kaXY+XG4gIH0gQGVsc2Uge1xuICA8IS0tIFByZWd1bnRhIC0tPlxuICA8cCBjbGFzcz1cInF1ZXN0aW9uXCI+XG4gICAge3sgc3RhdGUoKS5zZWxlY3RlZFZhbHVlID09PSAnbmVnYXRpdmUnID8gdCgnbmVnYXRpdmVGZWVkYmFja1RpdGxlJykgOiByZXNvbHZlZFByb3BzKCkucXVlc3Rpb24gfX1cbiAgPC9wPlxuXG4gIDwhLS0gQm90b25lcyBkZSByZWFjY2nDs24g4oCUIHZhcmlhbnRlIGVtb2ppIChjYXJhcywgZXN0cmVsbGFzLCB0aHVtYnMsIOKApikgLS0+XG4gIEBpZiAocmVzb2x2ZWRQcm9wcygpLnZhcmlhbnQgPT09ICdlbW9qaScpIHtcbiAgPGRpdiBjbGFzcz1cInJlYWN0aW9uLWJ1dHRvbnMgcmVhY3Rpb24tYnV0dG9ucy0tZW1vamlcIj5cbiAgICBAZm9yICh2YWx1ZSBvZiBhY3RpdmVSZWFjdGlvblZhbHVlcygpOyB0cmFjayB2YWx1ZTsgbGV0IGkgPSAkaW5kZXgpIHtcbiAgICA8aW9uLWJ1dHRvblxuICAgICAgZmlsbD1cImNsZWFyXCJcbiAgICAgIHNoYXBlPVwicm91bmRcIlxuICAgICAgW2NsYXNzLnNlbGVjdGVkXT1cImlzU2VsZWN0ZWQodmFsdWUpXCJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwicmVzb2x2ZWRQcm9wcygpLmVtb2ppTGFiZWxzW2ldXCJcbiAgICAgIFthdHRyLmFyaWEtcHJlc3NlZF09XCJpc1NlbGVjdGVkKHZhbHVlKVwiXG4gICAgICBbZGlzYWJsZWRdPVwicmVzb2x2ZWRQcm9wcygpLmRpc2FibGVkIHx8IHJlc29sdmVkUHJvcHMoKS5yZWFkb25seVwiXG4gICAgICAoY2xpY2spPVwic2VsZWN0UmVhY3Rpb24odmFsdWUpXCJcbiAgICA+XG4gICAgICA8c3BhbiBjbGFzcz1cImVtb2ppLWJ0blwiPnt7IHJlc29sdmVkUHJvcHMoKS5lbW9qaXNbaV0gfX08L3NwYW4+XG4gICAgPC9pb24tYnV0dG9uPlxuICAgIH1cbiAgPC9kaXY+XG4gIH0gQGVsc2Uge1xuICA8IS0tIEJvdG9uZXMgZGUgcmVhY2Npw7NuIOKAlCB2YXJpYW50ZSB0ZXh0byAoZGVmYXVsdCkgLS0+XG4gIDxkaXYgY2xhc3M9XCJyZWFjdGlvbi1idXR0b25zXCI+XG4gICAgPGlvbi1idXR0b25cbiAgICAgIFtmaWxsXT1cImlzU2VsZWN0ZWQoJ3Bvc2l0aXZlJykgPyAnc29saWQnIDogJ291dGxpbmUnXCJcbiAgICAgIHNoYXBlPVwicm91bmRcIlxuICAgICAgY29sb3I9XCJkYXJrXCJcbiAgICAgIFthdHRyLmFyaWEtcHJlc3NlZF09XCJpc1NlbGVjdGVkKCdwb3NpdGl2ZScpXCJcbiAgICAgIFtkaXNhYmxlZF09XCJyZXNvbHZlZFByb3BzKCkuZGlzYWJsZWQgfHwgcmVzb2x2ZWRQcm9wcygpLnJlYWRvbmx5XCJcbiAgICAgIChjbGljayk9XCJzZWxlY3RSZWFjdGlvbigncG9zaXRpdmUnKVwiXG4gICAgPlxuICAgICAge3sgdCgncG9zaXRpdmVMYWJlbCcpIH19XG4gICAgPC9pb24tYnV0dG9uPlxuICAgIDxpb24tYnV0dG9uXG4gICAgICBbZmlsbF09XCJpc1NlbGVjdGVkKCduZWdhdGl2ZScpID8gJ3NvbGlkJyA6ICdvdXRsaW5lJ1wiXG4gICAgICBzaGFwZT1cInJvdW5kXCJcbiAgICAgIGNvbG9yPVwiZGFya1wiXG4gICAgICBbYXR0ci5hcmlhLXByZXNzZWRdPVwiaXNTZWxlY3RlZCgnbmVnYXRpdmUnKVwiXG4gICAgICBbZGlzYWJsZWRdPVwicmVzb2x2ZWRQcm9wcygpLmRpc2FibGVkIHx8IHJlc29sdmVkUHJvcHMoKS5yZWFkb25seVwiXG4gICAgICAoY2xpY2spPVwic2VsZWN0UmVhY3Rpb24oJ25lZ2F0aXZlJylcIlxuICAgID5cbiAgICAgIHt7IHQoJ25lZ2F0aXZlTGFiZWwnKSB9fVxuICAgIDwvaW9uLWJ1dHRvbj5cbiAgPC9kaXY+XG4gIH1cblxuICA8IS0tIENhbXBvIGRlIGNvbWVudGFyaW8gKHNvbG8gc2kgaGF5IHNlbGVjY2nDs24pIC0tPlxuICBAaWYgKHNob3dDb21tZW50RmllbGQoKSkge1xuICA8ZGl2IGNsYXNzPVwiY29tbWVudC1zZWN0aW9uXCI+XG4gICAgPGlvbi10ZXh0YXJlYVxuICAgICAgW3ZhbHVlXT1cInN0YXRlKCkuY29tbWVudFwiXG4gICAgICBbcGxhY2Vob2xkZXJdPVwicmVzb2x2ZWRQcm9wcygpLmNvbW1lbnRQbGFjZWhvbGRlclwiXG4gICAgICBbbWF4bGVuZ3RoXT1cInJlc29sdmVkUHJvcHMoKS5tYXhDb21tZW50TGVuZ3RoXCJcbiAgICAgIFtkaXNhYmxlZF09XCJyZXNvbHZlZFByb3BzKCkuZGlzYWJsZWRcIlxuICAgICAgW3Jvd3NdPVwiM1wiXG4gICAgICBjbGFzcz1cImNvbW1lbnQtdGV4dGFyZWFcIlxuICAgICAgKGlvbklucHV0KT1cInVwZGF0ZUNvbW1lbnQoJGV2ZW50KVwiXG4gICAgPjwvaW9uLXRleHRhcmVhPlxuICAgIDxzcGFuIGNsYXNzPVwiY2hhci1jb3VudFwiPiB7eyBzdGF0ZSgpLmNvbW1lbnQubGVuZ3RoIH19L3t7IHJlc29sdmVkUHJvcHMoKS5tYXhDb21tZW50TGVuZ3RoIH19IDwvc3Bhbj5cbiAgPC9kaXY+XG4gIH1cblxuICA8IS0tIEJvdMOzbiBkZSBlbnbDrW8gLS0+XG4gIEBpZiAoc3RhdGUoKS5zZWxlY3RlZFZhbHVlICYmICFzdGF0ZSgpLmlzU3VibWl0dGVkKSB7XG4gIDxpb24tYnV0dG9uIGV4cGFuZD1cImJsb2NrXCIgc2hhcGU9XCJyb3VuZFwiIFtkaXNhYmxlZF09XCIhY2FuU3VibWl0KClcIiAoY2xpY2spPVwic3VibWl0UmVhY3Rpb24oKVwiIGNsYXNzPVwic3VibWl0LWJ1dHRvblwiPlxuICAgIEBpZiAoc3RhdGUoKS5pc0xvYWRpbmcpIHtcbiAgICA8aW9uLXNwaW5uZXIgbmFtZT1cImNyZXNjZW50XCI+PC9pb24tc3Bpbm5lcj5cbiAgICB9IEBlbHNlIHsge3sgc3RhdGUoKS5oYWRQcmV2aW91c1JlYWN0aW9uID8gdCgndXBkYXRlJykgOiB0KCdzdWJtaXQnKSB9fSB9XG4gIDwvaW9uLWJ1dHRvbj5cbiAgfVxuXG4gIDwhLS0gTWVuc2FqZSBkZSBjb25maXJtYWNpw7NuIC0tPlxuICBAaWYgKHN0YXRlKCkuaXNTdWJtaXR0ZWQpIHtcbiAgPHAgY2xhc3M9XCJzdWJtaXR0ZWQtbWVzc2FnZVwiPnt7IHQoJ3RoYW5rWW91JykgfX08L3A+XG4gIH1cblxuICA8IS0tIEVycm9yIC0tPlxuICBAaWYgKHN0YXRlKCkuZXJyb3IpIHtcbiAgPHAgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCI+e3sgc3RhdGUoKS5lcnJvciB9fTwvcD5cbiAgfSB9XG48L2Rpdj5cbn1cbiJdfQ==
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL2NvbnRlbnQtcmVhY3Rpb24vdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVudGl0eVJlZiwgUmVhY3Rpb25WYWx1ZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2ZlZWRiYWNrL3R5cGVzJztcblxuLyoqXG4gKiBDb25maWd1cmFjacOzbiBkZWwgY29tcG9uZW50ZSBjb250ZW50LXJlYWN0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbnRlbnRSZWFjdGlvbk1ldGFkYXRhIHtcbiAgLyoqIFJlZmVyZW5jaWEgYSBsYSBlbnRpZGFkIChyZXF1ZXJpZG8pICovXG4gIGVudGl0eVJlZjogRW50aXR5UmVmO1xuXG4gIC8qKiBQcmVndW50YSBhIG1vc3RyYXIgKGRlZmF1bHQ6IFwiwr9UZSByZXN1bHTDsyDDunRpbCBlc3RlIGNvbnRlbmlkbz9cIikgKi9cbiAgcXVlc3Rpb24/OiBzdHJpbmc7XG5cbiAgLyoqIE1vc3RyYXIgY2FtcG8gZGUgY29tZW50YXJpbyAoZGVmYXVsdDogdHJ1ZSkgKi9cbiAgc2hvd0NvbW1lbnQ/OiBib29sZWFuO1xuXG4gIC8qKiBQbGFjZWhvbGRlciBkZWwgY29tZW50YXJpbyAqL1xuICBjb21tZW50UGxhY2Vob2xkZXI/OiBzdHJpbmc7XG5cbiAgLyoqIE3DoXhpbW8gZGUgY2FyYWN0ZXJlcyBkZWwgY29tZW50YXJpbyAoZGVmYXVsdDogNTAwKSAqL1xuICBtYXhDb21tZW50TGVuZ3RoPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBWYXJpYW50ZSB2aXN1YWwgZGUgbG9zIGJvdG9uZXMgZGUgcmVhY2Npw7NuLlxuICAgKiAtIGAnYnV0dG9ucydgIChkZWZhdWx0KTogYm90b25lcyBkZSB0ZXh0byByZWRvbmRlYWRvcyAoXCJTw60sIG11Y2hvXCIgLyBcIk5vIHRhbnRvXCIpLlxuICAgKiAtIGAnZW1vamknYDogaWNvbm9zIGdyYW5kZXMgY29uZmlndXJhYmxlcyAoY2FyYXMsIGVzdHJlbGxhcywgdGh1bWJzLCBldGMuKS5cbiAgICogUGFzYXIgYGVtb2ppc2AgaW1wbGljYSBgdmFyaWFudDogJ2Vtb2ppJ2AgYXVucXVlIG5vIHNlIGRlY2xhcmUgZXhwbMOtY2l0YW1lbnRlLlxuICAgKi9cbiAgdmFyaWFudD86ICdidXR0b25zJyB8ICdlbW9qaSc7XG5cbiAgLyoqIEVtb2ppcyBwZXJzb25hbGl6YWRvcyBbbmVnYXRpdmUsIG5ldXRyYWwsIHBvc2l0aXZlXSB8IFtuZWdhdGl2ZSwgcG9zaXRpdmVdICovXG4gIGVtb2ppcz86IFtzdHJpbmcsIHN0cmluZywgc3RyaW5nXSB8IFtzdHJpbmcsIHN0cmluZ107XG5cbiAgLyoqIExhYmVscyBwYXJhIGVtb2ppcyAoYWNjZXNpYmlsaWRhZCkgKi9cbiAgZW1vamlMYWJlbHM/OiBbc3RyaW5nLCBzdHJpbmcsIHN0cmluZ10gfCBbc3RyaW5nLCBzdHJpbmddO1xuXG4gIC8qKlxuICAgKiBWYWxvcmVzIGRlIHJlYWNjacOzbiBwYXJhIGxvcyBxdWUgbW9zdHJhciBlbCBjYW1wbyBkZSBjb21lbnRhcmlvLlxuICAgKiBTaSBzZSBvbWl0ZSwgc2UgdXNhIGBzaG93Q29tbWVudGAgY29tbyBhbnRlcyAoZGVmYXVsdDogdG9kb3MpLlxuICAgKiBFamVtcGxvOiBgWyduZWdhdGl2ZSddYCBtdWVzdHJhIGVsIGNvbW1lbnQgc29sbyBjdWFuZG8gZWwgdXN1YXJpbyBlbGlnZSBuZWdhdGl2by5cbiAgICovXG4gIGNvbW1lbnRPblZhbHVlcz86IFJlYWN0aW9uVmFsdWVbXTtcblxuICAvKiogTW9zdHJhciB0b2FzdCBkZSBhZ3JhZGVjaW1pZW50byAoZGVmYXVsdDogdHJ1ZSkgKi9cbiAgc2hvd1RoYW5rWW91PzogYm9vbGVhbjtcblxuICAvKiogTWVuc2FqZSBkZSBhZ3JhZGVjaW1pZW50byBwZXJzb25hbGl6YWRvICovXG4gIHRoYW5rWW91TWVzc2FnZT86IHN0cmluZztcblxuICAvKiogRGVzaGFiaWxpdGFyIGludGVyYWNjacOzbiAqL1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG5cbiAgLyoqIE1vZG8gcmVhZG9ubHkgKHNvbG8gbW9zdHJhciBzZWxlY2Npw7NuIHByZXZpYSkgKi9cbiAgcmVhZG9ubHk/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBWYWxvciBpbmljaWFsIChwYXJhIFN0b3J5Ym9vayBvIGN1YW5kbyB5YSBzZSBjb25vY2UgZWwgZXN0YWRvKS5cbiAgICogU2kgc2UgcHJvcG9yY2lvbmEsIG5vIHNlIGNvbnN1bHRhcsOhIGxhIEFQSS9GaXJlYmFzZS5cbiAgICovXG4gIGluaXRpYWxWYWx1ZT86IFJlYWN0aW9uVmFsdWU7XG5cbiAgLyoqXG4gICAqIE9taXRpciBjb25zdWx0YSBkZSBmZWVkYmFjayBwcmV2aW8gYWwgY2FyZ2FyLlxuICAgKiDDmnRpbCBwYXJhIFN0b3J5Ym9vayBvIGN1YW5kbyBzZSB1c2EgaW5pdGlhbFZhbHVlLlxuICAgKi9cbiAgc2tpcEluaXRpYWxDaGVjaz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFBlcm1pdGlyIGZlZWRiYWNrIGFuw7NuaW1vIChzaW4gYXV0ZW50aWNhY2nDs24pLlxuICAgKiBVc2FkbyBwYXJhIGJsb2dzLCBGQVFzIHkgY29udGVuaWRvIHDDumJsaWNvLlxuICAgKiBEZWZhdWx0OiBmYWxzZVxuICAgKi9cbiAgYWxsb3dBbm9ueW1vdXM/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIEVzdGFkbyBpbnRlcm5vIGRlbCBjb21wb25lbnRlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbnRlbnRSZWFjdGlvblN0YXRlIHtcbiAgLyoqIFZhbG9yIHNlbGVjY2lvbmFkbyBhY3R1YWxtZW50ZSAqL1xuICBzZWxlY3RlZFZhbHVlOiBSZWFjdGlvblZhbHVlIHwgbnVsbDtcblxuICAvKiogQ29tZW50YXJpbyBkZWwgdXN1YXJpbyAqL1xuICBjb21tZW50OiBzdHJpbmc7XG5cbiAgLyoqIEluZGljYSBzaSBlc3TDoSBjYXJnYW5kbyAqL1xuICBpc0xvYWRpbmc6IGJvb2xlYW47XG5cbiAgLyoqIEluZGljYSBzaSB5YSBlbnZpw7MgbGEgcmVhY2Npw7NuICovXG4gIGlzU3VibWl0dGVkOiBib29sZWFuO1xuXG4gIC8qKiBJbmRpY2Egc2kgdGVuw61hIHJlYWNjacOzbiBwcmV2aWEgKi9cbiAgaGFkUHJldmlvdXNSZWFjdGlvbjogYm9vbGVhbjtcblxuICAvKiogRXJyb3IgbWVzc2FnZSBpZiBhbnkgKi9cbiAgZXJyb3I6IHN0cmluZyB8IG51bGw7XG59XG5cbi8qKlxuICogRXZlbnRvIGVtaXRpZG8gYWwgZW52aWFyIHJlYWNjacOzbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZWFjdGlvblN1Ym1pdEV2ZW50IHtcbiAgdmFsdWU6IFJlYWN0aW9uVmFsdWU7XG4gIGNvbW1lbnQ/OiBzdHJpbmc7XG4gIGVudGl0eVJlZjogRW50aXR5UmVmO1xuICBpc1VwZGF0ZTogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBFdmVudG8gZW1pdGlkbyBhbCBjYW1iaWFyIHNlbGVjY2nDs24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVhY3Rpb25DaGFuZ2VFdmVudCB7XG4gIHZhbHVlOiBSZWFjdGlvblZhbHVlIHwgbnVsbDtcbiAgcHJldmlvdXNWYWx1ZTogUmVhY3Rpb25WYWx1ZSB8IG51bGw7XG59XG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL2NvbnRlbnQtcmVhY3Rpb24vdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVudGl0eVJlZiwgUmVhY3Rpb25WYWx1ZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2ZlZWRiYWNrL3R5cGVzJztcblxuLyoqXG4gKiBDb25maWd1cmFjacOzbiBkZWwgY29tcG9uZW50ZSBjb250ZW50LXJlYWN0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbnRlbnRSZWFjdGlvbk1ldGFkYXRhIHtcbiAgLyoqIFJlZmVyZW5jaWEgYSBsYSBlbnRpZGFkIChyZXF1ZXJpZG8pICovXG4gIGVudGl0eVJlZjogRW50aXR5UmVmO1xuXG4gIC8qKiBQcmVndW50YSBhIG1vc3RyYXIgKGRlZmF1bHQ6IFwiwr9UZSByZXN1bHTDsyDDunRpbCBlc3RlIGNvbnRlbmlkbz9cIikgKi9cbiAgcXVlc3Rpb24/OiBzdHJpbmc7XG5cbiAgLyoqIE1vc3RyYXIgY2FtcG8gZGUgY29tZW50YXJpbyAoZGVmYXVsdDogdHJ1ZSkgKi9cbiAgc2hvd0NvbW1lbnQ/OiBib29sZWFuO1xuXG4gIC8qKiBQbGFjZWhvbGRlciBkZWwgY29tZW50YXJpbyAqL1xuICBjb21tZW50UGxhY2Vob2xkZXI/OiBzdHJpbmc7XG5cbiAgLyoqIE3DoXhpbW8gZGUgY2FyYWN0ZXJlcyBkZWwgY29tZW50YXJpbyAoZGVmYXVsdDogNTAwKSAqL1xuICBtYXhDb21tZW50TGVuZ3RoPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBWYXJpYW50ZSB2aXN1YWwgZGUgbG9zIGJvdG9uZXMgZGUgcmVhY2Npw7NuLlxuICAgKiAtIGAnYnV0dG9ucydgIChkZWZhdWx0KTogYm90b25lcyBkZSB0ZXh0byByZWRvbmRlYWRvcyAoXCJTw60sIG11Y2hvXCIgLyBcIk5vIHRhbnRvXCIpLlxuICAgKiAtIGAnZW1vamknYDogaWNvbm9zIGdyYW5kZXMgY29uZmlndXJhYmxlcyAoY2FyYXMsIGVzdHJlbGxhcywgdGh1bWJzLCBldGMuKS5cbiAgICogUGFzYXIgYGVtb2ppc2AgaW1wbGljYSBgdmFyaWFudDogJ2Vtb2ppJ2AgYXVucXVlIG5vIHNlIGRlY2xhcmUgZXhwbMOtY2l0YW1lbnRlLlxuICAgKi9cbiAgdmFyaWFudD86ICdidXR0b25zJyB8ICdlbW9qaSc7XG5cbiAgLyoqIEVtb2ppcyBwZXJzb25hbGl6YWRvcyBbbmVnYXRpdmUsIG5ldXRyYWwsIHBvc2l0aXZlXSB8IFtuZWdhdGl2ZSwgcG9zaXRpdmVdICovXG4gIGVtb2ppcz86IFtzdHJpbmcsIHN0cmluZywgc3RyaW5nXSB8IFtzdHJpbmcsIHN0cmluZ107XG5cbiAgLyoqIExhYmVscyBwYXJhIGVtb2ppcyAoYWNjZXNpYmlsaWRhZCkgKi9cbiAgZW1vamlMYWJlbHM/OiBbc3RyaW5nLCBzdHJpbmcsIHN0cmluZ10gfCBbc3RyaW5nLCBzdHJpbmddO1xuXG4gIC8qKlxuICAgKiBWYWxvcmVzIGRlIHJlYWNjacOzbiBwYXJhIGxvcyBxdWUgbW9zdHJhciBlbCBjYW1wbyBkZSBjb21lbnRhcmlvLlxuICAgKiBTaSBzZSBvbWl0ZSwgc2UgdXNhIGBzaG93Q29tbWVudGAgY29tbyBhbnRlcyAoZGVmYXVsdDogdG9kb3MpLlxuICAgKiBFamVtcGxvOiBgWyduZWdhdGl2ZSddYCBtdWVzdHJhIGVsIGNvbW1lbnQgc29sbyBjdWFuZG8gZWwgdXN1YXJpbyBlbGlnZSBuZWdhdGl2by5cbiAgICovXG4gIGNvbW1lbnRPblZhbHVlcz86IFJlYWN0aW9uVmFsdWVbXTtcblxuICAvKiogTW9zdHJhciB0b2FzdCBkZSBhZ3JhZGVjaW1pZW50byAoZGVmYXVsdDogdHJ1ZSkgKi9cbiAgc2hvd1RoYW5rWW91PzogYm9vbGVhbjtcblxuICAvKiogTWVuc2FqZSBkZSBhZ3JhZGVjaW1pZW50byBwZXJzb25hbGl6YWRvICovXG4gIHRoYW5rWW91TWVzc2FnZT86IHN0cmluZztcblxuICAvKiogRGVzaGFiaWxpdGFyIGludGVyYWNjacOzbiAqL1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG5cbiAgLyoqIE1vZG8gcmVhZG9ubHkgKHNvbG8gbW9zdHJhciBzZWxlY2Npw7NuIHByZXZpYSkgKi9cbiAgcmVhZG9ubHk/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBWYWxvciBpbmljaWFsIChwYXJhIFN0b3J5Ym9vayBvIGN1YW5kbyB5YSBzZSBjb25vY2UgZWwgZXN0YWRvKS5cbiAgICogU2kgc2UgcHJvcG9yY2lvbmEsIG5vIHNlIGNvbnN1bHRhcsOhIGxhIEFQSS9GaXJlYmFzZS5cbiAgICovXG4gIGluaXRpYWxWYWx1ZT86IFJlYWN0aW9uVmFsdWU7XG5cbiAgLyoqXG4gICAqIE9taXRpciBjb25zdWx0YSBkZSBmZWVkYmFjayBwcmV2aW8gYWwgY2FyZ2FyLlxuICAgKiDDmnRpbCBwYXJhIFN0b3J5Ym9vayBvIGN1YW5kbyBzZSB1c2EgaW5pdGlhbFZhbHVlLlxuICAgKi9cbiAgc2tpcEluaXRpYWxDaGVjaz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFBlcm1pdGlyIGZlZWRiYWNrIGFuw7NuaW1vIChzaW4gYXV0ZW50aWNhY2nDs24pLlxuICAgKiBVc2FkbyBwYXJhIGJsb2dzLCBGQVFzIHkgY29udGVuaWRvIHDDumJsaWNvLlxuICAgKiBEZWZhdWx0OiBmYWxzZVxuICAgKi9cbiAgYWxsb3dBbm9ueW1vdXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBNdWVzdHJhIHVuIGJvdMOzbiBkZSBjaWVycmUgKFgpIGFycmliYSBhIGxhIGRlcmVjaGEuIFBlbnNhZG8gcGFyYSBjdWFuZG8gZWxcbiAgICogY29tcG9uZW50ZSBzZSBhYnJlIGNvbW8gbW9kYWwvc2hlZXQgKGVqLiBsYSB2aXN0YSBBYm91dCBsbyBhYnJlIHbDrWFcbiAgICogYE1vZGFsU2VydmljZWApOiBhbCBoYWNlciBjbGljayBzZSBjaWVycmEgZWwgbW9kYWwgdXNhbmRvIGVsIGBfbW9kYWxSZWZgIHF1ZVxuICAgKiBpbnllY3RhIGBNb2RhbFNlcnZpY2VgLiBJbmVydGUgKHNpbiBlZmVjdG8pIGVuIHVzbyBpbmxpbmUgc2luIG1vZGFsLlxuICAgKiBEZWZhdWx0OiBmYWxzZS5cbiAgICovXG4gIHNob3dDbG9zZUJ1dHRvbj86IGJvb2xlYW47XG59XG5cbi8qKlxuICogRXN0YWRvIGludGVybm8gZGVsIGNvbXBvbmVudGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGVudFJlYWN0aW9uU3RhdGUge1xuICAvKiogVmFsb3Igc2VsZWNjaW9uYWRvIGFjdHVhbG1lbnRlICovXG4gIHNlbGVjdGVkVmFsdWU6IFJlYWN0aW9uVmFsdWUgfCBudWxsO1xuXG4gIC8qKiBDb21lbnRhcmlvIGRlbCB1c3VhcmlvICovXG4gIGNvbW1lbnQ6IHN0cmluZztcblxuICAvKiogSW5kaWNhIHNpIGVzdMOhIGNhcmdhbmRvICovXG4gIGlzTG9hZGluZzogYm9vbGVhbjtcblxuICAvKiogSW5kaWNhIHNpIHlhIGVudmnDsyBsYSByZWFjY2nDs24gKi9cbiAgaXNTdWJtaXR0ZWQ6IGJvb2xlYW47XG5cbiAgLyoqIEluZGljYSBzaSB0ZW7DrWEgcmVhY2Npw7NuIHByZXZpYSAqL1xuICBoYWRQcmV2aW91c1JlYWN0aW9uOiBib29sZWFuO1xuXG4gIC8qKiBFcnJvciBtZXNzYWdlIGlmIGFueSAqL1xuICBlcnJvcjogc3RyaW5nIHwgbnVsbDtcbn1cblxuLyoqXG4gKiBFdmVudG8gZW1pdGlkbyBhbCBlbnZpYXIgcmVhY2Npw7NuLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlYWN0aW9uU3VibWl0RXZlbnQge1xuICB2YWx1ZTogUmVhY3Rpb25WYWx1ZTtcbiAgY29tbWVudD86IHN0cmluZztcbiAgZW50aXR5UmVmOiBFbnRpdHlSZWY7XG4gIGlzVXBkYXRlOiBib29sZWFuO1xufVxuXG4vKipcbiAqIEV2ZW50byBlbWl0aWRvIGFsIGNhbWJpYXIgc2VsZWNjacOzbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZWFjdGlvbkNoYW5nZUV2ZW50IHtcbiAgdmFsdWU6IFJlYWN0aW9uVmFsdWUgfCBudWxsO1xuICBwcmV2aW91c1ZhbHVlOiBSZWFjdGlvblZhbHVlIHwgbnVsbDtcbn1cbiJdfQ==
@@ -78,6 +78,7 @@ export class AboutViewComponent {
78
78
  brand: {
79
79
  name: merged.brand?.name ?? DEFAULT_BRAND_NAME,
80
80
  logoSrc: merged.brand?.logoSrc ?? DEFAULT_LOGO_SRC,
81
+ logoVar: merged.brand?.logoVar ?? '',
81
82
  },
82
83
  version: merged.version ?? '',
83
84
  socialLinks: merged.socialLinks ?? [],
@@ -90,6 +91,7 @@ export class AboutViewComponent {
90
91
  });
91
92
  this.brandName = computed(() => this.resolvedConfig().brand.name);
92
93
  this.logoSrc = computed(() => this.resolvedConfig().brand.logoSrc);
94
+ this.logoVar = computed(() => this.resolvedConfig().brand.logoVar ?? '');
93
95
  this.version = computed(() => this.resolvedConfig().version);
94
96
  this.socialLinks = computed(() => this.resolvedConfig().socialLinks);
95
97
  this.showRating = computed(() => this.resolvedConfig().showRating);
@@ -193,6 +195,8 @@ export class AboutViewComponent {
193
195
  skipInitialCheck: true,
194
196
  emojis: ['😕', '🙂', '😍'],
195
197
  emojiLabels: [this.tt('rateBad'), this.tt('rateMid'), this.tt('rateGood')],
198
+ // Sheet abierto vía ModalService: botón de cierre además del drag-handle.
199
+ showCloseButton: true,
196
200
  };
197
201
  await this.modalService.open({
198
202
  component: ContentReactionComponent,
@@ -211,7 +215,16 @@ export class AboutViewComponent {
211
215
  <ion-grid class="about-grid">
212
216
  <!-- HERO: logo + name + version -->
213
217
  <div class="about-hero">
214
- <img class="about-hero__logo" [src]="logoSrc()" [alt]="brandName()" />
218
+ @if (logoVar()) {
219
+ <div
220
+ class="about-hero__logo about-hero__logo--var"
221
+ role="img"
222
+ [attr.aria-label]="brandName()"
223
+ [style.background-image]="'var(' + logoVar() + ')'"
224
+ ></div>
225
+ } @else {
226
+ <img class="about-hero__logo" [src]="logoSrc()" [alt]="brandName()" />
227
+ }
215
228
  <val-title
216
229
  [props]="{
217
230
  content: brandName(),
@@ -316,7 +329,7 @@ export class AboutViewComponent {
316
329
  />
317
330
  </footer>
318
331
  </ion-grid>
319
- `, isInline: true, styles: [":host{display:block}.about-grid{padding:16px 0;max-width:720px;margin:0 auto}.about-hero{display:flex;flex-direction:column;align-items:center;gap:8px;padding:24px 0 16px;text-align:center}.about-hero__logo{height:96px;width:auto;display:block}.version-row{display:flex;align-items:center;gap:6px;cursor:pointer;opacity:.85;transition:opacity .15s ease}.version-row:hover{opacity:1}.version-copy-icon{font-size:14px;color:var(--ion-color-medium)}.about-section{padding:16px 0 8px;display:flex;flex-direction:column;gap:8px}.about-actions{display:flex;flex-direction:column;gap:8px}.about-section--reviews val-action-card{display:block}.about-section--reviews val-action-card ::ng-deep .action-card{background:var(--ion-color-light, #f4f5f8);box-shadow:none}.about-section--reviews val-action-card ::ng-deep .action-card__description{color:var(--ion-color-dark);opacity:.7}.about-social{display:flex;flex-wrap:wrap;gap:10px;padding-top:8px}.about-social .social-btn{--border-radius: 50%;--background: var(--ion-color-light, #f4f5f8);--color: var(--ion-color-dark);--padding-start: 0;--padding-end: 0;width:48px;height:48px;margin:0;transition:transform .15s ease}.about-social .social-btn:hover{--background: var(--ion-color-primary-tint, #8a4ce5);--color: #fff;transform:translateY(-2px)}.about-social .social-btn ion-icon{font-size:22px}.about-footer{display:flex;flex-direction:column;align-items:center;gap:4px;padding:24px 0;text-align:center}:host-context(body.dark) val-action-card ::ng-deep .action-card,:host-context(html.ion-palette-dark) val-action-card ::ng-deep .action-card,:host-context([data-theme=\"dark\"]) val-action-card ::ng-deep .action-card{background:#ffffff0a}:host-context(body.dark) .about-section--reviews val-action-card ::ng-deep .action-card:hover,:host-context(html.ion-palette-dark) .about-section--reviews val-action-card ::ng-deep .action-card:hover,:host-context([data-theme=\"dark\"]) .about-section--reviews val-action-card ::ng-deep .action-card:hover{background:#ffffff14}:host-context(body.dark) .about-social .social-btn,:host-context(html.ion-palette-dark) .about-social .social-btn,:host-context([data-theme=\"dark\"]) .about-social .social-btn{--background: rgba(255, 255, 255, .04)}\n"], dependencies: [{ kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: IonGrid, selector: "ion-grid", inputs: ["fixed"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: PillComponent, selector: "val-pill", inputs: ["preset", "props"], outputs: ["pillClick", "pillAction"] }, { kind: "component", type: TitleComponent, selector: "val-title", inputs: ["props"] }, { kind: "component", type: TextComponent, selector: "val-text", inputs: ["props"] }, { kind: "component", type: ActionCardComponent, selector: "val-action-card", inputs: ["props"], outputs: ["onClick"] }] }); }
332
+ `, isInline: true, styles: [":host{display:block}.about-grid{padding:16px 0;max-width:720px;margin:0 auto}.about-hero{display:flex;flex-direction:column;align-items:center;gap:8px;padding:24px 0 16px;text-align:center}.about-hero__logo{height:96px;width:auto;display:block}.about-hero__logo--var{width:96px;height:96px;background-position:center;background-repeat:no-repeat;background-size:contain}.version-row{display:flex;align-items:center;gap:6px;cursor:pointer;opacity:.85;transition:opacity .15s ease}.version-row:hover{opacity:1}.version-copy-icon{font-size:14px;color:var(--ion-color-medium)}.about-section{padding:16px 0 8px;display:flex;flex-direction:column;gap:8px}.about-actions{display:flex;flex-direction:column;gap:8px}.about-section--reviews val-action-card{display:block}.about-section--reviews val-action-card ::ng-deep .action-card{background:var(--ion-color-light, #f4f5f8);box-shadow:none}.about-section--reviews val-action-card ::ng-deep .action-card__description{color:var(--ion-color-dark);opacity:.7}.about-social{display:flex;flex-wrap:wrap;gap:10px;padding-top:8px}.about-social .social-btn{--border-radius: 50%;--background: var(--ion-color-light, #f4f5f8);--color: var(--ion-color-dark);--padding-start: 0;--padding-end: 0;width:48px;height:48px;margin:0;transition:transform .15s ease}.about-social .social-btn:hover{--background: var(--ion-color-primary-tint, #8a4ce5);--color: #fff;transform:translateY(-2px)}.about-social .social-btn ion-icon{font-size:22px}.about-footer{display:flex;flex-direction:column;align-items:center;gap:4px;padding:24px 0;text-align:center}:host-context(body.dark) val-action-card ::ng-deep .action-card,:host-context(html.ion-palette-dark) val-action-card ::ng-deep .action-card,:host-context([data-theme=\"dark\"]) val-action-card ::ng-deep .action-card{background:#ffffff0a}:host-context(body.dark) .about-section--reviews val-action-card ::ng-deep .action-card:hover,:host-context(html.ion-palette-dark) .about-section--reviews val-action-card ::ng-deep .action-card:hover,:host-context([data-theme=\"dark\"]) .about-section--reviews val-action-card ::ng-deep .action-card:hover{background:#ffffff14}:host-context(body.dark) .about-social .social-btn,:host-context(html.ion-palette-dark) .about-social .social-btn,:host-context([data-theme=\"dark\"]) .about-social .social-btn{--background: rgba(255, 255, 255, .04)}\n"], dependencies: [{ kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: IonGrid, selector: "ion-grid", inputs: ["fixed"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: PillComponent, selector: "val-pill", inputs: ["preset", "props"], outputs: ["pillClick", "pillAction"] }, { kind: "component", type: TitleComponent, selector: "val-title", inputs: ["props"] }, { kind: "component", type: TextComponent, selector: "val-text", inputs: ["props"] }, { kind: "component", type: ActionCardComponent, selector: "val-action-card", inputs: ["props"], outputs: ["onClick"] }] }); }
320
333
  }
321
334
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AboutViewComponent, decorators: [{
322
335
  type: Component,
@@ -324,7 +337,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
324
337
  <ion-grid class="about-grid">
325
338
  <!-- HERO: logo + name + version -->
326
339
  <div class="about-hero">
327
- <img class="about-hero__logo" [src]="logoSrc()" [alt]="brandName()" />
340
+ @if (logoVar()) {
341
+ <div
342
+ class="about-hero__logo about-hero__logo--var"
343
+ role="img"
344
+ [attr.aria-label]="brandName()"
345
+ [style.background-image]="'var(' + logoVar() + ')'"
346
+ ></div>
347
+ } @else {
348
+ <img class="about-hero__logo" [src]="logoSrc()" [alt]="brandName()" />
349
+ }
328
350
  <val-title
329
351
  [props]="{
330
352
  content: brandName(),
@@ -429,8 +451,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
429
451
  />
430
452
  </footer>
431
453
  </ion-grid>
432
- `, styles: [":host{display:block}.about-grid{padding:16px 0;max-width:720px;margin:0 auto}.about-hero{display:flex;flex-direction:column;align-items:center;gap:8px;padding:24px 0 16px;text-align:center}.about-hero__logo{height:96px;width:auto;display:block}.version-row{display:flex;align-items:center;gap:6px;cursor:pointer;opacity:.85;transition:opacity .15s ease}.version-row:hover{opacity:1}.version-copy-icon{font-size:14px;color:var(--ion-color-medium)}.about-section{padding:16px 0 8px;display:flex;flex-direction:column;gap:8px}.about-actions{display:flex;flex-direction:column;gap:8px}.about-section--reviews val-action-card{display:block}.about-section--reviews val-action-card ::ng-deep .action-card{background:var(--ion-color-light, #f4f5f8);box-shadow:none}.about-section--reviews val-action-card ::ng-deep .action-card__description{color:var(--ion-color-dark);opacity:.7}.about-social{display:flex;flex-wrap:wrap;gap:10px;padding-top:8px}.about-social .social-btn{--border-radius: 50%;--background: var(--ion-color-light, #f4f5f8);--color: var(--ion-color-dark);--padding-start: 0;--padding-end: 0;width:48px;height:48px;margin:0;transition:transform .15s ease}.about-social .social-btn:hover{--background: var(--ion-color-primary-tint, #8a4ce5);--color: #fff;transform:translateY(-2px)}.about-social .social-btn ion-icon{font-size:22px}.about-footer{display:flex;flex-direction:column;align-items:center;gap:4px;padding:24px 0;text-align:center}:host-context(body.dark) val-action-card ::ng-deep .action-card,:host-context(html.ion-palette-dark) val-action-card ::ng-deep .action-card,:host-context([data-theme=\"dark\"]) val-action-card ::ng-deep .action-card{background:#ffffff0a}:host-context(body.dark) .about-section--reviews val-action-card ::ng-deep .action-card:hover,:host-context(html.ion-palette-dark) .about-section--reviews val-action-card ::ng-deep .action-card:hover,:host-context([data-theme=\"dark\"]) .about-section--reviews val-action-card ::ng-deep .action-card:hover{background:#ffffff14}:host-context(body.dark) .about-social .social-btn,:host-context(html.ion-palette-dark) .about-social .social-btn,:host-context([data-theme=\"dark\"]) .about-social .social-btn{--background: rgba(255, 255, 255, .04)}\n"] }]
454
+ `, styles: [":host{display:block}.about-grid{padding:16px 0;max-width:720px;margin:0 auto}.about-hero{display:flex;flex-direction:column;align-items:center;gap:8px;padding:24px 0 16px;text-align:center}.about-hero__logo{height:96px;width:auto;display:block}.about-hero__logo--var{width:96px;height:96px;background-position:center;background-repeat:no-repeat;background-size:contain}.version-row{display:flex;align-items:center;gap:6px;cursor:pointer;opacity:.85;transition:opacity .15s ease}.version-row:hover{opacity:1}.version-copy-icon{font-size:14px;color:var(--ion-color-medium)}.about-section{padding:16px 0 8px;display:flex;flex-direction:column;gap:8px}.about-actions{display:flex;flex-direction:column;gap:8px}.about-section--reviews val-action-card{display:block}.about-section--reviews val-action-card ::ng-deep .action-card{background:var(--ion-color-light, #f4f5f8);box-shadow:none}.about-section--reviews val-action-card ::ng-deep .action-card__description{color:var(--ion-color-dark);opacity:.7}.about-social{display:flex;flex-wrap:wrap;gap:10px;padding-top:8px}.about-social .social-btn{--border-radius: 50%;--background: var(--ion-color-light, #f4f5f8);--color: var(--ion-color-dark);--padding-start: 0;--padding-end: 0;width:48px;height:48px;margin:0;transition:transform .15s ease}.about-social .social-btn:hover{--background: var(--ion-color-primary-tint, #8a4ce5);--color: #fff;transform:translateY(-2px)}.about-social .social-btn ion-icon{font-size:22px}.about-footer{display:flex;flex-direction:column;align-items:center;gap:4px;padding:24px 0;text-align:center}:host-context(body.dark) val-action-card ::ng-deep .action-card,:host-context(html.ion-palette-dark) val-action-card ::ng-deep .action-card,:host-context([data-theme=\"dark\"]) val-action-card ::ng-deep .action-card{background:#ffffff0a}:host-context(body.dark) .about-section--reviews val-action-card ::ng-deep .action-card:hover,:host-context(html.ion-palette-dark) .about-section--reviews val-action-card ::ng-deep .action-card:hover,:host-context([data-theme=\"dark\"]) .about-section--reviews val-action-card ::ng-deep .action-card:hover{background:#ffffff14}:host-context(body.dark) .about-social .social-btn,:host-context(html.ion-palette-dark) .about-social .social-btn,:host-context([data-theme=\"dark\"]) .about-social .social-btn{--background: rgba(255, 255, 255, .04)}\n"] }]
433
455
  }], ctorParameters: () => [], propDecorators: { config: [{
434
456
  type: Input
435
457
  }] } });
436
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJvdXQtdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL2Fib3V0LXZpZXcvYWJvdXQtdmlldy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDeEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNwQyxPQUFPLEVBQ0wseUJBQXlCLEVBQ3pCLFdBQVcsRUFDWCxpQkFBaUIsRUFDakIsWUFBWSxFQUNaLGFBQWEsRUFDYixZQUFZLEVBQ1osVUFBVSxFQUNWLFdBQVcsRUFDWCxXQUFXLEVBQ1gsa0JBQWtCLEVBQ2xCLFdBQVcsR0FDWixNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUV4RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDaEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRW5FLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDZEQUE2RCxDQUFDO0FBR3ZHLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDckUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saURBQWlELENB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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNkdUO3dEQStJUSxNQUFNO3NCQUFkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGNvbXB1dGVkLCBpbmplY3QsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBJb25CdXR0b24sIElvbkdyaWQsIElvbkljb24gfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IGFkZEljb25zIH0gZnJvbSAnaW9uaWNvbnMnO1xuaW1wb3J0IHtcbiAgY2hhdGJ1YmJsZUVsbGlwc2VzT3V0bGluZSxcbiAgY29weU91dGxpbmUsXG4gIGhlbHBDaXJjbGVPdXRsaW5lLFxuICBsb2dvRmFjZWJvb2ssXG4gIGxvZ29JbnN0YWdyYW0sXG4gIGxvZ29MaW5rZWRpbixcbiAgbG9nb1Rpa3RvayxcbiAgbG9nb1R3aXR0ZXIsXG4gIGxvZ29Zb3V0dWJlLFxuICBzaGFyZVNvY2lhbE91dGxpbmUsXG4gIHN0YXJPdXRsaW5lLFxufSBmcm9tICdpb25pY29ucy9pY29ucyc7XG5cbmltcG9ydCB7IFBpbGxDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvcGlsbC9waWxsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBY3Rpb25DYXJkQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL2FjdGlvbi1jYXJkL2FjdGlvbi1jYXJkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBY3Rpb25DYXJkTWV0YWRhdGEgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvYWN0aW9uLWNhcmQvdHlwZXMnO1xuaW1wb3J0IHsgVGV4dENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL3RleHQvdGV4dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGl0bGVDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy90aXRsZS90aXRsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGl0bGVNZXRhZGF0YSB9IGZyb20gJy4uLy4uL2F0b21zL3RpdGxlL3R5cGVzJztcbmltcG9ydCB7IENvbnRlbnRSZWFjdGlvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9jb250ZW50LXJlYWN0aW9uL2NvbnRlbnQtcmVhY3Rpb24uY29tcG9uZW50JztcbmltcG9ydCB7IENvbnRlbnRSZWFjdGlvbk1ldGFkYXRhIH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL2NvbnRlbnQtcmVhY3Rpb24vdHlwZXMnO1xuXG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2kxOG4nO1xuaW1wb3J0IHsgTW9kYWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbW9kYWwvbW9kYWwuc2VydmljZSc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL25hdmlnYXRpb24vbmF2aWdhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3RvYXN0LnNlcnZpY2UnO1xuXG5pbXBvcnQgeyBBYm91dEFjdGlvbiwgQWJvdXRWaWV3Q29uZmlnIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBBQk9VVF9WSUVXX0kxOE4gfSBmcm9tICcuL2Fib3V0LXZpZXcuaTE4bic7XG5cbmFkZEljb25zKHtcbiAgY29weU91dGxpbmUsXG4gIHN0YXJPdXRsaW5lLFxuICBjaGF0YnViYmxlRWxsaXBzZXNPdXRsaW5lLFxuICBzaGFyZVNvY2lhbE91dGxpbmUsXG4gIGhlbHBDaXJjbGVPdXRsaW5lLFxuICBsb2dvRmFjZWJvb2ssXG4gIGxvZ29JbnN0YWdyYW0sXG4gIGxvZ29MaW5rZWRpbixcbiAgbG9nb1R3aXR0ZXIsXG4gIGxvZ29Zb3V0dWJlLFxuICBsb2dvVGlrdG9rLFxufSk7XG5cbmNvbnN0IERFRkFVTFRfTkFNRVNQQUNFID0gJ1NldHRpbmdzLkFib3V0JztcbmNvbnN0IERFRkFVTFRfQlJBTkRfTkFNRSA9ICdWYWx0ZWNoJztcbmNvbnN0IERFRkFVTFRfTE9HT19TUkMgPSAnYXNzZXRzL2ltYWdlcy9tYWluLWljb24ucG5nJztcbmNvbnN0IERFRkFVTFRfUkFUSU5HX0VOVElUWV9JRCA9ICdleHBlcmllbmNlJztcblxuLyoqXG4gKiBgdmFsLWFib3V0LXZpZXdgIOKAlCB2aXN0YSBBYm91dCBmdWxsLWZlYXR1cmUgYXV0b2NvbnRlbmlkYSAob3JnYW5pc20pLlxuICogUHJvbW92aWRhIGRlc2RlIGBzaG93Y2FzZWAgYmFqbyBlbCBwcm9jZXNvIGRlIEFEUi0wMjEuIFJlw7puZTpcbiAqICAtICoqSEVSTyoqIOKAlCBsb2dvICsgbm9tYnJlIGRlIG1hcmNhICsgdGFnbGluZSArIHBpbGwgZGUgdmVyc2nDs24gKGNvcGlhYmxlKS5cbiAqICAtICoqRGVzY3JpcGNpw7NuKiog4oCUIHTDrXR1bG8gKyBjdWVycG8uXG4gKiAgLSAqKkFjY2lvbmVzKiog4oCUIGFjdGlvbi1jYXJkIGRlIHJhdGluZyBidWlsdC1pbiAoYWJyZSBgdmFsLWNvbnRlbnQtcmVhY3Rpb25gXG4gKiAgICBESVJFQ1RBTUVOVEUgdsOtYSBgTW9kYWxTZXJ2aWNlYCwgc2luIHdyYXBwZXIgbG9jYWwg4oCUIGRlY2lzacOzbiBDVE8pICsgbGFzXG4gKiAgICBhY2Npb25lcyBnZW7DqXJpY2FzIHF1ZSBlbCBjb25zdW1lciBhcG9ydGUgcG9yIGBjb25maWcuYWN0aW9uc2AuXG4gKiAgLSAqKlJlZGVzKiog4oCUIGxpbmtzIHNvY2lhbGVzIChgY29uZmlnLnNvY2lhbExpbmtzYCk7IHNlY2Npw7NuIG9jdWx0YSBzaSB2YWPDrWEuXG4gKiAgLSAqKkZvb3RlcioqIOKAlCBjb3B5cmlnaHQgY29uIGVsIGHDsW8gYWN0dWFsLlxuICpcbiAqIExvIGFwcC1zcGVjaWZpYyAobG9nbywgbm9tYnJlLCB2ZXJzacOzbiwgcmVkZXMsIGFjY2lvbmVzIHNoYXJlL2ZhcSkgdmlhamEgY29tb1xuICogREFUQSBkZSBjb25maWcg4oCUIE5PIGNvbW8gc2xvdHMgKEFEUi0wMjEpLiBMYSB2ZXJzacOzbiBsYSBwYXNhIGVsIGNvbnN1bWVyXG4gKiAoYGNvbmZpZy52ZXJzaW9uYCA9IHN1IGBBUFBfVkVSU0lPTmApOyBsYSBsaWIgTk8gaW1wb3J0YSBlbCBgdmVyc2lvbi50c2AgZGUgbGFcbiAqIGFwcC4gU2kgbm8gc2UgcGFzYSB2ZXJzacOzbiwgZWwgcGlsbCBzZSBvY3VsdGEuXG4gKlxuICogTk8gcmVuZGVyaXphIGlvbi1jb250ZW50IOKAlCB2aXZlIGRlbnRybyBkZSB2YWwtcGFnZS13cmFwcGVyLiBgQWN0aXZhdGVkUm91dGVgXG4gKiBzZSBpbnllY3RhIGB7IG9wdGlvbmFsOiB0cnVlIH1gIHNvbG8gcGFyYSBsZWVyIGVsIHJvdXRlIGRhdGEgZGUgY29uZmlnLlxuICpcbiAqIEF1dG8tcmVnaXN0cmEgc3VzIGRlZmF1bHRzIGkxOG4gKGVzL2VuKSBlbiBlbCBjb25zdHJ1Y3RvciBzaSBlbCBjb25zdW1lciBub1xuICogcHJvdmV5w7MgZWwgbmFtZXNwYWNlIGNvbmZpZ3VyYWRvIChkZWZhdWx0IGBTZXR0aW5ncy5BYm91dGApLlxuICpcbiAqIEdPVENIQSBpMThuIENvbnRlbnRSZWFjdGlvbjogYHZhbC1jb250ZW50LXJlYWN0aW9uYCBleGlnZSBzdSBuYW1lc3BhY2VcbiAqIGBDb250ZW50UmVhY3Rpb25gIHJlZ2lzdHJhZG8gZG9uZGUgc2UgdXNlIChrZXkgZmFsdGFudGUgZW4gYmluZGluZyArIENEID1cbiAqIG5hdmVnYWRvciBjb25nZWxhZG8gZW4gZGV2KS4gYENvbnRlbnRSZWFjdGlvbkNvbXBvbmVudGAgc2UgYXV0by1yZWdpc3RyYSBlc2VcbiAqIG5hbWVzcGFjZSBlbiBTVSBjb25zdHJ1Y3RvciwgeSBjb21vIHNlIGFicmUgdsOtYSBgTW9kYWxTZXJ2aWNlYCBlc2UgY29uc3RydWN0b3JcbiAqIGNvcnJlIGFudGVzIGRlIHF1ZSBzdSB0ZW1wbGF0ZSBiaW5kZSDigJQgcXVlZGEgY3ViaWVydG8uIElndWFsIGxvIGltcG9ydGFtb3NcbiAqIGNvbW8gZGVwZW5kZW5jaWEgZXhwbMOtY2l0YSBkZSBlc3RhIHZpc3RhIHBhcmEgcXVlIGxhIGdhcmFudMOtYSBzZWEgbG9jYWwuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1hYm91dC12aWV3JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0lvbkJ1dHRvbiwgSW9uR3JpZCwgSW9uSWNvbiwgUGlsbENvbXBvbmVudCwgVGl0bGVDb21wb25lbnQsIFRleHRDb21wb25lbnQsIEFjdGlvbkNhcmRDb21wb25lbnRdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxpb24tZ3JpZCBjbGFzcz1cImFib3V0LWdyaWRcIj5cbiAgICAgIDwhLS0gSEVSTzogbG9nbyArIG5hbWUgKyB2ZXJzaW9uIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cImFib3V0LWhlcm9cIj5cbiAgICAgICAgPGltZyBjbGFzcz1cImFib3V0LWhlcm9fX2xvZ29cIiBbc3JjXT1cImxvZ29TcmMoKVwiIFthbHRdPVwiYnJhbmROYW1lKClcIiAvPlxuICAgICAgICA8dmFsLXRpdGxlXG4gICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgIGNvbnRlbnQ6IGJyYW5kTmFtZSgpLFxuICAgICAgICAgICAgc2l6ZTogJ3hsYXJnZScsXG4gICAgICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICAgICAgYm9sZDogdHJ1ZSxcbiAgICAgICAgICB9XCJcbiAgICAgICAgLz5cbiAgICAgICAgPHZhbC10ZXh0XG4gICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgIGNvbnRlbnQ6IHR0KCd0YWdsaW5lJyksXG4gICAgICAgICAgICBzaXplOiAnbWVkaXVtJyxcbiAgICAgICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgICAgICBib2xkOiBmYWxzZSxcbiAgICAgICAgICB9XCJcbiAgICAgICAgLz5cbiAgICAgICAgQGlmICh2ZXJzaW9uKCkpIHtcbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cInZlcnNpb24tcm93XCJcbiAgICAgICAgICAgIChjbGljayk9XCJjb3B5VmVyc2lvbigpXCJcbiAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJ0dCgndmVyc2lvbkxhYmVsJykgKyAnICcgKyB2ZXJzaW9uKClcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDx2YWwtcGlsbFxuICAgICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICAgIGxhYmVsOiB0dCgndmVyc2lvbkxhYmVsJykgKyAnICcgKyB2ZXJzaW9uKCksXG4gICAgICAgICAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgICAgICAgICB3ZWlnaHQ6ICdib2xkJyxcbiAgICAgICAgICAgICAgICBzaXplOiAnc21hbGwnLFxuICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImNvcHktb3V0bGluZVwiIGNsYXNzPVwidmVyc2lvbi1jb3B5LWljb25cIiAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBERVNDUklQVElPTiAtLT5cbiAgICAgIDxzZWN0aW9uIGNsYXNzPVwiYWJvdXQtc2VjdGlvblwiPlxuICAgICAgICA8dmFsLXRpdGxlIFtwcm9wc109XCJzZWN0aW9uVGl0bGUoJ2Rlc2NUaXRsZScpXCIgLz5cbiAgICAgICAgPHZhbC10ZXh0XG4gICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgIGNvbnRlbnQ6IHR0KCdkZXNjQm9keScpLFxuICAgICAgICAgICAgc2l6ZTogJ21lZGl1bScsXG4gICAgICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICAgICAgYm9sZDogZmFsc2UsXG4gICAgICAgICAgfVwiXG4gICAgICAgIC8+XG4gICAgICA8L3NlY3Rpb24+XG5cbiAgICAgIDwhLS0gQUNUSU9OUyDigJQgcmF0aW5nIGJ1aWx0LWluICsgYWNjaW9uZXMgZGVsIGNvbnN1bWVyLiAtLT5cbiAgICAgIEBpZiAoc2hvd1JhdGluZygpIHx8IGFjdGlvbnMoKS5sZW5ndGggPiAwKSB7XG4gICAgICAgIDxzZWN0aW9uIGNsYXNzPVwiYWJvdXQtc2VjdGlvbiBhYm91dC1zZWN0aW9uLS1yZXZpZXdzXCI+XG4gICAgICAgICAgPHZhbC10aXRsZSBbcHJvcHNdPVwic2VjdGlvblRpdGxlKCdhY3Rpb25zVGl0bGUnKVwiIC8+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImFib3V0LWFjdGlvbnNcIj5cbiAgICAgICAgICAgIEBpZiAoc2hvd1JhdGluZygpKSB7XG4gICAgICAgICAgICAgIDx2YWwtYWN0aW9uLWNhcmQgW3Byb3BzXT1cInJhdGVBY3Rpb25DYXJkKClcIiAob25DbGljayk9XCJvcGVuUmF0aW5nKClcIiAvPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGZvciAoYWN0aW9uIG9mIGFjdGlvbnMoKTsgdHJhY2sgYWN0aW9uLmxhYmVsKSB7XG4gICAgICAgICAgICAgIDx2YWwtYWN0aW9uLWNhcmQgW3Byb3BzXT1cImV4dHJhQWN0aW9uQ2FyZChhY3Rpb24pXCIgKG9uQ2xpY2spPVwiYWN0aW9uLm9uQ2xpY2soKVwiIC8+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvc2VjdGlvbj5cbiAgICAgIH1cblxuICAgICAgPCEtLSBTT0NJQUwg4oCUIHBlbsO6bHRpbW8sIGp1c3RvIGFudGVzIGRlbCBmb290ZXIgZGUgZGVyZWNob3MuIC0tPlxuICAgICAgQGlmIChzb2NpYWxMaW5rcygpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJhYm91dC1zZWN0aW9uXCI+XG4gICAgICAgICAgPHZhbC10aXRsZSBbcHJvcHNdPVwic2VjdGlvblRpdGxlKCdzb2NpYWxUaXRsZScpXCIgLz5cbiAgICAgICAgICA8dmFsLXRleHRcbiAgICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICAgIGNvbnRlbnQ6IHR0KCdzb2NpYWxEZXNjJyksXG4gICAgICAgICAgICAgIHNpemU6ICdtZWRpdW0nLFxuICAgICAgICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICAgICAgICBib2xkOiBmYWxzZSxcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImFib3V0LXNvY2lhbFwiPlxuICAgICAgICAgICAgQGZvciAocyBvZiBzb2NpYWxMaW5rcygpOyB0cmFjayBzLnVybCkge1xuICAgICAgICAgICAgICA8aW9uLWJ1dHRvblxuICAgICAgICAgICAgICAgIGZpbGw9XCJjbGVhclwiXG4gICAgICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNvY2lhbC1idG5cIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwicy5sYWJlbFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5Vcmwocy51cmwpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxpb24taWNvbiBbbmFtZV09XCJzLmljb25cIiBzbG90PVwiaWNvbi1vbmx5XCIgLz5cbiAgICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3NlY3Rpb24+XG4gICAgICB9XG5cbiAgICAgIDwhLS0gRk9PVEVSIC0tPlxuICAgICAgPGZvb3RlciBjbGFzcz1cImFib3V0LWZvb3RlclwiPlxuICAgICAgICA8dmFsLXRleHRcbiAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgY29udGVudDogY29weXJpZ2h0KCksXG4gICAgICAgICAgICBzaXplOiAnc21hbGwnLFxuICAgICAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgICAgIGJvbGQ6IGZhbHNlLFxuICAgICAgICAgIH1cIlxuICAgICAgICAvPlxuICAgICAgPC9mb290ZXI+XG4gICAgPC9pb24tZ3JpZD5cbiAgYCxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgOmhvc3Qge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIH1cblxuICAgICAgLmFib3V0LWdyaWQge1xuICAgICAgICBwYWRkaW5nOiAxNnB4IDA7XG4gICAgICAgIG1heC13aWR0aDogNzIwcHg7XG4gICAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgICAgfVxuXG4gICAgICAuYWJvdXQtaGVybyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogOHB4O1xuICAgICAgICBwYWRkaW5nOiAyNHB4IDAgMTZweDtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgfVxuXG4gICAgICAuYWJvdXQtaGVyb19fbG9nbyB7XG4gICAgICAgIGhlaWdodDogOTZweDtcbiAgICAgICAgd2lkdGg6IGF1dG87XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgfVxuXG4gICAgICAudmVyc2lvbi1yb3cge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDZweDtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICBvcGFjaXR5OiAwLjg1O1xuICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMTVzIGVhc2U7XG4gICAgICB9XG5cbiAgICAgIC52ZXJzaW9uLXJvdzpob3ZlciB7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICB9XG5cbiAgICAgIC52ZXJzaW9uLWNvcHktaWNvbiB7XG4gICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1tZWRpdW0pO1xuICAgICAgfVxuXG4gICAgICAuYWJvdXQtc2VjdGlvbiB7XG4gICAgICAgIHBhZGRpbmc6IDE2cHggMCA4cHg7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogOHB4O1xuICAgICAgfVxuXG4gICAgICAuYWJvdXQtYWN0aW9ucyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogOHB4O1xuICAgICAgfVxuXG4gICAgICAuYWJvdXQtc2VjdGlvbi0tcmV2aWV3cyB2YWwtYWN0aW9uLWNhcmQge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIH1cblxuICAgICAgLmFib3V0LXNlY3Rpb24tLXJldmlld3MgdmFsLWFjdGlvbi1jYXJkIDo6bmctZGVlcCAuYWN0aW9uLWNhcmQge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3ItbGlnaHQsICNmNGY1ZjgpO1xuICAgICAgICBib3gtc2hhZG93OiBub25lO1xuICAgICAgfVxuXG4gICAgICAuYWJvdXQtc2VjdGlvbi0tcmV2aWV3cyB2YWwtYWN0aW9uLWNhcmQgOjpuZy1kZWVwIC5hY3Rpb24tY2FyZF9fZGVzY3JpcHRpb24ge1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhcmspO1xuICAgICAgICBvcGFjaXR5OiAwLjc7XG4gICAgICB9XG5cbiAgICAgIC5hYm91dC1zb2NpYWwge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgICAgIGdhcDogMTBweDtcbiAgICAgICAgcGFkZGluZy10b3A6IDhweDtcbiAgICAgIH1cblxuICAgICAgLmFib3V0LXNvY2lhbCAuc29jaWFsLWJ0biB7XG4gICAgICAgIC0tYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgICAtLWJhY2tncm91bmQ6IHZhcigtLWlvbi1jb2xvci1saWdodCwgI2Y0ZjVmOCk7XG4gICAgICAgIC0tY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYXJrKTtcbiAgICAgICAgLS1wYWRkaW5nLXN0YXJ0OiAwO1xuICAgICAgICAtLXBhZGRpbmctZW5kOiAwO1xuICAgICAgICB3aWR0aDogNDhweDtcbiAgICAgICAgaGVpZ2h0OiA0OHB4O1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjE1cyBlYXNlO1xuICAgICAgfVxuXG4gICAgICAuYWJvdXQtc29jaWFsIC5zb2NpYWwtYnRuOmhvdmVyIHtcbiAgICAgICAgLS1iYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3ItcHJpbWFyeS10aW50LCAjOGE0Y2U1KTtcbiAgICAgICAgLS1jb2xvcjogI2ZmZjtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpO1xuICAgICAgfVxuXG4gICAgICAuYWJvdXQtc29jaWFsIC5zb2NpYWwtYnRuIGlvbi1pY29uIHtcbiAgICAgICAgZm9udC1zaXplOiAyMnB4O1xuICAgICAgfVxuXG4gICAgICAuYWJvdXQtZm9vdGVyIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiA0cHg7XG4gICAgICAgIHBhZGRpbmc6IDI0cHggMDtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgfVxuXG4gICAgICA6aG9zdC1jb250ZXh0KGJvZHkuZGFyaykgdmFsLWFjdGlvbi1jYXJkIDo6bmctZGVlcCAuYWN0aW9uLWNhcmQsXG4gICAgICA6aG9zdC1jb250ZXh0KGh0bWwuaW9uLXBhbGV0dGUtZGFyaykgdmFsLWFjdGlvbi1jYXJkIDo6bmctZGVlcCAuYWN0aW9uLWNhcmQsXG4gICAgICA6aG9zdC1jb250ZXh0KFtkYXRhLXRoZW1lPSdkYXJrJ10pIHZhbC1hY3Rpb24tY2FyZCA6Om5nLWRlZXAgLmFjdGlvbi1jYXJkIHtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA0KTtcbiAgICAgIH1cblxuICAgICAgOmhvc3QtY29udGV4dChib2R5LmRhcmspIC5hYm91dC1zZWN0aW9uLS1yZXZpZXdzIHZhbC1hY3Rpb24tY2FyZCA6Om5nLWRlZXAgLmFjdGlvbi1jYXJkOmhvdmVyLFxuICAgICAgOmhvc3QtY29udGV4dChodG1sLmlvbi1wYWxldHRlLWRhcmspIC5hYm91dC1zZWN0aW9uLS1yZXZpZXdzIHZhbC1hY3Rpb24tY2FyZCA6Om5nLWRlZXAgLmFjdGlvbi1jYXJkOmhvdmVyLFxuICAgICAgOmhvc3QtY29udGV4dChbZGF0YS10aGVtZT0nZGFyayddKSAuYWJvdXQtc2VjdGlvbi0tcmV2aWV3cyB2YWwtYWN0aW9uLWNhcmQgOjpuZy1kZWVwIC5hY3Rpb24tY2FyZDpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOCk7XG4gICAgICB9XG5cbiAgICAgIDpob3N0LWNvbnRleHQoYm9keS5kYXJrKSAuYWJvdXQtc29jaWFsIC5zb2NpYWwtYnRuLFxuICAgICAgOmhvc3QtY29udGV4dChodG1sLmlvbi1wYWxldHRlLWRhcmspIC5hYm91dC1zb2NpYWwgLnNvY2lhbC1idG4sXG4gICAgICA6aG9zdC1jb250ZXh0KFtkYXRhLXRoZW1lPSdkYXJrJ10pIC5hYm91dC1zb2NpYWwgLnNvY2lhbC1idG4ge1xuICAgICAgICAtLWJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNCk7XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQWJvdXRWaWV3Q29tcG9uZW50IHtcbiAgcHJpdmF0ZSBuYXYgPSBpbmplY3QoTmF2aWdhdGlvblNlcnZpY2UpO1xuICBwcml2YXRlIGkxOG4gPSBpbmplY3QoSTE4blNlcnZpY2UpO1xuICBwcml2YXRlIG1vZGFsU2VydmljZSA9IGluamVjdChNb2RhbFNlcnZpY2UpO1xuICBwcml2YXRlIHRvYXN0ID0gaW5qZWN0KFRvYXN0U2VydmljZSk7XG4gIHByaXZhdGUgcm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG5cbiAgLyoqXG4gICAqIENvbmZpZyB2w61hIEBJbnB1dCAob2JqZWN0LWZpcnN0KS4gU2kgbm8gc2UgcGFzYSwgc2UgY2FlIGFsIHJvdXRlIGRhdGFcbiAgICogYGFib3V0Q29uZmlnYCAocG9ibGFkbyBwb3IgYHByb3ZpZGVWYWx0ZWNoQWJvdXRSb3V0ZXNgKS4gYHJlc29sdmVkQ29uZmlnYFxuICAgKiBtZXJnZWEgY29uIGxvcyBkZWZhdWx0cyDigJQgYEBJbnB1dGAgZ2FuYSBzb2JyZSByb3V0ZSBkYXRhLlxuICAgKi9cbiAgQElucHV0KCkgY29uZmlnPzogQWJvdXRWaWV3Q29uZmlnO1xuXG4gIHJlYWRvbmx5IHJlc29sdmVkQ29uZmlnID0gY29tcHV0ZWQ8UmVxdWlyZWQ8T21pdDxBYm91dFZpZXdDb25maWcsICdvblJhdGVkJz4+ICYgUGljazxBYm91dFZpZXdDb25maWcsICdvblJhdGVkJz4+KFxuICAgICgpID0+IHtcbiAgICAgIGNvbnN0IGZyb21Sb3V0ZSA9ICh0aGlzLnJvdXRlPy5zbmFwc2hvdC5kYXRhWydhYm91dENvbmZpZyddID8/IHt9KSBhcyBBYm91dFZpZXdDb25maWc7XG4gICAgICBjb25zdCBtZXJnZWQ6IEFib3V0Vmlld0NvbmZpZyA9IHsgLi4uZnJvbVJvdXRlLCAuLi4odGhpcy5jb25maWcgPz8ge30pIH07XG4gICAgICByZXR1cm4ge1xuICAgICAgICBicmFuZDoge1xuICAgICAgICAgIG5hbWU6IG1lcmdlZC5icmFuZD8ubmFtZSA/PyBERUZBVUxUX0JSQU5EX05BTUUsXG4gICAgICAgICAgbG9nb1NyYzogbWVyZ2VkLmJyYW5kPy5sb2dvU3JjID8/IERFRkFVTFRfTE9HT19TUkMsXG4gICAgICAgIH0sXG4gICAgICAgIHZlcnNpb246IG1lcmdlZC52ZXJzaW9uID8/ICcnLFxuICAgICAgICBzb2NpYWxMaW5rczogbWVyZ2VkLnNvY2lhbExpbmtzID8/IFtdLFxuICAgICAgICBzaG93UmF0aW5nOiBtZXJnZWQuc2hvd1JhdGluZyA/PyB0cnVlLFxuICAgICAgICByYXRpbmdFbnRpdHlJZDogbWVyZ2VkLnJhdGluZ0VudGl0eUlkID8/IERFRkFVTFRfUkFUSU5HX0VOVElUWV9JRCxcbiAgICAgICAgYWN0aW9uczogbWVyZ2VkLmFjdGlvbnMgPz8gW10sXG4gICAgICAgIGkxOG5OYW1lc3BhY2U6IG1lcmdlZC5pMThuTmFtZXNwYWNlID8/IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICAgICBvblJhdGVkOiBtZXJnZWQub25SYXRlZCxcbiAgICAgIH07XG4gICAgfVxuICApO1xuXG4gIC8qKiBOYW1lc3BhY2UgaTE4biByZXN1ZWx0byAoY2FwdHVyYWRvIHBhcmEgbGxhbWFkYXMgbm8tcmVhY3RpdmFzKS4gKi9cbiAgcHJpdmF0ZSBnZXQgbnMoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvbHZlZENvbmZpZygpLmkxOG5OYW1lc3BhY2U7XG4gIH1cblxuICByZWFkb25seSBicmFuZE5hbWUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnJlc29sdmVkQ29uZmlnKCkuYnJhbmQubmFtZSEpO1xuICByZWFkb25seSBsb2dvU3JjID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5yZXNvbHZlZENvbmZpZygpLmJyYW5kLmxvZ29TcmMhKTtcbiAgcmVhZG9ubHkgdmVyc2lvbiA9IGNvbXB1dGVkKCgpID0+IHRoaXMucmVzb2x2ZWRDb25maWcoKS52ZXJzaW9uKTtcbiAgcmVhZG9ubHkgc29jaWFsTGlua3MgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnJlc29sdmVkQ29uZmlnKCkuc29jaWFsTGlua3MpO1xuICByZWFkb25seSBzaG93UmF0aW5nID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5yZXNvbHZlZENvbmZpZygpLnNob3dSYXRpbmcpO1xuICByZWFkb25seSBhY3Rpb25zID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5yZXNvbHZlZENvbmZpZygpLmFjdGlvbnMpO1xuXG4gIC8qKiBDb3B5cmlnaHQgZGVsIGZvb3RlciDigJQgYcOxbyBhY3R1YWwgaW50ZXJwb2xhZG8gZW4gYGNvcHlyaWdodFRleHRgLiAqL1xuICByZWFkb25seSBjb3B5cmlnaHQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgdGhpcy5pMThuLmxhbmcoKTtcbiAgICBjb25zdCB5ZWFyID0gU3RyaW5nKG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKSk7XG4gICAgcmV0dXJuIHRoaXMudHQoJ2NvcHlyaWdodFRleHQnKS5yZXBsYWNlKCd7eWVhcn0nLCB5ZWFyKTtcbiAgfSk7XG5cbiAgLyoqIFRpdGxlIG1ldGFkYXRhIHBhcmEgc2VjY2lvbmVzIOKAlCBib2xkICsgc2l6ZSBzbWFsbC4gKi9cbiAgcmVhZG9ubHkgcmF0ZUFjdGlvbkNhcmQgPSBjb21wdXRlZDxBY3Rpb25DYXJkTWV0YWRhdGE+KCgpID0+IHtcbiAgICB0aGlzLmkxOG4ubGFuZygpO1xuICAgIHJldHVybiB7XG4gICAgICBpY29uOiB7IGlvbmljb246ICdzdGFyLW91dGxpbmUnLCBjb2xvcjogJ3ByaW1hcnknIH0sXG4gICAgICB0aXRsZTogdGhpcy50dCgncmF0ZVRpdGxlJyksXG4gICAgICBkZXNjcmlwdGlvbjogdGhpcy50dCgncmF0ZURlc2MnKSxcbiAgICAgIHNpemU6ICdtZWRpdW0nLFxuICAgICAgYm9yZGVyZWQ6IGZhbHNlLFxuICAgICAgc2hhZG93ZWQ6IGZhbHNlLFxuICAgIH07XG4gIH0pO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGNvbnN0IG5zID0gdGhpcy5ucztcbiAgICBpZiAoIXRoaXMuaTE4bi5oYXNOYW1lc3BhY2UobnMpKSB7XG4gICAgICB0aGlzLmkxOG4ucmVnaXN0ZXJDb250ZW50KG5zLCBBQk9VVF9WSUVXX0kxOE4pO1xuICAgIH1cbiAgICB0aGlzLm5hdi5zZXRCYWNrSGVhZGVyKCdwYWdlVGl0bGUnLCBucywgeyB3aXRoTWVudTogdHJ1ZSB9KTtcbiAgfVxuXG4gIC8qKiBIZWxwZXIgaTE4biBib3VuZCBhbCBuYW1lc3BhY2UgcmVzdWVsdG8uIFJlYWN0aXZvIHbDrWEgYGxhbmcoKWAuICovXG4gIHByb3RlY3RlZCB0dChrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgdGhpcy5pMThuLmxhbmcoKTtcbiAgICByZXR1cm4gdGhpcy5pMThuLnQoa2V5LCB0aGlzLm5zKTtcbiAgfVxuXG4gIC8qKiBUaXRsZSBtZXRhZGF0YSBwYXJhIHNlY2Npb25lcyDigJQgYm9sZCArIHNpemUgc21hbGwuICovXG4gIHByb3RlY3RlZCBzZWN0aW9uVGl0bGUoa2V5OiBzdHJpbmcpOiBUaXRsZU1ldGFkYXRhIHtcbiAgICB0aGlzLmkxOG4ubGFuZygpO1xuICAgIHJldHVybiB7XG4gICAgICBjb250ZW50OiB0aGlzLnR0KGtleSksXG4gICAgICBzaXplOiAnc21hbGwnLFxuICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgIGJvbGQ6IHRydWUsXG4gICAgfTtcbiAgfVxuXG4gIC8qKiBBY3Rpb25DYXJkTWV0YWRhdGEgcGFyYSB1bmEgYWNjacOzbiBnZW7DqXJpY2EgZGVsIGNvbnN1bWVyLiAqL1xuICBwcm90ZWN0ZWQgZXh0cmFBY3Rpb25DYXJkKGFjdGlvbjogQWJvdXRBY3Rpb24pOiBBY3Rpb25DYXJkTWV0YWRhdGEge1xuICAgIHJldHVybiB7XG4gICAgICBpY29uOiB7IGlvbmljb246IGFjdGlvbi5pY29uID8/ICdjaGF0YnViYmxlLWVsbGlwc2VzLW91dGxpbmUnLCBjb2xvcjogJ3ByaW1hcnknIH0sXG4gICAgICB0aXRsZTogYWN0aW9uLmxhYmVsLFxuICAgICAgZGVzY3JpcHRpb246IGFjdGlvbi5kZXNjcmlwdGlvbixcbiAgICAgIHNpemU6ICdtZWRpdW0nLFxuICAgICAgYm9yZGVyZWQ6IGZhbHNlLFxuICAgICAgc2hhZG93ZWQ6IGZhbHNlLFxuICAgIH07XG4gIH1cblxuICAvKiogQ29waWEgbGEgdmVyc2nDs24gYWwgcG9ydGFwYXBlbGVzICsgdG9hc3QgKGNvbG9yIGRhcmspLiAqL1xuICBhc3luYyBjb3B5VmVyc2lvbigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB2ID0gdGhpcy52ZXJzaW9uKCk7XG4gICAgaWYgKCF2KSByZXR1cm47XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KHYpO1xuICAgICAgdGhpcy50b2FzdC5zaG93KHtcbiAgICAgICAgbWVzc2FnZTogdGhpcy50dCgndmVyc2lvbkNvcGllZCcpLnJlcGxhY2UoJ3t2fScsIHYpLFxuICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICBkdXJhdGlvbjogMTUwMCxcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gY2xpcGJvYXJkIG5vIGRpc3BvbmlibGUg4oCUIHNpbGVuY2lvc29cbiAgICB9XG4gIH1cblxuICAvKiogQWJyZSB1bmEgVVJMIGV4dGVybmEgZW4gbnVldmEgdGFiLiBgbWFpbHRvOmAgcXVlZGEgZW4gbGEgbWlzbWEgdGFiLiAqL1xuICBvcGVuVXJsKHVybDogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHVybC5zdGFydHNXaXRoKCdtYWlsdG86JykpIHtcbiAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gdXJsO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB3aW5kb3cub3Blbih1cmwsICdfYmxhbmsnLCAnbm9vcGVuZXIsbm9yZWZlcnJlcicpO1xuICB9XG5cbiAgLyoqXG4gICAqIFwiQ2FsaWZpY2FyIGxhIGFwcFwiIOKAlCBhYnJlIGB2YWwtY29udGVudC1yZWFjdGlvbmAgRElSRUNUQU1FTlRFIGNvbW8gc2hlZXRcbiAgICogbW9kYWwgKHNpbiB3cmFwcGVyIGxvY2FsIOKAlCBkZWNpc2nDs24gQ1RPKS4gRWwgY29tcG9uZW50ZSBwZXJzaXN0ZSBsYSByZWFjY2nDs25cbiAgICogY29udHJhIGVsIGJhY2tlbmQgZGUgZmVlZGJhY2sgeSBtdWVzdHJhIHN1IHByb3BpbyBlc3RhZG8gZGUgXCJncmFjaWFzXCI7IGVsXG4gICAqIHNoZWV0IHNlIGNpZXJyYSBhcnJhc3RyYW5kbyAoYnJlYWtwb2ludCAwKS4gRWwgbmFtZXNwYWNlIGkxOG5cbiAgICogYENvbnRlbnRSZWFjdGlvbmAgbG8gYXV0by1yZWdpc3RyYSBgQ29udGVudFJlYWN0aW9uQ29tcG9uZW50YCBlbiBzdVxuICAgKiBjb25zdHJ1Y3RvciwgcXVlIGNvcnJlIGFsIGNyZWFyIGVsIG1vZGFsIOKAlCBzaW4gcmllc2dvIGRlIGtleSBmYWx0YW50ZS5cbiAgICpcbiAgICogU2hlZXQgKGJvdHRvbSBzaGVldCk6IGVsIGNvbnRlbmlkbyBzY3JvbGxlYSBkZW50cm8geSBlbCBib3TDs24gXCJFbnZpYXJcIiBxdWVkYVxuICAgKiBzaWVtcHJlIGFsY2FuemFibGUsIHRhbWJpw6luIGVuIHZpZXdwb3J0cyBjaGljb3MuXG4gICAqL1xuICBhc3luYyBvcGVuUmF0aW5nKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHJlYWN0aW9uUHJvcHM6IFBhcnRpYWw8Q29udGVudFJlYWN0aW9uTWV0YWRhdGE+ID0ge1xuICAgICAgLy8gZW50aXR5VHlwZSBcImFwcFwiIGRpc3Rpbmd1ZSBlc3RhIHJlYWNjacOzbiBkZSBsYXMgZGUgYXJ0w61jdWxvcy9GQVFzLlxuICAgICAgZW50aXR5UmVmOiB7IGVudGl0eVR5cGU6ICdhcHAnLCBlbnRpdHlJZDogdGhpcy5yZXNvbHZlZENvbmZpZygpLnJhdGluZ0VudGl0eUlkIH0sXG4gICAgICBxdWVzdGlvbjogdGhpcy50dCgncmF0ZVF1ZXN0aW9uJyksXG4gICAgICBjb21tZW50UGxhY2Vob2xkZXI6IHRoaXMudHQoJ3JhdGVDb21tZW50JyksXG4gICAgICB0aGFua1lvdU1lc3NhZ2U6IHRoaXMudHQoJ3JhdGVUaGFua3MnKSxcbiAgICAgIHNob3dDb21tZW50OiB0cnVlLFxuICAgICAgc2hvd1RoYW5rWW91OiB0cnVlLFxuICAgICAgLy8gTW9kYWwgb25lLXNob3Q6IE5PIGJsb3F1ZWFyIGVsIHJlbmRlciBjb24gZWwgY2hlY2sgZGUgcmF0aW5nIHByZXZpby5cbiAgICAgIHNraXBJbml0aWFsQ2hlY2s6IHRydWUsXG4gICAgICBlbW9qaXM6IFsn8J+YlScsICfwn5mCJywgJ/CfmI0nXSxcbiAgICAgIGVtb2ppTGFiZWxzOiBbdGhpcy50dCgncmF0ZUJhZCcpLCB0aGlzLnR0KCdyYXRlTWlkJyksIHRoaXMudHQoJ3JhdGVHb29kJyldLFxuICAgIH07XG4gICAgYXdhaXQgdGhpcy5tb2RhbFNlcnZpY2Uub3BlbjxDb250ZW50UmVhY3Rpb25Db21wb25lbnQ+KHtcbiAgICAgIGNvbXBvbmVudDogQ29udGVudFJlYWN0aW9uQ29tcG9uZW50LFxuICAgICAgY29tcG9uZW50UHJvcHM6IHsgcHJvcHM6IHJlYWN0aW9uUHJvcHMgfSxcbiAgICAgIGJyZWFrcG9pbnRzOiB7XG4gICAgICAgIGluaXRpYWxCcmVha3BvaW50OiAwLjksXG4gICAgICAgIGJyZWFrcG9pbnRzOiBbMCwgMC45LCAxXSxcbiAgICAgICAgc2hvd0hhbmRsZTogdHJ1ZSxcbiAgICAgICAgaGFuZGxlQmVoYXZpb3I6ICdjeWNsZScsXG4gICAgICB9LFxuICAgIH0pO1xuICAgIHRoaXMucmVzb2x2ZWRDb25maWcoKS5vblJhdGVkPy4oKTtcbiAgfVxufVxuIl19
458
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJvdXQtdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL2Fib3V0LXZpZXcvYWJvdXQtdmlldy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDeEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNwQyxPQUFPLEVBQ0wseUJBQXlCLEVBQ3pCLFdBQVcsRUFDWCxpQkFBaUIsRUFDakIsWUFBWSxFQUNaLGFBQWEsRUFDYixZQUFZLEVBQ1osVUFBVSxFQUNWLFdBQVcsRUFDWCxXQUFXLEVBQ1gsa0JBQWtCLEVBQ2xCLFdBQVcsR0FDWixNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUV4RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDaEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRW5FLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDZEQUE2RCxDQUFDO0FBR3ZHLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDckUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saURBQWlELENB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SkFBRSxhQUFhLHdIQUFFLGNBQWMseUVBQUUsYUFBYSx3RUFBRSxtQkFBbUI7OzRGQWtRN0Ysa0JBQWtCO2tCQXJROUIsU0FBUzsrQkFDRSxnQkFBZ0IsY0FDZCxJQUFJLFdBQ1AsQ0FBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSxtQkFBbUIsQ0FBQyxZQUMvRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNIVDt3REF1SlEsTUFBTTtzQkFBZCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBjb21wdXRlZCwgaW5qZWN0LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgSW9uQnV0dG9uLCBJb25HcmlkLCBJb25JY29uIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBhZGRJY29ucyB9IGZyb20gJ2lvbmljb25zJztcbmltcG9ydCB7XG4gIGNoYXRidWJibGVFbGxpcHNlc091dGxpbmUsXG4gIGNvcHlPdXRsaW5lLFxuICBoZWxwQ2lyY2xlT3V0bGluZSxcbiAgbG9nb0ZhY2Vib29rLFxuICBsb2dvSW5zdGFncmFtLFxuICBsb2dvTGlua2VkaW4sXG4gIGxvZ29UaWt0b2ssXG4gIGxvZ29Ud2l0dGVyLFxuICBsb2dvWW91dHViZSxcbiAgc2hhcmVTb2NpYWxPdXRsaW5lLFxuICBzdGFyT3V0bGluZSxcbn0gZnJvbSAnaW9uaWNvbnMvaWNvbnMnO1xuXG5pbXBvcnQgeyBQaWxsQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL3BpbGwvcGlsbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQWN0aW9uQ2FyZENvbXBvbmVudCB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9hY3Rpb24tY2FyZC9hY3Rpb24tY2FyZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQWN0aW9uQ2FyZE1ldGFkYXRhIH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL2FjdGlvbi1jYXJkL3R5cGVzJztcbmltcG9ydCB7IFRleHRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy90ZXh0L3RleHQuY29tcG9uZW50JztcbmltcG9ydCB7IFRpdGxlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvdGl0bGUvdGl0bGUuY29tcG9uZW50JztcbmltcG9ydCB7IFRpdGxlTWV0YWRhdGEgfSBmcm9tICcuLi8uLi9hdG9tcy90aXRsZS90eXBlcyc7XG5pbXBvcnQgeyBDb250ZW50UmVhY3Rpb25Db21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvY29udGVudC1yZWFjdGlvbi9jb250ZW50LXJlYWN0aW9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb250ZW50UmVhY3Rpb25NZXRhZGF0YSB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9jb250ZW50LXJlYWN0aW9uL3R5cGVzJztcblxuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9pMThuJztcbmltcG9ydCB7IE1vZGFsU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21vZGFsL21vZGFsLnNlcnZpY2UnO1xuaW1wb3J0IHsgTmF2aWdhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9uYXZpZ2F0aW9uL25hdmlnYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy90b2FzdC5zZXJ2aWNlJztcblxuaW1wb3J0IHsgQWJvdXRBY3Rpb24sIEFib3V0Vmlld0NvbmZpZyB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgQUJPVVRfVklFV19JMThOIH0gZnJvbSAnLi9hYm91dC12aWV3LmkxOG4nO1xuXG5hZGRJY29ucyh7XG4gIGNvcHlPdXRsaW5lLFxuICBzdGFyT3V0bGluZSxcbiAgY2hhdGJ1YmJsZUVsbGlwc2VzT3V0bGluZSxcbiAgc2hhcmVTb2NpYWxPdXRsaW5lLFxuICBoZWxwQ2lyY2xlT3V0bGluZSxcbiAgbG9nb0ZhY2Vib29rLFxuICBsb2dvSW5zdGFncmFtLFxuICBsb2dvTGlua2VkaW4sXG4gIGxvZ29Ud2l0dGVyLFxuICBsb2dvWW91dHViZSxcbiAgbG9nb1Rpa3Rvayxcbn0pO1xuXG5jb25zdCBERUZBVUxUX05BTUVTUEFDRSA9ICdTZXR0aW5ncy5BYm91dCc7XG5jb25zdCBERUZBVUxUX0JSQU5EX05BTUUgPSAnVmFsdGVjaCc7XG5jb25zdCBERUZBVUxUX0xPR09fU1JDID0gJ2Fzc2V0cy9pbWFnZXMvbWFpbi1pY29uLnBuZyc7XG5jb25zdCBERUZBVUxUX1JBVElOR19FTlRJVFlfSUQgPSAnZXhwZXJpZW5jZSc7XG5cbi8qKlxuICogYHZhbC1hYm91dC12aWV3YCDigJQgdmlzdGEgQWJvdXQgZnVsbC1mZWF0dXJlIGF1dG9jb250ZW5pZGEgKG9yZ2FuaXNtKS5cbiAqIFByb21vdmlkYSBkZXNkZSBgc2hvd2Nhc2VgIGJham8gZWwgcHJvY2VzbyBkZSBBRFItMDIxLiBSZcO6bmU6XG4gKiAgLSAqKkhFUk8qKiDigJQgbG9nbyArIG5vbWJyZSBkZSBtYXJjYSArIHRhZ2xpbmUgKyBwaWxsIGRlIHZlcnNpw7NuIChjb3BpYWJsZSkuXG4gKiAgLSAqKkRlc2NyaXBjacOzbioqIOKAlCB0w610dWxvICsgY3VlcnBvLlxuICogIC0gKipBY2Npb25lcyoqIOKAlCBhY3Rpb24tY2FyZCBkZSByYXRpbmcgYnVpbHQtaW4gKGFicmUgYHZhbC1jb250ZW50LXJlYWN0aW9uYFxuICogICAgRElSRUNUQU1FTlRFIHbDrWEgYE1vZGFsU2VydmljZWAsIHNpbiB3cmFwcGVyIGxvY2FsIOKAlCBkZWNpc2nDs24gQ1RPKSArIGxhc1xuICogICAgYWNjaW9uZXMgZ2Vuw6lyaWNhcyBxdWUgZWwgY29uc3VtZXIgYXBvcnRlIHBvciBgY29uZmlnLmFjdGlvbnNgLlxuICogIC0gKipSZWRlcyoqIOKAlCBsaW5rcyBzb2NpYWxlcyAoYGNvbmZpZy5zb2NpYWxMaW5rc2ApOyBzZWNjacOzbiBvY3VsdGEgc2kgdmFjw61hLlxuICogIC0gKipGb290ZXIqKiDigJQgY29weXJpZ2h0IGNvbiBlbCBhw7FvIGFjdHVhbC5cbiAqXG4gKiBMbyBhcHAtc3BlY2lmaWMgKGxvZ28sIG5vbWJyZSwgdmVyc2nDs24sIHJlZGVzLCBhY2Npb25lcyBzaGFyZS9mYXEpIHZpYWphIGNvbW9cbiAqIERBVEEgZGUgY29uZmlnIOKAlCBOTyBjb21vIHNsb3RzIChBRFItMDIxKS4gTGEgdmVyc2nDs24gbGEgcGFzYSBlbCBjb25zdW1lclxuICogKGBjb25maWcudmVyc2lvbmAgPSBzdSBgQVBQX1ZFUlNJT05gKTsgbGEgbGliIE5PIGltcG9ydGEgZWwgYHZlcnNpb24udHNgIGRlIGxhXG4gKiBhcHAuIFNpIG5vIHNlIHBhc2EgdmVyc2nDs24sIGVsIHBpbGwgc2Ugb2N1bHRhLlxuICpcbiAqIE5PIHJlbmRlcml6YSBpb24tY29udGVudCDigJQgdml2ZSBkZW50cm8gZGUgdmFsLXBhZ2Utd3JhcHBlci4gYEFjdGl2YXRlZFJvdXRlYFxuICogc2UgaW55ZWN0YSBgeyBvcHRpb25hbDogdHJ1ZSB9YCBzb2xvIHBhcmEgbGVlciBlbCByb3V0ZSBkYXRhIGRlIGNvbmZpZy5cbiAqXG4gKiBBdXRvLXJlZ2lzdHJhIHN1cyBkZWZhdWx0cyBpMThuIChlcy9lbikgZW4gZWwgY29uc3RydWN0b3Igc2kgZWwgY29uc3VtZXIgbm9cbiAqIHByb3ZlecOzIGVsIG5hbWVzcGFjZSBjb25maWd1cmFkbyAoZGVmYXVsdCBgU2V0dGluZ3MuQWJvdXRgKS5cbiAqXG4gKiBHT1RDSEEgaTE4biBDb250ZW50UmVhY3Rpb246IGB2YWwtY29udGVudC1yZWFjdGlvbmAgZXhpZ2Ugc3UgbmFtZXNwYWNlXG4gKiBgQ29udGVudFJlYWN0aW9uYCByZWdpc3RyYWRvIGRvbmRlIHNlIHVzZSAoa2V5IGZhbHRhbnRlIGVuIGJpbmRpbmcgKyBDRCA9XG4gKiBuYXZlZ2Fkb3IgY29uZ2VsYWRvIGVuIGRldikuIGBDb250ZW50UmVhY3Rpb25Db21wb25lbnRgIHNlIGF1dG8tcmVnaXN0cmEgZXNlXG4gKiBuYW1lc3BhY2UgZW4gU1UgY29uc3RydWN0b3IsIHkgY29tbyBzZSBhYnJlIHbDrWEgYE1vZGFsU2VydmljZWAgZXNlIGNvbnN0cnVjdG9yXG4gKiBjb3JyZSBhbnRlcyBkZSBxdWUgc3UgdGVtcGxhdGUgYmluZGUg4oCUIHF1ZWRhIGN1YmllcnRvLiBJZ3VhbCBsbyBpbXBvcnRhbW9zXG4gKiBjb21vIGRlcGVuZGVuY2lhIGV4cGzDrWNpdGEgZGUgZXN0YSB2aXN0YSBwYXJhIHF1ZSBsYSBnYXJhbnTDrWEgc2VhIGxvY2FsLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtYWJvdXQtdmlldycsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtJb25CdXR0b24sIElvbkdyaWQsIElvbkljb24sIFBpbGxDb21wb25lbnQsIFRpdGxlQ29tcG9uZW50LCBUZXh0Q29tcG9uZW50LCBBY3Rpb25DYXJkQ29tcG9uZW50XSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8aW9uLWdyaWQgY2xhc3M9XCJhYm91dC1ncmlkXCI+XG4gICAgICA8IS0tIEhFUk86IGxvZ28gKyBuYW1lICsgdmVyc2lvbiAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJhYm91dC1oZXJvXCI+XG4gICAgICAgIEBpZiAobG9nb1ZhcigpKSB7XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJhYm91dC1oZXJvX19sb2dvIGFib3V0LWhlcm9fX2xvZ28tLXZhclwiXG4gICAgICAgICAgICByb2xlPVwiaW1nXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYnJhbmROYW1lKClcIlxuICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtaW1hZ2VdPVwiJ3ZhcignICsgbG9nb1ZhcigpICsgJyknXCJcbiAgICAgICAgICA+PC9kaXY+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgIDxpbWcgY2xhc3M9XCJhYm91dC1oZXJvX19sb2dvXCIgW3NyY109XCJsb2dvU3JjKClcIiBbYWx0XT1cImJyYW5kTmFtZSgpXCIgLz5cbiAgICAgICAgfVxuICAgICAgICA8dmFsLXRpdGxlXG4gICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgIGNvbnRlbnQ6IGJyYW5kTmFtZSgpLFxuICAgICAgICAgICAgc2l6ZTogJ3hsYXJnZScsXG4gICAgICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICAgICAgYm9sZDogdHJ1ZSxcbiAgICAgICAgICB9XCJcbiAgICAgICAgLz5cbiAgICAgICAgPHZhbC10ZXh0XG4gICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgIGNvbnRlbnQ6IHR0KCd0YWdsaW5lJyksXG4gICAgICAgICAgICBzaXplOiAnbWVkaXVtJyxcbiAgICAgICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgICAgICBib2xkOiBmYWxzZSxcbiAgICAgICAgICB9XCJcbiAgICAgICAgLz5cbiAgICAgICAgQGlmICh2ZXJzaW9uKCkpIHtcbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cInZlcnNpb24tcm93XCJcbiAgICAgICAgICAgIChjbGljayk9XCJjb3B5VmVyc2lvbigpXCJcbiAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJ0dCgndmVyc2lvbkxhYmVsJykgKyAnICcgKyB2ZXJzaW9uKClcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDx2YWwtcGlsbFxuICAgICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICAgIGxhYmVsOiB0dCgndmVyc2lvbkxhYmVsJykgKyAnICcgKyB2ZXJzaW9uKCksXG4gICAgICAgICAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgICAgICAgICB3ZWlnaHQ6ICdib2xkJyxcbiAgICAgICAgICAgICAgICBzaXplOiAnc21hbGwnLFxuICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImNvcHktb3V0bGluZVwiIGNsYXNzPVwidmVyc2lvbi1jb3B5LWljb25cIiAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBERVNDUklQVElPTiAtLT5cbiAgICAgIDxzZWN0aW9uIGNsYXNzPVwiYWJvdXQtc2VjdGlvblwiPlxuICAgICAgICA8dmFsLXRpdGxlIFtwcm9wc109XCJzZWN0aW9uVGl0bGUoJ2Rlc2NUaXRsZScpXCIgLz5cbiAgICAgICAgPHZhbC10ZXh0XG4gICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgIGNvbnRlbnQ6IHR0KCdkZXNjQm9keScpLFxuICAgICAgICAgICAgc2l6ZTogJ21lZGl1bScsXG4gICAgICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICAgICAgYm9sZDogZmFsc2UsXG4gICAgICAgICAgfVwiXG4gICAgICAgIC8+XG4gICAgICA8L3NlY3Rpb24+XG5cbiAgICAgIDwhLS0gQUNUSU9OUyDigJQgcmF0aW5nIGJ1aWx0LWluICsgYWNjaW9uZXMgZGVsIGNvbnN1bWVyLiAtLT5cbiAgICAgIEBpZiAoc2hvd1JhdGluZygpIHx8IGFjdGlvbnMoKS5sZW5ndGggPiAwKSB7XG4gICAgICAgIDxzZWN0aW9uIGNsYXNzPVwiYWJvdXQtc2VjdGlvbiBhYm91dC1zZWN0aW9uLS1yZXZpZXdzXCI+XG4gICAgICAgICAgPHZhbC10aXRsZSBbcHJvcHNdPVwic2VjdGlvblRpdGxlKCdhY3Rpb25zVGl0bGUnKVwiIC8+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImFib3V0LWFjdGlvbnNcIj5cbiAgICAgICAgICAgIEBpZiAoc2hvd1JhdGluZygpKSB7XG4gICAgICAgICAgICAgIDx2YWwtYWN0aW9uLWNhcmQgW3Byb3BzXT1cInJhdGVBY3Rpb25DYXJkKClcIiAob25DbGljayk9XCJvcGVuUmF0aW5nKClcIiAvPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGZvciAoYWN0aW9uIG9mIGFjdGlvbnMoKTsgdHJhY2sgYWN0aW9uLmxhYmVsKSB7XG4gICAgICAgICAgICAgIDx2YWwtYWN0aW9uLWNhcmQgW3Byb3BzXT1cImV4dHJhQWN0aW9uQ2FyZChhY3Rpb24pXCIgKG9uQ2xpY2spPVwiYWN0aW9uLm9uQ2xpY2soKVwiIC8+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvc2VjdGlvbj5cbiAgICAgIH1cblxuICAgICAgPCEtLSBTT0NJQUwg4oCUIHBlbsO6bHRpbW8sIGp1c3RvIGFudGVzIGRlbCBmb290ZXIgZGUgZGVyZWNob3MuIC0tPlxuICAgICAgQGlmIChzb2NpYWxMaW5rcygpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJhYm91dC1zZWN0aW9uXCI+XG4gICAgICAgICAgPHZhbC10aXRsZSBbcHJvcHNdPVwic2VjdGlvblRpdGxlKCdzb2NpYWxUaXRsZScpXCIgLz5cbiAgICAgICAgICA8dmFsLXRleHRcbiAgICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICAgIGNvbnRlbnQ6IHR0KCdzb2NpYWxEZXNjJyksXG4gICAgICAgICAgICAgIHNpemU6ICdtZWRpdW0nLFxuICAgICAgICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICAgICAgICBib2xkOiBmYWxzZSxcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImFib3V0LXNvY2lhbFwiPlxuICAgICAgICAgICAgQGZvciAocyBvZiBzb2NpYWxMaW5rcygpOyB0cmFjayBzLnVybCkge1xuICAgICAgICAgICAgICA8aW9uLWJ1dHRvblxuICAgICAgICAgICAgICAgIGZpbGw9XCJjbGVhclwiXG4gICAgICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNvY2lhbC1idG5cIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwicy5sYWJlbFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5Vcmwocy51cmwpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxpb24taWNvbiBbbmFtZV09XCJzLmljb25cIiBzbG90PVwiaWNvbi1vbmx5XCIgLz5cbiAgICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3NlY3Rpb24+XG4gICAgICB9XG5cbiAgICAgIDwhLS0gRk9PVEVSIC0tPlxuICAgICAgPGZvb3RlciBjbGFzcz1cImFib3V0LWZvb3RlclwiPlxuICAgICAgICA8dmFsLXRleHRcbiAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgY29udGVudDogY29weXJpZ2h0KCksXG4gICAgICAgICAgICBzaXplOiAnc21hbGwnLFxuICAgICAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgICAgIGJvbGQ6IGZhbHNlLFxuICAgICAgICAgIH1cIlxuICAgICAgICAvPlxuICAgICAgPC9mb290ZXI+XG4gICAgPC9pb24tZ3JpZD5cbiAgYCxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgOmhvc3Qge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIH1cblxuICAgICAgLmFib3V0LWdyaWQge1xuICAgICAgICBwYWRkaW5nOiAxNnB4IDA7XG4gICAgICAgIG1heC13aWR0aDogNzIwcHg7XG4gICAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgICAgfVxuXG4gICAgICAuYWJvdXQtaGVybyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogOHB4O1xuICAgICAgICBwYWRkaW5nOiAyNHB4IDAgMTZweDtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgfVxuXG4gICAgICAuYWJvdXQtaGVyb19fbG9nbyB7XG4gICAgICAgIGhlaWdodDogOTZweDtcbiAgICAgICAgd2lkdGg6IGF1dG87XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgfVxuXG4gICAgICAuYWJvdXQtaGVyb19fbG9nby0tdmFyIHtcbiAgICAgICAgd2lkdGg6IDk2cHg7XG4gICAgICAgIGhlaWdodDogOTZweDtcbiAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyO1xuICAgICAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgICAgICBiYWNrZ3JvdW5kLXNpemU6IGNvbnRhaW47XG4gICAgICB9XG5cbiAgICAgIC52ZXJzaW9uLXJvdyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogNnB4O1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIG9wYWNpdHk6IDAuODU7XG4gICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4xNXMgZWFzZTtcbiAgICAgIH1cblxuICAgICAgLnZlcnNpb24tcm93OmhvdmVyIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgIH1cblxuICAgICAgLnZlcnNpb24tY29weS1pY29uIHtcbiAgICAgICAgZm9udC1zaXplOiAxNHB4O1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLW1lZGl1bSk7XG4gICAgICB9XG5cbiAgICAgIC5hYm91dC1zZWN0aW9uIHtcbiAgICAgICAgcGFkZGluZzogMTZweCAwIDhweDtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgZ2FwOiA4cHg7XG4gICAgICB9XG5cbiAgICAgIC5hYm91dC1hY3Rpb25zIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgZ2FwOiA4cHg7XG4gICAgICB9XG5cbiAgICAgIC5hYm91dC1zZWN0aW9uLS1yZXZpZXdzIHZhbC1hY3Rpb24tY2FyZCB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgfVxuXG4gICAgICAuYWJvdXQtc2VjdGlvbi0tcmV2aWV3cyB2YWwtYWN0aW9uLWNhcmQgOjpuZy1kZWVwIC5hY3Rpb24tY2FyZCB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWlvbi1jb2xvci1saWdodCwgI2Y0ZjVmOCk7XG4gICAgICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgICB9XG5cbiAgICAgIC5hYm91dC1zZWN0aW9uLS1yZXZpZXdzIHZhbC1hY3Rpb24tY2FyZCA6Om5nLWRlZXAgLmFjdGlvbi1jYXJkX19kZXNjcmlwdGlvbiB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFyayk7XG4gICAgICAgIG9wYWNpdHk6IDAuNztcbiAgICAgIH1cblxuICAgICAgLmFib3V0LXNvY2lhbCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAgICAgZ2FwOiAxMHB4O1xuICAgICAgICBwYWRkaW5nLXRvcDogOHB4O1xuICAgICAgfVxuXG4gICAgICAuYWJvdXQtc29jaWFsIC5zb2NpYWwtYnRuIHtcbiAgICAgICAgLS1ib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICAgIC0tYmFja2dyb3VuZDogdmFyKC0taW9uLWNvbG9yLWxpZ2h0LCAjZjRmNWY4KTtcbiAgICAgICAgLS1jb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhcmspO1xuICAgICAgICAtLXBhZGRpbmctc3RhcnQ6IDA7XG4gICAgICAgIC0tcGFkZGluZy1lbmQ6IDA7XG4gICAgICAgIHdpZHRoOiA0OHB4O1xuICAgICAgICBoZWlnaHQ6IDQ4cHg7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMTVzIGVhc2U7XG4gICAgICB9XG5cbiAgICAgIC5hYm91dC1zb2NpYWwgLnNvY2lhbC1idG46aG92ZXIge1xuICAgICAgICAtLWJhY2tncm91bmQ6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5LXRpbnQsICM4YTRjZTUpO1xuICAgICAgICAtLWNvbG9yOiAjZmZmO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7XG4gICAgICB9XG5cbiAgICAgIC5hYm91dC1zb2NpYWwgLnNvY2lhbC1idG4gaW9uLWljb24ge1xuICAgICAgICBmb250LXNpemU6IDIycHg7XG4gICAgICB9XG5cbiAgICAgIC5hYm91dC1mb290ZXIge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDRweDtcbiAgICAgICAgcGFkZGluZzogMjRweCAwO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICB9XG5cbiAgICAgIDpob3N0LWNvbnRleHQoYm9keS5kYXJrKSB2YWwtYWN0aW9uLWNhcmQgOjpuZy1kZWVwIC5hY3Rpb24tY2FyZCxcbiAgICAgIDpob3N0LWNvbnRleHQoaHRtbC5pb24tcGFsZXR0ZS1kYXJrKSB2YWwtYWN0aW9uLWNhcmQgOjpuZy1kZWVwIC5hY3Rpb24tY2FyZCxcbiAgICAgIDpob3N0LWNvbnRleHQoW2RhdGEtdGhlbWU9J2RhcmsnXSkgdmFsLWFjdGlvbi1jYXJkIDo6bmctZGVlcCAuYWN0aW9uLWNhcmQge1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDQpO1xuICAgICAgfVxuXG4gICAgICA6aG9zdC1jb250ZXh0KGJvZHkuZGFyaykgLmFib3V0LXNlY3Rpb24tLXJldmlld3MgdmFsLWFjdGlvbi1jYXJkIDo6bmctZGVlcCAuYWN0aW9uLWNhcmQ6aG92ZXIsXG4gICAgICA6aG9zdC1jb250ZXh0KGh0bWwuaW9uLXBhbGV0dGUtZGFyaykgLmFib3V0LXNlY3Rpb24tLXJldmlld3MgdmFsLWFjdGlvbi1jYXJkIDo6bmctZGVlcCAuYWN0aW9uLWNhcmQ6aG92ZXIsXG4gICAgICA6aG9zdC1jb250ZXh0KFtkYXRhLXRoZW1lPSdkYXJrJ10pIC5hYm91dC1zZWN0aW9uLS1yZXZpZXdzIHZhbC1hY3Rpb24tY2FyZCA6Om5nLWRlZXAgLmFjdGlvbi1jYXJkOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA4KTtcbiAgICAgIH1cblxuICAgICAgOmhvc3QtY29udGV4dChib2R5LmRhcmspIC5hYm91dC1zb2NpYWwgLnNvY2lhbC1idG4sXG4gICAgICA6aG9zdC1jb250ZXh0KGh0bWwuaW9uLXBhbGV0dGUtZGFyaykgLmFib3V0LXNvY2lhbCAuc29jaWFsLWJ0bixcbiAgICAgIDpob3N0LWNvbnRleHQoW2RhdGEtdGhlbWU9J2RhcmsnXSkgLmFib3V0LXNvY2lhbCAuc29jaWFsLWJ0biB7XG4gICAgICAgIC0tYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA0KTtcbiAgICAgIH1cbiAgICBgLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBBYm91dFZpZXdDb21wb25lbnQge1xuICBwcml2YXRlIG5hdiA9IGluamVjdChOYXZpZ2F0aW9uU2VydmljZSk7XG4gIHByaXZhdGUgaTE4biA9IGluamVjdChJMThuU2VydmljZSk7XG4gIHByaXZhdGUgbW9kYWxTZXJ2aWNlID0gaW5qZWN0KE1vZGFsU2VydmljZSk7XG4gIHByaXZhdGUgdG9hc3QgPSBpbmplY3QoVG9hc3RTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcblxuICAvKipcbiAgICogQ29uZmlnIHbDrWEgQElucHV0IChvYmplY3QtZmlyc3QpLiBTaSBubyBzZSBwYXNhLCBzZSBjYWUgYWwgcm91dGUgZGF0YVxuICAgKiBgYWJvdXRDb25maWdgIChwb2JsYWRvIHBvciBgcHJvdmlkZVZhbHRlY2hBYm91dFJvdXRlc2ApLiBgcmVzb2x2ZWRDb25maWdgXG4gICAqIG1lcmdlYSBjb24gbG9zIGRlZmF1bHRzIOKAlCBgQElucHV0YCBnYW5hIHNvYnJlIHJvdXRlIGRhdGEuXG4gICAqL1xuICBASW5wdXQoKSBjb25maWc/OiBBYm91dFZpZXdDb25maWc7XG5cbiAgcmVhZG9ubHkgcmVzb2x2ZWRDb25maWcgPSBjb21wdXRlZDxSZXF1aXJlZDxPbWl0PEFib3V0Vmlld0NvbmZpZywgJ29uUmF0ZWQnPj4gJiBQaWNrPEFib3V0Vmlld0NvbmZpZywgJ29uUmF0ZWQnPj4oXG4gICAgKCkgPT4ge1xuICAgICAgY29uc3QgZnJvbVJvdXRlID0gKHRoaXMucm91dGU/LnNuYXBzaG90LmRhdGFbJ2Fib3V0Q29uZmlnJ10gPz8ge30pIGFzIEFib3V0Vmlld0NvbmZpZztcbiAgICAgIGNvbnN0IG1lcmdlZDogQWJvdXRWaWV3Q29uZmlnID0geyAuLi5mcm9tUm91dGUsIC4uLih0aGlzLmNvbmZpZyA/PyB7fSkgfTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGJyYW5kOiB7XG4gICAgICAgICAgbmFtZTogbWVyZ2VkLmJyYW5kPy5uYW1lID8/IERFRkFVTFRfQlJBTkRfTkFNRSxcbiAgICAgICAgICBsb2dvU3JjOiBtZXJnZWQuYnJhbmQ/LmxvZ29TcmMgPz8gREVGQVVMVF9MT0dPX1NSQyxcbiAgICAgICAgICBsb2dvVmFyOiBtZXJnZWQuYnJhbmQ/LmxvZ29WYXIgPz8gJycsXG4gICAgICAgIH0sXG4gICAgICAgIHZlcnNpb246IG1lcmdlZC52ZXJzaW9uID8/ICcnLFxuICAgICAgICBzb2NpYWxMaW5rczogbWVyZ2VkLnNvY2lhbExpbmtzID8/IFtdLFxuICAgICAgICBzaG93UmF0aW5nOiBtZXJnZWQuc2hvd1JhdGluZyA/PyB0cnVlLFxuICAgICAgICByYXRpbmdFbnRpdHlJZDogbWVyZ2VkLnJhdGluZ0VudGl0eUlkID8/IERFRkFVTFRfUkFUSU5HX0VOVElUWV9JRCxcbiAgICAgICAgYWN0aW9uczogbWVyZ2VkLmFjdGlvbnMgPz8gW10sXG4gICAgICAgIGkxOG5OYW1lc3BhY2U6IG1lcmdlZC5pMThuTmFtZXNwYWNlID8/IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICAgICBvblJhdGVkOiBtZXJnZWQub25SYXRlZCxcbiAgICAgIH07XG4gICAgfVxuICApO1xuXG4gIC8qKiBOYW1lc3BhY2UgaTE4biByZXN1ZWx0byAoY2FwdHVyYWRvIHBhcmEgbGxhbWFkYXMgbm8tcmVhY3RpdmFzKS4gKi9cbiAgcHJpdmF0ZSBnZXQgbnMoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvbHZlZENvbmZpZygpLmkxOG5OYW1lc3BhY2U7XG4gIH1cblxuICByZWFkb25seSBicmFuZE5hbWUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnJlc29sdmVkQ29uZmlnKCkuYnJhbmQubmFtZSEpO1xuICByZWFkb25seSBsb2dvU3JjID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5yZXNvbHZlZENvbmZpZygpLmJyYW5kLmxvZ29TcmMhKTtcbiAgcmVhZG9ubHkgbG9nb1ZhciA9IGNvbXB1dGVkKCgpID0+IHRoaXMucmVzb2x2ZWRDb25maWcoKS5icmFuZC5sb2dvVmFyID8/ICcnKTtcbiAgcmVhZG9ubHkgdmVyc2lvbiA9IGNvbXB1dGVkKCgpID0+IHRoaXMucmVzb2x2ZWRDb25maWcoKS52ZXJzaW9uKTtcbiAgcmVhZG9ubHkgc29jaWFsTGlua3MgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnJlc29sdmVkQ29uZmlnKCkuc29jaWFsTGlua3MpO1xuICByZWFkb25seSBzaG93UmF0aW5nID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5yZXNvbHZlZENvbmZpZygpLnNob3dSYXRpbmcpO1xuICByZWFkb25seSBhY3Rpb25zID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5yZXNvbHZlZENvbmZpZygpLmFjdGlvbnMpO1xuXG4gIC8qKiBDb3B5cmlnaHQgZGVsIGZvb3RlciDigJQgYcOxbyBhY3R1YWwgaW50ZXJwb2xhZG8gZW4gYGNvcHlyaWdodFRleHRgLiAqL1xuICByZWFkb25seSBjb3B5cmlnaHQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgdGhpcy5pMThuLmxhbmcoKTtcbiAgICBjb25zdCB5ZWFyID0gU3RyaW5nKG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKSk7XG4gICAgcmV0dXJuIHRoaXMudHQoJ2NvcHlyaWdodFRleHQnKS5yZXBsYWNlKCd7eWVhcn0nLCB5ZWFyKTtcbiAgfSk7XG5cbiAgLyoqIFRpdGxlIG1ldGFkYXRhIHBhcmEgc2VjY2lvbmVzIOKAlCBib2xkICsgc2l6ZSBzbWFsbC4gKi9cbiAgcmVhZG9ubHkgcmF0ZUFjdGlvbkNhcmQgPSBjb21wdXRlZDxBY3Rpb25DYXJkTWV0YWRhdGE+KCgpID0+IHtcbiAgICB0aGlzLmkxOG4ubGFuZygpO1xuICAgIHJldHVybiB7XG4gICAgICBpY29uOiB7IGlvbmljb246ICdzdGFyLW91dGxpbmUnLCBjb2xvcjogJ3ByaW1hcnknIH0sXG4gICAgICB0aXRsZTogdGhpcy50dCgncmF0ZVRpdGxlJyksXG4gICAgICBkZXNjcmlwdGlvbjogdGhpcy50dCgncmF0ZURlc2MnKSxcbiAgICAgIHNpemU6ICdtZWRpdW0nLFxuICAgICAgYm9yZGVyZWQ6IGZhbHNlLFxuICAgICAgc2hhZG93ZWQ6IGZhbHNlLFxuICAgIH07XG4gIH0pO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGNvbnN0IG5zID0gdGhpcy5ucztcbiAgICBpZiAoIXRoaXMuaTE4bi5oYXNOYW1lc3BhY2UobnMpKSB7XG4gICAgICB0aGlzLmkxOG4ucmVnaXN0ZXJDb250ZW50KG5zLCBBQk9VVF9WSUVXX0kxOE4pO1xuICAgIH1cbiAgICB0aGlzLm5hdi5zZXRCYWNrSGVhZGVyKCdwYWdlVGl0bGUnLCBucywgeyB3aXRoTWVudTogdHJ1ZSB9KTtcbiAgfVxuXG4gIC8qKiBIZWxwZXIgaTE4biBib3VuZCBhbCBuYW1lc3BhY2UgcmVzdWVsdG8uIFJlYWN0aXZvIHbDrWEgYGxhbmcoKWAuICovXG4gIHByb3RlY3RlZCB0dChrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgdGhpcy5pMThuLmxhbmcoKTtcbiAgICByZXR1cm4gdGhpcy5pMThuLnQoa2V5LCB0aGlzLm5zKTtcbiAgfVxuXG4gIC8qKiBUaXRsZSBtZXRhZGF0YSBwYXJhIHNlY2Npb25lcyDigJQgYm9sZCArIHNpemUgc21hbGwuICovXG4gIHByb3RlY3RlZCBzZWN0aW9uVGl0bGUoa2V5OiBzdHJpbmcpOiBUaXRsZU1ldGFkYXRhIHtcbiAgICB0aGlzLmkxOG4ubGFuZygpO1xuICAgIHJldHVybiB7XG4gICAgICBjb250ZW50OiB0aGlzLnR0KGtleSksXG4gICAgICBzaXplOiAnc21hbGwnLFxuICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgIGJvbGQ6IHRydWUsXG4gICAgfTtcbiAgfVxuXG4gIC8qKiBBY3Rpb25DYXJkTWV0YWRhdGEgcGFyYSB1bmEgYWNjacOzbiBnZW7DqXJpY2EgZGVsIGNvbnN1bWVyLiAqL1xuICBwcm90ZWN0ZWQgZXh0cmFBY3Rpb25DYXJkKGFjdGlvbjogQWJvdXRBY3Rpb24pOiBBY3Rpb25DYXJkTWV0YWRhdGEge1xuICAgIHJldHVybiB7XG4gICAgICBpY29uOiB7IGlvbmljb246IGFjdGlvbi5pY29uID8/ICdjaGF0YnViYmxlLWVsbGlwc2VzLW91dGxpbmUnLCBjb2xvcjogJ3ByaW1hcnknIH0sXG4gICAgICB0aXRsZTogYWN0aW9uLmxhYmVsLFxuICAgICAgZGVzY3JpcHRpb246IGFjdGlvbi5kZXNjcmlwdGlvbixcbiAgICAgIHNpemU6ICdtZWRpdW0nLFxuICAgICAgYm9yZGVyZWQ6IGZhbHNlLFxuICAgICAgc2hhZG93ZWQ6IGZhbHNlLFxuICAgIH07XG4gIH1cblxuICAvKiogQ29waWEgbGEgdmVyc2nDs24gYWwgcG9ydGFwYXBlbGVzICsgdG9hc3QgKGNvbG9yIGRhcmspLiAqL1xuICBhc3luYyBjb3B5VmVyc2lvbigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB2ID0gdGhpcy52ZXJzaW9uKCk7XG4gICAgaWYgKCF2KSByZXR1cm47XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KHYpO1xuICAgICAgdGhpcy50b2FzdC5zaG93KHtcbiAgICAgICAgbWVzc2FnZTogdGhpcy50dCgndmVyc2lvbkNvcGllZCcpLnJlcGxhY2UoJ3t2fScsIHYpLFxuICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICBkdXJhdGlvbjogMTUwMCxcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gY2xpcGJvYXJkIG5vIGRpc3BvbmlibGUg4oCUIHNpbGVuY2lvc29cbiAgICB9XG4gIH1cblxuICAvKiogQWJyZSB1bmEgVVJMIGV4dGVybmEgZW4gbnVldmEgdGFiLiBgbWFpbHRvOmAgcXVlZGEgZW4gbGEgbWlzbWEgdGFiLiAqL1xuICBvcGVuVXJsKHVybDogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHVybC5zdGFydHNXaXRoKCdtYWlsdG86JykpIHtcbiAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gdXJsO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB3aW5kb3cub3Blbih1cmwsICdfYmxhbmsnLCAnbm9vcGVuZXIsbm9yZWZlcnJlcicpO1xuICB9XG5cbiAgLyoqXG4gICAqIFwiQ2FsaWZpY2FyIGxhIGFwcFwiIOKAlCBhYnJlIGB2YWwtY29udGVudC1yZWFjdGlvbmAgRElSRUNUQU1FTlRFIGNvbW8gc2hlZXRcbiAgICogbW9kYWwgKHNpbiB3cmFwcGVyIGxvY2FsIOKAlCBkZWNpc2nDs24gQ1RPKS4gRWwgY29tcG9uZW50ZSBwZXJzaXN0ZSBsYSByZWFjY2nDs25cbiAgICogY29udHJhIGVsIGJhY2tlbmQgZGUgZmVlZGJhY2sgeSBtdWVzdHJhIHN1IHByb3BpbyBlc3RhZG8gZGUgXCJncmFjaWFzXCI7IGVsXG4gICAqIHNoZWV0IHNlIGNpZXJyYSBhcnJhc3RyYW5kbyAoYnJlYWtwb2ludCAwKS4gRWwgbmFtZXNwYWNlIGkxOG5cbiAgICogYENvbnRlbnRSZWFjdGlvbmAgbG8gYXV0by1yZWdpc3RyYSBgQ29udGVudFJlYWN0aW9uQ29tcG9uZW50YCBlbiBzdVxuICAgKiBjb25zdHJ1Y3RvciwgcXVlIGNvcnJlIGFsIGNyZWFyIGVsIG1vZGFsIOKAlCBzaW4gcmllc2dvIGRlIGtleSBmYWx0YW50ZS5cbiAgICpcbiAgICogU2hlZXQgKGJvdHRvbSBzaGVldCk6IGVsIGNvbnRlbmlkbyBzY3JvbGxlYSBkZW50cm8geSBlbCBib3TDs24gXCJFbnZpYXJcIiBxdWVkYVxuICAgKiBzaWVtcHJlIGFsY2FuemFibGUsIHRhbWJpw6luIGVuIHZpZXdwb3J0cyBjaGljb3MuXG4gICAqL1xuICBhc3luYyBvcGVuUmF0aW5nKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHJlYWN0aW9uUHJvcHM6IFBhcnRpYWw8Q29udGVudFJlYWN0aW9uTWV0YWRhdGE+ID0ge1xuICAgICAgLy8gZW50aXR5VHlwZSBcImFwcFwiIGRpc3Rpbmd1ZSBlc3RhIHJlYWNjacOzbiBkZSBsYXMgZGUgYXJ0w61jdWxvcy9GQVFzLlxuICAgICAgZW50aXR5UmVmOiB7IGVudGl0eVR5cGU6ICdhcHAnLCBlbnRpdHlJZDogdGhpcy5yZXNvbHZlZENvbmZpZygpLnJhdGluZ0VudGl0eUlkIH0sXG4gICAgICBxdWVzdGlvbjogdGhpcy50dCgncmF0ZVF1ZXN0aW9uJyksXG4gICAgICBjb21tZW50UGxhY2Vob2xkZXI6IHRoaXMudHQoJ3JhdGVDb21tZW50JyksXG4gICAgICB0aGFua1lvdU1lc3NhZ2U6IHRoaXMudHQoJ3JhdGVUaGFua3MnKSxcbiAgICAgIHNob3dDb21tZW50OiB0cnVlLFxuICAgICAgc2hvd1RoYW5rWW91OiB0cnVlLFxuICAgICAgLy8gTW9kYWwgb25lLXNob3Q6IE5PIGJsb3F1ZWFyIGVsIHJlbmRlciBjb24gZWwgY2hlY2sgZGUgcmF0aW5nIHByZXZpby5cbiAgICAgIHNraXBJbml0aWFsQ2hlY2s6IHRydWUsXG4gICAgICBlbW9qaXM6IFsn8J+YlScsICfwn5mCJywgJ/CfmI0nXSxcbiAgICAgIGVtb2ppTGFiZWxzOiBbdGhpcy50dCgncmF0ZUJhZCcpLCB0aGlzLnR0KCdyYXRlTWlkJyksIHRoaXMudHQoJ3JhdGVHb29kJyldLFxuICAgICAgLy8gU2hlZXQgYWJpZXJ0byB2w61hIE1vZGFsU2VydmljZTogYm90w7NuIGRlIGNpZXJyZSBhZGVtw6FzIGRlbCBkcmFnLWhhbmRsZS5cbiAgICAgIHNob3dDbG9zZUJ1dHRvbjogdHJ1ZSxcbiAgICB9O1xuICAgIGF3YWl0IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW48Q29udGVudFJlYWN0aW9uQ29tcG9uZW50Pih7XG4gICAgICBjb21wb25lbnQ6IENvbnRlbnRSZWFjdGlvbkNvbXBvbmVudCxcbiAgICAgIGNvbXBvbmVudFByb3BzOiB7IHByb3BzOiByZWFjdGlvblByb3BzIH0sXG4gICAgICBicmVha3BvaW50czoge1xuICAgICAgICBpbml0aWFsQnJlYWtwb2ludDogMC45LFxuICAgICAgICBicmVha3BvaW50czogWzAsIDAuOSwgMV0sXG4gICAgICAgIHNob3dIYW5kbGU6IHRydWUsXG4gICAgICAgIGhhbmRsZUJlaGF2aW9yOiAnY3ljbGUnLFxuICAgICAgfSxcbiAgICB9KTtcbiAgICB0aGlzLnJlc29sdmVkQ29uZmlnKCkub25SYXRlZD8uKCk7XG4gIH1cbn1cbiJdfQ==
@@ -16,4 +16,4 @@
16
16
  * - **branding i18n** — `i18nNamespace` (default `'Settings.About'`).
17
17
  */
18
18
  export {};
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL2Fib3V0LXZpZXcvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkciLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvbmZpZ3VyYWNpw7NuIGFjb3RhZGEgZGUgYHZhbC1hYm91dC12aWV3YCAob2JqZWN0LWZpcnN0KS4gTGEgdmlzdGEgQWJvdXQgZXNcbiAqIGFwcC1zcGVjaWZpYyBwb3IgbmF0dXJhbGV6YSAobG9nbywgbm9tYnJlLCB2ZXJzacOzbiwgcmVkZXMsIGFjY2lvbmVzIGV4dHJhKSxcbiAqIGFzw60gcXVlIGxvIHByb3BpbyBkZSBjYWRhIGFwcCBzZSBwYXJhbWV0cml6YSBjb21vICoqREFUQSBkZSBjb25maWcqKiDigJQgTk8gY29tb1xuICogc2xvdHMgYXJiaXRyYXJpb3MgKEFEUi0wMjE6IHVuYSB2aXN0YSBmdWxsLWZlYXR1cmUgbm8gYWJyZSBzbG90czsgc2kgZmFsdGFcbiAqIGFsZ28sIHNlIHByb211ZXZlIHVuIG51ZXZvIHB1bnRvIGRlIGV4dGVuc2nDs24pLlxuICpcbiAqIEVqZXMgZGUgdmFyaWFjacOzbiBwZXJtaXRpZG9zOlxuICogIC0gKipicmFuZGluZyoqIOKAlCBgYnJhbmQubmFtZWAgLyBgYnJhbmQubG9nb1NyY2AgKHF1w6kgbXVlc3RyYSBlbCBIRVJPKS5cbiAqICAtICoqdmVyc2nDs24qKiDigJQgYHZlcnNpb25gIGxhIHBhc2EgZWwgY29uc3VtZXIgKGxhIGxpYiBOTyBwdWVkZSBpbXBvcnRhciBlbFxuICogICAgYHZlcnNpb24udHNgIGRlIGxhIGFwcCkuIFNpIG5vIHNlIHBhc2EsIHNlIG9jdWx0YSBlbCBwaWxsIGRlIHZlcnNpw7NuLlxuICogIC0gKipyZWRlcyoqIOKAlCBgc29jaWFsTGlua3NgOyBzaSBlc3TDoSB2YWPDrW8gc2Ugb2N1bHRhIGxhIHNlY2Npw7NuIHNvY2lhbC5cbiAqICAtICoqcmF0aW5nKiog4oCUIGBzaG93UmF0aW5nYCArIGByYXRpbmdFbnRpdHlJZGAgKyBgb25SYXRlZGAuXG4gKiAgLSAqKmFjY2lvbmVzIGV4dHJhKiog4oCUIGBhY3Rpb25zW11gIGdlbsOpcmljYXMgcXVlIGVsIGNvbnN1bWVyIGFncmVnYSBqdW50byBhXG4gKiAgICBsYSBhY2Npw7NuIGRlIHJhdGluZyBidWlsdC1pbi5cbiAqICAtICoqYnJhbmRpbmcgaTE4bioqIOKAlCBgaTE4bk5hbWVzcGFjZWAgKGRlZmF1bHQgYCdTZXR0aW5ncy5BYm91dCdgKS5cbiAqL1xuXG4vKiogTWFyY2EgYSBtb3N0cmFyIGVuIGVsIEhFUk8gKGxvZ28gKyBub21icmUpLiAqL1xuZXhwb3J0IGludGVyZmFjZSBBYm91dEJyYW5kIHtcbiAgLyoqIE5vbWJyZSBkZSBsYSBtYXJjYS4gRGVmYXVsdCBgJ1ZhbHRlY2gnYC4gKi9cbiAgbmFtZT86IHN0cmluZztcbiAgLyoqIFJ1dGEgZGVsIGxvZ28uIERlZmF1bHQgYCdhc3NldHMvaW1hZ2VzL21haW4taWNvbi5wbmcnYC4gKi9cbiAgbG9nb1NyYz86IHN0cmluZztcbn1cblxuLyoqXG4gKiBBY2Npw7NuIGdlbsOpcmljYSBleHRyYSBkZSBsYSBzZWNjacOzbiBcIkFjY2lvbmVzXCIgKGFkZW3DoXMgZGVsIHJhdGluZyBidWlsdC1pbikuXG4gKiBFbCBjb25zdW1lciBsYSBtb2RlbGEgY29tcGxldGEgKGxhYmVsL2Rlc2NyaXBjacOzbi/DrWNvbm8gKyBoYW5kbGVyKS4gTGFzXG4gKiBhY2Npb25lcyBzaGFyZS9mYXEgZGUgc2hvd2Nhc2UgTk8gc29uIGdlbsOpcmljYXMgKFdlYiBTaGFyZSBBUEkgeSBydXRhIGludGVybmFcbiAqIGRlIGxhIGFwcCksIHBvciBlc28gc2UgZXhwb25lbiBjb21vIGBhY3Rpb25zYCBwYXJhIHF1ZSBjYWRhIGFwcCBhcG9ydGUgbGFzXG4gKiBzdXlhcyBlbiB2ZXogZGUgaGFyZGNvZGVhcmxhcyBlbiBsYSBsaWIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWJvdXRBY3Rpb24ge1xuICAvKiogVGV4dG8gcHJpbmNpcGFsIGRlIGxhIGFjdGlvbi1jYXJkLiAqL1xuICBsYWJlbDogc3RyaW5nO1xuICAvKiogVGV4dG8gc2VjdW5kYXJpbyAob3BjaW9uYWwpLiAqL1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgLyoqIElvbmljb24gbmFtZSAoZWouIGAnc2hhcmUtc29jaWFsLW91dGxpbmUnYCkuICovXG4gIGljb24/OiBzdHJpbmc7XG4gIC8qKiBIYW5kbGVyIGRlbCBjbGljay4gKi9cbiAgb25DbGljazogKCkgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBYm91dFZpZXdDb25maWcge1xuICAvKiogTWFyY2EgZGVsIEhFUk8gKGxvZ28gKyBub21icmUpLiBEZWZhdWx0IFZhbHRlY2guICovXG4gIGJyYW5kPzogQWJvdXRCcmFuZDtcblxuICAvKipcbiAgICogVmVyc2nDs24gYSBtb3N0cmFyIGVuIGVsIHBpbGwgKGVsIGNvbnN1bWVyIHBhc2Egc3UgYEFQUF9WRVJTSU9OYCkuIExhIGxpYiBOT1xuICAgKiBpbXBvcnRhIGVsIGB2ZXJzaW9uLnRzYCBkZSBsYSBhcHAuIFNpIG5vIHNlIHBhc2EsIGVsIHBpbGwgZGUgdmVyc2nDs24gc2VcbiAgICogb2N1bHRhLlxuICAgKi9cbiAgdmVyc2lvbj86IHN0cmluZztcblxuICAvKipcbiAgICogUmVkZXMgc29jaWFsZXMuIFNpIGVzdMOhIHZhY8OtbyAobyBubyBzZSBwYXNhKSwgbGEgc2VjY2nDs24gc29jaWFsIHNlIG9jdWx0YS5cbiAgICogYGljb25gID0gaW9uaWNvbiBuYW1lOyBgdXJsYCA9IGRlc3Rpbm87IGBsYWJlbGAgPSBhcmlhLWxhYmVsLlxuICAgKi9cbiAgc29jaWFsTGlua3M/OiB7IGljb246IHN0cmluZzsgdXJsOiBzdHJpbmc7IGxhYmVsOiBzdHJpbmcgfVtdO1xuXG4gIC8qKiBNdWVzdHJhIGxhIGFjdGlvbi1jYXJkIGRlIHJhdGluZyBidWlsdC1pbi4gRGVmYXVsdCBgdHJ1ZWAuICovXG4gIHNob3dSYXRpbmc/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBgZW50aXR5SWRgIGRlbCBgZW50aXR5UmVmYCBxdWUgcmVjaWJlIGB2YWwtY29udGVudC1yZWFjdGlvbmAgYWwgY2FsaWZpY2FyXG4gICAqIChlbCBgZW50aXR5VHlwZWAgZXMgc2llbXByZSBgJ2FwcCdgKS4gRGVmYXVsdCBgJ2V4cGVyaWVuY2UnYC5cbiAgICovXG4gIHJhdGluZ0VudGl0eUlkPzogc3RyaW5nO1xuXG4gIC8qKiBBY2Npb25lcyBnZW7DqXJpY2FzIGV4dHJhIGRlIGxhIHNlY2Npw7NuIFwiQWNjaW9uZXNcIi4gRGVmYXVsdCBgW11gLiAqL1xuICBhY3Rpb25zPzogQWJvdXRBY3Rpb25bXTtcblxuICAvKipcbiAgICogTmFtZXNwYWNlIGkxOG4gY29uIGVsIHF1ZSBsYSB2aXN0YSByZXN1ZWx2ZSBzdXMgdGV4dG9zLlxuICAgKiBEZWZhdWx0IGAnU2V0dGluZ3MuQWJvdXQnYC5cbiAgICovXG4gIGkxOG5OYW1lc3BhY2U/OiBzdHJpbmc7XG5cbiAgLyoqIEhvb2sgdHJhcyBlbnZpYXIgbGEgY2FsaWZpY2FjacOzbiAocmF0aW5nKSBkZXNkZSBgdmFsLWNvbnRlbnQtcmVhY3Rpb25gLiAqL1xuICBvblJhdGVkPzogKCkgPT4gdm9pZDtcbn1cbiJdfQ==
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL2Fib3V0LXZpZXcvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkciLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvbmZpZ3VyYWNpw7NuIGFjb3RhZGEgZGUgYHZhbC1hYm91dC12aWV3YCAob2JqZWN0LWZpcnN0KS4gTGEgdmlzdGEgQWJvdXQgZXNcbiAqIGFwcC1zcGVjaWZpYyBwb3IgbmF0dXJhbGV6YSAobG9nbywgbm9tYnJlLCB2ZXJzacOzbiwgcmVkZXMsIGFjY2lvbmVzIGV4dHJhKSxcbiAqIGFzw60gcXVlIGxvIHByb3BpbyBkZSBjYWRhIGFwcCBzZSBwYXJhbWV0cml6YSBjb21vICoqREFUQSBkZSBjb25maWcqKiDigJQgTk8gY29tb1xuICogc2xvdHMgYXJiaXRyYXJpb3MgKEFEUi0wMjE6IHVuYSB2aXN0YSBmdWxsLWZlYXR1cmUgbm8gYWJyZSBzbG90czsgc2kgZmFsdGFcbiAqIGFsZ28sIHNlIHByb211ZXZlIHVuIG51ZXZvIHB1bnRvIGRlIGV4dGVuc2nDs24pLlxuICpcbiAqIEVqZXMgZGUgdmFyaWFjacOzbiBwZXJtaXRpZG9zOlxuICogIC0gKipicmFuZGluZyoqIOKAlCBgYnJhbmQubmFtZWAgLyBgYnJhbmQubG9nb1NyY2AgKHF1w6kgbXVlc3RyYSBlbCBIRVJPKS5cbiAqICAtICoqdmVyc2nDs24qKiDigJQgYHZlcnNpb25gIGxhIHBhc2EgZWwgY29uc3VtZXIgKGxhIGxpYiBOTyBwdWVkZSBpbXBvcnRhciBlbFxuICogICAgYHZlcnNpb24udHNgIGRlIGxhIGFwcCkuIFNpIG5vIHNlIHBhc2EsIHNlIG9jdWx0YSBlbCBwaWxsIGRlIHZlcnNpw7NuLlxuICogIC0gKipyZWRlcyoqIOKAlCBgc29jaWFsTGlua3NgOyBzaSBlc3TDoSB2YWPDrW8gc2Ugb2N1bHRhIGxhIHNlY2Npw7NuIHNvY2lhbC5cbiAqICAtICoqcmF0aW5nKiog4oCUIGBzaG93UmF0aW5nYCArIGByYXRpbmdFbnRpdHlJZGAgKyBgb25SYXRlZGAuXG4gKiAgLSAqKmFjY2lvbmVzIGV4dHJhKiog4oCUIGBhY3Rpb25zW11gIGdlbsOpcmljYXMgcXVlIGVsIGNvbnN1bWVyIGFncmVnYSBqdW50byBhXG4gKiAgICBsYSBhY2Npw7NuIGRlIHJhdGluZyBidWlsdC1pbi5cbiAqICAtICoqYnJhbmRpbmcgaTE4bioqIOKAlCBgaTE4bk5hbWVzcGFjZWAgKGRlZmF1bHQgYCdTZXR0aW5ncy5BYm91dCdgKS5cbiAqL1xuXG4vKiogTWFyY2EgYSBtb3N0cmFyIGVuIGVsIEhFUk8gKGxvZ28gKyBub21icmUpLiAqL1xuZXhwb3J0IGludGVyZmFjZSBBYm91dEJyYW5kIHtcbiAgLyoqIE5vbWJyZSBkZSBsYSBtYXJjYS4gRGVmYXVsdCBgJ1ZhbHRlY2gnYC4gKi9cbiAgbmFtZT86IHN0cmluZztcbiAgLyoqIFJ1dGEgZGVsIGxvZ28uIERlZmF1bHQgYCdhc3NldHMvaW1hZ2VzL21haW4taWNvbi5wbmcnYC4gKi9cbiAgbG9nb1NyYz86IHN0cmluZztcbiAgLyoqXG4gICAqIE5vbWJyZSBkZSB1bmEgQ1NTIGN1c3RvbSBwcm9wZXJ0eSAoZWouIGAnLS1tYWluLWxvZ28tbWluaSdgKSBjdXlvIHZhbG9yIGVzIHVuXG4gICAqIGB1cmwoLi4uKWAgY29uIGVsIGxvZ28gZGUgbWFyY2EuIFNpIHNlIHBhc2EsIGVsIEhFUk8gcmVuZGVyaXphIGVsIGxvZ28gY29tb1xuICAgKiBiYWNrZ3JvdW5kIGRlIGxhIHZhcmlhYmxlIOKAlCAqKnRoZW1lLWF3YXJlKiogKGNhbWJpYSBjb24gZGFyayBtb2RlIHNpIGxhIGFwcFxuICAgKiByZWRlZmluZSBsYSB2YXJpYWJsZSkg4oCUIGVuIHZleiBkZWwgYDxpbWcgc3JjPWxvZ29TcmM+YC4gVGllbmUgcHJpb3JpZGFkIHNvYnJlXG4gICAqIGBsb2dvU3JjYC4gUGVuc2FkbyBwYXJhIGVsIHBhdHLDs24gZGVsIGZhY3RvcnkgZG9uZGUgY2FkYSBhcHAgZGVmaW5lXG4gICAqIGAtLW1haW4tbG9nb2AvYC0tbWFpbi1sb2dvLW1pbmlgIGVuIHN1IGB2YXJpYWJsZXMuc2Nzc2AuXG4gICAqL1xuICBsb2dvVmFyPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEFjY2nDs24gZ2Vuw6lyaWNhIGV4dHJhIGRlIGxhIHNlY2Npw7NuIFwiQWNjaW9uZXNcIiAoYWRlbcOhcyBkZWwgcmF0aW5nIGJ1aWx0LWluKS5cbiAqIEVsIGNvbnN1bWVyIGxhIG1vZGVsYSBjb21wbGV0YSAobGFiZWwvZGVzY3JpcGNpw7NuL8OtY29ubyArIGhhbmRsZXIpLiBMYXNcbiAqIGFjY2lvbmVzIHNoYXJlL2ZhcSBkZSBzaG93Y2FzZSBOTyBzb24gZ2Vuw6lyaWNhcyAoV2ViIFNoYXJlIEFQSSB5IHJ1dGEgaW50ZXJuYVxuICogZGUgbGEgYXBwKSwgcG9yIGVzbyBzZSBleHBvbmVuIGNvbW8gYGFjdGlvbnNgIHBhcmEgcXVlIGNhZGEgYXBwIGFwb3J0ZSBsYXNcbiAqIHN1eWFzIGVuIHZleiBkZSBoYXJkY29kZWFybGFzIGVuIGxhIGxpYi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBYm91dEFjdGlvbiB7XG4gIC8qKiBUZXh0byBwcmluY2lwYWwgZGUgbGEgYWN0aW9uLWNhcmQuICovXG4gIGxhYmVsOiBzdHJpbmc7XG4gIC8qKiBUZXh0byBzZWN1bmRhcmlvIChvcGNpb25hbCkuICovXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAvKiogSW9uaWNvbiBuYW1lIChlai4gYCdzaGFyZS1zb2NpYWwtb3V0bGluZSdgKS4gKi9cbiAgaWNvbj86IHN0cmluZztcbiAgLyoqIEhhbmRsZXIgZGVsIGNsaWNrLiAqL1xuICBvbkNsaWNrOiAoKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFib3V0Vmlld0NvbmZpZyB7XG4gIC8qKiBNYXJjYSBkZWwgSEVSTyAobG9nbyArIG5vbWJyZSkuIERlZmF1bHQgVmFsdGVjaC4gKi9cbiAgYnJhbmQ/OiBBYm91dEJyYW5kO1xuXG4gIC8qKlxuICAgKiBWZXJzacOzbiBhIG1vc3RyYXIgZW4gZWwgcGlsbCAoZWwgY29uc3VtZXIgcGFzYSBzdSBgQVBQX1ZFUlNJT05gKS4gTGEgbGliIE5PXG4gICAqIGltcG9ydGEgZWwgYHZlcnNpb24udHNgIGRlIGxhIGFwcC4gU2kgbm8gc2UgcGFzYSwgZWwgcGlsbCBkZSB2ZXJzacOzbiBzZVxuICAgKiBvY3VsdGEuXG4gICAqL1xuICB2ZXJzaW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBSZWRlcyBzb2NpYWxlcy4gU2kgZXN0w6EgdmFjw61vIChvIG5vIHNlIHBhc2EpLCBsYSBzZWNjacOzbiBzb2NpYWwgc2Ugb2N1bHRhLlxuICAgKiBgaWNvbmAgPSBpb25pY29uIG5hbWU7IGB1cmxgID0gZGVzdGlubzsgYGxhYmVsYCA9IGFyaWEtbGFiZWwuXG4gICAqL1xuICBzb2NpYWxMaW5rcz86IHsgaWNvbjogc3RyaW5nOyB1cmw6IHN0cmluZzsgbGFiZWw6IHN0cmluZyB9W107XG5cbiAgLyoqIE11ZXN0cmEgbGEgYWN0aW9uLWNhcmQgZGUgcmF0aW5nIGJ1aWx0LWluLiBEZWZhdWx0IGB0cnVlYC4gKi9cbiAgc2hvd1JhdGluZz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIGBlbnRpdHlJZGAgZGVsIGBlbnRpdHlSZWZgIHF1ZSByZWNpYmUgYHZhbC1jb250ZW50LXJlYWN0aW9uYCBhbCBjYWxpZmljYXJcbiAgICogKGVsIGBlbnRpdHlUeXBlYCBlcyBzaWVtcHJlIGAnYXBwJ2ApLiBEZWZhdWx0IGAnZXhwZXJpZW5jZSdgLlxuICAgKi9cbiAgcmF0aW5nRW50aXR5SWQ/OiBzdHJpbmc7XG5cbiAgLyoqIEFjY2lvbmVzIGdlbsOpcmljYXMgZXh0cmEgZGUgbGEgc2VjY2nDs24gXCJBY2Npb25lc1wiLiBEZWZhdWx0IGBbXWAuICovXG4gIGFjdGlvbnM/OiBBYm91dEFjdGlvbltdO1xuXG4gIC8qKlxuICAgKiBOYW1lc3BhY2UgaTE4biBjb24gZWwgcXVlIGxhIHZpc3RhIHJlc3VlbHZlIHN1cyB0ZXh0b3MuXG4gICAqIERlZmF1bHQgYCdTZXR0aW5ncy5BYm91dCdgLlxuICAgKi9cbiAgaTE4bk5hbWVzcGFjZT86IHN0cmluZztcblxuICAvKiogSG9vayB0cmFzIGVudmlhciBsYSBjYWxpZmljYWNpw7NuIChyYXRpbmcpIGRlc2RlIGB2YWwtY29udGVudC1yZWFjdGlvbmAuICovXG4gIG9uUmF0ZWQ/OiAoKSA9PiB2b2lkO1xufVxuIl19
@@ -0,0 +1,9 @@
1
+ export const VALTECH_SETTINGS_MENU_LINKS = [
2
+ { textKey: 'menuGeneral', route: ['/app/settings/general'] },
3
+ { textKey: 'menuAccount', route: ['/app/settings/account'] },
4
+ { textKey: 'menuOrganization', route: ['/app/settings/organization'] },
5
+ { textKey: 'menuProfile', route: ['/app/settings/profile'] },
6
+ { textKey: 'menuSettingsNotifications', route: ['/app/settings/notifications'] },
7
+ { textKey: 'menuSecurity', route: ['/app/settings/security'] },
8
+ ];
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3MtbWVudS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9vcmdhbmlzbXMvc2V0dGluZ3MtaHViL3NldHRpbmdzLW1lbnUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBcUJBLE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUF1QjtJQUM3RCxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLENBQUMsdUJBQXVCLENBQUMsRUFBRTtJQUM1RCxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLENBQUMsdUJBQXVCLENBQUMsRUFBRTtJQUM1RCxFQUFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxLQUFLLEVBQUUsQ0FBQyw0QkFBNEIsQ0FBQyxFQUFFO0lBQ3RFLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQyxFQUFFO0lBQzVELEVBQUUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLEtBQUssRUFBRSxDQUFDLDZCQUE2QixDQUFDLEVBQUU7SUFDaEYsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxDQUFDLHdCQUF3QixDQUFDLEVBQUU7Q0FDL0QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogTGlua3MgY2Fuw7NuaWNvcyBkZWwgc3VibWVuw7ogXCJQcmVmZXJlbmNpYXNcIiBkZWwgc2lkZS1tZW51IGRlbCBmYWN0b3J5LlxuICpcbiAqIE1pc21hIGZ1ZW50ZSBkZSB2ZXJkYWQgcXVlIGxhcyBjYXJkcyBkZWwgSFVCIChgdmFsLXNldHRpbmdzLWh1YmApOiBUT0RBUyBsYXNcbiAqIGFwcHMgZGVsIGZhY3RvcnkgY29uc3VtZW4gZXN0YSBsaXN0YSBlbiBzdSBtZW7DuiBsYXRlcmFsIHBhcmEgcXVlIGVsIHN1Ym1lbsO6IGRlXG4gKiBwcmVmZXJlbmNpYXMgc2VhIElEw4lOVElDTyBlbnRyZSBhcHBzIChzaG93Y2FzZSwgYmluZ28sIOKApikgeSBjb25zaXN0ZW50ZSBjb24gZWxcbiAqIGh1Yi4gTG8gw7puaWNvIGFwcC1zcGVjaWZpYyBzb24gbGFzIGxhYmVscyAoaTE4biBuYW1lc3BhY2UgYE1lbnVgLCBxdWUgY2FkYSBhcHBcbiAqIHJlZ2lzdHJhKSDigJQgbGEgZXN0cnVjdHVyYS9ydXRhcyB2aWVuZW4gZGUgbGEgbGliLlxuICpcbiAqIE5vIGluY2x1eWUgYGFib3V0YCAoZXMgdW4gw610ZW0gdG9wLWxldmVsIGRlbCBtZW7Duiwgbm8gZGVsIHN1Ym1lbsO6KSwgbmkgYGxvZ291dGBcbiAqIChubyBlcyBsaW5rKSwgbmkgYHByZWZlcmVuY2VzYCAoZXMgZWwgaHViIG1pc21vKS4gU8OtIGluY2x1eWUgYGdlbmVyYWxgICg9IGxhXG4gKiB2aXN0YSBkZSBwcmVmZXJlbmNpYXMgVUkpLCBhY2NvdW50LCBwcm9maWxlLCBub3RpZmljYXRpb25zLCBzZWN1cml0eSB5XG4gKiBvcmdhbml6YXRpb24gKHNlY2Npw7NuIGNvcmUsIHZlciBzZXR0aW5ncy1zZWN0aW9ucy50cykuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2V0dGluZ3NNZW51TGluayB7XG4gIC8qKiBpMThuIGtleSBkZSBsYSBsYWJlbCAobmFtZXNwYWNlIGBNZW51YCBkZSBsYSBhcHApLiAqL1xuICB0ZXh0S2V5OiBzdHJpbmc7XG4gIC8qKiBSdXRhIGRlIG5hdmVnYWNpw7NuIChiYWpvIGVsIHNoZWxsIGAvYXBwYCkuICovXG4gIHJvdXRlOiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGNvbnN0IFZBTFRFQ0hfU0VUVElOR1NfTUVOVV9MSU5LUzogU2V0dGluZ3NNZW51TGlua1tdID0gW1xuICB7IHRleHRLZXk6ICdtZW51R2VuZXJhbCcsIHJvdXRlOiBbJy9hcHAvc2V0dGluZ3MvZ2VuZXJhbCddIH0sXG4gIHsgdGV4dEtleTogJ21lbnVBY2NvdW50Jywgcm91dGU6IFsnL2FwcC9zZXR0aW5ncy9hY2NvdW50J10gfSxcbiAgeyB0ZXh0S2V5OiAnbWVudU9yZ2FuaXphdGlvbicsIHJvdXRlOiBbJy9hcHAvc2V0dGluZ3Mvb3JnYW5pemF0aW9uJ10gfSxcbiAgeyB0ZXh0S2V5OiAnbWVudVByb2ZpbGUnLCByb3V0ZTogWycvYXBwL3NldHRpbmdzL3Byb2ZpbGUnXSB9LFxuICB7IHRleHRLZXk6ICdtZW51U2V0dGluZ3NOb3RpZmljYXRpb25zJywgcm91dGU6IFsnL2FwcC9zZXR0aW5ncy9ub3RpZmljYXRpb25zJ10gfSxcbiAgeyB0ZXh0S2V5OiAnbWVudVNlY3VyaXR5Jywgcm91dGU6IFsnL2FwcC9zZXR0aW5ncy9zZWN1cml0eSddIH0sXG5dO1xuIl19