@provoly/dashboard 0.13.0 → 0.13.2
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.
- package/admin/admin.module.d.ts +12 -11
- package/admin/components/admin-classes/admin-classes-view/admin-attributes-select/admin-attributes-select.component.d.ts +3 -1
- package/admin/components/association/association.component.d.ts +9 -0
- package/admin/i18n/en.translations.d.ts +10 -0
- package/admin/i18n/fr.translations.d.ts +10 -0
- package/components/sinceDate/sinceDate.pipe.d.ts +1 -1
- package/dataset/components/dataset-detail/dataset-detail.component.d.ts +8 -1
- package/dataset/i18n/en.translations.d.ts +21 -1
- package/dataset/i18n/fr.translations.d.ts +21 -3
- package/dataset/style/_o-pry-dataset-detail.scss +21 -19
- package/dataset/style/_o-pry-dataset.scss +8 -1
- package/esm2022/admin/admin.module.mjs +6 -3
- package/esm2022/admin/components/admin-classes/admin-classes-select/admin-classes-select.component.mjs +4 -3
- package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-select/admin-attributes-select.component.mjs +9 -3
- package/esm2022/admin/components/admin-classes/admin-classes-view/admin-classes-view.component.mjs +2 -1
- package/esm2022/admin/components/admin-dataset/admin-select-dataset/admin-select-dataset.component.mjs +5 -4
- package/esm2022/admin/components/admin-fields/admin-fields-select/admin-fields-select.component.mjs +4 -3
- package/esm2022/admin/components/association/association.component.mjs +18 -0
- package/esm2022/admin/i18n/en.translations.mjs +11 -1
- package/esm2022/admin/i18n/fr.translations.mjs +11 -1
- package/esm2022/admin/store/admin.service.mjs +5 -5
- package/esm2022/components/sinceDate/sinceDate.pipe.mjs +7 -9
- package/esm2022/dataset/components/dataset-detail/dataset-detail.component.mjs +32 -9
- package/esm2022/dataset/components/dataset.component.mjs +9 -5
- package/esm2022/dataset/i18n/en.translations.mjs +23 -3
- package/esm2022/dataset/i18n/fr.translations.mjs +24 -6
- package/esm2022/dataset/style/css.component.mjs +2 -2
- package/esm2022/filters/date/date-filter.component.mjs +3 -3
- package/esm2022/filters/number/number-filter.component.mjs +3 -3
- package/esm2022/filters/text/text-filter.component.mjs +3 -3
- package/esm2022/import/components/import.component.mjs +5 -16
- package/esm2022/import/store/import.actions.mjs +1 -1
- package/esm2022/import/store/import.effects.mjs +3 -3
- package/esm2022/import/store/import.reducer.mjs +5 -13
- package/esm2022/import/store/import.selectors.mjs +5 -7
- package/esm2022/import/store/import.service.mjs +1 -1
- package/esm2022/lib/core/components/accordion/accordion-item/accordion-item.component.mjs +42 -0
- package/esm2022/lib/core/components/accordion/accordion.component.mjs +13 -0
- package/esm2022/lib/core/components/modal-status/modal-status.component.mjs +16 -6
- package/esm2022/lib/core/components/select/select.component.mjs +3 -3
- package/esm2022/lib/core/core.module.mjs +26 -8
- package/esm2022/lib/core/i18n/en.translations.mjs +3 -2
- package/esm2022/lib/core/i18n/fr.translations.mjs +3 -2
- package/esm2022/lib/core/model/dataset.interface.mjs +1 -1
- package/esm2022/lib/core/model/widget-map-manifest.interface.mjs +1 -2
- package/esm2022/lib/core/public-api.mjs +3 -1
- package/esm2022/lib/core/store/data-source/data-source.model.mjs +1 -1
- package/esm2022/lib/core/store/field/field.interface.mjs +3 -1
- package/esm2022/lib/core/symbol/symbol.service.mjs +53 -15
- package/esm2022/lib/core/toolbox/toolbox-manifest.service.mjs +4 -4
- package/esm2022/lib/dashboard/components/widgets/base-widget.component.mjs +1 -1
- package/esm2022/lib/dashboard/components/widgets/header/widget-header.component.mjs +3 -2
- package/esm2022/lib/dashboard/components/widgets/widget-instanciator/widget-instanciator.component.mjs +6 -4
- package/esm2022/pipeline/components/pipeline-editor/pipeline-editor.component.mjs +6 -11
- package/esm2022/pipeline/style/css.component.mjs +2 -2
- package/esm2022/presentation/components/presentation.component.mjs +3 -3
- package/esm2022/restitution/components/restitution-list/restitution-list.component.mjs +3 -7
- package/esm2022/restitution/style/css.component.mjs +2 -2
- package/esm2022/widgets/widget-map/component/widget-map.component.mjs +55 -195
- package/esm2022/widgets/widget-map/i18n/en.translations.mjs +2 -2
- package/esm2022/widgets/widget-map/i18n/fr.translations.mjs +2 -2
- package/esm2022/widgets/widget-map/interaction/interaction-manager.class.mjs +146 -0
- package/esm2022/widgets/widget-map/public-api.mjs +3 -1
- package/fesm2022/provoly-dashboard-admin.mjs +56 -15
- package/fesm2022/provoly-dashboard-admin.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-components-sinceDate.mjs +6 -8
- package/fesm2022/provoly-dashboard-components-sinceDate.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-dataset.mjs +86 -21
- package/fesm2022/provoly-dashboard-dataset.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-filters-date.mjs +2 -2
- package/fesm2022/provoly-dashboard-filters-date.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-filters-number.mjs +2 -2
- package/fesm2022/provoly-dashboard-filters-number.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-filters-text.mjs +2 -2
- package/fesm2022/provoly-dashboard-filters-text.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-import.mjs +14 -35
- package/fesm2022/provoly-dashboard-import.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-pipeline.mjs +15 -19
- package/fesm2022/provoly-dashboard-pipeline.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-presentation.mjs +2 -2
- package/fesm2022/provoly-dashboard-presentation.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-restitution.mjs +4 -8
- package/fesm2022/provoly-dashboard-restitution.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-map.mjs +260 -260
- package/fesm2022/provoly-dashboard-widgets-widget-map.mjs.map +1 -1
- package/fesm2022/provoly-dashboard.mjs +200 -48
- package/fesm2022/provoly-dashboard.mjs.map +1 -1
- package/import/components/import.component.d.ts +3 -9
- package/import/store/import.actions.d.ts +3 -16
- package/import/store/import.effects.d.ts +1 -1
- package/import/store/import.reducer.d.ts +2 -5
- package/import/store/import.selectors.d.ts +2 -7
- package/import/store/import.service.d.ts +2 -2
- package/lib/core/components/accordion/accordion-item/accordion-item.component.d.ts +17 -0
- package/lib/core/components/accordion/accordion.component.d.ts +6 -0
- package/lib/core/components/modal-status/modal-status.component.d.ts +10 -1
- package/lib/core/core.module.d.ts +15 -11
- package/lib/core/i18n/en.translations.d.ts +1 -0
- package/lib/core/i18n/fr.translations.d.ts +1 -0
- package/lib/core/model/dataset.interface.d.ts +2 -1
- package/lib/core/model/widget-map-manifest.interface.d.ts +0 -1
- package/lib/core/public-api.d.ts +2 -0
- package/lib/core/store/data-source/data-source.model.d.ts +1 -0
- package/lib/core/store/field/field.interface.d.ts +3 -1
- package/lib/core/symbol/symbol.service.d.ts +18 -2
- package/lib/dashboard/components/widgets/base-widget.component.d.ts +1 -1
- package/package.json +11 -7
- package/pipeline/components/pipeline-editor/pipeline-editor.component.d.ts +1 -3
- package/pipeline/style/_o-pipeline.scss +0 -108
- package/restitution/components/restitution-list/restitution-list.component.d.ts +0 -2
- package/restitution/style/_o-restitution-list.scss +2 -24
- package/schematics/migration.json +10 -0
- package/schematics/ng-add/index.spec.js +33 -1
- package/schematics/ng-add/index.spec.js.map +1 -1
- package/schematics/ng-update/utils/complete.function.d.ts +2 -0
- package/schematics/ng-update/utils/complete.function.js +10 -0
- package/schematics/ng-update/utils/complete.function.js.map +1 -0
- package/schematics/ng-update/version-0-13/index.d.ts +2 -0
- package/schematics/ng-update/version-0-13/index.js +30 -0
- package/schematics/ng-update/version-0-13/index.js.map +1 -0
- package/schematics/ng-update/version-0-13/index.spec.d.ts +1 -0
- package/schematics/ng-update/version-0-13/index.spec.js +167 -0
- package/schematics/ng-update/version-0-13/index.spec.js.map +1 -0
- package/styles/abstracts/_mixins.scss +14 -0
- package/styles/components/_m-filter.scss +0 -1
- package/styles/components/_o-accordion.scss +91 -0
- package/styles/components/_o-panel.scss +46 -0
- package/styles-theme/components-theme/_o-accordion.theme.scss +30 -0
- package/styles-theme/components-theme/_o-pipeline.theme.scss +0 -26
- package/styles-theme/main-theme.scss +1 -0
- package/widgets/widget-map/component/widget-map.component.d.ts +14 -25
- package/widgets/widget-map/interaction/interaction-manager.class.d.ts +27 -0
- package/widgets/widget-map/public-api.d.ts +2 -0
|
@@ -188,11 +188,11 @@ export class PryPresentationComponent extends SubscriptionnerDirective {
|
|
|
188
188
|
this.submit.nativeElement.focus();
|
|
189
189
|
}
|
|
190
190
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: PryPresentationComponent, deps: [{ token: i1.Store }, { token: i2.Overlay }, { token: i0.ViewContainerRef }, { token: i3.Router }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
191
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: PryPresentationComponent, selector: "pry-presentation", inputs: { editionStartUrl: "editionStartUrl", consultStartUrl: "consultStartUrl", meAsOwner: "meAsOwner" }, viewQueries: [{ propertyName: "template", first: true, predicate: ["modal"], descendants: true, read: TemplateRef }, { propertyName: "templateModal", first: true, predicate: ["templateModal"], descendants: true, read: TemplateRef }, { propertyName: "openModal", first: true, predicate: ["openModal"], descendants: true }, { propertyName: "cancelRemove", first: true, predicate: ["cancelRemove"], 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 }, { propertyName: "deleteModal", first: true, predicate: ["deleteModal"], 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 [pryTooltip]=\"create\"\n class=\"a-btn a-btn--primary a-btn--icon-text\"\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.manifest.title' | i18n }}</h1>\n\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 [pryTooltip]=\"private\"\n class=\"is-private\"\n [height]=\"17\"\n [width]=\"17\"\n ></pry-icon>\n </ng-container>\n\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 (click)=\"fetch(presentation)\"\n [pryTooltip]=\"view\"\n />\n </div>\n\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\n <div class=\"o-presentation__item__footer\">\n <ul class=\"m-actions-list\">\n <li>\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n (click)=\"default(presentation.id, presentation.name)\"\n >\n <pry-icon\n [iconSvg]=\"presentation.default ? 'home-fill' : 'home-line'\"\n [pryTooltip]=\"homeView\"\n ></pry-icon>\n <span class=\"u-visually-hidden\"></span>\n </button>\n </li>\n <li>\n <button\n class=\"a-btn a-btn--icon-only\"\n (click)=\"edit(presentation)\"\n [disabled]=\"presentation.owner === false\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'edit' }\"\n >\n <pry-icon iconSvg=\"edit\" [pryTooltip]=\"change\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.presentation.edition' | i18n }}</span>\n </button>\n </li>\n <li>\n <button\n (click)=\"toggleModal(presentation)\"\n class=\"a-btn a-btn--icon-only\"\n aria-haspopup=\"dialog\"\n [disabled]=\"presentation.owner === false\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'share' }\"\n >\n <pry-icon iconSvg=\"share\" [pryTooltip]=\"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\"\n #openModal\n (click)=\"toggleRemoveConfirm($event, presentation)\"\n [disabled]=\"presentation.owner === false\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'delete' }\"\n >\n <pry-icon iconSvg=\"delete\" [pryTooltip]=\"erase\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.presentation.delete' | i18n }}</span>\n </button>\n </li>\n </ul>\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!\"\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!\"\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\"\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()\"\n >\n {{ '@pry.toolbox.manifest.check' | i18n }}\n </button>\n </div>\n </div>\n</ng-template>\n\n<ng-template #templateModal>\n <div\n class=\"o-modal\"\n *ngIf=\"presentation\"\n (keydown.escape)=\"toggleRemoveConfirm($event, presentation)\"\n #deleteModal\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"dialog confirm delete presentation\"\n >\n <div class=\"o-modal__top\">\n <div class=\"o-modal__top__title\">\n <h2 class=\"a-h2\">\n {{ '@pry.widget.modalTitle' | i18n }}\n </h2>\n </div>\n <div class=\"o-modal__top__close\">\n <button\n class=\"a-btn a-btn--icon-only\"\n #cross\n (keydown.shift.tab)=\"focusValidation()\"\n (click)=\"cancelRemoveConfirm()\"\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 <div class=\"m-btn-group\">\n <button type=\"button\" #cancelRemove (click)=\"cancelRemoveConfirm()\" class=\"a-btn a-btn--secondary\">\n {{ '@pry.toolbox.manifest.close' | i18n }}\n </button>\n <button\n type=\"submit\"\n class=\"a-btn a-btn--primary\"\n #confirm\n (click)=\"delete(presentation.id)\"\n (keydown.tab)=\"focusCrossElement()\"\n >\n {{ '@pry.toolbox.manifest.validate' | i18n }}\n </button>\n </div>\n </div>\n</ng-template>\n\n<ng-template #create>\n <div class=\"m-tooltip\" role=\"tooltip\">\n <span class=\"m-tooltip__text\">{{ '@pry.presentation.create' | i18n }}</span>\n </div>\n</ng-template>\n\n<ng-template #view>\n <div class=\"m-tooltip\" role=\"tooltip\">\n <span class=\"m-tooltip__text\">{{ '@pry.presentation.view' | i18n }}</span>\n </div>\n</ng-template>\n\n<ng-template #private>\n <div class=\"m-tooltip\" role=\"tooltip\">\n <span class=\"m-tooltip__text\">{{ '@pry.presentation.private' | i18n }}</span>\n </div>\n</ng-template>\n\n<ng-template #homeView>\n <div class=\"m-tooltip\" role=\"tooltip\">\n <span class=\"m-tooltip__text\">{{ '@pry.presentation.homeView' | i18n }}</span>\n </div>\n</ng-template>\n\n<ng-template #share>\n <div class=\"m-tooltip\" role=\"tooltip\">\n <span class=\"m-tooltip__text\">{{ '@pry.presentation.share' | i18n }}</span>\n </div>\n</ng-template>\n\n<ng-template #erase>\n <div class=\"m-tooltip\" role=\"tooltip\">\n <span class=\"m-tooltip__text\">{{ '@pry.presentation.erase' | i18n }}</span>\n </div>\n</ng-template>\n\n<ng-template #change>\n <div class=\"m-tooltip\" role=\"tooltip\">\n <span class=\"m-tooltip__text\">{{ '@pry.presentation.change' | i18n }}</span>\n </div>\n</ng-template>\n<ng-template #backToCatalog>\n <div class=\"m-tooltip\" role=\"tooltip\">\n <span class=\"m-tooltip__text\">{{ '@pry.presentation.backToCatalog' | i18n }}</span>\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: i4.PryTooltipDirective, selector: "[pryTooltip]", inputs: ["pryTooltip", "styleReversed", "pryTooltipContext", "pryTooltipPosition", "pryTooltipShowDelay"] }, { 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: ["selectedPresentation", "edition", "editionStartUrl"], 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" }] }); }
|
|
191
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: PryPresentationComponent, selector: "pry-presentation", inputs: { editionStartUrl: "editionStartUrl", consultStartUrl: "consultStartUrl", meAsOwner: "meAsOwner" }, viewQueries: [{ propertyName: "template", first: true, predicate: ["modal"], descendants: true, read: TemplateRef }, { propertyName: "templateModal", first: true, predicate: ["templateModal"], descendants: true, read: TemplateRef }, { propertyName: "openModal", first: true, predicate: ["openModal"], descendants: true }, { propertyName: "cancelRemove", first: true, predicate: ["cancelRemove"], 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 }, { propertyName: "deleteModal", first: true, predicate: ["deleteModal"], 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 [pryTooltip]=\"create\"\n class=\"a-btn a-btn--primary a-btn--icon-text\"\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.manifest.title' | i18n }}</h1>\n\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 [pryTooltip]=\"private\"\n class=\"is-private\"\n [height]=\"17\"\n [width]=\"17\"\n ></pry-icon>\n </ng-container>\n\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 (click)=\"fetch(presentation)\"\n [pryTooltip]=\"view\"\n />\n </div>\n\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\n <div class=\"o-presentation__item__footer\">\n <ul class=\"m-actions-list\">\n <li>\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n (click)=\"default(presentation.id, presentation.name)\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'default' }\"\n >\n <pry-icon\n [iconSvg]=\"presentation.default ? 'home-fill' : 'home-line'\"\n [pryTooltip]=\"homeView\"\n ></pry-icon>\n <span class=\"u-visually-hidden\"></span>\n </button>\n </li>\n <li>\n <button\n class=\"a-btn a-btn--icon-only\"\n (click)=\"edit(presentation)\"\n [disabled]=\"presentation.owner === false\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'edit' }\"\n >\n <pry-icon iconSvg=\"edit\" [pryTooltip]=\"change\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.presentation.edition' | i18n }}</span>\n </button>\n </li>\n <li>\n <button\n (click)=\"toggleModal(presentation)\"\n class=\"a-btn a-btn--icon-only\"\n aria-haspopup=\"dialog\"\n [disabled]=\"presentation.owner === false\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'share' }\"\n >\n <pry-icon iconSvg=\"share\" [pryTooltip]=\"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\"\n #openModal\n (click)=\"toggleRemoveConfirm($event, presentation)\"\n [disabled]=\"presentation.owner === false\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'delete' }\"\n >\n <pry-icon iconSvg=\"delete\" [pryTooltip]=\"erase\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.presentation.delete' | i18n }}</span>\n </button>\n </li>\n </ul>\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!\"\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!\"\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\"\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()\"\n >\n {{ '@pry.toolbox.manifest.check' | i18n }}\n </button>\n </div>\n </div>\n</ng-template>\n\n<ng-template #templateModal>\n <div\n class=\"o-modal\"\n *ngIf=\"presentation\"\n (keydown.escape)=\"toggleRemoveConfirm($event, presentation)\"\n #deleteModal\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"dialog confirm delete presentation\"\n >\n <div class=\"o-modal__top\">\n <div class=\"o-modal__top__title\">\n <h2 class=\"a-h2\">\n {{ '@pry.widget.modalTitle' | i18n }}\n </h2>\n </div>\n <div class=\"o-modal__top__close\">\n <button\n class=\"a-btn a-btn--icon-only\"\n #cross\n (keydown.shift.tab)=\"focusValidation()\"\n (click)=\"cancelRemoveConfirm()\"\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 <div class=\"m-btn-group\">\n <button type=\"button\" #cancelRemove (click)=\"cancelRemoveConfirm()\" class=\"a-btn a-btn--secondary\">\n {{ '@pry.toolbox.manifest.close' | i18n }}\n </button>\n <button\n type=\"submit\"\n class=\"a-btn a-btn--primary\"\n #confirm\n (click)=\"delete(presentation.id)\"\n (keydown.tab)=\"focusCrossElement()\"\n >\n {{ '@pry.toolbox.manifest.validate' | i18n }}\n </button>\n </div>\n </div>\n</ng-template>\n\n<ng-template #create>\n <div class=\"m-tooltip\" role=\"tooltip\">\n <span class=\"m-tooltip__text\">{{ '@pry.presentation.create' | i18n }}</span>\n </div>\n</ng-template>\n\n<ng-template #view>\n <div class=\"m-tooltip\" role=\"tooltip\">\n <span class=\"m-tooltip__text\">{{ '@pry.presentation.view' | i18n }}</span>\n </div>\n</ng-template>\n\n<ng-template #private>\n <div class=\"m-tooltip\" role=\"tooltip\">\n <span class=\"m-tooltip__text\">{{ '@pry.presentation.private' | i18n }}</span>\n </div>\n</ng-template>\n\n<ng-template #homeView>\n <div class=\"m-tooltip\" role=\"tooltip\">\n <span class=\"m-tooltip__text\">{{ '@pry.presentation.homeView' | i18n }}</span>\n </div>\n</ng-template>\n\n<ng-template #share>\n <div class=\"m-tooltip\" role=\"tooltip\">\n <span class=\"m-tooltip__text\">{{ '@pry.presentation.share' | i18n }}</span>\n </div>\n</ng-template>\n\n<ng-template #erase>\n <div class=\"m-tooltip\" role=\"tooltip\">\n <span class=\"m-tooltip__text\">{{ '@pry.presentation.erase' | i18n }}</span>\n </div>\n</ng-template>\n\n<ng-template #change>\n <div class=\"m-tooltip\" role=\"tooltip\">\n <span class=\"m-tooltip__text\">{{ '@pry.presentation.change' | i18n }}</span>\n </div>\n</ng-template>\n<ng-template #backToCatalog>\n <div class=\"m-tooltip\" role=\"tooltip\">\n <span class=\"m-tooltip__text\">{{ '@pry.presentation.backToCatalog' | i18n }}</span>\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: i4.PryTooltipDirective, selector: "[pryTooltip]", inputs: ["pryTooltip", "styleReversed", "pryTooltipContext", "pryTooltipPosition", "pryTooltipShowDelay"] }, { 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: ["selectedPresentation", "edition", "editionStartUrl"], 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" }] }); }
|
|
192
192
|
}
|
|
193
193
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: PryPresentationComponent, decorators: [{
|
|
194
194
|
type: Component,
|
|
195
|
-
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 [pryTooltip]=\"create\"\n class=\"a-btn a-btn--primary a-btn--icon-text\"\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.manifest.title' | i18n }}</h1>\n\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 [pryTooltip]=\"private\"\n class=\"is-private\"\n [height]=\"17\"\n [width]=\"17\"\n ></pry-icon>\n </ng-container>\n\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 (click)=\"fetch(presentation)\"\n [pryTooltip]=\"view\"\n />\n </div>\n\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\n <div class=\"o-presentation__item__footer\">\n <ul class=\"m-actions-list\">\n <li>\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n (click)=\"default(presentation.id, presentation.name)\"\n >\n <pry-icon\n [iconSvg]=\"presentation.default ? 'home-fill' : 'home-line'\"\n [pryTooltip]=\"homeView\"\n ></pry-icon>\n <span class=\"u-visually-hidden\"></span>\n </button>\n </li>\n <li>\n <button\n class=\"a-btn a-btn--icon-only\"\n (click)=\"edit(presentation)\"\n [disabled]=\"presentation.owner === false\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'edit' }\"\n >\n <pry-icon iconSvg=\"edit\" [pryTooltip]=\"change\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.presentation.edition' | i18n }}</span>\n </button>\n </li>\n <li>\n <button\n (click)=\"toggleModal(presentation)\"\n class=\"a-btn a-btn--icon-only\"\n aria-haspopup=\"dialog\"\n [disabled]=\"presentation.owner === false\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'share' }\"\n >\n <pry-icon iconSvg=\"share\" [pryTooltip]=\"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\"\n #openModal\n (click)=\"toggleRemoveConfirm($event, presentation)\"\n [disabled]=\"presentation.owner === false\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'delete' }\"\n >\n <pry-icon iconSvg=\"delete\" [pryTooltip]=\"erase\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.presentation.delete' | i18n }}</span>\n </button>\n </li>\n </ul>\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!\"\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!\"\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\"\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()\"\n >\n {{ '@pry.toolbox.manifest.check' | i18n }}\n </button>\n </div>\n </div>\n</ng-template>\n\n<ng-template #templateModal>\n <div\n class=\"o-modal\"\n *ngIf=\"presentation\"\n (keydown.escape)=\"toggleRemoveConfirm($event, presentation)\"\n #deleteModal\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"dialog confirm delete presentation\"\n >\n <div class=\"o-modal__top\">\n <div class=\"o-modal__top__title\">\n <h2 class=\"a-h2\">\n {{ '@pry.widget.modalTitle' | i18n }}\n </h2>\n </div>\n <div class=\"o-modal__top__close\">\n <button\n class=\"a-btn a-btn--icon-only\"\n #cross\n (keydown.shift.tab)=\"focusValidation()\"\n (click)=\"cancelRemoveConfirm()\"\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 <div class=\"m-btn-group\">\n <button type=\"button\" #cancelRemove (click)=\"cancelRemoveConfirm()\" class=\"a-btn a-btn--secondary\">\n {{ '@pry.toolbox.manifest.close' | i18n }}\n </button>\n <button\n type=\"submit\"\n class=\"a-btn a-btn--primary\"\n #confirm\n (click)=\"delete(presentation.id)\"\n (keydown.tab)=\"focusCrossElement()\"\n >\n {{ '@pry.toolbox.manifest.validate' | i18n }}\n </button>\n </div>\n </div>\n</ng-template>\n\n<ng-template #create>\n <div class=\"m-tooltip\" role=\"tooltip\">\n <span class=\"m-tooltip__text\">{{ '@pry.presentation.create' | i18n }}</span>\n </div>\n</ng-template>\n\n<ng-template #view>\n <div class=\"m-tooltip\" role=\"tooltip\">\n <span class=\"m-tooltip__text\">{{ '@pry.presentation.view' | i18n }}</span>\n </div>\n</ng-template>\n\n<ng-template #private>\n <div class=\"m-tooltip\" role=\"tooltip\">\n <span class=\"m-tooltip__text\">{{ '@pry.presentation.private' | i18n }}</span>\n </div>\n</ng-template>\n\n<ng-template #homeView>\n <div class=\"m-tooltip\" role=\"tooltip\">\n <span class=\"m-tooltip__text\">{{ '@pry.presentation.homeView' | i18n }}</span>\n </div>\n</ng-template>\n\n<ng-template #share>\n <div class=\"m-tooltip\" role=\"tooltip\">\n <span class=\"m-tooltip__text\">{{ '@pry.presentation.share' | i18n }}</span>\n </div>\n</ng-template>\n\n<ng-template #erase>\n <div class=\"m-tooltip\" role=\"tooltip\">\n <span class=\"m-tooltip__text\">{{ '@pry.presentation.erase' | i18n }}</span>\n </div>\n</ng-template>\n\n<ng-template #change>\n <div class=\"m-tooltip\" role=\"tooltip\">\n <span class=\"m-tooltip__text\">{{ '@pry.presentation.change' | i18n }}</span>\n </div>\n</ng-template>\n<ng-template #backToCatalog>\n <div class=\"m-tooltip\" role=\"tooltip\">\n <span class=\"m-tooltip__text\">{{ '@pry.presentation.backToCatalog' | i18n }}</span>\n </div>\n</ng-template>\n" }]
|
|
195
|
+
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 [pryTooltip]=\"create\"\n class=\"a-btn a-btn--primary a-btn--icon-text\"\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.manifest.title' | i18n }}</h1>\n\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 [pryTooltip]=\"private\"\n class=\"is-private\"\n [height]=\"17\"\n [width]=\"17\"\n ></pry-icon>\n </ng-container>\n\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 (click)=\"fetch(presentation)\"\n [pryTooltip]=\"view\"\n />\n </div>\n\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\n <div class=\"o-presentation__item__footer\">\n <ul class=\"m-actions-list\">\n <li>\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n (click)=\"default(presentation.id, presentation.name)\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'default' }\"\n >\n <pry-icon\n [iconSvg]=\"presentation.default ? 'home-fill' : 'home-line'\"\n [pryTooltip]=\"homeView\"\n ></pry-icon>\n <span class=\"u-visually-hidden\"></span>\n </button>\n </li>\n <li>\n <button\n class=\"a-btn a-btn--icon-only\"\n (click)=\"edit(presentation)\"\n [disabled]=\"presentation.owner === false\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'edit' }\"\n >\n <pry-icon iconSvg=\"edit\" [pryTooltip]=\"change\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.presentation.edition' | i18n }}</span>\n </button>\n </li>\n <li>\n <button\n (click)=\"toggleModal(presentation)\"\n class=\"a-btn a-btn--icon-only\"\n aria-haspopup=\"dialog\"\n [disabled]=\"presentation.owner === false\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'share' }\"\n >\n <pry-icon iconSvg=\"share\" [pryTooltip]=\"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\"\n #openModal\n (click)=\"toggleRemoveConfirm($event, presentation)\"\n [disabled]=\"presentation.owner === false\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'delete' }\"\n >\n <pry-icon iconSvg=\"delete\" [pryTooltip]=\"erase\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.presentation.delete' | i18n }}</span>\n </button>\n </li>\n </ul>\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!\"\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!\"\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\"\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()\"\n >\n {{ '@pry.toolbox.manifest.check' | i18n }}\n </button>\n </div>\n </div>\n</ng-template>\n\n<ng-template #templateModal>\n <div\n class=\"o-modal\"\n *ngIf=\"presentation\"\n (keydown.escape)=\"toggleRemoveConfirm($event, presentation)\"\n #deleteModal\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"dialog confirm delete presentation\"\n >\n <div class=\"o-modal__top\">\n <div class=\"o-modal__top__title\">\n <h2 class=\"a-h2\">\n {{ '@pry.widget.modalTitle' | i18n }}\n </h2>\n </div>\n <div class=\"o-modal__top__close\">\n <button\n class=\"a-btn a-btn--icon-only\"\n #cross\n (keydown.shift.tab)=\"focusValidation()\"\n (click)=\"cancelRemoveConfirm()\"\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 <div class=\"m-btn-group\">\n <button type=\"button\" #cancelRemove (click)=\"cancelRemoveConfirm()\" class=\"a-btn a-btn--secondary\">\n {{ '@pry.toolbox.manifest.close' | i18n }}\n </button>\n <button\n type=\"submit\"\n class=\"a-btn a-btn--primary\"\n #confirm\n (click)=\"delete(presentation.id)\"\n (keydown.tab)=\"focusCrossElement()\"\n >\n {{ '@pry.toolbox.manifest.validate' | i18n }}\n </button>\n </div>\n </div>\n</ng-template>\n\n<ng-template #create>\n <div class=\"m-tooltip\" role=\"tooltip\">\n <span class=\"m-tooltip__text\">{{ '@pry.presentation.create' | i18n }}</span>\n </div>\n</ng-template>\n\n<ng-template #view>\n <div class=\"m-tooltip\" role=\"tooltip\">\n <span class=\"m-tooltip__text\">{{ '@pry.presentation.view' | i18n }}</span>\n </div>\n</ng-template>\n\n<ng-template #private>\n <div class=\"m-tooltip\" role=\"tooltip\">\n <span class=\"m-tooltip__text\">{{ '@pry.presentation.private' | i18n }}</span>\n </div>\n</ng-template>\n\n<ng-template #homeView>\n <div class=\"m-tooltip\" role=\"tooltip\">\n <span class=\"m-tooltip__text\">{{ '@pry.presentation.homeView' | i18n }}</span>\n </div>\n</ng-template>\n\n<ng-template #share>\n <div class=\"m-tooltip\" role=\"tooltip\">\n <span class=\"m-tooltip__text\">{{ '@pry.presentation.share' | i18n }}</span>\n </div>\n</ng-template>\n\n<ng-template #erase>\n <div class=\"m-tooltip\" role=\"tooltip\">\n <span class=\"m-tooltip__text\">{{ '@pry.presentation.erase' | i18n }}</span>\n </div>\n</ng-template>\n\n<ng-template #change>\n <div class=\"m-tooltip\" role=\"tooltip\">\n <span class=\"m-tooltip__text\">{{ '@pry.presentation.change' | i18n }}</span>\n </div>\n</ng-template>\n<ng-template #backToCatalog>\n <div class=\"m-tooltip\" role=\"tooltip\">\n <span class=\"m-tooltip__text\">{{ '@pry.presentation.backToCatalog' | i18n }}</span>\n </div>\n</ng-template>\n" }]
|
|
196
196
|
}], ctorParameters: function () { return [{ type: i1.Store }, { type: i2.Overlay }, { type: i0.ViewContainerRef }, { type: i3.Router }, { type: i0.NgZone }]; }, propDecorators: { template: [{
|
|
197
197
|
type: ViewChild,
|
|
198
198
|
args: ['modal', { read: TemplateRef }]
|
|
@@ -230,4 +230,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImpor
|
|
|
230
230
|
}], meAsOwner: [{
|
|
231
231
|
type: Input
|
|
232
232
|
}] } });
|
|
233
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlc2VudGF0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL3ByZXNlbnRhdGlvbi9jb21wb25lbnRzL3ByZXNlbnRhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9wcmVzZW50YXRpb24vY29tcG9uZW50cy9wcmVzZW50YXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFXLGFBQWEsRUFBYyxNQUFNLHNCQUFzQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsU0FBUyxFQUFjLEtBQUssRUFBVSxXQUFXLEVBQUUsU0FBUyxFQUFvQixNQUFNLGVBQWUsQ0FBQztBQUcvRyxPQUFPLEVBQ0wsYUFBYSxFQUNiLGdCQUFnQixFQUVoQixrQkFBa0IsRUFJbEIsaUJBQWlCLEVBQ2pCLHdCQUF3QixFQUN4QixRQUFRLEVBQ1QsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsR0FBRyxFQUFjLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzRixPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7OztBQU0xQixNQUFNLE9BQU8sd0JBQXlCLFNBQVEsd0JBQXdCO0lBNEJwRSxZQUNZLEtBQWlCLEVBQ2pCLE9BQWdCLEVBQ2hCLGdCQUFrQyxFQUNsQyxNQUFjLEVBQ2QsTUFBYztRQUV4QixLQUFLLEVBQUUsQ0FBQztRQU5FLFVBQUssR0FBTCxLQUFLLENBQVk7UUFDakIsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQUNoQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBL0IxQix5QkFBb0IsR0FBK0IsSUFBSSxDQUFDO1FBR3hELGlCQUFZLEdBQWEsUUFBUSxDQUFDLE9BQU8sQ0FBQztRQUMxQyxnQkFBVyxHQUFHLEtBQUssQ0FBQztRQWFwQixlQUFVLEdBQWtCLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2hFLHNCQUFpQixHQUFHLGlCQUFpQixDQUFDO1FBQzdCLG9CQUFlLEdBQVcsR0FBRyxDQUFDO1FBQzlCLG9CQUFlLEdBQVcsR0FBRyxDQUFDO1FBRXZDLGFBQVEsR0FBRyxRQUFRLENBQUM7UUFDcEIsWUFBTyxHQUFHLElBQUksZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBV2hDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQztRQUMzRCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLO2FBQ3pCLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLENBQUM7YUFDeEMsSUFBSSxDQUNILEdBQUcsQ0FBQyxDQUFDLFlBQVksRUFBRSxFQUFFLENBQ25CLENBQUMsR0FBRyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FDOUIsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQzlFLENBQ0YsQ0FDRixDQUFDO1FBQ0osSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsS0FBSzthQUM5QixNQUFNLENBQUMsa0JBQWtCLENBQUMsY0FBYyxDQUFDO2FBQ3pDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzlDLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDL0UsR0FBRyxDQUFDLENBQUMsQ0FBQyxhQUFhLEVBQUUsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUM5QixhQUFhLENBQUMsTUFBTSxDQUNsQixDQUFDLGFBQWEsRUFBRSxFQUFFLENBQ2hCLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQztZQUNuQixhQUFhLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDdEUsYUFBYSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQ2xFLENBQ0YsQ0FDRixDQUFDO1FBQ0YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQ3BCLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFlBQVksRUFBRSxFQUFFO1lBQzVFLElBQUksQ0FBQyxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUU7Z0JBQzFCLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxZQUFZLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQztnQkFDekQsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLEVBQUUsUUFBUSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDO2FBQ3JFO1FBQ0gsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxZQUFZLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQztRQUNyQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDcEgsQ0FBQztJQUVELEtBQUssQ0FBQyxZQUFpQztRQUNyQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FDakIsZ0JBQWdCLENBQUMsY0FBYyxDQUFDO1lBQzlCLFFBQVEsRUFBRSxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUU7WUFDekIsV0FBVyxFQUFFLEVBQUU7U0FDaEIsQ0FBQyxDQUNILENBQUM7UUFDRixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FDakIsZ0JBQWdCLENBQUMsa0JBQWtCLENBQUM7WUFDbEMsWUFBWSxFQUFFLFlBQVk7WUFDMUIsUUFBUSxFQUFFLFFBQVEsQ0FBQyxPQUFPO1NBQzNCLENBQUMsQ0FDSCxDQUFDO1FBQ0YsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsbUJBQW1CLENBQUMsRUFBRSxFQUFFLEVBQUUsWUFBWSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNuRixJQUFJLENBQUMsS0FBSzthQUNQLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxjQUFjLENBQUM7YUFDekMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDakMsU0FBUyxDQUFDLENBQUMsY0FBOEIsRUFBRSxFQUFFO1lBQzVDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUNqQixnQkFBZ0IsQ0FBQyxjQUFjLENBQUM7Z0JBQzlCLFFBQVEsRUFBRSxjQUFjO2dCQUN4QixXQUFXLEVBQUUsRUFBRTtnQkFDZixVQUFVLEVBQUUsWUFBWSxDQUFDLEVBQUU7YUFDNUIsQ0FBQyxDQUNILENBQUM7WUFDRixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FDakIsZ0JBQWdCLENBQUMsc0JBQXNCLENBQUM7Z0JBQ3RDLE9BQU8sRUFBRSxjQUFjO2FBQ3hCLENBQUMsQ0FDSCxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7UUFDTCxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLENBQUM7UUFDNUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFO1lBQ25CLElBQUksQ0FBQyxNQUFNLEVBQUUsYUFBYSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNuRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFlBQVksR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDO1FBQ3RDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3JHLE1BQU0sZUFBZSxHQUFHO1lBQ3RCLFlBQVksRUFBRTtnQkFDWixFQUFFLEVBQUUsRUFBRSxFQUFFO2dCQUNSLElBQUksRUFBRSxFQUFFO2dCQUNSLFdBQVcsRUFBRSxFQUFFO2dCQUNmLFVBQVUsRUFBRSxFQUFFLElBQUksRUFBRSxpQkFBaUIsQ0FBQyxPQUFPLEVBQUU7Z0JBQy9DLEtBQUssRUFBRSxJQUFJO2FBQ1c7WUFDeEIsUUFBUSxFQUFFLFFBQVEsQ0FBQyxRQUFRO1NBQzVCLENBQUM7UUFDRixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxrQkFBa0IsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFFRCxJQUFJLENBQUMsWUFBaUM7UUFDcEMsSUFBSSxDQUFDLFlBQVksR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxZQUFZLENBQUM7UUFDekMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQ2pCLGdCQUFnQixDQUFDLGtCQUFrQixDQUFDLEVBQUUsWUFBWSxFQUFFLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQzdHLENBQUM7UUFDRixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLEVBQUUsRUFBRSxZQUFZLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3JGLENBQUM7SUFFRCxNQUFNLENBQUMsRUFBVTtRQUNmLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM3RCxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsT0FBTyxFQUFFLENBQUM7UUFDakMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFNBQVMsQ0FBQztRQUNsQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxHQUFHLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM1RixDQUFDO0lBRUQsT0FBTyxDQUFDLEVBQVUsRUFBRSxJQUFZO1FBQzlCLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUVELFdBQVcsQ0FBQyxZQUF5QztRQUNuRCxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUNyQyxJQUFJLElBQUksQ0FBQyxXQUFXLElBQUksWUFBWSxFQUFFO1lBQ3BDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxZQUFZLENBQUM7WUFDekMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQ2pCLGdCQUFnQixDQUFDLGtCQUFrQixDQUFDLEVBQUUsWUFBWSxFQUFFLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQzdHLENBQUM7WUFDRixtRUFBbUU7WUFDbkUsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxDQUFDLEVBQUUsRUFBRSxFQUFFLFlBQVksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDNUUsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FDbkMsSUFBSSxhQUFhLENBQUM7Z0JBQ2hCLFdBQVcsRUFBRSxJQUFJO2dCQUNqQixVQUFVLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQztnQkFDL0IsYUFBYSxFQUFFLFVBQVU7YUFDMUIsQ0FBQyxDQUNILENBQUM7WUFDRixJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7WUFDaEYsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO1lBQ2pGLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQkFBc0MsQ0FBQztnQkFDaEgsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2hCLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztTQUNSO2FBQU07WUFDTCxJQUFJLENBQUMsVUFBVSxFQUFFLE9BQU8sRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUM7U0FDbEM7SUFDSCxDQUFDO0lBRUQsZ0JBQWdCO1FBQ2QsSUFBSSxJQUFJLENBQUMsb0JBQW9CLEVBQUU7WUFDN0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQ2pCLGdCQUFnQixDQUFDLFlBQVksQ0FBQztnQkFDNUIsRUFBRSxFQUFFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLElBQUksRUFBRTtnQkFDdEMsSUFBSSxFQUFFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLElBQUksRUFBRTtnQkFDMUMsV0FBVyxFQUFFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxXQUFXLElBQUksRUFBRTtnQkFDeEQsS0FBSyxFQUFFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLElBQUksRUFBRTtnQkFDNUMsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO2FBQzVCLENBQUMsQ0FDSCxDQUFDO1NBQ0g7UUFDRCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxNQUFXLEVBQUUsWUFBa0M7UUFDakUsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUMxQixJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztZQUNqQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQ3pDLElBQUksYUFBYSxDQUFDO2dCQUNoQixXQUFXLEVBQUUsSUFBSTtnQkFDakIsVUFBVSxFQUFFLENBQUMsaUJBQWlCLENBQUM7Z0JBQy9CLGFBQWEsRUFBRSxVQUFVO2FBQzFCLENBQUMsQ0FDSCxDQUFDO1lBQ0YsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksR0FBRyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDM0YsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsRUFBRSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUM7WUFDdEcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7WUFDNUYsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDZCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFzQyxDQUFDO2dCQUM1RyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDaEIsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1NBQ1I7YUFBTTtZQUNMLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNoQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsU0FBUyxDQUFDO1lBQ2xDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEdBQUcsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzFGLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ3RDO0lBQ0gsQ0FBQztJQUVELG1CQUFtQjtRQUNqQixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsT0FBTyxFQUFFLENBQUM7UUFDakMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFNBQVMsQ0FBQztRQUNsQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxHQUFHLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM1RixDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQ3hCLElBQUksQ0FBQyxlQUFlLEVBQUUsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQzdDO1FBQ0QsSUFBSSxDQUFDLEtBQUssRUFBRSxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDaEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDcEM7UUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNwQyxDQUFDOzhHQTFPVSx3QkFBd0I7a0dBQXhCLHdCQUF3QixrUEFPUCxXQUFXLHlHQUNILFdBQVcsNHdCQ2hDakQsNDNVQXlSQTs7MkZEalFhLHdCQUF3QjtrQkFKcEMsU0FBUzsrQkFDRSxrQkFBa0I7MkxBVWUsUUFBUTtzQkFBbEQsU0FBUzt1QkFBQyxPQUFPLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO2dCQUNVLGFBQWE7c0JBQS9ELFNBQVM7dUJBQUMsZUFBZSxFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTtnQkFDekIsU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXO2dCQUNLLFlBQVk7c0JBQXRDLFNBQVM7dUJBQUMsY0FBYztnQkFDSCxPQUFPO3NCQUE1QixTQUFTO3VCQUFDLFNBQVM7Z0JBQ0MsTUFBTTtzQkFBMUIsU0FBUzt1QkFBQyxRQUFRO2dCQUNDLEtBQUs7c0JBQXhCLFNBQVM7dUJBQUMsT0FBTztnQkFDWSxlQUFlO3NCQUE1QyxTQUFTO3VCQUFDLGlCQUFpQjtnQkFDRSxlQUFlO3NCQUE1QyxTQUFTO3VCQUFDLGlCQUFpQjtnQkFDRixXQUFXO3NCQUFwQyxTQUFTO3VCQUFDLGFBQWE7Z0JBS2YsZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPdmVybGF5LCBPdmVybGF5Q29uZmlnLCBPdmVybGF5UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgVGVtcGxhdGVQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIE5nWm9uZSwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHtcbiAgQ29uZmlnQWN0aW9ucyxcbiAgRGFzaGJvYXJkQWN0aW9ucyxcbiAgRGFzaGJvYXJkTWFuaWZlc3QsXG4gIERhc2hib2FyZFNlbGVjdG9ycyxcbiAgR2xvYmFsTWFuaWZlc3QsXG4gIE1hbmlmZXN0RGVzY3JpcHRpb24sXG4gIFByeVZpc2liaWxpdHksXG4gIFByeVZpc2liaWxpdHlUeXBlLFxuICBTdWJzY3JpcHRpb25uZXJEaXJlY3RpdmUsXG4gIFZpZXdNb2RlXG59IGZyb20gJ0Bwcm92b2x5L2Rhc2hib2FyZCc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIGRlYm91bmNlVGltZSwgbWFwLCBPYnNlcnZhYmxlLCB0YWtlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB2NCB9IGZyb20gJ3V1aWQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwcnktcHJlc2VudGF0aW9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3ByZXNlbnRhdGlvbi5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgUHJ5UHJlc2VudGF0aW9uQ29tcG9uZW50IGV4dGVuZHMgU3Vic2NyaXB0aW9ubmVyRGlyZWN0aXZlIHtcbiAgbWFuaWZlc3RzJDogT2JzZXJ2YWJsZTxNYW5pZmVzdERlc2NyaXB0aW9uW10+O1xuICBzZWxlY3RlZFByZXNlbnRhdGlvbjogTWFuaWZlc3REZXNjcmlwdGlvbiB8IG51bGwgPSBudWxsO1xuICBwcmVzZW50YXRpb24/OiBNYW5pZmVzdERlc2NyaXB0aW9uO1xuICBzdGF0aWNNYW5pZmVzdCQ/OiBPYnNlcnZhYmxlPERhc2hib2FyZE1hbmlmZXN0PjtcbiAgc2VsZWN0ZWRNb2RlOiBWaWV3TW9kZSA9IFZpZXdNb2RlLkNBVEFMT0c7XG4gIG1vZGFsT3BlbmVkID0gZmFsc2U7XG4gIEBWaWV3Q2hpbGQoJ21vZGFsJywgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KSB0ZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPGFueT47XG4gIEBWaWV3Q2hpbGQoJ3RlbXBsYXRlTW9kYWwnLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pIHRlbXBsYXRlTW9kYWwhOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBAVmlld0NoaWxkKCdvcGVuTW9kYWwnKSBvcGVuTW9kYWwhOiBFbGVtZW50UmVmPEhUTUxCdXR0b25FbGVtZW50PjtcbiAgQFZpZXdDaGlsZCgnY2FuY2VsUmVtb3ZlJykgY2FuY2VsUmVtb3ZlITogRWxlbWVudFJlZjxIVE1MQnV0dG9uRWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoJ2NvbmZpcm0nKSBjb25maXJtITogRWxlbWVudFJlZjxIVE1MQnV0dG9uRWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoJ3N1Ym1pdCcpIHN1Ym1pdCE6IEVsZW1lbnRSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKCdjcm9zcycpIGNyb3NzITogRWxlbWVudFJlZjxIVE1MQnV0dG9uRWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoJ2Nyb3NzVmlzaWJpbGl0eScpIGNyb3NzVmlzaWJpbGl0eSE6IEVsZW1lbnRSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKCd2aXNpYmlsaXR5TW9kYWwnKSB2aXNpYmlsaXR5TW9kYWwhOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdkZWxldGVNb2RhbCcpIGRlbGV0ZU1vZGFsITogRWxlbWVudFJlZjtcbiAgcHJpdmF0ZSBjb25maXJtUmVtb3ZlUmVmPzogT3ZlcmxheVJlZjtcbiAgb3ZlcmxheVJlZj86IE92ZXJsYXlSZWY7XG4gIHZpc2liaWxpdHk6IFByeVZpc2liaWxpdHkgPSB7IHR5cGU6IFByeVZpc2liaWxpdHlUeXBlLlBSSVZBVEUgfTtcbiAgUHJ5VmlzaWJpbGl0eVR5cGUgPSBQcnlWaXNpYmlsaXR5VHlwZTtcbiAgQElucHV0KCkgZWRpdGlvblN0YXJ0VXJsOiBzdHJpbmcgPSAnLyc7XG4gIEBJbnB1dCgpIGNvbnN1bHRTdGFydFVybDogc3RyaW5nID0gJy8nO1xuICBASW5wdXQoKSBtZUFzT3duZXI/OiBzdHJpbmc7XG4gIFZpZXdNb2RlID0gVmlld01vZGU7XG4gIHNlYXJjaCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KCcnKTtcbiAgZmlsdGVyZWRQcmVzZW50YXRpb25zJDogT2JzZXJ2YWJsZTxNYW5pZmVzdERlc2NyaXB0aW9uW10+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBzdG9yZTogU3RvcmU8YW55PixcbiAgICBwcm90ZWN0ZWQgb3ZlcmxheTogT3ZlcmxheSxcbiAgICBwcm90ZWN0ZWQgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgICBwcm90ZWN0ZWQgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJvdGVjdGVkIG5nWm9uZTogTmdab25lXG4gICkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChEYXNoYm9hcmRBY3Rpb25zLmZldGNoTWFuaWZlc3RzTGlzdCgpKTtcbiAgICB0aGlzLm1hbmlmZXN0cyQgPSB0aGlzLnN0b3JlXG4gICAgICAuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5tYW5pZmVzdHNMaXN0KVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgobWFuaWZlc3RMaXN0KSA9PlxuICAgICAgICAgIFsuLi5tYW5pZmVzdExpc3RdLnNvcnQoKGEsIGIpID0+XG4gICAgICAgICAgICBhLm1vZGlmaWNhdGlvbkRhdGUgPyBiLm1vZGlmaWNhdGlvbkRhdGUubG9jYWxlQ29tcGFyZShhLm1vZGlmaWNhdGlvbkRhdGUpIDogMVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB0aGlzLnN0YXRpY01hbmlmZXN0JCA9IHRoaXMuc3RvcmVcbiAgICAgIC5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnN0YXRpY01hbmlmZXN0KVxuICAgICAgLnBpcGUobWFwKChzdGF0aWNNKSA9PiBzdGF0aWNNLndpbmRvd3NbMF0pKTtcbiAgICB0aGlzLmZpbHRlcmVkUHJlc2VudGF0aW9ucyQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLm1hbmlmZXN0cyQsIHRoaXMuc2VhcmNoJF0pLnBpcGUoXG4gICAgICBtYXAoKFtwcmVzZW50YXRpb25zLCBzZWFyY2hdKSA9PlxuICAgICAgICBwcmVzZW50YXRpb25zLmZpbHRlcihcbiAgICAgICAgICAocHJlc2VudGF0aW9ucykgPT5cbiAgICAgICAgICAgIHNlYXJjaC5sZW5ndGggPT09IDAgfHxcbiAgICAgICAgICAgIHByZXNlbnRhdGlvbnMuZGVzY3JpcHRpb24udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2gudG9Mb3dlckNhc2UoKSkgfHxcbiAgICAgICAgICAgIHByZXNlbnRhdGlvbnMubmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaC50b0xvd2VyQ2FzZSgpKVxuICAgICAgICApXG4gICAgICApXG4gICAgKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnByZXNlbnRhdGlvbikuc3Vic2NyaWJlKChwcmVzZW50YXRpb24pID0+IHtcbiAgICAgICAgaWYgKCEhcHJlc2VudGF0aW9uLmN1cnJlbnQpIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkUHJlc2VudGF0aW9uID0gcHJlc2VudGF0aW9uLmN1cnJlbnQgPz8gbnVsbDtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkTW9kZSA9IHByZXNlbnRhdGlvbj8udmlld01vZGUgPz8gdGhpcy5WaWV3TW9kZS5DQVRBTE9HO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBjbG9zZVJlc3RpdHV0aW9uKCkge1xuICAgIHRoaXMuc2VsZWN0ZWRQcmVzZW50YXRpb24gPSBudWxsO1xuICAgIHRoaXMuc2VsZWN0ZWRNb2RlID0gVmlld01vZGUuQ0FUQUxPRztcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKERhc2hib2FyZEFjdGlvbnMuc2VsZWN0UHJlc2VudGF0aW9uKHsgcHJlc2VudGF0aW9uOiB1bmRlZmluZWQsIHZpZXdNb2RlOiBWaWV3TW9kZS5DQVRBTE9HIH0pKTtcbiAgfVxuXG4gIGZldGNoKHByZXNlbnRhdGlvbjogTWFuaWZlc3REZXNjcmlwdGlvbikge1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goXG4gICAgICBEYXNoYm9hcmRBY3Rpb25zLnVwZGF0ZU1hbmlmZXN0KHtcbiAgICAgICAgbWFuaWZlc3Q6IHsgd2luZG93czogW10gfSxcbiAgICAgICAgc2VsZWN0ZWRJZHM6IFtdXG4gICAgICB9KVxuICAgICk7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChcbiAgICAgIERhc2hib2FyZEFjdGlvbnMuc2VsZWN0UHJlc2VudGF0aW9uKHtcbiAgICAgICAgcHJlc2VudGF0aW9uOiBwcmVzZW50YXRpb24sXG4gICAgICAgIHZpZXdNb2RlOiBWaWV3TW9kZS5DQVRBTE9HXG4gICAgICB9KVxuICAgICk7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChEYXNoYm9hcmRBY3Rpb25zLmZldGNoU3RhdGljTWFuaWZlc3QoeyBpZDogcHJlc2VudGF0aW9uLmlkIH0pKTtcbiAgICB0aGlzLnN0b3JlXG4gICAgICAuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5zdGF0aWNNYW5pZmVzdClcbiAgICAgIC5waXBlKGRlYm91bmNlVGltZSgxMDAwKSwgdGFrZSgxKSlcbiAgICAgIC5zdWJzY3JpYmUoKHN0YXRpY01hbmlmZXN0OiBHbG9iYWxNYW5pZmVzdCkgPT4ge1xuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFxuICAgICAgICAgIERhc2hib2FyZEFjdGlvbnMudXBkYXRlTWFuaWZlc3Qoe1xuICAgICAgICAgICAgbWFuaWZlc3Q6IHN0YXRpY01hbmlmZXN0LFxuICAgICAgICAgICAgc2VsZWN0ZWRJZHM6IFtdLFxuICAgICAgICAgICAgbWFuaWZlc3RJZDogcHJlc2VudGF0aW9uLmlkXG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChcbiAgICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLnNldEluaXRpYWxQcmVzZW50YXRpb24oe1xuICAgICAgICAgICAgaW5pdGlhbDogc3RhdGljTWFuaWZlc3RcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChEYXNoYm9hcmRBY3Rpb25zLmZvbGxvd01hbmlmZXN0Um91dGUoKSk7XG4gICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgIHRoaXMucm91dGVyPy5uYXZpZ2F0ZUJ5VXJsKHRoaXMuY29uc3VsdFN0YXJ0VXJsKTtcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0aW9uKCkge1xuICAgIHRoaXMuc2VsZWN0ZWRNb2RlID0gVmlld01vZGUuQ1JFQVRJT047XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChEYXNoYm9hcmRBY3Rpb25zLnVwZGF0ZU1hbmlmZXN0KHsgbWFuaWZlc3Q6IHsgd2luZG93czogW10gfSwgc2VsZWN0ZWRJZHM6IFtdIH0pKTtcbiAgICBjb25zdCBuZXdQcmVzZW50YXRpb24gPSB7XG4gICAgICBwcmVzZW50YXRpb246IHtcbiAgICAgICAgaWQ6IHY0KCksXG4gICAgICAgIG5hbWU6ICcnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJycsXG4gICAgICAgIHZpc2liaWxpdHk6IHsgdHlwZTogUHJ5VmlzaWJpbGl0eVR5cGUuUFJJVkFURSB9LFxuICAgICAgICBvd25lcjogdHJ1ZVxuICAgICAgfSBhcyBNYW5pZmVzdERlc2NyaXB0aW9uLFxuICAgICAgdmlld01vZGU6IFZpZXdNb2RlLkNSRUFUSU9OXG4gICAgfTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKERhc2hib2FyZEFjdGlvbnMuc2VsZWN0UHJlc2VudGF0aW9uKG5ld1ByZXNlbnRhdGlvbikpO1xuICB9XG5cbiAgZWRpdChwcmVzZW50YXRpb246IE1hbmlmZXN0RGVzY3JpcHRpb24pIHtcbiAgICB0aGlzLnNlbGVjdGVkTW9kZSA9IFZpZXdNb2RlLkVESVRJT047XG4gICAgdGhpcy5zZWxlY3RlZFByZXNlbnRhdGlvbiA9IHByZXNlbnRhdGlvbjtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFxuICAgICAgRGFzaGJvYXJkQWN0aW9ucy5zZWxlY3RQcmVzZW50YXRpb24oeyBwcmVzZW50YXRpb246IHRoaXMuc2VsZWN0ZWRQcmVzZW50YXRpb24sIHZpZXdNb2RlOiBWaWV3TW9kZS5FRElUSU9OIH0pXG4gICAgKTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKERhc2hib2FyZEFjdGlvbnMuZmV0Y2hTdGF0aWNNYW5pZmVzdCh7IGlkOiBwcmVzZW50YXRpb24uaWQgfSkpO1xuICB9XG5cbiAgZGVsZXRlKGlkOiBzdHJpbmcpIHtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKERhc2hib2FyZEFjdGlvbnMuZGVsZXRlTWFuaWZlc3QoeyBpZCB9KSk7XG4gICAgdGhpcy5jb25maXJtUmVtb3ZlUmVmPy5kaXNwb3NlKCk7XG4gICAgdGhpcy5jb25maXJtUmVtb3ZlUmVmID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goQ29uZmlnQWN0aW9ucy5jbG9zZU92ZXJsYXkoeyBpZDogdGhpcy5jb25zdHJ1Y3Rvci5uYW1lICsgJy1tb2RhbCcgfSkpO1xuICB9XG5cbiAgZGVmYXVsdChpZDogc3RyaW5nLCBuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKERhc2hib2FyZEFjdGlvbnMuZGVmYXVsdE1hbmlmZXN0KHsgaWQsIG5hbWUgfSkpO1xuICB9XG5cbiAgdG9nZ2xlTW9kYWwocHJlc2VudGF0aW9uPzogTWFuaWZlc3REZXNjcmlwdGlvbiB8IG51bGwpIHtcbiAgICB0aGlzLm1vZGFsT3BlbmVkID0gIXRoaXMubW9kYWxPcGVuZWQ7XG4gICAgaWYgKHRoaXMubW9kYWxPcGVuZWQgJiYgcHJlc2VudGF0aW9uKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkUHJlc2VudGF0aW9uID0gcHJlc2VudGF0aW9uO1xuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChcbiAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy5zZWxlY3RQcmVzZW50YXRpb24oeyBwcmVzZW50YXRpb246IHRoaXMuc2VsZWN0ZWRQcmVzZW50YXRpb24sIHZpZXdNb2RlOiBWaWV3TW9kZS5DQVRBTE9HIH0pXG4gICAgICApO1xuICAgICAgLyogd2UgbmVlZCB0byBsb2FkIG1hbmlmZXN0IGluIG9yZGVyIHRvIGJlIGFibGUgdG8gc2F2ZSBpdCBsYXRlciAqL1xuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChEYXNoYm9hcmRBY3Rpb25zLmxvYWRNYW5pZmVzdCh7IGlkOiBwcmVzZW50YXRpb24uaWQgfSkpO1xuICAgICAgdGhpcy5vdmVybGF5UmVmID0gdGhpcy5vdmVybGF5LmNyZWF0ZShcbiAgICAgICAgbmV3IE92ZXJsYXlDb25maWcoe1xuICAgICAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxuICAgICAgICAgIHBhbmVsQ2xhc3M6IFsnby1tb2RhbC13cmFwcGVyJ10sXG4gICAgICAgICAgYmFja2Ryb3BDbGFzczogJ2JhY2tkcm9wJ1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgICAgIHRoaXMub3ZlcmxheVJlZi5iYWNrZHJvcENsaWNrKCkuc3Vic2NyaWJlKCgpID0+IHRoaXMudG9nZ2xlTW9kYWwocHJlc2VudGF0aW9uKSk7XG4gICAgICB0aGlzLm92ZXJsYXlSZWYuYXR0YWNoKG5ldyBUZW1wbGF0ZVBvcnRhbCh0aGlzLnRlbXBsYXRlLCB0aGlzLnZpZXdDb250YWluZXJSZWYpKTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBjb25zdCBmb2N1cyA9IHRoaXMudmlzaWJpbGl0eU1vZGFsLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW5bMF0uY2hpbGRyZW5bMV0uZmlyc3RFbGVtZW50Q2hpbGQgYXMgSFRNTEJ1dHRvbkVsZW1lbnQ7XG4gICAgICAgIGZvY3VzLmZvY3VzKCk7XG4gICAgICB9LCAxMCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub3ZlcmxheVJlZj8uZGlzcG9zZSgpO1xuICAgICAgdGhpcy5zZWxlY3RlZFByZXNlbnRhdGlvbiA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgY2hhbmdlVmlzaWJpbGl0eSgpIHtcbiAgICBpZiAodGhpcy5zZWxlY3RlZFByZXNlbnRhdGlvbikge1xuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChcbiAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy5zYXZlTWFuaWZlc3Qoe1xuICAgICAgICAgIGlkOiB0aGlzLnNlbGVjdGVkUHJlc2VudGF0aW9uLmlkID8/ICcnLFxuICAgICAgICAgIG5hbWU6IHRoaXMuc2VsZWN0ZWRQcmVzZW50YXRpb24ubmFtZSA/PyAnJyxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogdGhpcy5zZWxlY3RlZFByZXNlbnRhdGlvbi5kZXNjcmlwdGlvbiA/PyAnJyxcbiAgICAgICAgICBpbWFnZTogdGhpcy5zZWxlY3RlZFByZXNlbnRhdGlvbi5pbWFnZSA/PyAnJyxcbiAgICAgICAgICB2aXNpYmlsaXR5OiB0aGlzLnZpc2liaWxpdHlcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuICAgIHRoaXMudG9nZ2xlTW9kYWwodGhpcy5zZWxlY3RlZFByZXNlbnRhdGlvbik7XG4gIH1cblxuICB0b2dnbGVSZW1vdmVDb25maXJtKCRldmVudDogYW55LCBwcmVzZW50YXRpb24/OiBNYW5pZmVzdERlc2NyaXB0aW9uKSB7XG4gICAgaWYgKCF0aGlzLmNvbmZpcm1SZW1vdmVSZWYpIHtcbiAgICAgIHRoaXMucHJlc2VudGF0aW9uID0gcHJlc2VudGF0aW9uO1xuICAgICAgdGhpcy5jb25maXJtUmVtb3ZlUmVmID0gdGhpcy5vdmVybGF5LmNyZWF0ZShcbiAgICAgICAgbmV3IE92ZXJsYXlDb25maWcoe1xuICAgICAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxuICAgICAgICAgIHBhbmVsQ2xhc3M6IFsnby1tb2RhbC13cmFwcGVyJ10sXG4gICAgICAgICAgYmFja2Ryb3BDbGFzczogJ2JhY2tkcm9wJ1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goQ29uZmlnQWN0aW9ucy5hZGRpbmdPdmVybGF5KHsgaWQ6IHRoaXMuY29uc3RydWN0b3IubmFtZSArICctbW9kYWwnIH0pKTtcbiAgICAgIHRoaXMuY29uZmlybVJlbW92ZVJlZi5iYWNrZHJvcENsaWNrKCkuc3Vic2NyaWJlKCgpID0+IHRoaXMudG9nZ2xlUmVtb3ZlQ29uZmlybSgkZXZlbnQsIHByZXNlbnRhdGlvbikpO1xuICAgICAgdGhpcy5jb25maXJtUmVtb3ZlUmVmLmF0dGFjaChuZXcgVGVtcGxhdGVQb3J0YWwodGhpcy50ZW1wbGF0ZU1vZGFsLCB0aGlzLnZpZXdDb250YWluZXJSZWYpKTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBjb25zdCBmb2N1cyA9IHRoaXMuZGVsZXRlTW9kYWwubmF0aXZlRWxlbWVudC5jaGlsZHJlblswXS5jaGlsZHJlblsxXS5maXJzdEVsZW1lbnRDaGlsZCBhcyBIVE1MQnV0dG9uRWxlbWVudDtcbiAgICAgICAgZm9jdXMuZm9jdXMoKTtcbiAgICAgIH0sIDEwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jb25maXJtUmVtb3ZlUmVmLmRpc3Bvc2UoKTtcbiAgICAgIHRoaXMuY29uZmlybVJlbW92ZVJlZiA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goQ29uZmlnQWN0aW9ucy5jbG9zZU92ZXJsYXkoeyBpZDogdGhpcy5jb25zdHJ1Y3Rvci5uYW1lICsgJy1tb2RhbCcgfSkpO1xuICAgICAgdGhpcy5vcGVuTW9kYWwubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIGNhbmNlbFJlbW92ZUNvbmZpcm0oKSB7XG4gICAgdGhpcy5jb25maXJtUmVtb3ZlUmVmPy5kaXNwb3NlKCk7XG4gICAgdGhpcy5jb25maXJtUmVtb3ZlUmVmID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goQ29uZmlnQWN0aW9ucy5jbG9zZU92ZXJsYXkoeyBpZDogdGhpcy5jb25zdHJ1Y3Rvci5uYW1lICsgJy1tb2RhbCcgfSkpO1xuICB9XG5cbiAgZm9jdXNDcm9zc0VsZW1lbnQoKSB7XG4gICAgaWYgKHRoaXMuY3Jvc3NWaXNpYmlsaXR5KSB7XG4gICAgICB0aGlzLmNyb3NzVmlzaWJpbGl0eT8ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cbiAgICB0aGlzLmNyb3NzPy5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gIH1cblxuICBmb2N1c1ZhbGlkYXRpb24oKSB7XG4gICAgaWYgKHRoaXMuY29uZmlybSkge1xuICAgICAgdGhpcy5jb25maXJtLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG4gICAgdGhpcy5zdWJtaXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICB9XG59XG4iLCI8cHJ5LXByZXNlbnRhdGlvbi1jc3M+PC9wcnktcHJlc2VudGF0aW9uLWNzcz5cbjxkaXYgY2xhc3M9XCJvLW1hbmlmZXN0LWxheW91dFwiIFtuZ1N3aXRjaF09XCJzZWxlY3RlZE1vZGVcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiVmlld01vZGUuQ0FUQUxPR1wiPlxuICAgIDxkaXYgY2xhc3M9XCJvLW1hbmlmZXN0LWxheW91dF9fdG9vbGJveFwiPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBbcHJ5VG9vbHRpcF09XCJjcmVhdGVcIlxuICAgICAgICBjbGFzcz1cImEtYnRuIGEtYnRuLS1wcmltYXJ5IGEtYnRuLS1pY29uLXRleHRcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgKGNsaWNrKT1cImNyZWF0aW9uKClcIlxuICAgICAgICAqcHJ5QWNjZXNzPVwieyBtb2R1bGU6ICdkYXNoYm9hcmQnLCBwYWdlOiAnbWFuaWZlc3QnLCBhY3Rpb246ICdjcmVhdGUnIH1cIlxuICAgICAgPlxuICAgICAgICB7eyAnQHByeS5wcmVzZW50YXRpb24uY3JlYXRlJyB8IGkxOG4gfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGRpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImEtcHJlc2VudGF0aW9uX19zZWFyY2hcIj5cbiAgICAgICAgICA8bGFiZWwgaWQ9XCJjYXRhbG9nLXNlYXJjaC1sYWJlbFwiIGZvcj1cImNhdGFsb2ctc2VhcmNoXCIgY2xhc3M9XCJ1LXZpc3VhbGx5LWhpZGRlblwiPlxuICAgICAgICAgICAgPHNwYW4+e3sgJ0BwcnkudG9vbGJveC5jYXRhbG9nLmZpbHRlci5uYW1lJyB8IGkxOG4gfX08L3NwYW4+XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIGlkPVwiY2F0YWxvZy1zZWFyY2hcIlxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgY2xhc3M9XCJhLWZvcm0tZmllbGRcIlxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidAcHJ5LnByZXNlbnRhdGlvbi5zZWFyY2gnIHwgaTE4blwiXG4gICAgICAgICAgICBbbmdNb2RlbF09XCJzZWFyY2gkIHwgYXN5bmNcIlxuICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidGhpcy5zZWFyY2gkLm5leHQoJGV2ZW50KVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICA8cHJ5LWljb24gaWNvblN2Zz1cInNlYXJjaFwiIFt3aWR0aF09XCIxN1wiIFtoZWlnaHRdPVwiMTdcIj48L3ByeS1pY29uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJvLW1hbmlmZXN0LWxheW91dF9fY29udGVudFwiPlxuICAgICAgPGgxIGNsYXNzPVwiYS1oMVwiPnt7ICdAcHJ5Lm1hbmlmZXN0LnRpdGxlJyB8IGkxOG4gfX08L2gxPlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiby1wcmVzZW50YXRpb24td3JhcHBlclwiPlxuICAgICAgICA8dWwgY2xhc3M9XCJvLXByZXNlbnRhdGlvblwiPlxuICAgICAgICAgIDxsaSBjbGFzcz1cIm8tcHJlc2VudGF0aW9uX19pdGVtXCIgKm5nRm9yPVwibGV0IHByZXNlbnRhdGlvbiBvZiBmaWx0ZXJlZFByZXNlbnRhdGlvbnMkIHwgYXN5bmNcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvLXByZXNlbnRhdGlvbl9faXRlbV9faGVhZGVyXCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJwcmVzZW50YXRpb24udmlzaWJpbGl0eS50eXBlID09PSBQcnlWaXNpYmlsaXR5VHlwZS5QUklWQVRFXCI+XG4gICAgICAgICAgICAgICAgPHByeS1pY29uXG4gICAgICAgICAgICAgICAgICBbaWNvblN2Z109XCJwcmVzZW50YXRpb24udmlzaWJpbGl0eS50eXBlLnRvTG93ZXJDYXNlKClcIlxuICAgICAgICAgICAgICAgICAgW3ByeVRvb2x0aXBdPVwicHJpdmF0ZVwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImlzLXByaXZhdGVcIlxuICAgICAgICAgICAgICAgICAgW2hlaWdodF09XCIxN1wiXG4gICAgICAgICAgICAgICAgICBbd2lkdGhdPVwiMTdcIlxuICAgICAgICAgICAgICAgID48L3ByeS1pY29uPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgYWx0PVwiXCJcbiAgICAgICAgICAgICAgICBbaGVpZ2h0XT1cInByZXNlbnRhdGlvbi5jb3ZlciA/IDYwMCA6IDEyOFwiXG4gICAgICAgICAgICAgICAgW3dpZHRoXT1cInByZXNlbnRhdGlvbi5jb3ZlciA/IDYwMCA6IDEyOFwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmlzLWZ1bGwtd2lkdGhdPVwicHJlc2VudGF0aW9uLmNvdmVyXCJcbiAgICAgICAgICAgICAgICBbc3JjXT1cInByZXNlbnRhdGlvbi5pbWFnZSB8IGdldFNlY3VyZWRJbWFnZSB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZmV0Y2gocHJlc2VudGF0aW9uKVwiXG4gICAgICAgICAgICAgICAgW3ByeVRvb2x0aXBdPVwidmlld1wiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm8tcHJlc2VudGF0aW9uX19pdGVtX190eHRcIj5cbiAgICAgICAgICAgICAgPGgzIGNsYXNzPVwiYS1oM1wiPnt7IHByZXNlbnRhdGlvbi5uYW1lIH19PC9oMz5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImEtcFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZXNjcmlwdGlvbi1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGVzY3JpcHRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAge3sgcHJlc2VudGF0aW9uLmRlc2NyaXB0aW9uIH19XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGVzY3JpcHRpb24tdG9vbHRpcFwiPnt7IHByZXNlbnRhdGlvbi5kZXNjcmlwdGlvbiB9fTwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPHAgY2xhc3M9XCJhLXAgLWRhdGVcIj57eyBwcmVzZW50YXRpb24ubW9kaWZpY2F0aW9uRGF0ZSB8IHNpbmNlRGF0ZSB9fTwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiby1wcmVzZW50YXRpb25fX2l0ZW1fX2Zvb3RlclwiPlxuICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJtLWFjdGlvbnMtbGlzdFwiPlxuICAgICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYS1idG4gYS1idG4tLWljb24tb25seVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkZWZhdWx0KHByZXNlbnRhdGlvbi5pZCwgcHJlc2VudGF0aW9uLm5hbWUpXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPHByeS1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgW2ljb25TdmddPVwicHJlc2VudGF0aW9uLmRlZmF1bHQgPyAnaG9tZS1maWxsJyA6ICdob21lLWxpbmUnXCJcbiAgICAgICAgICAgICAgICAgICAgICBbcHJ5VG9vbHRpcF09XCJob21lVmlld1wiXG4gICAgICAgICAgICAgICAgICAgID48L3ByeS1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInUtdmlzdWFsbHktaGlkZGVuXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYS1idG4gYS1idG4tLWljb24tb25seVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJlZGl0KHByZXNlbnRhdGlvbilcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwicHJlc2VudGF0aW9uLm93bmVyID09PSBmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICpwcnlBY2Nlc3M9XCJ7IG1vZHVsZTogJ2Rhc2hib2FyZCcsIHBhZ2U6ICdtYW5pZmVzdCcsIGFjdGlvbjogJ2VkaXQnIH1cIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8cHJ5LWljb24gaWNvblN2Zz1cImVkaXRcIiBbcHJ5VG9vbHRpcF09XCJjaGFuZ2VcIj48L3ByeS1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInUtdmlzdWFsbHktaGlkZGVuXCI+e3sgJ0BwcnkucHJlc2VudGF0aW9uLmVkaXRpb24nIHwgaTE4biB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlTW9kYWwocHJlc2VudGF0aW9uKVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYS1idG4gYS1idG4tLWljb24tb25seVwiXG4gICAgICAgICAgICAgICAgICAgIGFyaWEtaGFzcG9wdXA9XCJkaWFsb2dcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwicHJlc2VudGF0aW9uLm93bmVyID09PSBmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICpwcnlBY2Nlc3M9XCJ7IG1vZHVsZTogJ2Rhc2hib2FyZCcsIHBhZ2U6ICdtYW5pZmVzdCcsIGFjdGlvbjogJ3NoYXJlJyB9XCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPHByeS1pY29uIGljb25Tdmc9XCJzaGFyZVwiIFtwcnlUb29sdGlwXT1cInNoYXJlXCI+PC9wcnktaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1LXZpc3VhbGx5LWhpZGRlblwiPnt7ICdAcHJ5LnByZXNlbnRhdGlvbi5zaGFyZScgfCBpMThuIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYS1idG4gYS1idG4tLWljb24tb25seVwiXG4gICAgICAgICAgICAgICAgICAgICNvcGVuTW9kYWxcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVJlbW92ZUNvbmZpcm0oJGV2ZW50LCBwcmVzZW50YXRpb24pXCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInByZXNlbnRhdGlvbi5vd25lciA9PT0gZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAqcHJ5QWNjZXNzPVwieyBtb2R1bGU6ICdkYXNoYm9hcmQnLCBwYWdlOiAnbWFuaWZlc3QnLCBhY3Rpb246ICdkZWxldGUnIH1cIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8cHJ5LWljb24gaWNvblN2Zz1cImRlbGV0ZVwiIFtwcnlUb29sdGlwXT1cImVyYXNlXCI+PC9wcnktaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1LXZpc3VhbGx5LWhpZGRlblwiPnt7ICdAcHJ5LnByZXNlbnRhdGlvbi5kZWxldGUnIHwgaTE4biB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2xpPlxuICAgICAgICA8L3VsPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJWaWV3TW9kZS5DUkVBVElPTlwiPlxuICAgIDxwcnktYWRkLWVkaXQtcHJlc2VudGF0aW9uXG4gICAgICBbc2VsZWN0ZWRQcmVzZW50YXRpb25dPVwic2VsZWN0ZWRQcmVzZW50YXRpb24hXCJcbiAgICAgIChnb0JhY2spPVwiY2xvc2VSZXN0aXR1dGlvbigpXCJcbiAgICAgIFtlZGl0aW9uU3RhcnRVcmxdPVwiZWRpdGlvblN0YXJ0VXJsXCJcbiAgICAgIFtlZGl0aW9uXT1cImZhbHNlXCJcbiAgICA+PC9wcnktYWRkLWVkaXQtcHJlc2VudGF0aW9uPlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiVmlld01vZGUuRURJVElPTlwiPlxuICAgIDxwcnktYWRkLWVkaXQtcHJlc2VudGF0aW9uXG4gICAgICBbc2VsZWN0ZWRQcmVzZW50YXRpb25dPVwic2VsZWN0ZWRQcmVzZW50YXRpb24hXCJcbiAgICAgIChnb0JhY2spPVwiY2xvc2VSZXN0aXR1dGlvbigpXCJcbiAgICAgIFtlZGl0aW9uU3RhcnRVcmxdPVwiZWRpdGlvblN0YXJ0VXJsXCJcbiAgICAgIFtlZGl0aW9uXT1cInRydWVcIlxuICAgID48L3ByeS1hZGQtZWRpdC1wcmVzZW50YXRpb24+XG4gIDwvbmctY29udGFpbmVyPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjbW9kYWw+XG4gIDxkaXZcbiAgICBjbGFzcz1cIm8tbW9kYWxcIlxuICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICN2aXNpYmlsaXR5TW9kYWxcbiAgICByb2xlPVwiZGlhbG9nXCJcbiAgICBhcmlhLW1vZGFsPVwidHJ1ZVwiXG4gICAgYXJpYS1sYWJlbGxlZGJ5PVwiZGlhbG9nIGNoYW5nZSB2aXNpYmlsaXR5XCJcbiAgICAqbmdJZj1cInNlbGVjdGVkUHJlc2VudGF0aW9uXCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJvLW1vZGFsX190b3BcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJvLW1vZGFsX190b3BfX3RpdGxlXCI+XG4gICAgICAgIDxoMiBjbGFzcz1cImEtaDJcIiBpZD1cImRpYWxvZ190aXRsZVwiPnt7ICdAcHJ5LnRvb2xib3gucmVuYW1lJyB8IGkxOG4gfX08L2gyPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiby1tb2RhbF9fdG9wX19jbG9zZVwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJhLWJ0biBhLWJ0bi0taWNvbi1vbmx5XCJcbiAgICAgICAgICAjY3Jvc3NWaXNpYmlsaXR5XG4gICAgICAgICAgKGtleWRvd24uc2hpZnQudGFiKT1cImZvY3VzVmFsaWRhdGlvbigpXCJcbiAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlTW9kYWwoKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8cHJ5LWljb24gaWNvblN2Zz1cImNsb3NlXCIgW2hlaWdodF09XCIzNVwiIFt3aWR0aF09XCIzNVwiPjwvcHJ5LWljb24+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1LXZpc3VhbGx5LWhpZGRlblwiPnt7ICdAcHJ5LnRvb2xib3guY2xvc2UnIHwgaTE4biB9fTwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8cHJ5LXNoYXJlIFtuZ01vZGVsXT1cInNlbGVjdGVkUHJlc2VudGF0aW9uLnZpc2liaWxpdHlcIiAobmdNb2RlbENoYW5nZSk9XCJ2aXNpYmlsaXR5ID0gJGV2ZW50XCI+PC9wcnktc2hhcmU+XG4gICAgPGRpdiBjbGFzcz1cIm0tYnRuLWdyb3VwXCI+XG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImEtYnRuIGEtYnRuLS1zZWNvbmRhcnlcIiAoY2xpY2spPVwidG9nZ2xlTW9kYWwoKVwiPlxuICAgICAgICB7eyAnQHByeS50b29sYm94Lm1hbmlmZXN0LmNsb3NlJyB8IGkxOG4gfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgY2xhc3M9XCJhLWJ0biBhLWJ0bi0tcHJpbWFyeVwiXG4gICAgICAgICNzdWJtaXRcbiAgICAgICAgKGtleWRvd24udGFiKT1cImZvY3VzQ3Jvc3NFbGVtZW50KClcIlxuICAgICAgICAoY2xpY2spPVwiY2hhbmdlVmlzaWJpbGl0eSgpXCJcbiAgICAgID5cbiAgICAgICAge3sgJ0BwcnkudG9vbGJveC5tYW5pZmVzdC5jaGVjaycgfCBpMThuIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3RlbXBsYXRlTW9kYWw+XG4gIDxkaXZcbiAgICBjbGFzcz1cIm8tbW9kYWxcIlxuICAgICpuZ0lmPVwicHJlc2VudGF0aW9uXCJcbiAgICAoa2V5ZG93bi5lc2NhcGUpPVwidG9nZ2xlUmVtb3ZlQ29uZmlybSgkZXZlbnQsIHByZXNlbnRhdGlvbilcIlxuICAgICNkZWxldGVNb2RhbFxuICAgIHJvbGU9XCJkaWFsb2dcIlxuICAgIGFyaWEtbW9kYWw9XCJ0cnVlXCJcbiAgICBhcmlhLWxhYmVsbGVkYnk9XCJkaWFsb2cgY29uZmlybSBkZWxldGUgcHJlc2VudGF0aW9uXCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJvLW1vZGFsX190b3BcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJvLW1vZGFsX190b3BfX3RpdGxlXCI+XG4gICAgICAgIDxoMiBjbGFzcz1cImEtaDJcIj5cbiAgICAgICAgICB7eyAnQHByeS53aWRnZXQubW9kYWxUaXRsZScgfCBpMThuIH19XG4gICAgICAgIDwvaDI+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJvLW1vZGFsX190b3BfX2Nsb3NlXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzcz1cImEtYnRuIGEtYnRuLS1pY29uLW9ubHlcIlxuICAgICAgICAgICNjcm9zc1xuICAgICAgICAgIChrZXlkb3duLnNoaWZ0LnRhYik9XCJmb2N1c1ZhbGlkYXRpb24oKVwiXG4gICAgICAgICAgKGNsaWNrKT1cImNhbmNlbFJlbW92ZUNvbmZpcm0oKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8cHJ5LWljb24gaWNvblN2Zz1cImNsb3NlXCIgW2hlaWdodF09XCIzNVwiIFt3aWR0aF09XCIzNVwiPjwvcHJ5LWljb24+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1LXZpc3VhbGx5LWhpZGRlblwiPnt7ICdAcHJ5LnRvb2xib3guY2xvc2UnIHwgaTE4biB9fTwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibS1idG4tZ3JvdXBcIj5cbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiICNjYW5jZWxSZW1vdmUgKGNsaWNrKT1cImNhbmNlbFJlbW92ZUNvbmZpcm0oKVwiIGNsYXNzPVwiYS1idG4gYS1idG4tLXNlY29uZGFyeVwiPlxuICAgICAgICB7eyAnQHByeS50b29sYm94Lm1hbmlmZXN0LmNsb3NlJyB8IGkxOG4gfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgY2xhc3M9XCJhLWJ0biBhLWJ0bi0tcHJpbWFyeVwiXG4gICAgICAgICNjb25maXJtXG4gICAgICAgIChjbGljayk9XCJkZWxldGUocHJlc2VudGF0aW9uLmlkKVwiXG4gICAgICAgIChrZXlkb3duLnRhYik9XCJmb2N1c0Nyb3NzRWxlbWVudCgpXCJcbiAgICAgID5cbiAgICAgICAge3sgJ0BwcnkudG9vbGJveC5tYW5pZmVzdC52YWxpZGF0ZScgfCBpMThuIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2NyZWF0ZT5cbiAgPGRpdiBjbGFzcz1cIm0tdG9vbHRpcFwiIHJvbGU9XCJ0b29sdGlwXCI+XG4gICAgPHNwYW4gY2xhc3M9XCJtLXRvb2x0aXBfX3RleHRcIj57eyAnQHByeS5wcmVzZW50YXRpb24uY3JlYXRlJyB8IGkxOG4gfX08L3NwYW4+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICN2aWV3PlxuICA8ZGl2IGNsYXNzPVwibS10b29sdGlwXCIgcm9sZT1cInRvb2x0aXBcIj5cbiAgICA8c3BhbiBjbGFzcz1cIm0tdG9vbHRpcF9fdGV4dFwiPnt7ICdAcHJ5LnByZXNlbnRhdGlvbi52aWV3JyB8IGkxOG4gfX08L3NwYW4+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNwcml2YXRlPlxuICA8ZGl2IGNsYXNzPVwibS10b29sdGlwXCIgcm9sZT1cInRvb2x0aXBcIj5cbiAgICA8c3BhbiBjbGFzcz1cIm0tdG9vbHRpcF9fdGV4dFwiPnt7ICdAcHJ5LnByZXNlbnRhdGlvbi5wcml2YXRlJyB8IGkxOG4gfX08L3NwYW4+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNob21lVmlldz5cbiAgPGRpdiBjbGFzcz1cIm0tdG9vbHRpcFwiIHJvbGU9XCJ0b29sdGlwXCI+XG4gICAgPHNwYW4gY2xhc3M9XCJtLXRvb2x0aXBfX3RleHRcIj57eyAnQHByeS5wcmVzZW50YXRpb24uaG9tZVZpZXcnIHwgaTE4biB9fTwvc3Bhbj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3NoYXJlPlxuICA8ZGl2IGNsYXNzPVwibS10b29sdGlwXCIgcm9sZT1cInRvb2x0aXBcIj5cbiAgICA8c3BhbiBjbGFzcz1cIm0tdG9vbHRpcF9fdGV4dFwiPnt7ICdAcHJ5LnByZXNlbnRhdGlvbi5zaGFyZScgfCBpMThuIH19PC9zcGFuPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZXJhc2U+XG4gIDxkaXYgY2xhc3M9XCJtLXRvb2x0aXBcIiByb2xlPVwidG9vbHRpcFwiPlxuICAgIDxzcGFuIGNsYXNzPVwibS10b29sdGlwX190ZXh0XCI+e3sgJ0BwcnkucHJlc2VudGF0aW9uLmVyYXNlJyB8IGkxOG4gfX08L3NwYW4+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNjaGFuZ2U+XG4gIDxkaXYgY2xhc3M9XCJtLXRvb2x0aXBcIiByb2xlPVwidG9vbHRpcFwiPlxuICAgIDxzcGFuIGNsYXNzPVwibS10b29sdGlwX190ZXh0XCI+e3sgJ0BwcnkucHJlc2VudGF0aW9uLmNoYW5nZScgfCBpMThuIH19PC9zcGFuPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI2JhY2tUb0NhdGFsb2c+XG4gIDxkaXYgY2xhc3M9XCJtLXRvb2x0aXBcIiByb2xlPVwidG9vbHRpcFwiPlxuICAgIDxzcGFuIGNsYXNzPVwibS10b29sdGlwX190ZXh0XCI+e3sgJ0BwcnkucHJlc2VudGF0aW9uLmJhY2tUb0NhdGFsb2cnIHwgaTE4biB9fTwvc3Bhbj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
233
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlc2VudGF0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL3ByZXNlbnRhdGlvbi9jb21wb25lbnRzL3ByZXNlbnRhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9wcmVzZW50YXRpb24vY29tcG9uZW50cy9wcmVzZW50YXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFXLGFBQWEsRUFBYyxNQUFNLHNCQUFzQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsU0FBUyxFQUFjLEtBQUssRUFBVSxXQUFXLEVBQUUsU0FBUyxFQUFvQixNQUFNLGVBQWUsQ0FBQztBQUcvRyxPQUFPLEVBQ0wsYUFBYSxFQUNiLGdCQUFnQixFQUVoQixrQkFBa0IsRUFJbEIsaUJBQWlCLEVBQ2pCLHdCQUF3QixFQUN4QixRQUFRLEVBQ1QsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsR0FBRyxFQUFjLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzRixPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7OztBQU0xQixNQUFNLE9BQU8sd0JBQXlCLFNBQVEsd0JBQXdCO0lBNEJwRSxZQUNZLEtBQWlCLEVBQ2pCLE9BQWdCLEVBQ2hCLGdCQUFrQyxFQUNsQyxNQUFjLEVBQ2QsTUFBYztRQUV4QixLQUFLLEVBQUUsQ0FBQztRQU5FLFVBQUssR0FBTCxLQUFLLENBQVk7UUFDakIsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQUNoQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLFdB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dCI6WyJpbXBvcnQgeyBPdmVybGF5LCBPdmVybGF5Q29uZmlnLCBPdmVybGF5UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgVGVtcGxhdGVQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIE5nWm9uZSwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHtcbiAgQ29uZmlnQWN0aW9ucyxcbiAgRGFzaGJvYXJkQWN0aW9ucyxcbiAgRGFzaGJvYXJkTWFuaWZlc3QsXG4gIERhc2hib2FyZFNlbGVjdG9ycyxcbiAgR2xvYmFsTWFuaWZlc3QsXG4gIE1hbmlmZXN0RGVzY3JpcHRpb24sXG4gIFByeVZpc2liaWxpdHksXG4gIFByeVZpc2liaWxpdHlUeXBlLFxuICBTdWJzY3JpcHRpb25uZXJEaXJlY3RpdmUsXG4gIFZpZXdNb2RlXG59IGZyb20gJ0Bwcm92b2x5L2Rhc2hib2FyZCc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIGRlYm91bmNlVGltZSwgbWFwLCBPYnNlcnZhYmxlLCB0YWtlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB2NCB9IGZyb20gJ3V1aWQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwcnktcHJlc2VudGF0aW9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3ByZXNlbnRhdGlvbi5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgUHJ5UHJlc2VudGF0aW9uQ29tcG9uZW50IGV4dGVuZHMgU3Vic2NyaXB0aW9ubmVyRGlyZWN0aXZlIHtcbiAgbWFuaWZlc3RzJDogT2JzZXJ2YWJsZTxNYW5pZmVzdERlc2NyaXB0aW9uW10+O1xuICBzZWxlY3RlZFByZXNlbnRhdGlvbjogTWFuaWZlc3REZXNjcmlwdGlvbiB8IG51bGwgPSBudWxsO1xuICBwcmVzZW50YXRpb24/OiBNYW5pZmVzdERlc2NyaXB0aW9uO1xuICBzdGF0aWNNYW5pZmVzdCQ/OiBPYnNlcnZhYmxlPERhc2hib2FyZE1hbmlmZXN0PjtcbiAgc2VsZWN0ZWRNb2RlOiBWaWV3TW9kZSA9IFZpZXdNb2RlLkNBVEFMT0c7XG4gIG1vZGFsT3BlbmVkID0gZmFsc2U7XG4gIEBWaWV3Q2hpbGQoJ21vZGFsJywgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KSB0ZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPGFueT47XG4gIEBWaWV3Q2hpbGQoJ3RlbXBsYXRlTW9kYWwnLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pIHRlbXBsYXRlTW9kYWwhOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBAVmlld0NoaWxkKCdvcGVuTW9kYWwnKSBvcGVuTW9kYWwhOiBFbGVtZW50UmVmPEhUTUxCdXR0b25FbGVtZW50PjtcbiAgQFZpZXdDaGlsZCgnY2FuY2VsUmVtb3ZlJykgY2FuY2VsUmVtb3ZlITogRWxlbWVudFJlZjxIVE1MQnV0dG9uRWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoJ2NvbmZpcm0nKSBjb25maXJtITogRWxlbWVudFJlZjxIVE1MQnV0dG9uRWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoJ3N1Ym1pdCcpIHN1Ym1pdCE6IEVsZW1lbnRSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKCdjcm9zcycpIGNyb3NzITogRWxlbWVudFJlZjxIVE1MQnV0dG9uRWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoJ2Nyb3NzVmlzaWJpbGl0eScpIGNyb3NzVmlzaWJpbGl0eSE6IEVsZW1lbnRSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKCd2aXNpYmlsaXR5TW9kYWwnKSB2aXNpYmlsaXR5TW9kYWwhOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdkZWxldGVNb2RhbCcpIGRlbGV0ZU1vZGFsITogRWxlbWVudFJlZjtcbiAgcHJpdmF0ZSBjb25maXJtUmVtb3ZlUmVmPzogT3ZlcmxheVJlZjtcbiAgb3ZlcmxheVJlZj86IE92ZXJsYXlSZWY7XG4gIHZpc2liaWxpdHk6IFByeVZpc2liaWxpdHkgPSB7IHR5cGU6IFByeVZpc2liaWxpdHlUeXBlLlBSSVZBVEUgfTtcbiAgUHJ5VmlzaWJpbGl0eVR5cGUgPSBQcnlWaXNpYmlsaXR5VHlwZTtcbiAgQElucHV0KCkgZWRpdGlvblN0YXJ0VXJsOiBzdHJpbmcgPSAnLyc7XG4gIEBJbnB1dCgpIGNvbnN1bHRTdGFydFVybDogc3RyaW5nID0gJy8nO1xuICBASW5wdXQoKSBtZUFzT3duZXI/OiBzdHJpbmc7XG4gIFZpZXdNb2RlID0gVmlld01vZGU7XG4gIHNlYXJjaCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KCcnKTtcbiAgZmlsdGVyZWRQcmVzZW50YXRpb25zJDogT2JzZXJ2YWJsZTxNYW5pZmVzdERlc2NyaXB0aW9uW10+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBzdG9yZTogU3RvcmU8YW55PixcbiAgICBwcm90ZWN0ZWQgb3ZlcmxheTogT3ZlcmxheSxcbiAgICBwcm90ZWN0ZWQgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgICBwcm90ZWN0ZWQgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJvdGVjdGVkIG5nWm9uZTogTmdab25lXG4gICkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChEYXNoYm9hcmRBY3Rpb25zLmZldGNoTWFuaWZlc3RzTGlzdCgpKTtcbiAgICB0aGlzLm1hbmlmZXN0cyQgPSB0aGlzLnN0b3JlXG4gICAgICAuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5tYW5pZmVzdHNMaXN0KVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgobWFuaWZlc3RMaXN0KSA9PlxuICAgICAgICAgIFsuLi5tYW5pZmVzdExpc3RdLnNvcnQoKGEsIGIpID0+XG4gICAgICAgICAgICBhLm1vZGlmaWNhdGlvbkRhdGUgPyBiLm1vZGlmaWNhdGlvbkRhdGUubG9jYWxlQ29tcGFyZShhLm1vZGlmaWNhdGlvbkRhdGUpIDogMVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB0aGlzLnN0YXRpY01hbmlmZXN0JCA9IHRoaXMuc3RvcmVcbiAgICAgIC5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnN0YXRpY01hbmlmZXN0KVxuICAgICAgLnBpcGUobWFwKChzdGF0aWNNKSA9PiBzdGF0aWNNLndpbmRvd3NbMF0pKTtcbiAgICB0aGlzLmZpbHRlcmVkUHJlc2VudGF0aW9ucyQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLm1hbmlmZXN0cyQsIHRoaXMuc2VhcmNoJF0pLnBpcGUoXG4gICAgICBtYXAoKFtwcmVzZW50YXRpb25zLCBzZWFyY2hdKSA9PlxuICAgICAgICBwcmVzZW50YXRpb25zLmZpbHRlcihcbiAgICAgICAgICAocHJlc2VudGF0aW9ucykgPT5cbiAgICAgICAgICAgIHNlYXJjaC5sZW5ndGggPT09IDAgfHxcbiAgICAgICAgICAgIHByZXNlbnRhdGlvbnMuZGVzY3JpcHRpb24udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2gudG9Mb3dlckNhc2UoKSkgfHxcbiAgICAgICAgICAgIHByZXNlbnRhdGlvbnMubmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaC50b0xvd2VyQ2FzZSgpKVxuICAgICAgICApXG4gICAgICApXG4gICAgKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnByZXNlbnRhdGlvbikuc3Vic2NyaWJlKChwcmVzZW50YXRpb24pID0+IHtcbiAgICAgICAgaWYgKCEhcHJlc2VudGF0aW9uLmN1cnJlbnQpIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkUHJlc2VudGF0aW9uID0gcHJlc2VudGF0aW9uLmN1cnJlbnQgPz8gbnVsbDtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkTW9kZSA9IHByZXNlbnRhdGlvbj8udmlld01vZGUgPz8gdGhpcy5WaWV3TW9kZS5DQVRBTE9HO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBjbG9zZVJlc3RpdHV0aW9uKCkge1xuICAgIHRoaXMuc2VsZWN0ZWRQcmVzZW50YXRpb24gPSBudWxsO1xuICAgIHRoaXMuc2VsZWN0ZWRNb2RlID0gVmlld01vZGUuQ0FUQUxPRztcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKERhc2hib2FyZEFjdGlvbnMuc2VsZWN0UHJlc2VudGF0aW9uKHsgcHJlc2VudGF0aW9uOiB1bmRlZmluZWQsIHZpZXdNb2RlOiBWaWV3TW9kZS5DQVRBTE9HIH0pKTtcbiAgfVxuXG4gIGZldGNoKHByZXNlbnRhdGlvbjogTWFuaWZlc3REZXNjcmlwdGlvbikge1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goXG4gICAgICBEYXNoYm9hcmRBY3Rpb25zLnVwZGF0ZU1hbmlmZXN0KHtcbiAgICAgICAgbWFuaWZlc3Q6IHsgd2luZG93czogW10gfSxcbiAgICAgICAgc2VsZWN0ZWRJZHM6IFtdXG4gICAgICB9KVxuICAgICk7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChcbiAgICAgIERhc2hib2FyZEFjdGlvbnMuc2VsZWN0UHJlc2VudGF0aW9uKHtcbiAgICAgICAgcHJlc2VudGF0aW9uOiBwcmVzZW50YXRpb24sXG4gICAgICAgIHZpZXdNb2RlOiBWaWV3TW9kZS5DQVRBTE9HXG4gICAgICB9KVxuICAgICk7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChEYXNoYm9hcmRBY3Rpb25zLmZldGNoU3RhdGljTWFuaWZlc3QoeyBpZDogcHJlc2VudGF0aW9uLmlkIH0pKTtcbiAgICB0aGlzLnN0b3JlXG4gICAgICAuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5zdGF0aWNNYW5pZmVzdClcbiAgICAgIC5waXBlKGRlYm91bmNlVGltZSgxMDAwKSwgdGFrZSgxKSlcbiAgICAgIC5zdWJzY3JpYmUoKHN0YXRpY01hbmlmZXN0OiBHbG9iYWxNYW5pZmVzdCkgPT4ge1xuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFxuICAgICAgICAgIERhc2hib2FyZEFjdGlvbnMudXBkYXRlTWFuaWZlc3Qoe1xuICAgICAgICAgICAgbWFuaWZlc3Q6IHN0YXRpY01hbmlmZXN0LFxuICAgICAgICAgICAgc2VsZWN0ZWRJZHM6IFtdLFxuICAgICAgICAgICAgbWFuaWZlc3RJZDogcHJlc2VudGF0aW9uLmlkXG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChcbiAgICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLnNldEluaXRpYWxQcmVzZW50YXRpb24oe1xuICAgICAgICAgICAgaW5pdGlhbDogc3RhdGljTWFuaWZlc3RcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChEYXNoYm9hcmRBY3Rpb25zLmZvbGxvd01hbmlmZXN0Um91dGUoKSk7XG4gICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgIHRoaXMucm91dGVyPy5uYXZpZ2F0ZUJ5VXJsKHRoaXMuY29uc3VsdFN0YXJ0VXJsKTtcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0aW9uKCkge1xuICAgIHRoaXMuc2VsZWN0ZWRNb2RlID0gVmlld01vZGUuQ1JFQVRJT047XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChEYXNoYm9hcmRBY3Rpb25zLnVwZGF0ZU1hbmlmZXN0KHsgbWFuaWZlc3Q6IHsgd2luZG93czogW10gfSwgc2VsZWN0ZWRJZHM6IFtdIH0pKTtcbiAgICBjb25zdCBuZXdQcmVzZW50YXRpb24gPSB7XG4gICAgICBwcmVzZW50YXRpb246IHtcbiAgICAgICAgaWQ6IHY0KCksXG4gICAgICAgIG5hbWU6ICcnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJycsXG4gICAgICAgIHZpc2liaWxpdHk6IHsgdHlwZTogUHJ5VmlzaWJpbGl0eVR5cGUuUFJJVkFURSB9LFxuICAgICAgICBvd25lcjogdHJ1ZVxuICAgICAgfSBhcyBNYW5pZmVzdERlc2NyaXB0aW9uLFxuICAgICAgdmlld01vZGU6IFZpZXdNb2RlLkNSRUFUSU9OXG4gICAgfTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKERhc2hib2FyZEFjdGlvbnMuc2VsZWN0UHJlc2VudGF0aW9uKG5ld1ByZXNlbnRhdGlvbikpO1xuICB9XG5cbiAgZWRpdChwcmVzZW50YXRpb246IE1hbmlmZXN0RGVzY3JpcHRpb24pIHtcbiAgICB0aGlzLnNlbGVjdGVkTW9kZSA9IFZpZXdNb2RlLkVESVRJT047XG4gICAgdGhpcy5zZWxlY3RlZFByZXNlbnRhdGlvbiA9IHByZXNlbnRhdGlvbjtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFxuICAgICAgRGFzaGJvYXJkQWN0aW9ucy5zZWxlY3RQcmVzZW50YXRpb24oeyBwcmVzZW50YXRpb246IHRoaXMuc2VsZWN0ZWRQcmVzZW50YXRpb24sIHZpZXdNb2RlOiBWaWV3TW9kZS5FRElUSU9OIH0pXG4gICAgKTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKERhc2hib2FyZEFjdGlvbnMuZmV0Y2hTdGF0aWNNYW5pZmVzdCh7IGlkOiBwcmVzZW50YXRpb24uaWQgfSkpO1xuICB9XG5cbiAgZGVsZXRlKGlkOiBzdHJpbmcpIHtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKERhc2hib2FyZEFjdGlvbnMuZGVsZXRlTWFuaWZlc3QoeyBpZCB9KSk7XG4gICAgdGhpcy5jb25maXJtUmVtb3ZlUmVmPy5kaXNwb3NlKCk7XG4gICAgdGhpcy5jb25maXJtUmVtb3ZlUmVmID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goQ29uZmlnQWN0aW9ucy5jbG9zZU92ZXJsYXkoeyBpZDogdGhpcy5jb25zdHJ1Y3Rvci5uYW1lICsgJy1tb2RhbCcgfSkpO1xuICB9XG5cbiAgZGVmYXVsdChpZDogc3RyaW5nLCBuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKERhc2hib2FyZEFjdGlvbnMuZGVmYXVsdE1hbmlmZXN0KHsgaWQsIG5hbWUgfSkpO1xuICB9XG5cbiAgdG9nZ2xlTW9kYWwocHJlc2VudGF0aW9uPzogTWFuaWZlc3REZXNjcmlwdGlvbiB8IG51bGwpIHtcbiAgICB0aGlzLm1vZGFsT3BlbmVkID0gIXRoaXMubW9kYWxPcGVuZWQ7XG4gICAgaWYgKHRoaXMubW9kYWxPcGVuZWQgJiYgcHJlc2VudGF0aW9uKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkUHJlc2VudGF0aW9uID0gcHJlc2VudGF0aW9uO1xuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChcbiAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy5zZWxlY3RQcmVzZW50YXRpb24oeyBwcmVzZW50YXRpb246IHRoaXMuc2VsZWN0ZWRQcmVzZW50YXRpb24sIHZpZXdNb2RlOiBWaWV3TW9kZS5DQVRBTE9HIH0pXG4gICAgICApO1xuICAgICAgLyogd2UgbmVlZCB0byBsb2FkIG1hbmlmZXN0IGluIG9yZGVyIHRvIGJlIGFibGUgdG8gc2F2ZSBpdCBsYXRlciAqL1xuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChEYXNoYm9hcmRBY3Rpb25zLmxvYWRNYW5pZmVzdCh7IGlkOiBwcmVzZW50YXRpb24uaWQgfSkpO1xuICAgICAgdGhpcy5vdmVybGF5UmVmID0gdGhpcy5vdmVybGF5LmNyZWF0ZShcbiAgICAgICAgbmV3IE92ZXJsYXlDb25maWcoe1xuICAgICAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxuICAgICAgICAgIHBhbmVsQ2xhc3M6IFsnby1tb2RhbC13cmFwcGVyJ10sXG4gICAgICAgICAgYmFja2Ryb3BDbGFzczogJ2JhY2tkcm9wJ1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgICAgIHRoaXMub3ZlcmxheVJlZi5iYWNrZHJvcENsaWNrKCkuc3Vic2NyaWJlKCgpID0+IHRoaXMudG9nZ2xlTW9kYWwocHJlc2VudGF0aW9uKSk7XG4gICAgICB0aGlzLm92ZXJsYXlSZWYuYXR0YWNoKG5ldyBUZW1wbGF0ZVBvcnRhbCh0aGlzLnRlbXBsYXRlLCB0aGlzLnZpZXdDb250YWluZXJSZWYpKTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBjb25zdCBmb2N1cyA9IHRoaXMudmlzaWJpbGl0eU1vZGFsLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW5bMF0uY2hpbGRyZW5bMV0uZmlyc3RFbGVtZW50Q2hpbGQgYXMgSFRNTEJ1dHRvbkVsZW1lbnQ7XG4gICAgICAgIGZvY3VzLmZvY3VzKCk7XG4gICAgICB9LCAxMCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub3ZlcmxheVJlZj8uZGlzcG9zZSgpO1xuICAgICAgdGhpcy5zZWxlY3RlZFByZXNlbnRhdGlvbiA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgY2hhbmdlVmlzaWJpbGl0eSgpIHtcbiAgICBpZiAodGhpcy5zZWxlY3RlZFByZXNlbnRhdGlvbikge1xuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChcbiAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy5zYXZlTWFuaWZlc3Qoe1xuICAgICAgICAgIGlkOiB0aGlzLnNlbGVjdGVkUHJlc2VudGF0aW9uLmlkID8/ICcnLFxuICAgICAgICAgIG5hbWU6IHRoaXMuc2VsZWN0ZWRQcmVzZW50YXRpb24ubmFtZSA/PyAnJyxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogdGhpcy5zZWxlY3RlZFByZXNlbnRhdGlvbi5kZXNjcmlwdGlvbiA/PyAnJyxcbiAgICAgICAgICBpbWFnZTogdGhpcy5zZWxlY3RlZFByZXNlbnRhdGlvbi5pbWFnZSA/PyAnJyxcbiAgICAgICAgICB2aXNpYmlsaXR5OiB0aGlzLnZpc2liaWxpdHlcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuICAgIHRoaXMudG9nZ2xlTW9kYWwodGhpcy5zZWxlY3RlZFByZXNlbnRhdGlvbik7XG4gIH1cblxuICB0b2dnbGVSZW1vdmVDb25maXJtKCRldmVudDogYW55LCBwcmVzZW50YXRpb24/OiBNYW5pZmVzdERlc2NyaXB0aW9uKSB7XG4gICAgaWYgKCF0aGlzLmNvbmZpcm1SZW1vdmVSZWYpIHtcbiAgICAgIHRoaXMucHJlc2VudGF0aW9uID0gcHJlc2VudGF0aW9uO1xuICAgICAgdGhpcy5jb25maXJtUmVtb3ZlUmVmID0gdGhpcy5vdmVybGF5LmNyZWF0ZShcbiAgICAgICAgbmV3IE92ZXJsYXlDb25maWcoe1xuICAgICAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxuICAgICAgICAgIHBhbmVsQ2xhc3M6IFsnby1tb2RhbC13cmFwcGVyJ10sXG4gICAgICAgICAgYmFja2Ryb3BDbGFzczogJ2JhY2tkcm9wJ1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goQ29uZmlnQWN0aW9ucy5hZGRpbmdPdmVybGF5KHsgaWQ6IHRoaXMuY29uc3RydWN0b3IubmFtZSArICctbW9kYWwnIH0pKTtcbiAgICAgIHRoaXMuY29uZmlybVJlbW92ZVJlZi5iYWNrZHJvcENsaWNrKCkuc3Vic2NyaWJlKCgpID0+IHRoaXMudG9nZ2xlUmVtb3ZlQ29uZmlybSgkZXZlbnQsIHByZXNlbnRhdGlvbikpO1xuICAgICAgdGhpcy5jb25maXJtUmVtb3ZlUmVmLmF0dGFjaChuZXcgVGVtcGxhdGVQb3J0YWwodGhpcy50ZW1wbGF0ZU1vZGFsLCB0aGlzLnZpZXdDb250YWluZXJSZWYpKTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBjb25zdCBmb2N1cyA9IHRoaXMuZGVsZXRlTW9kYWwubmF0aXZlRWxlbWVudC5jaGlsZHJlblswXS5jaGlsZHJlblsxXS5maXJzdEVsZW1lbnRDaGlsZCBhcyBIVE1MQnV0dG9uRWxlbWVudDtcbiAgICAgICAgZm9jdXMuZm9jdXMoKTtcbiAgICAgIH0sIDEwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jb25maXJtUmVtb3ZlUmVmLmRpc3Bvc2UoKTtcbiAgICAgIHRoaXMuY29uZmlybVJlbW92ZVJlZiA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goQ29uZmlnQWN0aW9ucy5jbG9zZU92ZXJsYXkoeyBpZDogdGhpcy5jb25zdHJ1Y3Rvci5uYW1lICsgJy1tb2RhbCcgfSkpO1xuICAgICAgdGhpcy5vcGVuTW9kYWwubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIGNhbmNlbFJlbW92ZUNvbmZpcm0oKSB7XG4gICAgdGhpcy5jb25maXJtUmVtb3ZlUmVmPy5kaXNwb3NlKCk7XG4gICAgdGhpcy5jb25maXJtUmVtb3ZlUmVmID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goQ29uZmlnQWN0aW9ucy5jbG9zZU92ZXJsYXkoeyBpZDogdGhpcy5jb25zdHJ1Y3Rvci5uYW1lICsgJy1tb2RhbCcgfSkpO1xuICB9XG5cbiAgZm9jdXNDcm9zc0VsZW1lbnQoKSB7XG4gICAgaWYgKHRoaXMuY3Jvc3NWaXNpYmlsaXR5KSB7XG4gICAgICB0aGlzLmNyb3NzVmlzaWJpbGl0eT8ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cbiAgICB0aGlzLmNyb3NzPy5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gIH1cblxuICBmb2N1c1ZhbGlkYXRpb24oKSB7XG4gICAgaWYgKHRoaXMuY29uZmlybSkge1xuICAgICAgdGhpcy5jb25maXJtLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG4gICAgdGhpcy5zdWJtaXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICB9XG59XG4iLCI8cHJ5LXByZXNlbnRhdGlvbi1jc3M+PC9wcnktcHJlc2VudGF0aW9uLWNzcz5cbjxkaXYgY2xhc3M9XCJvLW1hbmlmZXN0LWxheW91dFwiIFtuZ1N3aXRjaF09XCJzZWxlY3RlZE1vZGVcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiVmlld01vZGUuQ0FUQUxPR1wiPlxuICAgIDxkaXYgY2xhc3M9XCJvLW1hbmlmZXN0LWxheW91dF9fdG9vbGJveFwiPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBbcHJ5VG9vbHRpcF09XCJjcmVhdGVcIlxuICAgICAgICBjbGFzcz1cImEtYnRuIGEtYnRuLS1wcmltYXJ5IGEtYnRuLS1pY29uLXRleHRcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgKGNsaWNrKT1cImNyZWF0aW9uKClcIlxuICAgICAgICAqcHJ5QWNjZXNzPVwieyBtb2R1bGU6ICdkYXNoYm9hcmQnLCBwYWdlOiAnbWFuaWZlc3QnLCBhY3Rpb246ICdjcmVhdGUnIH1cIlxuICAgICAgPlxuICAgICAgICB7eyAnQHByeS5wcmVzZW50YXRpb24uY3JlYXRlJyB8IGkxOG4gfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGRpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImEtcHJlc2VudGF0aW9uX19zZWFyY2hcIj5cbiAgICAgICAgICA8bGFiZWwgaWQ9XCJjYXRhbG9nLXNlYXJjaC1sYWJlbFwiIGZvcj1cImNhdGFsb2ctc2VhcmNoXCIgY2xhc3M9XCJ1LXZpc3VhbGx5LWhpZGRlblwiPlxuICAgICAgICAgICAgPHNwYW4+e3sgJ0BwcnkudG9vbGJveC5jYXRhbG9nLmZpbHRlci5uYW1lJyB8IGkxOG4gfX08L3NwYW4+XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIGlkPVwiY2F0YWxvZy1zZWFyY2hcIlxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgY2xhc3M9XCJhLWZvcm0tZmllbGRcIlxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidAcHJ5LnByZXNlbnRhdGlvbi5zZWFyY2gnIHwgaTE4blwiXG4gICAgICAgICAgICBbbmdNb2RlbF09XCJzZWFyY2gkIHwgYXN5bmNcIlxuICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidGhpcy5zZWFyY2gkLm5leHQoJGV2ZW50KVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICA8cHJ5LWljb24gaWNvblN2Zz1cInNlYXJjaFwiIFt3aWR0aF09XCIxN1wiIFtoZWlnaHRdPVwiMTdcIj48L3ByeS1pY29uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJvLW1hbmlmZXN0LWxheW91dF9fY29udGVudFwiPlxuICAgICAgPGgxIGNsYXNzPVwiYS1oMVwiPnt7ICdAcHJ5Lm1hbmlmZXN0LnRpdGxlJyB8IGkxOG4gfX08L2gxPlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiby1wcmVzZW50YXRpb24td3JhcHBlclwiPlxuICAgICAgICA8dWwgY2xhc3M9XCJvLXByZXNlbnRhdGlvblwiPlxuICAgICAgICAgIDxsaSBjbGFzcz1cIm8tcHJlc2VudGF0aW9uX19pdGVtXCIgKm5nRm9yPVwibGV0IHByZXNlbnRhdGlvbiBvZiBmaWx0ZXJlZFByZXNlbnRhdGlvbnMkIHwgYXN5bmNcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvLXByZXNlbnRhdGlvbl9faXRlbV9faGVhZGVyXCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJwcmVzZW50YXRpb24udmlzaWJpbGl0eS50eXBlID09PSBQcnlWaXNpYmlsaXR5VHlwZS5QUklWQVRFXCI+XG4gICAgICAgICAgICAgICAgPHByeS1pY29uXG4gICAgICAgICAgICAgICAgICBbaWNvblN2Z109XCJwcmVzZW50YXRpb24udmlzaWJpbGl0eS50eXBlLnRvTG93ZXJDYXNlKClcIlxuICAgICAgICAgICAgICAgICAgW3ByeVRvb2x0aXBdPVwicHJpdmF0ZVwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImlzLXByaXZhdGVcIlxuICAgICAgICAgICAgICAgICAgW2hlaWdodF09XCIxN1wiXG4gICAgICAgICAgICAgICAgICBbd2lkdGhdPVwiMTdcIlxuICAgICAgICAgICAgICAgID48L3ByeS1pY29uPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgYWx0PVwiXCJcbiAgICAgICAgICAgICAgICBbaGVpZ2h0XT1cInByZXNlbnRhdGlvbi5jb3ZlciA/IDYwMCA6IDEyOFwiXG4gICAgICAgICAgICAgICAgW3dpZHRoXT1cInByZXNlbnRhdGlvbi5jb3ZlciA/IDYwMCA6IDEyOFwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmlzLWZ1bGwtd2lkdGhdPVwicHJlc2VudGF0aW9uLmNvdmVyXCJcbiAgICAgICAgICAgICAgICBbc3JjXT1cInByZXNlbnRhdGlvbi5pbWFnZSB8IGdldFNlY3VyZWRJbWFnZSB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZmV0Y2gocHJlc2VudGF0aW9uKVwiXG4gICAgICAgICAgICAgICAgW3ByeVRvb2x0aXBdPVwidmlld1wiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm8tcHJlc2VudGF0aW9uX19pdGVtX190eHRcIj5cbiAgICAgICAgICAgICAgPGgzIGNsYXNzPVwiYS1oM1wiPnt7IHByZXNlbnRhdGlvbi5uYW1lIH19PC9oMz5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImEtcFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZXNjcmlwdGlvbi1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGVzY3JpcHRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAge3sgcHJlc2VudGF0aW9uLmRlc2NyaXB0aW9uIH19XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGVzY3JpcHRpb24tdG9vbHRpcFwiPnt7IHByZXNlbnRhdGlvbi5kZXNjcmlwdGlvbiB9fTwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPHAgY2xhc3M9XCJhLXAgLWRhdGVcIj57eyBwcmVzZW50YXRpb24ubW9kaWZpY2F0aW9uRGF0ZSB8IHNpbmNlRGF0ZSB9fTwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiby1wcmVzZW50YXRpb25fX2l0ZW1fX2Zvb3RlclwiPlxuICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJtLWFjdGlvbnMtbGlzdFwiPlxuICAgICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYS1idG4gYS1idG4tLWljb24tb25seVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkZWZhdWx0KHByZXNlbnRhdGlvbi5pZCwgcHJlc2VudGF0aW9uLm5hbWUpXCJcbiAgICAgICAgICAgICAgICAgICAgKnByeUFjY2Vzcz1cInsgbW9kdWxlOiAnZGFzaGJvYXJkJywgcGFnZTogJ21hbmlmZXN0JywgYWN0aW9uOiAnZGVmYXVsdCcgfVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxwcnktaWNvblxuICAgICAgICAgICAgICAgICAgICAgIFtpY29uU3ZnXT1cInByZXNlbnRhdGlvbi5kZWZhdWx0ID8gJ2hvbWUtZmlsbCcgOiAnaG9tZS1saW5lJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgW3ByeVRvb2x0aXBdPVwiaG9tZVZpZXdcIlxuICAgICAgICAgICAgICAgICAgICA+PC9wcnktaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1LXZpc3VhbGx5LWhpZGRlblwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImEtYnRuIGEtYnRuLS1pY29uLW9ubHlcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZWRpdChwcmVzZW50YXRpb24pXCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInByZXNlbnRhdGlvbi5vd25lciA9PT0gZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAqcHJ5QWNjZXNzPVwieyBtb2R1bGU6ICdkYXNoYm9hcmQnLCBwYWdlOiAnbWFuaWZlc3QnLCBhY3Rpb246ICdlZGl0JyB9XCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPHByeS1pY29uIGljb25Tdmc9XCJlZGl0XCIgW3ByeVRvb2x0aXBdPVwiY2hhbmdlXCI+PC9wcnktaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1LXZpc3VhbGx5LWhpZGRlblwiPnt7ICdAcHJ5LnByZXNlbnRhdGlvbi5lZGl0aW9uJyB8IGkxOG4gfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZU1vZGFsKHByZXNlbnRhdGlvbilcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImEtYnRuIGEtYnRuLS1pY29uLW9ubHlcIlxuICAgICAgICAgICAgICAgICAgICBhcmlhLWhhc3BvcHVwPVwiZGlhbG9nXCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInByZXNlbnRhdGlvbi5vd25lciA9PT0gZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAqcHJ5QWNjZXNzPVwieyBtb2R1bGU6ICdkYXNoYm9hcmQnLCBwYWdlOiAnbWFuaWZlc3QnLCBhY3Rpb246ICdzaGFyZScgfVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxwcnktaWNvbiBpY29uU3ZnPVwic2hhcmVcIiBbcHJ5VG9vbHRpcF09XCJzaGFyZVwiPjwvcHJ5LWljb24+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidS12aXN1YWxseS1oaWRkZW5cIj57eyAnQHByeS5wcmVzZW50YXRpb24uc2hhcmUnIHwgaTE4biB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImEtYnRuIGEtYnRuLS1pY29uLW9ubHlcIlxuICAgICAgICAgICAgICAgICAgICAjb3Blbk1vZGFsXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVSZW1vdmVDb25maXJtKCRldmVudCwgcHJlc2VudGF0aW9uKVwiXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJwcmVzZW50YXRpb24ub3duZXIgPT09IGZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgKnByeUFjY2Vzcz1cInsgbW9kdWxlOiAnZGFzaGJvYXJkJywgcGFnZTogJ21hbmlmZXN0JywgYWN0aW9uOiAnZGVsZXRlJyB9XCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPHByeS1pY29uIGljb25Tdmc9XCJkZWxldGVcIiBbcHJ5VG9vbHRpcF09XCJlcmFzZVwiPjwvcHJ5LWljb24+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidS12aXN1YWxseS1oaWRkZW5cIj57eyAnQHByeS5wcmVzZW50YXRpb24uZGVsZXRlJyB8IGkxOG4gfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9saT5cbiAgICAgICAgPC91bD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiVmlld01vZGUuQ1JFQVRJT05cIj5cbiAgICA8cHJ5LWFkZC1lZGl0LXByZXNlbnRhdGlvblxuICAgICAgW3NlbGVjdGVkUHJlc2VudGF0aW9uXT1cInNlbGVjdGVkUHJlc2VudGF0aW9uIVwiXG4gICAgICAoZ29CYWNrKT1cImNsb3NlUmVzdGl0dXRpb24oKVwiXG4gICAgICBbZWRpdGlvblN0YXJ0VXJsXT1cImVkaXRpb25TdGFydFVybFwiXG4gICAgICBbZWRpdGlvbl09XCJmYWxzZVwiXG4gICAgPjwvcHJ5LWFkZC1lZGl0LXByZXNlbnRhdGlvbj5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIlZpZXdNb2RlLkVESVRJT05cIj5cbiAgICA8cHJ5LWFkZC1lZGl0LXByZXNlbnRhdGlvblxuICAgICAgW3NlbGVjdGVkUHJlc2VudGF0aW9uXT1cInNlbGVjdGVkUHJlc2VudGF0aW9uIVwiXG4gICAgICAoZ29CYWNrKT1cImNsb3NlUmVzdGl0dXRpb24oKVwiXG4gICAgICBbZWRpdGlvblN0YXJ0VXJsXT1cImVkaXRpb25TdGFydFVybFwiXG4gICAgICBbZWRpdGlvbl09XCJ0cnVlXCJcbiAgICA+PC9wcnktYWRkLWVkaXQtcHJlc2VudGF0aW9uPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI21vZGFsPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJvLW1vZGFsXCJcbiAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAjdmlzaWJpbGl0eU1vZGFsXG4gICAgcm9sZT1cImRpYWxvZ1wiXG4gICAgYXJpYS1tb2RhbD1cInRydWVcIlxuICAgIGFyaWEtbGFiZWxsZWRieT1cImRpYWxvZyBjaGFuZ2UgdmlzaWJpbGl0eVwiXG4gICAgKm5nSWY9XCJzZWxlY3RlZFByZXNlbnRhdGlvblwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwiby1tb2RhbF9fdG9wXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiby1tb2RhbF9fdG9wX190aXRsZVwiPlxuICAgICAgICA8aDIgY2xhc3M9XCJhLWgyXCIgaWQ9XCJkaWFsb2dfdGl0bGVcIj57eyAnQHByeS50b29sYm94LnJlbmFtZScgfCBpMThuIH19PC9oMj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cIm8tbW9kYWxfX3RvcF9fY2xvc2VcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNsYXNzPVwiYS1idG4gYS1idG4tLWljb24tb25seVwiXG4gICAgICAgICAgI2Nyb3NzVmlzaWJpbGl0eVxuICAgICAgICAgIChrZXlkb3duLnNoaWZ0LnRhYik9XCJmb2N1c1ZhbGlkYXRpb24oKVwiXG4gICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZU1vZGFsKClcIlxuICAgICAgICA+XG4gICAgICAgICAgPHByeS1pY29uIGljb25Tdmc9XCJjbG9zZVwiIFtoZWlnaHRdPVwiMzVcIiBbd2lkdGhdPVwiMzVcIj48L3ByeS1pY29uPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidS12aXN1YWxseS1oaWRkZW5cIj57eyAnQHByeS50b29sYm94LmNsb3NlJyB8IGkxOG4gfX08L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPHByeS1zaGFyZSBbbmdNb2RlbF09XCJzZWxlY3RlZFByZXNlbnRhdGlvbi52aXNpYmlsaXR5XCIgKG5nTW9kZWxDaGFuZ2UpPVwidmlzaWJpbGl0eSA9ICRldmVudFwiPjwvcHJ5LXNoYXJlPlxuICAgIDxkaXYgY2xhc3M9XCJtLWJ0bi1ncm91cFwiPlxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJhLWJ0biBhLWJ0bi0tc2Vjb25kYXJ5XCIgKGNsaWNrKT1cInRvZ2dsZU1vZGFsKClcIj5cbiAgICAgICAge3sgJ0BwcnkudG9vbGJveC5tYW5pZmVzdC5jbG9zZScgfCBpMThuIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgIGNsYXNzPVwiYS1idG4gYS1idG4tLXByaW1hcnlcIlxuICAgICAgICAjc3VibWl0XG4gICAgICAgIChrZXlkb3duLnRhYik9XCJmb2N1c0Nyb3NzRWxlbWVudCgpXCJcbiAgICAgICAgKGNsaWNrKT1cImNoYW5nZVZpc2liaWxpdHkoKVwiXG4gICAgICA+XG4gICAgICAgIHt7ICdAcHJ5LnRvb2xib3gubWFuaWZlc3QuY2hlY2snIHwgaTE4biB9fVxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICN0ZW1wbGF0ZU1vZGFsPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJvLW1vZGFsXCJcbiAgICAqbmdJZj1cInByZXNlbnRhdGlvblwiXG4gICAgKGtleWRvd24uZXNjYXBlKT1cInRvZ2dsZVJlbW92ZUNvbmZpcm0oJGV2ZW50LCBwcmVzZW50YXRpb24pXCJcbiAgICAjZGVsZXRlTW9kYWxcbiAgICByb2xlPVwiZGlhbG9nXCJcbiAgICBhcmlhLW1vZGFsPVwidHJ1ZVwiXG4gICAgYXJpYS1sYWJlbGxlZGJ5PVwiZGlhbG9nIGNvbmZpcm0gZGVsZXRlIHByZXNlbnRhdGlvblwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwiby1tb2RhbF9fdG9wXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiby1tb2RhbF9fdG9wX190aXRsZVwiPlxuICAgICAgICA8aDIgY2xhc3M9XCJhLWgyXCI+XG4gICAgICAgICAge3sgJ0Bwcnkud2lkZ2V0Lm1vZGFsVGl0bGUnIHwgaTE4biB9fVxuICAgICAgICA8L2gyPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiby1tb2RhbF9fdG9wX19jbG9zZVwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJhLWJ0biBhLWJ0bi0taWNvbi1vbmx5XCJcbiAgICAgICAgICAjY3Jvc3NcbiAgICAgICAgICAoa2V5ZG93bi5zaGlmdC50YWIpPVwiZm9jdXNWYWxpZGF0aW9uKClcIlxuICAgICAgICAgIChjbGljayk9XCJjYW5jZWxSZW1vdmVDb25maXJtKClcIlxuICAgICAgICA+XG4gICAgICAgICAgPHByeS1pY29uIGljb25Tdmc9XCJjbG9zZVwiIFtoZWlnaHRdPVwiMzVcIiBbd2lkdGhdPVwiMzVcIj48L3ByeS1pY29uPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidS12aXN1YWxseS1oaWRkZW5cIj57eyAnQHByeS50b29sYm94LmNsb3NlJyB8IGkxOG4gfX08L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cIm0tYnRuLWdyb3VwXCI+XG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAjY2FuY2VsUmVtb3ZlIChjbGljayk9XCJjYW5jZWxSZW1vdmVDb25maXJtKClcIiBjbGFzcz1cImEtYnRuIGEtYnRuLS1zZWNvbmRhcnlcIj5cbiAgICAgICAge3sgJ0BwcnkudG9vbGJveC5tYW5pZmVzdC5jbG9zZScgfCBpMThuIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgIGNsYXNzPVwiYS1idG4gYS1idG4tLXByaW1hcnlcIlxuICAgICAgICAjY29uZmlybVxuICAgICAgICAoY2xpY2spPVwiZGVsZXRlKHByZXNlbnRhdGlvbi5pZClcIlxuICAgICAgICAoa2V5ZG93bi50YWIpPVwiZm9jdXNDcm9zc0VsZW1lbnQoKVwiXG4gICAgICA+XG4gICAgICAgIHt7ICdAcHJ5LnRvb2xib3gubWFuaWZlc3QudmFsaWRhdGUnIHwgaTE4biB9fVxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNjcmVhdGU+XG4gIDxkaXYgY2xhc3M9XCJtLXRvb2x0aXBcIiByb2xlPVwidG9vbHRpcFwiPlxuICAgIDxzcGFuIGNsYXNzPVwibS10b29sdGlwX190ZXh0XCI+e3sgJ0BwcnkucHJlc2VudGF0aW9uLmNyZWF0ZScgfCBpMThuIH19PC9zcGFuPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjdmlldz5cbiAgPGRpdiBjbGFzcz1cIm0tdG9vbHRpcFwiIHJvbGU9XCJ0b29sdGlwXCI+XG4gICAgPHNwYW4gY2xhc3M9XCJtLXRvb2x0aXBfX3RleHRcIj57eyAnQHByeS5wcmVzZW50YXRpb24udmlldycgfCBpMThuIH19PC9zcGFuPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjcHJpdmF0ZT5cbiAgPGRpdiBjbGFzcz1cIm0tdG9vbHRpcFwiIHJvbGU9XCJ0b29sdGlwXCI+XG4gICAgPHNwYW4gY2xhc3M9XCJtLXRvb2x0aXBfX3RleHRcIj57eyAnQHByeS5wcmVzZW50YXRpb24ucHJpdmF0ZScgfCBpMThuIH19PC9zcGFuPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjaG9tZVZpZXc+XG4gIDxkaXYgY2xhc3M9XCJtLXRvb2x0aXBcIiByb2xlPVwidG9vbHRpcFwiPlxuICAgIDxzcGFuIGNsYXNzPVwibS10b29sdGlwX190ZXh0XCI+e3sgJ0BwcnkucHJlc2VudGF0aW9uLmhvbWVWaWV3JyB8IGkxOG4gfX08L3NwYW4+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNzaGFyZT5cbiAgPGRpdiBjbGFzcz1cIm0tdG9vbHRpcFwiIHJvbGU9XCJ0b29sdGlwXCI+XG4gICAgPHNwYW4gY2xhc3M9XCJtLXRvb2x0aXBfX3RleHRcIj57eyAnQHByeS5wcmVzZW50YXRpb24uc2hhcmUnIHwgaTE4biB9fTwvc3Bhbj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2VyYXNlPlxuICA8ZGl2IGNsYXNzPVwibS10b29sdGlwXCIgcm9sZT1cInRvb2x0aXBcIj5cbiAgICA8c3BhbiBjbGFzcz1cIm0tdG9vbHRpcF9fdGV4dFwiPnt7ICdAcHJ5LnByZXNlbnRhdGlvbi5lcmFzZScgfCBpMThuIH19PC9zcGFuPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjY2hhbmdlPlxuICA8ZGl2IGNsYXNzPVwibS10b29sdGlwXCIgcm9sZT1cInRvb2x0aXBcIj5cbiAgICA8c3BhbiBjbGFzcz1cIm0tdG9vbHRpcF9fdGV4dFwiPnt7ICdAcHJ5LnByZXNlbnRhdGlvbi5jaGFuZ2UnIHwgaTE4biB9fTwvc3Bhbj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNiYWNrVG9DYXRhbG9nPlxuICA8ZGl2IGNsYXNzPVwibS10b29sdGlwXCIgcm9sZT1cInRvb2x0aXBcIj5cbiAgICA8c3BhbiBjbGFzcz1cIm0tdG9vbHRpcF9fdGV4dFwiPnt7ICdAcHJ5LnByZXNlbnRhdGlvbi5iYWNrVG9DYXRhbG9nJyB8IGkxOG4gfX08L3NwYW4+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
@@ -30,7 +30,6 @@ export class PryRestitutionListComponent extends SubscriptionnerDirective {
|
|
|
30
30
|
this.mode = ViewMode;
|
|
31
31
|
this.selectedMode = ViewMode.CATALOG;
|
|
32
32
|
this.categories = ['model', 'noModel'];
|
|
33
|
-
this.categoryOpened = '';
|
|
34
33
|
this.PryVisibilityType = PryVisibilityType;
|
|
35
34
|
this.store.dispatch(ConfigActions.loadWidgets());
|
|
36
35
|
this.types$ = this.toolboxMenuService.types$;
|
|
@@ -51,18 +50,15 @@ export class PryRestitutionListComponent extends SubscriptionnerDirective {
|
|
|
51
50
|
this.selectedRestitution = null;
|
|
52
51
|
this.selectMode(this.mode.CATALOG);
|
|
53
52
|
}
|
|
54
|
-
toggle(category) {
|
|
55
|
-
this.categoryOpened = this.categoryOpened === category ? '' : category;
|
|
56
|
-
}
|
|
57
53
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: PryRestitutionListComponent, deps: [{ token: i1.ToolboxMenuService }, { token: i1.PryI18nService }, { token: i1.ToolboxManifestService }, { token: i2.Store }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
58
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: PryRestitutionListComponent, selector: "pry-catalog", inputs: { showTabs: "showTabs", customModels: "customModels" }, usesInheritance: true, ngImport: i0, template: "<pry-restitution-css></pry-restitution-css>\n<div class=\"o-catalog\">\n <ng-template [ngIf]=\"selectedMode === mode.CATALOG\">\n <h2 class=\"a-h2\">{{ '@pry.restitution.catalog' | i18n }}</h2>\n <div class=\"o-catalog__filters\">\n <div class=\"o-catalog__filters__by-name\">\n <label id=\"catalog-search-label\" for=\"catalog-search\" class=\"a-label u-visually-hidden\">\n <span>{{ '@pry.toolbox.catalog.filter.name' | i18n }}</span>\n </label>\n <pry-icon iconSvg=\"search\" [width]=\"17\" [height]=\"17\"></pry-icon>\n <input\n id=\"catalog-search\"\n type=\"text\"\n class=\"a-form-field\"\n [placeholder]=\"'@pry.action.search' | i18n\"\n [ngModel]=\"search$ | async\"\n (ngModelChange)=\"this.search$.next($event)\"\n />\n </div>\n <label class=\"a-label\">{{ '@pry.action.filterByType' | i18n }}</label>\n <div class=\"o-catalog__filters__by-type\">\n <ul class=\"o-catalog__filters__by-type__list\">\n <li *ngFor=\"let typeOpt of types$ | async\">\n <input\n type=\"radio\"\n class=\"a-form-field u-sr-only\"\n name=\"catalog-filter\"\n id=\"catalog-button-{{ typeOpt.type }}\"\n [checked]=\"typeOpt.type === (type$ | async)\"\n (change)=\"type$.next(typeOpt.type)\"\n />\n <label\n class=\"a-label\"\n id=\"catalog-button-label-{{ typeOpt.type }}\"\n for=\"catalog-button-{{ typeOpt.type }}\"\n [title]=\"typeOpt.label | i18n\"\n >\n <span class=\"u-sr-only\">{{ typeOpt.label | i18n }} </span>\n <pry-icon [width]=\"18\" [height]=\"18\" [iconSvg]=\"typeOpt.icon\"></pry-icon>\n </label>\n </li>\n </ul>\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-text -link-like\"\n (click)=\"type$.next(undefined)\"\n [disabled]=\"!type$.getValue()\"\n [class.u-visually-hidden]=\"!type$.getValue()\"\n >\n <pry-icon [width]=\"15\" [height]=\"15\" iconSvg=\"delete\"></pry-icon>\n {{ '@pry.toolbox.catalog.filter.delete' | i18n }}\n </button>\n </div>\n </div>\n <ng-container *ngIf=\"showTabs; else list\">\n <div class=\"o-accordion\" role=\"tablist\" aria-multiselectable=\"false\">\n <
|
|
54
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: PryRestitutionListComponent, selector: "pry-catalog", inputs: { showTabs: "showTabs", customModels: "customModels" }, usesInheritance: true, ngImport: i0, template: "<pry-restitution-css></pry-restitution-css>\n<div class=\"o-catalog\">\n <ng-template [ngIf]=\"selectedMode === mode.CATALOG\">\n <h2 class=\"a-h2\">{{ '@pry.restitution.catalog' | i18n }}</h2>\n <div class=\"o-catalog__filters\">\n <div class=\"o-catalog__filters__by-name\">\n <label id=\"catalog-search-label\" for=\"catalog-search\" class=\"a-label u-visually-hidden\">\n <span>{{ '@pry.toolbox.catalog.filter.name' | i18n }}</span>\n </label>\n <pry-icon iconSvg=\"search\" [width]=\"17\" [height]=\"17\"></pry-icon>\n <input\n id=\"catalog-search\"\n type=\"text\"\n class=\"a-form-field\"\n [placeholder]=\"'@pry.action.search' | i18n\"\n [ngModel]=\"search$ | async\"\n (ngModelChange)=\"this.search$.next($event)\"\n />\n </div>\n <label class=\"a-label\">{{ '@pry.action.filterByType' | i18n }}</label>\n <div class=\"o-catalog__filters__by-type\">\n <ul class=\"o-catalog__filters__by-type__list\">\n <li *ngFor=\"let typeOpt of types$ | async\">\n <input\n type=\"radio\"\n class=\"a-form-field u-sr-only\"\n name=\"catalog-filter\"\n id=\"catalog-button-{{ typeOpt.type }}\"\n [checked]=\"typeOpt.type === (type$ | async)\"\n (change)=\"type$.next(typeOpt.type)\"\n />\n <label\n class=\"a-label\"\n id=\"catalog-button-label-{{ typeOpt.type }}\"\n for=\"catalog-button-{{ typeOpt.type }}\"\n [title]=\"typeOpt.label | i18n\"\n >\n <span class=\"u-sr-only\">{{ typeOpt.label | i18n }} </span>\n <pry-icon [width]=\"18\" [height]=\"18\" [iconSvg]=\"typeOpt.icon\"></pry-icon>\n </label>\n </li>\n </ul>\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-text -link-like\"\n (click)=\"type$.next(undefined)\"\n [disabled]=\"!type$.getValue()\"\n [class.u-visually-hidden]=\"!type$.getValue()\"\n >\n <pry-icon [width]=\"15\" [height]=\"15\" iconSvg=\"delete\"></pry-icon>\n {{ '@pry.toolbox.catalog.filter.delete' | i18n }}\n </button>\n </div>\n </div>\n <ng-container *ngIf=\"showTabs; else list\">\n <div class=\"o-accordion\" role=\"tablist\" aria-multiselectable=\"false\">\n <pry-accordion>\n <pry-accordion-item\n *ngFor=\"let category of categories; let index = index\"\n [item]=\"category\"\n [index]=\"index\"\n translationStringBase=\"@pry.restitution.catalogTabs.\"\n [length]=\"category === 'model' ? (nonCustomWidgets$ | async)?.length : (customWidgets$ | async)?.length\"\n >\n <ul class=\"o-catalog__list\" role=\"list\" aria-live=\"polite\">\n <ng-container *ngIf=\"category === 'model'\">\n <pry-catalog-item\n *ngFor=\"let widget of nonCustomWidgets$ | async\"\n [widget]=\"widget\"\n (selectRestitution)=\"selectRestitution($event)\"\n ></pry-catalog-item>\n </ng-container>\n <ng-container *ngIf=\"category === 'noModel'\">\n <pry-catalog-item\n *ngFor=\"let widget of customWidgets$ | async\"\n [widget]=\"widget\"\n (selectRestitution)=\"selectRestitution($event)\"\n ></pry-catalog-item>\n </ng-container>\n </ul>\n </pry-accordion-item>\n </pry-accordion>\n </div>\n </ng-container>\n\n <ng-template #list>\n <ul class=\"o-catalog__list\" role=\"list\" aria-live=\"polite\">\n <pry-catalog-item\n *ngFor=\"let widget of filteredWidgets$ | async\"\n [widget]=\"widget\"\n (selectRestitution)=\"selectRestitution($event)\"\n ></pry-catalog-item>\n </ul>\n </ng-template>\n </ng-template>\n\n <ng-template [ngIf]=\"selectedMode === mode.CONSULT\">\n <div class=\"o-catalog__create\">\n <button class=\"a-btn a-btn--secondary\" (click)=\"closeRestitution()\">\n {{ '@pry.restitution.cancel' | i18n }}\n </button>\n </div>\n\n <pry-restitution\n [selectedRestitution]=\"selectedRestitution\"\n [edit]=\"false\"\n (restitutionCreated)=\"closeRestitution()\"\n ></pry-restitution>\n </ng-template>\n\n <ng-template [ngIf]=\"selectedMode === mode.CREATION\">\n <div class=\"o-catalog__create\">\n <button class=\"a-btn a-btn--ghost\" (click)=\"selectMode(mode.CATALOG)\">\n {{ '@pry.restitution.cancel' | i18n }}\n </button>\n </div>\n\n <pry-restitution (restitutionCreated)=\"closeRestitution()\"></pry-restitution>\n </ng-template>\n</div>\n", dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i1.AccordionComponent, selector: "pry-accordion" }, { kind: "component", type: i1.AccordionItemComponent, selector: "pry-accordion-item", inputs: ["item", "borderColor", "index", "translationStringBase", "length", "showSearchBar", "search$"], outputs: ["search"] }, { kind: "component", type: i1.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "directive", type: i4.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: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.PryRestitutionComponent, selector: "pry-restitution", inputs: ["selectedRestitution", "edit", "isDataSourceSelected", "bindId"], outputs: ["restitutionCreated"] }, { kind: "component", type: i6.PryCatalogCssComponent, selector: "pry-restitution-css" }, { kind: "component", type: i7.PryRestitutionListItemComponent, selector: "pry-catalog-item", inputs: ["widget"], outputs: ["selectRestitution"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.I18nPipe, name: "i18n" }] }); }
|
|
59
55
|
}
|
|
60
56
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: PryRestitutionListComponent, decorators: [{
|
|
61
57
|
type: Component,
|
|
62
|
-
args: [{ selector: 'pry-catalog', template: "<pry-restitution-css></pry-restitution-css>\n<div class=\"o-catalog\">\n <ng-template [ngIf]=\"selectedMode === mode.CATALOG\">\n <h2 class=\"a-h2\">{{ '@pry.restitution.catalog' | i18n }}</h2>\n <div class=\"o-catalog__filters\">\n <div class=\"o-catalog__filters__by-name\">\n <label id=\"catalog-search-label\" for=\"catalog-search\" class=\"a-label u-visually-hidden\">\n <span>{{ '@pry.toolbox.catalog.filter.name' | i18n }}</span>\n </label>\n <pry-icon iconSvg=\"search\" [width]=\"17\" [height]=\"17\"></pry-icon>\n <input\n id=\"catalog-search\"\n type=\"text\"\n class=\"a-form-field\"\n [placeholder]=\"'@pry.action.search' | i18n\"\n [ngModel]=\"search$ | async\"\n (ngModelChange)=\"this.search$.next($event)\"\n />\n </div>\n <label class=\"a-label\">{{ '@pry.action.filterByType' | i18n }}</label>\n <div class=\"o-catalog__filters__by-type\">\n <ul class=\"o-catalog__filters__by-type__list\">\n <li *ngFor=\"let typeOpt of types$ | async\">\n <input\n type=\"radio\"\n class=\"a-form-field u-sr-only\"\n name=\"catalog-filter\"\n id=\"catalog-button-{{ typeOpt.type }}\"\n [checked]=\"typeOpt.type === (type$ | async)\"\n (change)=\"type$.next(typeOpt.type)\"\n />\n <label\n class=\"a-label\"\n id=\"catalog-button-label-{{ typeOpt.type }}\"\n for=\"catalog-button-{{ typeOpt.type }}\"\n [title]=\"typeOpt.label | i18n\"\n >\n <span class=\"u-sr-only\">{{ typeOpt.label | i18n }} </span>\n <pry-icon [width]=\"18\" [height]=\"18\" [iconSvg]=\"typeOpt.icon\"></pry-icon>\n </label>\n </li>\n </ul>\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-text -link-like\"\n (click)=\"type$.next(undefined)\"\n [disabled]=\"!type$.getValue()\"\n [class.u-visually-hidden]=\"!type$.getValue()\"\n >\n <pry-icon [width]=\"15\" [height]=\"15\" iconSvg=\"delete\"></pry-icon>\n {{ '@pry.toolbox.catalog.filter.delete' | i18n }}\n </button>\n </div>\n </div>\n <ng-container *ngIf=\"showTabs; else list\">\n <div class=\"o-accordion\" role=\"tablist\" aria-multiselectable=\"false\">\n <
|
|
58
|
+
args: [{ selector: 'pry-catalog', template: "<pry-restitution-css></pry-restitution-css>\n<div class=\"o-catalog\">\n <ng-template [ngIf]=\"selectedMode === mode.CATALOG\">\n <h2 class=\"a-h2\">{{ '@pry.restitution.catalog' | i18n }}</h2>\n <div class=\"o-catalog__filters\">\n <div class=\"o-catalog__filters__by-name\">\n <label id=\"catalog-search-label\" for=\"catalog-search\" class=\"a-label u-visually-hidden\">\n <span>{{ '@pry.toolbox.catalog.filter.name' | i18n }}</span>\n </label>\n <pry-icon iconSvg=\"search\" [width]=\"17\" [height]=\"17\"></pry-icon>\n <input\n id=\"catalog-search\"\n type=\"text\"\n class=\"a-form-field\"\n [placeholder]=\"'@pry.action.search' | i18n\"\n [ngModel]=\"search$ | async\"\n (ngModelChange)=\"this.search$.next($event)\"\n />\n </div>\n <label class=\"a-label\">{{ '@pry.action.filterByType' | i18n }}</label>\n <div class=\"o-catalog__filters__by-type\">\n <ul class=\"o-catalog__filters__by-type__list\">\n <li *ngFor=\"let typeOpt of types$ | async\">\n <input\n type=\"radio\"\n class=\"a-form-field u-sr-only\"\n name=\"catalog-filter\"\n id=\"catalog-button-{{ typeOpt.type }}\"\n [checked]=\"typeOpt.type === (type$ | async)\"\n (change)=\"type$.next(typeOpt.type)\"\n />\n <label\n class=\"a-label\"\n id=\"catalog-button-label-{{ typeOpt.type }}\"\n for=\"catalog-button-{{ typeOpt.type }}\"\n [title]=\"typeOpt.label | i18n\"\n >\n <span class=\"u-sr-only\">{{ typeOpt.label | i18n }} </span>\n <pry-icon [width]=\"18\" [height]=\"18\" [iconSvg]=\"typeOpt.icon\"></pry-icon>\n </label>\n </li>\n </ul>\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-text -link-like\"\n (click)=\"type$.next(undefined)\"\n [disabled]=\"!type$.getValue()\"\n [class.u-visually-hidden]=\"!type$.getValue()\"\n >\n <pry-icon [width]=\"15\" [height]=\"15\" iconSvg=\"delete\"></pry-icon>\n {{ '@pry.toolbox.catalog.filter.delete' | i18n }}\n </button>\n </div>\n </div>\n <ng-container *ngIf=\"showTabs; else list\">\n <div class=\"o-accordion\" role=\"tablist\" aria-multiselectable=\"false\">\n <pry-accordion>\n <pry-accordion-item\n *ngFor=\"let category of categories; let index = index\"\n [item]=\"category\"\n [index]=\"index\"\n translationStringBase=\"@pry.restitution.catalogTabs.\"\n [length]=\"category === 'model' ? (nonCustomWidgets$ | async)?.length : (customWidgets$ | async)?.length\"\n >\n <ul class=\"o-catalog__list\" role=\"list\" aria-live=\"polite\">\n <ng-container *ngIf=\"category === 'model'\">\n <pry-catalog-item\n *ngFor=\"let widget of nonCustomWidgets$ | async\"\n [widget]=\"widget\"\n (selectRestitution)=\"selectRestitution($event)\"\n ></pry-catalog-item>\n </ng-container>\n <ng-container *ngIf=\"category === 'noModel'\">\n <pry-catalog-item\n *ngFor=\"let widget of customWidgets$ | async\"\n [widget]=\"widget\"\n (selectRestitution)=\"selectRestitution($event)\"\n ></pry-catalog-item>\n </ng-container>\n </ul>\n </pry-accordion-item>\n </pry-accordion>\n </div>\n </ng-container>\n\n <ng-template #list>\n <ul class=\"o-catalog__list\" role=\"list\" aria-live=\"polite\">\n <pry-catalog-item\n *ngFor=\"let widget of filteredWidgets$ | async\"\n [widget]=\"widget\"\n (selectRestitution)=\"selectRestitution($event)\"\n ></pry-catalog-item>\n </ul>\n </ng-template>\n </ng-template>\n\n <ng-template [ngIf]=\"selectedMode === mode.CONSULT\">\n <div class=\"o-catalog__create\">\n <button class=\"a-btn a-btn--secondary\" (click)=\"closeRestitution()\">\n {{ '@pry.restitution.cancel' | i18n }}\n </button>\n </div>\n\n <pry-restitution\n [selectedRestitution]=\"selectedRestitution\"\n [edit]=\"false\"\n (restitutionCreated)=\"closeRestitution()\"\n ></pry-restitution>\n </ng-template>\n\n <ng-template [ngIf]=\"selectedMode === mode.CREATION\">\n <div class=\"o-catalog__create\">\n <button class=\"a-btn a-btn--ghost\" (click)=\"selectMode(mode.CATALOG)\">\n {{ '@pry.restitution.cancel' | i18n }}\n </button>\n </div>\n\n <pry-restitution (restitutionCreated)=\"closeRestitution()\"></pry-restitution>\n </ng-template>\n</div>\n" }]
|
|
63
59
|
}], ctorParameters: function () { return [{ type: i1.ToolboxMenuService }, { type: i1.PryI18nService }, { type: i1.ToolboxManifestService }, { type: i2.Store }]; }, propDecorators: { showTabs: [{
|
|
64
60
|
type: Input
|
|
65
61
|
}], customModels: [{
|
|
66
62
|
type: Input
|
|
67
63
|
}] } });
|
|
68
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdGl0dXRpb24tbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9yZXN0aXR1dGlvbi9jb21wb25lbnRzL3Jlc3RpdHV0aW9uLWxpc3QvcmVzdGl0dXRpb24tbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9yZXN0aXR1dGlvbi9jb21wb25lbnRzL3Jlc3RpdHV0aW9uLWxpc3QvcmVzdGl0dXRpb24tbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVqRCxPQUFPLEVBRUwsYUFBYSxFQUViLGlCQUFpQixFQUNqQix3QkFBd0IsRUFHeEIsUUFBUSxFQUVULE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFjLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7QUFNdkUsTUFBTSxPQUFPLDJCQUE0QixTQUFRLHdCQUF3QjtJQUV2RSxJQUNJLFlBQVk7UUFDZCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDNUIsQ0FBQztJQUNELElBQUksWUFBWSxDQUFDLE1BQWdCO1FBQy9CLElBQUksQ0FBQyxhQUFhLEdBQUcsQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLEdBQUcsTUFBTSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQWVELFlBQ1Usa0JBQXNDLEVBQ3RDLGdCQUFnQyxFQUNoQyxzQkFBOEMsRUFDOUMsS0FBWTtRQUVwQixLQUFLLEVBQUUsQ0FBQztRQUxBLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFnQjtRQUNoQywyQkFBc0IsR0FBdEIs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Z0I7UUFDZCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsTUFBTSxDQUFDLFFBQWdCO1FBQ3JCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLGNBQWMsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO0lBQ3pFLENBQUM7OEdBMUVVLDJCQUEyQjtrR0FBM0IsMkJBQTJCLDBJQ25CeEMsMDNMQWdKQTs7MkZEN0hhLDJCQUEyQjtrQkFKdkMsU0FBUzsrQkFDRSxhQUFhOytMQUlkLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUYsWUFBWTtzQkFEZixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQge1xuICBDYXRhbG9nRW50cnksXG4gIENvbmZpZ0FjdGlvbnMsXG4gIFByeUkxOG5TZXJ2aWNlLFxuICBQcnlWaXNpYmlsaXR5VHlwZSxcbiAgU3Vic2NyaXB0aW9ubmVyRGlyZWN0aXZlLFxuICBUb29sYm94TWFuaWZlc3RTZXJ2aWNlLFxuICBUb29sYm94TWVudVNlcnZpY2UsXG4gIFZpZXdNb2RlLFxuICBXaWRnZXRcbn0gZnJvbSAnQHByb3ZvbHkvZGFzaGJvYXJkJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgbWFwLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ByeS1jYXRhbG9nJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Jlc3RpdHV0aW9uLWxpc3QuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFByeVJlc3RpdHV0aW9uTGlzdENvbXBvbmVudCBleHRlbmRzIFN1YnNjcmlwdGlvbm5lckRpcmVjdGl2ZSB7XG4gIEBJbnB1dCgpIHNob3dUYWJzID0gdHJ1ZTtcbiAgQElucHV0KClcbiAgZ2V0IGN1c3RvbU1vZGVscygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuX2N1c3RvbU1vZGVscztcbiAgfVxuICBzZXQgY3VzdG9tTW9kZWxzKG1vZGVsczogc3RyaW5nW10pIHtcbiAgICB0aGlzLl9jdXN0b21Nb2RlbHMgPSBbJ2RldGFpbCcsICdpZnJhbWUnLCAuLi5tb2RlbHNdO1xuICB9XG4gIHByaXZhdGUgX2N1c3RvbU1vZGVscyA9IFsnZGV0YWlsJywgJ2lmcmFtZSddO1xuICBzZWFyY2gkID0gbmV3IEJlaGF2aW9yU3ViamVjdCgnJyk7XG4gIHR5cGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDx1bmRlZmluZWQgfCBzdHJpbmc+KHVuZGVmaW5lZCk7XG4gIGZpbHRlcmVkV2lkZ2V0cyQ6IE9ic2VydmFibGU8Q2F0YWxvZ0VudHJ5W10+O1xuICBub25DdXN0b21XaWRnZXRzJDogT2JzZXJ2YWJsZTxDYXRhbG9nRW50cnlbXT47XG4gIGN1c3RvbVdpZGdldHMkOiBPYnNlcnZhYmxlPENhdGFsb2dFbnRyeVtdPjtcbiAgdHlwZXMkOiBPYnNlcnZhYmxlPHsgaWNvbjogc3RyaW5nOyBsYWJlbDogc3RyaW5nOyB0eXBlOiBzdHJpbmcgfVtdPjtcbiAgc2VsZWN0ZWRSZXN0aXR1dGlvbjogV2lkZ2V0IHwgbnVsbCA9IG51bGw7XG4gIG1vZGUgPSBWaWV3TW9kZTtcbiAgc2VsZWN0ZWRNb2RlOiBWaWV3TW9kZSA9IFZpZXdNb2RlLkNBVEFMT0c7XG4gIGNhdGVnb3JpZXMgPSBbJ21vZGVsJywgJ25vTW9kZWwnXTtcbiAgY2F0ZWdvcnlPcGVuZWQ6IHN0cmluZyA9ICcnO1xuICBQcnlWaXNpYmlsaXR5VHlwZSA9IFByeVZpc2liaWxpdHlUeXBlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgdG9vbGJveE1lbnVTZXJ2aWNlOiBUb29sYm94TWVudVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBQcnlJMThuU2VydmljZSxcbiAgICBwcml2YXRlIHRvb2xib3hNYW5pZmVzdFNlcnZpY2U6IFRvb2xib3hNYW5pZmVzdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzdG9yZTogU3RvcmVcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKENvbmZpZ0FjdGlvbnMubG9hZFdpZGdldHMoKSk7XG4gICAgdGhpcy50eXBlcyQgPSB0aGlzLnRvb2xib3hNZW51U2VydmljZS50eXBlcyQ7XG4gICAgdGhpcy5maWx0ZXJlZFdpZGdldHMkID0gY29tYmluZUxhdGVzdChbdGhpcy50b29sYm94TWVudVNlcnZpY2UubWVudUxpc3QkLCB0aGlzLnNlYXJjaCQsIHRoaXMudHlwZSRdKS5waXBlKFxuICAgICAgbWFwKChbd2lkZ2V0cywgc2VhcmNoLCB0eXBlXSkgPT5cbiAgICAgICAgd2lkZ2V0cy5maWx0ZXIoXG4gICAgICAgICAgKHdpZGdldCkgPT5cbiAgICAgICAgICAgIChzZWFyY2gubGVuZ3RoID09PSAwIHx8XG4gICAgICAgICAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KHdpZGdldC5sYWJlbCkudG9Mb2NhbGVMb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2gudG9Mb2NhbGVMb3dlckNhc2UoKSkpICYmXG4gICAgICAgICAgICAoIXR5cGUgfHwgdGhpcy50b29sYm94TWFuaWZlc3RTZXJ2aWNlLmdldCh3aWRnZXQudHlwZSkudHlwZSA9PT0gdHlwZSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgICk7XG4gICAgdGhpcy5ub25DdXN0b21XaWRnZXRzJCA9IHRoaXMuZmlsdGVyZWRXaWRnZXRzJC5waXBlKFxuICAgICAgbWFwKCh3aWRnZXRzKSA9PlxuICAgICAgICB3aWRnZXRzLmZpbHRlcihcbiAgICAgICAgICAod2lkZ2V0KSA9PiB0aGlzLnRvb2xib3hNYW5pZmVzdFNlcnZpY2UuaXNNb2RlbCh3aWRnZXQudHlwZSkgfHwgdGhpcy5jdXN0b21Nb2RlbHMuaW5jbHVkZXMod2lkZ2V0LnR5cGUpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApO1xuICAgIHRoaXMuY3VzdG9tV2lkZ2V0cyQgPSB0aGlzLmZpbHRlcmVkV2lkZ2V0cyQucGlwZShcbiAgICAgIG1hcCgod2lkZ2V0cykgPT5cbiAgICAgICAgd2lkZ2V0cy5maWx0ZXIoXG4gICAgICAgICAgKHdpZGdldCkgPT4gIXRoaXMudG9vbGJveE1hbmlmZXN0U2VydmljZS5pc01vZGVsKHdpZGdldC50eXBlKSAmJiAhdGhpcy5jdXN0b21Nb2RlbHMuaW5jbHVkZXMod2lkZ2V0LnR5cGUpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgc2VsZWN0TW9kZShuZXdNb2RlOiBWaWV3TW9kZSkge1xuICAgIHRoaXMuc2VsZWN0ZWRNb2RlID0gbmV3TW9kZTtcbiAgfVxuXG4gIHNlbGVjdFJlc3RpdHV0aW9uKCRldmVudDogV2lkZ2V0KSB7XG4gICAgdGhpcy5zZWxlY3RlZFJlc3RpdHV0aW9uID0gJGV2ZW50O1xuICAgIHRoaXMuc2VsZWN0TW9kZShWaWV3TW9kZS5DT05TVUxUKTtcbiAgfVxuXG4gIGNsb3NlUmVzdGl0dXRpb24oKSB7XG4gICAgdGhpcy5zZWxlY3RlZFJlc3RpdHV0aW9uID0gbnVsbDtcbiAgICB0aGlzLnNlbGVjdE1vZGUodGhpcy5tb2RlLkNBVEFMT0cpO1xuICB9XG5cbiAgdG9nZ2xlKGNhdGVnb3J5OiBzdHJpbmcpIHtcbiAgICB0aGlzLmNhdGVnb3J5T3BlbmVkID0gdGhpcy5jYXRlZ29yeU9wZW5lZCA9PT0gY2F0ZWdvcnkgPyAnJyA6IGNhdGVnb3J5O1xuICB9XG59XG4iLCI8cHJ5LXJlc3RpdHV0aW9uLWNzcz48L3ByeS1yZXN0aXR1dGlvbi1jc3M+XG48ZGl2IGNsYXNzPVwiby1jYXRhbG9nXCI+XG4gIDxuZy10ZW1wbGF0ZSBbbmdJZl09XCJzZWxlY3RlZE1vZGUgPT09IG1vZGUuQ0FUQUxPR1wiPlxuICAgIDxoMiBjbGFzcz1cImEtaDJcIj57eyAnQHByeS5yZXN0aXR1dGlvbi5jYXRhbG9nJyB8IGkxOG4gfX08L2gyPlxuICAgIDxkaXYgY2xhc3M9XCJvLWNhdGFsb2dfX2ZpbHRlcnNcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJvLWNhdGFsb2dfX2ZpbHRlcnNfX2J5LW5hbWVcIj5cbiAgICAgICAgPGxhYmVsIGlkPVwiY2F0YWxvZy1zZWFyY2gtbGFiZWxcIiBmb3I9XCJjYXRhbG9nLXNlYXJjaFwiIGNsYXNzPVwiYS1sYWJlbCB1LXZpc3VhbGx5LWhpZGRlblwiPlxuICAgICAgICAgIDxzcGFuPnt7ICdAcHJ5LnRvb2xib3guY2F0YWxvZy5maWx0ZXIubmFtZScgfCBpMThuIH19PC9zcGFuPlxuICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8cHJ5LWljb24gaWNvblN2Zz1cInNlYXJjaFwiIFt3aWR0aF09XCIxN1wiIFtoZWlnaHRdPVwiMTdcIj48L3ByeS1pY29uPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICBpZD1cImNhdGFsb2ctc2VhcmNoXCJcbiAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgY2xhc3M9XCJhLWZvcm0tZmllbGRcIlxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInQHByeS5hY3Rpb24uc2VhcmNoJyB8IGkxOG5cIlxuICAgICAgICAgIFtuZ01vZGVsXT1cInNlYXJjaCQgfCBhc3luY1wiXG4gICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidGhpcy5zZWFyY2gkLm5leHQoJGV2ZW50KVwiXG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxsYWJlbCBjbGFzcz1cImEtbGFiZWxcIj57eyAnQHByeS5hY3Rpb24uZmlsdGVyQnlUeXBlJyB8IGkxOG4gfX08L2xhYmVsPlxuICAgICAgPGRpdiBjbGFzcz1cIm8tY2F0YWxvZ19fZmlsdGVyc19fYnktdHlwZVwiPlxuICAgICAgICA8dWwgY2xhc3M9XCJvLWNhdGFsb2dfX2ZpbHRlcnNfX2J5LXR5cGVfX2xpc3RcIj5cbiAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IHR5cGVPcHQgb2YgdHlwZXMkIHwgYXN5bmNcIj5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgICAgICAgICBjbGFzcz1cImEtZm9ybS1maWVsZCB1LXNyLW9ubHlcIlxuICAgICAgICAgICAgICBuYW1lPVwiY2F0YWxvZy1maWx0ZXJcIlxuICAgICAgICAgICAgICBpZD1cImNhdGFsb2ctYnV0dG9uLXt7IHR5cGVPcHQudHlwZSB9fVwiXG4gICAgICAgICAgICAgIFtjaGVja2VkXT1cInR5cGVPcHQudHlwZSA9PT0gKHR5cGUkIHwgYXN5bmMpXCJcbiAgICAgICAgICAgICAgKGNoYW5nZSk9XCJ0eXBlJC5uZXh0KHR5cGVPcHQudHlwZSlcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICBjbGFzcz1cImEtbGFiZWxcIlxuICAgICAgICAgICAgICBpZD1cImNhdGFsb2ctYnV0dG9uLWxhYmVsLXt7IHR5cGVPcHQudHlwZSB9fVwiXG4gICAgICAgICAgICAgIGZvcj1cImNhdGFsb2ctYnV0dG9uLXt7IHR5cGVPcHQudHlwZSB9fVwiXG4gICAgICAgICAgICAgIFt0aXRsZV09XCJ0eXBlT3B0LmxhYmVsIHwgaTE4blwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidS1zci1vbmx5XCI+e3sgdHlwZU9wdC5sYWJlbCB8IGkxOG4gfX0gPC9zcGFuPlxuICAgICAgICAgICAgICA8cHJ5LWljb24gW3dpZHRoXT1cIjE4XCIgW2hlaWdodF09XCIxOFwiIFtpY29uU3ZnXT1cInR5cGVPcHQuaWNvblwiPjwvcHJ5LWljb24+XG4gICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDwvbGk+XG4gICAgICAgIDwvdWw+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzcz1cImEtYnRuIGEtYnRuLS1pY29uLXRleHQgLWxpbmstbGlrZVwiXG4gICAgICAgICAgKGNsaWNrKT1cInR5cGUkLm5leHQodW5kZWZpbmVkKVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIiF0eXBlJC5nZXRWYWx1ZSgpXCJcbiAgICAgICAgICBbY2xhc3MudS12aXN1YWxseS1oaWRkZW5dPVwiIXR5cGUkLmdldFZhbHVlKClcIlxuICAgICAgICA+XG4gICAgICAgICAgPHByeS1pY29uIFt3aWR0aF09XCIxNVwiIFtoZWlnaHRdPVwiMTVcIiBpY29uU3ZnPVwiZGVsZXRlXCI+PC9wcnktaWNvbj5cbiAgICAgICAgICB7eyAnQHByeS50b29sYm94LmNhdGFsb2cuZmlsdGVyLmRlbGV0ZScgfCBpMThuIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dUYWJzOyBlbHNlIGxpc3RcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJvLWFjY29yZGlvblwiIHJvbGU9XCJ0YWJsaXN0XCIgYXJpYS1tdWx0aXNlbGVjdGFibGU9XCJmYWxzZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjYXRlZ29yeSBvZiBjYXRlZ29yaWVzXCI+XG4gICAgICAgICAgPGgyIGNsYXNzPVwiby1hY2NvcmRpb25fX3RpdGxlXCIgW2NsYXNzLmlzLWFjdGl2ZV09XCJjYXRlZ29yeU9wZW5lZCA9PT0gY2F0ZWdvcnlcIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiby1hY2NvcmRpb25fX3RpdGxlX19idG5cIlxuICAgICAgICAgICAgICBbaWRdPVwiJ2J1dHRvbl8nICsgY2F0ZWdvcnlcIlxuICAgICAgICAgICAgICByb2xlPVwidGFiXCJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1jb250cm9sc109XCIncGFuZWxfJyArIGNhdGVnb3J5XCJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1zZWxlY3RlZF09XCJjYXRlZ29yeU9wZW5lZCA9PT0gY2F0ZWdvcnlcIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cImNhdGVnb3J5T3BlbmVkID09PSBjYXRlZ29yeVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGUoY2F0ZWdvcnkpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAge3sgJ0BwcnkucmVzdGl0dXRpb24uY2F0YWxvZ1RhYnMuJyArIGNhdGVnb3J5IHwgaTE4biB9fVxuICAgICAgICAgICAgICAgICh7eyBjYXRlZ29yeSA9PT0gJ21vZGVsJyA/IChub25DdXN0b21XaWRnZXRzJCB8IGFzeW5jKT8ubGVuZ3RoIDogKGN1c3RvbVdpZGdldHMkIHwgYXN5bmMpPy5sZW5ndGggfX0pXG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPHByeS1pY29uXG4gICAgICAgICAgICAgICAgW3dpZHRoXT1cIjE1XCJcbiAgICAgICAgICAgICAgICBbaGVpZ2h0XT1cIjE1XCJcbiAgICAgICAgICAgICAgICBbaWNvblN2Z109XCJjYXRlZ29yeU9wZW5lZCA9PT0gY2F0ZWdvcnkgPyAnY2hldnJvbl90b3Bfcm91bmRlZCcgOiAnY2hldnJvbl9ib3R0b21fcm91bmRlZCdcIlxuICAgICAgICAgICAgICA+PC9wcnktaWNvbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvaDI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJvLWFjY29yZGlvbl9fcGFuZWxcIlxuICAgICAgICAgICAgcm9sZT1cInRhYnBhbmVsXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCInYnV0dG9uXycgKyBjYXRlZ29yeVwiXG4gICAgICAgICAgICBbaWRdPVwiJ3BhbmVsXycgKyBjYXRlZ29yeVwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWhpZGRlbl09XCJjYXRlZ29yeU9wZW5lZCAhPT0gY2F0ZWdvcnlcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjYXRlZ29yeU9wZW5lZCA9PT0gY2F0ZWdvcnlcIj5cbiAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiby1jYXRhbG9nX19saXN0XCIgcm9sZT1cImxpc3RcIiBhcmlhLWxpdmU9XCJwb2xpdGVcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2F0ZWdvcnlPcGVuZWQgPT09ICdtb2RlbCdcIj5cbiAgICAgICAgICAgICAgICAgIDxwcnktY2F0YWxvZy1pdGVtXG4gICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCB3aWRnZXQgb2Ygbm9uQ3VzdG9tV2lkZ2V0cyQgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgICAgIFt3aWRnZXRdPVwid2lkZ2V0XCJcbiAgICAgICAgICAgICAgICAgICAgKHNlbGVjdFJlc3RpdHV0aW9uKT1cInNlbGVjdFJlc3RpdHV0aW9uKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgPjwvcHJ5LWNhdGFsb2ctaXRlbT5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2F0ZWdvcnlPcGVuZWQgPT09ICdub01vZGVsJ1wiPlxuICAgICAgICAgICAgICAgICAgPHByeS1jYXRhbG9nLWl0ZW1cbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHdpZGdldCBvZiBjdXN0b21XaWRnZXRzJCB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICAgICAgW3dpZGdldF09XCJ3aWRnZXRcIlxuICAgICAgICAgICAgICAgICAgICAoc2VsZWN0UmVzdGl0dXRpb24pPVwic2VsZWN0UmVzdGl0dXRpb24oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICA+PC9wcnktY2F0YWxvZy1pdGVtPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctdGVtcGxhdGUgI2xpc3Q+XG4gICAgICA8dWwgY2xhc3M9XCJvLWNhdGFsb2dfX2xpc3RcIiByb2xlPVwibGlzdFwiIGFyaWEtbGl2ZT1cInBvbGl0ZVwiPlxuICAgICAgICA8cHJ5LWNhdGFsb2ctaXRlbVxuICAgICAgICAgICpuZ0Zvcj1cImxldCB3aWRnZXQgb2YgZmlsdGVyZWRXaWRnZXRzJCB8IGFzeW5jXCJcbiAgICAgICAgICBbd2lkZ2V0XT1cIndpZGdldFwiXG4gICAgICAgICAgKHNlbGVjdFJlc3RpdHV0aW9uKT1cInNlbGVjdFJlc3RpdHV0aW9uKCRldmVudClcIlxuICAgICAgICA+PC9wcnktY2F0YWxvZy1pdGVtPlxuICAgICAgPC91bD5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L25nLXRlbXBsYXRlPlxuXG4gIDxuZy10ZW1wbGF0ZSBbbmdJZl09XCJzZWxlY3RlZE1vZGUgPT09IG1vZGUuQ09OU1VMVFwiPlxuICAgIDxkaXYgY2xhc3M9XCJvLWNhdGFsb2dfX2NyZWF0ZVwiPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImEtYnRuIGEtYnRuLS1zZWNvbmRhcnlcIiAoY2xpY2spPVwiY2xvc2VSZXN0aXR1dGlvbigpXCI+XG4gICAgICAgIHt7ICdAcHJ5LnJlc3RpdHV0aW9uLmNhbmNlbCcgfCBpMThuIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cblxuICAgIDxwcnktcmVzdGl0dXRpb25cbiAgICAgIFtzZWxlY3RlZFJlc3RpdHV0aW9uXT1cInNlbGVjdGVkUmVzdGl0dXRpb25cIlxuICAgICAgW2VkaXRdPVwiZmFsc2VcIlxuICAgICAgKHJlc3RpdHV0aW9uQ3JlYXRlZCk9XCJjbG9zZVJlc3RpdHV0aW9uKClcIlxuICAgID48L3ByeS1yZXN0aXR1dGlvbj5cbiAgPC9uZy10ZW1wbGF0ZT5cblxuICA8bmctdGVtcGxhdGUgW25nSWZdPVwic2VsZWN0ZWRNb2RlID09PSBtb2RlLkNSRUFUSU9OXCI+XG4gICAgPGRpdiBjbGFzcz1cIm8tY2F0YWxvZ19fY3JlYXRlXCI+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwiYS1idG4gYS1idG4tLWdob3N0XCIgKGNsaWNrKT1cInNlbGVjdE1vZGUobW9kZS5DQVRBTE9HKVwiPlxuICAgICAgICB7eyAnQHByeS5yZXN0aXR1dGlvbi5jYW5jZWwnIHwgaTE4biB9fVxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG5cbiAgICA8cHJ5LXJlc3RpdHV0aW9uIChyZXN0aXR1dGlvbkNyZWF0ZWQpPVwiY2xvc2VSZXN0aXR1dGlvbigpXCI+PC9wcnktcmVzdGl0dXRpb24+XG4gIDwvbmctdGVtcGxhdGU+XG48L2Rpdj5cbiJdfQ==
|
|
64
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdGl0dXRpb24tbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9yZXN0aXR1dGlvbi9jb21wb25lbnRzL3Jlc3RpdHV0aW9uLWxpc3QvcmVzdGl0dXRpb24tbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9yZXN0aXR1dGlvbi9jb21wb25lbnRzL3Jlc3RpdHV0aW9uLWxpc3QvcmVzdGl0dXRpb24tbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVqRCxPQUFPLEVBRUwsYUFBYSxFQUViLGlCQUFpQixFQUNqQix3QkFBd0IsRUFHeEIsUUFBUSxFQUVULE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFjLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7QUFNdkUsTUFBTSxPQUFPLDJCQUE0QixTQUFRLHdCQUF3QjtJQUV2RSxJQUNJLFlBQVk7UUFDZCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDNUIsQ0FBQztJQUNELElBQUksWUFBWSxDQUFDLE1BQWdCO1FBQy9CLElBQUksQ0FBQyxhQUFhLEdBQUcsQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLEdBQUcsTUFBTSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQWNELFlBQ1Usa0JBQXNDLEVBQ3RDLGdCQUFnQyxFQUNoQyxzQkFBOEMsRUFDOUMsS0FBWTtRQUVwQixLQUFLLEVBQUUsQ0FBQztRQUxBLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFnQjtRQUNoQywyQkFBc0IsR0FBdEIs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QUcsSUFBSSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNyQyxDQUFDOzhHQXJFVSwyQkFBMkI7a0dBQTNCLDJCQUEyQiwwSUNuQnhDLHV6SkF3SEE7OzJGRHJHYSwyQkFBMkI7a0JBSnZDLFNBQVM7K0JBQ0UsYUFBYTsrTEFJZCxRQUFRO3NCQUFoQixLQUFLO2dCQUVGLFlBQVk7c0JBRGYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHtcbiAgQ2F0YWxvZ0VudHJ5LFxuICBDb25maWdBY3Rpb25zLFxuICBQcnlJMThuU2VydmljZSxcbiAgUHJ5VmlzaWJpbGl0eVR5cGUsXG4gIFN1YnNjcmlwdGlvbm5lckRpcmVjdGl2ZSxcbiAgVG9vbGJveE1hbmlmZXN0U2VydmljZSxcbiAgVG9vbGJveE1lbnVTZXJ2aWNlLFxuICBWaWV3TW9kZSxcbiAgV2lkZ2V0XG59IGZyb20gJ0Bwcm92b2x5L2Rhc2hib2FyZCc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIG1hcCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwcnktY2F0YWxvZycsXG4gIHRlbXBsYXRlVXJsOiAnLi9yZXN0aXR1dGlvbi1saXN0LmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBQcnlSZXN0aXR1dGlvbkxpc3RDb21wb25lbnQgZXh0ZW5kcyBTdWJzY3JpcHRpb25uZXJEaXJlY3RpdmUge1xuICBASW5wdXQoKSBzaG93VGFicyA9IHRydWU7XG4gIEBJbnB1dCgpXG4gIGdldCBjdXN0b21Nb2RlbHMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLl9jdXN0b21Nb2RlbHM7XG4gIH1cbiAgc2V0IGN1c3RvbU1vZGVscyhtb2RlbHM6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5fY3VzdG9tTW9kZWxzID0gWydkZXRhaWwnLCAnaWZyYW1lJywgLi4ubW9kZWxzXTtcbiAgfVxuICBwcml2YXRlIF9jdXN0b21Nb2RlbHMgPSBbJ2RldGFpbCcsICdpZnJhbWUnXTtcbiAgc2VhcmNoJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoJycpO1xuICB0eXBlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8dW5kZWZpbmVkIHwgc3RyaW5nPih1bmRlZmluZWQpO1xuICBmaWx0ZXJlZFdpZGdldHMkOiBPYnNlcnZhYmxlPENhdGFsb2dFbnRyeVtdPjtcbiAgbm9uQ3VzdG9tV2lkZ2V0cyQ6IE9ic2VydmFibGU8Q2F0YWxvZ0VudHJ5W10+O1xuICBjdXN0b21XaWRnZXRzJDogT2JzZXJ2YWJsZTxDYXRhbG9nRW50cnlbXT47XG4gIHR5cGVzJDogT2JzZXJ2YWJsZTx7IGljb246IHN0cmluZzsgbGFiZWw6IHN0cmluZzsgdHlwZTogc3RyaW5nIH1bXT47XG4gIHNlbGVjdGVkUmVzdGl0dXRpb246IFdpZGdldCB8IG51bGwgPSBudWxsO1xuICBtb2RlID0gVmlld01vZGU7XG4gIHNlbGVjdGVkTW9kZTogVmlld01vZGUgPSBWaWV3TW9kZS5DQVRBTE9HO1xuICBjYXRlZ29yaWVzID0gWydtb2RlbCcsICdub01vZGVsJ107XG4gIFByeVZpc2liaWxpdHlUeXBlID0gUHJ5VmlzaWJpbGl0eVR5cGU7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSB0b29sYm94TWVudVNlcnZpY2U6IFRvb2xib3hNZW51U2VydmljZSxcbiAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFByeUkxOG5TZXJ2aWNlLFxuICAgIHByaXZhdGUgdG9vbGJveE1hbmlmZXN0U2VydmljZTogVG9vbGJveE1hbmlmZXN0U2VydmljZSxcbiAgICBwcml2YXRlIHN0b3JlOiBTdG9yZVxuICApIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goQ29uZmlnQWN0aW9ucy5sb2FkV2lkZ2V0cygpKTtcbiAgICB0aGlzLnR5cGVzJCA9IHRoaXMudG9vbGJveE1lbnVTZXJ2aWNlLnR5cGVzJDtcbiAgICB0aGlzLmZpbHRlcmVkV2lkZ2V0cyQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLnRvb2xib3hNZW51U2VydmljZS5tZW51TGlzdCQsIHRoaXMuc2VhcmNoJCwgdGhpcy50eXBlJF0pLnBpcGUoXG4gICAgICBtYXAoKFt3aWRnZXRzLCBzZWFyY2gsIHR5cGVdKSA9PlxuICAgICAgICB3aWRnZXRzLmZpbHRlcihcbiAgICAgICAgICAod2lkZ2V0KSA9PlxuICAgICAgICAgICAgKHNlYXJjaC5sZW5ndGggPT09IDAgfHxcbiAgICAgICAgICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQod2lkZ2V0LmxhYmVsKS50b0xvY2FsZUxvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaC50b0xvY2FsZUxvd2VyQ2FzZSgpKSkgJiZcbiAgICAgICAgICAgICghdHlwZSB8fCB0aGlzLnRvb2xib3hNYW5pZmVzdFNlcnZpY2UuZ2V0KHdpZGdldC50eXBlKS50eXBlID09PSB0eXBlKVxuICAgICAgICApXG4gICAgICApXG4gICAgKTtcbiAgICB0aGlzLm5vbkN1c3RvbVdpZGdldHMkID0gdGhpcy5maWx0ZXJlZFdpZGdldHMkLnBpcGUoXG4gICAgICBtYXAoKHdpZGdldHMpID0+XG4gICAgICAgIHdpZGdldHMuZmlsdGVyKFxuICAgICAgICAgICh3aWRnZXQpID0+IHRoaXMudG9vbGJveE1hbmlmZXN0U2VydmljZS5pc01vZGVsKHdpZGdldC50eXBlKSB8fCB0aGlzLmN1c3RvbU1vZGVscy5pbmNsdWRlcyh3aWRnZXQudHlwZSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgICk7XG4gICAgdGhpcy5jdXN0b21XaWRnZXRzJCA9IHRoaXMuZmlsdGVyZWRXaWRnZXRzJC5waXBlKFxuICAgICAgbWFwKCh3aWRnZXRzKSA9PlxuICAgICAgICB3aWRnZXRzLmZpbHRlcihcbiAgICAgICAgICAod2lkZ2V0KSA9PiAhdGhpcy50b29sYm94TWFuaWZlc3RTZXJ2aWNlLmlzTW9kZWwod2lkZ2V0LnR5cGUpICYmICF0aGlzLmN1c3RvbU1vZGVscy5pbmNsdWRlcyh3aWRnZXQudHlwZSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBzZWxlY3RNb2RlKG5ld01vZGU6IFZpZXdNb2RlKSB7XG4gICAgdGhpcy5zZWxlY3RlZE1vZGUgPSBuZXdNb2RlO1xuICB9XG5cbiAgc2VsZWN0UmVzdGl0dXRpb24oJGV2ZW50OiBXaWRnZXQpIHtcbiAgICB0aGlzLnNlbGVjdGVkUmVzdGl0dXRpb24gPSAkZXZlbnQ7XG4gICAgdGhpcy5zZWxlY3RNb2RlKFZpZXdNb2RlLkNPTlNVTFQpO1xuICB9XG5cbiAgY2xvc2VSZXN0aXR1dGlvbigpIHtcbiAgICB0aGlzLnNlbGVjdGVkUmVzdGl0dXRpb24gPSBudWxsO1xuICAgIHRoaXMuc2VsZWN0TW9kZSh0aGlzLm1vZGUuQ0FUQUxPRyk7XG4gIH1cbn1cbiIsIjxwcnktcmVzdGl0dXRpb24tY3NzPjwvcHJ5LXJlc3RpdHV0aW9uLWNzcz5cbjxkaXYgY2xhc3M9XCJvLWNhdGFsb2dcIj5cbiAgPG5nLXRlbXBsYXRlIFtuZ0lmXT1cInNlbGVjdGVkTW9kZSA9PT0gbW9kZS5DQVRBTE9HXCI+XG4gICAgPGgyIGNsYXNzPVwiYS1oMlwiPnt7ICdAcHJ5LnJlc3RpdHV0aW9uLmNhdGFsb2cnIHwgaTE4biB9fTwvaDI+XG4gICAgPGRpdiBjbGFzcz1cIm8tY2F0YWxvZ19fZmlsdGVyc1wiPlxuICAgICAgPGRpdiBjbGFzcz1cIm8tY2F0YWxvZ19fZmlsdGVyc19fYnktbmFtZVwiPlxuICAgICAgICA8bGFiZWwgaWQ9XCJjYXRhbG9nLXNlYXJjaC1sYWJlbFwiIGZvcj1cImNhdGFsb2ctc2VhcmNoXCIgY2xhc3M9XCJhLWxhYmVsIHUtdmlzdWFsbHktaGlkZGVuXCI+XG4gICAgICAgICAgPHNwYW4+e3sgJ0BwcnkudG9vbGJveC5jYXRhbG9nLmZpbHRlci5uYW1lJyB8IGkxOG4gfX08L3NwYW4+XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDxwcnktaWNvbiBpY29uU3ZnPVwic2VhcmNoXCIgW3dpZHRoXT1cIjE3XCIgW2hlaWdodF09XCIxN1wiPjwvcHJ5LWljb24+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIGlkPVwiY2F0YWxvZy1zZWFyY2hcIlxuICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICBjbGFzcz1cImEtZm9ybS1maWVsZFwiXG4gICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidAcHJ5LmFjdGlvbi5zZWFyY2gnIHwgaTE4blwiXG4gICAgICAgICAgW25nTW9kZWxdPVwic2VhcmNoJCB8IGFzeW5jXCJcbiAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ0aGlzLnNlYXJjaCQubmV4dCgkZXZlbnQpXCJcbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgICAgPGxhYmVsIGNsYXNzPVwiYS1sYWJlbFwiPnt7ICdAcHJ5LmFjdGlvbi5maWx0ZXJCeVR5cGUnIHwgaTE4biB9fTwvbGFiZWw+XG4gICAgICA8ZGl2IGNsYXNzPVwiby1jYXRhbG9nX19maWx0ZXJzX19ieS10eXBlXCI+XG4gICAgICAgIDx1bCBjbGFzcz1cIm8tY2F0YWxvZ19fZmlsdGVyc19fYnktdHlwZV9fbGlzdFwiPlxuICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgdHlwZU9wdCBvZiB0eXBlcyQgfCBhc3luY1wiPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICAgICAgICAgIGNsYXNzPVwiYS1mb3JtLWZpZWxkIHUtc3Itb25seVwiXG4gICAgICAgICAgICAgIG5hbWU9XCJjYXRhbG9nLWZpbHRlclwiXG4gICAgICAgICAgICAgIGlkPVwiY2F0YWxvZy1idXR0b24te3sgdHlwZU9wdC50eXBlIH19XCJcbiAgICAgICAgICAgICAgW2NoZWNrZWRdPVwidHlwZU9wdC50eXBlID09PSAodHlwZSQgfCBhc3luYylcIlxuICAgICAgICAgICAgICAoY2hhbmdlKT1cInR5cGUkLm5leHQodHlwZU9wdC50eXBlKVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICAgIGNsYXNzPVwiYS1sYWJlbFwiXG4gICAgICAgICAgICAgIGlkPVwiY2F0YWxvZy1idXR0b24tbGFiZWwte3sgdHlwZU9wdC50eXBlIH19XCJcbiAgICAgICAgICAgICAgZm9yPVwiY2F0YWxvZy1idXR0b24te3sgdHlwZU9wdC50eXBlIH19XCJcbiAgICAgICAgICAgICAgW3RpdGxlXT1cInR5cGVPcHQubGFiZWwgfCBpMThuXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1LXNyLW9ubHlcIj57eyB0eXBlT3B0LmxhYmVsIHwgaTE4biB9fSA8L3NwYW4+XG4gICAgICAgICAgICAgIDxwcnktaWNvbiBbd2lkdGhdPVwiMThcIiBbaGVpZ2h0XT1cIjE4XCIgW2ljb25TdmddPVwidHlwZU9wdC5pY29uXCI+PC9wcnktaWNvbj5cbiAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPC9saT5cbiAgICAgICAgPC91bD5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzPVwiYS1idG4gYS1idG4tLWljb24tdGV4dCAtbGluay1saWtlXCJcbiAgICAgICAgICAoY2xpY2spPVwidHlwZSQubmV4dCh1bmRlZmluZWQpXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiIXR5cGUkLmdldFZhbHVlKClcIlxuICAgICAgICAgIFtjbGFzcy51LXZpc3VhbGx5LWhpZGRlbl09XCIhdHlwZSQuZ2V0VmFsdWUoKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8cHJ5LWljb24gW3dpZHRoXT1cIjE1XCIgW2hlaWdodF09XCIxNVwiIGljb25Tdmc9XCJkZWxldGVcIj48L3ByeS1pY29uPlxuICAgICAgICAgIHt7ICdAcHJ5LnRvb2xib3guY2F0YWxvZy5maWx0ZXIuZGVsZXRlJyB8IGkxOG4gfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd1RhYnM7IGVsc2UgbGlzdFwiPlxuICAgICAgPGRpdiBjbGFzcz1cIm8tYWNjb3JkaW9uXCIgcm9sZT1cInRhYmxpc3RcIiBhcmlhLW11bHRpc2VsZWN0YWJsZT1cImZhbHNlXCI+XG4gICAgICAgIDxwcnktYWNjb3JkaW9uPlxuICAgICAgICAgIDxwcnktYWNjb3JkaW9uLWl0ZW1cbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjYXRlZ29yeSBvZiBjYXRlZ29yaWVzOyBsZXQgaW5kZXggPSBpbmRleFwiXG4gICAgICAgICAgICBbaXRlbV09XCJjYXRlZ29yeVwiXG4gICAgICAgICAgICBbaW5kZXhdPVwiaW5kZXhcIlxuICAgICAgICAgICAgdHJhbnNsYXRpb25TdHJpbmdCYXNlPVwiQHByeS5yZXN0aXR1dGlvbi5jYXRhbG9nVGFicy5cIlxuICAgICAgICAgICAgW2xlbmd0aF09XCJjYXRlZ29yeSA9PT0gJ21vZGVsJyA/IChub25DdXN0b21XaWRnZXRzJCB8IGFzeW5jKT8ubGVuZ3RoIDogKGN1c3RvbVdpZGdldHMkIHwgYXN5bmMpPy5sZW5ndGhcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDx1bCBjbGFzcz1cIm8tY2F0YWxvZ19fbGlzdFwiIHJvbGU9XCJsaXN0XCIgYXJpYS1saXZlPVwicG9saXRlXCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjYXRlZ29yeSA9PT0gJ21vZGVsJ1wiPlxuICAgICAgICAgICAgICAgIDxwcnktY2F0YWxvZy1pdGVtXG4gICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgd2lkZ2V0IG9mIG5vbkN1c3RvbVdpZGdldHMkIHwgYXN5bmNcIlxuICAgICAgICAgICAgICAgICAgW3dpZGdldF09XCJ3aWRnZXRcIlxuICAgICAgICAgICAgICAgICAgKHNlbGVjdFJlc3RpdHV0aW9uKT1cInNlbGVjdFJlc3RpdHV0aW9uKCRldmVudClcIlxuICAgICAgICAgICAgICAgID48L3ByeS1jYXRhbG9nLWl0ZW0+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2F0ZWdvcnkgPT09ICdub01vZGVsJ1wiPlxuICAgICAgICAgICAgICAgIDxwcnktY2F0YWxvZy1pdGVtXG4gICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgd2lkZ2V0IG9mIGN1c3RvbVdpZGdldHMkIHwgYXN5bmNcIlxuICAgICAgICAgICAgICAgICAgW3dpZGdldF09XCJ3aWRnZXRcIlxuICAgICAgICAgICAgICAgICAgKHNlbGVjdFJlc3RpdHV0aW9uKT1cInNlbGVjdFJlc3RpdHV0aW9uKCRldmVudClcIlxuICAgICAgICAgICAgICAgID48L3ByeS1jYXRhbG9nLWl0ZW0+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICA8L3ByeS1hY2NvcmRpb24taXRlbT5cbiAgICAgICAgPC9wcnktYWNjb3JkaW9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctdGVtcGxhdGUgI2xpc3Q+XG4gICAgICA8dWwgY2xhc3M9XCJvLWNhdGFsb2dfX2xpc3RcIiByb2xlPVwibGlzdFwiIGFyaWEtbGl2ZT1cInBvbGl0ZVwiPlxuICAgICAgICA8cHJ5LWNhdGFsb2ctaXRlbVxuICAgICAgICAgICpuZ0Zvcj1cImxldCB3aWRnZXQgb2YgZmlsdGVyZWRXaWRnZXRzJCB8IGFzeW5jXCJcbiAgICAgICAgICBbd2lkZ2V0XT1cIndpZGdldFwiXG4gICAgICAgICAgKHNlbGVjdFJlc3RpdHV0aW9uKT1cInNlbGVjdFJlc3RpdHV0aW9uKCRldmVudClcIlxuICAgICAgICA+PC9wcnktY2F0YWxvZy1pdGVtPlxuICAgICAgPC91bD5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L25nLXRlbXBsYXRlPlxuXG4gIDxuZy10ZW1wbGF0ZSBbbmdJZl09XCJzZWxlY3RlZE1vZGUgPT09IG1vZGUuQ09OU1VMVFwiPlxuICAgIDxkaXYgY2xhc3M9XCJvLWNhdGFsb2dfX2NyZWF0ZVwiPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImEtYnRuIGEtYnRuLS1zZWNvbmRhcnlcIiAoY2xpY2spPVwiY2xvc2VSZXN0aXR1dGlvbigpXCI+XG4gICAgICAgIHt7ICdAcHJ5LnJlc3RpdHV0aW9uLmNhbmNlbCcgfCBpMThuIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cblxuICAgIDxwcnktcmVzdGl0dXRpb25cbiAgICAgIFtzZWxlY3RlZFJlc3RpdHV0aW9uXT1cInNlbGVjdGVkUmVzdGl0dXRpb25cIlxuICAgICAgW2VkaXRdPVwiZmFsc2VcIlxuICAgICAgKHJlc3RpdHV0aW9uQ3JlYXRlZCk9XCJjbG9zZVJlc3RpdHV0aW9uKClcIlxuICAgID48L3ByeS1yZXN0aXR1dGlvbj5cbiAgPC9uZy10ZW1wbGF0ZT5cblxuICA8bmctdGVtcGxhdGUgW25nSWZdPVwic2VsZWN0ZWRNb2RlID09PSBtb2RlLkNSRUFUSU9OXCI+XG4gICAgPGRpdiBjbGFzcz1cIm8tY2F0YWxvZ19fY3JlYXRlXCI+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwiYS1idG4gYS1idG4tLWdob3N0XCIgKGNsaWNrKT1cInNlbGVjdE1vZGUobW9kZS5DQVRBTE9HKVwiPlxuICAgICAgICB7eyAnQHByeS5yZXN0aXR1dGlvbi5jYW5jZWwnIHwgaTE4biB9fVxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG5cbiAgICA8cHJ5LXJlc3RpdHV0aW9uIChyZXN0aXR1dGlvbkNyZWF0ZWQpPVwiY2xvc2VSZXN0aXR1dGlvbigpXCI+PC9wcnktcmVzdGl0dXRpb24+XG4gIDwvbmctdGVtcGxhdGU+XG48L2Rpdj5cbiJdfQ==
|