@provoly/dashboard 0.19.4 → 0.19.5

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 (32) hide show
  1. package/esm2022/dataset/components/dataset-detail/dataset-detail.component.mjs +3 -6
  2. package/esm2022/lib/core/i18n/en.translations.mjs +3 -1
  3. package/esm2022/lib/core/i18n/fr.translations.mjs +3 -1
  4. package/esm2022/lib/core/model/display-options.interface.mjs +29 -36
  5. package/esm2022/lib/core/store/config/config.effects.mjs +2 -2
  6. package/esm2022/lib/core/store/search/search.service.mjs +7 -4
  7. package/esm2022/lib/dashboard/components/dashboard.component.mjs +3 -4
  8. package/esm2022/lib/dashboard/store/dashboard.actions.mjs +3 -1
  9. package/esm2022/lib/dashboard/store/dashboard.effects.mjs +7 -4
  10. package/esm2022/lib/dashboard/store/dashboard.selectors.mjs +3 -2
  11. package/esm2022/lib/dashboard/store/manifest.service.mjs +2 -2
  12. package/esm2022/presentation/components/add-edit-presentation/add-edit-presentation.component.mjs +39 -8
  13. package/esm2022/presentation/components/presentation.component.mjs +17 -10
  14. package/esm2022/toolbox/components/toolbox.component.mjs +15 -12
  15. package/fesm2022/provoly-dashboard-dataset.mjs +2 -5
  16. package/fesm2022/provoly-dashboard-dataset.mjs.map +1 -1
  17. package/fesm2022/provoly-dashboard-presentation.mjs +54 -16
  18. package/fesm2022/provoly-dashboard-presentation.mjs.map +1 -1
  19. package/fesm2022/provoly-dashboard-toolbox.mjs +14 -11
  20. package/fesm2022/provoly-dashboard-toolbox.mjs.map +1 -1
  21. package/fesm2022/provoly-dashboard.mjs +71 -67
  22. package/fesm2022/provoly-dashboard.mjs.map +1 -1
  23. package/lib/core/i18n/en.translations.d.ts +2 -0
  24. package/lib/core/i18n/fr.translations.d.ts +2 -0
  25. package/lib/core/model/display-options.interface.d.ts +3 -8
  26. package/lib/dashboard/store/dashboard.actions.d.ts +8 -6
  27. package/lib/dashboard/store/dashboard.effects.d.ts +9 -5
  28. package/lib/dashboard/store/dashboard.selectors.d.ts +1 -1
  29. package/package.json +37 -37
  30. package/presentation/components/add-edit-presentation/add-edit-presentation.component.d.ts +10 -2
  31. package/presentation/components/presentation.component.d.ts +5 -3
  32. package/toolbox/components/toolbox.component.d.ts +2 -1
@@ -1,7 +1,7 @@
1
1
  import { OverlayConfig } from '@angular/cdk/overlay';
2
2
  import { TemplatePortal } from '@angular/cdk/portal';
3
3
  import { Component, Input, TemplateRef, ViewChild } from '@angular/core';
4
- import { DashboardActions, DashboardGridLayout, DashboardSelectors, DisplayMode, PryVisibilityType, SubscriptionnerDirective, ViewMode } from '@provoly/dashboard';
4
+ import { DashboardActions, DashboardGridLayout, DashboardSelectors, PryVisibilityType, SubscriptionnerDirective, ViewMode } from '@provoly/dashboard';
5
5
  import { BehaviorSubject, combineLatest, map } from 'rxjs';
6
6
  import { v4 } from 'uuid';
7
7
  import * as i0 from "@angular/core";
@@ -18,7 +18,7 @@ export class PryPresentationComponent extends SubscriptionnerDirective {
18
18
  set listOfManifests(manifests) {
19
19
  this.listOfManifests$.next(Array.isArray(manifests) ? manifests : null);
20
20
  }
21
- constructor(store, overlay, viewContainerRef, router, titleService, activatedRoute) {
21
+ constructor(store, overlay, viewContainerRef, router, titleService, activatedRoute, ngZone) {
22
22
  super();
23
23
  this.store = store;
24
24
  this.overlay = overlay;
@@ -26,6 +26,7 @@ export class PryPresentationComponent extends SubscriptionnerDirective {
26
26
  this.router = router;
27
27
  this.titleService = titleService;
28
28
  this.activatedRoute = activatedRoute;
29
+ this.ngZone = ngZone;
29
30
  this.selectedPresentation$ = new BehaviorSubject(null);
30
31
  this.selectedMode = ViewMode.CATALOG;
31
32
  this.modalOpened = false;
@@ -36,6 +37,7 @@ export class PryPresentationComponent extends SubscriptionnerDirective {
36
37
  this.ViewMode = ViewMode;
37
38
  this.search$ = new BehaviorSubject('');
38
39
  this.listOfManifests$ = new BehaviorSubject(null);
40
+ this.mode = 'meta';
39
41
  this.subscriptions.add(this.activatedRoute.queryParams.subscribe((params) => {
40
42
  if (params['create']) {
41
43
  this.creation();
@@ -68,7 +70,10 @@ export class PryPresentationComponent extends SubscriptionnerDirective {
68
70
  this.store.dispatch(DashboardActions.selectPresentation({ presentation: undefined, viewMode: ViewMode.CATALOG }));
69
71
  }
70
72
  fetch(presentation) {
71
- this.store.dispatch(DashboardActions.loadPresentation({ presentation, viewMode: ViewMode.CATALOG }));
73
+ this.store.dispatch(DashboardActions.loadPresentation({ presentation, viewMode: ViewMode.CONSULT }));
74
+ this.ngZone.run(() => {
75
+ this.router?.navigateByUrl(this.consultStartUrl);
76
+ });
72
77
  }
73
78
  creation() {
74
79
  this.selectedMode = ViewMode.CREATION;
@@ -85,7 +90,7 @@ export class PryPresentationComponent extends SubscriptionnerDirective {
85
90
  };
86
91
  this.store.dispatch(DashboardActions.selectPresentation(newPresentation));
87
92
  this.store.dispatch(DashboardActions.setGridLayout({ layout: DashboardGridLayout.FULL }));
88
- this.store.dispatch(DashboardActions.updateDisplayOptions({ mode: DisplayMode.CREATE }));
93
+ this.store.dispatch(DashboardActions.updateDisplayOptions({ mode: ViewMode.CREATION }));
89
94
  }
90
95
  edit(presentation) {
91
96
  this.selectedMode = ViewMode.EDITION;
@@ -93,7 +98,7 @@ export class PryPresentationComponent extends SubscriptionnerDirective {
93
98
  this.titleService.changeTitle(presentation.name);
94
99
  this.store.dispatch(DashboardActions.selectPresentation({ presentation, viewMode: ViewMode.EDITION }));
95
100
  this.store.dispatch(DashboardActions.fetchStaticManifest({ id: presentation.id }));
96
- this.store.dispatch(DashboardActions.updateDisplayOptions({ mode: DisplayMode.EDIT }));
101
+ this.store.dispatch(DashboardActions.updateDisplayOptions({ mode: ViewMode.EDITION }));
97
102
  this.overlayRef?.dispose();
98
103
  this.overlayRef = undefined;
99
104
  }
@@ -169,13 +174,13 @@ export class PryPresentationComponent extends SubscriptionnerDirective {
169
174
  }
170
175
  this.submit.nativeElement.focus();
171
176
  }
172
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PryPresentationComponent, deps: [{ token: i1.Store }, { token: i2.Overlay }, { token: i0.ViewContainerRef }, { token: i3.Router }, { token: i4.PryTitleService }, { token: i3.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
173
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PryPresentationComponent, selector: "pry-presentation", inputs: { editionStartUrl: "editionStartUrl", consultStartUrl: "consultStartUrl", meAsOwner: "meAsOwner", listOfManifests: "listOfManifests" }, viewQueries: [{ propertyName: "templateModalActions", first: true, predicate: ["modalActions"], descendants: true, read: TemplateRef }, { propertyName: "template", first: true, predicate: ["modal"], descendants: true, read: TemplateRef }, { propertyName: "openModal", first: true, predicate: ["openModal"], descendants: true }, { propertyName: "confirm", first: true, predicate: ["confirm"], descendants: true }, { propertyName: "submit", first: true, predicate: ["submit"], descendants: true }, { propertyName: "cross", first: true, predicate: ["cross"], descendants: true }, { propertyName: "crossVisibility", first: true, predicate: ["crossVisibility"], descendants: true }, { propertyName: "visibilityModal", first: true, predicate: ["visibilityModal"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<pry-presentation-css></pry-presentation-css>\n<div class=\"o-manifest-layout\" [ngSwitch]=\"selectedMode\">\n <ng-container *ngSwitchCase=\"ViewMode.CATALOG\">\n <div class=\"o-manifest-layout__toolbox\">\n <button\n class=\"a-btn a-btn--primary a-btn--icon-text a-tooltip\"\n [attr.data-tooltip]=\"'@pry.presentation.create' | i18n\"\n data-tooltip-position=\"bottom\"\n type=\"button\"\n (click)=\"creation()\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'create' }\"\n >\n {{ '@pry.presentation.create' | i18n }}\n </button>\n <div>\n <div class=\"a-presentation__search\">\n <label id=\"catalog-search-label\" for=\"catalog-search\" class=\"u-visually-hidden\">\n <span>{{ '@pry.toolbox.catalog.filter.name' | i18n }}</span>\n </label>\n <input\n id=\"catalog-search\"\n type=\"text\"\n class=\"a-form-field\"\n [placeholder]=\"'@pry.presentation.search' | i18n\"\n [ngModel]=\"search$ | async\"\n (ngModelChange)=\"this.search$.next($event)\"\n />\n <pry-icon iconSvg=\"search\" [width]=\"17\" [height]=\"17\"></pry-icon>\n </div>\n </div>\n </div>\n <div class=\"o-manifest-layout__content\">\n <h1 class=\"a-h1\">{{ '@pry.presentation.title' | i18n }}</h1>\n <div class=\"o-presentation-wrapper\">\n <ul class=\"o-presentation\">\n <li class=\"o-presentation__item\" *ngFor=\"let presentation of filteredPresentations$ | async\">\n <div class=\"o-presentation__item__header\">\n <ng-container *ngIf=\"presentation.visibility.type === PryVisibilityType.PRIVATE\">\n <pry-icon\n [iconSvg]=\"presentation.visibility.type.toLowerCase()\"\n class=\"is-private a-tooltip\"\n [attr.data-tooltip]=\"'@pry.presentation.private' | i18n\"\n [height]=\"17\"\n [width]=\"17\"\n ></pry-icon>\n </ng-container>\n <div class=\"a-tooltip\">\n <div class=\"o-presentation__item__image\">\n <img\n alt=\"\"\n [height]=\"presentation.cover ? 600 : 128\"\n [width]=\"presentation.cover ? 600 : 128\"\n [class.is-full-width]=\"presentation.cover\"\n [src]=\"presentation.image | getSecuredImage | async\"\n />\n </div>\n </div>\n <ng-container *ngIf=\"presentation.visibility.type === PryVisibilityType.PRIVATE\">\n <div class=\"more-actions\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--more a-tooltip\"\n [attr.data-tooltip]=\"'@pry.restitution.more' | i18n\"\n (click)=\"toggleModalActions(presentation)\"\n >\n <pry-icon [height]=\"25\" [width]=\"25\" iconSvg=\"more_horiz\"></pry-icon>\n </button>\n </div>\n </ng-container>\n </div>\n <div class=\"o-presentation__item__txt\">\n <h3 class=\"a-h3\">{{ presentation.name }}</h3>\n <div class=\"a-p\">\n <div class=\"description-container\">\n <span class=\"description\">\n {{ presentation.description }}\n </span>\n <div class=\"description-tooltip\">{{ presentation.description }}</div>\n </div>\n </div>\n <p class=\"a-p -date\">{{ presentation.modificationDate | sinceDate }}</p>\n </div>\n <div class=\"o-presentation__item__footer\">\n <button class=\"a-btn a-tooltip\" [attr.data-tooltip]=\"'@pry.presentation.view' | i18n\" (click)=\"fetch(presentation)\">\n {{'@pry.presentation.consult' | i18n}}</button>\n </div>\n </li>\n </ul>\n\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"ViewMode.CREATION\">\n <pry-add-edit-presentation\n [selectedPresentation]=\"selectedPresentation$ | async\"\n (goBack)=\"closeRestitution()\"\n [editionStartUrl]=\"editionStartUrl\"\n [edition]=\"false\"\n ></pry-add-edit-presentation>\n </ng-container>\n <ng-container *ngSwitchCase=\"ViewMode.EDITION\">\n <pry-add-edit-presentation\n [selectedPresentation]=\"selectedPresentation$ | async\"\n (goBack)=\"closeRestitution()\"\n [editionStartUrl]=\"editionStartUrl\"\n [edition]=\"true\"\n ></pry-add-edit-presentation>\n </ng-container>\n</div>\n\n<ng-template #modal>\n <div\n class=\"o-modal\"\n (click)=\"$event.stopPropagation()\"\n #visibilityModal\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"dialog change visibility\"\n *ngIf=\"selectedPresentation$ | async as selectedPresentation\"\n >\n <div class=\"o-modal__top\">\n <div class=\"o-modal__top__title\">\n <h2 class=\"a-h2\" id=\"dialog_title\">{{ '@pry.toolbox.rename' | i18n }}</h2>\n </div>\n <div class=\"o-modal__top__close\">\n <button\n class=\"a-btn a-btn--icon-only\"\n #crossVisibility\n (keydown.shift.tab)=\"focusValidation()\"\n (click)=\"toggleModal()\"\n >\n <pry-icon iconSvg=\"close\" [height]=\"35\" [width]=\"35\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.toolbox.close' | i18n }}</span>\n </button>\n </div>\n </div>\n <pry-share [ngModel]=\"selectedPresentation.visibility\" (ngModelChange)=\"visibility = $event\"></pry-share>\n <div class=\"m-btn-group\">\n <button type=\"button\" class=\"a-btn a-btn--secondary\" (click)=\"toggleModal()\">\n {{ '@pry.toolbox.manifest.close' | i18n }}\n </button>\n <button\n type=\"submit\"\n class=\"a-btn a-btn--primary\"\n #submit\n (keydown.tab)=\"focusCrossElement()\"\n (click)=\"changeVisibility(selectedPresentation)\"\n >\n {{ '@pry.toolbox.manifest.check' | i18n }}\n </button>\n </div>\n </div>\n</ng-template>\n<ng-template #modalActions>\n<div class=\"o-modal\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"dialog presenation options\"\n *ngIf=\"selectedPresentation$ | async as selectedPresentation\">\n <div class=\"o-modal__top\">\n <div class=\"o-modal__top__title\">\n <h2 class=\"a-h2\" id=\"dialog_title\">{{ '@pry.presentation.options' | i18n }}</h2>\n </div>\n <div class=\"o-modal__top__close\">\n <button\n class=\"a-btn a-btn--icon-only\"\n #crossVisibility\n (keydown.shift.tab)=\"focusValidation()\"\n (click)=\"toggleModalActions()\"\n >\n <pry-icon iconSvg=\"close\" [height]=\"35\" [width]=\"35\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.toolbox.close' | i18n }}</span>\n </button>\n </div>\n </div>\n <ul class=\"actions-list\">\n <li>\n <button\n class=\"a-btn a-btn--icon-only a-tooltip\"\n [attr.data-tooltip]=\"'@pry.presentation.change' | i18n\"\n (click)=\"edit(selectedPresentation)\"\n [disabled]=\"!selectedPresentation.owner\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'edit' }\"\n >\n <pry-icon iconSvg=\"edit\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.presentation.edition' | i18n }}</span>\n </button>\n </li>\n <li>\n <button\n (click)=\"toggleModal(selectedPresentation)\"\n class=\"a-btn a-btn--icon-only a-tooltip\"\n [attr.data-tooltip]=\"'@pry.presentation.share' | i18n\"\n aria-haspopup=\"dialog\"\n [disabled]=\"!selectedPresentation.owner\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'share' }\"\n >\n <pry-icon iconSvg=\"share\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.presentation.share' | i18n }}</span>\n </button>\n </li>\n <li>\n <button\n class=\"a-btn a-btn--icon-only a-tooltip\"\n [attr.data-tooltip]=\"'@pry.presentation.erase' | i18n\"\n #openModal\n (click)=\"delete(selectedPresentation.id)\"\n [disabled]=\"!selectedPresentation.owner\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'delete' }\"\n >\n <pry-icon iconSvg=\"delete\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.presentation.delete' | i18n }}</span>\n </button>\n </li>\n </ul>\n</div>\n</ng-template>\n", dependencies: [{ kind: "component", type: i4.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "directive", type: i4.PryAccessDirective, selector: "[pryAccess]", inputs: ["pryAccess"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "component", type: i4.PryShareComponent, selector: "pry-share", inputs: ["value", "labelProperty", "valueProperty", "users$"] }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i6.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: i7.PryAddEditPresentationComponent, selector: "pry-add-edit-presentation", inputs: ["edition", "editionStartUrl", "selectedPresentation"], outputs: ["goBack"] }, { kind: "component", type: i8.PryPresentationCssComponent, selector: "pry-presentation-css" }, { kind: "pipe", type: i4.GetSecuredImagePipe, name: "getSecuredImage" }, { kind: "pipe", type: i9.PrySinceDatePipe, name: "sinceDate" }, { kind: "pipe", type: i4.I18nPipe, name: "i18n" }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }] }); }
177
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PryPresentationComponent, deps: [{ token: i1.Store }, { token: i2.Overlay }, { token: i0.ViewContainerRef }, { token: i3.Router }, { token: i4.PryTitleService }, { token: i3.ActivatedRoute }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
178
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PryPresentationComponent, selector: "pry-presentation", inputs: { editionStartUrl: "editionStartUrl", consultStartUrl: "consultStartUrl", meAsOwner: "meAsOwner", mode: "mode", listOfManifests: "listOfManifests" }, viewQueries: [{ propertyName: "templateModalActions", first: true, predicate: ["modalActions"], descendants: true, read: TemplateRef }, { propertyName: "template", first: true, predicate: ["modal"], descendants: true, read: TemplateRef }, { propertyName: "openModal", first: true, predicate: ["openModal"], descendants: true }, { propertyName: "confirm", first: true, predicate: ["confirm"], descendants: true }, { propertyName: "submit", first: true, predicate: ["submit"], descendants: true }, { propertyName: "cross", first: true, predicate: ["cross"], descendants: true }, { propertyName: "crossVisibility", first: true, predicate: ["crossVisibility"], descendants: true }, { propertyName: "visibilityModal", first: true, predicate: ["visibilityModal"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<pry-presentation-css></pry-presentation-css>\n<div class=\"o-manifest-layout\" [ngSwitch]=\"selectedMode\">\n <ng-container *ngSwitchDefault>\n <div class=\"o-manifest-layout__toolbox\">\n <button\n class=\"a-btn a-btn--primary a-btn--icon-text a-tooltip\"\n [attr.data-tooltip]=\"'@pry.presentation.create' | i18n\"\n data-tooltip-position=\"bottom\"\n type=\"button\"\n (click)=\"creation()\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'create' }\"\n >\n {{ '@pry.presentation.create' | i18n }}\n </button>\n <div>\n <div class=\"a-presentation__search\">\n <label id=\"catalog-search-label\" for=\"catalog-search\" class=\"u-visually-hidden\">\n <span>{{ '@pry.toolbox.catalog.filter.name' | i18n }}</span>\n </label>\n <input\n id=\"catalog-search\"\n type=\"text\"\n class=\"a-form-field\"\n [placeholder]=\"'@pry.presentation.search' | i18n\"\n [ngModel]=\"search$ | async\"\n (ngModelChange)=\"this.search$.next($event)\"\n />\n <pry-icon iconSvg=\"search\" [width]=\"17\" [height]=\"17\"></pry-icon>\n </div>\n </div>\n </div>\n <div class=\"o-manifest-layout__content\">\n <h1 class=\"a-h1\">{{ '@pry.presentation.title' | i18n }}</h1>\n <div class=\"o-presentation-wrapper\">\n <ul class=\"o-presentation\">\n <li class=\"o-presentation__item\" *ngFor=\"let presentation of filteredPresentations$ | async\">\n <div class=\"o-presentation__item__header\">\n <ng-container *ngIf=\"presentation.visibility.type === PryVisibilityType.PRIVATE\">\n <pry-icon\n [iconSvg]=\"presentation.visibility.type.toLowerCase()\"\n class=\"is-private a-tooltip\"\n [attr.data-tooltip]=\"'@pry.presentation.private' | i18n\"\n [height]=\"17\"\n [width]=\"17\"\n ></pry-icon>\n </ng-container>\n <div class=\"a-tooltip\">\n <div class=\"o-presentation__item__image\">\n <img\n alt=\"\"\n [height]=\"presentation.cover ? 600 : 128\"\n [width]=\"presentation.cover ? 600 : 128\"\n [class.is-full-width]=\"presentation.cover\"\n [src]=\"presentation.image | getSecuredImage | async\"\n />\n </div>\n </div>\n <ng-container *ngIf=\"presentation.visibility.type === PryVisibilityType.PRIVATE\">\n <div class=\"more-actions\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--more a-tooltip\"\n [attr.data-tooltip]=\"'@pry.restitution.more' | i18n\"\n (click)=\"toggleModalActions(presentation)\"\n >\n <pry-icon [height]=\"25\" [width]=\"25\" iconSvg=\"more_horiz\"></pry-icon>\n </button>\n </div>\n </ng-container>\n </div>\n <div class=\"o-presentation__item__txt\">\n <h3 class=\"a-h3\">{{ presentation.name }}</h3>\n <div class=\"a-p\">\n <div class=\"description-container\">\n <span class=\"description\">\n {{ presentation.description }}\n </span>\n <div class=\"description-tooltip\">{{ presentation.description }}</div>\n </div>\n </div>\n <p class=\"a-p -date\">{{ presentation.modificationDate | sinceDate }}</p>\n </div>\n <div class=\"o-presentation__item__footer\">\n <button\n class=\"a-btn a-tooltip\"\n [attr.data-tooltip]=\"'@pry.presentation.view' | i18n\"\n (click)=\"fetch(presentation)\"\n >\n {{ '@pry.presentation.consult' | i18n }}\n </button>\n </div>\n </li>\n </ul>\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"ViewMode.CREATION\">\n <pry-add-edit-presentation\n [selectedPresentation]=\"selectedPresentation$ | async\"\n (goBack)=\"closeRestitution()\"\n [editionStartUrl]=\"editionStartUrl\"\n [edition]=\"false\"\n [mode]=\"mode\"\n ></pry-add-edit-presentation>\n </ng-container>\n <ng-container *ngSwitchCase=\"ViewMode.EDITION\">\n <pry-add-edit-presentation\n [selectedPresentation]=\"selectedPresentation$ | async\"\n (goBack)=\"closeRestitution()\"\n [editionStartUrl]=\"editionStartUrl\"\n [edition]=\"true\"\n [mode]=\"mode\"\n ></pry-add-edit-presentation>\n </ng-container>\n</div>\n\n<ng-template #modal>\n <div\n class=\"o-modal\"\n (click)=\"$event.stopPropagation()\"\n #visibilityModal\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"dialog change visibility\"\n *ngIf=\"selectedPresentation$ | async as selectedPresentation\"\n >\n <div class=\"o-modal__top\">\n <div class=\"o-modal__top__title\">\n <h2 class=\"a-h2\" id=\"dialog_title\">{{ '@pry.toolbox.rename' | i18n }}</h2>\n </div>\n <div class=\"o-modal__top__close\">\n <button\n class=\"a-btn a-btn--icon-only\"\n #crossVisibility\n (keydown.shift.tab)=\"focusValidation()\"\n (click)=\"toggleModal()\"\n >\n <pry-icon iconSvg=\"close\" [height]=\"35\" [width]=\"35\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.toolbox.close' | i18n }}</span>\n </button>\n </div>\n </div>\n <pry-share [ngModel]=\"selectedPresentation.visibility\" (ngModelChange)=\"visibility = $event\"></pry-share>\n <div class=\"m-btn-group\">\n <button type=\"button\" class=\"a-btn a-btn--secondary\" (click)=\"toggleModal()\">\n {{ '@pry.toolbox.manifest.close' | i18n }}\n </button>\n <button\n type=\"submit\"\n class=\"a-btn a-btn--primary\"\n #submit\n (keydown.tab)=\"focusCrossElement()\"\n (click)=\"changeVisibility(selectedPresentation)\"\n >\n {{ '@pry.toolbox.manifest.check' | i18n }}\n </button>\n </div>\n </div>\n</ng-template>\n<ng-template #modalActions>\n <div\n class=\"o-modal\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"dialog presenation options\"\n *ngIf=\"selectedPresentation$ | async as selectedPresentation\"\n >\n <div class=\"o-modal__top\">\n <div class=\"o-modal__top__title\">\n <h2 class=\"a-h2\" id=\"dialog_title\">{{ '@pry.presentation.options' | i18n }}</h2>\n </div>\n <div class=\"o-modal__top__close\">\n <button\n class=\"a-btn a-btn--icon-only\"\n #crossVisibility\n (keydown.shift.tab)=\"focusValidation()\"\n (click)=\"toggleModalActions()\"\n >\n <pry-icon iconSvg=\"close\" [height]=\"35\" [width]=\"35\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.toolbox.close' | i18n }}</span>\n </button>\n </div>\n </div>\n <ul class=\"actions-list\">\n <li>\n <button\n class=\"a-btn a-btn--icon-only a-tooltip\"\n [attr.data-tooltip]=\"'@pry.presentation.change' | i18n\"\n (click)=\"edit(selectedPresentation)\"\n [disabled]=\"!selectedPresentation.owner\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'edit' }\"\n >\n <pry-icon iconSvg=\"edit\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.presentation.edition' | i18n }}</span>\n </button>\n </li>\n <li>\n <button\n (click)=\"toggleModal(selectedPresentation)\"\n class=\"a-btn a-btn--icon-only a-tooltip\"\n [attr.data-tooltip]=\"'@pry.presentation.share' | i18n\"\n aria-haspopup=\"dialog\"\n [disabled]=\"!selectedPresentation.owner\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'share' }\"\n >\n <pry-icon iconSvg=\"share\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.presentation.share' | i18n }}</span>\n </button>\n </li>\n <li>\n <button\n class=\"a-btn a-btn--icon-only a-tooltip\"\n [attr.data-tooltip]=\"'@pry.presentation.erase' | i18n\"\n #openModal\n (click)=\"delete(selectedPresentation.id)\"\n [disabled]=\"!selectedPresentation.owner\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'delete' }\"\n >\n <pry-icon iconSvg=\"delete\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.presentation.delete' | i18n }}</span>\n </button>\n </li>\n </ul>\n </div>\n</ng-template>\n", dependencies: [{ kind: "component", type: i4.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "directive", type: i4.PryAccessDirective, selector: "[pryAccess]", inputs: ["pryAccess"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "component", type: i4.PryShareComponent, selector: "pry-share", inputs: ["value", "labelProperty", "valueProperty", "users$"] }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i6.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i6.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "component", type: i7.PryAddEditPresentationComponent, selector: "pry-add-edit-presentation", inputs: ["edition", "editionStartUrl", "selectedPresentation", "mode"], outputs: ["goBack"] }, { kind: "component", type: i8.PryPresentationCssComponent, selector: "pry-presentation-css" }, { kind: "pipe", type: i4.GetSecuredImagePipe, name: "getSecuredImage" }, { kind: "pipe", type: i9.PrySinceDatePipe, name: "sinceDate" }, { kind: "pipe", type: i4.I18nPipe, name: "i18n" }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }] }); }
174
179
  }
175
180
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PryPresentationComponent, decorators: [{
176
181
  type: Component,
177
- args: [{ selector: 'pry-presentation', template: "<pry-presentation-css></pry-presentation-css>\n<div class=\"o-manifest-layout\" [ngSwitch]=\"selectedMode\">\n <ng-container *ngSwitchCase=\"ViewMode.CATALOG\">\n <div class=\"o-manifest-layout__toolbox\">\n <button\n class=\"a-btn a-btn--primary a-btn--icon-text a-tooltip\"\n [attr.data-tooltip]=\"'@pry.presentation.create' | i18n\"\n data-tooltip-position=\"bottom\"\n type=\"button\"\n (click)=\"creation()\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'create' }\"\n >\n {{ '@pry.presentation.create' | i18n }}\n </button>\n <div>\n <div class=\"a-presentation__search\">\n <label id=\"catalog-search-label\" for=\"catalog-search\" class=\"u-visually-hidden\">\n <span>{{ '@pry.toolbox.catalog.filter.name' | i18n }}</span>\n </label>\n <input\n id=\"catalog-search\"\n type=\"text\"\n class=\"a-form-field\"\n [placeholder]=\"'@pry.presentation.search' | i18n\"\n [ngModel]=\"search$ | async\"\n (ngModelChange)=\"this.search$.next($event)\"\n />\n <pry-icon iconSvg=\"search\" [width]=\"17\" [height]=\"17\"></pry-icon>\n </div>\n </div>\n </div>\n <div class=\"o-manifest-layout__content\">\n <h1 class=\"a-h1\">{{ '@pry.presentation.title' | i18n }}</h1>\n <div class=\"o-presentation-wrapper\">\n <ul class=\"o-presentation\">\n <li class=\"o-presentation__item\" *ngFor=\"let presentation of filteredPresentations$ | async\">\n <div class=\"o-presentation__item__header\">\n <ng-container *ngIf=\"presentation.visibility.type === PryVisibilityType.PRIVATE\">\n <pry-icon\n [iconSvg]=\"presentation.visibility.type.toLowerCase()\"\n class=\"is-private a-tooltip\"\n [attr.data-tooltip]=\"'@pry.presentation.private' | i18n\"\n [height]=\"17\"\n [width]=\"17\"\n ></pry-icon>\n </ng-container>\n <div class=\"a-tooltip\">\n <div class=\"o-presentation__item__image\">\n <img\n alt=\"\"\n [height]=\"presentation.cover ? 600 : 128\"\n [width]=\"presentation.cover ? 600 : 128\"\n [class.is-full-width]=\"presentation.cover\"\n [src]=\"presentation.image | getSecuredImage | async\"\n />\n </div>\n </div>\n <ng-container *ngIf=\"presentation.visibility.type === PryVisibilityType.PRIVATE\">\n <div class=\"more-actions\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--more a-tooltip\"\n [attr.data-tooltip]=\"'@pry.restitution.more' | i18n\"\n (click)=\"toggleModalActions(presentation)\"\n >\n <pry-icon [height]=\"25\" [width]=\"25\" iconSvg=\"more_horiz\"></pry-icon>\n </button>\n </div>\n </ng-container>\n </div>\n <div class=\"o-presentation__item__txt\">\n <h3 class=\"a-h3\">{{ presentation.name }}</h3>\n <div class=\"a-p\">\n <div class=\"description-container\">\n <span class=\"description\">\n {{ presentation.description }}\n </span>\n <div class=\"description-tooltip\">{{ presentation.description }}</div>\n </div>\n </div>\n <p class=\"a-p -date\">{{ presentation.modificationDate | sinceDate }}</p>\n </div>\n <div class=\"o-presentation__item__footer\">\n <button class=\"a-btn a-tooltip\" [attr.data-tooltip]=\"'@pry.presentation.view' | i18n\" (click)=\"fetch(presentation)\">\n {{'@pry.presentation.consult' | i18n}}</button>\n </div>\n </li>\n </ul>\n\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"ViewMode.CREATION\">\n <pry-add-edit-presentation\n [selectedPresentation]=\"selectedPresentation$ | async\"\n (goBack)=\"closeRestitution()\"\n [editionStartUrl]=\"editionStartUrl\"\n [edition]=\"false\"\n ></pry-add-edit-presentation>\n </ng-container>\n <ng-container *ngSwitchCase=\"ViewMode.EDITION\">\n <pry-add-edit-presentation\n [selectedPresentation]=\"selectedPresentation$ | async\"\n (goBack)=\"closeRestitution()\"\n [editionStartUrl]=\"editionStartUrl\"\n [edition]=\"true\"\n ></pry-add-edit-presentation>\n </ng-container>\n</div>\n\n<ng-template #modal>\n <div\n class=\"o-modal\"\n (click)=\"$event.stopPropagation()\"\n #visibilityModal\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"dialog change visibility\"\n *ngIf=\"selectedPresentation$ | async as selectedPresentation\"\n >\n <div class=\"o-modal__top\">\n <div class=\"o-modal__top__title\">\n <h2 class=\"a-h2\" id=\"dialog_title\">{{ '@pry.toolbox.rename' | i18n }}</h2>\n </div>\n <div class=\"o-modal__top__close\">\n <button\n class=\"a-btn a-btn--icon-only\"\n #crossVisibility\n (keydown.shift.tab)=\"focusValidation()\"\n (click)=\"toggleModal()\"\n >\n <pry-icon iconSvg=\"close\" [height]=\"35\" [width]=\"35\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.toolbox.close' | i18n }}</span>\n </button>\n </div>\n </div>\n <pry-share [ngModel]=\"selectedPresentation.visibility\" (ngModelChange)=\"visibility = $event\"></pry-share>\n <div class=\"m-btn-group\">\n <button type=\"button\" class=\"a-btn a-btn--secondary\" (click)=\"toggleModal()\">\n {{ '@pry.toolbox.manifest.close' | i18n }}\n </button>\n <button\n type=\"submit\"\n class=\"a-btn a-btn--primary\"\n #submit\n (keydown.tab)=\"focusCrossElement()\"\n (click)=\"changeVisibility(selectedPresentation)\"\n >\n {{ '@pry.toolbox.manifest.check' | i18n }}\n </button>\n </div>\n </div>\n</ng-template>\n<ng-template #modalActions>\n<div class=\"o-modal\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"dialog presenation options\"\n *ngIf=\"selectedPresentation$ | async as selectedPresentation\">\n <div class=\"o-modal__top\">\n <div class=\"o-modal__top__title\">\n <h2 class=\"a-h2\" id=\"dialog_title\">{{ '@pry.presentation.options' | i18n }}</h2>\n </div>\n <div class=\"o-modal__top__close\">\n <button\n class=\"a-btn a-btn--icon-only\"\n #crossVisibility\n (keydown.shift.tab)=\"focusValidation()\"\n (click)=\"toggleModalActions()\"\n >\n <pry-icon iconSvg=\"close\" [height]=\"35\" [width]=\"35\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.toolbox.close' | i18n }}</span>\n </button>\n </div>\n </div>\n <ul class=\"actions-list\">\n <li>\n <button\n class=\"a-btn a-btn--icon-only a-tooltip\"\n [attr.data-tooltip]=\"'@pry.presentation.change' | i18n\"\n (click)=\"edit(selectedPresentation)\"\n [disabled]=\"!selectedPresentation.owner\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'edit' }\"\n >\n <pry-icon iconSvg=\"edit\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.presentation.edition' | i18n }}</span>\n </button>\n </li>\n <li>\n <button\n (click)=\"toggleModal(selectedPresentation)\"\n class=\"a-btn a-btn--icon-only a-tooltip\"\n [attr.data-tooltip]=\"'@pry.presentation.share' | i18n\"\n aria-haspopup=\"dialog\"\n [disabled]=\"!selectedPresentation.owner\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'share' }\"\n >\n <pry-icon iconSvg=\"share\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.presentation.share' | i18n }}</span>\n </button>\n </li>\n <li>\n <button\n class=\"a-btn a-btn--icon-only a-tooltip\"\n [attr.data-tooltip]=\"'@pry.presentation.erase' | i18n\"\n #openModal\n (click)=\"delete(selectedPresentation.id)\"\n [disabled]=\"!selectedPresentation.owner\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'delete' }\"\n >\n <pry-icon iconSvg=\"delete\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.presentation.delete' | i18n }}</span>\n </button>\n </li>\n </ul>\n</div>\n</ng-template>\n" }]
178
- }], ctorParameters: function () { return [{ type: i1.Store }, { type: i2.Overlay }, { type: i0.ViewContainerRef }, { type: i3.Router }, { type: i4.PryTitleService }, { type: i3.ActivatedRoute }]; }, propDecorators: { templateModalActions: [{
182
+ args: [{ selector: 'pry-presentation', template: "<pry-presentation-css></pry-presentation-css>\n<div class=\"o-manifest-layout\" [ngSwitch]=\"selectedMode\">\n <ng-container *ngSwitchDefault>\n <div class=\"o-manifest-layout__toolbox\">\n <button\n class=\"a-btn a-btn--primary a-btn--icon-text a-tooltip\"\n [attr.data-tooltip]=\"'@pry.presentation.create' | i18n\"\n data-tooltip-position=\"bottom\"\n type=\"button\"\n (click)=\"creation()\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'create' }\"\n >\n {{ '@pry.presentation.create' | i18n }}\n </button>\n <div>\n <div class=\"a-presentation__search\">\n <label id=\"catalog-search-label\" for=\"catalog-search\" class=\"u-visually-hidden\">\n <span>{{ '@pry.toolbox.catalog.filter.name' | i18n }}</span>\n </label>\n <input\n id=\"catalog-search\"\n type=\"text\"\n class=\"a-form-field\"\n [placeholder]=\"'@pry.presentation.search' | i18n\"\n [ngModel]=\"search$ | async\"\n (ngModelChange)=\"this.search$.next($event)\"\n />\n <pry-icon iconSvg=\"search\" [width]=\"17\" [height]=\"17\"></pry-icon>\n </div>\n </div>\n </div>\n <div class=\"o-manifest-layout__content\">\n <h1 class=\"a-h1\">{{ '@pry.presentation.title' | i18n }}</h1>\n <div class=\"o-presentation-wrapper\">\n <ul class=\"o-presentation\">\n <li class=\"o-presentation__item\" *ngFor=\"let presentation of filteredPresentations$ | async\">\n <div class=\"o-presentation__item__header\">\n <ng-container *ngIf=\"presentation.visibility.type === PryVisibilityType.PRIVATE\">\n <pry-icon\n [iconSvg]=\"presentation.visibility.type.toLowerCase()\"\n class=\"is-private a-tooltip\"\n [attr.data-tooltip]=\"'@pry.presentation.private' | i18n\"\n [height]=\"17\"\n [width]=\"17\"\n ></pry-icon>\n </ng-container>\n <div class=\"a-tooltip\">\n <div class=\"o-presentation__item__image\">\n <img\n alt=\"\"\n [height]=\"presentation.cover ? 600 : 128\"\n [width]=\"presentation.cover ? 600 : 128\"\n [class.is-full-width]=\"presentation.cover\"\n [src]=\"presentation.image | getSecuredImage | async\"\n />\n </div>\n </div>\n <ng-container *ngIf=\"presentation.visibility.type === PryVisibilityType.PRIVATE\">\n <div class=\"more-actions\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--more a-tooltip\"\n [attr.data-tooltip]=\"'@pry.restitution.more' | i18n\"\n (click)=\"toggleModalActions(presentation)\"\n >\n <pry-icon [height]=\"25\" [width]=\"25\" iconSvg=\"more_horiz\"></pry-icon>\n </button>\n </div>\n </ng-container>\n </div>\n <div class=\"o-presentation__item__txt\">\n <h3 class=\"a-h3\">{{ presentation.name }}</h3>\n <div class=\"a-p\">\n <div class=\"description-container\">\n <span class=\"description\">\n {{ presentation.description }}\n </span>\n <div class=\"description-tooltip\">{{ presentation.description }}</div>\n </div>\n </div>\n <p class=\"a-p -date\">{{ presentation.modificationDate | sinceDate }}</p>\n </div>\n <div class=\"o-presentation__item__footer\">\n <button\n class=\"a-btn a-tooltip\"\n [attr.data-tooltip]=\"'@pry.presentation.view' | i18n\"\n (click)=\"fetch(presentation)\"\n >\n {{ '@pry.presentation.consult' | i18n }}\n </button>\n </div>\n </li>\n </ul>\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"ViewMode.CREATION\">\n <pry-add-edit-presentation\n [selectedPresentation]=\"selectedPresentation$ | async\"\n (goBack)=\"closeRestitution()\"\n [editionStartUrl]=\"editionStartUrl\"\n [edition]=\"false\"\n [mode]=\"mode\"\n ></pry-add-edit-presentation>\n </ng-container>\n <ng-container *ngSwitchCase=\"ViewMode.EDITION\">\n <pry-add-edit-presentation\n [selectedPresentation]=\"selectedPresentation$ | async\"\n (goBack)=\"closeRestitution()\"\n [editionStartUrl]=\"editionStartUrl\"\n [edition]=\"true\"\n [mode]=\"mode\"\n ></pry-add-edit-presentation>\n </ng-container>\n</div>\n\n<ng-template #modal>\n <div\n class=\"o-modal\"\n (click)=\"$event.stopPropagation()\"\n #visibilityModal\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"dialog change visibility\"\n *ngIf=\"selectedPresentation$ | async as selectedPresentation\"\n >\n <div class=\"o-modal__top\">\n <div class=\"o-modal__top__title\">\n <h2 class=\"a-h2\" id=\"dialog_title\">{{ '@pry.toolbox.rename' | i18n }}</h2>\n </div>\n <div class=\"o-modal__top__close\">\n <button\n class=\"a-btn a-btn--icon-only\"\n #crossVisibility\n (keydown.shift.tab)=\"focusValidation()\"\n (click)=\"toggleModal()\"\n >\n <pry-icon iconSvg=\"close\" [height]=\"35\" [width]=\"35\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.toolbox.close' | i18n }}</span>\n </button>\n </div>\n </div>\n <pry-share [ngModel]=\"selectedPresentation.visibility\" (ngModelChange)=\"visibility = $event\"></pry-share>\n <div class=\"m-btn-group\">\n <button type=\"button\" class=\"a-btn a-btn--secondary\" (click)=\"toggleModal()\">\n {{ '@pry.toolbox.manifest.close' | i18n }}\n </button>\n <button\n type=\"submit\"\n class=\"a-btn a-btn--primary\"\n #submit\n (keydown.tab)=\"focusCrossElement()\"\n (click)=\"changeVisibility(selectedPresentation)\"\n >\n {{ '@pry.toolbox.manifest.check' | i18n }}\n </button>\n </div>\n </div>\n</ng-template>\n<ng-template #modalActions>\n <div\n class=\"o-modal\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"dialog presenation options\"\n *ngIf=\"selectedPresentation$ | async as selectedPresentation\"\n >\n <div class=\"o-modal__top\">\n <div class=\"o-modal__top__title\">\n <h2 class=\"a-h2\" id=\"dialog_title\">{{ '@pry.presentation.options' | i18n }}</h2>\n </div>\n <div class=\"o-modal__top__close\">\n <button\n class=\"a-btn a-btn--icon-only\"\n #crossVisibility\n (keydown.shift.tab)=\"focusValidation()\"\n (click)=\"toggleModalActions()\"\n >\n <pry-icon iconSvg=\"close\" [height]=\"35\" [width]=\"35\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.toolbox.close' | i18n }}</span>\n </button>\n </div>\n </div>\n <ul class=\"actions-list\">\n <li>\n <button\n class=\"a-btn a-btn--icon-only a-tooltip\"\n [attr.data-tooltip]=\"'@pry.presentation.change' | i18n\"\n (click)=\"edit(selectedPresentation)\"\n [disabled]=\"!selectedPresentation.owner\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'edit' }\"\n >\n <pry-icon iconSvg=\"edit\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.presentation.edition' | i18n }}</span>\n </button>\n </li>\n <li>\n <button\n (click)=\"toggleModal(selectedPresentation)\"\n class=\"a-btn a-btn--icon-only a-tooltip\"\n [attr.data-tooltip]=\"'@pry.presentation.share' | i18n\"\n aria-haspopup=\"dialog\"\n [disabled]=\"!selectedPresentation.owner\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'share' }\"\n >\n <pry-icon iconSvg=\"share\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.presentation.share' | i18n }}</span>\n </button>\n </li>\n <li>\n <button\n class=\"a-btn a-btn--icon-only a-tooltip\"\n [attr.data-tooltip]=\"'@pry.presentation.erase' | i18n\"\n #openModal\n (click)=\"delete(selectedPresentation.id)\"\n [disabled]=\"!selectedPresentation.owner\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'delete' }\"\n >\n <pry-icon iconSvg=\"delete\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.presentation.delete' | i18n }}</span>\n </button>\n </li>\n </ul>\n </div>\n</ng-template>\n" }]
183
+ }], ctorParameters: function () { return [{ type: i1.Store }, { type: i2.Overlay }, { type: i0.ViewContainerRef }, { type: i3.Router }, { type: i4.PryTitleService }, { type: i3.ActivatedRoute }, { type: i0.NgZone }]; }, propDecorators: { templateModalActions: [{
179
184
  type: ViewChild,
180
185
  args: ['modalActions', { read: TemplateRef }]
181
186
  }], template: [{
@@ -205,7 +210,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
205
210
  type: Input
206
211
  }], meAsOwner: [{
207
212
  type: Input
213
+ }], mode: [{
214
+ type: Input
208
215
  }], listOfManifests: [{
209
216
  type: Input
210
217
  }] } });
211
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlc2VudGF0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL3ByZXNlbnRhdGlvbi9jb21wb25lbnRzL3ByZXNlbnRhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9wcmVzZW50YXRpb24vY29tcG9uZW50cy9wcmVzZW50YXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFXLGFBQWEsRUFBYyxNQUFNLHNCQUFzQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsU0FBUyxFQUFjLEtBQUssRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFvQixNQUFNLGVBQWUsQ0FBQztBQUd2RyxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLG1CQUFtQixFQUVuQixrQkFBa0IsRUFDbEIsV0FBVyxFQUlYLGlCQUFpQixFQUNqQix3QkFBd0IsRUFDeEIsUUFBUSxFQUNULE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7Ozs7O0FBTTFCLE1BQU0sT0FBTyx3QkFBeUIsU0FBUSx3QkFBd0I7SUEwQnBFLElBQWEsZUFBZSxDQUFDLFNBQXVDO1FBQ2xFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxRSxDQUFDO0lBRUQsWUFDWSxLQUFpQixFQUNqQixPQUFn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QUFsRCxTQUFTO3VCQUFDLE9BQU8sRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7Z0JBQ2pCLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVztnQkFDQSxPQUFPO3NCQUE1QixTQUFTO3VCQUFDLFNBQVM7Z0JBQ0MsTUFBTTtzQkFBMUIsU0FBUzt1QkFBQyxRQUFRO2dCQUNDLEtBQUs7c0JBQXhCLFNBQVM7dUJBQUMsT0FBTztnQkFDWSxlQUFlO3NCQUE1QyxTQUFTO3VCQUFDLGlCQUFpQjtnQkFDRSxlQUFlO3NCQUE1QyxTQUFTO3VCQUFDLGlCQUFpQjtnQkFJbkIsZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBTU8sZUFBZTtzQkFBM0IsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE92ZXJsYXksIE92ZXJsYXlDb25maWcsIE92ZXJsYXlSZWYgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBUZW1wbGF0ZVBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbnB1dCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7XG4gIERhc2hib2FyZEFjdGlvbnMsXG4gIERhc2hib2FyZEdyaWRMYXlvdXQsXG4gIERhc2hib2FyZE1hbmlmZXN0LFxuICBEYXNoYm9hcmRTZWxlY3RvcnMsXG4gIERpc3BsYXlNb2RlLFxuICBNYW5pZmVzdERlc2NyaXB0aW9uLFxuICBQcnlUaXRsZVNlcnZpY2UsXG4gIFByeVZpc2liaWxpdHksXG4gIFByeVZpc2liaWxpdHlUeXBlLFxuICBTdWJzY3JpcHRpb25uZXJEaXJlY3RpdmUsXG4gIFZpZXdNb2RlXG59IGZyb20gJ0Bwcm92b2x5L2Rhc2hib2FyZCc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIG1hcCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdjQgfSBmcm9tICd1dWlkJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncHJ5LXByZXNlbnRhdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9wcmVzZW50YXRpb24uY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFByeVByZXNlbnRhdGlvbkNvbXBvbmVudCBleHRlbmRzIFN1YnNjcmlwdGlvbm5lckRpcmVjdGl2ZSB7XG4gIG1hbmlmZXN0cyQ6IE9ic2VydmFibGU8TWFuaWZlc3REZXNjcmlwdGlvbltdPjtcbiAgc2VsZWN0ZWRQcmVzZW50YXRpb24kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNYW5pZmVzdERlc2NyaXB0aW9uIHwgbnVsbD4obnVsbCk7XG4gIHByZXNlbnRhdGlvbj86IE1hbmlmZXN0RGVzY3JpcHRpb247XG4gIHN0YXRpY01hbmlmZXN0JD86IE9ic2VydmFibGU8RGFzaGJvYXJkTWFuaWZlc3Q+O1xuICBzZWxlY3RlZE1vZGU6IFZpZXdNb2RlID0gVmlld01vZGUuQ0FUQUxPRztcbiAgbW9kYWxPcGVuZWQgPSBmYWxzZTtcbiAgQFZpZXdDaGlsZCgnbW9kYWxBY3Rpb25zJywgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KSB0ZW1wbGF0ZU1vZGFsQWN0aW9ucyE6IFRlbXBsYXRlUmVmPGFueT47XG4gIEBWaWV3Q2hpbGQoJ21vZGFsJywgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KSB0ZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPGFueT47XG4gIEBWaWV3Q2hpbGQoJ29wZW5Nb2RhbCcpIG9wZW5Nb2RhbCE6IEVsZW1lbnRSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKCdjb25maXJtJykgY29uZmlybSE6IEVsZW1lbnRSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKCdzdWJtaXQnKSBzdWJtaXQhOiBFbGVtZW50UmVmPEhUTUxCdXR0b25FbGVtZW50PjtcbiAgQFZpZXdDaGlsZCgnY3Jvc3MnKSBjcm9zcyE6IEVsZW1lbnRSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKCdjcm9zc1Zpc2liaWxpdHknKSBjcm9zc1Zpc2liaWxpdHkhOiBFbGVtZW50UmVmPEhUTUxCdXR0b25FbGVtZW50PjtcbiAgQFZpZXdDaGlsZCgndmlzaWJpbGl0eU1vZGFsJykgdmlzaWJpbGl0eU1vZGFsITogRWxlbWVudFJlZjtcbiAgb3ZlcmxheVJlZj86IE92ZXJsYXlSZWY7XG4gIHZpc2liaWxpdHk6IFByeVZpc2liaWxpdHkgPSB7IHR5cGU6IFByeVZpc2liaWxpdHlUeXBlLlBSSVZBVEUgfTtcbiAgUHJ5VmlzaWJpbGl0eVR5cGUgPSBQcnlWaXNpYmlsaXR5VHlwZTtcbiAgQElucHV0KCkgZWRpdGlvblN0YXJ0VXJsOiBzdHJpbmcgPSAnLyc7XG4gIEBJbnB1dCgpIGNvbnN1bHRTdGFydFVybDogc3RyaW5nID0gJy8nO1xuICBASW5wdXQoKSBtZUFzT3duZXI/OiBzdHJpbmc7XG4gIFZpZXdNb2RlID0gVmlld01vZGU7XG4gIHNlYXJjaCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KCcnKTtcbiAgZmlsdGVyZWRQcmVzZW50YXRpb25zJDogT2JzZXJ2YWJsZTxNYW5pZmVzdERlc2NyaXB0aW9uW10+O1xuICBsaXN0T2ZNYW5pZmVzdHMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNYW5pZmVzdERlc2NyaXB0aW9uW10gfCBudWxsPihudWxsKTtcblxuICBASW5wdXQoKSBzZXQgbGlzdE9mTWFuaWZlc3RzKG1hbmlmZXN0czogTWFuaWZlc3REZXNjcmlwdGlvbltdIHwgbnVsbCkge1xuICAgIHRoaXMubGlzdE9mTWFuaWZlc3RzJC5uZXh0KEFycmF5LmlzQXJyYXkobWFuaWZlc3RzKSA/IG1hbmlmZXN0cyA6IG51bGwpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIHN0b3JlOiBTdG9yZTxhbnk+LFxuICAgIHByb3RlY3RlZCBvdmVybGF5OiBPdmVybGF5LFxuICAgIHByb3RlY3RlZCB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgIHByb3RlY3RlZCByb3V0ZXI6IFJvdXRlcixcbiAgICBwcm90ZWN0ZWQgdGl0bGVTZXJ2aWNlOiBQcnlUaXRsZVNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVxuICApIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICB0aGlzLmFjdGl2YXRlZFJvdXRlLnF1ZXJ5UGFyYW1zLnN1YnNjcmliZSgocGFyYW1zKSA9PiB7XG4gICAgICAgIGlmIChwYXJhbXNbJ2NyZWF0ZSddKSB7XG4gICAgICAgICAgdGhpcy5jcmVhdGlvbigpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChEYXNoYm9hcmRBY3Rpb25zLmZldGNoTWFuaWZlc3RzTGlzdCgpKTtcbiAgICB0aGlzLm1hbmlmZXN0cyQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMuc3RvcmVcbiAgICAgICAgLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMubWFuaWZlc3RzTGlzdClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWFwKChtYW5pZmVzdExpc3QpID0+XG4gICAgICAgICAgICBbLi4ubWFuaWZlc3RMaXN0XS5zb3J0KChhLCBiKSA9PlxuICAgICAgICAgICAgICBhLm1vZGlmaWNhdGlvbkRhdGUgPyBiLm1vZGlmaWNhdGlvbkRhdGUubG9jYWxlQ29tcGFyZShhLm1vZGlmaWNhdGlvbkRhdGUpIDogMVxuICAgICAgICAgICAgKVxuICAgICAgICAgIClcbiAgICAgICAgKSxcbiAgICAgIHRoaXMubGlzdE9mTWFuaWZlc3RzJFxuICAgIF0pLnBpcGUobWFwKChbZHluYW1pY3MsIHN0YXRpY3NdKSA9PiAoISFzdGF0aWNzID8gc3RhdGljcyA6IGR5bmFtaWNzKSkpO1xuXG4gICAgdGhpcy5zdGF0aWNNYW5pZmVzdCQgPSB0aGlzLnN0b3JlXG4gICAgICAuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5zdGF0aWNNYW5pZmVzdClcbiAgICAgIC5waXBlKG1hcCgoc3RhdGljTSkgPT4gc3RhdGljTS53aW5kb3dzWzBdKSk7XG4gICAgdGhpcy5maWx0ZXJlZFByZXNlbnRhdGlvbnMkID0gY29tYmluZUxhdGVzdChbdGhpcy5tYW5pZmVzdHMkLCB0aGlzLnNlYXJjaCRdKS5waXBlKFxuICAgICAgbWFwKChbcHJlc2VudGF0aW9ucywgc2VhcmNoXSkgPT5cbiAgICAgICAgcHJlc2VudGF0aW9ucy5maWx0ZXIoXG4gICAgICAgICAgKHByZXNlbnRhdGlvbnMpID0+XG4gICAgICAgICAgICBzZWFyY2gubGVuZ3RoID09PSAwIHx8XG4gICAgICAgICAgICBwcmVzZW50YXRpb25zLmRlc2NyaXB0aW9uLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoLnRvTG93ZXJDYXNlKCkpIHx8XG4gICAgICAgICAgICBwcmVzZW50YXRpb25zLm5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2gudG9Mb3dlckNhc2UoKSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgICk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5wcmVzZW50YXRpb24pLnN1YnNjcmliZSgocHJlc2VudGF0aW9uKSA9PiB7XG4gICAgICAgIGlmICghIXByZXNlbnRhdGlvbi5jdXJyZW50KSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFByZXNlbnRhdGlvbiQubmV4dChwcmVzZW50YXRpb24uY3VycmVudCA/PyBudWxsKTtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkTW9kZSA9IHByZXNlbnRhdGlvbj8udmlld01vZGUgPz8gdGhpcy5WaWV3TW9kZS5DQVRBTE9HO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gICAgdGhpcy50aXRsZVNlcnZpY2UuY2hhbmdlVGl0bGUoJ0BwcnkucHJlc2VudGF0aW9uLnRpdGxlJyk7XG4gIH1cblxuICBjbG9zZVJlc3RpdHV0aW9uKCkge1xuICAgIHRoaXMuc2VsZWN0ZWRQcmVzZW50YXRpb24kLm5leHQobnVsbCk7XG4gICAgdGhpcy5zZWxlY3RlZE1vZGUgPSBWaWV3TW9kZS5DQVRBTE9HO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGFzaGJvYXJkQWN0aW9ucy5zZWxlY3RQcmVzZW50YXRpb24oeyBwcmVzZW50YXRpb246IHVuZGVmaW5lZCwgdmlld01vZGU6IFZpZXdNb2RlLkNBVEFMT0cgfSkpO1xuICB9XG5cbiAgZmV0Y2gocHJlc2VudGF0aW9uOiBNYW5pZmVzdERlc2NyaXB0aW9uKSB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChEYXNoYm9hcmRBY3Rpb25zLmxvYWRQcmVzZW50YXRpb24oeyBwcmVzZW50YXRpb24sIHZpZXdNb2RlOiBWaWV3TW9kZS5DQVRBTE9HIH0pKTtcbiAgfVxuXG4gIGNyZWF0aW9uKCkge1xuICAgIHRoaXMuc2VsZWN0ZWRNb2RlID0gVmlld01vZGUuQ1JFQVRJT047XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChEYXNoYm9hcmRBY3Rpb25zLnVwZGF0ZU1hbmlmZXN0KHsgbWFuaWZlc3Q6IHsgd2luZG93czogW10gfSwgc2VsZWN0ZWRJZHM6IFtdIH0pKTtcbiAgICBjb25zdCBuZXdQcmVzZW50YXRpb24gPSB7XG4gICAgICBwcmVzZW50YXRpb246IHtcbiAgICAgICAgaWQ6IHY0KCksXG4gICAgICAgIG5hbWU6ICcnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJycsXG4gICAgICAgIHZpc2liaWxpdHk6IHsgdHlwZTogUHJ5VmlzaWJpbGl0eVR5cGUuUFJJVkFURSB9LFxuICAgICAgICBvd25lcjogdHJ1ZVxuICAgICAgfSBhcyBNYW5pZmVzdERlc2NyaXB0aW9uLFxuICAgICAgdmlld01vZGU6IFZpZXdNb2RlLkNSRUFUSU9OXG4gICAgfTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKERhc2hib2FyZEFjdGlvbnMuc2VsZWN0UHJlc2VudGF0aW9uKG5ld1ByZXNlbnRhdGlvbikpO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGFzaGJvYXJkQWN0aW9ucy5zZXRHcmlkTGF5b3V0KHsgbGF5b3V0OiBEYXNoYm9hcmRHcmlkTGF5b3V0LkZVTEwgfSkpO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVEaXNwbGF5T3B0aW9ucyh7IG1vZGU6IERpc3BsYXlNb2RlLkNSRUFURSB9KSk7XG4gIH1cblxuICBlZGl0KHByZXNlbnRhdGlvbjogTWFuaWZlc3REZXNjcmlwdGlvbikge1xuICAgIHRoaXMuc2VsZWN0ZWRNb2RlID0gVmlld01vZGUuRURJVElPTjtcbiAgICB0aGlzLnNlbGVjdGVkUHJlc2VudGF0aW9uJC5uZXh0KHByZXNlbnRhdGlvbik7XG4gICAgdGhpcy50aXRsZVNlcnZpY2UuY2hhbmdlVGl0bGUocHJlc2VudGF0aW9uLm5hbWUpO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGFzaGJvYXJkQWN0aW9ucy5zZWxlY3RQcmVzZW50YXRpb24oeyBwcmVzZW50YXRpb24sIHZpZXdNb2RlOiBWaWV3TW9kZS5FRElUSU9OIH0pKTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKERhc2hib2FyZEFjdGlvbnMuZmV0Y2hTdGF0aWNNYW5pZmVzdCh7IGlkOiBwcmVzZW50YXRpb24uaWQgfSkpO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVEaXNwbGF5T3B0aW9ucyh7IG1vZGU6IERpc3BsYXlNb2RlLkVESVQgfSkpO1xuICAgIHRoaXMub3ZlcmxheVJlZj8uZGlzcG9zZSgpO1xuICAgIHRoaXMub3ZlcmxheVJlZiA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGRlbGV0ZShpZDogc3RyaW5nKSB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChEYXNoYm9hcmRBY3Rpb25zLmNvbmZpcm1NYW5pZmVzdERlbGV0aW9uKHsgaWQgfSkpO1xuICAgIHRoaXMudG9nZ2xlTW9kYWxBY3Rpb25zKCk7XG4gIH1cblxuICB0b2dnbGVNb2RhbEFjdGlvbnMocHJlc2VudGF0aW9uPzogTWFuaWZlc3REZXNjcmlwdGlvbiB8IG51bGwpIHtcbiAgICBpZiAoIXRoaXMub3ZlcmxheVJlZiAmJiBwcmVzZW50YXRpb24pIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRQcmVzZW50YXRpb24kLm5leHQocHJlc2VudGF0aW9uKTtcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGFzaGJvYXJkQWN0aW9ucy5zZWxlY3RQcmVzZW50YXRpb24oeyBwcmVzZW50YXRpb24sIHZpZXdNb2RlOiBWaWV3TW9kZS5DQVRBTE9HIH0pKTtcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGFzaGJvYXJkQWN0aW9ucy5sb2FkTWFuaWZlc3QoeyBpZDogcHJlc2VudGF0aW9uLmlkIH0pKTtcbiAgICAgIHRoaXMub3ZlcmxheVJlZiA9IHRoaXMub3ZlcmxheS5jcmVhdGUoXG4gICAgICAgIG5ldyBPdmVybGF5Q29uZmlnKHtcbiAgICAgICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcbiAgICAgICAgICBwYW5lbENsYXNzOiBbJ28tbW9kYWwtd3JhcHBlciddLFxuICAgICAgICAgIGJhY2tkcm9wQ2xhc3M6ICdiYWNrZHJvcCdcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgICB0aGlzLm92ZXJsYXlSZWYuYmFja2Ryb3BDbGljaygpLnN1YnNjcmliZSgoKSA9PiB0aGlzLnRvZ2dsZU1vZGFsQWN0aW9ucyhwcmVzZW50YXRpb24pKTtcbiAgICAgIHRoaXMub3ZlcmxheVJlZi5hdHRhY2gobmV3IFRlbXBsYXRlUG9ydGFsKHRoaXMudGVtcGxhdGVNb2RhbEFjdGlvbnMsIHRoaXMudmlld0NvbnRhaW5lclJlZikpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm92ZXJsYXlSZWY/LmRpc3Bvc2UoKTtcbiAgICAgIHRoaXMub3ZlcmxheVJlZiA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuc2VsZWN0ZWRQcmVzZW50YXRpb24kLm5leHQobnVsbCk7XG4gICAgfVxuICB9XG5cbiAgdG9nZ2xlTW9kYWwocHJlc2VudGF0aW9uPzogTWFuaWZlc3REZXNjcmlwdGlvbiB8IG51bGwpIHtcbiAgICB0aGlzLm1vZGFsT3BlbmVkID0gIXRoaXMubW9kYWxPcGVuZWQ7XG4gICAgaWYgKHRoaXMubW9kYWxPcGVuZWQgJiYgcHJlc2VudGF0aW9uKSB7XG4gICAgICB0aGlzLnRvZ2dsZU1vZGFsQWN0aW9ucygpO1xuICAgICAgdGhpcy5zZWxlY3RlZFByZXNlbnRhdGlvbiQubmV4dChwcmVzZW50YXRpb24pO1xuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChEYXNoYm9hcmRBY3Rpb25zLnNlbGVjdFByZXNlbnRhdGlvbih7IHByZXNlbnRhdGlvbiwgdmlld01vZGU6IFZpZXdNb2RlLkNBVEFMT0cgfSkpO1xuICAgICAgLyogd2UgbmVlZCB0byBsb2FkIG1hbmlmZXN0IGluIG9yZGVyIHRvIGJlIGFibGUgdG8gc2F2ZSBpdCBsYXRlciAqL1xuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChEYXNoYm9hcmRBY3Rpb25zLmxvYWRNYW5pZmVzdCh7IGlkOiBwcmVzZW50YXRpb24uaWQgfSkpO1xuICAgICAgdGhpcy5vdmVybGF5UmVmID0gdGhpcy5vdmVybGF5LmNyZWF0ZShcbiAgICAgICAgbmV3IE92ZXJsYXlDb25maWcoe1xuICAgICAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxuICAgICAgICAgIHBhbmVsQ2xhc3M6IFsnby1tb2RhbC13cmFwcGVyJ10sXG4gICAgICAgICAgYmFja2Ryb3BDbGFzczogJ2JhY2tkcm9wJ1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgICAgIHRoaXMub3ZlcmxheVJlZi5iYWNrZHJvcENsaWNrKCkuc3Vic2NyaWJlKCgpID0+IHRoaXMudG9nZ2xlTW9kYWwocHJlc2VudGF0aW9uKSk7XG4gICAgICB0aGlzLm92ZXJsYXlSZWYuYXR0YWNoKG5ldyBUZW1wbGF0ZVBvcnRhbCh0aGlzLnRlbXBsYXRlLCB0aGlzLnZpZXdDb250YWluZXJSZWYpKTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBjb25zdCBmb2N1cyA9IHRoaXMudmlzaWJpbGl0eU1vZGFsLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW5bMF0uY2hpbGRyZW5bMV0uZmlyc3RFbGVtZW50Q2hpbGQgYXMgSFRNTEJ1dHRvbkVsZW1lbnQ7XG4gICAgICAgIGZvY3VzLmZvY3VzKCk7XG4gICAgICB9LCAxMCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub3ZlcmxheVJlZj8uZGlzcG9zZSgpO1xuICAgICAgdGhpcy5zZWxlY3RlZFByZXNlbnRhdGlvbiQubmV4dChudWxsKTtcbiAgICB9XG4gIH1cblxuICBjaGFuZ2VWaXNpYmlsaXR5KHByZXNlbnRhdGlvbj86IE1hbmlmZXN0RGVzY3JpcHRpb24pIHtcbiAgICBpZiAocHJlc2VudGF0aW9uKSB7XG4gICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFxuICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLnNhdmVNYW5pZmVzdCh7XG4gICAgICAgICAgaWQ6IHByZXNlbnRhdGlvbi5pZCA/PyAnJyxcbiAgICAgICAgICBuYW1lOiBwcmVzZW50YXRpb24ubmFtZSA/PyAnJyxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogcHJlc2VudGF0aW9uLmRlc2NyaXB0aW9uID8/ICcnLFxuICAgICAgICAgIGltYWdlOiBwcmVzZW50YXRpb24uaW1hZ2UgPz8gJycsXG4gICAgICAgICAgdmlzaWJpbGl0eTogdGhpcy52aXNpYmlsaXR5XG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLnRvZ2dsZU1vZGFsKHByZXNlbnRhdGlvbik7XG4gIH1cblxuICBmb2N1c0Nyb3NzRWxlbWVudCgpIHtcbiAgICBpZiAodGhpcy5jcm9zc1Zpc2liaWxpdHkpIHtcbiAgICAgIHRoaXMuY3Jvc3NWaXNpYmlsaXR5Py5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgfVxuICAgIHRoaXMuY3Jvc3M/Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgfVxuXG4gIGZvY3VzVmFsaWRhdGlvbigpIHtcbiAgICBpZiAodGhpcy5jb25maXJtKSB7XG4gICAgICB0aGlzLmNvbmZpcm0ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cbiAgICB0aGlzLnN1Ym1pdC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gIH1cbn1cbiIsIjxwcnktcHJlc2VudGF0aW9uLWNzcz48L3ByeS1wcmVzZW50YXRpb24tY3NzPlxuPGRpdiBjbGFzcz1cIm8tbWFuaWZlc3QtbGF5b3V0XCIgW25nU3dpdGNoXT1cInNlbGVjdGVkTW9kZVwiPlxuICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJWaWV3TW9kZS5DQVRBTE9HXCI+XG4gICAgPGRpdiBjbGFzcz1cIm8tbWFuaWZlc3QtbGF5b3V0X190b29sYm94XCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGNsYXNzPVwiYS1idG4gYS1idG4tLXByaW1hcnkgYS1idG4tLWljb24tdGV4dCBhLXRvb2x0aXBcIlxuICAgICAgICBbYXR0ci5kYXRhLXRvb2x0aXBdPVwiJ0BwcnkucHJlc2VudGF0aW9uLmNyZWF0ZScgfCBpMThuXCJcbiAgICAgICAgZGF0YS10b29sdGlwLXBvc2l0aW9uPVwiYm90dG9tXCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIChjbGljayk9XCJjcmVhdGlvbigpXCJcbiAgICAgICAgKnByeUFjY2Vzcz1cInsgbW9kdWxlOiAnZGFzaGJvYXJkJywgcGFnZTogJ21hbmlmZXN0JywgYWN0aW9uOiAnY3JlYXRlJyB9XCJcbiAgICAgID5cbiAgICAgICAge3sgJ0BwcnkucHJlc2VudGF0aW9uLmNyZWF0ZScgfCBpMThuIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhLXByZXNlbnRhdGlvbl9fc2VhcmNoXCI+XG4gICAgICAgICAgPGxhYmVsIGlkPVwiY2F0YWxvZy1zZWFyY2gtbGFiZWxcIiBmb3I9XCJjYXRhbG9nLXNlYXJjaFwiIGNsYXNzPVwidS12aXN1YWxseS1oaWRkZW5cIj5cbiAgICAgICAgICAgIDxzcGFuPnt7ICdAcHJ5LnRvb2xib3guY2F0YWxvZy5maWx0ZXIubmFtZScgfCBpMThuIH19PC9zcGFuPlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICBpZD1cImNhdGFsb2ctc2VhcmNoXCJcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgIGNsYXNzPVwiYS1mb3JtLWZpZWxkXCJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInQHByeS5wcmVzZW50YXRpb24uc2VhcmNoJyB8IGkxOG5cIlxuICAgICAgICAgICAgW25nTW9kZWxdPVwic2VhcmNoJCB8IGFzeW5jXCJcbiAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInRoaXMuc2VhcmNoJC5uZXh0KCRldmVudClcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPHByeS1pY29uIGljb25Tdmc9XCJzZWFyY2hcIiBbd2lkdGhdPVwiMTdcIiBbaGVpZ2h0XT1cIjE3XCI+PC9wcnktaWNvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiby1tYW5pZmVzdC1sYXlvdXRfX2NvbnRlbnRcIj5cbiAgICAgIDxoMSBjbGFzcz1cImEtaDFcIj57eyAnQHByeS5wcmVzZW50YXRpb24udGl0bGUnIHwgaTE4biB9fTwvaDE+XG4gICAgICA8ZGl2IGNsYXNzPVwiby1wcmVzZW50YXRpb24td3JhcHBlclwiPlxuICAgICAgICA8dWwgY2xhc3M9XCJvLXByZXNlbnRhdGlvblwiPlxuICAgICAgICAgIDxsaSBjbGFzcz1cIm8tcHJlc2VudGF0aW9uX19pdGVtXCIgKm5nRm9yPVwibGV0IHByZXNlbnRhdGlvbiBvZiBmaWx0ZXJlZFByZXNlbnRhdGlvbnMkIHwgYXN5bmNcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvLXByZXNlbnRhdGlvbl9faXRlbV9faGVhZGVyXCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJwcmVzZW50YXRpb24udmlzaWJpbGl0eS50eXBlID09PSBQcnlWaXNpYmlsaXR5VHlwZS5QUklWQVRFXCI+XG4gICAgICAgICAgICAgICAgPHByeS1pY29uXG4gICAgICAgICAgICAgICAgICBbaWNvblN2Z109XCJwcmVzZW50YXRpb24udmlzaWJpbGl0eS50eXBlLnRvTG93ZXJDYXNlKClcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpcy1wcml2YXRlIGEtdG9vbHRpcFwiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLXRvb2x0aXBdPVwiJ0BwcnkucHJlc2VudGF0aW9uLnByaXZhdGUnIHwgaTE4blwiXG4gICAgICAgICAgICAgICAgICBbaGVpZ2h0XT1cIjE3XCJcbiAgICAgICAgICAgICAgICAgIFt3aWR0aF09XCIxN1wiXG4gICAgICAgICAgICAgICAgPjwvcHJ5LWljb24+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhLXRvb2x0aXBcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvLXByZXNlbnRhdGlvbl9faXRlbV9faW1hZ2VcIj5cbiAgICAgICAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIlwiXG4gICAgICAgICAgICAgICAgICAgICAgW2hlaWdodF09XCJwcmVzZW50YXRpb24uY292ZXIgPyA2MDAgOiAxMjhcIlxuICAgICAgICAgICAgICAgICAgICAgIFt3aWR0aF09XCJwcmVzZW50YXRpb24uY292ZXIgPyA2MDAgOiAxMjhcIlxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1mdWxsLXdpZHRoXT1cInByZXNlbnRhdGlvbi5jb3ZlclwiXG4gICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJwcmVzZW50YXRpb24uaW1hZ2UgfCBnZXRTZWN1cmVkSW1hZ2UgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInByZXNlbnRhdGlvbi52aXNpYmlsaXR5LnR5cGUgPT09IFByeVZpc2liaWxpdHlUeXBlLlBSSVZBVEVcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb3JlLWFjdGlvbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYS1idG4gYS1idG4tLW1vcmUgYS10b29sdGlwXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLXRvb2x0aXBdPVwiJ0BwcnkucmVzdGl0dXRpb24ubW9yZScgfCBpMThuXCJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlTW9kYWxBY3Rpb25zKHByZXNlbnRhdGlvbilcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPHByeS1pY29uIFtoZWlnaHRdPVwiMjVcIiBbd2lkdGhdPVwiMjVcIiBpY29uU3ZnPVwibW9yZV9ob3JpelwiPjwvcHJ5LWljb24+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiby1wcmVzZW50YXRpb25fX2l0ZW1fX3R4dFwiPlxuICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJhLWgzXCI+e3sgcHJlc2VudGF0aW9uLm5hbWUgfX08L2gzPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYS1wXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRlc2NyaXB0aW9uLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkZXNjcmlwdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICB7eyBwcmVzZW50YXRpb24uZGVzY3JpcHRpb24gfX1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZXNjcmlwdGlvbi10b29sdGlwXCI+e3sgcHJlc2VudGF0aW9uLmRlc2NyaXB0aW9uIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8cCBjbGFzcz1cImEtcCAtZGF0ZVwiPnt7IHByZXNlbnRhdGlvbi5tb2RpZmljYXRpb25EYXRlIHwgc2luY2VEYXRlIH19PC9wPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiby1wcmVzZW50YXRpb25fX2l0ZW1fX2Zvb3RlclwiPlxuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYS1idG4gYS10b29sdGlwXCIgW2F0dHIuZGF0YS10b29sdGlwXT1cIidAcHJ5LnByZXNlbnRhdGlvbi52aWV3JyB8IGkxOG5cIiAoY2xpY2spPVwiZmV0Y2gocHJlc2VudGF0aW9uKVwiPlxuICAgICAgICAgICAgICAgIHt7J0BwcnkucHJlc2VudGF0aW9uLmNvbnN1bHQnIHwgaTE4bn19PC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2xpPlxuICAgICAgICA8L3VsPlxuXG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIlZpZXdNb2RlLkNSRUFUSU9OXCI+XG4gICAgPHByeS1hZGQtZWRpdC1wcmVzZW50YXRpb25cbiAgICAgIFtzZWxlY3RlZFByZXNlbnRhdGlvbl09XCJzZWxlY3RlZFByZXNlbnRhdGlvbiQgfCBhc3luY1wiXG4gICAgICAoZ29CYWNrKT1cImNsb3NlUmVzdGl0dXRpb24oKVwiXG4gICAgICBbZWRpdGlvblN0YXJ0VXJsXT1cImVkaXRpb25TdGFydFVybFwiXG4gICAgICBbZWRpdGlvbl09XCJmYWxzZVwiXG4gICAgPjwvcHJ5LWFkZC1lZGl0LXByZXNlbnRhdGlvbj5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIlZpZXdNb2RlLkVESVRJT05cIj5cbiAgICA8cHJ5LWFkZC1lZGl0LXByZXNlbnRhdGlvblxuICAgICAgW3NlbGVjdGVkUHJlc2VudGF0aW9uXT1cInNlbGVjdGVkUHJlc2VudGF0aW9uJCB8IGFzeW5jXCJcbiAgICAgIChnb0JhY2spPVwiY2xvc2VSZXN0aXR1dGlvbigpXCJcbiAgICAgIFtlZGl0aW9uU3RhcnRVcmxdPVwiZWRpdGlvblN0YXJ0VXJsXCJcbiAgICAgIFtlZGl0aW9uXT1cInRydWVcIlxuICAgID48L3ByeS1hZGQtZWRpdC1wcmVzZW50YXRpb24+XG4gIDwvbmctY29udGFpbmVyPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjbW9kYWw+XG4gIDxkaXZcbiAgICBjbGFzcz1cIm8tbW9kYWxcIlxuICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICN2aXNpYmlsaXR5TW9kYWxcbiAgICByb2xlPVwiZGlhbG9nXCJcbiAgICBhcmlhLW1vZGFsPVwidHJ1ZVwiXG4gICAgYXJpYS1sYWJlbGxlZGJ5PVwiZGlhbG9nIGNoYW5nZSB2aXNpYmlsaXR5XCJcbiAgICAqbmdJZj1cInNlbGVjdGVkUHJlc2VudGF0aW9uJCB8IGFzeW5jIGFzIHNlbGVjdGVkUHJlc2VudGF0aW9uXCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJvLW1vZGFsX190b3BcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJvLW1vZGFsX190b3BfX3RpdGxlXCI+XG4gICAgICAgIDxoMiBjbGFzcz1cImEtaDJcIiBpZD1cImRpYWxvZ190aXRsZVwiPnt7ICdAcHJ5LnRvb2xib3gucmVuYW1lJyB8IGkxOG4gfX08L2gyPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiby1tb2RhbF9fdG9wX19jbG9zZVwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJhLWJ0biBhLWJ0bi0taWNvbi1vbmx5XCJcbiAgICAgICAgICAjY3Jvc3NWaXNpYmlsaXR5XG4gICAgICAgICAgKGtleWRvd24uc2hpZnQudGFiKT1cImZvY3VzVmFsaWRhdGlvbigpXCJcbiAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlTW9kYWwoKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8cHJ5LWljb24gaWNvblN2Zz1cImNsb3NlXCIgW2hlaWdodF09XCIzNVwiIFt3aWR0aF09XCIzNVwiPjwvcHJ5LWljb24+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1LXZpc3VhbGx5LWhpZGRlblwiPnt7ICdAcHJ5LnRvb2xib3guY2xvc2UnIHwgaTE4biB9fTwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8cHJ5LXNoYXJlIFtuZ01vZGVsXT1cInNlbGVjdGVkUHJlc2VudGF0aW9uLnZpc2liaWxpdHlcIiAobmdNb2RlbENoYW5nZSk9XCJ2aXNpYmlsaXR5ID0gJGV2ZW50XCI+PC9wcnktc2hhcmU+XG4gICAgPGRpdiBjbGFzcz1cIm0tYnRuLWdyb3VwXCI+XG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImEtYnRuIGEtYnRuLS1zZWNvbmRhcnlcIiAoY2xpY2spPVwidG9nZ2xlTW9kYWwoKVwiPlxuICAgICAgICB7eyAnQHByeS50b29sYm94Lm1hbmlmZXN0LmNsb3NlJyB8IGkxOG4gfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgY2xhc3M9XCJhLWJ0biBhLWJ0bi0tcHJpbWFyeVwiXG4gICAgICAgICNzdWJtaXRcbiAgICAgICAgKGtleWRvd24udGFiKT1cImZvY3VzQ3Jvc3NFbGVtZW50KClcIlxuICAgICAgICAoY2xpY2spPVwiY2hhbmdlVmlzaWJpbGl0eShzZWxlY3RlZFByZXNlbnRhdGlvbilcIlxuICAgICAgPlxuICAgICAgICB7eyAnQHByeS50b29sYm94Lm1hbmlmZXN0LmNoZWNrJyB8IGkxOG4gfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI21vZGFsQWN0aW9ucz5cbjxkaXYgY2xhc3M9XCJvLW1vZGFsXCJcbiAgICAgcm9sZT1cImRpYWxvZ1wiXG4gICAgIGFyaWEtbW9kYWw9XCJ0cnVlXCJcbiAgICAgYXJpYS1sYWJlbGxlZGJ5PVwiZGlhbG9nIHByZXNlbmF0aW9uIG9wdGlvbnNcIlxuICAgICAqbmdJZj1cInNlbGVjdGVkUHJlc2VudGF0aW9uJCB8IGFzeW5jIGFzIHNlbGVjdGVkUHJlc2VudGF0aW9uXCI+XG4gIDxkaXYgY2xhc3M9XCJvLW1vZGFsX190b3BcIj5cbiAgICA8ZGl2IGNsYXNzPVwiby1tb2RhbF9fdG9wX190aXRsZVwiPlxuICAgICAgPGgyIGNsYXNzPVwiYS1oMlwiIGlkPVwiZGlhbG9nX3RpdGxlXCI+e3sgJ0BwcnkucHJlc2VudGF0aW9uLm9wdGlvbnMnIHwgaTE4biB9fTwvaDI+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cIm8tbW9kYWxfX3RvcF9fY2xvc2VcIj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgY2xhc3M9XCJhLWJ0biBhLWJ0bi0taWNvbi1vbmx5XCJcbiAgICAgICAgI2Nyb3NzVmlzaWJpbGl0eVxuICAgICAgICAoa2V5ZG93bi5zaGlmdC50YWIpPVwiZm9jdXNWYWxpZGF0aW9uKClcIlxuICAgICAgICAoY2xpY2spPVwidG9nZ2xlTW9kYWxBY3Rpb25zKClcIlxuICAgICAgPlxuICAgICAgICA8cHJ5LWljb24gaWNvblN2Zz1cImNsb3NlXCIgW2hlaWdodF09XCIzNVwiIFt3aWR0aF09XCIzNVwiPjwvcHJ5LWljb24+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwidS12aXN1YWxseS1oaWRkZW5cIj57eyAnQHByeS50b29sYm94LmNsb3NlJyB8IGkxOG4gfX08L3NwYW4+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDx1bCBjbGFzcz1cImFjdGlvbnMtbGlzdFwiPlxuICAgIDxsaT5cbiAgICAgIDxidXR0b25cbiAgICAgICAgY2xhc3M9XCJhLWJ0biBhLWJ0bi0taWNvbi1vbmx5IGEtdG9vbHRpcFwiXG4gICAgICAgIFthdHRyLmRhdGEtdG9vbHRpcF09XCInQHByeS5wcmVzZW50YXRpb24uY2hhbmdlJyB8IGkxOG5cIlxuICAgICAgICAoY2xpY2spPVwiZWRpdChzZWxlY3RlZFByZXNlbnRhdGlvbilcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiIXNlbGVjdGVkUHJlc2VudGF0aW9uLm93bmVyXCJcbiAgICAgICAgKnByeUFjY2Vzcz1cInsgbW9kdWxlOiAnZGFzaGJvYXJkJywgcGFnZTogJ21hbmlmZXN0JywgYWN0aW9uOiAnZWRpdCcgfVwiXG4gICAgICA+XG4gICAgICAgIDxwcnktaWNvbiBpY29uU3ZnPVwiZWRpdFwiPjwvcHJ5LWljb24+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwidS12aXN1YWxseS1oaWRkZW5cIj57eyAnQHByeS5wcmVzZW50YXRpb24uZWRpdGlvbicgfCBpMThuIH19PC9zcGFuPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9saT5cbiAgICA8bGk+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIChjbGljayk9XCJ0b2dnbGVNb2RhbChzZWxlY3RlZFByZXNlbnRhdGlvbilcIlxuICAgICAgICBjbGFzcz1cImEtYnRuIGEtYnRuLS1pY29uLW9ubHkgYS10b29sdGlwXCJcbiAgICAgICAgW2F0dHIuZGF0YS10b29sdGlwXT1cIidAcHJ5LnByZXNlbnRhdGlvbi5zaGFyZScgfCBpMThuXCJcbiAgICAgICAgYXJpYS1oYXNwb3B1cD1cImRpYWxvZ1wiXG4gICAgICAgIFtkaXNhYmxlZF09XCIhc2VsZWN0ZWRQcmVzZW50YXRpb24ub3duZXJcIlxuICAgICAgICAqcHJ5QWNjZXNzPVwieyBtb2R1bGU6ICdkYXNoYm9hcmQnLCBwYWdlOiAnbWFuaWZlc3QnLCBhY3Rpb246ICdzaGFyZScgfVwiXG4gICAgICA+XG4gICAgICAgIDxwcnktaWNvbiBpY29uU3ZnPVwic2hhcmVcIj48L3ByeS1pY29uPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInUtdmlzdWFsbHktaGlkZGVuXCI+e3sgJ0BwcnkucHJlc2VudGF0aW9uLnNoYXJlJyB8IGkxOG4gfX08L3NwYW4+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2xpPlxuICAgIDxsaT5cbiAgICAgIDxidXR0b25cbiAgICAgICAgY2xhc3M9XCJhLWJ0biBhLWJ0bi0taWNvbi1vbmx5IGEtdG9vbHRpcFwiXG4gICAgICAgIFthdHRyLmRhdGEtdG9vbHRpcF09XCInQHByeS5wcmVzZW50YXRpb24uZXJhc2UnIHwgaTE4blwiXG4gICAgICAgICNvcGVuTW9kYWxcbiAgICAgICAgKGNsaWNrKT1cImRlbGV0ZShzZWxlY3RlZFByZXNlbnRhdGlvbi5pZClcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiIXNlbGVjdGVkUHJlc2VudGF0aW9uLm93bmVyXCJcbiAgICAgICAgKnByeUFjY2Vzcz1cInsgbW9kdWxlOiAnZGFzaGJvYXJkJywgcGFnZTogJ21hbmlmZXN0JywgYWN0aW9uOiAnZGVsZXRlJyB9XCJcbiAgICAgID5cbiAgICAgICAgPHByeS1pY29uIGljb25Tdmc9XCJkZWxldGVcIj48L3ByeS1pY29uPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInUtdmlzdWFsbHktaGlkZGVuXCI+e3sgJ0BwcnkucHJlc2VudGF0aW9uLmRlbGV0ZScgfCBpMThuIH19PC9zcGFuPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9saT5cbiAgPC91bD5cbjwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
218
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlc2VudGF0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL3ByZXNlbnRhdGlvbi9jb21wb25lbnRzL3ByZXNlbnRhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9wcmVzZW50YXRpb24vY29tcG9uZW50cy9wcmVzZW50YXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFXLGFBQWEsRUFBYyxNQUFNLHNCQUFzQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsU0FBUyxFQUFjLEtBQUssRUFBVSxXQUFXLEVBQUUsU0FBUyxFQUFvQixNQUFNLGVBQWUsQ0FBQztBQUcvRyxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLG1CQUFtQixFQUVuQixrQkFBa0IsRUFJbEIsaUJBQWlCLEVBQ2pCLHdCQUF3QixFQUN4QixRQUFRLEVBQ1QsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDdkUsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7Ozs7QUFNMUIsTUFBTSxPQUFPLHdCQUF5QixTQUFRLHdCQUF3QjtJQTJCcEUsSUFBYSxlQUFlLENBQUMsU0FBdUM7UUFDbEUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFFRCxZQUNZLEtBQWlCLEVBQ2pCLE9BQWdCLEVBQ2hCLGdC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LHdCQUF3QjttR0FBeEIsd0JBQXdCLHVUQU9BLFdBQVcsNEZBQ2xCLFdBQVcsZ2xCQ2hDekMsZzNSQWlPQTs7NEZEek1hLHdCQUF3QjtrQkFKcEMsU0FBUzsrQkFDRSxrQkFBa0I7c1BBVXNCLG9CQUFvQjtzQkFBckUsU0FBUzt1QkFBQyxjQUFjLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO2dCQUNMLFFBQVE7c0JBQWxELFNBQVM7dUJBQUMsT0FBTyxFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTtnQkFDakIsU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXO2dCQUNBLE9BQU87c0JBQTVCLFNBQVM7dUJBQUMsU0FBUztnQkFDQyxNQUFNO3NCQUExQixTQUFTO3VCQUFDLFFBQVE7Z0JBQ0MsS0FBSztzQkFBeEIsU0FBUzt1QkFBQyxPQUFPO2dCQUNZLGVBQWU7c0JBQTVDLFNBQVM7dUJBQUMsaUJBQWlCO2dCQUNFLGVBQWU7c0JBQTVDLFNBQVM7dUJBQUMsaUJBQWlCO2dCQUluQixlQUFlO3NCQUF2QixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFLRyxJQUFJO3NCQUFaLEtBQUs7Z0JBRU8sZUFBZTtzQkFBM0IsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE92ZXJsYXksIE92ZXJsYXlDb25maWcsIE92ZXJsYXlSZWYgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBUZW1wbGF0ZVBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbnB1dCwgTmdab25lLCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHtcbiAgRGFzaGJvYXJkQWN0aW9ucyxcbiAgRGFzaGJvYXJkR3JpZExheW91dCxcbiAgRGFzaGJvYXJkTWFuaWZlc3QsXG4gIERhc2hib2FyZFNlbGVjdG9ycyxcbiAgTWFuaWZlc3REZXNjcmlwdGlvbixcbiAgUHJ5VGl0bGVTZXJ2aWNlLFxuICBQcnlWaXNpYmlsaXR5LFxuICBQcnlWaXNpYmlsaXR5VHlwZSxcbiAgU3Vic2NyaXB0aW9ubmVyRGlyZWN0aXZlLFxuICBWaWV3TW9kZVxufSBmcm9tICdAcHJvdm9seS9kYXNoYm9hcmQnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBtYXAsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHY0IH0gZnJvbSAndXVpZCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ByeS1wcmVzZW50YXRpb24nLFxuICB0ZW1wbGF0ZVVybDogJy4vcHJlc2VudGF0aW9uLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBQcnlQcmVzZW50YXRpb25Db21wb25lbnQgZXh0ZW5kcyBTdWJzY3JpcHRpb25uZXJEaXJlY3RpdmUge1xuICBtYW5pZmVzdHMkOiBPYnNlcnZhYmxlPE1hbmlmZXN0RGVzY3JpcHRpb25bXT47XG4gIHNlbGVjdGVkUHJlc2VudGF0aW9uJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWFuaWZlc3REZXNjcmlwdGlvbiB8IG51bGw+KG51bGwpO1xuICBwcmVzZW50YXRpb24/OiBNYW5pZmVzdERlc2NyaXB0aW9uO1xuICBzdGF0aWNNYW5pZmVzdCQ/OiBPYnNlcnZhYmxlPERhc2hib2FyZE1hbmlmZXN0PjtcbiAgc2VsZWN0ZWRNb2RlOiBWaWV3TW9kZSA9IFZpZXdNb2RlLkNBVEFMT0c7XG4gIG1vZGFsT3BlbmVkID0gZmFsc2U7XG4gIEBWaWV3Q2hpbGQoJ21vZGFsQWN0aW9ucycsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSkgdGVtcGxhdGVNb2RhbEFjdGlvbnMhOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBAVmlld0NoaWxkKCdtb2RhbCcsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSkgdGVtcGxhdGUhOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBAVmlld0NoaWxkKCdvcGVuTW9kYWwnKSBvcGVuTW9kYWwhOiBFbGVtZW50UmVmPEhUTUxCdXR0b25FbGVtZW50PjtcbiAgQFZpZXdDaGlsZCgnY29uZmlybScpIGNvbmZpcm0hOiBFbGVtZW50UmVmPEhUTUxCdXR0b25FbGVtZW50PjtcbiAgQFZpZXdDaGlsZCgnc3VibWl0Jykgc3VibWl0ITogRWxlbWVudFJlZjxIVE1MQnV0dG9uRWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoJ2Nyb3NzJykgY3Jvc3MhOiBFbGVtZW50UmVmPEhUTUxCdXR0b25FbGVtZW50PjtcbiAgQFZpZXdDaGlsZCgnY3Jvc3NWaXNpYmlsaXR5JykgY3Jvc3NWaXNpYmlsaXR5ITogRWxlbWVudFJlZjxIVE1MQnV0dG9uRWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoJ3Zpc2liaWxpdHlNb2RhbCcpIHZpc2liaWxpdHlNb2RhbCE6IEVsZW1lbnRSZWY7XG4gIG92ZXJsYXlSZWY/OiBPdmVybGF5UmVmO1xuICB2aXNpYmlsaXR5OiBQcnlWaXNpYmlsaXR5ID0geyB0eXBlOiBQcnlWaXNpYmlsaXR5VHlwZS5QUklWQVRFIH07XG4gIFByeVZpc2liaWxpdHlUeXBlID0gUHJ5VmlzaWJpbGl0eVR5cGU7XG4gIEBJbnB1dCgpIGVkaXRpb25TdGFydFVybDogc3RyaW5nID0gJy8nO1xuICBASW5wdXQoKSBjb25zdWx0U3RhcnRVcmw6IHN0cmluZyA9ICcvJztcbiAgQElucHV0KCkgbWVBc093bmVyPzogc3RyaW5nO1xuICBWaWV3TW9kZSA9IFZpZXdNb2RlO1xuICBzZWFyY2gkID0gbmV3IEJlaGF2aW9yU3ViamVjdCgnJyk7XG4gIGZpbHRlcmVkUHJlc2VudGF0aW9ucyQ6IE9ic2VydmFibGU8TWFuaWZlc3REZXNjcmlwdGlvbltdPjtcbiAgbGlzdE9mTWFuaWZlc3RzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWFuaWZlc3REZXNjcmlwdGlvbltdIHwgbnVsbD4obnVsbCk7XG4gIEBJbnB1dCgpIG1vZGU6ICd0aGVtZScgfCAnbWV0YScgPSAnbWV0YSc7XG5cbiAgQElucHV0KCkgc2V0IGxpc3RPZk1hbmlmZXN0cyhtYW5pZmVzdHM6IE1hbmlmZXN0RGVzY3JpcHRpb25bXSB8IG51bGwpIHtcbiAgICB0aGlzLmxpc3RPZk1hbmlmZXN0cyQubmV4dChBcnJheS5pc0FycmF5KG1hbmlmZXN0cykgPyBtYW5pZmVzdHMgOiBudWxsKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBzdG9yZTogU3RvcmU8YW55PixcbiAgICBwcm90ZWN0ZWQgb3ZlcmxheTogT3ZlcmxheSxcbiAgICBwcm90ZWN0ZWQgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgICBwcm90ZWN0ZWQgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJvdGVjdGVkIHRpdGxlU2VydmljZTogUHJ5VGl0bGVTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJvdGVjdGVkIG5nWm9uZTogTmdab25lXG4gICkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMuYWN0aXZhdGVkUm91dGUucXVlcnlQYXJhbXMuc3Vic2NyaWJlKChwYXJhbXMpID0+IHtcbiAgICAgICAgaWYgKHBhcmFtc1snY3JlYXRlJ10pIHtcbiAgICAgICAgICB0aGlzLmNyZWF0aW9uKCk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKERhc2hib2FyZEFjdGlvbnMuZmV0Y2hNYW5pZmVzdHNMaXN0KCkpO1xuICAgIHRoaXMubWFuaWZlc3RzJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5zdG9yZVxuICAgICAgICAuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5tYW5pZmVzdHNMaXN0KVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKG1hbmlmZXN0TGlzdCkgPT5cbiAgICAgICAgICAgIFsuLi5tYW5pZmVzdExpc3RdLnNvcnQoKGEsIGIpID0+XG4gICAgICAgICAgICAgIGEubW9kaWZpY2F0aW9uRGF0ZSA/IGIubW9kaWZpY2F0aW9uRGF0ZS5sb2NhbGVDb21wYXJlKGEubW9kaWZpY2F0aW9uRGF0ZSkgOiAxXG4gICAgICAgICAgICApXG4gICAgICAgICAgKVxuICAgICAgICApLFxuICAgICAgdGhpcy5saXN0T2ZNYW5pZmVzdHMkXG4gICAgXSkucGlwZShtYXAoKFtkeW5hbWljcywgc3RhdGljc10pID0+ICghIXN0YXRpY3MgPyBzdGF0aWNzIDogZHluYW1pY3MpKSk7XG5cbiAgICB0aGlzLnN0YXRpY01hbmlmZXN0JCA9IHRoaXMuc3RvcmVcbiAgICAgIC5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnN0YXRpY01hbmlmZXN0KVxuICAgICAgLnBpcGUobWFwKChzdGF0aWNNKSA9PiBzdGF0aWNNLndpbmRvd3NbMF0pKTtcbiAgICB0aGlzLmZpbHRlcmVkUHJlc2VudGF0aW9ucyQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLm1hbmlmZXN0cyQsIHRoaXMuc2VhcmNoJF0pLnBpcGUoXG4gICAgICBtYXAoKFtwcmVzZW50YXRpb25zLCBzZWFyY2hdKSA9PlxuICAgICAgICBwcmVzZW50YXRpb25zLmZpbHRlcihcbiAgICAgICAgICAocHJlc2VudGF0aW9ucykgPT5cbiAgICAgICAgICAgIHNlYXJjaC5sZW5ndGggPT09IDAgfHxcbiAgICAgICAgICAgIHByZXNlbnRhdGlvbnMuZGVzY3JpcHRpb24udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2gudG9Mb3dlckNhc2UoKSkgfHxcbiAgICAgICAgICAgIHByZXNlbnRhdGlvbnMubmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaC50b0xvd2VyQ2FzZSgpKVxuICAgICAgICApXG4gICAgICApXG4gICAgKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnByZXNlbnRhdGlvbikuc3Vic2NyaWJlKChwcmVzZW50YXRpb24pID0+IHtcbiAgICAgICAgaWYgKCEhcHJlc2VudGF0aW9uLmN1cnJlbnQpIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkUHJlc2VudGF0aW9uJC5uZXh0KHByZXNlbnRhdGlvbi5jdXJyZW50ID8/IG51bGwpO1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRNb2RlID0gcHJlc2VudGF0aW9uPy52aWV3TW9kZSA/PyB0aGlzLlZpZXdNb2RlLkNBVEFMT0c7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgICB0aGlzLnRpdGxlU2VydmljZS5jaGFuZ2VUaXRsZSgnQHByeS5wcmVzZW50YXRpb24udGl0bGUnKTtcbiAgfVxuXG4gIGNsb3NlUmVzdGl0dXRpb24oKSB7XG4gICAgdGhpcy5zZWxlY3RlZFByZXNlbnRhdGlvbiQubmV4dChudWxsKTtcbiAgICB0aGlzLnNlbGVjdGVkTW9kZSA9IFZpZXdNb2RlLkNBVEFMT0c7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChEYXNoYm9hcmRBY3Rpb25zLnNlbGVjdFByZXNlbnRhdGlvbih7IHByZXNlbnRhdGlvbjogdW5kZWZpbmVkLCB2aWV3TW9kZTogVmlld01vZGUuQ0FUQUxPRyB9KSk7XG4gIH1cblxuICBmZXRjaChwcmVzZW50YXRpb246IE1hbmlmZXN0RGVzY3JpcHRpb24pIHtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKERhc2hib2FyZEFjdGlvbnMubG9hZFByZXNlbnRhdGlvbih7IHByZXNlbnRhdGlvbiwgdmlld01vZGU6IFZpZXdNb2RlLkNPTlNVTFQgfSkpO1xuICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICB0aGlzLnJvdXRlcj8ubmF2aWdhdGVCeVVybCh0aGlzLmNvbnN1bHRTdGFydFVybCk7XG4gICAgfSk7XG4gIH1cblxuICBjcmVhdGlvbigpIHtcbiAgICB0aGlzLnNlbGVjdGVkTW9kZSA9IFZpZXdNb2RlLkNSRUFUSU9OO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVNYW5pZmVzdCh7IG1hbmlmZXN0OiB7IHdpbmRvd3M6IFtdIH0sIHNlbGVjdGVkSWRzOiBbXSB9KSk7XG4gICAgY29uc3QgbmV3UHJlc2VudGF0aW9uID0ge1xuICAgICAgcHJlc2VudGF0aW9uOiB7XG4gICAgICAgIGlkOiB2NCgpLFxuICAgICAgICBuYW1lOiAnJyxcbiAgICAgICAgZGVzY3JpcHRpb246ICcnLFxuICAgICAgICB2aXNpYmlsaXR5OiB7IHR5cGU6IFByeVZpc2liaWxpdHlUeXBlLlBSSVZBVEUgfSxcbiAgICAgICAgb3duZXI6IHRydWVcbiAgICAgIH0gYXMgTWFuaWZlc3REZXNjcmlwdGlvbixcbiAgICAgIHZpZXdNb2RlOiBWaWV3TW9kZS5DUkVBVElPTlxuICAgIH07XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChEYXNoYm9hcmRBY3Rpb25zLnNlbGVjdFByZXNlbnRhdGlvbihuZXdQcmVzZW50YXRpb24pKTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKERhc2hib2FyZEFjdGlvbnMuc2V0R3JpZExheW91dCh7IGxheW91dDogRGFzaGJvYXJkR3JpZExheW91dC5GVUxMIH0pKTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKERhc2hib2FyZEFjdGlvbnMudXBkYXRlRGlzcGxheU9wdGlvbnMoeyBtb2RlOiBWaWV3TW9kZS5DUkVBVElPTiB9KSk7XG4gIH1cblxuICBlZGl0KHByZXNlbnRhdGlvbjogTWFuaWZlc3REZXNjcmlwdGlvbikge1xuICAgIHRoaXMuc2VsZWN0ZWRNb2RlID0gVmlld01vZGUuRURJVElPTjtcbiAgICB0aGlzLnNlbGVjdGVkUHJlc2VudGF0aW9uJC5uZXh0KHByZXNlbnRhdGlvbik7XG4gICAgdGhpcy50aXRsZVNlcnZpY2UuY2hhbmdlVGl0bGUocHJlc2VudGF0aW9uLm5hbWUpO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGFzaGJvYXJkQWN0aW9ucy5zZWxlY3RQcmVzZW50YXRpb24oeyBwcmVzZW50YXRpb24sIHZpZXdNb2RlOiBWaWV3TW9kZS5FRElUSU9OIH0pKTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKERhc2hib2FyZEFjdGlvbnMuZmV0Y2hTdGF0aWNNYW5pZmVzdCh7IGlkOiBwcmVzZW50YXRpb24uaWQgfSkpO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVEaXNwbGF5T3B0aW9ucyh7IG1vZGU6IFZpZXdNb2RlLkVESVRJT04gfSkpO1xuICAgIHRoaXMub3ZlcmxheVJlZj8uZGlzcG9zZSgpO1xuICAgIHRoaXMub3ZlcmxheVJlZiA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGRlbGV0ZShpZDogc3RyaW5nKSB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChEYXNoYm9hcmRBY3Rpb25zLmNvbmZpcm1NYW5pZmVzdERlbGV0aW9uKHsgaWQgfSkpO1xuICAgIHRoaXMudG9nZ2xlTW9kYWxBY3Rpb25zKCk7XG4gIH1cblxuICB0b2dnbGVNb2RhbEFjdGlvbnMocHJlc2VudGF0aW9uPzogTWFuaWZlc3REZXNjcmlwdGlvbiB8IG51bGwpIHtcbiAgICBpZiAoIXRoaXMub3ZlcmxheVJlZiAmJiBwcmVzZW50YXRpb24pIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRQcmVzZW50YXRpb24kLm5leHQocHJlc2VudGF0aW9uKTtcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGFzaGJvYXJkQWN0aW9ucy5zZWxlY3RQcmVzZW50YXRpb24oeyBwcmVzZW50YXRpb24sIHZpZXdNb2RlOiBWaWV3TW9kZS5DQVRBTE9HIH0pKTtcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGFzaGJvYXJkQWN0aW9ucy5sb2FkTWFuaWZlc3QoeyBpZDogcHJlc2VudGF0aW9uLmlkIH0pKTtcbiAgICAgIHRoaXMub3ZlcmxheVJlZiA9IHRoaXMub3ZlcmxheS5jcmVhdGUoXG4gICAgICAgIG5ldyBPdmVybGF5Q29uZmlnKHtcbiAgICAgICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcbiAgICAgICAgICBwYW5lbENsYXNzOiBbJ28tbW9kYWwtd3JhcHBlciddLFxuICAgICAgICAgIGJhY2tkcm9wQ2xhc3M6ICdiYWNrZHJvcCdcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgICB0aGlzLm92ZXJsYXlSZWYuYmFja2Ryb3BDbGljaygpLnN1YnNjcmliZSgoKSA9PiB0aGlzLnRvZ2dsZU1vZGFsQWN0aW9ucyhwcmVzZW50YXRpb24pKTtcbiAgICAgIHRoaXMub3ZlcmxheVJlZi5hdHRhY2gobmV3IFRlbXBsYXRlUG9ydGFsKHRoaXMudGVtcGxhdGVNb2RhbEFjdGlvbnMsIHRoaXMudmlld0NvbnRhaW5lclJlZikpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm92ZXJsYXlSZWY/LmRpc3Bvc2UoKTtcbiAgICAgIHRoaXMub3ZlcmxheVJlZiA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuc2VsZWN0ZWRQcmVzZW50YXRpb24kLm5leHQobnVsbCk7XG4gICAgfVxuICB9XG5cbiAgdG9nZ2xlTW9kYWwocHJlc2VudGF0aW9uPzogTWFuaWZlc3REZXNjcmlwdGlvbiB8IG51bGwpIHtcbiAgICB0aGlzLm1vZGFsT3BlbmVkID0gIXRoaXMubW9kYWxPcGVuZWQ7XG4gICAgaWYgKHRoaXMubW9kYWxPcGVuZWQgJiYgcHJlc2VudGF0aW9uKSB7XG4gICAgICB0aGlzLnRvZ2dsZU1vZGFsQWN0aW9ucygpO1xuICAgICAgdGhpcy5zZWxlY3RlZFByZXNlbnRhdGlvbiQubmV4dChwcmVzZW50YXRpb24pO1xuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChEYXNoYm9hcmRBY3Rpb25zLnNlbGVjdFByZXNlbnRhdGlvbih7IHByZXNlbnRhdGlvbiwgdmlld01vZGU6IFZpZXdNb2RlLkNBVEFMT0cgfSkpO1xuICAgICAgLyogd2UgbmVlZCB0byBsb2FkIG1hbmlmZXN0IGluIG9yZGVyIHRvIGJlIGFibGUgdG8gc2F2ZSBpdCBsYXRlciAqL1xuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChEYXNoYm9hcmRBY3Rpb25zLmxvYWRNYW5pZmVzdCh7IGlkOiBwcmVzZW50YXRpb24uaWQgfSkpO1xuICAgICAgdGhpcy5vdmVybGF5UmVmID0gdGhpcy5vdmVybGF5LmNyZWF0ZShcbiAgICAgICAgbmV3IE92ZXJsYXlDb25maWcoe1xuICAgICAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxuICAgICAgICAgIHBhbmVsQ2xhc3M6IFsnby1tb2RhbC13cmFwcGVyJ10sXG4gICAgICAgICAgYmFja2Ryb3BDbGFzczogJ2JhY2tkcm9wJ1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgICAgIHRoaXMub3ZlcmxheVJlZi5iYWNrZHJvcENsaWNrKCkuc3Vic2NyaWJlKCgpID0+IHRoaXMudG9nZ2xlTW9kYWwocHJlc2VudGF0aW9uKSk7XG4gICAgICB0aGlzLm92ZXJsYXlSZWYuYXR0YWNoKG5ldyBUZW1wbGF0ZVBvcnRhbCh0aGlzLnRlbXBsYXRlLCB0aGlzLnZpZXdDb250YWluZXJSZWYpKTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBjb25zdCBmb2N1cyA9IHRoaXMudmlzaWJpbGl0eU1vZGFsLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW5bMF0uY2hpbGRyZW5bMV0uZmlyc3RFbGVtZW50Q2hpbGQgYXMgSFRNTEJ1dHRvbkVsZW1lbnQ7XG4gICAgICAgIGZvY3VzLmZvY3VzKCk7XG4gICAgICB9LCAxMCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub3ZlcmxheVJlZj8uZGlzcG9zZSgpO1xuICAgICAgdGhpcy5zZWxlY3RlZFByZXNlbnRhdGlvbiQubmV4dChudWxsKTtcbiAgICB9XG4gIH1cblxuICBjaGFuZ2VWaXNpYmlsaXR5KHByZXNlbnRhdGlvbj86IE1hbmlmZXN0RGVzY3JpcHRpb24pIHtcbiAgICBpZiAocHJlc2VudGF0aW9uKSB7XG4gICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFxuICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLnNhdmVNYW5pZmVzdCh7XG4gICAgICAgICAgaWQ6IHByZXNlbnRhdGlvbi5pZCA/PyAnJyxcbiAgICAgICAgICBuYW1lOiBwcmVzZW50YXRpb24ubmFtZSA/PyAnJyxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogcHJlc2VudGF0aW9uLmRlc2NyaXB0aW9uID8/ICcnLFxuICAgICAgICAgIGltYWdlOiBwcmVzZW50YXRpb24uaW1hZ2UgPz8gJycsXG4gICAgICAgICAgdmlzaWJpbGl0eTogdGhpcy52aXNpYmlsaXR5XG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLnRvZ2dsZU1vZGFsKHByZXNlbnRhdGlvbik7XG4gIH1cblxuICBmb2N1c0Nyb3NzRWxlbWVudCgpIHtcbiAgICBpZiAodGhpcy5jcm9zc1Zpc2liaWxpdHkpIHtcbiAgICAgIHRoaXMuY3Jvc3NWaXNpYmlsaXR5Py5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgfVxuICAgIHRoaXMuY3Jvc3M/Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgfVxuXG4gIGZvY3VzVmFsaWRhdGlvbigpIHtcbiAgICBpZiAodGhpcy5jb25maXJtKSB7XG4gICAgICB0aGlzLmNvbmZpcm0ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cbiAgICB0aGlzLnN1Ym1pdC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gIH1cbn1cbiIsIjxwcnktcHJlc2VudGF0aW9uLWNzcz48L3ByeS1wcmVzZW50YXRpb24tY3NzPlxuPGRpdiBjbGFzcz1cIm8tbWFuaWZlc3QtbGF5b3V0XCIgW25nU3dpdGNoXT1cInNlbGVjdGVkTW9kZVwiPlxuICA8bmctY29udGFpbmVyICpuZ1N3aXRjaERlZmF1bHQ+XG4gICAgPGRpdiBjbGFzcz1cIm8tbWFuaWZlc3QtbGF5b3V0X190b29sYm94XCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGNsYXNzPVwiYS1idG4gYS1idG4tLXByaW1hcnkgYS1idG4tLWljb24tdGV4dCBhLXRvb2x0aXBcIlxuICAgICAgICBbYXR0ci5kYXRhLXRvb2x0aXBdPVwiJ0BwcnkucHJlc2VudGF0aW9uLmNyZWF0ZScgfCBpMThuXCJcbiAgICAgICAgZGF0YS10b29sdGlwLXBvc2l0aW9uPVwiYm90dG9tXCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIChjbGljayk9XCJjcmVhdGlvbigpXCJcbiAgICAgICAgKnByeUFjY2Vzcz1cInsgbW9kdWxlOiAnZGFzaGJvYXJkJywgcGFnZTogJ21hbmlmZXN0JywgYWN0aW9uOiAnY3JlYXRlJyB9XCJcbiAgICAgID5cbiAgICAgICAge3sgJ0BwcnkucHJlc2VudGF0aW9uLmNyZWF0ZScgfCBpMThuIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhLXByZXNlbnRhdGlvbl9fc2VhcmNoXCI+XG4gICAgICAgICAgPGxhYmVsIGlkPVwiY2F0YWxvZy1zZWFyY2gtbGFiZWxcIiBmb3I9XCJjYXRhbG9nLXNlYXJjaFwiIGNsYXNzPVwidS12aXN1YWxseS1oaWRkZW5cIj5cbiAgICAgICAgICAgIDxzcGFuPnt7ICdAcHJ5LnRvb2xib3guY2F0YWxvZy5maWx0ZXIubmFtZScgfCBpMThuIH19PC9zcGFuPlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICBpZD1cImNhdGFsb2ctc2VhcmNoXCJcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgIGNsYXNzPVwiYS1mb3JtLWZpZWxkXCJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInQHByeS5wcmVzZW50YXRpb24uc2VhcmNoJyB8IGkxOG5cIlxuICAgICAgICAgICAgW25nTW9kZWxdPVwic2VhcmNoJCB8IGFzeW5jXCJcbiAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInRoaXMuc2VhcmNoJC5uZXh0KCRldmVudClcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPHByeS1pY29uIGljb25Tdmc9XCJzZWFyY2hcIiBbd2lkdGhdPVwiMTdcIiBbaGVpZ2h0XT1cIjE3XCI+PC9wcnktaWNvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiby1tYW5pZmVzdC1sYXlvdXRfX2NvbnRlbnRcIj5cbiAgICAgIDxoMSBjbGFzcz1cImEtaDFcIj57eyAnQHByeS5wcmVzZW50YXRpb24udGl0bGUnIHwgaTE4biB9fTwvaDE+XG4gICAgICA8ZGl2IGNsYXNzPVwiby1wcmVzZW50YXRpb24td3JhcHBlclwiPlxuICAgICAgICA8dWwgY2xhc3M9XCJvLXByZXNlbnRhdGlvblwiPlxuICAgICAgICAgIDxsaSBjbGFzcz1cIm8tcHJlc2VudGF0aW9uX19pdGVtXCIgKm5nRm9yPVwibGV0IHByZXNlbnRhdGlvbiBvZiBmaWx0ZXJlZFByZXNlbnRhdGlvbnMkIHwgYXN5bmNcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvLXByZXNlbnRhdGlvbl9faXRlbV9faGVhZGVyXCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJwcmVzZW50YXRpb24udmlzaWJpbGl0eS50eXBlID09PSBQcnlWaXNpYmlsaXR5VHlwZS5QUklWQVRFXCI+XG4gICAgICAgICAgICAgICAgPHByeS1pY29uXG4gICAgICAgICAgICAgICAgICBbaWNvblN2Z109XCJwcmVzZW50YXRpb24udmlzaWJpbGl0eS50eXBlLnRvTG93ZXJDYXNlKClcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpcy1wcml2YXRlIGEtdG9vbHRpcFwiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLXRvb2x0aXBdPVwiJ0BwcnkucHJlc2VudGF0aW9uLnByaXZhdGUnIHwgaTE4blwiXG4gICAgICAgICAgICAgICAgICBbaGVpZ2h0XT1cIjE3XCJcbiAgICAgICAgICAgICAgICAgIFt3aWR0aF09XCIxN1wiXG4gICAgICAgICAgICAgICAgPjwvcHJ5LWljb24+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYS10b29sdGlwXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm8tcHJlc2VudGF0aW9uX19pdGVtX19pbWFnZVwiPlxuICAgICAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgICAgICBhbHQ9XCJcIlxuICAgICAgICAgICAgICAgICAgICBbaGVpZ2h0XT1cInByZXNlbnRhdGlvbi5jb3ZlciA/IDYwMCA6IDEyOFwiXG4gICAgICAgICAgICAgICAgICAgIFt3aWR0aF09XCJwcmVzZW50YXRpb24uY292ZXIgPyA2MDAgOiAxMjhcIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtZnVsbC13aWR0aF09XCJwcmVzZW50YXRpb24uY292ZXJcIlxuICAgICAgICAgICAgICAgICAgICBbc3JjXT1cInByZXNlbnRhdGlvbi5pbWFnZSB8IGdldFNlY3VyZWRJbWFnZSB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicHJlc2VudGF0aW9uLnZpc2liaWxpdHkudHlwZSA9PT0gUHJ5VmlzaWJpbGl0eVR5cGUuUFJJVkFURVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb3JlLWFjdGlvbnNcIj5cbiAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYS1idG4gYS1idG4tLW1vcmUgYS10b29sdGlwXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS10b29sdGlwXT1cIidAcHJ5LnJlc3RpdHV0aW9uLm1vcmUnIHwgaTE4blwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVNb2RhbEFjdGlvbnMocHJlc2VudGF0aW9uKVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxwcnktaWNvbiBbaGVpZ2h0XT1cIjI1XCIgW3dpZHRoXT1cIjI1XCIgaWNvblN2Zz1cIm1vcmVfaG9yaXpcIj48L3ByeS1pY29uPlxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiby1wcmVzZW50YXRpb25fX2l0ZW1fX3R4dFwiPlxuICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJhLWgzXCI+e3sgcHJlc2VudGF0aW9uLm5hbWUgfX08L2gzPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYS1wXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRlc2NyaXB0aW9uLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkZXNjcmlwdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICB7eyBwcmVzZW50YXRpb24uZGVzY3JpcHRpb24gfX1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZXNjcmlwdGlvbi10b29sdGlwXCI+e3sgcHJlc2VudGF0aW9uLmRlc2NyaXB0aW9uIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8cCBjbGFzcz1cImEtcCAtZGF0ZVwiPnt7IHByZXNlbnRhdGlvbi5tb2RpZmljYXRpb25EYXRlIHwgc2luY2VEYXRlIH19PC9wPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiby1wcmVzZW50YXRpb25fX2l0ZW1fX2Zvb3RlclwiPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJhLWJ0biBhLXRvb2x0aXBcIlxuICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtdG9vbHRpcF09XCInQHByeS5wcmVzZW50YXRpb24udmlldycgfCBpMThuXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZmV0Y2gocHJlc2VudGF0aW9uKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyAnQHByeS5wcmVzZW50YXRpb24uY29uc3VsdCcgfCBpMThuIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9saT5cbiAgICAgICAgPC91bD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiVmlld01vZGUuQ1JFQVRJT05cIj5cbiAgICA8cHJ5LWFkZC1lZGl0LXByZXNlbnRhdGlvblxuICAgICAgW3NlbGVjdGVkUHJlc2VudGF0aW9uXT1cInNlbGVjdGVkUHJlc2VudGF0aW9uJCB8IGFzeW5jXCJcbiAgICAgIChnb0JhY2spPVwiY2xvc2VSZXN0aXR1dGlvbigpXCJcbiAgICAgIFtlZGl0aW9uU3RhcnRVcmxdPVwiZWRpdGlvblN0YXJ0VXJsXCJcbiAgICAgIFtlZGl0aW9uXT1cImZhbHNlXCJcbiAgICAgIFttb2RlXT1cIm1vZGVcIlxuICAgID48L3ByeS1hZGQtZWRpdC1wcmVzZW50YXRpb24+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJWaWV3TW9kZS5FRElUSU9OXCI+XG4gICAgPHByeS1hZGQtZWRpdC1wcmVzZW50YXRpb25cbiAgICAgIFtzZWxlY3RlZFByZXNlbnRhdGlvbl09XCJzZWxlY3RlZFByZXNlbnRhdGlvbiQgfCBhc3luY1wiXG4gICAgICAoZ29CYWNrKT1cImNsb3NlUmVzdGl0dXRpb24oKVwiXG4gICAgICBbZWRpdGlvblN0YXJ0VXJsXT1cImVkaXRpb25TdGFydFVybFwiXG4gICAgICBbZWRpdGlvbl09XCJ0cnVlXCJcbiAgICAgIFttb2RlXT1cIm1vZGVcIlxuICAgID48L3ByeS1hZGQtZWRpdC1wcmVzZW50YXRpb24+XG4gIDwvbmctY29udGFpbmVyPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjbW9kYWw+XG4gIDxkaXZcbiAgICBjbGFzcz1cIm8tbW9kYWxcIlxuICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICN2aXNpYmlsaXR5TW9kYWxcbiAgICByb2xlPVwiZGlhbG9nXCJcbiAgICBhcmlhLW1vZGFsPVwidHJ1ZVwiXG4gICAgYXJpYS1sYWJlbGxlZGJ5PVwiZGlhbG9nIGNoYW5nZSB2aXNpYmlsaXR5XCJcbiAgICAqbmdJZj1cInNlbGVjdGVkUHJlc2VudGF0aW9uJCB8IGFzeW5jIGFzIHNlbGVjdGVkUHJlc2VudGF0aW9uXCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJvLW1vZGFsX190b3BcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJvLW1vZGFsX190b3BfX3RpdGxlXCI+XG4gICAgICAgIDxoMiBjbGFzcz1cImEtaDJcIiBpZD1cImRpYWxvZ190aXRsZVwiPnt7ICdAcHJ5LnRvb2xib3gucmVuYW1lJyB8IGkxOG4gfX08L2gyPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiby1tb2RhbF9fdG9wX19jbG9zZVwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJhLWJ0biBhLWJ0bi0taWNvbi1vbmx5XCJcbiAgICAgICAgICAjY3Jvc3NWaXNpYmlsaXR5XG4gICAgICAgICAgKGtleWRvd24uc2hpZnQudGFiKT1cImZvY3VzVmFsaWRhdGlvbigpXCJcbiAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlTW9kYWwoKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8cHJ5LWljb24gaWNvblN2Zz1cImNsb3NlXCIgW2hlaWdodF09XCIzNVwiIFt3aWR0aF09XCIzNVwiPjwvcHJ5LWljb24+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1LXZpc3VhbGx5LWhpZGRlblwiPnt7ICdAcHJ5LnRvb2xib3guY2xvc2UnIHwgaTE4biB9fTwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8cHJ5LXNoYXJlIFtuZ01vZGVsXT1cInNlbGVjdGVkUHJlc2VudGF0aW9uLnZpc2liaWxpdHlcIiAobmdNb2RlbENoYW5nZSk9XCJ2aXNpYmlsaXR5ID0gJGV2ZW50XCI+PC9wcnktc2hhcmU+XG4gICAgPGRpdiBjbGFzcz1cIm0tYnRuLWdyb3VwXCI+XG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImEtYnRuIGEtYnRuLS1zZWNvbmRhcnlcIiAoY2xpY2spPVwidG9nZ2xlTW9kYWwoKVwiPlxuICAgICAgICB7eyAnQHByeS50b29sYm94Lm1hbmlmZXN0LmNsb3NlJyB8IGkxOG4gfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgY2xhc3M9XCJhLWJ0biBhLWJ0bi0tcHJpbWFyeVwiXG4gICAgICAgICNzdWJtaXRcbiAgICAgICAgKGtleWRvd24udGFiKT1cImZvY3VzQ3Jvc3NFbGVtZW50KClcIlxuICAgICAgICAoY2xpY2spPVwiY2hhbmdlVmlzaWJpbGl0eShzZWxlY3RlZFByZXNlbnRhdGlvbilcIlxuICAgICAgPlxuICAgICAgICB7eyAnQHByeS50b29sYm94Lm1hbmlmZXN0LmNoZWNrJyB8IGkxOG4gfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI21vZGFsQWN0aW9ucz5cbiAgPGRpdlxuICAgIGNsYXNzPVwiby1tb2RhbFwiXG4gICAgcm9sZT1cImRpYWxvZ1wiXG4gICAgYXJpYS1tb2RhbD1cInRydWVcIlxuICAgIGFyaWEtbGFiZWxsZWRieT1cImRpYWxvZyBwcmVzZW5hdGlvbiBvcHRpb25zXCJcbiAgICAqbmdJZj1cInNlbGVjdGVkUHJlc2VudGF0aW9uJCB8IGFzeW5jIGFzIHNlbGVjdGVkUHJlc2VudGF0aW9uXCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJvLW1vZGFsX190b3BcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJvLW1vZGFsX190b3BfX3RpdGxlXCI+XG4gICAgICAgIDxoMiBjbGFzcz1cImEtaDJcIiBpZD1cImRpYWxvZ190aXRsZVwiPnt7ICdAcHJ5LnByZXNlbnRhdGlvbi5vcHRpb25zJyB8IGkxOG4gfX08L2gyPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiby1tb2RhbF9fdG9wX19jbG9zZVwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJhLWJ0biBhLWJ0bi0taWNvbi1vbmx5XCJcbiAgICAgICAgICAjY3Jvc3NWaXNpYmlsaXR5XG4gICAgICAgICAgKGtleWRvd24uc2hpZnQudGFiKT1cImZvY3VzVmFsaWRhdGlvbigpXCJcbiAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlTW9kYWxBY3Rpb25zKClcIlxuICAgICAgICA+XG4gICAgICAgICAgPHByeS1pY29uIGljb25Tdmc9XCJjbG9zZVwiIFtoZWlnaHRdPVwiMzVcIiBbd2lkdGhdPVwiMzVcIj48L3ByeS1pY29uPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidS12aXN1YWxseS1oaWRkZW5cIj57eyAnQHByeS50b29sYm94LmNsb3NlJyB8IGkxOG4gfX08L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPHVsIGNsYXNzPVwiYWN0aW9ucy1saXN0XCI+XG4gICAgICA8bGk+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzcz1cImEtYnRuIGEtYnRuLS1pY29uLW9ubHkgYS10b29sdGlwXCJcbiAgICAgICAgICBbYXR0ci5kYXRhLXRvb2x0aXBdPVwiJ0BwcnkucHJlc2VudGF0aW9uLmNoYW5nZScgfCBpMThuXCJcbiAgICAgICAgICAoY2xpY2spPVwiZWRpdChzZWxlY3RlZFByZXNlbnRhdGlvbilcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhc2VsZWN0ZWRQcmVzZW50YXRpb24ub3duZXJcIlxuICAgICAgICAgICpwcnlBY2Nlc3M9XCJ7IG1vZHVsZTogJ2Rhc2hib2FyZCcsIHBhZ2U6ICdtYW5pZmVzdCcsIGFjdGlvbjogJ2VkaXQnIH1cIlxuICAgICAgICA+XG4gICAgICAgICAgPHByeS1pY29uIGljb25Tdmc9XCJlZGl0XCI+PC9wcnktaWNvbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInUtdmlzdWFsbHktaGlkZGVuXCI+e3sgJ0BwcnkucHJlc2VudGF0aW9uLmVkaXRpb24nIHwgaTE4biB9fTwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2xpPlxuICAgICAgPGxpPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZU1vZGFsKHNlbGVjdGVkUHJlc2VudGF0aW9uKVwiXG4gICAgICAgICAgY2xhc3M9XCJhLWJ0biBhLWJ0bi0taWNvbi1vbmx5IGEtdG9vbHRpcFwiXG4gICAgICAgICAgW2F0dHIuZGF0YS10b29sdGlwXT1cIidAcHJ5LnByZXNlbnRhdGlvbi5zaGFyZScgfCBpMThuXCJcbiAgICAgICAgICBhcmlhLWhhc3BvcHVwPVwiZGlhbG9nXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiIXNlbGVjdGVkUHJlc2VudGF0aW9uLm93bmVyXCJcbiAgICAgICAgICAqcHJ5QWNjZXNzPVwieyBtb2R1bGU6ICdkYXNoYm9hcmQnLCBwYWdlOiAnbWFuaWZlc3QnLCBhY3Rpb246ICdzaGFyZScgfVwiXG4gICAgICAgID5cbiAgICAgICAgICA8cHJ5LWljb24gaWNvblN2Zz1cInNoYXJlXCI+PC9wcnktaWNvbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInUtdmlzdWFsbHktaGlkZGVuXCI+e3sgJ0BwcnkucHJlc2VudGF0aW9uLnNoYXJlJyB8IGkxOG4gfX08L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9saT5cbiAgICAgIDxsaT5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNsYXNzPVwiYS1idG4gYS1idG4tLWljb24tb25seSBhLXRvb2x0aXBcIlxuICAgICAgICAgIFthdHRyLmRhdGEtdG9vbHRpcF09XCInQHByeS5wcmVzZW50YXRpb24uZXJhc2UnIHwgaTE4blwiXG4gICAgICAgICAgI29wZW5Nb2RhbFxuICAgICAgICAgIChjbGljayk9XCJkZWxldGUoc2VsZWN0ZWRQcmVzZW50YXRpb24uaWQpXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiIXNlbGVjdGVkUHJlc2VudGF0aW9uLm93bmVyXCJcbiAgICAgICAgICAqcHJ5QWNjZXNzPVwieyBtb2R1bGU6ICdkYXNoYm9hcmQnLCBwYWdlOiAnbWFuaWZlc3QnLCBhY3Rpb246ICdkZWxldGUnIH1cIlxuICAgICAgICA+XG4gICAgICAgICAgPHByeS1pY29uIGljb25Tdmc9XCJkZWxldGVcIj48L3ByeS1pY29uPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidS12aXN1YWxseS1oaWRkZW5cIj57eyAnQHByeS5wcmVzZW50YXRpb24uZGVsZXRlJyB8IGkxOG4gfX08L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -26,19 +26,22 @@ export class ToolboxComponent {
26
26
  this.isManualMode$ = store
27
27
  .select(DashboardSelectors.windowManifest)
28
28
  .pipe(map((pres) => (pres.grid?.layout ?? DashboardGridLayout.MANUAL) === DashboardGridLayout.MANUAL));
29
+ this.actionsAvailable$ = store.select(DashboardSelectors.displayOptions);
29
30
  }
30
31
  ngOnInit() {
31
- this.allActions$ = combineLatest([this.actions$, this.hasInitialPresentation$]).pipe(switchMap(([actions, hasInitialPresentation]) => combineLatest(actions.map((action) => this.role
32
- ? this.role.hasRole(null, action.access.module, action.access.page, action.access.action).pipe(map((hasRole) => ({
33
- ...action,
34
- visible: action.visible &&
35
- (action.name !== 'save_view' || hasInitialPresentation) &&
36
- (!this.role || hasRole)
37
- })))
38
- : of({
39
- ...action,
40
- visible: action.visible && (action.name !== 'save_view' || hasInitialPresentation)
41
- })))));
32
+ this.allActions$ = combineLatest([this.actions$, this.actionsAvailable$]).pipe(switchMap(([actions, displayOptions]) => combineLatest(actions.map((action) => {
33
+ // @ts-ignore
34
+ const actionAvailable = action.visible && displayOptions.toolbox[action.name];
35
+ return this.role
36
+ ? this.role.hasRole(null, action.access.module, action.access.page, action.access.action).pipe(map((hasRole) => ({
37
+ ...action,
38
+ visible: actionAvailable && (!this.role || hasRole)
39
+ })))
40
+ : of({
41
+ ...action,
42
+ visible: actionAvailable
43
+ });
44
+ }))));
42
45
  this.mainActions$ = combineLatest([this._dropdownActions$, this.allActions$]).pipe(map(([dropdownActions, actions]) => actions.filter((action) => !dropdownActions.find((dropdownAction) => action.name === dropdownAction.name))));
43
46
  this.dropdownActions$ = combineLatest([this._dropdownActions$, this.allActions$]).pipe(map(([dropdownActions, actions]) => actions.filter((action) => !!dropdownActions.find((dropdownAction) => action.name === dropdownAction.name))));
44
47
  this.showDropdownButton$ = this.dropdownActions$.pipe(map((actions) => actions.filter((action) => action.visible).length > 0));
@@ -73,4 +76,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
73
76
  }], dropdownActions: [{
74
77
  type: Input
75
78
  }] } });
76
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbGJveC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC90b29sYm94L2NvbXBvbmVudHMvdG9vbGJveC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC90b29sYm94L2NvbXBvbmVudHMvdG9vbGJveC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQVUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBaUIsTUFBTSxvQkFBb0IsQ0FBQztBQUM5RyxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQWMsRUFBRSxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0RixPQUFPLEVBQUUsT0FBTyxFQUFpQixNQUFNLGtCQUFrQixDQUFDOzs7Ozs7OztBQU0xRCxNQUFNLE9BQU8sZ0JBQWdCO0lBWTNCLElBQWEsT0FBTyxDQUFDLE9BQXdCO1FBQzNDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRCxJQUFhLGVBQWUsQ0FBQyxlQUFrRDtRQUM3RSxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxZQUFZLEtBQVksRUFBZ0QsSUFBbUI7UUFBbkIsU0FBSSxHQUFKLElBQUksQ0FBZTtRQW5CM0YsYUFBUSxHQUFHLElBQUksZUFBZSxDQUFrQixPQUFPLENBQUMsQ0FBQztRQUN6RCxzQkFBaUIsR0FBRyxJQUFJLGVBQWUsQ0FBb0MsRUFBRSxDQUFDLENBQUM7UUFDdEUs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LGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUM1RyxDQUNGLENBQUM7UUFFRixJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FDbkQsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUN4RSxDQUFDO0lBQ0osQ0FBQztJQUVELFlBQVksQ0FBQyxNQUFhO1FBQ3hCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO1FBQzNCLE1BQU0sQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsYUFBYSxDQUFDLE1BQW9CO1FBQ2hDLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1FBQzVCLElBQUksTUFBTTtZQUFFLE1BQU0sQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0lBRUQsUUFBUSxDQUFDLFVBQWtCO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsVUFBVSxLQUFLLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLENBQUM7SUFDL0YsQ0FBQzsrR0FqRlUsZ0JBQWdCLHVDQW9CbUIsZ0JBQWdCO21HQXBCbkQsZ0JBQWdCLHVKQ1Y3Qiw0OEVBOERBOzs0RkRwRGEsZ0JBQWdCO2tCQUo1QixTQUFTOytCQUNFLGFBQWE7OzBCQXVCSSxRQUFROzswQkFBSSxNQUFNOzJCQUFDLGdCQUFnQjs0Q0FqQnJELGFBQWE7c0JBQXJCLEtBQUs7Z0JBU08sT0FBTztzQkFBbkIsS0FBSztnQkFJTyxlQUFlO3NCQUEzQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QsIElucHV0LCBPbkluaXQsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IERhc2hib2FyZEdyaWRMYXlvdXQsIERhc2hib2FyZFNlbGVjdG9ycywgUFJZX0FDQ0VTU19UT0tFTiwgUHJ5QmFzZUFjY2VzcyB9IGZyb20gJ0Bwcm92b2x5L2Rhc2hib2FyZCc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIG1hcCwgT2JzZXJ2YWJsZSwgb2YsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQUNUSU9OUywgVG9vbGJveEFjdGlvbiB9IGZyb20gJy4uL3Rvb2xib3gubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwcnktdG9vbGJveCcsXG4gIHRlbXBsYXRlVXJsOiAnLi90b29sYm94LmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBUb29sYm94Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgYWN0aW9ucyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRvb2xib3hBY3Rpb25bXT4oQUNUSU9OUyk7XG4gIF9kcm9wZG93bkFjdGlvbnMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDx7IG5hbWU6IHN0cmluZzsgb3JkZXI6IG51bWJlciB9W10+KFtdKTtcbiAgQElucHV0KCkgZGlzcGxheUxhYmVscyA9IHRydWU7XG4gIGhhc0luaXRpYWxQcmVzZW50YXRpb24kOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBpc01hbnVhbE1vZGUkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBhbGxBY3Rpb25zJCE6IE9ic2VydmFibGU8VG9vbGJveEFjdGlvbltdPjtcbiAgbWFpbkFjdGlvbnMkITogT2JzZXJ2YWJsZTxUb29sYm94QWN0aW9uW10+O1xuICBkcm9wZG93bkFjdGlvbnMkITogT2JzZXJ2YWJsZTxUb29sYm94QWN0aW9uW10+O1xuICBzaG93RHJvcGRvd25CdXR0b24kITogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgaXNEcm9wZG93bk9wZW4gPSBmYWxzZTtcblxuICBASW5wdXQoKSBzZXQgYWN0aW9ucyhhY3Rpb25zOiBUb29sYm94QWN0aW9uW10pIHtcbiAgICB0aGlzLmFjdGlvbnMkLm5leHQoYWN0aW9ucyk7XG4gIH1cblxuICBASW5wdXQoKSBzZXQgZHJvcGRvd25BY3Rpb25zKGRyb3Bkb3duQWN0aW9uczogeyBuYW1lOiBzdHJpbmc7IG9yZGVyOiBudW1iZXIgfVtdKSB7XG4gICAgdGhpcy5fZHJvcGRvd25BY3Rpb25zJC5uZXh0KGRyb3Bkb3duQWN0aW9ucyk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihzdG9yZTogU3RvcmUsIEBPcHRpb25hbCgpIEBJbmplY3QoUFJZX0FDQ0VTU19UT0tFTikgcHJpdmF0ZSByb2xlOiBQcnlCYXNlQWNjZXNzKSB7XG4gICAgdGhpcy5oYXNJbml0aWFsUHJlc2VudGF0aW9uJCA9IHN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMucHJlc2VudGF0aW9uKS5waXBlKG1hcCgocHJlcykgPT4gISFwcmVzLmluaXRpYWwpKTtcbiAgICB0aGlzLmlzTWFudWFsTW9kZSQgPSBzdG9yZVxuICAgICAgLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMud2luZG93TWFuaWZlc3QpXG4gICAgICAucGlwZShtYXAoKHByZXMpID0+IChwcmVzLmdyaWQ/LmxheW91dCA/PyBEYXNoYm9hcmRHcmlkTGF5b3V0Lk1BTlVBTCkgPT09IERhc2hib2FyZEdyaWRMYXlvdXQuTUFOVUFMKSk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmFsbEFjdGlvbnMkID0gY29tYmluZUxhdGVzdChbdGhpcy5hY3Rpb25zJCwgdGhpcy5oYXNJbml0aWFsUHJlc2VudGF0aW9uJF0pLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKFthY3Rpb25zLCBoYXNJbml0aWFsUHJlc2VudGF0aW9uXSkgPT5cbiAgICAgICAgY29tYmluZUxhdGVzdChcbiAgICAgICAgICBhY3Rpb25zLm1hcCgoYWN0aW9uKSA9PlxuICAgICAgICAgICAgdGhpcy5yb2xlXG4gICAgICAgICAgICAgID8gdGhpcy5yb2xlLmhhc1JvbGUobnVsbCwgYWN0aW9uLmFjY2Vzcy5tb2R1bGUsIGFjdGlvbi5hY2Nlc3MucGFnZSwgYWN0aW9uLmFjY2Vzcy5hY3Rpb24pLnBpcGUoXG4gICAgICAgICAgICAgICAgICBtYXAoXG4gICAgICAgICAgICAgICAgICAgIChoYXNSb2xlKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5hY3Rpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmxlOlxuICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb24udmlzaWJsZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoYWN0aW9uLm5hbWUgIT09ICdzYXZlX3ZpZXcnIHx8IGhhc0luaXRpYWxQcmVzZW50YXRpb24pICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICghdGhpcy5yb2xlIHx8IGhhc1JvbGUpXG4gICAgICAgICAgICAgICAgICAgICAgfSBhcyBUb29sYm94QWN0aW9uKVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgOiBvZih7XG4gICAgICAgICAgICAgICAgICAuLi5hY3Rpb24sXG4gICAgICAgICAgICAgICAgICB2aXNpYmxlOiBhY3Rpb24udmlzaWJsZSAmJiAoYWN0aW9uLm5hbWUgIT09ICdzYXZlX3ZpZXcnIHx8IGhhc0luaXRpYWxQcmVzZW50YXRpb24pXG4gICAgICAgICAgICAgICAgfSBhcyBUb29sYm94QWN0aW9uKVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgKVxuICAgICk7XG4gICAgdGhpcy5tYWluQWN0aW9ucyQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLl9kcm9wZG93bkFjdGlvbnMkLCB0aGlzLmFsbEFjdGlvbnMkXSkucGlwZShcbiAgICAgIG1hcCgoW2Ryb3Bkb3duQWN0aW9ucywgYWN0aW9uc10pID0+XG4gICAgICAgIGFjdGlvbnMuZmlsdGVyKChhY3Rpb24pID0+ICFkcm9wZG93bkFjdGlvbnMuZmluZCgoZHJvcGRvd25BY3Rpb24pID0+IGFjdGlvbi5uYW1lID09PSBkcm9wZG93bkFjdGlvbi5uYW1lKSlcbiAgICAgIClcbiAgICApO1xuICAgIHRoaXMuZHJvcGRvd25BY3Rpb25zJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuX2Ryb3Bkb3duQWN0aW9ucyQsIHRoaXMuYWxsQWN0aW9ucyRdKS5waXBlKFxuICAgICAgbWFwKChbZHJvcGRvd25BY3Rpb25zLCBhY3Rpb25zXSkgPT5cbiAgICAgICAgYWN0aW9ucy5maWx0ZXIoKGFjdGlvbikgPT4gISFkcm9wZG93bkFjdGlvbnMuZmluZCgoZHJvcGRvd25BY3Rpb24pID0+IGFjdGlvbi5uYW1lID09PSBkcm9wZG93bkFjdGlvbi5uYW1lKSlcbiAgICAgIClcbiAgICApO1xuXG4gICAgdGhpcy5zaG93RHJvcGRvd25CdXR0b24kID0gdGhpcy5kcm9wZG93bkFjdGlvbnMkLnBpcGUoXG4gICAgICBtYXAoKGFjdGlvbnMpID0+IGFjdGlvbnMuZmlsdGVyKChhY3Rpb24pID0+IGFjdGlvbi52aXNpYmxlKS5sZW5ndGggPiAwKVxuICAgICk7XG4gIH1cblxuICBvcGVuRHJvcGRvd24oJGV2ZW50OiBFdmVudCkge1xuICAgIHRoaXMuaXNEcm9wZG93bk9wZW4gPSB0cnVlO1xuICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgfVxuXG4gIGNsb3NlRHJvcGRvd24oJGV2ZW50OiBFdmVudCB8IHZvaWQpIHtcbiAgICB0aGlzLmlzRHJvcGRvd25PcGVuID0gZmFsc2U7XG4gICAgaWYgKCRldmVudCkgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG5cbiAgZ2V0T3JkZXIoYWN0aW9uTmFtZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuX2Ryb3Bkb3duQWN0aW9ucyQuZ2V0VmFsdWUoKS5maW5kKChhY3Rpb24pID0+IGFjdGlvbk5hbWUgPT09IGFjdGlvbi5uYW1lKT8ub3JkZXI7XG4gIH1cbn1cbiIsIjx1bCBjbGFzcz1cIm0tYWN0aW9ucy1saXN0XCIgI2lucHV0PlxuICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBhY3Rpb24gb2YgbWFpbkFjdGlvbnMkIHwgYXN5bmNcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWN0aW9uLnZpc2libGVcIj5cbiAgICAgIDxsaSBjbGFzcz1cIm0tYWN0aW9ucy1saXN0X19pdGVtXCIgKnByeUFjY2Vzcz1cImFjdGlvbi5hY2Nlc3NcIj5cbiAgICAgICAgPHByeS10b29sYm94LWFjdGlvbi1pbnN0YW5jaWF0b3JcbiAgICAgICAgICBbYWN0aW9uXT1cImFjdGlvblwiXG4gICAgICAgICAgW2Rpc3BsYXlMYWJlbHNdPVwiZGlzcGxheUxhYmVsc1wiXG4gICAgICAgID48L3ByeS10b29sYm94LWFjdGlvbi1pbnN0YW5jaWF0b3I+XG4gICAgICA8L2xpPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dEcm9wZG93bkJ1dHRvbiQgfCBhc3luY1wiPlxuICAgIDxsaSBjbGFzcz1cIm0tYWN0aW9ucy1saXN0X19pdGVtXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBjbGFzcz1cImEtYnRuIGEtYnRuLS1wcmltYXJ5IC1zaXplLW1kXCJcbiAgICAgICAgY2RrT3ZlcmxheU9yaWdpblxuICAgICAgICAjdHJpZ2dlcj1cImNka092ZXJsYXlPcmlnaW5cIlxuICAgICAgICBpZD1cIm9wdGlvbnNcIlxuICAgICAgICBhcmlhLWNvbnRyb2xzPVwiSURwYW5lbFwiXG4gICAgICAgIGFyaWEtZXhwYW5kZWQ9XCJmYWxzZVwiXG4gICAgICAgIChjbGljayk9XCJvcGVuRHJvcGRvd24oJGV2ZW50KVwiXG4gICAgICA+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkaXNwbGF5TGFiZWxzXCJcbiAgICAgICAgICA+PHNwYW4gY2xhc3M9XCJ1LXZpc3VhbGx5LWhpZGRlblwiPnt7ICdAcHJ5LnRvb2xib3gub3B0aW9ucycgfCBpMThuIH19PC9zcGFuPlxuICAgICAgICAgIDxzcGFuPnt7ICdAcHJ5LnRvb2xib3gub3B0aW9ucycgfCBpMThuIH19PC9zcGFuPlxuICAgICAgICAgIDxwcnktaWNvbiBbd2lkdGhdPVwiMTRcIiBbaGVpZ2h0XT1cIjE0XCIgaWNvblN2Zz1cImNoZXZyb25fYm90dG9tXCI+PC9wcnktaWNvbj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2xpPlxuICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgY2RrQ29ubmVjdGVkT3ZlcmxheVxuICAgICAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlPcmlnaW5dPVwidHJpZ2dlclwiXG4gICAgICBbY2RrQ29ubmVjdGVkT3ZlcmxheU9wZW5dPVwiaXNEcm9wZG93bk9wZW5cIlxuICAgICAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlIYXNCYWNrZHJvcF09XCJ0cnVlXCJcbiAgICAgIGNka0Nvbm5lY3RlZE92ZXJsYXlCYWNrZHJvcENsYXNzPVwiY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BcIlxuICAgICAgKGJhY2tkcm9wQ2xpY2spPVwiaXNEcm9wZG93bk9wZW4gPSBmYWxzZVwiXG4gICAgPlxuICAgICAgPGRpdiBjbGFzcz1cIm8tZHJhZ2dhYmxlLW1lbnVcIiBhcmlhLWxhYmVsbGVkYnk9XCJcIj5cbiAgICAgICAgPHVsIGNsYXNzPVwiby1kcmFnZ2FibGUtbWVudV9fbGlzdFwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiBkcm9wZG93bkFjdGlvbnMkIHwgYXN5bmNcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhY3Rpb24udmlzaWJsZVwiPlxuICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJvLWRyYWdnYWJsZS1tZW51X19saXN0X19pdGVtXCIgW3N0eWxlLm9yZGVyXT1cImdldE9yZGVyKGFjdGlvbi5uYW1lKVwiPlxuICAgICAgICAgICAgICAgIDxwcnktdG9vbGJveC1hY3Rpb24taW5zdGFuY2lhdG9yXG4gICAgICAgICAgICAgICAgICBbYWN0aW9uXT1cImFjdGlvblwiXG4gICAgICAgICAgICAgICAgICBbZGlzcGxheUxhYmVsc109XCJkaXNwbGF5TGFiZWxzXCJcbiAgICAgICAgICAgICAgICAgIChjbG9zZU9wdGlvbnMpPVwiY2xvc2VEcm9wZG93bigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICA+PC9wcnktdG9vbGJveC1hY3Rpb24taW5zdGFuY2lhdG9yPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvdWw+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPGxpIGNsYXNzPVwibS1hY3Rpb25zLWxpc3RfX2l0ZW1cIiAqbmdJZj1cImlzTWFudWFsTW9kZSQgfCBhc3luY1wiPlxuICAgIDxwcnktZWRpdC1tb2RlLXRvZ2dsZVxuICAgICAgKnByeUFjY2Vzcz1cInsgbW9kdWxlOiAnZGFzaGJvYXJkJywgcGFnZTogJ3Rvb2xib3gnLCBhY3Rpb246ICdlZGl0X2Rhc2hib2FyZCcgfVwiXG4gICAgICBbZGlzcGxheUxhYmVsc109XCJkaXNwbGF5TGFiZWxzXCJcbiAgICA+PC9wcnktZWRpdC1tb2RlLXRvZ2dsZT5cbiAgPC9saT5cbjwvdWw+XG4iXX0=
79
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbGJveC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC90b29sYm94L2NvbXBvbmVudHMvdG9vbGJveC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC90b29sYm94L2NvbXBvbmVudHMvdG9vbGJveC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQVUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNFLE9BQU8sRUFDTCxtQkFBbUIsRUFDbkIsa0JBQWtCLEVBRWxCLGdCQUFnQixFQUVqQixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBYyxFQUFFLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxPQUFPLEVBQWlCLE1BQU0sa0JBQWtCLENBQUM7Ozs7Ozs7O0FBTTFELE1BQU0sT0FBTyxnQkFBZ0I7SUFhM0IsSUFBYSxPQUFPLENBQUMsT0FBd0I7UUFDM0MsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELElBQWEsZUFBZSxDQUFDLGVBQWtEO1FBQzdFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELFlBQVksS0FBWSxFQUFnRCxJQUFtQjtRQUFuQixTQUFJLEdBQUosSUFBSSxDQUFlO1FBcEIzRixhQUFRLEdBQUcsSUFBSSxlQUFlLENBQWtCLE9BQU8sQ0FBQyxDQUFDO1FBQ3pELHNCQUFpQixHQUFHLElBQUksZUFBZSxDQUFvQyxFQUFFLENBQUMsQ0FBQztRQUN0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cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QsIElucHV0LCBPbkluaXQsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7XG4gIERhc2hib2FyZEdyaWRMYXlvdXQsXG4gIERhc2hib2FyZFNlbGVjdG9ycyxcbiAgRGlzcGxheU9wdGlvbnMsXG4gIFBSWV9BQ0NFU1NfVE9LRU4sXG4gIFByeUJhc2VBY2Nlc3Ncbn0gZnJvbSAnQHByb3ZvbHkvZGFzaGJvYXJkJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgbWFwLCBPYnNlcnZhYmxlLCBvZiwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBQ1RJT05TLCBUb29sYm94QWN0aW9uIH0gZnJvbSAnLi4vdG9vbGJveC5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ByeS10b29sYm94JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Rvb2xib3guY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFRvb2xib3hDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBhY3Rpb25zJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VG9vbGJveEFjdGlvbltdPihBQ1RJT05TKTtcbiAgX2Ryb3Bkb3duQWN0aW9ucyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHsgbmFtZTogc3RyaW5nOyBvcmRlcjogbnVtYmVyIH1bXT4oW10pO1xuICBASW5wdXQoKSBkaXNwbGF5TGFiZWxzID0gdHJ1ZTtcbiAgaGFzSW5pdGlhbFByZXNlbnRhdGlvbiQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIGlzTWFudWFsTW9kZSQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIGFsbEFjdGlvbnMkITogT2JzZXJ2YWJsZTxUb29sYm94QWN0aW9uW10+O1xuICBtYWluQWN0aW9ucyQhOiBPYnNlcnZhYmxlPFRvb2xib3hBY3Rpb25bXT47XG4gIGRyb3Bkb3duQWN0aW9ucyQhOiBPYnNlcnZhYmxlPFRvb2xib3hBY3Rpb25bXT47XG4gIHNob3dEcm9wZG93bkJ1dHRvbiQhOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBpc0Ryb3Bkb3duT3BlbiA9IGZhbHNlO1xuICBhY3Rpb25zQXZhaWxhYmxlJDogT2JzZXJ2YWJsZTxEaXNwbGF5T3B0aW9ucyB8IHVuZGVmaW5lZD47XG5cbiAgQElucHV0KCkgc2V0IGFjdGlvbnMoYWN0aW9uczogVG9vbGJveEFjdGlvbltdKSB7XG4gICAgdGhpcy5hY3Rpb25zJC5uZXh0KGFjdGlvbnMpO1xuICB9XG5cbiAgQElucHV0KCkgc2V0IGRyb3Bkb3duQWN0aW9ucyhkcm9wZG93bkFjdGlvbnM6IHsgbmFtZTogc3RyaW5nOyBvcmRlcjogbnVtYmVyIH1bXSkge1xuICAgIHRoaXMuX2Ryb3Bkb3duQWN0aW9ucyQubmV4dChkcm9wZG93bkFjdGlvbnMpO1xuICB9XG5cbiAgY29uc3RydWN0b3Ioc3RvcmU6IFN0b3JlLCBAT3B0aW9uYWwoKSBASW5qZWN0KFBSWV9BQ0NFU1NfVE9LRU4pIHByaXZhdGUgcm9sZTogUHJ5QmFzZUFjY2Vzcykge1xuICAgIHRoaXMuaGFzSW5pdGlhbFByZXNlbnRhdGlvbiQgPSBzdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnByZXNlbnRhdGlvbikucGlwZShtYXAoKHByZXMpID0+ICEhcHJlcy5pbml0aWFsKSk7XG4gICAgdGhpcy5pc01hbnVhbE1vZGUkID0gc3RvcmVcbiAgICAgIC5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLndpbmRvd01hbmlmZXN0KVxuICAgICAgLnBpcGUobWFwKChwcmVzKSA9PiAocHJlcy5ncmlkPy5sYXlvdXQgPz8gRGFzaGJvYXJkR3JpZExheW91dC5NQU5VQUwpID09PSBEYXNoYm9hcmRHcmlkTGF5b3V0Lk1BTlVBTCkpO1xuICAgIHRoaXMuYWN0aW9uc0F2YWlsYWJsZSQgPSBzdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLmRpc3BsYXlPcHRpb25zKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuYWxsQWN0aW9ucyQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLmFjdGlvbnMkLCB0aGlzLmFjdGlvbnNBdmFpbGFibGUkXSkucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoW2FjdGlvbnMsIGRpc3BsYXlPcHRpb25zXSkgPT5cbiAgICAgICAgY29tYmluZUxhdGVzdChcbiAgICAgICAgICBhY3Rpb25zLm1hcCgoYWN0aW9uKSA9PiB7XG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICBjb25zdCBhY3Rpb25BdmFpbGFibGUgPSBhY3Rpb24udmlzaWJsZSAmJiBkaXNwbGF5T3B0aW9ucy50b29sYm94W2FjdGlvbi5uYW1lXTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJvbGVcbiAgICAgICAgICAgICAgPyB0aGlzLnJvbGUuaGFzUm9sZShudWxsLCBhY3Rpb24uYWNjZXNzLm1vZHVsZSwgYWN0aW9uLmFjY2Vzcy5wYWdlLCBhY3Rpb24uYWNjZXNzLmFjdGlvbikucGlwZShcbiAgICAgICAgICAgICAgICAgIG1hcChcbiAgICAgICAgICAgICAgICAgICAgKGhhc1JvbGUpID0+XG4gICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmFjdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIHZpc2libGU6IGFjdGlvbkF2YWlsYWJsZSAmJiAoIXRoaXMucm9sZSB8fCBoYXNSb2xlKVxuICAgICAgICAgICAgICAgICAgICAgIH0gYXMgVG9vbGJveEFjdGlvbilcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIDogb2Yoe1xuICAgICAgICAgICAgICAgICAgLi4uYWN0aW9uLFxuICAgICAgICAgICAgICAgICAgdmlzaWJsZTogYWN0aW9uQXZhaWxhYmxlXG4gICAgICAgICAgICAgICAgfSBhcyBUb29sYm94QWN0aW9uKTtcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICApXG4gICAgKTtcbiAgICB0aGlzLm1haW5BY3Rpb25zJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuX2Ryb3Bkb3duQWN0aW9ucyQsIHRoaXMuYWxsQWN0aW9ucyRdKS5waXBlKFxuICAgICAgbWFwKChbZHJvcGRvd25BY3Rpb25zLCBhY3Rpb25zXSkgPT5cbiAgICAgICAgYWN0aW9ucy5maWx0ZXIoKGFjdGlvbikgPT4gIWRyb3Bkb3duQWN0aW9ucy5maW5kKChkcm9wZG93bkFjdGlvbikgPT4gYWN0aW9uLm5hbWUgPT09IGRyb3Bkb3duQWN0aW9uLm5hbWUpKVxuICAgICAgKVxuICAgICk7XG4gICAgdGhpcy5kcm9wZG93bkFjdGlvbnMkID0gY29tYmluZUxhdGVzdChbdGhpcy5fZHJvcGRvd25BY3Rpb25zJCwgdGhpcy5hbGxBY3Rpb25zJF0pLnBpcGUoXG4gICAgICBtYXAoKFtkcm9wZG93bkFjdGlvbnMsIGFjdGlvbnNdKSA9PlxuICAgICAgICBhY3Rpb25zLmZpbHRlcigoYWN0aW9uKSA9PiAhIWRyb3Bkb3duQWN0aW9ucy5maW5kKChkcm9wZG93bkFjdGlvbikgPT4gYWN0aW9uLm5hbWUgPT09IGRyb3Bkb3duQWN0aW9uLm5hbWUpKVxuICAgICAgKVxuICAgICk7XG5cbiAgICB0aGlzLnNob3dEcm9wZG93bkJ1dHRvbiQgPSB0aGlzLmRyb3Bkb3duQWN0aW9ucyQucGlwZShcbiAgICAgIG1hcCgoYWN0aW9ucykgPT4gYWN0aW9ucy5maWx0ZXIoKGFjdGlvbikgPT4gYWN0aW9uLnZpc2libGUpLmxlbmd0aCA+IDApXG4gICAgKTtcbiAgfVxuXG4gIG9wZW5Ecm9wZG93bigkZXZlbnQ6IEV2ZW50KSB7XG4gICAgdGhpcy5pc0Ryb3Bkb3duT3BlbiA9IHRydWU7XG4gICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG5cbiAgY2xvc2VEcm9wZG93bigkZXZlbnQ6IEV2ZW50IHwgdm9pZCkge1xuICAgIHRoaXMuaXNEcm9wZG93bk9wZW4gPSBmYWxzZTtcbiAgICBpZiAoJGV2ZW50KSAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gIH1cblxuICBnZXRPcmRlcihhY3Rpb25OYW1lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5fZHJvcGRvd25BY3Rpb25zJC5nZXRWYWx1ZSgpLmZpbmQoKGFjdGlvbikgPT4gYWN0aW9uTmFtZSA9PT0gYWN0aW9uLm5hbWUpPy5vcmRlcjtcbiAgfVxufVxuIiwiPHVsIGNsYXNzPVwibS1hY3Rpb25zLWxpc3RcIiAjaW5wdXQ+XG4gIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiBtYWluQWN0aW9ucyQgfCBhc3luY1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhY3Rpb24udmlzaWJsZVwiPlxuICAgICAgPGxpIGNsYXNzPVwibS1hY3Rpb25zLWxpc3RfX2l0ZW1cIiAqcHJ5QWNjZXNzPVwiYWN0aW9uLmFjY2Vzc1wiPlxuICAgICAgICA8cHJ5LXRvb2xib3gtYWN0aW9uLWluc3RhbmNpYXRvclxuICAgICAgICAgIFthY3Rpb25dPVwiYWN0aW9uXCJcbiAgICAgICAgICBbZGlzcGxheUxhYmVsc109XCJkaXNwbGF5TGFiZWxzXCJcbiAgICAgICAgPjwvcHJ5LXRvb2xib3gtYWN0aW9uLWluc3RhbmNpYXRvcj5cbiAgICAgIDwvbGk+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd0Ryb3Bkb3duQnV0dG9uJCB8IGFzeW5jXCI+XG4gICAgPGxpIGNsYXNzPVwibS1hY3Rpb25zLWxpc3RfX2l0ZW1cIj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIGNsYXNzPVwiYS1idG4gYS1idG4tLXByaW1hcnkgLXNpemUtbWRcIlxuICAgICAgICBjZGtPdmVybGF5T3JpZ2luXG4gICAgICAgICN0cmlnZ2VyPVwiY2RrT3ZlcmxheU9yaWdpblwiXG4gICAgICAgIGlkPVwib3B0aW9uc1wiXG4gICAgICAgIGFyaWEtY29udHJvbHM9XCJJRHBhbmVsXCJcbiAgICAgICAgYXJpYS1leHBhbmRlZD1cImZhbHNlXCJcbiAgICAgICAgKGNsaWNrKT1cIm9wZW5Ecm9wZG93bigkZXZlbnQpXCJcbiAgICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRpc3BsYXlMYWJlbHNcIlxuICAgICAgICAgID48c3BhbiBjbGFzcz1cInUtdmlzdWFsbHktaGlkZGVuXCI+e3sgJ0BwcnkudG9vbGJveC5vcHRpb25zJyB8IGkxOG4gfX08L3NwYW4+XG4gICAgICAgICAgPHNwYW4+e3sgJ0BwcnkudG9vbGJveC5vcHRpb25zJyB8IGkxOG4gfX08L3NwYW4+XG4gICAgICAgICAgPHByeS1pY29uIFt3aWR0aF09XCIxNFwiIFtoZWlnaHRdPVwiMTRcIiBpY29uU3ZnPVwiY2hldnJvbl9ib3R0b21cIj48L3ByeS1pY29uPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvbGk+XG4gICAgPG5nLXRlbXBsYXRlXG4gICAgICBjZGtDb25uZWN0ZWRPdmVybGF5XG4gICAgICBbY2RrQ29ubmVjdGVkT3ZlcmxheU9yaWdpbl09XCJ0cmlnZ2VyXCJcbiAgICAgIFtjZGtDb25uZWN0ZWRPdmVybGF5T3Blbl09XCJpc0Ryb3Bkb3duT3BlblwiXG4gICAgICBbY2RrQ29ubmVjdGVkT3ZlcmxheUhhc0JhY2tkcm9wXT1cInRydWVcIlxuICAgICAgY2RrQ29ubmVjdGVkT3ZlcmxheUJhY2tkcm9wQ2xhc3M9XCJjZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFwiXG4gICAgICAoYmFja2Ryb3BDbGljayk9XCJpc0Ryb3Bkb3duT3BlbiA9IGZhbHNlXCJcbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzPVwiby1kcmFnZ2FibGUtbWVudVwiIGFyaWEtbGFiZWxsZWRieT1cIlwiPlxuICAgICAgICA8dWwgY2xhc3M9XCJvLWRyYWdnYWJsZS1tZW51X19saXN0XCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIGRyb3Bkb3duQWN0aW9ucyQgfCBhc3luY1wiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFjdGlvbi52aXNpYmxlXCI+XG4gICAgICAgICAgICAgIDxsaSBjbGFzcz1cIm8tZHJhZ2dhYmxlLW1lbnVfX2xpc3RfX2l0ZW1cIiBbc3R5bGUub3JkZXJdPVwiZ2V0T3JkZXIoYWN0aW9uLm5hbWUpXCI+XG4gICAgICAgICAgICAgICAgPHByeS10b29sYm94LWFjdGlvbi1pbnN0YW5jaWF0b3JcbiAgICAgICAgICAgICAgICAgIFthY3Rpb25dPVwiYWN0aW9uXCJcbiAgICAgICAgICAgICAgICAgIFtkaXNwbGF5TGFiZWxzXT1cImRpc3BsYXlMYWJlbHNcIlxuICAgICAgICAgICAgICAgICAgKGNsb3NlT3B0aW9ucyk9XCJjbG9zZURyb3Bkb3duKCRldmVudClcIlxuICAgICAgICAgICAgICAgID48L3ByeS10b29sYm94LWFjdGlvbi1pbnN0YW5jaWF0b3I+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC91bD5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bGkgY2xhc3M9XCJtLWFjdGlvbnMtbGlzdF9faXRlbVwiICpuZ0lmPVwiaXNNYW51YWxNb2RlJCB8IGFzeW5jXCI+XG4gICAgPHByeS1lZGl0LW1vZGUtdG9nZ2xlXG4gICAgICAqcHJ5QWNjZXNzPVwieyBtb2R1bGU6ICdkYXNoYm9hcmQnLCBwYWdlOiAndG9vbGJveCcsIGFjdGlvbjogJ2VkaXRfZGFzaGJvYXJkJyB9XCJcbiAgICAgIFtkaXNwbGF5TGFiZWxzXT1cImRpc3BsYXlMYWJlbHNcIlxuICAgID48L3ByeS1lZGl0LW1vZGUtdG9nZ2xlPlxuICA8L2xpPlxuPC91bD5cbiJdfQ==
@@ -124,9 +124,6 @@ class PryDatasetDetailComponent {
124
124
  handleButtonAction(version) {
125
125
  this.selectedDatasetVersion = version;
126
126
  switch (version.state) {
127
- case 'ERROR':
128
- this.consultErrors(version);
129
- break;
130
127
  case 'ACTIVE':
131
128
  this.deactivateVersion(version);
132
129
  break;
@@ -154,11 +151,11 @@ class PryDatasetDetailComponent {
154
151
  }));
155
152
  }
156
153
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PryDatasetDetailComponent, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Component }); }
157
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PryDatasetDetailComponent, selector: "pry-dataset-detail", inputs: { dataset: "dataset" }, outputs: { goToCatalog: "goToCatalog" }, ngImport: i0, template: "<div class=\"o-manifest-layout__toolbox\">\n <button class=\"a-btn a-btn--primary\" (click)=\"goBack()\">{{ '@pry.dataset.returnToList' | i18n }}</button>\n <button class=\"a-btn a-btn--secondary\" (click)=\"refresh()\">\n {{ '@pry.dataset.refresh' | i18n }}\n <pry-icon iconSvg=\"synchro\"></pry-icon>\n </button>\n</div>\n\n<div class=\"o-dataset-layout__content\">\n <div class=\"a-p\">\n <h1 class=\"a-h1\">{{ dataset.name }}</h1>\n <span class=\"description\">{{dataset.description}}</span>\n </div>\n\n <div class=\"dataset-detail\">\n <pry-tab-group translationStringBase=\"@pry.dataset.\">\n <pry-tab [templateRef]=\"table\" name=\"data\"></pry-tab>\n <pry-tab [templateRef]=\"map\" name=\"map\"></pry-tab>\n <pry-tab [templateRef]=\"datasetVersions\" name=\"versionHistory\"></pry-tab>\n </pry-tab-group>\n </div>\n</div>\n\n<ng-template #table>\n <div class=\"dashboard-container\">\n <pry-dashboard [staticDashboard]=\"{ widgets: [widgetManifest['table']] }\"></pry-dashboard>\n </div>\n</ng-template>\n<ng-template #map>\n <div class=\"dashboard-container\">\n <pry-dashboard [staticDashboard]=\"{ widgets: [widgetManifest['map']] }\"></pry-dashboard>\n </div>\n</ng-template>\n<ng-template #datasetVersions>\n <div class=\"table-container\">\n <table class=\"a-table\">\n <caption>\n {{\n '@pry.admin.dataset.title' | i18n\n }},\n {{\n '@pry.action.sortableColumnHeader' | i18n\n }}\n </caption>\n <thead>\n <tr>\n <th>{{ '@pry.dataset.version.title' | i18n }}</th>\n <th>{{ '@pry.dataset.date' | i18n }}</th>\n <th>{{ '@pry.dataset.status' | i18n }}</th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let version of datasetVersions$ | async\">\n <td>\n {{ version.version }}\n <pry-icon *ngIf=\"(activeVersion$ | async) === version.id\" iconSvg=\"check\" class=\"check\"></pry-icon>\n </td>\n <td>\n <div\n class=\"a-tooltip\"\n [attr.data-tooltip]=\"version.lastModified | sinceDate : { onlyLocale: true }\"\n data-tooltip-position=\"right\"\n >\n {{ version.lastModified | sinceDate : { onlyLocale: true } }}\n </div>\n </td>\n <td>\n {{\n ((activeVersion$ | async) === version.id\n ? '@pry.dataset.version.currentlyActive'\n : '@pry.dataset.version.' + version.state\n ) | i18n\n }}\n <ng-container>\n <div class=\"info-icon description-container description\">\n <span class=\"info-text\">i</span>\n </div>\n <div class=\"description-tooltip\">\n <p class=\"a-p\">\n <ng-container [ngSwitch]=\"version.state\">\n <ng-container *ngSwitchCase=\"'ERROR'\">\n {{ '@pry.dataset.tooltip.error' | i18n }}\n </ng-container>\n <ng-container *ngSwitchCase=\"'ACTIVE'\">\n {{\n ((activeVersion$ | async) === version.id\n ? '@pry.dataset.tooltip.active'\n : '@pry.dataset.tooltip.inactive'\n ) | i18n\n }}\n </ng-container>\n <ng-container *ngSwitchCase=\"'LOADING'\">\n {{ '@pry.dataset.tooltip.loading' | i18n }}\n </ng-container>\n <ng-container *ngSwitchCase=\"'INDEXING'\">\n {{ '@pry.dataset.tooltip.loading' | i18n }}\n </ng-container>\n <ng-container *ngSwitchCase=\"'INACTIVE'\">\n {{ '@pry.dataset.tooltip.invalid' | i18n }}\n </ng-container>\n </ng-container>\n </p>\n </div>\n </ng-container>\n </td>\n <td>\n <ng-container *ngIf=\"version.state !== 'LOADING' && version.state !== 'INDEXING'\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--primary a-btn--icon-text ng-star-inserted\"\n (click)=\"handleButtonAction(version)\"\n >\n {{ '@pry.dataset.buttonAction.' + version.state | i18n }}\n </button>\n <ng-container *ngIf=\"version.state === 'ACTIVE' || version.state === 'INACTIVE'\">\n <div class=\"info-icon description-container description\">\n <span class=\"info-text\">i</span>\n </div>\n <div class=\"description-tooltip validate-tooltip\">\n <p class=\"a-p\">\n {{\n (version.state === 'ACTIVE'\n ? '@pry.dataset.tooltip.inValidateButton'\n : '@pry.dataset.tooltip.validateButton'\n ) | i18n\n }}\n </p>\n </div>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"version.hasWarnings && version.state !== 'ERROR'\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--secondary a-btn--icon-text ng-star-inserted\"\n (click)=\"consultErrors(version)\"\n >\n {{ '@pry.dataset.buttonAction.WARNING' | i18n }}\n </button>\n </ng-container>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n</ng-template>\n\n<ng-container *ngIf=\"showModalStatus\">\n <pry-modal-status [version]=\"selectedDatasetVersion\" (gotoConsult)=\"goToConsult($event)\"></pry-modal-status>\n</ng-container>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: i3.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "component", type: i3.TabGroupComponent, selector: "pry-tab-group", inputs: ["translationStringBase"] }, { kind: "component", type: i3.TabComponent, selector: "pry-tab", inputs: ["name", "templateRef", "index"] }, { kind: "component", type: i3.DashboardComponent, selector: "pry-dashboard", inputs: ["staticDashboard", "CloseOnDragOut", "displayOptions"], outputs: ["rowHeight", "rows"] }, { kind: "component", type: i3.PryModalStatusComponent, selector: "pry-modal-status", inputs: ["version"], outputs: ["gotoConsult"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.I18nPipe, name: "i18n" }, { kind: "pipe", type: i5.PrySinceDatePipe, name: "sinceDate" }] }); }
154
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PryDatasetDetailComponent, selector: "pry-dataset-detail", inputs: { dataset: "dataset" }, outputs: { goToCatalog: "goToCatalog" }, ngImport: i0, template: "<div class=\"o-manifest-layout__toolbox\">\n <button class=\"a-btn a-btn--primary\" (click)=\"goBack()\">{{ '@pry.dataset.returnToList' | i18n }}</button>\n <button class=\"a-btn a-btn--secondary\" (click)=\"refresh()\">\n {{ '@pry.dataset.refresh' | i18n }}\n <pry-icon iconSvg=\"synchro\"></pry-icon>\n </button>\n</div>\n\n<div class=\"o-dataset-layout__content\">\n <div class=\"a-p\">\n <h1 class=\"a-h1\">{{ dataset.name }}</h1>\n <span class=\"description\">{{ dataset.description }}</span>\n </div>\n\n <div class=\"dataset-detail\">\n <pry-tab-group translationStringBase=\"@pry.dataset.\">\n <pry-tab [templateRef]=\"table\" name=\"data\"></pry-tab>\n <pry-tab [templateRef]=\"map\" name=\"map\"></pry-tab>\n <pry-tab [templateRef]=\"datasetVersions\" name=\"versionHistory\"></pry-tab>\n </pry-tab-group>\n </div>\n</div>\n\n<ng-template #table>\n <div class=\"dashboard-container\">\n <pry-dashboard [staticDashboard]=\"{ widgets: [widgetManifest['table']] }\"></pry-dashboard>\n </div>\n</ng-template>\n<ng-template #map>\n <div class=\"dashboard-container\">\n <pry-dashboard [staticDashboard]=\"{ widgets: [widgetManifest['map']] }\"></pry-dashboard>\n </div>\n</ng-template>\n<ng-template #datasetVersions>\n <div class=\"table-container\">\n <table class=\"a-table\">\n <caption>\n {{\n '@pry.admin.dataset.title' | i18n\n }},\n {{\n '@pry.action.sortableColumnHeader' | i18n\n }}\n </caption>\n <thead>\n <tr>\n <th>{{ '@pry.dataset.version.title' | i18n }}</th>\n <th>{{ '@pry.dataset.date' | i18n }}</th>\n <th>{{ '@pry.dataset.status' | i18n }}</th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let version of datasetVersions$ | async\">\n <td>\n {{ version.version }}\n <pry-icon *ngIf=\"(activeVersion$ | async) === version.id\" iconSvg=\"check\" class=\"check\"></pry-icon>\n </td>\n <td>\n <div\n class=\"a-tooltip\"\n [attr.data-tooltip]=\"version.lastModified | sinceDate : { onlyLocale: true }\"\n data-tooltip-position=\"right\"\n >\n {{ version.lastModified | sinceDate : { onlyLocale: true } }}\n </div>\n </td>\n <td>\n {{\n ((activeVersion$ | async) === version.id\n ? '@pry.dataset.version.currentlyActive'\n : '@pry.dataset.version.' + version.state\n ) | i18n\n }}\n <ng-container>\n <div class=\"info-icon description-container description\">\n <span class=\"info-text\">i</span>\n </div>\n <div class=\"description-tooltip\">\n <p class=\"a-p\">\n <ng-container [ngSwitch]=\"version.state\">\n <ng-container *ngSwitchCase=\"'ERROR'\">\n {{ '@pry.dataset.tooltip.error' | i18n }}\n </ng-container>\n <ng-container *ngSwitchCase=\"'ACTIVE'\">\n {{\n ((activeVersion$ | async) === version.id\n ? '@pry.dataset.tooltip.active'\n : '@pry.dataset.tooltip.inactive'\n ) | i18n\n }}\n </ng-container>\n <ng-container *ngSwitchCase=\"'LOADING'\">\n {{ '@pry.dataset.tooltip.loading' | i18n }}\n </ng-container>\n <ng-container *ngSwitchCase=\"'INDEXING'\">\n {{ '@pry.dataset.tooltip.loading' | i18n }}\n </ng-container>\n <ng-container *ngSwitchCase=\"'INACTIVE'\">\n {{ '@pry.dataset.tooltip.invalid' | i18n }}\n </ng-container>\n </ng-container>\n </p>\n </div>\n </ng-container>\n </td>\n <td>\n <ng-container\n *ngIf=\"version.state !== 'LOADING' && version.state !== 'INDEXING' && version.state !== 'ERROR'\"\n >\n <ng-container *pryAccess=\"{ module: 'dashboard', page: 'list-dataset', action: 'activate' }\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--primary a-btn--icon-text ng-star-inserted\"\n (click)=\"handleButtonAction(version)\"\n >\n {{ '@pry.dataset.buttonAction.' + version.state | i18n }}\n </button>\n <ng-container *ngIf=\"version.state === 'ACTIVE' || version.state === 'INACTIVE'\">\n <div class=\"info-icon description-container description\">\n <span class=\"info-text\">i</span>\n </div>\n <div class=\"description-tooltip validate-tooltip\">\n <p class=\"a-p\">\n {{\n (version.state === 'ACTIVE'\n ? '@pry.dataset.tooltip.inValidateButton'\n : '@pry.dataset.tooltip.validateButton'\n ) | i18n\n }}\n </p>\n </div>\n </ng-container>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"version.hasWarnings || version.state === 'ERROR'\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--secondary a-btn--icon-text ng-star-inserted\"\n (click)=\"consultErrors(version)\"\n >\n {{\n (version.state === 'ERROR' ? '@pry.dataset.buttonAction.ERROR' : '@pry.dataset.buttonAction.WARNING')\n | i18n\n }}\n </button>\n </ng-container>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n</ng-template>\n\n<ng-container *ngIf=\"showModalStatus\">\n <pry-modal-status [version]=\"selectedDatasetVersion\" (gotoConsult)=\"goToConsult($event)\"></pry-modal-status>\n</ng-container>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: i3.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "directive", type: i3.PryAccessDirective, selector: "[pryAccess]", inputs: ["pryAccess"] }, { kind: "component", type: i3.TabGroupComponent, selector: "pry-tab-group", inputs: ["translationStringBase"] }, { kind: "component", type: i3.TabComponent, selector: "pry-tab", inputs: ["name", "templateRef", "index"] }, { kind: "component", type: i3.DashboardComponent, selector: "pry-dashboard", inputs: ["staticDashboard", "CloseOnDragOut", "displayOptions"], outputs: ["rowHeight", "rows"] }, { kind: "component", type: i3.PryModalStatusComponent, selector: "pry-modal-status", inputs: ["version"], outputs: ["gotoConsult"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.I18nPipe, name: "i18n" }, { kind: "pipe", type: i5.PrySinceDatePipe, name: "sinceDate" }] }); }
158
155
  }
159
156
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PryDatasetDetailComponent, decorators: [{
160
157
  type: Component,
161
- args: [{ selector: 'pry-dataset-detail', template: "<div class=\"o-manifest-layout__toolbox\">\n <button class=\"a-btn a-btn--primary\" (click)=\"goBack()\">{{ '@pry.dataset.returnToList' | i18n }}</button>\n <button class=\"a-btn a-btn--secondary\" (click)=\"refresh()\">\n {{ '@pry.dataset.refresh' | i18n }}\n <pry-icon iconSvg=\"synchro\"></pry-icon>\n </button>\n</div>\n\n<div class=\"o-dataset-layout__content\">\n <div class=\"a-p\">\n <h1 class=\"a-h1\">{{ dataset.name }}</h1>\n <span class=\"description\">{{dataset.description}}</span>\n </div>\n\n <div class=\"dataset-detail\">\n <pry-tab-group translationStringBase=\"@pry.dataset.\">\n <pry-tab [templateRef]=\"table\" name=\"data\"></pry-tab>\n <pry-tab [templateRef]=\"map\" name=\"map\"></pry-tab>\n <pry-tab [templateRef]=\"datasetVersions\" name=\"versionHistory\"></pry-tab>\n </pry-tab-group>\n </div>\n</div>\n\n<ng-template #table>\n <div class=\"dashboard-container\">\n <pry-dashboard [staticDashboard]=\"{ widgets: [widgetManifest['table']] }\"></pry-dashboard>\n </div>\n</ng-template>\n<ng-template #map>\n <div class=\"dashboard-container\">\n <pry-dashboard [staticDashboard]=\"{ widgets: [widgetManifest['map']] }\"></pry-dashboard>\n </div>\n</ng-template>\n<ng-template #datasetVersions>\n <div class=\"table-container\">\n <table class=\"a-table\">\n <caption>\n {{\n '@pry.admin.dataset.title' | i18n\n }},\n {{\n '@pry.action.sortableColumnHeader' | i18n\n }}\n </caption>\n <thead>\n <tr>\n <th>{{ '@pry.dataset.version.title' | i18n }}</th>\n <th>{{ '@pry.dataset.date' | i18n }}</th>\n <th>{{ '@pry.dataset.status' | i18n }}</th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let version of datasetVersions$ | async\">\n <td>\n {{ version.version }}\n <pry-icon *ngIf=\"(activeVersion$ | async) === version.id\" iconSvg=\"check\" class=\"check\"></pry-icon>\n </td>\n <td>\n <div\n class=\"a-tooltip\"\n [attr.data-tooltip]=\"version.lastModified | sinceDate : { onlyLocale: true }\"\n data-tooltip-position=\"right\"\n >\n {{ version.lastModified | sinceDate : { onlyLocale: true } }}\n </div>\n </td>\n <td>\n {{\n ((activeVersion$ | async) === version.id\n ? '@pry.dataset.version.currentlyActive'\n : '@pry.dataset.version.' + version.state\n ) | i18n\n }}\n <ng-container>\n <div class=\"info-icon description-container description\">\n <span class=\"info-text\">i</span>\n </div>\n <div class=\"description-tooltip\">\n <p class=\"a-p\">\n <ng-container [ngSwitch]=\"version.state\">\n <ng-container *ngSwitchCase=\"'ERROR'\">\n {{ '@pry.dataset.tooltip.error' | i18n }}\n </ng-container>\n <ng-container *ngSwitchCase=\"'ACTIVE'\">\n {{\n ((activeVersion$ | async) === version.id\n ? '@pry.dataset.tooltip.active'\n : '@pry.dataset.tooltip.inactive'\n ) | i18n\n }}\n </ng-container>\n <ng-container *ngSwitchCase=\"'LOADING'\">\n {{ '@pry.dataset.tooltip.loading' | i18n }}\n </ng-container>\n <ng-container *ngSwitchCase=\"'INDEXING'\">\n {{ '@pry.dataset.tooltip.loading' | i18n }}\n </ng-container>\n <ng-container *ngSwitchCase=\"'INACTIVE'\">\n {{ '@pry.dataset.tooltip.invalid' | i18n }}\n </ng-container>\n </ng-container>\n </p>\n </div>\n </ng-container>\n </td>\n <td>\n <ng-container *ngIf=\"version.state !== 'LOADING' && version.state !== 'INDEXING'\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--primary a-btn--icon-text ng-star-inserted\"\n (click)=\"handleButtonAction(version)\"\n >\n {{ '@pry.dataset.buttonAction.' + version.state | i18n }}\n </button>\n <ng-container *ngIf=\"version.state === 'ACTIVE' || version.state === 'INACTIVE'\">\n <div class=\"info-icon description-container description\">\n <span class=\"info-text\">i</span>\n </div>\n <div class=\"description-tooltip validate-tooltip\">\n <p class=\"a-p\">\n {{\n (version.state === 'ACTIVE'\n ? '@pry.dataset.tooltip.inValidateButton'\n : '@pry.dataset.tooltip.validateButton'\n ) | i18n\n }}\n </p>\n </div>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"version.hasWarnings && version.state !== 'ERROR'\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--secondary a-btn--icon-text ng-star-inserted\"\n (click)=\"consultErrors(version)\"\n >\n {{ '@pry.dataset.buttonAction.WARNING' | i18n }}\n </button>\n </ng-container>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n</ng-template>\n\n<ng-container *ngIf=\"showModalStatus\">\n <pry-modal-status [version]=\"selectedDatasetVersion\" (gotoConsult)=\"goToConsult($event)\"></pry-modal-status>\n</ng-container>\n" }]
158
+ args: [{ selector: 'pry-dataset-detail', template: "<div class=\"o-manifest-layout__toolbox\">\n <button class=\"a-btn a-btn--primary\" (click)=\"goBack()\">{{ '@pry.dataset.returnToList' | i18n }}</button>\n <button class=\"a-btn a-btn--secondary\" (click)=\"refresh()\">\n {{ '@pry.dataset.refresh' | i18n }}\n <pry-icon iconSvg=\"synchro\"></pry-icon>\n </button>\n</div>\n\n<div class=\"o-dataset-layout__content\">\n <div class=\"a-p\">\n <h1 class=\"a-h1\">{{ dataset.name }}</h1>\n <span class=\"description\">{{ dataset.description }}</span>\n </div>\n\n <div class=\"dataset-detail\">\n <pry-tab-group translationStringBase=\"@pry.dataset.\">\n <pry-tab [templateRef]=\"table\" name=\"data\"></pry-tab>\n <pry-tab [templateRef]=\"map\" name=\"map\"></pry-tab>\n <pry-tab [templateRef]=\"datasetVersions\" name=\"versionHistory\"></pry-tab>\n </pry-tab-group>\n </div>\n</div>\n\n<ng-template #table>\n <div class=\"dashboard-container\">\n <pry-dashboard [staticDashboard]=\"{ widgets: [widgetManifest['table']] }\"></pry-dashboard>\n </div>\n</ng-template>\n<ng-template #map>\n <div class=\"dashboard-container\">\n <pry-dashboard [staticDashboard]=\"{ widgets: [widgetManifest['map']] }\"></pry-dashboard>\n </div>\n</ng-template>\n<ng-template #datasetVersions>\n <div class=\"table-container\">\n <table class=\"a-table\">\n <caption>\n {{\n '@pry.admin.dataset.title' | i18n\n }},\n {{\n '@pry.action.sortableColumnHeader' | i18n\n }}\n </caption>\n <thead>\n <tr>\n <th>{{ '@pry.dataset.version.title' | i18n }}</th>\n <th>{{ '@pry.dataset.date' | i18n }}</th>\n <th>{{ '@pry.dataset.status' | i18n }}</th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let version of datasetVersions$ | async\">\n <td>\n {{ version.version }}\n <pry-icon *ngIf=\"(activeVersion$ | async) === version.id\" iconSvg=\"check\" class=\"check\"></pry-icon>\n </td>\n <td>\n <div\n class=\"a-tooltip\"\n [attr.data-tooltip]=\"version.lastModified | sinceDate : { onlyLocale: true }\"\n data-tooltip-position=\"right\"\n >\n {{ version.lastModified | sinceDate : { onlyLocale: true } }}\n </div>\n </td>\n <td>\n {{\n ((activeVersion$ | async) === version.id\n ? '@pry.dataset.version.currentlyActive'\n : '@pry.dataset.version.' + version.state\n ) | i18n\n }}\n <ng-container>\n <div class=\"info-icon description-container description\">\n <span class=\"info-text\">i</span>\n </div>\n <div class=\"description-tooltip\">\n <p class=\"a-p\">\n <ng-container [ngSwitch]=\"version.state\">\n <ng-container *ngSwitchCase=\"'ERROR'\">\n {{ '@pry.dataset.tooltip.error' | i18n }}\n </ng-container>\n <ng-container *ngSwitchCase=\"'ACTIVE'\">\n {{\n ((activeVersion$ | async) === version.id\n ? '@pry.dataset.tooltip.active'\n : '@pry.dataset.tooltip.inactive'\n ) | i18n\n }}\n </ng-container>\n <ng-container *ngSwitchCase=\"'LOADING'\">\n {{ '@pry.dataset.tooltip.loading' | i18n }}\n </ng-container>\n <ng-container *ngSwitchCase=\"'INDEXING'\">\n {{ '@pry.dataset.tooltip.loading' | i18n }}\n </ng-container>\n <ng-container *ngSwitchCase=\"'INACTIVE'\">\n {{ '@pry.dataset.tooltip.invalid' | i18n }}\n </ng-container>\n </ng-container>\n </p>\n </div>\n </ng-container>\n </td>\n <td>\n <ng-container\n *ngIf=\"version.state !== 'LOADING' && version.state !== 'INDEXING' && version.state !== 'ERROR'\"\n >\n <ng-container *pryAccess=\"{ module: 'dashboard', page: 'list-dataset', action: 'activate' }\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--primary a-btn--icon-text ng-star-inserted\"\n (click)=\"handleButtonAction(version)\"\n >\n {{ '@pry.dataset.buttonAction.' + version.state | i18n }}\n </button>\n <ng-container *ngIf=\"version.state === 'ACTIVE' || version.state === 'INACTIVE'\">\n <div class=\"info-icon description-container description\">\n <span class=\"info-text\">i</span>\n </div>\n <div class=\"description-tooltip validate-tooltip\">\n <p class=\"a-p\">\n {{\n (version.state === 'ACTIVE'\n ? '@pry.dataset.tooltip.inValidateButton'\n : '@pry.dataset.tooltip.validateButton'\n ) | i18n\n }}\n </p>\n </div>\n </ng-container>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"version.hasWarnings || version.state === 'ERROR'\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--secondary a-btn--icon-text ng-star-inserted\"\n (click)=\"consultErrors(version)\"\n >\n {{\n (version.state === 'ERROR' ? '@pry.dataset.buttonAction.ERROR' : '@pry.dataset.buttonAction.WARNING')\n | i18n\n }}\n </button>\n </ng-container>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n</ng-template>\n\n<ng-container *ngIf=\"showModalStatus\">\n <pry-modal-status [version]=\"selectedDatasetVersion\" (gotoConsult)=\"goToConsult($event)\"></pry-modal-status>\n</ng-container>\n" }]
162
159
  }], ctorParameters: function () { return [{ type: i1.Store }]; }, propDecorators: { dataset: [{
163
160
  type: Input
164
161
  }], goToCatalog: [{