@ti-tecnologico-de-monterrey-oficial/ds-ng 1.6.18-e → 1.6.18-f

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 (81) hide show
  1. package/assets/i18n/en.json +31 -1
  2. package/assets/i18n/es.json +31 -1
  3. package/assets/styles/mainGED.min.css +1 -1
  4. package/assets/styles/mainGED.min.css.map +1 -1
  5. package/assets/styles/mainTEC.min.css +1 -1
  6. package/assets/styles/mainTEC.min.css.map +1 -1
  7. package/assets/styles/mainTECMI.min.css +1 -1
  8. package/assets/styles/mainTECMI.min.css.map +1 -1
  9. package/assets/styles/micro.min.css +1 -1
  10. package/assets/styles/micro.min.css.map +1 -1
  11. package/esm2022/assets/i18n/en.json +31 -1
  12. package/esm2022/assets/i18n/es.json +31 -1
  13. package/esm2022/lib/components/bmb-account-statement/bmb-account-statement.component.mjs +2 -2
  14. package/esm2022/lib/components/bmb-action-menu/bmb-action-menu.component.mjs +3 -3
  15. package/esm2022/lib/components/bmb-alert-center/bmb-alert-center-form/bmb-alert-center-form.component.mjs +91 -78
  16. package/esm2022/lib/components/bmb-alert-center/bmb-alert-center-list/bmb-alert-center-list.component.mjs +17 -5
  17. package/esm2022/lib/components/bmb-alert-center/bmb-alert-center.component.mjs +10 -4
  18. package/esm2022/lib/components/bmb-alert-center/types.mjs +1 -1
  19. package/esm2022/lib/components/bmb-button-icon/bmb-button-icon.component.mjs +3 -3
  20. package/esm2022/lib/components/bmb-card-button/bmb-card-button.component.mjs +3 -3
  21. package/esm2022/lib/components/bmb-chevron-title-selector/bmb-chevron-title-selector.component.mjs +2 -2
  22. package/esm2022/lib/components/bmb-container-button/bmb-container-button.component.mjs +3 -3
  23. package/esm2022/lib/components/bmb-datepicker/bmb-datepicker.component.mjs +2 -2
  24. package/esm2022/lib/components/bmb-digital-id/bmb-digital-id.component.mjs +2 -2
  25. package/esm2022/lib/components/bmb-dropdown/bmb-dropdown.component.mjs +1 -1
  26. package/esm2022/lib/components/bmb-dropdown-menu/bmb-dropdown-menu.component.mjs +3 -3
  27. package/esm2022/lib/components/bmb-evaluation-rubric/bmb-evaluation-rubric.component.mjs +2 -2
  28. package/esm2022/lib/components/bmb-external-link/bmb-external-link.component.mjs +3 -3
  29. package/esm2022/lib/components/bmb-filter-card/bmb-filter-card.component.mjs +2 -2
  30. package/esm2022/lib/components/bmb-grades/bmb-grades.component.mjs +2 -2
  31. package/esm2022/lib/components/bmb-home-card/bmb-home-card-header/bmb-home-card-header.component.mjs +2 -2
  32. package/esm2022/lib/components/bmb-icon/bmb-icon.component.mjs +3 -1
  33. package/esm2022/lib/components/bmb-image/bmb-image.component.mjs +38 -8
  34. package/esm2022/lib/components/bmb-image/types.mjs +2 -0
  35. package/esm2022/lib/components/bmb-inner-header/bmb-inner-header.component.mjs +2 -2
  36. package/esm2022/lib/components/bmb-input/bmb-input-content/bmb-input-content.component.mjs +6 -3
  37. package/esm2022/lib/components/bmb-input/bmb-input.component.mjs +4 -3
  38. package/esm2022/lib/components/bmb-input-phone-number/bmb-input-phone-number.component.mjs +2 -2
  39. package/esm2022/lib/components/bmb-input-tags/bmb-input-tags.component.mjs +2 -2
  40. package/esm2022/lib/components/bmb-list-group/bmb-list-group-item/bmb-list-group-item.component.mjs +1 -1
  41. package/esm2022/lib/components/bmb-list-items/bmb-list-items.component.mjs +1 -1
  42. package/esm2022/lib/components/bmb-login/bmb-login-content/bmb-login-content.component.mjs +2 -2
  43. package/esm2022/lib/components/bmb-modal/bmb-modal.component.mjs +2 -2
  44. package/esm2022/lib/components/bmb-modal/bmb-native-modal.component.mjs +2 -2
  45. package/esm2022/lib/components/bmb-notification-card/bmb-notification-card.component.mjs +28 -18
  46. package/esm2022/lib/components/bmb-portal/bmb-portal.component.mjs +3 -3
  47. package/esm2022/lib/components/bmb-profile/bmb-profile.component.mjs +9 -3
  48. package/esm2022/lib/components/bmb-search-card/bmb-search-card-empty-state/bmb-search-card-empty-state.component.mjs +17 -0
  49. package/esm2022/lib/components/bmb-search-card/bmb-search-card-item/bmb-search-card-item.component.mjs +35 -0
  50. package/esm2022/lib/components/bmb-search-card/bmb-search-card.component.mjs +72 -0
  51. package/esm2022/lib/components/bmb-search-input/bmb-search-input.component.mjs +2 -2
  52. package/esm2022/lib/components/bmb-table-lite/bmb-table-lite.component.mjs +2 -2
  53. package/esm2022/lib/components/bmb-tables/bmb-tables.component.mjs +2 -2
  54. package/esm2022/lib/components/bmb-text-editor/bmb-text-editor-prompt/bmb-text-editor-prompt.component.mjs +2 -2
  55. package/esm2022/lib/components/bmb-title-content/bmb-title-content.component.mjs +7 -3
  56. package/esm2022/lib/components/bmb-tooltip/bmb-tooltip.component.mjs +3 -3
  57. package/esm2022/lib/components/bmb-top-bar/bmb-top-bar-user-section/bmb-top-bar-user-section.component.mjs +3 -3
  58. package/esm2022/lib/components/bmb-top-bar/bmb-top-bar.component.mjs +3 -3
  59. package/esm2022/lib/components/bmb-totp/bmb-totp.component.mjs +2 -2
  60. package/esm2022/lib/components/utils/bmb-alert-center-detail/bmb-alert-center-detail.component.mjs +2 -2
  61. package/esm2022/lib/types/colors.mjs +1 -1
  62. package/esm2022/public-api.mjs +2 -1
  63. package/fesm2022/ti-tecnologico-de-monterrey-oficial-ds-ng.mjs +1486 -1237
  64. package/fesm2022/ti-tecnologico-de-monterrey-oficial-ds-ng.mjs.map +1 -1
  65. package/lib/components/bmb-alert-center/bmb-alert-center-form/bmb-alert-center-form.component.d.ts +15 -18
  66. package/lib/components/bmb-alert-center/bmb-alert-center-list/bmb-alert-center-list.component.d.ts +3 -2
  67. package/lib/components/bmb-alert-center/types.d.ts +6 -0
  68. package/lib/components/bmb-image/bmb-image.component.d.ts +10 -1
  69. package/lib/components/bmb-image/types.d.ts +12 -0
  70. package/lib/components/bmb-input/bmb-input-content/bmb-input-content.component.d.ts +2 -1
  71. package/lib/components/bmb-input/bmb-input.component.d.ts +2 -1
  72. package/lib/components/bmb-notification-card/bmb-notification-card.component.d.ts +1 -0
  73. package/lib/components/bmb-profile/bmb-profile.component.d.ts +5 -1
  74. package/lib/components/bmb-search-card/bmb-search-card-empty-state/bmb-search-card-empty-state.component.d.ts +6 -0
  75. package/lib/components/bmb-search-card/bmb-search-card-item/bmb-search-card-item.component.d.ts +15 -0
  76. package/lib/components/bmb-search-card/bmb-search-card.component.d.ts +33 -0
  77. package/lib/components/bmb-tables/bmb-tables.component.d.ts +1 -1
  78. package/lib/components/bmb-title-content/bmb-title-content.component.d.ts +4 -1
  79. package/lib/types/colors.d.ts +1 -1
  80. package/package.json +1 -1
  81. package/public-api.d.ts +1 -0
@@ -0,0 +1,72 @@
1
+ import { Component, computed, input, model, output } from '@angular/core';
2
+ import { BmbHomeCardComponent } from '../bmb-home-card/bmb-home-card.component';
3
+ import { TranslatePipe } from '../../pipes/translations';
4
+ import { BmbInputComponent } from '../bmb-input/bmb-input.component';
5
+ import { BmbTabsComponent } from '../bmb-tabs/bmb-tabs.component';
6
+ import { FormControl } from '@angular/forms';
7
+ import { CommonModule } from '@angular/common';
8
+ import { BmbSearchCardEmptyStateComponent } from './bmb-search-card-empty-state/bmb-search-card-empty-state.component';
9
+ import { BmbSearchCardItemComponent } from './bmb-search-card-item/bmb-search-card-item.component';
10
+ import * as i0 from "@angular/core";
11
+ import * as i1 from "../../services/translations/translations.service";
12
+ import * as i2 from "@angular/common";
13
+ export class BmbSearchCardComponent {
14
+ constructor(translationsService) {
15
+ this.translationsService = translationsService;
16
+ this.title = input('');
17
+ this.inputPlaceholder = input('');
18
+ this.results = input([]);
19
+ this.isLoading = input(false);
20
+ this.selectedTabId = model(1);
21
+ this.triggerSearch = output();
22
+ this.searchItemClick = output();
23
+ this.inputSearchControl = new FormControl('');
24
+ this.computedResults = computed(() => {
25
+ return this.results().reduce((acc, item) => {
26
+ if (item.type === 'service') {
27
+ acc.services.push(item);
28
+ }
29
+ else if (item.type === 'person') {
30
+ acc.persons.push(item);
31
+ }
32
+ return acc;
33
+ }, { services: [], persons: [] });
34
+ });
35
+ this.tabsData = computed(() => [
36
+ {
37
+ id: 1,
38
+ title: this.translationsService.translate('search_card.tabs.all'),
39
+ badge: this.computedResults().persons.length + this.computedResults().services.length,
40
+ isActive: true,
41
+ },
42
+ {
43
+ id: 2,
44
+ title: this.translationsService.translate('search_card.tabs.services'),
45
+ badge: this.computedResults().services.length,
46
+ },
47
+ {
48
+ id: 3,
49
+ title: this.translationsService.translate('search_card.tabs.people'),
50
+ badge: this.computedResults().persons.length,
51
+ },
52
+ ]);
53
+ this.inputSearchControl.valueChanges.subscribe((value) => {
54
+ this.triggerSearch.emit(value || '');
55
+ });
56
+ }
57
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BmbSearchCardComponent, deps: [{ token: i1.BmbTranslationsService }], target: i0.ɵɵFactoryTarget.Component }); }
58
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: BmbSearchCardComponent, isStandalone: true, selector: "bmb-search-card", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, inputPlaceholder: { classPropertyName: "inputPlaceholder", publicName: "inputPlaceholder", isSignal: true, isRequired: false, transformFunction: null }, results: { classPropertyName: "results", publicName: "results", isSignal: true, isRequired: false, transformFunction: null }, isLoading: { classPropertyName: "isLoading", publicName: "isLoading", isSignal: true, isRequired: false, transformFunction: null }, selectedTabId: { classPropertyName: "selectedTabId", publicName: "selectedTabId", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selectedTabId: "selectedTabIdChange", triggerSearch: "triggerSearch", searchItemClick: "searchItemClick" }, ngImport: i0, template: "<section class=\"bmb_search-card\">\n <bmb-home-card\n [title]=\"title() || 'search_card.title' | translate\"\n [showRightButton]=\"false\"\n icon=\"search\"\n bgIconAppearance=\"blue-primary\"\n >\n <bmb-input\n [placeholder]=\"\n inputPlaceholder() || 'search_card.input_placeholder' | translate\n \"\n [icon]=\"'search'\"\n [isClearable]=\"true\"\n [control]=\"inputSearchControl\"\n [isLoading]=\"isLoading()\"\n />\n <section\n class=\"bmb_search-card-results\"\n [ngClass]=\"{\n 'bmb_search-card-results-active':\n computedResults().persons.length && computedResults().services.length\n }\"\n ></section>\n <bmb-tabs [tabs]=\"tabsData()\" [(selectedTabId)]=\"selectedTabId\">\n @switch (selectedTabId()) {\n @case (1) {\n @if (computedResults().services.length) {\n <section class=\"bmb_search-card-results-section\">\n <h3>{{ 'search_card.tabs.services' | translate }}</h3>\n <ul class=\"bmb_search-card-results-list\">\n @for (service of computedResults().services; track $index) {\n <ng-container *ngTemplateOutlet=\"cardItem; context: { item: service }\"></ng-container>\n }\n </ul>\n </section>\n }\n @if (computedResults().persons.length) {\n <section class=\"bmb_search-card-results-section\">\n <h3>{{ 'search_card.tabs.people' | translate }}</h3>\n <ul class=\"bmb_search-card-results-list\">\n @for (person of computedResults().persons; track $index) {\n <ng-container *ngTemplateOutlet=\"cardItem; context: { item: person }\"></ng-container>\n }\n </ul>\n </section>\n }\n }\n @case (2) {\n @if (computedResults().services.length) {\n <section class=\"bmb_search-card-results-section\">\n <h3>{{ 'search_card.tabs.services' | translate }}</h3>\n <ul class=\"bmb_search-card-results-list\">\n @for (service of computedResults().services; track $index) {\n <ng-container *ngTemplateOutlet=\"cardItem; context: { item: service }\"></ng-container>\n }\n </ul>\n </section>\n }\n }\n @case (3) {\n @if (computedResults().persons.length) {\n <section class=\"bmb_search-card-results-section\">\n <h3>{{ 'search_card.tabs.people' | translate }}</h3>\n <ul class=\"bmb_search-card-results-list\">\n @for (person of computedResults().persons; track $index) {\n <ng-container *ngTemplateOutlet=\"cardItem; context: { item: person }\"></ng-container>\n }\n </ul>\n </section>\n }\n }\n }\n </bmb-tabs>\n @if (\n !computedResults().persons.length && !computedResults().services.length && !isLoading()\n ) {\n <bmb-search-card-empty-state\n [inputHasValue]=\"!!inputSearchControl.value\"\n ></bmb-search-card-empty-state>\n }\n {{ isLoading() ? 'Loading...' : '' }}\n </bmb-home-card>\n</section>\n\n<ng-template #cardItem let-item=\"item\">\n <li class=\"bmb_search-card-results-list-item\">\n <bmb-search-card-item\n [name]=\"item.name\"\n [subtitle]=\"item.subtitle\"\n [icon]=\"item.avatarOrIcon\"\n [isService]=\"false\"\n (triggerClick)=\"searchItemClick.emit(item)\"\n ></bmb-search-card-item>\n </li>\n</ng-template>\n", styles: [".bmb_search-card-results-list{padding:0;margin:0;list-style:none}.bmb_search-card-results-section{padding-block-start:var(--bmb-spacing-l)}\n"], dependencies: [{ kind: "component", type: BmbHomeCardComponent, selector: "bmb-home-card", inputs: ["title", "subtitle", "dataLocalNav", "leftIcon", "icon", "iconSize", "bgIconAppearance", "actionHeaders", "isMobile", "contentPadding", "showRightButton", "isExpanded", "useAutoExpand", "isChat", "actionsList"], outputs: ["isExpandedChange", "onClose", "onBack", "onExpandClick"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "component", type: BmbInputComponent, selector: "bmb-input", inputs: ["label", "type", "placeholder", "icon", "appearance", "errorMessage", "helperMessage", "disabled", "isRequired", "name", "spellcheck", "jsonFormat", "heightTextArea", "maxlength", "minlength", "pattern", "max", "min", "value", "autocomplete", "tooltip", "rows", "showMaxTextLength", "additionalAction", "tooltipPosition", "isClearable", "customValidation", "inputId", "isLoading", "showError", "control"], outputs: ["showErrorChange", "controlChange", "isFocus", "isBlur", "onChange", "onKeyDown"] }, { kind: "component", type: BmbTabsComponent, selector: "bmb-tabs", inputs: ["appearanceContrast", "format", "tabs", "selectedTabId"], outputs: ["selectedTabIdChange", "selected"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: BmbSearchCardEmptyStateComponent, selector: "bmb-search-card-empty-state", inputs: ["inputHasValue"] }, { kind: "component", type: BmbSearchCardItemComponent, selector: "bmb-search-card-item", inputs: ["name", "itemId", "subtitle", "icon", "isService", "backgroundColorIcon"], outputs: ["triggerClick"] }] }); }
59
+ }
60
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BmbSearchCardComponent, decorators: [{
61
+ type: Component,
62
+ args: [{ selector: 'bmb-search-card', standalone: true, imports: [
63
+ BmbHomeCardComponent,
64
+ TranslatePipe,
65
+ BmbInputComponent,
66
+ BmbTabsComponent,
67
+ CommonModule,
68
+ BmbSearchCardEmptyStateComponent,
69
+ BmbSearchCardItemComponent,
70
+ ], template: "<section class=\"bmb_search-card\">\n <bmb-home-card\n [title]=\"title() || 'search_card.title' | translate\"\n [showRightButton]=\"false\"\n icon=\"search\"\n bgIconAppearance=\"blue-primary\"\n >\n <bmb-input\n [placeholder]=\"\n inputPlaceholder() || 'search_card.input_placeholder' | translate\n \"\n [icon]=\"'search'\"\n [isClearable]=\"true\"\n [control]=\"inputSearchControl\"\n [isLoading]=\"isLoading()\"\n />\n <section\n class=\"bmb_search-card-results\"\n [ngClass]=\"{\n 'bmb_search-card-results-active':\n computedResults().persons.length && computedResults().services.length\n }\"\n ></section>\n <bmb-tabs [tabs]=\"tabsData()\" [(selectedTabId)]=\"selectedTabId\">\n @switch (selectedTabId()) {\n @case (1) {\n @if (computedResults().services.length) {\n <section class=\"bmb_search-card-results-section\">\n <h3>{{ 'search_card.tabs.services' | translate }}</h3>\n <ul class=\"bmb_search-card-results-list\">\n @for (service of computedResults().services; track $index) {\n <ng-container *ngTemplateOutlet=\"cardItem; context: { item: service }\"></ng-container>\n }\n </ul>\n </section>\n }\n @if (computedResults().persons.length) {\n <section class=\"bmb_search-card-results-section\">\n <h3>{{ 'search_card.tabs.people' | translate }}</h3>\n <ul class=\"bmb_search-card-results-list\">\n @for (person of computedResults().persons; track $index) {\n <ng-container *ngTemplateOutlet=\"cardItem; context: { item: person }\"></ng-container>\n }\n </ul>\n </section>\n }\n }\n @case (2) {\n @if (computedResults().services.length) {\n <section class=\"bmb_search-card-results-section\">\n <h3>{{ 'search_card.tabs.services' | translate }}</h3>\n <ul class=\"bmb_search-card-results-list\">\n @for (service of computedResults().services; track $index) {\n <ng-container *ngTemplateOutlet=\"cardItem; context: { item: service }\"></ng-container>\n }\n </ul>\n </section>\n }\n }\n @case (3) {\n @if (computedResults().persons.length) {\n <section class=\"bmb_search-card-results-section\">\n <h3>{{ 'search_card.tabs.people' | translate }}</h3>\n <ul class=\"bmb_search-card-results-list\">\n @for (person of computedResults().persons; track $index) {\n <ng-container *ngTemplateOutlet=\"cardItem; context: { item: person }\"></ng-container>\n }\n </ul>\n </section>\n }\n }\n }\n </bmb-tabs>\n @if (\n !computedResults().persons.length && !computedResults().services.length && !isLoading()\n ) {\n <bmb-search-card-empty-state\n [inputHasValue]=\"!!inputSearchControl.value\"\n ></bmb-search-card-empty-state>\n }\n {{ isLoading() ? 'Loading...' : '' }}\n </bmb-home-card>\n</section>\n\n<ng-template #cardItem let-item=\"item\">\n <li class=\"bmb_search-card-results-list-item\">\n <bmb-search-card-item\n [name]=\"item.name\"\n [subtitle]=\"item.subtitle\"\n [icon]=\"item.avatarOrIcon\"\n [isService]=\"false\"\n (triggerClick)=\"searchItemClick.emit(item)\"\n ></bmb-search-card-item>\n </li>\n</ng-template>\n", styles: [".bmb_search-card-results-list{padding:0;margin:0;list-style:none}.bmb_search-card-results-section{padding-block-start:var(--bmb-spacing-l)}\n"] }]
71
+ }], ctorParameters: () => [{ type: i1.BmbTranslationsService }] });
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm1iLXNlYXJjaC1jYXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RzLW5nL3NyYy9saWIvY29tcG9uZW50cy9ibWItc2VhcmNoLWNhcmQvYm1iLXNlYXJjaC1jYXJkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RzLW5nL3NyYy9saWIvY29tcG9uZW50cy9ibWItc2VhcmNoLWNhcmQvYm1iLXNlYXJjaC1jYXJkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQVcsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLHFFQUFxRSxDQUFDO0FBRXZILE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHVEQUF1RCxDQUFDOzs7O0FBNEJuRyxNQUFNLE9BQU8sc0JBQXNCO0lBa0RqQyxZQUFvQixtQkFBMkM7UUFBM0Msd0JBQW1CLEdBQW5CLG1CQUFtQixDQUF3QjtRQWpEL0QsVUFBSyxHQUFHLEtBQUssQ0FBUyxFQUFFLENBQUMsQ0FBQztRQUMxQixxQkFBZ0IsR0FBRyxLQUFLLENBQVMsRUFBRSxDQUFDLENBQUM7UUFDckMsWUFBTyxHQUFHLEtBQUssQ0FBNkIsRUFBRSxDQUFDLENBQUM7UUFDaEQsY0FBUyxHQUFHLEtBQUssQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUVsQyxrQkFBYSxHQUFHLEtBQUssQ0FBUyxDQUFDLENBQUMsQ0FBQztRQUVqQyxrQkFBYSxHQUFHLE1BQU0sRUFBVSxDQUFDO1FBQ2pDLG9CQUFlLEdBQUcsTUFBTSxFQUE0QixDQUFDO1FBRXJELHVCQUFrQixHQUFHLElBQUksV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3pDLG9CQUFlLEdBQUcsUUFBUSxDQUd2QixHQUFHLEVBQUU7WUFDTixPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQzFCLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFO2dCQUNaLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxTQUFTLEVBQUUsQ0FBQztvQkFDNUIsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzFCLENBQUM7cUJBQU0sSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO29CQUNsQyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDekIsQ0FBQztnQkFDRCxPQUFPLEdBQUcsQ0FBQztZQUNiLENBQUMsRUFDRCxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFHMUIsQ0FDRixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7UUFDSCxhQUFRLEdBQUcsUUFBUSxDQUFZLEdBQUcsRUFBRSxDQUFDO1lBQ25DO2dCQUNFLEVBQUUsRUFBRSxDQUFDO2dCQUNMLEtBQUssRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsU0FBUyxDQUFDLHNCQUFzQixDQUFDO2dCQUNqRSxLQUFLLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNO2dCQUNyRixRQUFRLEVBQUUsSUFBSTthQUNmO1lBQ0Q7Z0JBQ0UsRUFBRSxFQUFFLENBQUM7Z0JBQ0wsS0FBSyxFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsMkJBQTJCLENBQUM7Z0JBQ3RFLEtBQUssRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxDQUFDLE1BQU07YUFDOUM7WUFDRDtnQkFDRSxFQUFFLEVBQUUsQ0FBQztnQkFDTCxLQUFLLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyx5QkFBeUIsQ0FBQztnQkFDcEUsS0FBSyxFQUFFLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTTthQUM3QztTQUNGLENBQUMsQ0FBQztRQUdELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDdkQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzsrR0F0RFUsc0JBQXNCO21HQUF0QixzQkFBc0IsaTNCQ3JDbkMsd2tIQStGQSx1TURyRUksb0JBQW9CLHVWQUNwQixhQUFhLGtEQUNiLGlCQUFpQixrakJBQ2pCLGdCQUFnQixxS0FDaEIsWUFBWSxvU0FDWixnQ0FBZ0MsbUdBQ2hDLDBCQUEwQjs7NEZBS2pCLHNCQUFzQjtrQkFmbEMsU0FBUzsrQkFDRSxpQkFBaUIsY0FDZixJQUFJLFdBQ1A7d0JBQ1Asb0JBQW9CO3dCQUNwQixhQUFhO3dCQUNiLGlCQUFpQjt3QkFDakIsZ0JBQWdCO3dCQUNoQixZQUFZO3dCQUNaLGdDQUFnQzt3QkFDaEMsMEJBQTBCO3FCQUMzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIGlucHV0LCBtb2RlbCwgb3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCbWJIb21lQ2FyZENvbXBvbmVudCB9IGZyb20gJy4uL2JtYi1ob21lLWNhcmQvYm1iLWhvbWUtY2FyZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVHJhbnNsYXRlUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL3RyYW5zbGF0aW9ucyc7XG5pbXBvcnQgeyBCbWJJbnB1dENvbXBvbmVudCB9IGZyb20gJy4uL2JtYi1pbnB1dC9ibWItaW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IEJtYlRhYnNDb21wb25lbnQsIElCbWJUYWIgfSBmcm9tICcuLi9ibWItdGFicy9ibWItdGFicy5jb21wb25lbnQnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQm1iU2VhcmNoQ2FyZEVtcHR5U3RhdGVDb21wb25lbnQgfSBmcm9tICcuL2JtYi1zZWFyY2gtY2FyZC1lbXB0eS1zdGF0ZS9ibWItc2VhcmNoLWNhcmQtZW1wdHktc3RhdGUuY29tcG9uZW50JztcbmltcG9ydCB7IEJtYlRyYW5zbGF0aW9uc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cmFuc2xhdGlvbnMvdHJhbnNsYXRpb25zLnNlcnZpY2UnO1xuaW1wb3J0IHsgQm1iU2VhcmNoQ2FyZEl0ZW1Db21wb25lbnQgfSBmcm9tICcuL2JtYi1zZWFyY2gtY2FyZC1pdGVtL2JtYi1zZWFyY2gtY2FyZC1pdGVtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJQm1iQ29sb3IgfSBmcm9tICcuLi8uLi90eXBlcy9jb2xvcnMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElCbWJTZWFyY2hDYXJkSXRlbVJlc3VsdCB7XG4gIGlkOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgc3VidGl0bGU6IHN0cmluZztcbiAgYXZhdGFyT3JJY29uOiBzdHJpbmc7XG4gIGJhY2tncm91bmRDb2xvckljb24/OiBJQm1iQ29sb3I7XG4gIHR5cGU6ICdwZXJzb24nIHwgJ3NlcnZpY2UnO1xuICBba2V5OiBzdHJpbmddOiBhbnk7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2JtYi1zZWFyY2gtY2FyZCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBCbWJIb21lQ2FyZENvbXBvbmVudCxcbiAgICBUcmFuc2xhdGVQaXBlLFxuICAgIEJtYklucHV0Q29tcG9uZW50LFxuICAgIEJtYlRhYnNDb21wb25lbnQsXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEJtYlNlYXJjaENhcmRFbXB0eVN0YXRlQ29tcG9uZW50LFxuICAgIEJtYlNlYXJjaENhcmRJdGVtQ29tcG9uZW50LFxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vYm1iLXNlYXJjaC1jYXJkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2JtYi1zZWFyY2gtY2FyZC5jb21wb25lbnQuc2NzcycsXG59KVxuZXhwb3J0IGNsYXNzIEJtYlNlYXJjaENhcmRDb21wb25lbnQge1xuICB0aXRsZSA9IGlucHV0PHN0cmluZz4oJycpO1xuICBpbnB1dFBsYWNlaG9sZGVyID0gaW5wdXQ8c3RyaW5nPignJyk7XG4gIHJlc3VsdHMgPSBpbnB1dDxJQm1iU2VhcmNoQ2FyZEl0ZW1SZXN1bHRbXT4oW10pO1xuICBpc0xvYWRpbmcgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG5cbiAgc2VsZWN0ZWRUYWJJZCA9IG1vZGVsPG51bWJlcj4oMSk7XG5cbiAgdHJpZ2dlclNlYXJjaCA9IG91dHB1dDxzdHJpbmc+KCk7XG4gIHNlYXJjaEl0ZW1DbGljayA9IG91dHB1dDxJQm1iU2VhcmNoQ2FyZEl0ZW1SZXN1bHQ+KCk7XG5cbiAgaW5wdXRTZWFyY2hDb250cm9sID0gbmV3IEZvcm1Db250cm9sKCcnKTtcbiAgY29tcHV0ZWRSZXN1bHRzID0gY29tcHV0ZWQ8e1xuICAgIHNlcnZpY2VzOiBJQm1iU2VhcmNoQ2FyZEl0ZW1SZXN1bHRbXTtcbiAgICBwZXJzb25zOiBJQm1iU2VhcmNoQ2FyZEl0ZW1SZXN1bHRbXTtcbiAgfT4oKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLnJlc3VsdHMoKS5yZWR1Y2UoXG4gICAgICAoYWNjLCBpdGVtKSA9PiB7XG4gICAgICAgIGlmIChpdGVtLnR5cGUgPT09ICdzZXJ2aWNlJykge1xuICAgICAgICAgIGFjYy5zZXJ2aWNlcy5wdXNoKGl0ZW0pO1xuICAgICAgICB9IGVsc2UgaWYgKGl0ZW0udHlwZSA9PT0gJ3BlcnNvbicpIHtcbiAgICAgICAgICBhY2MucGVyc29ucy5wdXNoKGl0ZW0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgICB9LFxuICAgICAgeyBzZXJ2aWNlczogW10sIHBlcnNvbnM6IFtdIH0gYXMge1xuICAgICAgICBzZXJ2aWNlczogSUJtYlNlYXJjaENhcmRJdGVtUmVzdWx0W107XG4gICAgICAgIHBlcnNvbnM6IElCbWJTZWFyY2hDYXJkSXRlbVJlc3VsdFtdO1xuICAgICAgfSxcbiAgICApO1xuICB9KTtcbiAgdGFic0RhdGEgPSBjb21wdXRlZDxJQm1iVGFiW10+KCgpID0+IFtcbiAgICB7XG4gICAgICBpZDogMSxcbiAgICAgIHRpdGxlOiB0aGlzLnRyYW5zbGF0aW9uc1NlcnZpY2UudHJhbnNsYXRlKCdzZWFyY2hfY2FyZC50YWJzLmFsbCcpLFxuICAgICAgYmFkZ2U6IHRoaXMuY29tcHV0ZWRSZXN1bHRzKCkucGVyc29ucy5sZW5ndGggKyB0aGlzLmNvbXB1dGVkUmVzdWx0cygpLnNlcnZpY2VzLmxlbmd0aCxcbiAgICAgIGlzQWN0aXZlOiB0cnVlLFxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6IDIsXG4gICAgICB0aXRsZTogdGhpcy50cmFuc2xhdGlvbnNTZXJ2aWNlLnRyYW5zbGF0ZSgnc2VhcmNoX2NhcmQudGFicy5zZXJ2aWNlcycpLFxuICAgICAgYmFkZ2U6IHRoaXMuY29tcHV0ZWRSZXN1bHRzKCkuc2VydmljZXMubGVuZ3RoLFxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6IDMsXG4gICAgICB0aXRsZTogdGhpcy50cmFuc2xhdGlvbnNTZXJ2aWNlLnRyYW5zbGF0ZSgnc2VhcmNoX2NhcmQudGFicy5wZW9wbGUnKSxcbiAgICAgIGJhZGdlOiB0aGlzLmNvbXB1dGVkUmVzdWx0cygpLnBlcnNvbnMubGVuZ3RoLFxuICAgIH0sXG4gIF0pO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdHJhbnNsYXRpb25zU2VydmljZTogQm1iVHJhbnNsYXRpb25zU2VydmljZSkge1xuICAgIHRoaXMuaW5wdXRTZWFyY2hDb250cm9sLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICB0aGlzLnRyaWdnZXJTZWFyY2guZW1pdCh2YWx1ZSB8fCAnJyk7XG4gICAgfSk7XG4gIH1cbn1cbiIsIjxzZWN0aW9uIGNsYXNzPVwiYm1iX3NlYXJjaC1jYXJkXCI+XG4gIDxibWItaG9tZS1jYXJkXG4gICAgW3RpdGxlXT1cInRpdGxlKCkgfHwgJ3NlYXJjaF9jYXJkLnRpdGxlJyB8IHRyYW5zbGF0ZVwiXG4gICAgW3Nob3dSaWdodEJ1dHRvbl09XCJmYWxzZVwiXG4gICAgaWNvbj1cInNlYXJjaFwiXG4gICAgYmdJY29uQXBwZWFyYW5jZT1cImJsdWUtcHJpbWFyeVwiXG4gID5cbiAgICA8Ym1iLWlucHV0XG4gICAgICBbcGxhY2Vob2xkZXJdPVwiXG4gICAgICAgIGlucHV0UGxhY2Vob2xkZXIoKSB8fCAnc2VhcmNoX2NhcmQuaW5wdXRfcGxhY2Vob2xkZXInIHwgdHJhbnNsYXRlXG4gICAgICBcIlxuICAgICAgW2ljb25dPVwiJ3NlYXJjaCdcIlxuICAgICAgW2lzQ2xlYXJhYmxlXT1cInRydWVcIlxuICAgICAgW2NvbnRyb2xdPVwiaW5wdXRTZWFyY2hDb250cm9sXCJcbiAgICAgIFtpc0xvYWRpbmddPVwiaXNMb2FkaW5nKClcIlxuICAgIC8+XG4gICAgPHNlY3Rpb25cbiAgICAgIGNsYXNzPVwiYm1iX3NlYXJjaC1jYXJkLXJlc3VsdHNcIlxuICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAnYm1iX3NlYXJjaC1jYXJkLXJlc3VsdHMtYWN0aXZlJzpcbiAgICAgICAgICBjb21wdXRlZFJlc3VsdHMoKS5wZXJzb25zLmxlbmd0aCAmJiBjb21wdXRlZFJlc3VsdHMoKS5zZXJ2aWNlcy5sZW5ndGhcbiAgICAgIH1cIlxuICAgID48L3NlY3Rpb24+XG4gICAgPGJtYi10YWJzIFt0YWJzXT1cInRhYnNEYXRhKClcIiBbKHNlbGVjdGVkVGFiSWQpXT1cInNlbGVjdGVkVGFiSWRcIj5cbiAgICAgIEBzd2l0Y2ggKHNlbGVjdGVkVGFiSWQoKSkge1xuICAgICAgICBAY2FzZSAoMSkge1xuICAgICAgICAgIEBpZiAoY29tcHV0ZWRSZXN1bHRzKCkuc2VydmljZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz1cImJtYl9zZWFyY2gtY2FyZC1yZXN1bHRzLXNlY3Rpb25cIj5cbiAgICAgICAgICAgICAgPGgzPnt7ICdzZWFyY2hfY2FyZC50YWJzLnNlcnZpY2VzJyB8IHRyYW5zbGF0ZSB9fTwvaDM+XG4gICAgICAgICAgICAgIDx1bCBjbGFzcz1cImJtYl9zZWFyY2gtY2FyZC1yZXN1bHRzLWxpc3RcIj5cbiAgICAgICAgICAgICAgICBAZm9yIChzZXJ2aWNlIG9mIGNvbXB1dGVkUmVzdWx0cygpLnNlcnZpY2VzOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjYXJkSXRlbTsgY29udGV4dDogeyBpdGVtOiBzZXJ2aWNlIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICA8L3NlY3Rpb24+XG4gICAgICAgICAgfVxuICAgICAgICAgIEBpZiAoY29tcHV0ZWRSZXN1bHRzKCkucGVyc29ucy5sZW5ndGgpIHtcbiAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPVwiYm1iX3NlYXJjaC1jYXJkLXJlc3VsdHMtc2VjdGlvblwiPlxuICAgICAgICAgICAgICA8aDM+e3sgJ3NlYXJjaF9jYXJkLnRhYnMucGVvcGxlJyB8IHRyYW5zbGF0ZSB9fTwvaDM+XG4gICAgICAgICAgICAgIDx1bCBjbGFzcz1cImJtYl9zZWFyY2gtY2FyZC1yZXN1bHRzLWxpc3RcIj5cbiAgICAgICAgICAgICAgICBAZm9yIChwZXJzb24gb2YgY29tcHV0ZWRSZXN1bHRzKCkucGVyc29uczsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY2FyZEl0ZW07IGNvbnRleHQ6IHsgaXRlbTogcGVyc29uIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICA8L3NlY3Rpb24+XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIEBjYXNlICgyKSB7XG4gICAgICAgICAgQGlmIChjb21wdXRlZFJlc3VsdHMoKS5zZXJ2aWNlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPVwiYm1iX3NlYXJjaC1jYXJkLXJlc3VsdHMtc2VjdGlvblwiPlxuICAgICAgICAgICAgICA8aDM+e3sgJ3NlYXJjaF9jYXJkLnRhYnMuc2VydmljZXMnIHwgdHJhbnNsYXRlIH19PC9oMz5cbiAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiYm1iX3NlYXJjaC1jYXJkLXJlc3VsdHMtbGlzdFwiPlxuICAgICAgICAgICAgICAgIEBmb3IgKHNlcnZpY2Ugb2YgY29tcHV0ZWRSZXN1bHRzKCkuc2VydmljZXM7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNhcmRJdGVtOyBjb250ZXh0OiB7IGl0ZW06IHNlcnZpY2UgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgIDwvc2VjdGlvbj5cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKDMpIHtcbiAgICAgICAgICBAaWYgKGNvbXB1dGVkUmVzdWx0cygpLnBlcnNvbnMubGVuZ3RoKSB7XG4gICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz1cImJtYl9zZWFyY2gtY2FyZC1yZXN1bHRzLXNlY3Rpb25cIj5cbiAgICAgICAgICAgICAgPGgzPnt7ICdzZWFyY2hfY2FyZC50YWJzLnBlb3BsZScgfCB0cmFuc2xhdGUgfX08L2gzPlxuICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJibWJfc2VhcmNoLWNhcmQtcmVzdWx0cy1saXN0XCI+XG4gICAgICAgICAgICAgICAgQGZvciAocGVyc29uIG9mIGNvbXB1dGVkUmVzdWx0cygpLnBlcnNvbnM7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNhcmRJdGVtOyBjb250ZXh0OiB7IGl0ZW06IHBlcnNvbiB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIDwvYm1iLXRhYnM+XG4gICAgQGlmIChcbiAgICAgICFjb21wdXRlZFJlc3VsdHMoKS5wZXJzb25zLmxlbmd0aCAmJiAhY29tcHV0ZWRSZXN1bHRzKCkuc2VydmljZXMubGVuZ3RoICYmICFpc0xvYWRpbmcoKVxuICAgICkge1xuICAgICAgPGJtYi1zZWFyY2gtY2FyZC1lbXB0eS1zdGF0ZVxuICAgICAgICBbaW5wdXRIYXNWYWx1ZV09XCIhIWlucHV0U2VhcmNoQ29udHJvbC52YWx1ZVwiXG4gICAgICA+PC9ibWItc2VhcmNoLWNhcmQtZW1wdHktc3RhdGU+XG4gICAgfVxuICAgIHt7IGlzTG9hZGluZygpID8gJ0xvYWRpbmcuLi4nIDogJycgfX1cbiAgPC9ibWItaG9tZS1jYXJkPlxuPC9zZWN0aW9uPlxuXG48bmctdGVtcGxhdGUgI2NhcmRJdGVtIGxldC1pdGVtPVwiaXRlbVwiPlxuICA8bGkgY2xhc3M9XCJibWJfc2VhcmNoLWNhcmQtcmVzdWx0cy1saXN0LWl0ZW1cIj5cbiAgICA8Ym1iLXNlYXJjaC1jYXJkLWl0ZW1cbiAgICAgIFtuYW1lXT1cIml0ZW0ubmFtZVwiXG4gICAgICBbc3VidGl0bGVdPVwiaXRlbS5zdWJ0aXRsZVwiXG4gICAgICBbaWNvbl09XCJpdGVtLmF2YXRhck9ySWNvblwiXG4gICAgICBbaXNTZXJ2aWNlXT1cImZhbHNlXCJcbiAgICAgICh0cmlnZ2VyQ2xpY2spPVwic2VhcmNoSXRlbUNsaWNrLmVtaXQoaXRlbSlcIlxuICAgID48L2JtYi1zZWFyY2gtY2FyZC1pdGVtPlxuICA8L2xpPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -114,7 +114,7 @@ export class BmbSearchInputComponent {
114
114
  }
115
115
  }
116
116
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BmbSearchInputComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
117
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.14", type: BmbSearchInputComponent, isStandalone: true, selector: "bmb-search-input", inputs: { inputId: { classPropertyName: "inputId", publicName: "inputId", isSignal: true, isRequired: false, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null }, isLoading: { classPropertyName: "isLoading", publicName: "isLoading", isSignal: true, isRequired: false, transformFunction: null }, isServerSideFilter: { classPropertyName: "isServerSideFilter", publicName: "isServerSideFilter", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, serverSideFilteredData: { classPropertyName: "serverSideFilteredData", publicName: "serverSideFilteredData", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onValueChange: "onValueChange", onServerSideFilterEvent: "onServerSideFilterEvent", onClearField: "onClearField" }, usesOnChanges: true, ngImport: i0, template: "<section class=\"bmb_search-input\">\n <section\n class=\"bmb_search-input-container\"\n clickOutside\n (clickOutside)=\"closeList()\"\n >\n <bmb-input-content\n class=\"bmb_search-input-field\"\n [inputId]=\"inputId()\"\n [name]=\"name()\"\n icon=\"search\"\n [control]=\"filterControl\"\n [placeholder]=\"placeholder()\"\n [isClearable]=\"true\"\n (keydown)=\"handleKeyDown($event)\"\n (click)=\"handleItemClick()\"\n (clearEvent)=\"handleClearFilter()\"\n />\n <dialog [open]=\"isDialogOpen\" class=\"bmb_generic-dialog\">\n <bmb-dropdown-content\n class=\"bmb_search-input-dialog\"\n name=\"list\"\n [selectedOption]=\"filterControl.value\"\n [(items)]=\"filteredData\"\n [(isOpen)]=\"isDialogOpen\"\n />\n </dialog>\n </section>\n</section>\n", styles: [".bmb_search-input{padding-bottom:var(--bmb-spacing-s)}.bmb_search-input-container{position:relative}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: ClickOutsideDirective, selector: "[clickOutside]", outputs: ["clickOutside"] }, { kind: "component", type: BmbInputContentComponent, selector: "bmb-input-content", inputs: ["type", "placeholder", "icon", "appearance", "isRequired", "name", "spellcheck", "heightTextArea", "maxLength", "minLength", "pattern", "max", "min", "inputId", "autoComplete", "rows", "isReadOnly", "additionalAction", "isClearable", "isError", "isHidden", "showStates", "control"], outputs: ["controlChange", "onFocus", "onBlur", "onChange", "onKeyDown", "onKeyUp", "clearEvent"] }, { kind: "component", type: BmbDropdownContentComponent, selector: "bmb-dropdown-content", inputs: ["selectedOption", "items", "isKeyboardEvent", "enableFilter", "customFilterFunction", "isOpen"], outputs: ["itemsChange", "isKeyboardEventChange", "clickedItem", "isOpenChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
117
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.14", type: BmbSearchInputComponent, isStandalone: true, selector: "bmb-search-input", inputs: { inputId: { classPropertyName: "inputId", publicName: "inputId", isSignal: true, isRequired: false, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null }, isLoading: { classPropertyName: "isLoading", publicName: "isLoading", isSignal: true, isRequired: false, transformFunction: null }, isServerSideFilter: { classPropertyName: "isServerSideFilter", publicName: "isServerSideFilter", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, serverSideFilteredData: { classPropertyName: "serverSideFilteredData", publicName: "serverSideFilteredData", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onValueChange: "onValueChange", onServerSideFilterEvent: "onServerSideFilterEvent", onClearField: "onClearField" }, usesOnChanges: true, ngImport: i0, template: "<section class=\"bmb_search-input\">\n <section\n class=\"bmb_search-input-container\"\n clickOutside\n (clickOutside)=\"closeList()\"\n >\n <bmb-input-content\n class=\"bmb_search-input-field\"\n [inputId]=\"inputId()\"\n [name]=\"name()\"\n icon=\"search\"\n [control]=\"filterControl\"\n [placeholder]=\"placeholder()\"\n [isClearable]=\"true\"\n (keydown)=\"handleKeyDown($event)\"\n (click)=\"handleItemClick()\"\n (clearEvent)=\"handleClearFilter()\"\n />\n <dialog [open]=\"isDialogOpen\" class=\"bmb_generic-dialog\">\n <bmb-dropdown-content\n class=\"bmb_search-input-dialog\"\n name=\"list\"\n [selectedOption]=\"filterControl.value\"\n [(items)]=\"filteredData\"\n [(isOpen)]=\"isDialogOpen\"\n />\n </dialog>\n </section>\n</section>\n", styles: [".bmb_search-input{padding-bottom:var(--bmb-spacing-s)}.bmb_search-input-container{position:relative}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: ClickOutsideDirective, selector: "[clickOutside]", outputs: ["clickOutside"] }, { kind: "component", type: BmbInputContentComponent, selector: "bmb-input-content", inputs: ["type", "placeholder", "icon", "appearance", "isRequired", "name", "spellcheck", "heightTextArea", "maxLength", "minLength", "pattern", "max", "min", "inputId", "autoComplete", "rows", "isReadOnly", "additionalAction", "isClearable", "isError", "isHidden", "showStates", "isLoading", "control"], outputs: ["controlChange", "onFocus", "onBlur", "onChange", "onKeyDown", "onKeyUp", "clearEvent"] }, { kind: "component", type: BmbDropdownContentComponent, selector: "bmb-dropdown-content", inputs: ["selectedOption", "items", "isKeyboardEvent", "enableFilter", "customFilterFunction", "isOpen"], outputs: ["itemsChange", "isKeyboardEventChange", "clickedItem", "isOpenChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
118
118
  }
119
119
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BmbSearchInputComponent, decorators: [{
120
120
  type: Component,
@@ -126,4 +126,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
126
126
  BmbDropdownContentComponent,
127
127
  ], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<section class=\"bmb_search-input\">\n <section\n class=\"bmb_search-input-container\"\n clickOutside\n (clickOutside)=\"closeList()\"\n >\n <bmb-input-content\n class=\"bmb_search-input-field\"\n [inputId]=\"inputId()\"\n [name]=\"name()\"\n icon=\"search\"\n [control]=\"filterControl\"\n [placeholder]=\"placeholder()\"\n [isClearable]=\"true\"\n (keydown)=\"handleKeyDown($event)\"\n (click)=\"handleItemClick()\"\n (clearEvent)=\"handleClearFilter()\"\n />\n <dialog [open]=\"isDialogOpen\" class=\"bmb_generic-dialog\">\n <bmb-dropdown-content\n class=\"bmb_search-input-dialog\"\n name=\"list\"\n [selectedOption]=\"filterControl.value\"\n [(items)]=\"filteredData\"\n [(isOpen)]=\"isDialogOpen\"\n />\n </dialog>\n </section>\n</section>\n", styles: [".bmb_search-input{padding-bottom:var(--bmb-spacing-s)}.bmb_search-input-container{position:relative}\n"] }]
128
128
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }] });
129
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm1iLXNlYXJjaC1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kcy1uZy9zcmMvbGliL2NvbXBvbmVudHMvYm1iLXNlYXJjaC1pbnB1dC9ibWItc2VhcmNoLWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RzLW5nL3NyYy9saWIvY29tcG9uZW50cy9ibWItc2VhcmNoLWlucHV0L2JtYi1zZWFyY2gtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsdUJBQXVCLEVBRXZCLEtBQUssRUFDTCxNQUFNLEdBSVAsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzVDLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBQzNHLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDREQUE0RCxDQUFDO0FBQ3RHLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBRXRGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7QUFpQjlFLE1BQU0sT0FBTyx1QkFBdUI7SUFvQmxDLFlBQW9CLEdBQXNCO1FBQXRCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBbkIxQyxZQUFPLEdBQUcsS0FBSyxDQUFTLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDbkMsU0FBSSxHQUFHLEtBQUssQ0FBUyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ2hDLFNBQUksR0FBRyxLQUFLLENBQVcsRUFBRSxDQUFDLENBQUM7UUFDM0IsY0FBUyxHQUFHLEtBQUssQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUNsQyx1QkFBa0IsR0FBRyxLQUFLLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDM0MsZ0JBQVcsR0FBRyxLQUFLLENBQVMsRUFBRSxDQUFDLENBQUM7UUFDaEMsMkJBQXNCLEdBQUcsS0FBSyxDQUFXLEVBQUUsQ0FBQyxDQUFDO1FBRTdDLGtCQUFhLEdBQUcsTUFBTSxFQUFVLENBQUM7UUFDakMsNEJBQXVCLEdBQUcsTUFBTSxFQUFVLENBQUM7UUFDM0MsaUJBQVksR0FBRyxNQUFNLEVBQVcsQ0FBQztRQUVqQyxVQUFLLEdBQVcsRUFBRSxDQUFDO1FBQ25CLGlCQUFZLEdBQW9CLEVBQUUsQ0FBQztRQUNuQyxRQUFHLEdBQVcsT0FBTyxFQUFFLENBQUM7UUFDeEIsaUJBQVksR0FBWSxLQUFLLENBQUM7UUFDOUIsa0JBQWEsR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO1FBQ2xDLFVBQUssR0FBb0IsRUFBRSxDQUFDO0lBRWlCLENBQUM7SUFFOUMsZUFBZTtRQUNiLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWTthQUM1QixJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ3ZCLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ25CLElBQUksQ0FBQyxZQUFZLEdBQUcsYUFBYSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDckQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUMzQixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsd0JBQXdCLENBQUMsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsRUFBRSxDQUFDO1lBQ25FLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLHdCQUF3QixDQUFDLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDbkUsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ2hDLENBQUM7UUFDRCxJQUNFLE9BQU8sQ0FBQyx3QkFBd0IsQ0FBQztZQUNqQyxPQUFPLENBQUMsV0FBVyxDQUFDO1lBQ3BCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxFQUN6QixDQUFDO1lBQ0QsSUFBSSxDQUFDLFlBQVk7Z0JBQ2YsT0FBTyxDQUFDLHdCQUF3QixDQUFDLEVBQUUsWUFBWSxFQUFFLE1BQU07b0JBQ3ZELE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRSxZQUFZLENBQUM7UUFDdkMsQ0FBQztRQUVELElBQUksT0FBTyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7WUFDekIsSUFBSSxPQUFPLENBQUMsV0FBVyxDQUFDLEVBQUUsWUFBWSxFQUFFLENBQUM7Z0JBQ3ZDLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDL0IsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDOUIsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVyxDQUFDLElBQWM7UUFDeEIsSUFBSSxDQUFDLEtBQUssR0FBRyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBc0IsRUFBRSxFQUFFO1lBQ3JELE9BQU87Z0JBQ0wsR0FBRyxPQUFPO2dCQUNWLE1BQU0sRUFBRSxHQUFHLEVBQUU7b0JBQ1gsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUNqQyxDQUFDO2FBQ2UsQ0FBQztRQUNyQixDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsU0FBUztRQUNQLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO0lBQzVCLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxPQUFzQjtRQUNyQyxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDO1FBQzVCLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRW5DLElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFLEVBQUUsQ0FBQztZQUM5QixJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLEtBQU0sQ0FBQyxDQUFDO1FBQzVDLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBTSxDQUFDLENBQUM7UUFDbEMsQ0FBQztJQUNILENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDekMsQ0FBQztJQUVELGlCQUFpQjtRQUNmLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCxhQUFhLENBQUMsS0FBb0I7UUFDaEMsTUFBTSwwQkFBMEIsR0FBRyxDQUFDLEdBQUcsRUFBRSxXQUFXLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDOUQsTUFBTSx5QkFBeUIsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRTVDLElBQUksMEJBQTBCLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ25ELElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWTtnQkFBRSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFFL0MsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQzlCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDdkIsT0FBTztZQUNULENBQUM7WUFDRCxPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUkseUJBQXlCLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ2xELEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUMvQixNQUFNLGNBQWMsR0FBVyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQztnQkFFeEQsSUFBSSxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7b0JBQ3JCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzlDLENBQUM7WUFDSCxDQUFDO1lBQ0QsT0FBTztRQUNULENBQUM7SUFDSCxDQUFDOytHQXRIVSx1QkFBdUI7bUdBQXZCLHVCQUF1Qiw0cUNDcENwQyxvMkJBNkJBLCtKREpJLFlBQVksOEJBQ1osbUJBQW1CLCtCQUNuQixxQkFBcUIsc0ZBQ3JCLHdCQUF3QixxY0FDeEIsMkJBQTJCOzs0RkFPbEIsdUJBQXVCO2tCQWZuQyxTQUFTOytCQUNFLGtCQUFrQixjQUNoQixJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixtQkFBbUI7d0JBQ25CLHFCQUFxQjt3QkFDckIsd0JBQXdCO3dCQUN4QiwyQkFBMkI7cUJBQzVCLGlCQUdjLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIGlucHV0LFxuICBvdXRwdXQsXG4gIE9uQ2hhbmdlcyxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgQWZ0ZXJWaWV3SW5pdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBnZXRVVUlEIH0gZnJvbSAnLi4vLi4vdXRpbHMvdXRpbHMnO1xuaW1wb3J0IHsgQm1iRHJvcGRvd25Db250ZW50Q29tcG9uZW50IH0gZnJvbSAnLi4vdXRpbHMvYm1iLWRyb3Bkb3duLWNvbnRlbnQvYm1iLWRyb3Bkb3duLWNvbnRlbnQuY29tcG9uZW50JztcbmltcG9ydCB7IEJtYklucHV0Q29udGVudENvbXBvbmVudCB9IGZyb20gJy4uL2JtYi1pbnB1dC9ibWItaW5wdXQtY29udGVudC9ibWItaW5wdXQtY29udGVudC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2xpY2tPdXRzaWRlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy91dGlscy9jbGlja291dHNpZGUuZGlyZWN0aXZlJztcbmltcG9ydCB7IElEcm9wZG93bkl0ZW0gfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBjb252ZXJ0TGlzdFRvU2VsZWN0TGlzdCwgZmlsdGVyZWRWYWx1ZSB9IGZyb20gJy4uLy4uL3V0aWxzL2Ryb3Bkb3duJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYm1iLXNlYXJjaC1pbnB1dCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBDbGlja091dHNpZGVEaXJlY3RpdmUsXG4gICAgQm1iSW5wdXRDb250ZW50Q29tcG9uZW50LFxuICAgIEJtYkRyb3Bkb3duQ29udGVudENvbXBvbmVudCxcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2JtYi1zZWFyY2gtaW5wdXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vYm1iLXNlYXJjaC1pbnB1dC5jb21wb25lbnQuc2NzcycsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBCbWJTZWFyY2hJbnB1dENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcyB7XG4gIGlucHV0SWQgPSBpbnB1dDxzdHJpbmc+KGdldFVVSUQoKSk7XG4gIG5hbWUgPSBpbnB1dDxzdHJpbmc+KGdldFVVSUQoKSk7XG4gIGRhdGEgPSBpbnB1dDxzdHJpbmdbXT4oW10pO1xuICBpc0xvYWRpbmcgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIGlzU2VydmVyU2lkZUZpbHRlciA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcGxhY2Vob2xkZXIgPSBpbnB1dDxzdHJpbmc+KCcnKTtcbiAgc2VydmVyU2lkZUZpbHRlcmVkRGF0YSA9IGlucHV0PHN0cmluZ1tdPihbXSk7XG5cbiAgb25WYWx1ZUNoYW5nZSA9IG91dHB1dDxzdHJpbmc+KCk7XG4gIG9uU2VydmVyU2lkZUZpbHRlckV2ZW50ID0gb3V0cHV0PHN0cmluZz4oKTtcbiAgb25DbGVhckZpZWxkID0gb3V0cHV0PGJvb2xlYW4+KCk7XG5cbiAgdmFsdWU6IHN0cmluZyA9ICcnO1xuICBmaWx0ZXJlZERhdGE6IElEcm9wZG93bkl0ZW1bXSA9IFtdO1xuICB1aWQ6IHN0cmluZyA9IGdldFVVSUQoKTtcbiAgaXNEaWFsb2dPcGVuOiBib29sZWFuID0gZmFsc2U7XG4gIGZpbHRlckNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woKTtcbiAgaXRlbXM6IElEcm9wZG93bkl0ZW1bXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5maWx0ZXJDb250cm9sLnZhbHVlQ2hhbmdlc1xuICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDMwMCkpXG4gICAgICAuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuICAgICAgICB0aGlzLmZpbHRlcmVkRGF0YSA9IGZpbHRlcmVkVmFsdWUodmFsdWUsIHRoaXMuaXRlbXMpO1xuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1snc2VydmVyU2lkZUZpbHRlcmVkRGF0YSddICYmIHRoaXMuaXNTZXJ2ZXJTaWRlRmlsdGVyKCkpIHtcbiAgICAgIHRoaXMuaW5pdE9wdGlvbnMoY2hhbmdlc1snc2VydmVyU2lkZUZpbHRlcmVkRGF0YSddLmN1cnJlbnRWYWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaW5pdE9wdGlvbnModGhpcy5kYXRhKCkpO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICBjaGFuZ2VzWydzZXJ2ZXJTaWRlRmlsdGVyZWREYXRhJ10gJiZcbiAgICAgIGNoYW5nZXNbJ2lzTG9hZGluZyddICYmXG4gICAgICB0aGlzLmlzU2VydmVyU2lkZUZpbHRlcigpXG4gICAgKSB7XG4gICAgICB0aGlzLmlzRGlhbG9nT3BlbiA9XG4gICAgICAgIGNoYW5nZXNbJ3NlcnZlclNpZGVGaWx0ZXJlZERhdGEnXT8uY3VycmVudFZhbHVlPy5sZW5ndGggfHxcbiAgICAgICAgY2hhbmdlc1snaXNMb2FkaW5nJ10/LmN1cnJlbnRWYWx1ZTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlc1snaXNMb2FkaW5nJ10pIHtcbiAgICAgIGlmIChjaGFuZ2VzWydpc0xvYWRpbmcnXT8uY3VycmVudFZhbHVlKSB7XG4gICAgICAgIHRoaXMuZmlsdGVyQ29udHJvbC5kaXNhYmxlKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmZpbHRlckNvbnRyb2wuZW5hYmxlKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaW5pdE9wdGlvbnMobGlzdDogc3RyaW5nW10pOiB2b2lkIHtcbiAgICB0aGlzLml0ZW1zID0gY29udmVydExpc3RUb1NlbGVjdExpc3QobGlzdCk7XG4gICAgdGhpcy5pdGVtcyA9IHRoaXMuaXRlbXMubWFwKChlbGVtZW50OiBJRHJvcGRvd25JdGVtKSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5lbGVtZW50LFxuICAgICAgICBhY3Rpb246ICgpID0+IHtcbiAgICAgICAgICB0aGlzLnNldFNlbGVjdGVkVmFsdWUoZWxlbWVudCk7XG4gICAgICAgIH0sXG4gICAgICB9IGFzIElEcm9wZG93bkl0ZW07XG4gICAgfSk7XG5cbiAgICB0aGlzLmZpbHRlcmVkRGF0YSA9IFsuLi50aGlzLml0ZW1zXTtcbiAgfVxuXG4gIGNsb3NlTGlzdCgpIHtcbiAgICB0aGlzLmlzRGlhbG9nT3BlbiA9IGZhbHNlO1xuICB9XG5cbiAgc2V0U2VsZWN0ZWRWYWx1ZShlbGVtZW50OiBJRHJvcGRvd25JdGVtKTogdm9pZCB7XG4gICAgY29uc3QgdmFsdWUgPSBlbGVtZW50LnZhbHVlO1xuICAgIHRoaXMuZmlsdGVyQ29udHJvbC5zZXRWYWx1ZSh2YWx1ZSk7XG5cbiAgICBpZiAodGhpcy5pc1NlcnZlclNpZGVGaWx0ZXIoKSkge1xuICAgICAgdGhpcy5vblNlcnZlclNpZGVGaWx0ZXJFdmVudC5lbWl0KHZhbHVlISk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub25WYWx1ZUNoYW5nZS5lbWl0KHZhbHVlISk7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlSXRlbUNsaWNrKCk6IHZvaWQge1xuICAgIHRoaXMuaXNEaWFsb2dPcGVuID0gIXRoaXMuaXNEaWFsb2dPcGVuO1xuICB9XG5cbiAgaGFuZGxlQ2xlYXJGaWx0ZXIoKTogdm9pZCB7XG4gICAgdGhpcy5vbkNsZWFyRmllbGQuZW1pdCh0cnVlKTtcbiAgfVxuXG4gIGhhbmRsZUtleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBjb25zdCBrZXlib2FyZFZhbHVlc1RvT3BlbkRpYWxvZyA9IFsnICcsICdBcnJvd0Rvd24nLCAnRG93biddO1xuICAgIGNvbnN0IGtleWJvYXJkVmFsdWVzVG9BZGRPcHRpb24gPSBbJ0VudGVyJ107XG5cbiAgICBpZiAoa2V5Ym9hcmRWYWx1ZXNUb09wZW5EaWFsb2cuaW5jbHVkZXMoZXZlbnQua2V5KSkge1xuICAgICAgaWYgKCF0aGlzLmlzRGlhbG9nT3BlbikgdGhpcy5oYW5kbGVJdGVtQ2xpY2soKTtcblxuICAgICAgaWYgKCF0aGlzLmZpbHRlcmVkRGF0YS5sZW5ndGgpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChrZXlib2FyZFZhbHVlc1RvQWRkT3B0aW9uLmluY2x1ZGVzKGV2ZW50LmtleSkpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBpZiAoISF0aGlzLmZpbHRlckNvbnRyb2wudmFsdWUpIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRMZW5ndGg6IG51bWJlciA9IHRoaXMuZmlsdGVyZWREYXRhLmxlbmd0aDtcblxuICAgICAgICBpZiAoISFzZWxlY3RlZExlbmd0aCkge1xuICAgICAgICAgIHRoaXMuc2V0U2VsZWN0ZWRWYWx1ZSh0aGlzLmZpbHRlcmVkRGF0YVswXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cbn1cbiIsIjxzZWN0aW9uIGNsYXNzPVwiYm1iX3NlYXJjaC1pbnB1dFwiPlxuICA8c2VjdGlvblxuICAgIGNsYXNzPVwiYm1iX3NlYXJjaC1pbnB1dC1jb250YWluZXJcIlxuICAgIGNsaWNrT3V0c2lkZVxuICAgIChjbGlja091dHNpZGUpPVwiY2xvc2VMaXN0KClcIlxuICA+XG4gICAgPGJtYi1pbnB1dC1jb250ZW50XG4gICAgICBjbGFzcz1cImJtYl9zZWFyY2gtaW5wdXQtZmllbGRcIlxuICAgICAgW2lucHV0SWRdPVwiaW5wdXRJZCgpXCJcbiAgICAgIFtuYW1lXT1cIm5hbWUoKVwiXG4gICAgICBpY29uPVwic2VhcmNoXCJcbiAgICAgIFtjb250cm9sXT1cImZpbHRlckNvbnRyb2xcIlxuICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyKClcIlxuICAgICAgW2lzQ2xlYXJhYmxlXT1cInRydWVcIlxuICAgICAgKGtleWRvd24pPVwiaGFuZGxlS2V5RG93bigkZXZlbnQpXCJcbiAgICAgIChjbGljayk9XCJoYW5kbGVJdGVtQ2xpY2soKVwiXG4gICAgICAoY2xlYXJFdmVudCk9XCJoYW5kbGVDbGVhckZpbHRlcigpXCJcbiAgICAvPlxuICAgIDxkaWFsb2cgW29wZW5dPVwiaXNEaWFsb2dPcGVuXCIgY2xhc3M9XCJibWJfZ2VuZXJpYy1kaWFsb2dcIj5cbiAgICAgIDxibWItZHJvcGRvd24tY29udGVudFxuICAgICAgICBjbGFzcz1cImJtYl9zZWFyY2gtaW5wdXQtZGlhbG9nXCJcbiAgICAgICAgbmFtZT1cImxpc3RcIlxuICAgICAgICBbc2VsZWN0ZWRPcHRpb25dPVwiZmlsdGVyQ29udHJvbC52YWx1ZVwiXG4gICAgICAgIFsoaXRlbXMpXT1cImZpbHRlcmVkRGF0YVwiXG4gICAgICAgIFsoaXNPcGVuKV09XCJpc0RpYWxvZ09wZW5cIlxuICAgICAgLz5cbiAgICA8L2RpYWxvZz5cbiAgPC9zZWN0aW9uPlxuPC9zZWN0aW9uPlxuIl19
129
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm1iLXNlYXJjaC1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kcy1uZy9zcmMvbGliL2NvbXBvbmVudHMvYm1iLXNlYXJjaC1pbnB1dC9ibWItc2VhcmNoLWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RzLW5nL3NyYy9saWIvY29tcG9uZW50cy9ibWItc2VhcmNoLWlucHV0L2JtYi1zZWFyY2gtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsdUJBQXVCLEVBRXZCLEtBQUssRUFDTCxNQUFNLEdBSVAsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzVDLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBQzNHLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDREQUE0RCxDQUFDO0FBQ3RHLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBRXRGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7QUFpQjlFLE1BQU0sT0FBTyx1QkFBdUI7SUFvQmxDLFlBQW9CLEdBQXNCO1FBQXRCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBbkIxQyxZQUFPLEdBQUcsS0FBSyxDQUFTLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDbkMsU0FBSSxHQUFH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RCxPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUkseUJBQXlCLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ2xELEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUMvQixNQUFNLGNBQWMsR0FBVyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQztnQkFFeEQsSUFBSSxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7b0JBQ3JCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzlDLENBQUM7WUFDSCxDQUFDO1lBQ0QsT0FBTztRQUNULENBQUM7SUFDSCxDQUFDOytHQXRIVSx1QkFBdUI7bUdBQXZCLHVCQUF1Qiw0cUNDcENwQyxvMkJBNkJBLCtKREpJLFlBQVksOEJBQ1osbUJBQW1CLCtCQUNuQixxQkFBcUIsc0ZBQ3JCLHdCQUF3QixrZEFDeEIsMkJBQTJCOzs0RkFPbEIsdUJBQXVCO2tCQWZuQyxTQUFTOytCQUNFLGtCQUFrQixjQUNoQixJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixtQkFBbUI7d0JBQ25CLHFCQUFxQjt3QkFDckIsd0JBQXdCO3dCQUN4QiwyQkFBMkI7cUJBQzVCLGlCQUdjLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIGlucHV0LFxuICBvdXRwdXQsXG4gIE9uQ2hhbmdlcyxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgQWZ0ZXJWaWV3SW5pdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBnZXRVVUlEIH0gZnJvbSAnLi4vLi4vdXRpbHMvdXRpbHMnO1xuaW1wb3J0IHsgQm1iRHJvcGRvd25Db250ZW50Q29tcG9uZW50IH0gZnJvbSAnLi4vdXRpbHMvYm1iLWRyb3Bkb3duLWNvbnRlbnQvYm1iLWRyb3Bkb3duLWNvbnRlbnQuY29tcG9uZW50JztcbmltcG9ydCB7IEJtYklucHV0Q29udGVudENvbXBvbmVudCB9IGZyb20gJy4uL2JtYi1pbnB1dC9ibWItaW5wdXQtY29udGVudC9ibWItaW5wdXQtY29udGVudC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2xpY2tPdXRzaWRlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy91dGlscy9jbGlja291dHNpZGUuZGlyZWN0aXZlJztcbmltcG9ydCB7IElEcm9wZG93bkl0ZW0gfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBjb252ZXJ0TGlzdFRvU2VsZWN0TGlzdCwgZmlsdGVyZWRWYWx1ZSB9IGZyb20gJy4uLy4uL3V0aWxzL2Ryb3Bkb3duJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYm1iLXNlYXJjaC1pbnB1dCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBDbGlja091dHNpZGVEaXJlY3RpdmUsXG4gICAgQm1iSW5wdXRDb250ZW50Q29tcG9uZW50LFxuICAgIEJtYkRyb3Bkb3duQ29udGVudENvbXBvbmVudCxcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2JtYi1zZWFyY2gtaW5wdXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vYm1iLXNlYXJjaC1pbnB1dC5jb21wb25lbnQuc2NzcycsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBCbWJTZWFyY2hJbnB1dENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcyB7XG4gIGlucHV0SWQgPSBpbnB1dDxzdHJpbmc+KGdldFVVSUQoKSk7XG4gIG5hbWUgPSBpbnB1dDxzdHJpbmc+KGdldFVVSUQoKSk7XG4gIGRhdGEgPSBpbnB1dDxzdHJpbmdbXT4oW10pO1xuICBpc0xvYWRpbmcgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIGlzU2VydmVyU2lkZUZpbHRlciA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcGxhY2Vob2xkZXIgPSBpbnB1dDxzdHJpbmc+KCcnKTtcbiAgc2VydmVyU2lkZUZpbHRlcmVkRGF0YSA9IGlucHV0PHN0cmluZ1tdPihbXSk7XG5cbiAgb25WYWx1ZUNoYW5nZSA9IG91dHB1dDxzdHJpbmc+KCk7XG4gIG9uU2VydmVyU2lkZUZpbHRlckV2ZW50ID0gb3V0cHV0PHN0cmluZz4oKTtcbiAgb25DbGVhckZpZWxkID0gb3V0cHV0PGJvb2xlYW4+KCk7XG5cbiAgdmFsdWU6IHN0cmluZyA9ICcnO1xuICBmaWx0ZXJlZERhdGE6IElEcm9wZG93bkl0ZW1bXSA9IFtdO1xuICB1aWQ6IHN0cmluZyA9IGdldFVVSUQoKTtcbiAgaXNEaWFsb2dPcGVuOiBib29sZWFuID0gZmFsc2U7XG4gIGZpbHRlckNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woKTtcbiAgaXRlbXM6IElEcm9wZG93bkl0ZW1bXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5maWx0ZXJDb250cm9sLnZhbHVlQ2hhbmdlc1xuICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDMwMCkpXG4gICAgICAuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuICAgICAgICB0aGlzLmZpbHRlcmVkRGF0YSA9IGZpbHRlcmVkVmFsdWUodmFsdWUsIHRoaXMuaXRlbXMpO1xuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1snc2VydmVyU2lkZUZpbHRlcmVkRGF0YSddICYmIHRoaXMuaXNTZXJ2ZXJTaWRlRmlsdGVyKCkpIHtcbiAgICAgIHRoaXMuaW5pdE9wdGlvbnMoY2hhbmdlc1snc2VydmVyU2lkZUZpbHRlcmVkRGF0YSddLmN1cnJlbnRWYWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaW5pdE9wdGlvbnModGhpcy5kYXRhKCkpO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICBjaGFuZ2VzWydzZXJ2ZXJTaWRlRmlsdGVyZWREYXRhJ10gJiZcbiAgICAgIGNoYW5nZXNbJ2lzTG9hZGluZyddICYmXG4gICAgICB0aGlzLmlzU2VydmVyU2lkZUZpbHRlcigpXG4gICAgKSB7XG4gICAgICB0aGlzLmlzRGlhbG9nT3BlbiA9XG4gICAgICAgIGNoYW5nZXNbJ3NlcnZlclNpZGVGaWx0ZXJlZERhdGEnXT8uY3VycmVudFZhbHVlPy5sZW5ndGggfHxcbiAgICAgICAgY2hhbmdlc1snaXNMb2FkaW5nJ10/LmN1cnJlbnRWYWx1ZTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlc1snaXNMb2FkaW5nJ10pIHtcbiAgICAgIGlmIChjaGFuZ2VzWydpc0xvYWRpbmcnXT8uY3VycmVudFZhbHVlKSB7XG4gICAgICAgIHRoaXMuZmlsdGVyQ29udHJvbC5kaXNhYmxlKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmZpbHRlckNvbnRyb2wuZW5hYmxlKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaW5pdE9wdGlvbnMobGlzdDogc3RyaW5nW10pOiB2b2lkIHtcbiAgICB0aGlzLml0ZW1zID0gY29udmVydExpc3RUb1NlbGVjdExpc3QobGlzdCk7XG4gICAgdGhpcy5pdGVtcyA9IHRoaXMuaXRlbXMubWFwKChlbGVtZW50OiBJRHJvcGRvd25JdGVtKSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5lbGVtZW50LFxuICAgICAgICBhY3Rpb246ICgpID0+IHtcbiAgICAgICAgICB0aGlzLnNldFNlbGVjdGVkVmFsdWUoZWxlbWVudCk7XG4gICAgICAgIH0sXG4gICAgICB9IGFzIElEcm9wZG93bkl0ZW07XG4gICAgfSk7XG5cbiAgICB0aGlzLmZpbHRlcmVkRGF0YSA9IFsuLi50aGlzLml0ZW1zXTtcbiAgfVxuXG4gIGNsb3NlTGlzdCgpIHtcbiAgICB0aGlzLmlzRGlhbG9nT3BlbiA9IGZhbHNlO1xuICB9XG5cbiAgc2V0U2VsZWN0ZWRWYWx1ZShlbGVtZW50OiBJRHJvcGRvd25JdGVtKTogdm9pZCB7XG4gICAgY29uc3QgdmFsdWUgPSBlbGVtZW50LnZhbHVlO1xuICAgIHRoaXMuZmlsdGVyQ29udHJvbC5zZXRWYWx1ZSh2YWx1ZSk7XG5cbiAgICBpZiAodGhpcy5pc1NlcnZlclNpZGVGaWx0ZXIoKSkge1xuICAgICAgdGhpcy5vblNlcnZlclNpZGVGaWx0ZXJFdmVudC5lbWl0KHZhbHVlISk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub25WYWx1ZUNoYW5nZS5lbWl0KHZhbHVlISk7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlSXRlbUNsaWNrKCk6IHZvaWQge1xuICAgIHRoaXMuaXNEaWFsb2dPcGVuID0gIXRoaXMuaXNEaWFsb2dPcGVuO1xuICB9XG5cbiAgaGFuZGxlQ2xlYXJGaWx0ZXIoKTogdm9pZCB7XG4gICAgdGhpcy5vbkNsZWFyRmllbGQuZW1pdCh0cnVlKTtcbiAgfVxuXG4gIGhhbmRsZUtleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBjb25zdCBrZXlib2FyZFZhbHVlc1RvT3BlbkRpYWxvZyA9IFsnICcsICdBcnJvd0Rvd24nLCAnRG93biddO1xuICAgIGNvbnN0IGtleWJvYXJkVmFsdWVzVG9BZGRPcHRpb24gPSBbJ0VudGVyJ107XG5cbiAgICBpZiAoa2V5Ym9hcmRWYWx1ZXNUb09wZW5EaWFsb2cuaW5jbHVkZXMoZXZlbnQua2V5KSkge1xuICAgICAgaWYgKCF0aGlzLmlzRGlhbG9nT3BlbikgdGhpcy5oYW5kbGVJdGVtQ2xpY2soKTtcblxuICAgICAgaWYgKCF0aGlzLmZpbHRlcmVkRGF0YS5sZW5ndGgpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChrZXlib2FyZFZhbHVlc1RvQWRkT3B0aW9uLmluY2x1ZGVzKGV2ZW50LmtleSkpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBpZiAoISF0aGlzLmZpbHRlckNvbnRyb2wudmFsdWUpIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRMZW5ndGg6IG51bWJlciA9IHRoaXMuZmlsdGVyZWREYXRhLmxlbmd0aDtcblxuICAgICAgICBpZiAoISFzZWxlY3RlZExlbmd0aCkge1xuICAgICAgICAgIHRoaXMuc2V0U2VsZWN0ZWRWYWx1ZSh0aGlzLmZpbHRlcmVkRGF0YVswXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cbn1cbiIsIjxzZWN0aW9uIGNsYXNzPVwiYm1iX3NlYXJjaC1pbnB1dFwiPlxuICA8c2VjdGlvblxuICAgIGNsYXNzPVwiYm1iX3NlYXJjaC1pbnB1dC1jb250YWluZXJcIlxuICAgIGNsaWNrT3V0c2lkZVxuICAgIChjbGlja091dHNpZGUpPVwiY2xvc2VMaXN0KClcIlxuICA+XG4gICAgPGJtYi1pbnB1dC1jb250ZW50XG4gICAgICBjbGFzcz1cImJtYl9zZWFyY2gtaW5wdXQtZmllbGRcIlxuICAgICAgW2lucHV0SWRdPVwiaW5wdXRJZCgpXCJcbiAgICAgIFtuYW1lXT1cIm5hbWUoKVwiXG4gICAgICBpY29uPVwic2VhcmNoXCJcbiAgICAgIFtjb250cm9sXT1cImZpbHRlckNvbnRyb2xcIlxuICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyKClcIlxuICAgICAgW2lzQ2xlYXJhYmxlXT1cInRydWVcIlxuICAgICAgKGtleWRvd24pPVwiaGFuZGxlS2V5RG93bigkZXZlbnQpXCJcbiAgICAgIChjbGljayk9XCJoYW5kbGVJdGVtQ2xpY2soKVwiXG4gICAgICAoY2xlYXJFdmVudCk9XCJoYW5kbGVDbGVhckZpbHRlcigpXCJcbiAgICAvPlxuICAgIDxkaWFsb2cgW29wZW5dPVwiaXNEaWFsb2dPcGVuXCIgY2xhc3M9XCJibWJfZ2VuZXJpYy1kaWFsb2dcIj5cbiAgICAgIDxibWItZHJvcGRvd24tY29udGVudFxuICAgICAgICBjbGFzcz1cImJtYl9zZWFyY2gtaW5wdXQtZGlhbG9nXCJcbiAgICAgICAgbmFtZT1cImxpc3RcIlxuICAgICAgICBbc2VsZWN0ZWRPcHRpb25dPVwiZmlsdGVyQ29udHJvbC52YWx1ZVwiXG4gICAgICAgIFsoaXRlbXMpXT1cImZpbHRlcmVkRGF0YVwiXG4gICAgICAgIFsoaXNPcGVuKV09XCJpc0RpYWxvZ09wZW5cIlxuICAgICAgLz5cbiAgICA8L2RpYWxvZz5cbiAgPC9zZWN0aW9uPlxuPC9zZWN0aW9uPlxuIl19