ontimize-web-ngx
Version:
Ontimize Web framework using Angular 15
58 lines • 18.1 kB
JavaScript
import { SelectionModel } from '@angular/cdk/collections';
import { Component, EventEmitter, Inject, Injector, ViewChild } from '@angular/core';
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
import { MatSelectionList } from '@angular/material/list';
import { DialogService } from '../../../../../services/dialog.service';
import * as i0 from "@angular/core";
import * as i1 from "@angular/material/dialog";
import * as i2 from "@angular/common";
import * as i3 from "@angular/flex-layout/flex";
import * as i4 from "@angular/material/button";
import * as i5 from "@angular/material/list";
import * as i6 from "../../../../../pipes/o-translate.pipe";
export class OTableApplyConfigurationDialogComponent {
constructor(dialogRef, data, injector) {
this.dialogRef = dialogRef;
this.injector = injector;
this.default_configuration = 'OTableApplyConfigurationDialogComponent-default';
this.configurations = [];
this.onDelete = new EventEmitter();
this.loadConfigurations(data);
this.dialogService = this.injector.get(DialogService);
}
ngOnInit() {
this.configurationList.selectedOptions = new SelectionModel(false);
}
loadConfigurations(configurations) {
this.configurations = configurations;
}
removeConfiguration(configurationName) {
this.dialogService.confirm('CONFIRM', 'TABLE.DIALOG.CONFIRM_REMOVE_CONFIGURATION').then(result => {
if (result) {
this.onDelete.emit(configurationName);
}
});
}
isDefaultConfigurationSelected() {
const selected = this.configurationList.selectedOptions.selected;
const selectedValue = selected.length ? selected[0].value : void 0;
return selectedValue === this.default_configuration;
}
getSelectedConfigurationName() {
const selected = this.configurationList.selectedOptions.selected;
return selected.length ? selected[0].value : void 0;
}
}
OTableApplyConfigurationDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OTableApplyConfigurationDialogComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
OTableApplyConfigurationDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: OTableApplyConfigurationDialogComponent, selector: "o-table-apply-configuration-dialog", viewQueries: [{ propertyName: "configurationList", first: true, predicate: MatSelectionList, descendants: true, static: true }], ngImport: i0, template: "<span mat-dialog-title>{{ 'TABLE.BUTTONS.APPLY_CONFIGURATION' | oTranslate }}</span>\n\n<mat-dialog-content fxLayout=\"column\">\n <div mat-subheader>{{ 'TABLE.DIALOG.APPLY_CONFIGURATION' | oTranslate }}</div>\n <mat-selection-list #configurationList class=\"o-table-apply-configuration-dialog-list\">\n <mat-list-option checkboxPosition=\"before\" [value]=\"default_configuration\">\n <span matListItemTitle class=\"o-table-apply-configuration-dialog-list-title\">\n {{ 'TABLE.DIALOG.APPLY_CONFIGURATION_DEFAULT' | oTranslate }}\n </span>\n <span matListItemLine>{{ 'TABLE.DIALOG.APPLY_CONFIGURATION_DEFAULT_DESCRIPTION' | oTranslate }}</span>\n </mat-list-option>\n <mat-list-option checkboxPosition=\"before\" *ngFor=\"let configuration of configurations; let i = index\" [value]=\"configuration.name\">\n <span matListItemTitle>{{ configuration.name }}</span>\n <span matListItemLine>{{ configuration.description }}</span>\n </mat-list-option>\n </mat-selection-list>\n</mat-dialog-content>\n\n<mat-dialog-actions align=\"end\">\n <button type=\"button\" mat-stroked-button [disabled]=\"configurationList.selectedOptions.selected.length!==1 || isDefaultConfigurationSelected()\"\n (click)=\"removeConfiguration(configurationList.selectedOptions.selected[0].value)\" class=\"o-button-danger\">\n {{ 'DELETE' | oTranslate }}\n </button>\n <span fxFlex></span>\n <button type=\"button\" mat-stroked-button [mat-dialog-close]=\"false\" class=\"o-button-default cancel\">{{ 'CANCEL' | oTranslate }}</button>\n <button type=\"button\" mat-stroked-button [mat-dialog-close]=\"true\" [disabled]=\"configurationList.selectedOptions.selected.length!==1\"\n class=\"o-button-primary\">{{ 'OK' | oTranslate }}</button>\n</mat-dialog-actions>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i3.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "component", type: i4.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "component", type: i5.MatSelectionList, selector: "mat-selection-list", inputs: ["color", "compareWith", "multiple", "hideSingleSelectionIndicator", "disabled"], outputs: ["selectionChange"], exportAs: ["matSelectionList"] }, { kind: "component", type: i5.MatListOption, selector: "mat-list-option", inputs: ["togglePosition", "checkboxPosition", "color", "value", "selected"], outputs: ["selectedChange"], exportAs: ["matListOption"] }, { kind: "directive", type: i5.MatListSubheaderCssMatStyler, selector: "[mat-subheader], [matSubheader]" }, { kind: "directive", type: i5.MatListItemLine, selector: "[matListItemLine]" }, { kind: "directive", type: i5.MatListItemTitle, selector: "[matListItemTitle]" }, { kind: "pipe", type: i6.OTranslatePipe, name: "oTranslate" }] });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OTableApplyConfigurationDialogComponent, decorators: [{
type: Component,
args: [{ selector: 'o-table-apply-configuration-dialog', template: "<span mat-dialog-title>{{ 'TABLE.BUTTONS.APPLY_CONFIGURATION' | oTranslate }}</span>\n\n<mat-dialog-content fxLayout=\"column\">\n <div mat-subheader>{{ 'TABLE.DIALOG.APPLY_CONFIGURATION' | oTranslate }}</div>\n <mat-selection-list #configurationList class=\"o-table-apply-configuration-dialog-list\">\n <mat-list-option checkboxPosition=\"before\" [value]=\"default_configuration\">\n <span matListItemTitle class=\"o-table-apply-configuration-dialog-list-title\">\n {{ 'TABLE.DIALOG.APPLY_CONFIGURATION_DEFAULT' | oTranslate }}\n </span>\n <span matListItemLine>{{ 'TABLE.DIALOG.APPLY_CONFIGURATION_DEFAULT_DESCRIPTION' | oTranslate }}</span>\n </mat-list-option>\n <mat-list-option checkboxPosition=\"before\" *ngFor=\"let configuration of configurations; let i = index\" [value]=\"configuration.name\">\n <span matListItemTitle>{{ configuration.name }}</span>\n <span matListItemLine>{{ configuration.description }}</span>\n </mat-list-option>\n </mat-selection-list>\n</mat-dialog-content>\n\n<mat-dialog-actions align=\"end\">\n <button type=\"button\" mat-stroked-button [disabled]=\"configurationList.selectedOptions.selected.length!==1 || isDefaultConfigurationSelected()\"\n (click)=\"removeConfiguration(configurationList.selectedOptions.selected[0].value)\" class=\"o-button-danger\">\n {{ 'DELETE' | oTranslate }}\n </button>\n <span fxFlex></span>\n <button type=\"button\" mat-stroked-button [mat-dialog-close]=\"false\" class=\"o-button-default cancel\">{{ 'CANCEL' | oTranslate }}</button>\n <button type=\"button\" mat-stroked-button [mat-dialog-close]=\"true\" [disabled]=\"configurationList.selectedOptions.selected.length!==1\"\n class=\"o-button-primary\">{{ 'OK' | oTranslate }}</button>\n</mat-dialog-actions>\n" }]
}], ctorParameters: function () { return [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
type: Inject,
args: [MAT_DIALOG_DATA]
}] }, { type: i0.Injector }]; }, propDecorators: { configurationList: [{
type: ViewChild,
args: [MatSelectionList, { static: true }]
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby10YWJsZS1hcHBseS1jb25maWd1cmF0aW9uLWRpYWxvZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvY29tcG9uZW50cy90YWJsZS9leHRlbnNpb25zL2RpYWxvZy9hcHBseS1jb25maWd1cmF0aW9uL28tdGFibGUtYXBwbHktY29uZmlndXJhdGlvbi1kaWFsb2cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL2NvbXBvbmVudHMvdGFibGUvZXh0ZW5zaW9ucy9kaWFsb2cvYXBwbHktY29uZmlndXJhdGlvbi9vLXRhYmxlLWFwcGx5LWNvbmZpZ3VyYXRpb24tZGlhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFVLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RixPQUFPLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pFLE9BQU8sRUFBaUIsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUV6RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0NBQXdDLENBQUM7Ozs7Ozs7O0FBT3ZFLE1BQU0sT0FBTyx1Q0FBdUM7SUFZbEQsWUFDUyxTQUFnRSxFQUM5QyxJQUEyQixFQUMxQyxRQUFrQjtRQUZyQixjQUFTLEdBQVQsU0FBUyxDQUF1RDtRQUU3RCxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBYnZCLDBCQUFxQixHQUFHLGlEQUFpRCxDQUFDO1FBQzFFLG1CQUFjLEdBQTBCLEVBQUUsQ0FBQztRQUUzQyxhQUFRLEdBQXlCLElBQUksWUFBWSxFQUFFLENBQUM7UUFZekQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVNLFFBQVE7UUFDYixJQUFJLENBQUMsaUJBQWlCLENBQUMsZUFBZSxHQUFHLElBQUksY0FBYyxDQUFnQixLQUFLLENBQUMsQ0FBQztJQUNwRixDQUFDO0lBRU0sa0JBQWtCLENBQUMsY0FBcUM7UUFDN0QsSUFBSSxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUM7SUFDdkMsQ0FBQztJQUVNLG1CQUFtQixDQUFDLGlCQUF5QjtRQUNsRCxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsMkNBQTJDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDL0YsSUFBSSxNQUFNLEVBQUU7Z0JBQ1YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQzthQUN2QztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLDhCQUE4QjtRQUNuQyxNQUFNLFFBQVEsR0FBb0IsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUM7UUFDbEYsTUFBTSxhQUFhLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbkUsT0FBTyxhQUFhLEtBQUssSUFBSSxDQUFDLHFCQUFxQixDQUFDO0lBQ3RELENBQUM7SUFFTSw0QkFBNEI7UUFDakMsTUFBTSxRQUFRLEdBQW9CLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDO1FBQ2xGLE9BQU8sUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEQsQ0FBQzs7cUlBOUNVLHVDQUF1Qyw4Q0FjeEMsZUFBZTt5SEFkZCx1Q0FBdUMsNkhBT3ZDLGdCQUFnQiw4RENuQjdCLHN3REE0QkE7NEZEaEJhLHVDQUF1QztrQkFKbkQsU0FBUzsrQkFDRSxvQ0FBb0M7OzBCQWlCM0MsTUFBTTsyQkFBQyxlQUFlO21FQU5mLGlCQUFpQjtzQkFEMUIsU0FBUzt1QkFBQyxnQkFBZ0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTZWxlY3Rpb25Nb2RlbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2xsZWN0aW9ucyc7XG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5qZWN0LCBJbmplY3RvciwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1BVF9ESUFMT0dfREFUQSwgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IE1hdExpc3RPcHRpb24sIE1hdFNlbGVjdGlvbkxpc3QgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9saXN0JztcblxuaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3NlcnZpY2VzL2RpYWxvZy5zZXJ2aWNlJztcbmltcG9ydCB7IE9UYWJsZUNvbmZpZ3VyYXRpb24gfSBmcm9tICcuLi8uLi8uLi8uLi8uLi90eXBlcy90YWJsZS9vLXRhYmxlLWNvbmZpZ3VyYXRpb24udHlwZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ28tdGFibGUtYXBwbHktY29uZmlndXJhdGlvbi1kaWFsb2cnLFxuICB0ZW1wbGF0ZVVybDogJy4vby10YWJsZS1hcHBseS1jb25maWd1cmF0aW9uLWRpYWxvZy5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgT1RhYmxlQXBwbHlDb25maWd1cmF0aW9uRGlhbG9nQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBwdWJsaWMgZGVmYXVsdF9jb25maWd1cmF0aW9uID0gJ09UYWJsZUFwcGx5Q29uZmlndXJhdGlvbkRpYWxvZ0NvbXBvbmVudC1kZWZhdWx0JztcbiAgcHVibGljIGNvbmZpZ3VyYXRpb25zOiBPVGFibGVDb25maWd1cmF0aW9uW10gPSBbXTtcblxuICBwdWJsaWMgb25EZWxldGU6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBWaWV3Q2hpbGQoTWF0U2VsZWN0aW9uTGlzdCwgeyBzdGF0aWM6IHRydWUgfSlcbiAgcHJvdGVjdGVkIGNvbmZpZ3VyYXRpb25MaXN0OiBNYXRTZWxlY3Rpb25MaXN0O1xuXG4gIHByb3RlY3RlZCBkaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxPVGFibGVBcHBseUNvbmZpZ3VyYXRpb25EaWFsb2dDb21wb25lbnQ+LFxuICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBkYXRhOiBPVGFibGVDb25maWd1cmF0aW9uW10sXG4gICAgcHJvdGVjdGVkIGluamVjdG9yOiBJbmplY3RvclxuICApIHtcbiAgICB0aGlzLmxvYWRDb25maWd1cmF0aW9ucyhkYXRhKTtcbiAgICB0aGlzLmRpYWxvZ1NlcnZpY2UgPSB0aGlzLmluamVjdG9yLmdldChEaWFsb2dTZXJ2aWNlKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbmZpZ3VyYXRpb25MaXN0LnNlbGVjdGVkT3B0aW9ucyA9IG5ldyBTZWxlY3Rpb25Nb2RlbDxNYXRMaXN0T3B0aW9uPihmYWxzZSk7XG4gIH1cblxuICBwdWJsaWMgbG9hZENvbmZpZ3VyYXRpb25zKGNvbmZpZ3VyYXRpb25zOiBPVGFibGVDb25maWd1cmF0aW9uW10pOiB2b2lkIHtcbiAgICB0aGlzLmNvbmZpZ3VyYXRpb25zID0gY29uZmlndXJhdGlvbnM7XG4gIH1cblxuICBwdWJsaWMgcmVtb3ZlQ29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uTmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmNvbmZpcm0oJ0NPTkZJUk0nLCAnVEFCTEUuRElBTE9HLkNPTkZJUk1fUkVNT1ZFX0NPTkZJR1VSQVRJT04nKS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgIHRoaXMub25EZWxldGUuZW1pdChjb25maWd1cmF0aW9uTmFtZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgaXNEZWZhdWx0Q29uZmlndXJhdGlvblNlbGVjdGVkKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHNlbGVjdGVkOiBNYXRMaXN0T3B0aW9uW10gPSB0aGlzLmNvbmZpZ3VyYXRpb25MaXN0LnNlbGVjdGVkT3B0aW9ucy5zZWxlY3RlZDtcbiAgICBjb25zdCBzZWxlY3RlZFZhbHVlID0gc2VsZWN0ZWQubGVuZ3RoID8gc2VsZWN0ZWRbMF0udmFsdWUgOiB2b2lkIDA7XG4gICAgcmV0dXJuIHNlbGVjdGVkVmFsdWUgPT09IHRoaXMuZGVmYXVsdF9jb25maWd1cmF0aW9uO1xuICB9XG5cbiAgcHVibGljIGdldFNlbGVjdGVkQ29uZmlndXJhdGlvbk5hbWUoKTogc3RyaW5nIHtcbiAgICBjb25zdCBzZWxlY3RlZDogTWF0TGlzdE9wdGlvbltdID0gdGhpcy5jb25maWd1cmF0aW9uTGlzdC5zZWxlY3RlZE9wdGlvbnMuc2VsZWN0ZWQ7XG4gICAgcmV0dXJuIHNlbGVjdGVkLmxlbmd0aCA/IHNlbGVjdGVkWzBdLnZhbHVlIDogdm9pZCAwO1xuICB9XG5cbn1cbiIsIjxzcGFuIG1hdC1kaWFsb2ctdGl0bGU+e3sgJ1RBQkxFLkJVVFRPTlMuQVBQTFlfQ09ORklHVVJBVElPTicgfCBvVHJhbnNsYXRlIH19PC9zcGFuPlxuXG48bWF0LWRpYWxvZy1jb250ZW50IGZ4TGF5b3V0PVwiY29sdW1uXCI+XG4gIDxkaXYgbWF0LXN1YmhlYWRlcj57eyAnVEFCTEUuRElBTE9HLkFQUExZX0NPTkZJR1VSQVRJT04nIHwgb1RyYW5zbGF0ZSB9fTwvZGl2PlxuICA8bWF0LXNlbGVjdGlvbi1saXN0ICNjb25maWd1cmF0aW9uTGlzdCBjbGFzcz1cIm8tdGFibGUtYXBwbHktY29uZmlndXJhdGlvbi1kaWFsb2ctbGlzdFwiPlxuICAgIDxtYXQtbGlzdC1vcHRpb24gY2hlY2tib3hQb3NpdGlvbj1cImJlZm9yZVwiIFt2YWx1ZV09XCJkZWZhdWx0X2NvbmZpZ3VyYXRpb25cIj5cbiAgICAgIDxzcGFuIG1hdExpc3RJdGVtVGl0bGUgY2xhc3M9XCJvLXRhYmxlLWFwcGx5LWNvbmZpZ3VyYXRpb24tZGlhbG9nLWxpc3QtdGl0bGVcIj5cbiAgICAgICAge3sgJ1RBQkxFLkRJQUxPRy5BUFBMWV9DT05GSUdVUkFUSU9OX0RFRkFVTFQnIHwgb1RyYW5zbGF0ZSB9fVxuICAgICAgPC9zcGFuPlxuICAgICAgPHNwYW4gbWF0TGlzdEl0ZW1MaW5lPnt7ICdUQUJMRS5ESUFMT0cuQVBQTFlfQ09ORklHVVJBVElPTl9ERUZBVUxUX0RFU0NSSVBUSU9OJyB8IG9UcmFuc2xhdGUgfX08L3NwYW4+XG4gICAgPC9tYXQtbGlzdC1vcHRpb24+XG4gICAgPG1hdC1saXN0LW9wdGlvbiBjaGVja2JveFBvc2l0aW9uPVwiYmVmb3JlXCIgKm5nRm9yPVwibGV0IGNvbmZpZ3VyYXRpb24gb2YgY29uZmlndXJhdGlvbnM7IGxldCBpID0gaW5kZXhcIiBbdmFsdWVdPVwiY29uZmlndXJhdGlvbi5uYW1lXCI+XG4gICAgICA8c3BhbiBtYXRMaXN0SXRlbVRpdGxlPnt7IGNvbmZpZ3VyYXRpb24ubmFtZSB9fTwvc3Bhbj5cbiAgICAgIDxzcGFuIG1hdExpc3RJdGVtTGluZT57eyBjb25maWd1cmF0aW9uLmRlc2NyaXB0aW9uIH19PC9zcGFuPlxuICAgIDwvbWF0LWxpc3Qtb3B0aW9uPlxuICA8L21hdC1zZWxlY3Rpb24tbGlzdD5cbjwvbWF0LWRpYWxvZy1jb250ZW50PlxuXG48bWF0LWRpYWxvZy1hY3Rpb25zIGFsaWduPVwiZW5kXCI+XG4gIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1zdHJva2VkLWJ1dHRvbiBbZGlzYWJsZWRdPVwiY29uZmlndXJhdGlvbkxpc3Quc2VsZWN0ZWRPcHRpb25zLnNlbGVjdGVkLmxlbmd0aCE9PTEgfHwgaXNEZWZhdWx0Q29uZmlndXJhdGlvblNlbGVjdGVkKClcIlxuICAgIChjbGljayk9XCJyZW1vdmVDb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb25MaXN0LnNlbGVjdGVkT3B0aW9ucy5zZWxlY3RlZFswXS52YWx1ZSlcIiBjbGFzcz1cIm8tYnV0dG9uLWRhbmdlclwiPlxuICAgIHt7ICdERUxFVEUnIHwgb1RyYW5zbGF0ZSB9fVxuICA8L2J1dHRvbj5cbiAgPHNwYW4gZnhGbGV4Pjwvc3Bhbj5cbiAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LXN0cm9rZWQtYnV0dG9uIFttYXQtZGlhbG9nLWNsb3NlXT1cImZhbHNlXCIgY2xhc3M9XCJvLWJ1dHRvbi1kZWZhdWx0IGNhbmNlbFwiPnt7ICdDQU5DRUwnIHwgb1RyYW5zbGF0ZSB9fTwvYnV0dG9uPlxuICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtc3Ryb2tlZC1idXR0b24gW21hdC1kaWFsb2ctY2xvc2VdPVwidHJ1ZVwiIFtkaXNhYmxlZF09XCJjb25maWd1cmF0aW9uTGlzdC5zZWxlY3RlZE9wdGlvbnMuc2VsZWN0ZWQubGVuZ3RoIT09MVwiXG4gICAgY2xhc3M9XCJvLWJ1dHRvbi1wcmltYXJ5XCI+e3sgJ09LJyB8IG9UcmFuc2xhdGUgfX08L2J1dHRvbj5cbjwvbWF0LWRpYWxvZy1hY3Rpb25zPlxuIl19