@arsedizioni/ars-utils 18.1.71 → 18.1.73
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/esm2022/help/components/help-viewer/help-viewer.component.mjs +16 -8
- package/esm2022/support.ui/ui/notifications-browser/notification/notification.component.mjs +3 -3
- package/esm2022/support.ui/ui/notifications-browser/notifications-browser.component.mjs +3 -3
- package/esm2022/ui.application/ui/dialogs/select-tree/select-tree-dialog.component.mjs +4 -2
- package/fesm2022/arsedizioni-ars-utils-help.mjs +15 -7
- package/fesm2022/arsedizioni-ars-utils-help.mjs.map +1 -1
- package/fesm2022/arsedizioni-ars-utils-support.ui.mjs +4 -4
- package/fesm2022/arsedizioni-ars-utils-support.ui.mjs.map +1 -1
- package/fesm2022/arsedizioni-ars-utils-ui.application.mjs +3 -1
- package/fesm2022/arsedizioni-ars-utils-ui.application.mjs.map +1 -1
- package/help/components/help-viewer/help-viewer.component.d.ts +4 -2
- package/package.json +12 -12
|
@@ -255,13 +255,13 @@ export class SupportNotificationsBrowserComponent {
|
|
|
255
255
|
});
|
|
256
256
|
}
|
|
257
257
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: SupportNotificationsBrowserComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
258
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.3", type: SupportNotificationsBrowserComponent, isStandalone: true, selector: "ng-component", host: { attributes: { "Bind": SystemUtils.generateUUID() } }, viewQueries: [{ propertyName: "paginator", first: true, predicate: ["paginator"], descendants: true }, { propertyName: "contextMenu", first: true, predicate: ["contextMenuTrigger"], descendants: true }], ngImport: i0, template: "<div class=\"notifications-browser-fixed\">\r\n <div class=\"notifications-browser-header\">\r\n <div fxLayout=\"row\" fxFill fxLayoutGap=\"10px\">\r\n <div fxFlex=\"*\" fxFlexAlign=\"center\">\r\n <h2 mat-dialog-title>Novit\u00E0 e informazioni</h2>\r\n </div>\r\n <div fxLayoutAlign=\"end\">\r\n <button fxFlexAlign=\"start\" type=\"button\" mat-icon-button matTooltip=\"Chiudi\" aria-label=\"Chiudi\"\r\n [mat-dialog-close]=\"true\" class=\"dialog-close\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div style=\"padding-left: 24px; padding-right: 24px; padding-bottom: 10px;\">\r\n <div fxLayout=\"row wrap\" fxFill fxLayoutAlign=\"space-between\">\r\n <div fxFlex=\"200px\" fxFlexAlign=\"end\">\r\n <mat-form-field style=\"width:200px\" subscriptSizing=\"dynamic\" appearance=\"outline\">\r\n <mat-label>Cerca</mat-label>\r\n <input matInput #searchInput=\"matInput\" type=\"text\" [(ngModel)]=\"searchParams.any\" maxlength=\"200\"\r\n (keyup.Enter)=\"find()\" autofocus placeholder=\"Inserisci testo + INVIO...\" />\r\n @if (searchParams.any) {\r\n <button type=\"button\" tabindex=\"-1\" matSuffix mat-icon-button aria-label=\"Pulisci\"\r\n (click)=\"searchParams.any = ''\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n </mat-form-field>\r\n </div>\r\n <div fxFlex=\"*\" fxLayoutAlign=\"end\">\r\n <div fxFlexAlign=\"center\">\r\n @if (selection.hasValue()) {\r\n <button type=\"button\" mat-button matTooltip=\"Azioni da eseguire sugli elementi selezionati\"\r\n [attr.aria-label]=\"'Menu opzioni per elementi selezionati'\" [matMenuTriggerFor]=\"menuSelections\">\r\n <mat-icon aria-hidden=\"false\" [matBadge]=\"selection.all.length\">checklist</mat-icon>\r\n </button>\r\n }\r\n <mat-menu #menuSelections=\"matMenu\">\r\n <button mat-menu-item (click)=\"selection.clear()\" [attr.aria-label]=\"'Deseleziona tutti'\">\r\n <mat-icon>clear</mat-icon>Deseleziona tutti\r\n </button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item [attr.aria-label]=\"'Segna come da leggere'\" (click)=\"mark(null, true)\">\r\n <mat-icon>outlined_flag</mat-icon>Segna come da leggere\r\n </button>\r\n <button mat-menu-item [attr.aria-label]=\"'Segna come gi\u00E0 letto'\" (click)=\"mark(null)\">\r\n <mat-icon>flag</mat-icon>Segna come gi\u00E0 letto\r\n </button>\r\n </mat-menu>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<div mat-dialog-content id=\"notifications-browser-scrollable\">\r\n <div id=\"notifications-browser-scroller\">\r\n @if (total() === 0) {\r\n <div>\r\n <p class=\"message\"><i>Nessun elemento da visualizzare.</i></p>\r\n </div>\r\n } @else {\r\n <div>\r\n @for (item of items(); track item.id; let i = $index) {\r\n <div (mouseenter)=\"item.isOver = true;\" (mouseleave)=\"item.isOver = false\"\r\n (contextmenu)=\"onContextMenu($event, item)\">\r\n <div class=\"news\" fxLayout=\"row\" fxLayoutGap=\"6px\" fxFill [ngClass]=\"{'news-selected': selection.isSelected(item.id), \r\n 'news-read': item.isRead}\">\r\n <div fxFlex=\"6px\" [ngClass]=\"getItemStateCssClass(item)\" [matTooltip]=\"getItemStateTooltip(item)\">\r\n </div>\r\n <div fxFlex=\"48px\" fxFlexAlign=\"center\" fxLayoutAlign=\"center\">\r\n @if (screenService.isTouchable || item.isOver || selection.isSelected(item.id)) {\r\n <mat-checkbox (change)=\"$event ? selection.toggle(item, item.id) : null\"\r\n [checked]=\"selection.isSelected(item.id)\">\r\n </mat-checkbox>\r\n }\r\n </div>\r\n <div fxFlex=\"*\" fxFlexAlign=\"center\" (click)=\"show(item); $event.stopPropagation()\">\r\n <div class=\"info-1 uppercase\">\r\n {{ (item.publishingDate ?? item.created) | format:'D':'dd/MM/yyyy'}}</div>\r\n <div>{{item.title}}</div>\r\n <div class=\"info-2 uppercase\">\r\n {{item.productNames}}\r\n @if (item.productModulesNames) {\r\n <span> | {{item.productModulesNames}}</span>\r\n }\r\n </div>\r\n </div>\r\n <div fxFlex=\"50px\" fxFlexAlign=\"center\">\r\n @if (item.isOver || item.isMenuOpen || selection.isSelected(item.id)) {\r\n <button type=\"button\" mat-icon-button matTooltip=\"Menu\" [attr.aria-label]=\"'Menu opzioni'\"\r\n [matMenuTriggerFor]=\"contextMenu\" [matMenuTriggerData]=\"{item: item}\" (click)=\"item.isMenuOpen = true\">\r\n <mat-icon>more_vert</mat-icon>\r\n </button>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n <div #contextMenuTrigger=\"matMenuTrigger\" style=\"position: fixed\" [style.left]=\"contextMenuPosition.x\"\r\n [style.top]=\"contextMenuPosition.y\" [matMenuTriggerFor]=\"contextMenu\">\r\n </div>\r\n <mat-menu #contextMenu=\"matMenu\" (closed)=\"updateMenuButtonsVisibility()\">\r\n <ng-template matMenuContent let-item=\"item\">\r\n @if (item.isRead) {\r\n <button mat-menu-item [attr.aria-label]=\"'Segna come da leggere'\" (click)=\"mark(item, true)\">\r\n <mat-icon>flag</mat-icon>Segna come da leggere\r\n </button>\r\n }\r\n @if (!item.isRead) {\r\n <button mat-menu-item [attr.aria-label]=\"'Segna come da gi\u00E0 letto'\" (click)=\"mark(item)\">\r\n <mat-icon>outlined_flag</mat-icon>Segna come gi\u00E0 letto\r\n </button>\r\n }\r\n </ng-template>\r\n </mat-menu>\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n<div mat-dialog-actions class=\"notifications-browser-fixed\">\r\n <div fxLayout=\"row wrap\" fxLayoutGap=\"10px\" fxLayoutAlign=\"space-between\" fxFill>\r\n <!-- legend -->\r\n <div fxFlex.lt-md=\"100\" class=\"legend-container\">\r\n <div class=\"legend unread-bg\"></div>\r\n da leggere\r\n </div>\r\n <div fxFlex.lt-md=\"100\" fxLayoutAlign=\"end\">\r\n <mat-paginator #paginator [hidePageSize]=\"true\" [length]=\"total()\" [pageSize]=\"searchParams.count\"\r\n [showFirstLastButtons]=\"true\" (page)=\"fetchMore($event)\"></mat-paginator>\r\n </div>\r\n </div>\r\n</div>", styles: [".news{border-radius:12px;padding:10px 0;min-height:60px!important;margin-bottom:2px;font-weight:600}.news .info-1{font-size:small;text-transform:uppercase;color:var(--ars-color-accent, #7894ae)}.news .info-2{font-size:x-small;text-transform:uppercase;color:var(--ars-color-accent-low, #456179)}.news:hover{background-color:var(--ars-item-hover-background-color, #eaecef);cursor:pointer!important}.news-read{font-weight:400}.news-selected{background-color:var(--ars-item-selected-background-color, #ced1d2);border-radius:0}.message{color:var(--ars-color-secondary, #4a635f);padding:20px;text-align:center}.unread-bg{background-color:var(--ars-color-warning-low, #FFA000)}.legend-container{display:flex;flex-direction:row;align-items:center;font-size:x-small;text-transform:uppercase;font-weight:500;margin-left:16px}.legend-container .legend{display:inline-block;height:8px;width:8px;margin-right:4px}.legend-container .next{margin-left:8px}\n"], dependencies: [{ kind: "ngmodule", type: FlexModule }, { kind: "directive", type: i1.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: i1.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i1.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i1.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "directive", type: i1.DefaultFlexAlignDirective, selector: " [fxFlexAlign], [fxFlexAlign.xs], [fxFlexAlign.sm], [fxFlexAlign.md], [fxFlexAlign.lg], [fxFlexAlign.xl], [fxFlexAlign.lt-sm], [fxFlexAlign.lt-md], [fxFlexAlign.lt-lg], [fxFlexAlign.lt-xl], [fxFlexAlign.gt-xs], [fxFlexAlign.gt-sm], [fxFlexAlign.gt-md], [fxFlexAlign.gt-lg]", inputs: ["fxFlexAlign", "fxFlexAlign.xs", "fxFlexAlign.sm", "fxFlexAlign.md", "fxFlexAlign.lg", "fxFlexAlign.xl", "fxFlexAlign.lt-sm", "fxFlexAlign.lt-md", "fxFlexAlign.lt-lg", "fxFlexAlign.lt-xl", "fxFlexAlign.gt-xs", "fxFlexAlign.gt-sm", "fxFlexAlign.gt-md", "fxFlexAlign.gt-lg"] }, { kind: "directive", type: i1.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: "directive", type: MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "directive", type: i5.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i6.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i7.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: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i8.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i8.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i8.MatMenuContent, selector: "ng-template[matMenuContent]" }, { kind: "directive", type: i8.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatBadgeModule }, { kind: "directive", type: i9.MatBadge, selector: "[matBadge]", inputs: ["matBadgeColor", "matBadgeOverlap", "matBadgeDisabled", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "ngmodule", type: MatDividerModule }, { kind: "component", type: i10.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "directive", type: MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: ExtendedModule }, { kind: "directive", type: i11.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i12.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "directive", type: MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "ngmodule", type: MatPaginatorModule }, { kind: "component", type: i13.MatPaginator, selector: "mat-paginator", inputs: ["color", "pageIndex", "length", "pageSize", "pageSizeOptions", "hidePageSize", "showFirstLastButtons", "selectConfig", "disabled"], outputs: ["page"], exportAs: ["matPaginator"] }, { kind: "pipe", type: FormatPipe, name: "format" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
258
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.3", type: SupportNotificationsBrowserComponent, isStandalone: true, selector: "ng-component", host: { attributes: { "Bind": SystemUtils.generateUUID() } }, viewQueries: [{ propertyName: "paginator", first: true, predicate: ["paginator"], descendants: true }, { propertyName: "contextMenu", first: true, predicate: ["contextMenuTrigger"], descendants: true }], ngImport: i0, template: "<div class=\"notifications-browser-fixed\">\r\n <div class=\"notifications-browser-header\">\r\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" fxLayoutGap=\"10px\" fxFill >\r\n <div fxFlex=\"*\">\r\n <h2 mat-dialog-title>Novit\u00E0 e informazioni</h2>\r\n </div>\r\n <div fxLayoutAlign=\"end\">\r\n <button fxFlexAlign=\"start\" type=\"button\" mat-icon-button matTooltip=\"Chiudi\" aria-label=\"Chiudi\"\r\n [mat-dialog-close]=\"true\" class=\"dialog-close\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div style=\"padding-left: 24px; padding-right: 24px; padding-bottom: 10px;\">\r\n <div fxLayout=\"row wrap\" fxFill fxLayoutAlign=\"space-between\">\r\n <div fxFlex=\"200px\" fxFlexAlign=\"end\">\r\n <mat-form-field style=\"width:200px\" subscriptSizing=\"dynamic\" appearance=\"outline\">\r\n <mat-label>Cerca</mat-label>\r\n <input matInput #searchInput=\"matInput\" type=\"text\" [(ngModel)]=\"searchParams.any\" maxlength=\"200\"\r\n (keyup.Enter)=\"find()\" autofocus placeholder=\"Inserisci testo + INVIO...\" />\r\n @if (searchParams.any) {\r\n <button type=\"button\" tabindex=\"-1\" matSuffix mat-icon-button aria-label=\"Pulisci\"\r\n (click)=\"searchParams.any = ''\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n </mat-form-field>\r\n </div>\r\n <div fxFlex=\"*\" fxLayoutAlign=\"end\">\r\n <div fxFlexAlign=\"center\">\r\n @if (selection.hasValue()) {\r\n <button type=\"button\" mat-button matTooltip=\"Azioni da eseguire sugli elementi selezionati\"\r\n [attr.aria-label]=\"'Menu opzioni per elementi selezionati'\" [matMenuTriggerFor]=\"menuSelections\">\r\n <mat-icon aria-hidden=\"false\" [matBadge]=\"selection.all.length\">checklist</mat-icon>\r\n </button>\r\n }\r\n <mat-menu #menuSelections=\"matMenu\">\r\n <button mat-menu-item (click)=\"selection.clear()\" [attr.aria-label]=\"'Deseleziona tutti'\">\r\n <mat-icon>clear</mat-icon>Deseleziona tutti\r\n </button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item [attr.aria-label]=\"'Segna come da leggere'\" (click)=\"mark(null, true)\">\r\n <mat-icon>outlined_flag</mat-icon>Segna come da leggere\r\n </button>\r\n <button mat-menu-item [attr.aria-label]=\"'Segna come gi\u00E0 letto'\" (click)=\"mark(null)\">\r\n <mat-icon>flag</mat-icon>Segna come gi\u00E0 letto\r\n </button>\r\n </mat-menu>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<div mat-dialog-content id=\"notifications-browser-scrollable\">\r\n <div id=\"notifications-browser-scroller\">\r\n @if (total() === 0) {\r\n <div>\r\n <p class=\"message\"><i>Nessun elemento da visualizzare.</i></p>\r\n </div>\r\n } @else {\r\n <div>\r\n @for (item of items(); track item.id; let i = $index) {\r\n <div (mouseenter)=\"item.isOver = true;\" (mouseleave)=\"item.isOver = false\"\r\n (contextmenu)=\"onContextMenu($event, item)\">\r\n <div class=\"news\" fxLayout=\"row\" fxLayoutGap=\"6px\" fxFill [ngClass]=\"{'news-selected': selection.isSelected(item.id), \r\n 'news-read': item.isRead}\">\r\n <div fxFlex=\"6px\" [ngClass]=\"getItemStateCssClass(item)\" [matTooltip]=\"getItemStateTooltip(item)\">\r\n </div>\r\n <div fxFlex=\"48px\" fxFlexAlign=\"center\" fxLayoutAlign=\"center\">\r\n @if (screenService.isTouchable || item.isOver || selection.isSelected(item.id)) {\r\n <mat-checkbox (change)=\"$event ? selection.toggle(item, item.id) : null\"\r\n [checked]=\"selection.isSelected(item.id)\">\r\n </mat-checkbox>\r\n }\r\n </div>\r\n <div fxFlex=\"*\" fxFlexAlign=\"center\" (click)=\"show(item); $event.stopPropagation()\">\r\n <div class=\"info-1 uppercase\">\r\n {{ (item.publishingDate ?? item.created) | format:'D':'dd/MM/yyyy'}}</div>\r\n <div>{{item.title}}</div>\r\n <div class=\"info-2 uppercase\">\r\n {{item.productNames}}\r\n @if (item.productModulesNames) {\r\n <span> | {{item.productModulesNames}}</span>\r\n }\r\n </div>\r\n </div>\r\n <div fxFlex=\"50px\" fxFlexAlign=\"center\">\r\n @if (item.isOver || item.isMenuOpen || selection.isSelected(item.id)) {\r\n <button type=\"button\" mat-icon-button matTooltip=\"Menu\" [attr.aria-label]=\"'Menu opzioni'\"\r\n [matMenuTriggerFor]=\"contextMenu\" [matMenuTriggerData]=\"{item: item}\" (click)=\"item.isMenuOpen = true\">\r\n <mat-icon>more_vert</mat-icon>\r\n </button>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n <div #contextMenuTrigger=\"matMenuTrigger\" style=\"position: fixed\" [style.left]=\"contextMenuPosition.x\"\r\n [style.top]=\"contextMenuPosition.y\" [matMenuTriggerFor]=\"contextMenu\">\r\n </div>\r\n <mat-menu #contextMenu=\"matMenu\" (closed)=\"updateMenuButtonsVisibility()\">\r\n <ng-template matMenuContent let-item=\"item\">\r\n @if (item.isRead) {\r\n <button mat-menu-item [attr.aria-label]=\"'Segna come da leggere'\" (click)=\"mark(item, true)\">\r\n <mat-icon>flag</mat-icon>Segna come da leggere\r\n </button>\r\n }\r\n @if (!item.isRead) {\r\n <button mat-menu-item [attr.aria-label]=\"'Segna come da gi\u00E0 letto'\" (click)=\"mark(item)\">\r\n <mat-icon>outlined_flag</mat-icon>Segna come gi\u00E0 letto\r\n </button>\r\n }\r\n </ng-template>\r\n </mat-menu>\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n<div mat-dialog-actions class=\"notifications-browser-fixed\">\r\n <div fxLayout=\"row wrap\" fxLayoutGap=\"10px\" fxLayoutAlign=\"space-between\" fxFill>\r\n <!-- legend -->\r\n <div fxFlex.lt-md=\"100\" class=\"legend-container\">\r\n <div class=\"legend unread-bg\"></div>\r\n da leggere\r\n </div>\r\n <div fxFlex.lt-md=\"100\" fxLayoutAlign=\"end\">\r\n <mat-paginator #paginator [hidePageSize]=\"true\" [length]=\"total()\" [pageSize]=\"searchParams.count\"\r\n [showFirstLastButtons]=\"true\" (page)=\"fetchMore($event)\"></mat-paginator>\r\n </div>\r\n </div>\r\n</div>", styles: [":root{--ars-color-link: #03A9F4;--ars-color-link-low: #0288D1;--ars-color-accent: #7894ae;--ars-color-accent-low: #456179;--ars-color-primary: #00a293;--ars-color-primary-low: #006a60;--ars-color-primary-hi: #12c0ae;--ars-color-secondary: #4a635f;--ars-color-secondary-low: #27403c;--ars-color-error: #ff5449;--ars-color-error-low: #a80710;--ars-color-ok: #388E3C;--ars-color-ok-low: #29692c;--ars-color-warning: #FFC107;--ars-color-warning-low: #FFA000;--ars-item-hover-background-color: #eaecef;--ars-item-selected-background-color: #ced1d2;--ars-item-opaque-background-color: rgba(255, 255, 255, .75);--ars-filterbox-filtered-background-color: #f9fbe7}.dialog-info{font-size:x-small;font-weight:700;text-align:right;padding:10px}.dialog-info-green,.dialog-info-ok{color:var(--ars-color-ok, #388E3C)}.dialog-info-red,.dialog-info-error{color:var(--mat-form-field-error-text-color, #a80710)}.dialog-close{margin-right:10px;margin-top:10px}.dialog-menu{margin-left:10px;margin-top:10px}.dialog-title{padding:0 24px}.section-title{font-size:large;font-weight:600;padding-top:10px;padding-bottom:8px}.scroll-auto{overflow:auto}.scroll-hidden{overflow:hidden}b{font-weight:700}.large{font-size:large!important}.small{font-size:small!important}.small-icon-button{width:1.5rem!important;height:1.5rem!important;padding:0!important;display:inline-flex!important;align-items:center;justify-content:center}.small-icon-button .mat-mdc-button-touch-target{width:1.5rem!important;height:1.5rem!important}.x-small{font-size:x-small!important}.uppercase{text-transform:uppercase!important}.lowercase{text-transform:lowercase!important}.truncated{min-width:0}.truncated span,.truncated div{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@media (prefers-color-scheme: dark){:root{--ars-color-link: #03A9F4;--ars-color-link-low: #0288D1;--ars-color-accent: #adcae6;--ars-color-accent-low: #5e7a93;--ars-color-primary: #53dbc9;--ars-color-primary-low: #008679;--ars-color-primary-hi: #74f8e5;--ars-color-secondary: #b1ccc6;--ars-color-secondary-low: #627c77;--ars-color-error: #ff5449;--ars-color-error-low: #a80710;--ars-color-ok: #4CAF50;--ars-color-ok-low: #3f8f41;--ars-color-warning: #FFC107;--ars-color-warning-low: #FFA000;--ars-item-hover-background-color: #262a29;--ars-item-selected-background-color: #3f4342;--ars-item-opaque-background-color: rgba(0, 0, 0, .65);--ars-filterbox-filtered-background-color: #c6c7b8}.dialog-info-green,.dialog-info-ok{color:var(--ars-color-ok, #4CAF50)}.dialog-info-red,.dialog-info-error{color:var(--mat-form-field-error-text-color, #ff5449)}b{font-weight:600}}.news{border-radius:12px;padding:10px 0;min-height:60px!important;margin-bottom:2px;font-weight:600}.news .info-1{font-size:small;text-transform:uppercase;color:var(--ars-color-accent, #7894ae)}.news .info-2{font-size:x-small;text-transform:uppercase;color:var(--ars-color-accent-low, #456179)}.news:hover{background-color:var(--ars-item-hover-background-color, #eaecef);cursor:pointer!important}.news-read{font-weight:400}.news-selected{background-color:var(--ars-item-selected-background-color, #ced1d2);border-radius:0}.message{color:var(--ars-color-secondary, #4a635f);padding:20px;text-align:center}.unread-bg{background-color:var(--ars-color-warning-low, #FFA000)}.legend-container{display:flex;flex-direction:row;align-items:center;font-size:x-small;text-transform:uppercase;font-weight:500;margin-left:16px}.legend-container .legend{display:inline-block;height:8px;width:8px;margin-right:4px}.legend-container .next{margin-left:8px}\n"], dependencies: [{ kind: "ngmodule", type: FlexModule }, { kind: "directive", type: i1.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: i1.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i1.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i1.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "directive", type: i1.DefaultFlexAlignDirective, selector: " [fxFlexAlign], [fxFlexAlign.xs], [fxFlexAlign.sm], [fxFlexAlign.md], [fxFlexAlign.lg], [fxFlexAlign.xl], [fxFlexAlign.lt-sm], [fxFlexAlign.lt-md], [fxFlexAlign.lt-lg], [fxFlexAlign.lt-xl], [fxFlexAlign.gt-xs], [fxFlexAlign.gt-sm], [fxFlexAlign.gt-md], [fxFlexAlign.gt-lg]", inputs: ["fxFlexAlign", "fxFlexAlign.xs", "fxFlexAlign.sm", "fxFlexAlign.md", "fxFlexAlign.lg", "fxFlexAlign.xl", "fxFlexAlign.lt-sm", "fxFlexAlign.lt-md", "fxFlexAlign.lt-lg", "fxFlexAlign.lt-xl", "fxFlexAlign.gt-xs", "fxFlexAlign.gt-sm", "fxFlexAlign.gt-md", "fxFlexAlign.gt-lg"] }, { kind: "directive", type: i1.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: "directive", type: MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "directive", type: i5.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i6.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i7.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: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i8.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i8.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i8.MatMenuContent, selector: "ng-template[matMenuContent]" }, { kind: "directive", type: i8.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatBadgeModule }, { kind: "directive", type: i9.MatBadge, selector: "[matBadge]", inputs: ["matBadgeColor", "matBadgeOverlap", "matBadgeDisabled", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "ngmodule", type: MatDividerModule }, { kind: "component", type: i10.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "directive", type: MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: ExtendedModule }, { kind: "directive", type: i11.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i12.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "directive", type: MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "ngmodule", type: MatPaginatorModule }, { kind: "component", type: i13.MatPaginator, selector: "mat-paginator", inputs: ["color", "pageIndex", "length", "pageSize", "pageSizeOptions", "hidePageSize", "showFirstLastButtons", "selectConfig", "disabled"], outputs: ["page"], exportAs: ["matPaginator"] }, { kind: "pipe", type: FormatPipe, name: "format" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
259
259
|
}
|
|
260
260
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: SupportNotificationsBrowserComponent, decorators: [{
|
|
261
261
|
type: Component,
|
|
262
262
|
args: [{ host: { 'Bind': SystemUtils.generateUUID() }, standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [FlexModule, MatDialogTitle, MatButtonModule, MatTooltipModule, MatDialogClose,
|
|
263
263
|
MatIconModule, MatFormFieldModule, MatInputModule, FormsModule, MatMenuModule, MatBadgeModule, MatDividerModule, MatDialogContent, NgClass, ExtendedModule, MatCheckboxModule, MatDialogActions,
|
|
264
|
-
MatPaginatorModule, FormatPipe, SupportNotificationComponent], template: "<div class=\"notifications-browser-fixed\">\r\n <div class=\"notifications-browser-header\">\r\n <div fxLayout=\"row\" fxFill fxLayoutGap=\"10px\">\r\n <div fxFlex=\"*\" fxFlexAlign=\"center\">\r\n <h2 mat-dialog-title>Novit\u00E0 e informazioni</h2>\r\n </div>\r\n <div fxLayoutAlign=\"end\">\r\n <button fxFlexAlign=\"start\" type=\"button\" mat-icon-button matTooltip=\"Chiudi\" aria-label=\"Chiudi\"\r\n [mat-dialog-close]=\"true\" class=\"dialog-close\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div style=\"padding-left: 24px; padding-right: 24px; padding-bottom: 10px;\">\r\n <div fxLayout=\"row wrap\" fxFill fxLayoutAlign=\"space-between\">\r\n <div fxFlex=\"200px\" fxFlexAlign=\"end\">\r\n <mat-form-field style=\"width:200px\" subscriptSizing=\"dynamic\" appearance=\"outline\">\r\n <mat-label>Cerca</mat-label>\r\n <input matInput #searchInput=\"matInput\" type=\"text\" [(ngModel)]=\"searchParams.any\" maxlength=\"200\"\r\n (keyup.Enter)=\"find()\" autofocus placeholder=\"Inserisci testo + INVIO...\" />\r\n @if (searchParams.any) {\r\n <button type=\"button\" tabindex=\"-1\" matSuffix mat-icon-button aria-label=\"Pulisci\"\r\n (click)=\"searchParams.any = ''\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n </mat-form-field>\r\n </div>\r\n <div fxFlex=\"*\" fxLayoutAlign=\"end\">\r\n <div fxFlexAlign=\"center\">\r\n @if (selection.hasValue()) {\r\n <button type=\"button\" mat-button matTooltip=\"Azioni da eseguire sugli elementi selezionati\"\r\n [attr.aria-label]=\"'Menu opzioni per elementi selezionati'\" [matMenuTriggerFor]=\"menuSelections\">\r\n <mat-icon aria-hidden=\"false\" [matBadge]=\"selection.all.length\">checklist</mat-icon>\r\n </button>\r\n }\r\n <mat-menu #menuSelections=\"matMenu\">\r\n <button mat-menu-item (click)=\"selection.clear()\" [attr.aria-label]=\"'Deseleziona tutti'\">\r\n <mat-icon>clear</mat-icon>Deseleziona tutti\r\n </button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item [attr.aria-label]=\"'Segna come da leggere'\" (click)=\"mark(null, true)\">\r\n <mat-icon>outlined_flag</mat-icon>Segna come da leggere\r\n </button>\r\n <button mat-menu-item [attr.aria-label]=\"'Segna come gi\u00E0 letto'\" (click)=\"mark(null)\">\r\n <mat-icon>flag</mat-icon>Segna come gi\u00E0 letto\r\n </button>\r\n </mat-menu>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<div mat-dialog-content id=\"notifications-browser-scrollable\">\r\n <div id=\"notifications-browser-scroller\">\r\n @if (total() === 0) {\r\n <div>\r\n <p class=\"message\"><i>Nessun elemento da visualizzare.</i></p>\r\n </div>\r\n } @else {\r\n <div>\r\n @for (item of items(); track item.id; let i = $index) {\r\n <div (mouseenter)=\"item.isOver = true;\" (mouseleave)=\"item.isOver = false\"\r\n (contextmenu)=\"onContextMenu($event, item)\">\r\n <div class=\"news\" fxLayout=\"row\" fxLayoutGap=\"6px\" fxFill [ngClass]=\"{'news-selected': selection.isSelected(item.id), \r\n 'news-read': item.isRead}\">\r\n <div fxFlex=\"6px\" [ngClass]=\"getItemStateCssClass(item)\" [matTooltip]=\"getItemStateTooltip(item)\">\r\n </div>\r\n <div fxFlex=\"48px\" fxFlexAlign=\"center\" fxLayoutAlign=\"center\">\r\n @if (screenService.isTouchable || item.isOver || selection.isSelected(item.id)) {\r\n <mat-checkbox (change)=\"$event ? selection.toggle(item, item.id) : null\"\r\n [checked]=\"selection.isSelected(item.id)\">\r\n </mat-checkbox>\r\n }\r\n </div>\r\n <div fxFlex=\"*\" fxFlexAlign=\"center\" (click)=\"show(item); $event.stopPropagation()\">\r\n <div class=\"info-1 uppercase\">\r\n {{ (item.publishingDate ?? item.created) | format:'D':'dd/MM/yyyy'}}</div>\r\n <div>{{item.title}}</div>\r\n <div class=\"info-2 uppercase\">\r\n {{item.productNames}}\r\n @if (item.productModulesNames) {\r\n <span> | {{item.productModulesNames}}</span>\r\n }\r\n </div>\r\n </div>\r\n <div fxFlex=\"50px\" fxFlexAlign=\"center\">\r\n @if (item.isOver || item.isMenuOpen || selection.isSelected(item.id)) {\r\n <button type=\"button\" mat-icon-button matTooltip=\"Menu\" [attr.aria-label]=\"'Menu opzioni'\"\r\n [matMenuTriggerFor]=\"contextMenu\" [matMenuTriggerData]=\"{item: item}\" (click)=\"item.isMenuOpen = true\">\r\n <mat-icon>more_vert</mat-icon>\r\n </button>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n <div #contextMenuTrigger=\"matMenuTrigger\" style=\"position: fixed\" [style.left]=\"contextMenuPosition.x\"\r\n [style.top]=\"contextMenuPosition.y\" [matMenuTriggerFor]=\"contextMenu\">\r\n </div>\r\n <mat-menu #contextMenu=\"matMenu\" (closed)=\"updateMenuButtonsVisibility()\">\r\n <ng-template matMenuContent let-item=\"item\">\r\n @if (item.isRead) {\r\n <button mat-menu-item [attr.aria-label]=\"'Segna come da leggere'\" (click)=\"mark(item, true)\">\r\n <mat-icon>flag</mat-icon>Segna come da leggere\r\n </button>\r\n }\r\n @if (!item.isRead) {\r\n <button mat-menu-item [attr.aria-label]=\"'Segna come da gi\u00E0 letto'\" (click)=\"mark(item)\">\r\n <mat-icon>outlined_flag</mat-icon>Segna come gi\u00E0 letto\r\n </button>\r\n }\r\n </ng-template>\r\n </mat-menu>\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n<div mat-dialog-actions class=\"notifications-browser-fixed\">\r\n <div fxLayout=\"row wrap\" fxLayoutGap=\"10px\" fxLayoutAlign=\"space-between\" fxFill>\r\n <!-- legend -->\r\n <div fxFlex.lt-md=\"100\" class=\"legend-container\">\r\n <div class=\"legend unread-bg\"></div>\r\n da leggere\r\n </div>\r\n <div fxFlex.lt-md=\"100\" fxLayoutAlign=\"end\">\r\n <mat-paginator #paginator [hidePageSize]=\"true\" [length]=\"total()\" [pageSize]=\"searchParams.count\"\r\n [showFirstLastButtons]=\"true\" (page)=\"fetchMore($event)\"></mat-paginator>\r\n </div>\r\n </div>\r\n</div>", styles: [".news{border-radius:12px;padding:10px 0;min-height:60px!important;margin-bottom:2px;font-weight:600}.news .info-1{font-size:small;text-transform:uppercase;color:var(--ars-color-accent, #7894ae)}.news .info-2{font-size:x-small;text-transform:uppercase;color:var(--ars-color-accent-low, #456179)}.news:hover{background-color:var(--ars-item-hover-background-color, #eaecef);cursor:pointer!important}.news-read{font-weight:400}.news-selected{background-color:var(--ars-item-selected-background-color, #ced1d2);border-radius:0}.message{color:var(--ars-color-secondary, #4a635f);padding:20px;text-align:center}.unread-bg{background-color:var(--ars-color-warning-low, #FFA000)}.legend-container{display:flex;flex-direction:row;align-items:center;font-size:x-small;text-transform:uppercase;font-weight:500;margin-left:16px}.legend-container .legend{display:inline-block;height:8px;width:8px;margin-right:4px}.legend-container .next{margin-left:8px}\n"] }]
|
|
264
|
+
MatPaginatorModule, FormatPipe, SupportNotificationComponent], template: "<div class=\"notifications-browser-fixed\">\r\n <div class=\"notifications-browser-header\">\r\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" fxLayoutGap=\"10px\" fxFill >\r\n <div fxFlex=\"*\">\r\n <h2 mat-dialog-title>Novit\u00E0 e informazioni</h2>\r\n </div>\r\n <div fxLayoutAlign=\"end\">\r\n <button fxFlexAlign=\"start\" type=\"button\" mat-icon-button matTooltip=\"Chiudi\" aria-label=\"Chiudi\"\r\n [mat-dialog-close]=\"true\" class=\"dialog-close\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div style=\"padding-left: 24px; padding-right: 24px; padding-bottom: 10px;\">\r\n <div fxLayout=\"row wrap\" fxFill fxLayoutAlign=\"space-between\">\r\n <div fxFlex=\"200px\" fxFlexAlign=\"end\">\r\n <mat-form-field style=\"width:200px\" subscriptSizing=\"dynamic\" appearance=\"outline\">\r\n <mat-label>Cerca</mat-label>\r\n <input matInput #searchInput=\"matInput\" type=\"text\" [(ngModel)]=\"searchParams.any\" maxlength=\"200\"\r\n (keyup.Enter)=\"find()\" autofocus placeholder=\"Inserisci testo + INVIO...\" />\r\n @if (searchParams.any) {\r\n <button type=\"button\" tabindex=\"-1\" matSuffix mat-icon-button aria-label=\"Pulisci\"\r\n (click)=\"searchParams.any = ''\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n </mat-form-field>\r\n </div>\r\n <div fxFlex=\"*\" fxLayoutAlign=\"end\">\r\n <div fxFlexAlign=\"center\">\r\n @if (selection.hasValue()) {\r\n <button type=\"button\" mat-button matTooltip=\"Azioni da eseguire sugli elementi selezionati\"\r\n [attr.aria-label]=\"'Menu opzioni per elementi selezionati'\" [matMenuTriggerFor]=\"menuSelections\">\r\n <mat-icon aria-hidden=\"false\" [matBadge]=\"selection.all.length\">checklist</mat-icon>\r\n </button>\r\n }\r\n <mat-menu #menuSelections=\"matMenu\">\r\n <button mat-menu-item (click)=\"selection.clear()\" [attr.aria-label]=\"'Deseleziona tutti'\">\r\n <mat-icon>clear</mat-icon>Deseleziona tutti\r\n </button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item [attr.aria-label]=\"'Segna come da leggere'\" (click)=\"mark(null, true)\">\r\n <mat-icon>outlined_flag</mat-icon>Segna come da leggere\r\n </button>\r\n <button mat-menu-item [attr.aria-label]=\"'Segna come gi\u00E0 letto'\" (click)=\"mark(null)\">\r\n <mat-icon>flag</mat-icon>Segna come gi\u00E0 letto\r\n </button>\r\n </mat-menu>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<div mat-dialog-content id=\"notifications-browser-scrollable\">\r\n <div id=\"notifications-browser-scroller\">\r\n @if (total() === 0) {\r\n <div>\r\n <p class=\"message\"><i>Nessun elemento da visualizzare.</i></p>\r\n </div>\r\n } @else {\r\n <div>\r\n @for (item of items(); track item.id; let i = $index) {\r\n <div (mouseenter)=\"item.isOver = true;\" (mouseleave)=\"item.isOver = false\"\r\n (contextmenu)=\"onContextMenu($event, item)\">\r\n <div class=\"news\" fxLayout=\"row\" fxLayoutGap=\"6px\" fxFill [ngClass]=\"{'news-selected': selection.isSelected(item.id), \r\n 'news-read': item.isRead}\">\r\n <div fxFlex=\"6px\" [ngClass]=\"getItemStateCssClass(item)\" [matTooltip]=\"getItemStateTooltip(item)\">\r\n </div>\r\n <div fxFlex=\"48px\" fxFlexAlign=\"center\" fxLayoutAlign=\"center\">\r\n @if (screenService.isTouchable || item.isOver || selection.isSelected(item.id)) {\r\n <mat-checkbox (change)=\"$event ? selection.toggle(item, item.id) : null\"\r\n [checked]=\"selection.isSelected(item.id)\">\r\n </mat-checkbox>\r\n }\r\n </div>\r\n <div fxFlex=\"*\" fxFlexAlign=\"center\" (click)=\"show(item); $event.stopPropagation()\">\r\n <div class=\"info-1 uppercase\">\r\n {{ (item.publishingDate ?? item.created) | format:'D':'dd/MM/yyyy'}}</div>\r\n <div>{{item.title}}</div>\r\n <div class=\"info-2 uppercase\">\r\n {{item.productNames}}\r\n @if (item.productModulesNames) {\r\n <span> | {{item.productModulesNames}}</span>\r\n }\r\n </div>\r\n </div>\r\n <div fxFlex=\"50px\" fxFlexAlign=\"center\">\r\n @if (item.isOver || item.isMenuOpen || selection.isSelected(item.id)) {\r\n <button type=\"button\" mat-icon-button matTooltip=\"Menu\" [attr.aria-label]=\"'Menu opzioni'\"\r\n [matMenuTriggerFor]=\"contextMenu\" [matMenuTriggerData]=\"{item: item}\" (click)=\"item.isMenuOpen = true\">\r\n <mat-icon>more_vert</mat-icon>\r\n </button>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n <div #contextMenuTrigger=\"matMenuTrigger\" style=\"position: fixed\" [style.left]=\"contextMenuPosition.x\"\r\n [style.top]=\"contextMenuPosition.y\" [matMenuTriggerFor]=\"contextMenu\">\r\n </div>\r\n <mat-menu #contextMenu=\"matMenu\" (closed)=\"updateMenuButtonsVisibility()\">\r\n <ng-template matMenuContent let-item=\"item\">\r\n @if (item.isRead) {\r\n <button mat-menu-item [attr.aria-label]=\"'Segna come da leggere'\" (click)=\"mark(item, true)\">\r\n <mat-icon>flag</mat-icon>Segna come da leggere\r\n </button>\r\n }\r\n @if (!item.isRead) {\r\n <button mat-menu-item [attr.aria-label]=\"'Segna come da gi\u00E0 letto'\" (click)=\"mark(item)\">\r\n <mat-icon>outlined_flag</mat-icon>Segna come gi\u00E0 letto\r\n </button>\r\n }\r\n </ng-template>\r\n </mat-menu>\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n<div mat-dialog-actions class=\"notifications-browser-fixed\">\r\n <div fxLayout=\"row wrap\" fxLayoutGap=\"10px\" fxLayoutAlign=\"space-between\" fxFill>\r\n <!-- legend -->\r\n <div fxFlex.lt-md=\"100\" class=\"legend-container\">\r\n <div class=\"legend unread-bg\"></div>\r\n da leggere\r\n </div>\r\n <div fxFlex.lt-md=\"100\" fxLayoutAlign=\"end\">\r\n <mat-paginator #paginator [hidePageSize]=\"true\" [length]=\"total()\" [pageSize]=\"searchParams.count\"\r\n [showFirstLastButtons]=\"true\" (page)=\"fetchMore($event)\"></mat-paginator>\r\n </div>\r\n </div>\r\n</div>", styles: [":root{--ars-color-link: #03A9F4;--ars-color-link-low: #0288D1;--ars-color-accent: #7894ae;--ars-color-accent-low: #456179;--ars-color-primary: #00a293;--ars-color-primary-low: #006a60;--ars-color-primary-hi: #12c0ae;--ars-color-secondary: #4a635f;--ars-color-secondary-low: #27403c;--ars-color-error: #ff5449;--ars-color-error-low: #a80710;--ars-color-ok: #388E3C;--ars-color-ok-low: #29692c;--ars-color-warning: #FFC107;--ars-color-warning-low: #FFA000;--ars-item-hover-background-color: #eaecef;--ars-item-selected-background-color: #ced1d2;--ars-item-opaque-background-color: rgba(255, 255, 255, .75);--ars-filterbox-filtered-background-color: #f9fbe7}.dialog-info{font-size:x-small;font-weight:700;text-align:right;padding:10px}.dialog-info-green,.dialog-info-ok{color:var(--ars-color-ok, #388E3C)}.dialog-info-red,.dialog-info-error{color:var(--mat-form-field-error-text-color, #a80710)}.dialog-close{margin-right:10px;margin-top:10px}.dialog-menu{margin-left:10px;margin-top:10px}.dialog-title{padding:0 24px}.section-title{font-size:large;font-weight:600;padding-top:10px;padding-bottom:8px}.scroll-auto{overflow:auto}.scroll-hidden{overflow:hidden}b{font-weight:700}.large{font-size:large!important}.small{font-size:small!important}.small-icon-button{width:1.5rem!important;height:1.5rem!important;padding:0!important;display:inline-flex!important;align-items:center;justify-content:center}.small-icon-button .mat-mdc-button-touch-target{width:1.5rem!important;height:1.5rem!important}.x-small{font-size:x-small!important}.uppercase{text-transform:uppercase!important}.lowercase{text-transform:lowercase!important}.truncated{min-width:0}.truncated span,.truncated div{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@media (prefers-color-scheme: dark){:root{--ars-color-link: #03A9F4;--ars-color-link-low: #0288D1;--ars-color-accent: #adcae6;--ars-color-accent-low: #5e7a93;--ars-color-primary: #53dbc9;--ars-color-primary-low: #008679;--ars-color-primary-hi: #74f8e5;--ars-color-secondary: #b1ccc6;--ars-color-secondary-low: #627c77;--ars-color-error: #ff5449;--ars-color-error-low: #a80710;--ars-color-ok: #4CAF50;--ars-color-ok-low: #3f8f41;--ars-color-warning: #FFC107;--ars-color-warning-low: #FFA000;--ars-item-hover-background-color: #262a29;--ars-item-selected-background-color: #3f4342;--ars-item-opaque-background-color: rgba(0, 0, 0, .65);--ars-filterbox-filtered-background-color: #c6c7b8}.dialog-info-green,.dialog-info-ok{color:var(--ars-color-ok, #4CAF50)}.dialog-info-red,.dialog-info-error{color:var(--mat-form-field-error-text-color, #ff5449)}b{font-weight:600}}.news{border-radius:12px;padding:10px 0;min-height:60px!important;margin-bottom:2px;font-weight:600}.news .info-1{font-size:small;text-transform:uppercase;color:var(--ars-color-accent, #7894ae)}.news .info-2{font-size:x-small;text-transform:uppercase;color:var(--ars-color-accent-low, #456179)}.news:hover{background-color:var(--ars-item-hover-background-color, #eaecef);cursor:pointer!important}.news-read{font-weight:400}.news-selected{background-color:var(--ars-item-selected-background-color, #ced1d2);border-radius:0}.message{color:var(--ars-color-secondary, #4a635f);padding:20px;text-align:center}.unread-bg{background-color:var(--ars-color-warning-low, #FFA000)}.legend-container{display:flex;flex-direction:row;align-items:center;font-size:x-small;text-transform:uppercase;font-weight:500;margin-left:16px}.legend-container .legend{display:inline-block;height:8px;width:8px;margin-right:4px}.legend-container .next{margin-left:8px}\n"] }]
|
|
265
265
|
}], propDecorators: { paginator: [{
|
|
266
266
|
type: ViewChild,
|
|
267
267
|
args: ['paginator']
|
|
@@ -269,4 +269,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImpor
|
|
|
269
269
|
type: ViewChild,
|
|
270
270
|
args: ['contextMenuTrigger']
|
|
271
271
|
}] } });
|
|
272
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9ucy1icm93c2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fycy11dGlscy9zdXBwb3J0LnVpL3VpL25vdGlmaWNhdGlvbnMtYnJvd3Nlci9ub3RpZmljYXRpb25zLWJyb3dzZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJzLXV0aWxzL3N1cHBvcnQudWkvdWkvbm90aWZpY2F0aW9ucy1icm93c2VyL25vdGlmaWNhdGlvbnMtYnJvd3Nlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFFVCxTQUFTLEVBQ1QsTUFBTSxFQUNOLE1BQU0sRUFDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQWtCLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZFLE9BQU8sRUFBZ0Isa0JBQWtCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMvRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxXQUFXLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM1RyxPQUFPLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBb0MsTUFBTSx1Q0FBdUMsQ0FBQztBQUMxSCxPQUFPLEVBQ0wsYUFBYSxFQUNkLE1BQU0sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNuRSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNyRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDekQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGNBQWMs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LFdBQVcsQ0FBQyxZQUFZLEVBQUUsME9DbEM1QyxxZ05BbUlNLHUrQkQ1Rk0sVUFBVSxnaUdBQUUsY0FBYyw4SEFBRSxlQUFlLHdVQUFFLGdCQUFnQiw2VEFBRSxjQUFjLG9MQUNyRixhQUFhLG1MQUFFLGtCQUFrQiwyYUFBRSxjQUFjLDBXQUFFLFdBQVcsaXhCQUFFLGFBQWEsczFCQUFFLGNBQWMsMlBBQUUsZ0JBQWdCLG9JQUFFLGdCQUFnQix5R0FBRSxPQUFPLG1GQUFFLGNBQWMsa2lCQUFFLGlCQUFpQiwrV0FBRSxnQkFBZ0IsMkhBQy9MLGtCQUFrQixnU0FBRSxVQUFVOzsyRkFFckIsb0NBQW9DO2tCQVZoRCxTQUFTOzJCQUNGLEVBQUUsTUFBTSxFQUFFLFdBQVcsQ0FBQyxZQUFZLEVBQUUsRUFBRSxjQUdoQyxJQUFJLG1CQUNDLHVCQUF1QixDQUFDLE1BQU0sV0FDdEMsQ0FBQyxVQUFVLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxjQUFjO3dCQUNyRixhQUFhLEVBQUUsa0JBQWtCLEVBQUUsY0FBYyxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCO3dCQUMvTCxrQkFBa0IsRUFBRSxVQUFVLEVBQUUsNEJBQTRCLENBQUM7OEJBS3ZDLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVztnQkFDVyxXQUFXO3NCQUEzQyxTQUFTO3VCQUFDLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDb21wb25lbnQsIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgVmlld0NoaWxkLFxyXG4gIGluamVjdCxcclxuICBzaWduYWxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0TWVudVRyaWdnZXIsIE1hdE1lbnVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9tZW51JztcclxuaW1wb3J0IHsgTWF0UGFnaW5hdG9yLCBNYXRQYWdpbmF0b3JNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3InO1xyXG5pbXBvcnQgeyBCcm9hZGNhc3RTZXJ2aWNlLCBTY3JlZW5TZXJ2aWNlLCBTZWxlY3RhYmxlTW9kZWwsIFN5c3RlbVV0aWxzIH0gZnJvbSAnQGFyc2VkaXppb25pL2Fycy11dGlscy9jb3JlJztcclxuaW1wb3J0IHsgU3VwcG9ydFNlcnZpY2UsIFN1cHBvcnRNZXNzYWdlcywgU3VwcG9ydE5vdGlmaWNhdGlvbnNTZWFyY2hQYXJhbXMgfSBmcm9tICdAYXJzZWRpemlvbmkvYXJzLXV0aWxzL3N1cHBvcnQuY29tbW9uJztcclxuaW1wb3J0IHtcclxuICBEaWFsb2dTZXJ2aWNlXHJcbn0gZnJvbSAnQGFyc2VkaXppb25pL2Fycy11dGlscy91aSc7XHJcbmltcG9ydCB7IFN1YmplY3QsIGRlYm91bmNlVGltZSwgZnJvbUV2ZW50LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgU3VwcG9ydE5vdGlmaWNhdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vbm90aWZpY2F0aW9uL25vdGlmaWNhdGlvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGb3JtYXRQaXBlIH0gZnJvbSAnQGFyc2VkaXppb25pL2Fycy11dGlscy9jb3JlJztcclxuaW1wb3J0IHsgTWF0Q2hlY2tib3hNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XHJcbmltcG9ydCB7IEV4dGVuZGVkTW9kdWxlIH0gZnJvbSAnQG5nYnJhY2tldC9uZ3gtbGF5b3V0L2V4dGVuZGVkJztcclxuaW1wb3J0IHsgTWF0RGl2aWRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpdmlkZXInO1xyXG5pbXBvcnQgeyBNYXRCYWRnZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2JhZGdlJztcclxuaW1wb3J0IHsgTmdDbGFzcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcclxuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XHJcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xyXG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xyXG5pbXBvcnQgeyBNYXREaWFsb2dUaXRsZSwgTWF0RGlhbG9nQ2xvc2UsIE1hdERpYWxvZ0NvbnRlbnQsIE1hdERpYWxvZ0FjdGlvbnMgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBGbGV4TW9kdWxlIH0gZnJvbSAnQG5nYnJhY2tldC9uZ3gtbGF5b3V0L2ZsZXgnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgaG9zdDogeyAnQmluZCc6IFN5c3RlbVV0aWxzLmdlbmVyYXRlVVVJRCgpIH0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL25vdGlmaWNhdGlvbnMtYnJvd3Nlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbm90aWZpY2F0aW9ucy1icm93c2VyLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBpbXBvcnRzOiBbRmxleE1vZHVsZSwgTWF0RGlhbG9nVGl0bGUsIE1hdEJ1dHRvbk1vZHVsZSwgTWF0VG9vbHRpcE1vZHVsZSwgTWF0RGlhbG9nQ2xvc2UsXHJcbiAgICBNYXRJY29uTW9kdWxlLCBNYXRGb3JtRmllbGRNb2R1bGUsIE1hdElucHV0TW9kdWxlLCBGb3Jtc01vZHVsZSwgTWF0TWVudU1vZHVsZSwgTWF0QmFkZ2VNb2R1bGUsIE1hdERpdmlkZXJNb2R1bGUsIE1hdERpYWxvZ0NvbnRlbnQsIE5nQ2xhc3MsIEV4dGVuZGVkTW9kdWxlLCBNYXRDaGVja2JveE1vZHVsZSwgTWF0RGlhbG9nQWN0aW9ucyxcclxuICAgIE1hdFBhZ2luYXRvck1vZHVsZSwgRm9ybWF0UGlwZSwgU3VwcG9ydE5vdGlmaWNhdGlvbkNvbXBvbmVudF1cclxufSlcclxuZXhwb3J0IGNsYXNzIFN1cHBvcnROb3RpZmljYXRpb25zQnJvd3NlckNvbXBvbmVudFxyXG4gIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQge1xyXG5cclxuICBAVmlld0NoaWxkKCdwYWdpbmF0b3InKSBwYWdpbmF0b3IhOiBNYXRQYWdpbmF0b3I7XHJcbiAgQFZpZXdDaGlsZCgnY29udGV4dE1lbnVUcmlnZ2VyJykgY29udGV4dE1lbnUhOiBNYXRNZW51VHJpZ2dlcjtcclxuXHJcblxyXG4gIHByb3RlY3RlZCBzY3JlZW5TZXJ2aWNlID0gaW5qZWN0KFNjcmVlblNlcnZpY2UpO1xyXG4gIHByaXZhdGUgc3VwcG9ydFNlcnZpY2UgPSBpbmplY3QoU3VwcG9ydFNlcnZpY2UpO1xyXG4gIHByaXZhdGUgYnJvYWRjYXN0U2VydmljZSA9IGluamVjdChCcm9hZGNhc3RTZXJ2aWNlKTtcclxuICBwcml2YXRlIGRpYWxvZ1NlcnZpY2UgPSBpbmplY3QoRGlhbG9nU2VydmljZSk7XHJcbiAgcHJpdmF0ZSB1bnN1YnNjcmliZTogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgcHJpdmF0ZSBoZWlnaHQ6IG51bWJlciA9IC0xO1xyXG5cclxuICBwcm90ZWN0ZWQgc2VsZWN0aW9uID0gbmV3IFNlbGVjdGFibGVNb2RlbDxhbnksIG51bWJlcj4odHJ1ZSwgJ2lkJyk7XHJcbiAgcHJvdGVjdGVkIHNlYXJjaFBhcmFtczogU3VwcG9ydE5vdGlmaWNhdGlvbnNTZWFyY2hQYXJhbXMgPSB7XHJcbiAgICBmaXJzdDogMCxcclxuICAgIGNvdW50OiAyNVxyXG4gIH07XHJcbiAgcHJvdGVjdGVkIHRvdGFsID0gc2lnbmFsPG51bWJlcj4oLTEpO1xyXG4gIHByb3RlY3RlZCBpdGVtcyA9IHNpZ25hbDxhbnk+KG51bGwpO1xyXG4gIHByb3RlY3RlZCBjb250ZXh0TWVudVBvc2l0aW9uID0geyB4OiAnMHB4JywgeTogJzBweCcgfTtcclxuXHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgLy8gUmVhY3QgdG8gd2luZG93IHNpemUgY2hhbmdlXHJcbiAgICBmcm9tRXZlbnQod2luZG93LCAncmVzaXplJylcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUpLCBkZWJvdW5jZVRpbWUoNTAwKSlcclxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgLy8gVXBkYXRlIHZpZXdcclxuICAgICAgICB0aGlzLnJlc2l6ZSgpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAvLyBSZWFjdCB0byBtZXNzYWdlIGJyb2FkY2FzdGluZ1xyXG4gICAgdGhpcy5icm9hZGNhc3RTZXJ2aWNlLmdldE1lc3NhZ2UoKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKG1lc3NhZ2U6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChtZXNzYWdlLmlkID09PSBTdXBwb3J0TWVzc2FnZXMuTk9USUZJQ0FUSU9OX1JFQUQpIHtcclxuICAgICAgICAgIGNvbnN0IGl0ZW0gPSBTeXN0ZW1VdGlscy5hcnJheUZpbmRCeUtleShcclxuICAgICAgICAgICAgdGhpcy5pdGVtcyxcclxuICAgICAgICAgICAgJ2lkJyxcclxuICAgICAgICAgICAgbWVzc2FnZS5kYXRhXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgaWYgKGl0ZW0pIHtcclxuICAgICAgICAgICAgaXRlbS5pc1JlYWQgPSB0cnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnVuc3Vic2NyaWJlLm5leHQoKTtcclxuICAgIHRoaXMudW5zdWJzY3JpYmUuY29tcGxldGUoKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMucmVzaXplKCk7XHJcbiAgICB0aGlzLmZpbmQoKTsgICAgXHJcbiAgfVxyXG5cclxuXHJcbiAgLyoqXHJcbiAgICogUmVzaXplIGRpYWxvZ1xyXG4gICAqL1xyXG4gIHByaXZhdGUgcmVzaXplKCkge1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGxldCBlbGVtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25vdGlmaWNhdGlvbnMtYnJvd3Nlci1zY3JvbGxhYmxlJyk7XHJcbiAgICAgIGlmIChlbGVtKSB7XHJcbiAgICAgICAgY29uc3QgaCA9IHRoaXMuZGlhbG9nU2VydmljZS5nZXRDdXJyZW50RGlhbG9nU2Nyb2xsYWJsZUhlaWdodChcclxuICAgICAgICAgIFsnbm90aWZpY2F0aW9ucy1icm93c2VyLWZpeGVkJ10sXHJcbiAgICAgICAgICB3aW5kb3cuaW5uZXJIZWlnaHRcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmIChoICE9IHRoaXMuaGVpZ2h0KSB7XHJcbiAgICAgICAgICBlbGVtLnNldEF0dHJpYnV0ZSgnc3R5bGUnLCAnaGVpZ2h0OicgKyBoICsgJ3B4ICFpbXBvcnRhbnQ7bWF4LWhlaWdodDonICsgaCArICdweCAhaW1wb3J0YW50Jyk7XHJcbiAgICAgICAgICB0aGlzLmhlaWdodCA9IGg7XHJcbiAgICAgICAgICB0aGlzLnJlc2l6ZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnJlc2l6ZSgpO1xyXG4gICAgICB9XHJcbiAgICB9LCAxMDApO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIG9uQ29udGV4dE1lbnUoZXZlbnQ6IE1vdXNlRXZlbnQsIGl0ZW06IGFueSkge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIHRoaXMuY29udGV4dE1lbnVQb3NpdGlvbi54ID0gZXZlbnQuY2xpZW50WCArICdweCc7XHJcbiAgICB0aGlzLmNvbnRleHRNZW51UG9zaXRpb24ueSA9IGV2ZW50LmNsaWVudFkgKyAncHgnO1xyXG4gICAgdGhpcy5jb250ZXh0TWVudS5tZW51RGF0YSA9IHsgaXRlbTogaXRlbSB9O1xyXG4gICAgdGhpcy5jb250ZXh0TWVudS5vcGVuTWVudSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXBkYXRlIHNjcm9sbFxyXG4gICAqL1xyXG4gIHByaXZhdGUgdXBkYXRlU2Nyb2xsKCkge1xyXG4gICAgLy8gU2Nyb2xsIHRvIHRvcFxyXG4gICAgbGV0IGVsZW0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbm90aWZpY2F0aW9ucy1icm93c2VyLXNjcm9sbGVyJyk7XHJcbiAgICBpZiAoZWxlbSkgZWxlbS5wYXJlbnRFbGVtZW50LnNjcm9sbFRvcCA9IDA7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVcGRhdGUgbWVudSBidXR0b25zIHZpc2liaWxpdHkgd2hlbiB0aGUgbWVudSBpcyBjbG9zZWRcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgdXBkYXRlTWVudUJ1dHRvbnNWaXNpYmlsaXR5KCkge1xyXG4gICAgdGhpcy5pdGVtcygpPy5mb3JFYWNoKChuOiBhbnkpID0+IHtcclxuICAgICAgbi5pc01lbnVPcGVuID0gZmFsc2U7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAgICogR2V0IGFsbCBzZWxlY3RlZCBpZHNcclxuICAgICAqIEByZXR1cm5zOiB0aGUgc2VsZWN0ZWQgaWRzIGFzIGFuIGFycmF5XHJcbiAgICAgKi9cclxuICBwcml2YXRlIGdldFNlbGV0ZWN0SWRzKCk6IG51bWJlcltdIHtcclxuICAgIGlmICh0aGlzLnNlbGVjdGlvbi5hbGwubGVuZ3RoID4gNTApIHtcclxuICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmVycm9yKCdMYSBzZWxlemlvbmUgbm9uIHB1w7IgY29udGVuZXJlIHBpw7kgZGkgNTAgZWxlbWVudGkuJyk7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgbGV0IGlkczogbnVtYmVyW10gPSBbXTtcclxuICAgIGlmICh0aGlzLnNlbGVjdGlvbi5hbGwubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGlvbi5hbGwuZm9yRWFjaCgobjogYW55KSA9PiB7XHJcbiAgICAgICAgaWRzLnB1c2gobi5pZCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGlkcztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4qIFJldHVybiBpdGVtIHN0YXRlIGNzcyBjbGFzc1xyXG4qIEBwYXJhbSBpdGVtIDogdGhlIGl0ZW0gdG8gZXZhbHVhdGVcclxuKi9cclxuICBwcm90ZWN0ZWQgZ2V0SXRlbVN0YXRlQ3NzQ2xhc3MoaXRlbTogYW55KSB7XHJcbiAgICBpZiAoIWl0ZW0uaXNSZWFkKSByZXR1cm4gJ3VucmVhZC1iZyc7XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybiB0aGUgaXRlbSBzdGF0ZSB0b29sdGlwIHRleHRcclxuICAgKiBAcGFyYW0gaXRlbSA6IHRoZSBpdGVtIHRvIGV2YWx1YXRlXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGdldEl0ZW1TdGF0ZVRvb2x0aXAoaXRlbTogYW55KTogc3RyaW5nIHtcclxuICAgIGlmICghaXRlbS5pc1JlYWQpIHJldHVybiAnTm9uIGxldHRvJztcclxuICAgIHJldHVybiAnJztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFBlcmZvcm0gYSBuZXcgc2VhcmNoXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGZpbmQoKSB7XHJcbiAgICB0aGlzLnNlYXJjaFBhcmFtcy5maXJzdCA9IDA7XHJcbiAgICBpZiAodGhpcy5wYWdpbmF0b3IpIHtcclxuICAgICAgdGhpcy5wYWdpbmF0b3IucGFnZUluZGV4ID0gMDtcclxuICAgIH1cclxuICAgIHRoaXMuZmV0Y2goKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlIGRhdGFcclxuICAgKi9cclxuICBwcml2YXRlIGZldGNoKCkge1xyXG4gICAgaWYgKCF0aGlzLnN1cHBvcnRTZXJ2aWNlLmxvZ2dlZEluKSByZXR1cm47XHJcbiAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuYnVzeSgnQ2FyaWNhbWVudG8gaW4gY29yc28uLi4nKTtcclxuICAgIHRoaXMuc3VwcG9ydFNlcnZpY2UucXVlcnlOb3RpZmljYXRpb25zKHRoaXMuc2VhcmNoUGFyYW1zKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocjogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoIXIuc3VjY2Vzcykge1xyXG4gICAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuZXJyb3Ioci5tZXNzYWdlKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuaXRlbXMuc2V0KHIudmFsdWU/Lml0ZW1zID8/IFtdKTtcclxuICAgICAgICAgICAgdGhpcy50b3RhbC5zZXQoci52YWx1ZT8udG90YWwgPz8gMCk7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlU2Nyb2xsKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBjb21wbGV0ZTogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmNsZWFyQnVzeSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTaG93IGEgbmV3IHBhZ2UgcmVzdWx0XHJcbiAgICogQHBhcmFtIGUgOiB0aGUgTWF0UGFnaW5hdG9yIFBhZ2VFdmVudCBkYXRhXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGZldGNoTW9yZShlOiBhbnkpIHtcclxuICAgIGxldCBmaXJzdCA9IGUucGFnZUluZGV4ICogdGhpcy5zZWFyY2hQYXJhbXMuY291bnQ7XHJcbiAgICB0aGlzLnNlYXJjaFBhcmFtcy5maXJzdCA9IGZpcnN0O1xyXG4gICAgdGhpcy5mZXRjaCgpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIE1hcmsgYSBub3RpZmljYXRpb24gYXMgcmVhZCBvciB1bnJlYWRcclxuICAgKiBAcGFyYW0gaXRlbSA6IHRoZSBpdGVtIHRvIHNldCBvciBudWxsIHRvIHVzZSBzZWxlY3Rpb25cclxuICAgKiBAcGFyYW0gdW5tYXJrIDogdHJ1ZSB0byBzZXQgYXMgdW5yZWFkIG9yIGZhbHNlIHRvIHNldCBhcyByZWFkXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIG1hcmsoaXRlbTogYW55ID0gbnVsbCwgdW5tYXJrOiBib29sZWFuID0gZmFsc2UpIHtcclxuICAgIGlmICghdGhpcy5zdXBwb3J0U2VydmljZS5sb2dnZWRJbikgcmV0dXJuO1xyXG4gICAgaWYgKCFpdGVtICYmICF0aGlzLnNlbGVjdGlvbi5hbGwubGVuZ3RoKSByZXR1cm47XHJcbiAgICBjb25zdCBpZHM6IG51bWJlcltdID0gaXRlbSA/IFtpdGVtLmlkXSA6IHRoaXMuZ2V0U2VsZXRlY3RJZHMoKTtcclxuICAgIHRoaXMuZGlhbG9nU2VydmljZS5idXN5KCdBZ2dpb3JuYW1lbnRvIGluIGNvcnNvLi4uJyk7XHJcbiAgICB0aGlzLnN1cHBvcnRTZXJ2aWNlLm1hcmtOb3RpZmljYXRpb25zKHtcclxuICAgICAgaWRzOiBpZHMsXHJcbiAgICAgIHVubWFyazogdW5tYXJrXHJcbiAgICB9KVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocjogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoIXIuc3VjY2Vzcykge1xyXG4gICAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuZXJyb3Ioci5tZXNzYWdlKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlkcy5mb3JFYWNoKChpZDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc3QgaSA9IFN5c3RlbVV0aWxzLmFycmF5RmluZEluZGV4QnlLZXkoXHJcbiAgICAgICAgICAgICAgICB0aGlzLml0ZW1zLFxyXG4gICAgICAgICAgICAgICAgJ2lkJyxcclxuICAgICAgICAgICAgICAgIGlkXHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICBpZiAoaSAhPT0gLTEpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaXRlbXMoKVtpXS5pc1JlYWQgPSAhdW5tYXJrO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uLmNsZWFyKCk7XHJcbiAgICAgICAgICAgIHRoaXMuc3VwcG9ydFNlcnZpY2UuY291bnRVbnJlYWROb3RpZmljYXRpb25zKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBjb21wbGV0ZTogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmNsZWFyQnVzeSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEaXNwbGF5IGEgbm90aWZpY2F0aW9uXHJcbiAgICogQHBhcmFtIGl0ZW0gOiB0aGUgaXRlbSB0byBkaXNwbGF5XHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIHNob3coaXRlbTogYW55KSB7XHJcbiAgICB0aGlzLmRpYWxvZ1NlcnZpY2Uub3BlbihTdXBwb3J0Tm90aWZpY2F0aW9uQ29tcG9uZW50LCB7XHJcbiAgICAgIGFyaWFMYWJlbDogJ3Zpc3VhbGl6emEgbm90aWZpY2EnLFxyXG4gICAgICBhdXRvRm9jdXM6IGZhbHNlLFxyXG4gICAgICByZXN0b3JlRm9jdXM6IGZhbHNlLFxyXG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsXHJcbiAgICAgIGRhdGE6IHsgaWQ6IGl0ZW0uaWQgfSxcclxuICAgICAgbWluV2lkdGg6ICczNzVweCcsXHJcbiAgICAgIG1heFdpZHRoOiAnOTAwcHgnLFxyXG4gICAgICB3aWR0aDogJzk5JScsXHJcbiAgICAgIGhlaWdodDogJzk5JSdcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cIm5vdGlmaWNhdGlvbnMtYnJvd3Nlci1maXhlZFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJub3RpZmljYXRpb25zLWJyb3dzZXItaGVhZGVyXCI+XHJcbiAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhGaWxsIGZ4TGF5b3V0R2FwPVwiMTBweFwiPlxyXG4gICAgICA8ZGl2IGZ4RmxleD1cIipcIiBmeEZsZXhBbGlnbj1cImNlbnRlclwiPlxyXG4gICAgICAgIDxoMiBtYXQtZGlhbG9nLXRpdGxlPk5vdml0w6AgZSBpbmZvcm1hemlvbmk8L2gyPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBmeExheW91dEFsaWduPVwiZW5kXCI+XHJcbiAgICAgICAgPGJ1dHRvbiBmeEZsZXhBbGlnbj1cInN0YXJ0XCIgdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiBtYXRUb29sdGlwPVwiQ2hpdWRpXCIgYXJpYS1sYWJlbD1cIkNoaXVkaVwiXHJcbiAgICAgICAgICBbbWF0LWRpYWxvZy1jbG9zZV09XCJ0cnVlXCIgY2xhc3M9XCJkaWFsb2ctY2xvc2VcIj5cclxuICAgICAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBzdHlsZT1cInBhZGRpbmctbGVmdDogMjRweDsgcGFkZGluZy1yaWdodDogMjRweDsgcGFkZGluZy1ib3R0b206IDEwcHg7XCI+XHJcbiAgICA8ZGl2IGZ4TGF5b3V0PVwicm93IHdyYXBcIiBmeEZpbGwgZnhMYXlvdXRBbGlnbj1cInNwYWNlLWJldHdlZW5cIj5cclxuICAgICAgPGRpdiBmeEZsZXg9XCIyMDBweFwiIGZ4RmxleEFsaWduPVwiZW5kXCI+XHJcbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkIHN0eWxlPVwid2lkdGg6MjAwcHhcIiBzdWJzY3JpcHRTaXppbmc9XCJkeW5hbWljXCIgYXBwZWFyYW5jZT1cIm91dGxpbmVcIj5cclxuICAgICAgICAgIDxtYXQtbGFiZWw+Q2VyY2E8L21hdC1sYWJlbD5cclxuICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCAjc2VhcmNoSW5wdXQ9XCJtYXRJbnB1dFwiIHR5cGU9XCJ0ZXh0XCIgWyhuZ01vZGVsKV09XCJzZWFyY2hQYXJhbXMuYW55XCIgbWF4bGVuZ3RoPVwiMjAwXCJcclxuICAgICAgICAgICAgKGtleXVwLkVudGVyKT1cImZpbmQoKVwiIGF1dG9mb2N1cyBwbGFjZWhvbGRlcj1cIkluc2VyaXNjaSB0ZXN0byArIElOVklPLi4uXCIgLz5cclxuICAgICAgICAgIEBpZiAoc2VhcmNoUGFyYW1zLmFueSkge1xyXG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgdGFiaW5kZXg9XCItMVwiIG1hdFN1ZmZpeCBtYXQtaWNvbi1idXR0b24gYXJpYS1sYWJlbD1cIlB1bGlzY2lcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwic2VhcmNoUGFyYW1zLmFueSA9ICcnXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIH1cclxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBmeEZsZXg9XCIqXCIgZnhMYXlvdXRBbGlnbj1cImVuZFwiPlxyXG4gICAgICAgIDxkaXYgZnhGbGV4QWxpZ249XCJjZW50ZXJcIj5cclxuICAgICAgICAgIEBpZiAoc2VsZWN0aW9uLmhhc1ZhbHVlKCkpIHtcclxuICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1idXR0b24gbWF0VG9vbHRpcD1cIkF6aW9uaSBkYSBlc2VndWlyZSBzdWdsaSBlbGVtZW50aSBzZWxlemlvbmF0aVwiXHJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ01lbnUgb3B6aW9uaSBwZXIgZWxlbWVudGkgc2VsZXppb25hdGknXCIgW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVTZWxlY3Rpb25zXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbiBhcmlhLWhpZGRlbj1cImZhbHNlXCIgW21hdEJhZGdlXT1cInNlbGVjdGlvbi5hbGwubGVuZ3RoXCI+Y2hlY2tsaXN0PC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgPG1hdC1tZW51ICNtZW51U2VsZWN0aW9ucz1cIm1hdE1lbnVcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJzZWxlY3Rpb24uY2xlYXIoKVwiIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0Rlc2VsZXppb25hIHR1dHRpJ1wiPlxyXG4gICAgICAgICAgICAgIDxtYXQtaWNvbj5jbGVhcjwvbWF0LWljb24+RGVzZWxlemlvbmEgdHV0dGlcclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxyXG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gW2F0dHIuYXJpYS1sYWJlbF09XCInU2VnbmEgY29tZSBkYSBsZWdnZXJlJ1wiIChjbGljayk9XCJtYXJrKG51bGwsIHRydWUpXCI+XHJcbiAgICAgICAgICAgICAgPG1hdC1pY29uPm91dGxpbmVkX2ZsYWc8L21hdC1pY29uPlNlZ25hIGNvbWUgZGEgbGVnZ2VyZVxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIFthdHRyLmFyaWEtbGFiZWxdPVwiJ1NlZ25hIGNvbWUgZ2nDoCBsZXR0bydcIiAoY2xpY2spPVwibWFyayhudWxsKVwiPlxyXG4gICAgICAgICAgICAgIDxtYXQtaWNvbj5mbGFnPC9tYXQtaWNvbj5TZWduYSBjb21lIGdpw6AgbGV0dG9cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L21hdC1tZW51PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuPGRpdiBtYXQtZGlhbG9nLWNvbnRlbnQgaWQ9XCJub3RpZmljYXRpb25zLWJyb3dzZXItc2Nyb2xsYWJsZVwiPlxyXG4gIDxkaXYgaWQ9XCJub3RpZmljYXRpb25zLWJyb3dzZXItc2Nyb2xsZXJcIj5cclxuICAgIEBpZiAodG90YWwoKSA9PT0gMCkge1xyXG4gICAgPGRpdj5cclxuICAgICAgPHAgY2xhc3M9XCJtZXNzYWdlXCI+PGk+TmVzc3VuIGVsZW1lbnRvIGRhIHZpc3VhbGl6emFyZS48L2k+PC9wPlxyXG4gICAgPC9kaXY+XHJcbiAgICB9IEBlbHNlIHtcclxuICAgIDxkaXY+XHJcbiAgICAgIEBmb3IgKGl0ZW0gb2YgaXRlbXMoKTsgdHJhY2sgaXRlbS5pZDsgbGV0IGkgPSAkaW5kZXgpIHtcclxuICAgICAgPGRpdiAobW91c2VlbnRlcik9XCJpdGVtLmlzT3ZlciA9IHRydWU7XCIgKG1vdXNlbGVhdmUpPVwiaXRlbS5pc092ZXIgPSBmYWxzZVwiXHJcbiAgICAgICAgKGNvbnRleHRtZW51KT1cIm9uQ29udGV4dE1lbnUoJGV2ZW50LCBpdGVtKVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJuZXdzXCIgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEdhcD1cIjZweFwiIGZ4RmlsbCBbbmdDbGFzc109XCJ7J25ld3Mtc2VsZWN0ZWQnOiBzZWxlY3Rpb24uaXNTZWxlY3RlZChpdGVtLmlkKSwgXHJcbiAgICAgICAgICAnbmV3cy1yZWFkJzogaXRlbS5pc1JlYWR9XCI+XHJcbiAgICAgICAgICA8ZGl2IGZ4RmxleD1cIjZweFwiIFtuZ0NsYXNzXT1cImdldEl0ZW1TdGF0ZUNzc0NsYXNzKGl0ZW0pXCIgW21hdFRvb2x0aXBdPVwiZ2V0SXRlbVN0YXRlVG9vbHRpcChpdGVtKVwiPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGZ4RmxleD1cIjQ4cHhcIiBmeEZsZXhBbGlnbj1cImNlbnRlclwiIGZ4TGF5b3V0QWxpZ249XCJjZW50ZXJcIj5cclxuICAgICAgICAgICAgQGlmIChzY3JlZW5TZXJ2aWNlLmlzVG91Y2hhYmxlIHx8IGl0ZW0uaXNPdmVyIHx8IHNlbGVjdGlvbi5pc1NlbGVjdGVkKGl0ZW0uaWQpKSB7XHJcbiAgICAgICAgICAgIDxtYXQtY2hlY2tib3ggKGNoYW5nZSk9XCIkZXZlbnQgPyBzZWxlY3Rpb24udG9nZ2xlKGl0ZW0sIGl0ZW0uaWQpIDogbnVsbFwiXHJcbiAgICAgICAgICAgICAgW2NoZWNrZWRdPVwic2VsZWN0aW9uLmlzU2VsZWN0ZWQoaXRlbS5pZClcIj5cclxuICAgICAgICAgICAgPC9tYXQtY2hlY2tib3g+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBmeEZsZXg9XCIqXCIgZnhGbGV4QWxpZ249XCJjZW50ZXJcIiAoY2xpY2spPVwic2hvdyhpdGVtKTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvLTEgdXBwZXJjYXNlXCI+XHJcbiAgICAgICAgICAgICAge3sgKGl0ZW0ucHVibGlzaGluZ0RhdGUgPz8gaXRlbS5jcmVhdGVkKSB8IGZvcm1hdDonRCc6J2RkL01NL3l5eXknfX08L2Rpdj5cclxuICAgICAgICAgICAgPGRpdj57e2l0ZW0udGl0bGV9fTwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5mby0yIHVwcGVyY2FzZVwiPlxyXG4gICAgICAgICAgICAgIHt7aXRlbS5wcm9kdWN0TmFtZXN9fVxyXG4gICAgICAgICAgICAgIEBpZiAoaXRlbS5wcm9kdWN0TW9kdWxlc05hbWVzKSB7XHJcbiAgICAgICAgICAgICAgPHNwYW4+IHwge3tpdGVtLnByb2R1Y3RNb2R1bGVzTmFtZXN9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGZ4RmxleD1cIjUwcHhcIiBmeEZsZXhBbGlnbj1cImNlbnRlclwiPlxyXG4gICAgICAgICAgICBAaWYgKGl0ZW0uaXNPdmVyIHx8IGl0ZW0uaXNNZW51T3BlbiB8fCBzZWxlY3Rpb24uaXNTZWxlY3RlZChpdGVtLmlkKSkge1xyXG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gbWF0VG9vbHRpcD1cIk1lbnVcIiBbYXR0ci5hcmlhLWxhYmVsXT1cIidNZW51IG9wemlvbmknXCJcclxuICAgICAgICAgICAgICBbbWF0TWVudVRyaWdnZXJGb3JdPVwiY29udGV4dE1lbnVcIiBbbWF0TWVudVRyaWdnZXJEYXRhXT1cIntpdGVtOiBpdGVtfVwiIChjbGljayk9XCJpdGVtLmlzTWVudU9wZW4gPSB0cnVlXCI+XHJcbiAgICAgICAgICAgICAgPG1hdC1pY29uPm1vcmVfdmVydDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIH1cclxuICAgICAgPGRpdiAjY29udGV4dE1lbnVUcmlnZ2VyPVwibWF0TWVudVRyaWdnZXJcIiBzdHlsZT1cInBvc2l0aW9uOiBmaXhlZFwiIFtzdHlsZS5sZWZ0XT1cImNvbnRleHRNZW51UG9zaXRpb24ueFwiXHJcbiAgICAgICAgW3N0eWxlLnRvcF09XCJjb250ZXh0TWVudVBvc2l0aW9uLnlcIiBbbWF0TWVudVRyaWdnZXJGb3JdPVwiY29udGV4dE1lbnVcIj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxtYXQtbWVudSAjY29udGV4dE1lbnU9XCJtYXRNZW51XCIgKGNsb3NlZCk9XCJ1cGRhdGVNZW51QnV0dG9uc1Zpc2liaWxpdHkoKVwiPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBtYXRNZW51Q29udGVudCBsZXQtaXRlbT1cIml0ZW1cIj5cclxuICAgICAgICAgIEBpZiAoaXRlbS5pc1JlYWQpIHtcclxuICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSBbYXR0ci5hcmlhLWxhYmVsXT1cIidTZWduYSBjb21lIGRhIGxlZ2dlcmUnXCIgKGNsaWNrKT1cIm1hcmsoaXRlbSwgdHJ1ZSlcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPmZsYWc8L21hdC1pY29uPlNlZ25hIGNvbWUgZGEgbGVnZ2VyZVxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBAaWYgKCFpdGVtLmlzUmVhZCkge1xyXG4gICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIFthdHRyLmFyaWEtbGFiZWxdPVwiJ1NlZ25hIGNvbWUgZGEgZ2nDoCBsZXR0bydcIiAoY2xpY2spPVwibWFyayhpdGVtKVwiPlxyXG4gICAgICAgICAgICA8bWF0LWljb24+b3V0bGluZWRfZmxhZzwvbWF0LWljb24+U2VnbmEgY29tZSBnacOgIGxldHRvXHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIH1cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICA8L21hdC1tZW51PlxyXG4gICAgPC9kaXY+XHJcbiAgICB9XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG48ZGl2IG1hdC1kaWFsb2ctYWN0aW9ucyBjbGFzcz1cIm5vdGlmaWNhdGlvbnMtYnJvd3Nlci1maXhlZFwiPlxyXG4gIDxkaXYgZnhMYXlvdXQ9XCJyb3cgd3JhcFwiIGZ4TGF5b3V0R2FwPVwiMTBweFwiIGZ4TGF5b3V0QWxpZ249XCJzcGFjZS1iZXR3ZWVuXCIgZnhGaWxsPlxyXG4gICAgPCEtLSBsZWdlbmQgLS0+XHJcbiAgICA8ZGl2IGZ4RmxleC5sdC1tZD1cIjEwMFwiIGNsYXNzPVwibGVnZW5kLWNvbnRhaW5lclwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibGVnZW5kIHVucmVhZC1iZ1wiPjwvZGl2PlxyXG4gICAgICBkYSBsZWdnZXJlXHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgZnhGbGV4Lmx0LW1kPVwiMTAwXCIgZnhMYXlvdXRBbGlnbj1cImVuZFwiPlxyXG4gICAgICA8bWF0LXBhZ2luYXRvciAjcGFnaW5hdG9yIFtoaWRlUGFnZVNpemVdPVwidHJ1ZVwiIFtsZW5ndGhdPVwidG90YWwoKVwiIFtwYWdlU2l6ZV09XCJzZWFyY2hQYXJhbXMuY291bnRcIlxyXG4gICAgICAgIFtzaG93Rmlyc3RMYXN0QnV0dG9uc109XCJ0cnVlXCIgKHBhZ2UpPVwiZmV0Y2hNb3JlKCRldmVudClcIj48L21hdC1wYWdpbmF0b3I+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+Il19
|
|
272
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9ucy1icm93c2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fycy11dGlscy9zdXBwb3J0LnVpL3VpL25vdGlmaWNhdGlvbnMtYnJvd3Nlci9ub3RpZmljYXRpb25zLWJyb3dzZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJzLXV0aWxzL3N1cHBvcnQudWkvdWkvbm90aWZpY2F0aW9ucy1icm93c2VyL25vdGlmaWNhdGlvbnMtYnJvd3Nlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFFVCxTQUFTLEVBQ1QsTUFBTSxFQUNOLE1BQU0sRUFDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQWtCLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZFLE9BQU8sRUFBZ0Isa0JBQWtCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMvRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxXQUFXLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM1RyxPQUFPLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBb0MsTUFBTSx1Q0FBdUMsQ0FBQztBQUMxSCxPQUFPLEVBQ0wsYUFBYSxFQUNkLE1BQU0sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNuRSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNyRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDekQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGNBQWMs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LFdBQVcsQ0FBQyxZQUFZLEVBQUUsME9DbEM1Qyw4Z05BbUlNLDZnSEQ1Rk0sVUFBVSxnaUdBQUUsY0FBYyw4SEFBRSxlQUFlLHdVQUFFLGdCQUFnQiw2VEFBRSxjQUFjLG9MQUNyRixhQUFhLG1MQUFFLGtCQUFrQiwyYUFBRSxjQUFjLDBXQUFFLFdBQVcsaXhCQUFFLGFBQWEsczFCQUFFLGNBQWMsMlBBQUUsZ0JBQWdCLG9JQUFFLGdCQUFnQix5R0FBRSxPQUFPLG1GQUFFLGNBQWMsa2lCQUFFLGlCQUFpQiwrV0FBRSxnQkFBZ0IsMkhBQy9MLGtCQUFrQixnU0FBRSxVQUFVOzsyRkFFckIsb0NBQW9DO2tCQVZoRCxTQUFTOzJCQUNGLEVBQUUsTUFBTSxFQUFFLFdBQVcsQ0FBQyxZQUFZLEVBQUUsRUFBRSxjQUdoQyxJQUFJLG1CQUNDLHVCQUF1QixDQUFDLE1BQU0sV0FDdEMsQ0FBQyxVQUFVLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxjQUFjO3dCQUNyRixhQUFhLEVBQUUsa0JBQWtCLEVBQUUsY0FBYyxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCO3dCQUMvTCxrQkFBa0IsRUFBRSxVQUFVLEVBQUUsNEJBQTRCLENBQUM7OEJBS3ZDLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVztnQkFDVyxXQUFXO3NCQUEzQyxTQUFTO3VCQUFDLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDb21wb25lbnQsIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgVmlld0NoaWxkLFxyXG4gIGluamVjdCxcclxuICBzaWduYWxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0TWVudVRyaWdnZXIsIE1hdE1lbnVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9tZW51JztcclxuaW1wb3J0IHsgTWF0UGFnaW5hdG9yLCBNYXRQYWdpbmF0b3JNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3InO1xyXG5pbXBvcnQgeyBCcm9hZGNhc3RTZXJ2aWNlLCBTY3JlZW5TZXJ2aWNlLCBTZWxlY3RhYmxlTW9kZWwsIFN5c3RlbVV0aWxzIH0gZnJvbSAnQGFyc2VkaXppb25pL2Fycy11dGlscy9jb3JlJztcclxuaW1wb3J0IHsgU3VwcG9ydFNlcnZpY2UsIFN1cHBvcnRNZXNzYWdlcywgU3VwcG9ydE5vdGlmaWNhdGlvbnNTZWFyY2hQYXJhbXMgfSBmcm9tICdAYXJzZWRpemlvbmkvYXJzLXV0aWxzL3N1cHBvcnQuY29tbW9uJztcclxuaW1wb3J0IHtcclxuICBEaWFsb2dTZXJ2aWNlXHJcbn0gZnJvbSAnQGFyc2VkaXppb25pL2Fycy11dGlscy91aSc7XHJcbmltcG9ydCB7IFN1YmplY3QsIGRlYm91bmNlVGltZSwgZnJvbUV2ZW50LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgU3VwcG9ydE5vdGlmaWNhdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vbm90aWZpY2F0aW9uL25vdGlmaWNhdGlvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGb3JtYXRQaXBlIH0gZnJvbSAnQGFyc2VkaXppb25pL2Fycy11dGlscy9jb3JlJztcclxuaW1wb3J0IHsgTWF0Q2hlY2tib3hNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XHJcbmltcG9ydCB7IEV4dGVuZGVkTW9kdWxlIH0gZnJvbSAnQG5nYnJhY2tldC9uZ3gtbGF5b3V0L2V4dGVuZGVkJztcclxuaW1wb3J0IHsgTWF0RGl2aWRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpdmlkZXInO1xyXG5pbXBvcnQgeyBNYXRCYWRnZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2JhZGdlJztcclxuaW1wb3J0IHsgTmdDbGFzcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcclxuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XHJcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xyXG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xyXG5pbXBvcnQgeyBNYXREaWFsb2dUaXRsZSwgTWF0RGlhbG9nQ2xvc2UsIE1hdERpYWxvZ0NvbnRlbnQsIE1hdERpYWxvZ0FjdGlvbnMgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBGbGV4TW9kdWxlIH0gZnJvbSAnQG5nYnJhY2tldC9uZ3gtbGF5b3V0L2ZsZXgnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgaG9zdDogeyAnQmluZCc6IFN5c3RlbVV0aWxzLmdlbmVyYXRlVVVJRCgpIH0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL25vdGlmaWNhdGlvbnMtYnJvd3Nlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbm90aWZpY2F0aW9ucy1icm93c2VyLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBpbXBvcnRzOiBbRmxleE1vZHVsZSwgTWF0RGlhbG9nVGl0bGUsIE1hdEJ1dHRvbk1vZHVsZSwgTWF0VG9vbHRpcE1vZHVsZSwgTWF0RGlhbG9nQ2xvc2UsXHJcbiAgICBNYXRJY29uTW9kdWxlLCBNYXRGb3JtRmllbGRNb2R1bGUsIE1hdElucHV0TW9kdWxlLCBGb3Jtc01vZHVsZSwgTWF0TWVudU1vZHVsZSwgTWF0QmFkZ2VNb2R1bGUsIE1hdERpdmlkZXJNb2R1bGUsIE1hdERpYWxvZ0NvbnRlbnQsIE5nQ2xhc3MsIEV4dGVuZGVkTW9kdWxlLCBNYXRDaGVja2JveE1vZHVsZSwgTWF0RGlhbG9nQWN0aW9ucyxcclxuICAgIE1hdFBhZ2luYXRvck1vZHVsZSwgRm9ybWF0UGlwZSwgU3VwcG9ydE5vdGlmaWNhdGlvbkNvbXBvbmVudF1cclxufSlcclxuZXhwb3J0IGNsYXNzIFN1cHBvcnROb3RpZmljYXRpb25zQnJvd3NlckNvbXBvbmVudFxyXG4gIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQge1xyXG5cclxuICBAVmlld0NoaWxkKCdwYWdpbmF0b3InKSBwYWdpbmF0b3IhOiBNYXRQYWdpbmF0b3I7XHJcbiAgQFZpZXdDaGlsZCgnY29udGV4dE1lbnVUcmlnZ2VyJykgY29udGV4dE1lbnUhOiBNYXRNZW51VHJpZ2dlcjtcclxuXHJcblxyXG4gIHByb3RlY3RlZCBzY3JlZW5TZXJ2aWNlID0gaW5qZWN0KFNjcmVlblNlcnZpY2UpO1xyXG4gIHByaXZhdGUgc3VwcG9ydFNlcnZpY2UgPSBpbmplY3QoU3VwcG9ydFNlcnZpY2UpO1xyXG4gIHByaXZhdGUgYnJvYWRjYXN0U2VydmljZSA9IGluamVjdChCcm9hZGNhc3RTZXJ2aWNlKTtcclxuICBwcml2YXRlIGRpYWxvZ1NlcnZpY2UgPSBpbmplY3QoRGlhbG9nU2VydmljZSk7XHJcbiAgcHJpdmF0ZSB1bnN1YnNjcmliZTogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgcHJpdmF0ZSBoZWlnaHQ6IG51bWJlciA9IC0xO1xyXG5cclxuICBwcm90ZWN0ZWQgc2VsZWN0aW9uID0gbmV3IFNlbGVjdGFibGVNb2RlbDxhbnksIG51bWJlcj4odHJ1ZSwgJ2lkJyk7XHJcbiAgcHJvdGVjdGVkIHNlYXJjaFBhcmFtczogU3VwcG9ydE5vdGlmaWNhdGlvbnNTZWFyY2hQYXJhbXMgPSB7XHJcbiAgICBmaXJzdDogMCxcclxuICAgIGNvdW50OiAyNVxyXG4gIH07XHJcbiAgcHJvdGVjdGVkIHRvdGFsID0gc2lnbmFsPG51bWJlcj4oLTEpO1xyXG4gIHByb3RlY3RlZCBpdGVtcyA9IHNpZ25hbDxhbnk+KG51bGwpO1xyXG4gIHByb3RlY3RlZCBjb250ZXh0TWVudVBvc2l0aW9uID0geyB4OiAnMHB4JywgeTogJzBweCcgfTtcclxuXHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgLy8gUmVhY3QgdG8gd2luZG93IHNpemUgY2hhbmdlXHJcbiAgICBmcm9tRXZlbnQod2luZG93LCAncmVzaXplJylcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUpLCBkZWJvdW5jZVRpbWUoNTAwKSlcclxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgLy8gVXBkYXRlIHZpZXdcclxuICAgICAgICB0aGlzLnJlc2l6ZSgpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAvLyBSZWFjdCB0byBtZXNzYWdlIGJyb2FkY2FzdGluZ1xyXG4gICAgdGhpcy5icm9hZGNhc3RTZXJ2aWNlLmdldE1lc3NhZ2UoKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKG1lc3NhZ2U6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChtZXNzYWdlLmlkID09PSBTdXBwb3J0TWVzc2FnZXMuTk9USUZJQ0FUSU9OX1JFQUQpIHtcclxuICAgICAgICAgIGNvbnN0IGl0ZW0gPSBTeXN0ZW1VdGlscy5hcnJheUZpbmRCeUtleShcclxuICAgICAgICAgICAgdGhpcy5pdGVtcyxcclxuICAgICAgICAgICAgJ2lkJyxcclxuICAgICAgICAgICAgbWVzc2FnZS5kYXRhXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgaWYgKGl0ZW0pIHtcclxuICAgICAgICAgICAgaXRlbS5pc1JlYWQgPSB0cnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnVuc3Vic2NyaWJlLm5leHQoKTtcclxuICAgIHRoaXMudW5zdWJzY3JpYmUuY29tcGxldGUoKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMucmVzaXplKCk7XHJcbiAgICB0aGlzLmZpbmQoKTsgICAgXHJcbiAgfVxyXG5cclxuXHJcbiAgLyoqXHJcbiAgICogUmVzaXplIGRpYWxvZ1xyXG4gICAqL1xyXG4gIHByaXZhdGUgcmVzaXplKCkge1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGxldCBlbGVtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25vdGlmaWNhdGlvbnMtYnJvd3Nlci1zY3JvbGxhYmxlJyk7XHJcbiAgICAgIGlmIChlbGVtKSB7XHJcbiAgICAgICAgY29uc3QgaCA9IHRoaXMuZGlhbG9nU2VydmljZS5nZXRDdXJyZW50RGlhbG9nU2Nyb2xsYWJsZUhlaWdodChcclxuICAgICAgICAgIFsnbm90aWZpY2F0aW9ucy1icm93c2VyLWZpeGVkJ10sXHJcbiAgICAgICAgICB3aW5kb3cuaW5uZXJIZWlnaHRcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmIChoICE9IHRoaXMuaGVpZ2h0KSB7XHJcbiAgICAgICAgICBlbGVtLnNldEF0dHJpYnV0ZSgnc3R5bGUnLCAnaGVpZ2h0OicgKyBoICsgJ3B4ICFpbXBvcnRhbnQ7bWF4LWhlaWdodDonICsgaCArICdweCAhaW1wb3J0YW50Jyk7XHJcbiAgICAgICAgICB0aGlzLmhlaWdodCA9IGg7XHJcbiAgICAgICAgICB0aGlzLnJlc2l6ZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnJlc2l6ZSgpO1xyXG4gICAgICB9XHJcbiAgICB9LCAxMDApO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIG9uQ29udGV4dE1lbnUoZXZlbnQ6IE1vdXNlRXZlbnQsIGl0ZW06IGFueSkge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIHRoaXMuY29udGV4dE1lbnVQb3NpdGlvbi54ID0gZXZlbnQuY2xpZW50WCArICdweCc7XHJcbiAgICB0aGlzLmNvbnRleHRNZW51UG9zaXRpb24ueSA9IGV2ZW50LmNsaWVudFkgKyAncHgnO1xyXG4gICAgdGhpcy5jb250ZXh0TWVudS5tZW51RGF0YSA9IHsgaXRlbTogaXRlbSB9O1xyXG4gICAgdGhpcy5jb250ZXh0TWVudS5vcGVuTWVudSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXBkYXRlIHNjcm9sbFxyXG4gICAqL1xyXG4gIHByaXZhdGUgdXBkYXRlU2Nyb2xsKCkge1xyXG4gICAgLy8gU2Nyb2xsIHRvIHRvcFxyXG4gICAgbGV0IGVsZW0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbm90aWZpY2F0aW9ucy1icm93c2VyLXNjcm9sbGVyJyk7XHJcbiAgICBpZiAoZWxlbSkgZWxlbS5wYXJlbnRFbGVtZW50LnNjcm9sbFRvcCA9IDA7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVcGRhdGUgbWVudSBidXR0b25zIHZpc2liaWxpdHkgd2hlbiB0aGUgbWVudSBpcyBjbG9zZWRcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgdXBkYXRlTWVudUJ1dHRvbnNWaXNpYmlsaXR5KCkge1xyXG4gICAgdGhpcy5pdGVtcygpPy5mb3JFYWNoKChuOiBhbnkpID0+IHtcclxuICAgICAgbi5pc01lbnVPcGVuID0gZmFsc2U7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAgICogR2V0IGFsbCBzZWxlY3RlZCBpZHNcclxuICAgICAqIEByZXR1cm5zOiB0aGUgc2VsZWN0ZWQgaWRzIGFzIGFuIGFycmF5XHJcbiAgICAgKi9cclxuICBwcml2YXRlIGdldFNlbGV0ZWN0SWRzKCk6IG51bWJlcltdIHtcclxuICAgIGlmICh0aGlzLnNlbGVjdGlvbi5hbGwubGVuZ3RoID4gNTApIHtcclxuICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmVycm9yKCdMYSBzZWxlemlvbmUgbm9uIHB1w7IgY29udGVuZXJlIHBpw7kgZGkgNTAgZWxlbWVudGkuJyk7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgbGV0IGlkczogbnVtYmVyW10gPSBbXTtcclxuICAgIGlmICh0aGlzLnNlbGVjdGlvbi5hbGwubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGlvbi5hbGwuZm9yRWFjaCgobjogYW55KSA9PiB7XHJcbiAgICAgICAgaWRzLnB1c2gobi5pZCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGlkcztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4qIFJldHVybiBpdGVtIHN0YXRlIGNzcyBjbGFzc1xyXG4qIEBwYXJhbSBpdGVtIDogdGhlIGl0ZW0gdG8gZXZhbHVhdGVcclxuKi9cclxuICBwcm90ZWN0ZWQgZ2V0SXRlbVN0YXRlQ3NzQ2xhc3MoaXRlbTogYW55KSB7XHJcbiAgICBpZiAoIWl0ZW0uaXNSZWFkKSByZXR1cm4gJ3VucmVhZC1iZyc7XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybiB0aGUgaXRlbSBzdGF0ZSB0b29sdGlwIHRleHRcclxuICAgKiBAcGFyYW0gaXRlbSA6IHRoZSBpdGVtIHRvIGV2YWx1YXRlXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGdldEl0ZW1TdGF0ZVRvb2x0aXAoaXRlbTogYW55KTogc3RyaW5nIHtcclxuICAgIGlmICghaXRlbS5pc1JlYWQpIHJldHVybiAnTm9uIGxldHRvJztcclxuICAgIHJldHVybiAnJztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFBlcmZvcm0gYSBuZXcgc2VhcmNoXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGZpbmQoKSB7XHJcbiAgICB0aGlzLnNlYXJjaFBhcmFtcy5maXJzdCA9IDA7XHJcbiAgICBpZiAodGhpcy5wYWdpbmF0b3IpIHtcclxuICAgICAgdGhpcy5wYWdpbmF0b3IucGFnZUluZGV4ID0gMDtcclxuICAgIH1cclxuICAgIHRoaXMuZmV0Y2goKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlIGRhdGFcclxuICAgKi9cclxuICBwcml2YXRlIGZldGNoKCkge1xyXG4gICAgaWYgKCF0aGlzLnN1cHBvcnRTZXJ2aWNlLmxvZ2dlZEluKSByZXR1cm47XHJcbiAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuYnVzeSgnQ2FyaWNhbWVudG8gaW4gY29yc28uLi4nKTtcclxuICAgIHRoaXMuc3VwcG9ydFNlcnZpY2UucXVlcnlOb3RpZmljYXRpb25zKHRoaXMuc2VhcmNoUGFyYW1zKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocjogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoIXIuc3VjY2Vzcykge1xyXG4gICAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuZXJyb3Ioci5tZXNzYWdlKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuaXRlbXMuc2V0KHIudmFsdWU/Lml0ZW1zID8/IFtdKTtcclxuICAgICAgICAgICAgdGhpcy50b3RhbC5zZXQoci52YWx1ZT8udG90YWwgPz8gMCk7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlU2Nyb2xsKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBjb21wbGV0ZTogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmNsZWFyQnVzeSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTaG93IGEgbmV3IHBhZ2UgcmVzdWx0XHJcbiAgICogQHBhcmFtIGUgOiB0aGUgTWF0UGFnaW5hdG9yIFBhZ2VFdmVudCBkYXRhXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGZldGNoTW9yZShlOiBhbnkpIHtcclxuICAgIGxldCBmaXJzdCA9IGUucGFnZUluZGV4ICogdGhpcy5zZWFyY2hQYXJhbXMuY291bnQ7XHJcbiAgICB0aGlzLnNlYXJjaFBhcmFtcy5maXJzdCA9IGZpcnN0O1xyXG4gICAgdGhpcy5mZXRjaCgpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIE1hcmsgYSBub3RpZmljYXRpb24gYXMgcmVhZCBvciB1bnJlYWRcclxuICAgKiBAcGFyYW0gaXRlbSA6IHRoZSBpdGVtIHRvIHNldCBvciBudWxsIHRvIHVzZSBzZWxlY3Rpb25cclxuICAgKiBAcGFyYW0gdW5tYXJrIDogdHJ1ZSB0byBzZXQgYXMgdW5yZWFkIG9yIGZhbHNlIHRvIHNldCBhcyByZWFkXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIG1hcmsoaXRlbTogYW55ID0gbnVsbCwgdW5tYXJrOiBib29sZWFuID0gZmFsc2UpIHtcclxuICAgIGlmICghdGhpcy5zdXBwb3J0U2VydmljZS5sb2dnZWRJbikgcmV0dXJuO1xyXG4gICAgaWYgKCFpdGVtICYmICF0aGlzLnNlbGVjdGlvbi5hbGwubGVuZ3RoKSByZXR1cm47XHJcbiAgICBjb25zdCBpZHM6IG51bWJlcltdID0gaXRlbSA/IFtpdGVtLmlkXSA6IHRoaXMuZ2V0U2VsZXRlY3RJZHMoKTtcclxuICAgIHRoaXMuZGlhbG9nU2VydmljZS5idXN5KCdBZ2dpb3JuYW1lbnRvIGluIGNvcnNvLi4uJyk7XHJcbiAgICB0aGlzLnN1cHBvcnRTZXJ2aWNlLm1hcmtOb3RpZmljYXRpb25zKHtcclxuICAgICAgaWRzOiBpZHMsXHJcbiAgICAgIHVubWFyazogdW5tYXJrXHJcbiAgICB9KVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocjogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoIXIuc3VjY2Vzcykge1xyXG4gICAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuZXJyb3Ioci5tZXNzYWdlKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlkcy5mb3JFYWNoKChpZDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc3QgaSA9IFN5c3RlbVV0aWxzLmFycmF5RmluZEluZGV4QnlLZXkoXHJcbiAgICAgICAgICAgICAgICB0aGlzLml0ZW1zLFxyXG4gICAgICAgICAgICAgICAgJ2lkJyxcclxuICAgICAgICAgICAgICAgIGlkXHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICBpZiAoaSAhPT0gLTEpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaXRlbXMoKVtpXS5pc1JlYWQgPSAhdW5tYXJrO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uLmNsZWFyKCk7XHJcbiAgICAgICAgICAgIHRoaXMuc3VwcG9ydFNlcnZpY2UuY291bnRVbnJlYWROb3RpZmljYXRpb25zKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBjb21wbGV0ZTogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmNsZWFyQnVzeSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEaXNwbGF5IGEgbm90aWZpY2F0aW9uXHJcbiAgICogQHBhcmFtIGl0ZW0gOiB0aGUgaXRlbSB0byBkaXNwbGF5XHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIHNob3coaXRlbTogYW55KSB7XHJcbiAgICB0aGlzLmRpYWxvZ1NlcnZpY2Uub3BlbihTdXBwb3J0Tm90aWZpY2F0aW9uQ29tcG9uZW50LCB7XHJcbiAgICAgIGFyaWFMYWJlbDogJ3Zpc3VhbGl6emEgbm90aWZpY2EnLFxyXG4gICAgICBhdXRvRm9jdXM6IGZhbHNlLFxyXG4gICAgICByZXN0b3JlRm9jdXM6IGZhbHNlLFxyXG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsXHJcbiAgICAgIGRhdGE6IHsgaWQ6IGl0ZW0uaWQgfSxcclxuICAgICAgbWluV2lkdGg6ICczNzVweCcsXHJcbiAgICAgIG1heFdpZHRoOiAnOTAwcHgnLFxyXG4gICAgICB3aWR0aDogJzk5JScsXHJcbiAgICAgIGhlaWdodDogJzk5JSdcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cIm5vdGlmaWNhdGlvbnMtYnJvd3Nlci1maXhlZFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJub3RpZmljYXRpb25zLWJyb3dzZXItaGVhZGVyXCI+XHJcbiAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRBbGlnbj1cInN0YXJ0IGNlbnRlclwiIGZ4TGF5b3V0R2FwPVwiMTBweFwiIGZ4RmlsbCA+XHJcbiAgICAgIDxkaXYgZnhGbGV4PVwiKlwiPlxyXG4gICAgICAgIDxoMiBtYXQtZGlhbG9nLXRpdGxlPk5vdml0w6AgZSBpbmZvcm1hemlvbmk8L2gyPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBmeExheW91dEFsaWduPVwiZW5kXCI+XHJcbiAgICAgICAgPGJ1dHRvbiBmeEZsZXhBbGlnbj1cInN0YXJ0XCIgdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiBtYXRUb29sdGlwPVwiQ2hpdWRpXCIgYXJpYS1sYWJlbD1cIkNoaXVkaVwiXHJcbiAgICAgICAgICBbbWF0LWRpYWxvZy1jbG9zZV09XCJ0cnVlXCIgY2xhc3M9XCJkaWFsb2ctY2xvc2VcIj5cclxuICAgICAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBzdHlsZT1cInBhZGRpbmctbGVmdDogMjRweDsgcGFkZGluZy1yaWdodDogMjRweDsgcGFkZGluZy1ib3R0b206IDEwcHg7XCI+XHJcbiAgICA8ZGl2IGZ4TGF5b3V0PVwicm93IHdyYXBcIiBmeEZpbGwgZnhMYXlvdXRBbGlnbj1cInNwYWNlLWJldHdlZW5cIj5cclxuICAgICAgPGRpdiBmeEZsZXg9XCIyMDBweFwiIGZ4RmxleEFsaWduPVwiZW5kXCI+XHJcbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkIHN0eWxlPVwid2lkdGg6MjAwcHhcIiBzdWJzY3JpcHRTaXppbmc9XCJkeW5hbWljXCIgYXBwZWFyYW5jZT1cIm91dGxpbmVcIj5cclxuICAgICAgICAgIDxtYXQtbGFiZWw+Q2VyY2E8L21hdC1sYWJlbD5cclxuICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCAjc2VhcmNoSW5wdXQ9XCJtYXRJbnB1dFwiIHR5cGU9XCJ0ZXh0XCIgWyhuZ01vZGVsKV09XCJzZWFyY2hQYXJhbXMuYW55XCIgbWF4bGVuZ3RoPVwiMjAwXCJcclxuICAgICAgICAgICAgKGtleXVwLkVudGVyKT1cImZpbmQoKVwiIGF1dG9mb2N1cyBwbGFjZWhvbGRlcj1cIkluc2VyaXNjaSB0ZXN0byArIElOVklPLi4uXCIgLz5cclxuICAgICAgICAgIEBpZiAoc2VhcmNoUGFyYW1zLmFueSkge1xyXG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgdGFiaW5kZXg9XCItMVwiIG1hdFN1ZmZpeCBtYXQtaWNvbi1idXR0b24gYXJpYS1sYWJlbD1cIlB1bGlzY2lcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwic2VhcmNoUGFyYW1zLmFueSA9ICcnXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIH1cclxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBmeEZsZXg9XCIqXCIgZnhMYXlvdXRBbGlnbj1cImVuZFwiPlxyXG4gICAgICAgIDxkaXYgZnhGbGV4QWxpZ249XCJjZW50ZXJcIj5cclxuICAgICAgICAgIEBpZiAoc2VsZWN0aW9uLmhhc1ZhbHVlKCkpIHtcclxuICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1idXR0b24gbWF0VG9vbHRpcD1cIkF6aW9uaSBkYSBlc2VndWlyZSBzdWdsaSBlbGVtZW50aSBzZWxlemlvbmF0aVwiXHJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ01lbnUgb3B6aW9uaSBwZXIgZWxlbWVudGkgc2VsZXppb25hdGknXCIgW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVTZWxlY3Rpb25zXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbiBhcmlhLWhpZGRlbj1cImZhbHNlXCIgW21hdEJhZGdlXT1cInNlbGVjdGlvbi5hbGwubGVuZ3RoXCI+Y2hlY2tsaXN0PC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgPG1hdC1tZW51ICNtZW51U2VsZWN0aW9ucz1cIm1hdE1lbnVcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJzZWxlY3Rpb24uY2xlYXIoKVwiIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0Rlc2VsZXppb25hIHR1dHRpJ1wiPlxyXG4gICAgICAgICAgICAgIDxtYXQtaWNvbj5jbGVhcjwvbWF0LWljb24+RGVzZWxlemlvbmEgdHV0dGlcclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxyXG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gW2F0dHIuYXJpYS1sYWJlbF09XCInU2VnbmEgY29tZSBkYSBsZWdnZXJlJ1wiIChjbGljayk9XCJtYXJrKG51bGwsIHRydWUpXCI+XHJcbiAgICAgICAgICAgICAgPG1hdC1pY29uPm91dGxpbmVkX2ZsYWc8L21hdC1pY29uPlNlZ25hIGNvbWUgZGEgbGVnZ2VyZVxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIFthdHRyLmFyaWEtbGFiZWxdPVwiJ1NlZ25hIGNvbWUgZ2nDoCBsZXR0bydcIiAoY2xpY2spPVwibWFyayhudWxsKVwiPlxyXG4gICAgICAgICAgICAgIDxtYXQtaWNvbj5mbGFnPC9tYXQtaWNvbj5TZWduYSBjb21lIGdpw6AgbGV0dG9cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L21hdC1tZW51PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuPGRpdiBtYXQtZGlhbG9nLWNvbnRlbnQgaWQ9XCJub3RpZmljYXRpb25zLWJyb3dzZXItc2Nyb2xsYWJsZVwiPlxyXG4gIDxkaXYgaWQ9XCJub3RpZmljYXRpb25zLWJyb3dzZXItc2Nyb2xsZXJcIj5cclxuICAgIEBpZiAodG90YWwoKSA9PT0gMCkge1xyXG4gICAgPGRpdj5cclxuICAgICAgPHAgY2xhc3M9XCJtZXNzYWdlXCI+PGk+TmVzc3VuIGVsZW1lbnRvIGRhIHZpc3VhbGl6emFyZS48L2k+PC9wPlxyXG4gICAgPC9kaXY+XHJcbiAgICB9IEBlbHNlIHtcclxuICAgIDxkaXY+XHJcbiAgICAgIEBmb3IgKGl0ZW0gb2YgaXRlbXMoKTsgdHJhY2sgaXRlbS5pZDsgbGV0IGkgPSAkaW5kZXgpIHtcclxuICAgICAgPGRpdiAobW91c2VlbnRlcik9XCJpdGVtLmlzT3ZlciA9IHRydWU7XCIgKG1vdXNlbGVhdmUpPVwiaXRlbS5pc092ZXIgPSBmYWxzZVwiXHJcbiAgICAgICAgKGNvbnRleHRtZW51KT1cIm9uQ29udGV4dE1lbnUoJGV2ZW50LCBpdGVtKVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJuZXdzXCIgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEdhcD1cIjZweFwiIGZ4RmlsbCBbbmdDbGFzc109XCJ7J25ld3Mtc2VsZWN0ZWQnOiBzZWxlY3Rpb24uaXNTZWxlY3RlZChpdGVtLmlkKSwgXHJcbiAgICAgICAgICAnbmV3cy1yZWFkJzogaXRlbS5pc1JlYWR9XCI+XHJcbiAgICAgICAgICA8ZGl2IGZ4RmxleD1cIjZweFwiIFtuZ0NsYXNzXT1cImdldEl0ZW1TdGF0ZUNzc0NsYXNzKGl0ZW0pXCIgW21hdFRvb2x0aXBdPVwiZ2V0SXRlbVN0YXRlVG9vbHRpcChpdGVtKVwiPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGZ4RmxleD1cIjQ4cHhcIiBmeEZsZXhBbGlnbj1cImNlbnRlclwiIGZ4TGF5b3V0QWxpZ249XCJjZW50ZXJcIj5cclxuICAgICAgICAgICAgQGlmIChzY3JlZW5TZXJ2aWNlLmlzVG91Y2hhYmxlIHx8IGl0ZW0uaXNPdmVyIHx8IHNlbGVjdGlvbi5pc1NlbGVjdGVkKGl0ZW0uaWQpKSB7XHJcbiAgICAgICAgICAgIDxtYXQtY2hlY2tib3ggKGNoYW5nZSk9XCIkZXZlbnQgPyBzZWxlY3Rpb24udG9nZ2xlKGl0ZW0sIGl0ZW0uaWQpIDogbnVsbFwiXHJcbiAgICAgICAgICAgICAgW2NoZWNrZWRdPVwic2VsZWN0aW9uLmlzU2VsZWN0ZWQoaXRlbS5pZClcIj5cclxuICAgICAgICAgICAgPC9tYXQtY2hlY2tib3g+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBmeEZsZXg9XCIqXCIgZnhGbGV4QWxpZ249XCJjZW50ZXJcIiAoY2xpY2spPVwic2hvdyhpdGVtKTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvLTEgdXBwZXJjYXNlXCI+XHJcbiAgICAgICAgICAgICAge3sgKGl0ZW0ucHVibGlzaGluZ0RhdGUgPz8gaXRlbS5jcmVhdGVkKSB8IGZvcm1hdDonRCc6J2RkL01NL3l5eXknfX08L2Rpdj5cclxuICAgICAgICAgICAgPGRpdj57e2l0ZW0udGl0bGV9fTwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5mby0yIHVwcGVyY2FzZVwiPlxyXG4gICAgICAgICAgICAgIHt7aXRlbS5wcm9kdWN0TmFtZXN9fVxyXG4gICAgICAgICAgICAgIEBpZiAoaXRlbS5wcm9kdWN0TW9kdWxlc05hbWVzKSB7XHJcbiAgICAgICAgICAgICAgPHNwYW4+IHwge3tpdGVtLnByb2R1Y3RNb2R1bGVzTmFtZXN9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGZ4RmxleD1cIjUwcHhcIiBmeEZsZXhBbGlnbj1cImNlbnRlclwiPlxyXG4gICAgICAgICAgICBAaWYgKGl0ZW0uaXNPdmVyIHx8IGl0ZW0uaXNNZW51T3BlbiB8fCBzZWxlY3Rpb24uaXNTZWxlY3RlZChpdGVtLmlkKSkge1xyXG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gbWF0VG9vbHRpcD1cIk1lbnVcIiBbYXR0ci5hcmlhLWxhYmVsXT1cIidNZW51IG9wemlvbmknXCJcclxuICAgICAgICAgICAgICBbbWF0TWVudVRyaWdnZXJGb3JdPVwiY29udGV4dE1lbnVcIiBbbWF0TWVudVRyaWdnZXJEYXRhXT1cIntpdGVtOiBpdGVtfVwiIChjbGljayk9XCJpdGVtLmlzTWVudU9wZW4gPSB0cnVlXCI+XHJcbiAgICAgICAgICAgICAgPG1hdC1pY29uPm1vcmVfdmVydDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIH1cclxuICAgICAgPGRpdiAjY29udGV4dE1lbnVUcmlnZ2VyPVwibWF0TWVudVRyaWdnZXJcIiBzdHlsZT1cInBvc2l0aW9uOiBmaXhlZFwiIFtzdHlsZS5sZWZ0XT1cImNvbnRleHRNZW51UG9zaXRpb24ueFwiXHJcbiAgICAgICAgW3N0eWxlLnRvcF09XCJjb250ZXh0TWVudVBvc2l0aW9uLnlcIiBbbWF0TWVudVRyaWdnZXJGb3JdPVwiY29udGV4dE1lbnVcIj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxtYXQtbWVudSAjY29udGV4dE1lbnU9XCJtYXRNZW51XCIgKGNsb3NlZCk9XCJ1cGRhdGVNZW51QnV0dG9uc1Zpc2liaWxpdHkoKVwiPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBtYXRNZW51Q29udGVudCBsZXQtaXRlbT1cIml0ZW1cIj5cclxuICAgICAgICAgIEBpZiAoaXRlbS5pc1JlYWQpIHtcclxuICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSBbYXR0ci5hcmlhLWxhYmVsXT1cIidTZWduYSBjb21lIGRhIGxlZ2dlcmUnXCIgKGNsaWNrKT1cIm1hcmsoaXRlbSwgdHJ1ZSlcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPmZsYWc8L21hdC1pY29uPlNlZ25hIGNvbWUgZGEgbGVnZ2VyZVxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBAaWYgKCFpdGVtLmlzUmVhZCkge1xyXG4gICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIFthdHRyLmFyaWEtbGFiZWxdPVwiJ1NlZ25hIGNvbWUgZGEgZ2nDoCBsZXR0bydcIiAoY2xpY2spPVwibWFyayhpdGVtKVwiPlxyXG4gICAgICAgICAgICA8bWF0LWljb24+b3V0bGluZWRfZmxhZzwvbWF0LWljb24+U2VnbmEgY29tZSBnacOgIGxldHRvXHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIH1cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICA8L21hdC1tZW51PlxyXG4gICAgPC9kaXY+XHJcbiAgICB9XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG48ZGl2IG1hdC1kaWFsb2ctYWN0aW9ucyBjbGFzcz1cIm5vdGlmaWNhdGlvbnMtYnJvd3Nlci1maXhlZFwiPlxyXG4gIDxkaXYgZnhMYXlvdXQ9XCJyb3cgd3JhcFwiIGZ4TGF5b3V0R2FwPVwiMTBweFwiIGZ4TGF5b3V0QWxpZ249XCJzcGFjZS1iZXR3ZWVuXCIgZnhGaWxsPlxyXG4gICAgPCEtLSBsZWdlbmQgLS0+XHJcbiAgICA8ZGl2IGZ4RmxleC5sdC1tZD1cIjEwMFwiIGNsYXNzPVwibGVnZW5kLWNvbnRhaW5lclwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibGVnZW5kIHVucmVhZC1iZ1wiPjwvZGl2PlxyXG4gICAgICBkYSBsZWdnZXJlXHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgZnhGbGV4Lmx0LW1kPVwiMTAwXCIgZnhMYXlvdXRBbGlnbj1cImVuZFwiPlxyXG4gICAgICA8bWF0LXBhZ2luYXRvciAjcGFnaW5hdG9yIFtoaWRlUGFnZVNpemVdPVwidHJ1ZVwiIFtsZW5ndGhdPVwidG90YWwoKVwiIFtwYWdlU2l6ZV09XCJzZWFyY2hQYXJhbXMuY291bnRcIlxyXG4gICAgICAgIFtzaG93Rmlyc3RMYXN0QnV0dG9uc109XCJ0cnVlXCIgKHBhZ2UpPVwiZmV0Y2hNb3JlKCRldmVudClcIj48L21hdC1wYWdpbmF0b3I+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+Il19
|
|
@@ -269,8 +269,10 @@ export class SelectTreeDialogComponent {
|
|
|
269
269
|
}
|
|
270
270
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: SelectTreeDialogComponent, decorators: [{
|
|
271
271
|
type: Component,
|
|
272
|
-
args: [{ host: { 'Bind': SystemUtils.generateUUID() }, providers: [TreeDataSource], standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [MatDialogTitle, FlexModule, MatFormFieldModule, MatInputModule, FormsModule, MatButtonModule,
|
|
272
|
+
args: [{ host: { 'Bind': SystemUtils.generateUUID() }, providers: [TreeDataSource], standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [MatDialogTitle, FlexModule, MatFormFieldModule, MatInputModule, FormsModule, MatButtonModule,
|
|
273
|
+
MatIconModule, MatTooltipModule, MatDialogContent, MatTreeModule, NgClass, ExtendedModule, MatDialogActions,
|
|
274
|
+
MatDialogClose, SafeHtmlPipe], template: "<h2 mat-dialog-title (keyup.ArrowDown)=\"nextFiltered()\">{{dialogData.title}}</h2>\r\n<div style=\"padding: 0 24px\">\r\n @if (dialogData.description) {\r\n <div [innerHtml]=\"dialogData.description | safeHtml\"></div>\r\n }\r\n <div style=\"padding-bottom: 10px;\">\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxFill>\r\n <div fxFlex=\"50\">\r\n <mat-form-field style=\"width:100%\" [appearance]=\"dialogData.appearance\" subscriptSizing=\"dynamic\" >\r\n <mat-label>Cerca...</mat-label>\r\n <input type=\"text\" cdkFocusInitial (keyup)=\"doFilter()\" matInput title=\"Digita il testo'\"\r\n [(ngModel)]=\"filterText\">\r\n @if (filterText) {\r\n <button type=\"button\" type=\"button\" tabindex=\"-1\" matSuffix mat-icon-button aria-label=\"Clear\"\r\n (click)=\"clearFilter()\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n </mat-form-field>\r\n </div>\r\n @if (filteredItems.length > 0) {\r\n <div fxFlex=\"50px\" fxLayoutAlign=\"end\">\r\n <div fxFlexAlign=\"center\" class=\"small\">{{filterIndex + 1}} / {{filteredItems.length}}</div>\r\n </div>\r\n }\r\n <div fxFlex=\"50\" fxLayoutAlign=\"end\" style=\"white-space:nowrap\">\r\n <div fxFlexAlign=\"center\">\r\n @if (filteredItems.length > 0) {\r\n <button fxFlexAlign=\"center\" type=\"button\" mat-icon-button color=\"primary\" (click)=\"nextFiltered()\">\r\n <mat-icon aria-label=\"Vai al prossimo\" matTooltip=\"Vai al prossimo\">arrow_downward</mat-icon>\r\n </button>\r\n }\r\n <button fxFlexAlign=\"center\" type=\"button\" mat-icon-button color=\"primary\" (click)=\"treeControl.collapseAll()\">\r\n <mat-icon aria-label=\"Comprimi tutto\" matTooltip=\"Comprimi tutto\">unfold_less</mat-icon>\r\n </button>\r\n <button fxFlexAlign=\"center\" type=\"button\" mat-icon-button color=\"primary\" (click)=\"treeControl.expandAll()\">\r\n <mat-icon aria-label=\"Espandi tutto\" matTooltip=\"Espandi tutto\">unfold_more</mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<div mat-dialog-content>\r\n <div fxLayout=\"column\" fxFill>\r\n <mat-tree [dataSource]=\"treeData\" [treeControl]=\"treeControl\">\r\n <mat-tree-node [id]=\"node.id\" *matTreeNodeDef=\"let node\" matTreeNodeToggle matTreeNodePadding\r\n [matTreeNodePaddingIndent]=\"20\" class=\"tree-node tree-node-simple\" (click)=\"select($event, node);\"\r\n [ngClass]=\"{'tree-node-activated': currentNode && currentNode.id === node.id}\" >\r\n <div fxLayout=\"row\" fxLayoutGap=\"5px\" fxFill class=\"small\">\r\n <button type=\"button\" mat-icon-button disabled class=\"small-icon-button\"></button>\r\n <div fxFlex=\"*\" fxFlexAlign=\"center\" class=\"uppercase \">\r\n {{node.name}}\r\n </div>\r\n <div fxFlex=\"30px\" fxFlexAlign=\"center\">\r\n @if (node.count > 0) {\r\n <span fxLayoutAlign=\"end\">({{node.count}})</span>\r\n }\r\n </div>\r\n </div>\r\n </mat-tree-node>\r\n\r\n <mat-tree-node [id]=\"node.id\" *matTreeNodeDef=\"let node;when: hasChild\" matTreeNodePadding\r\n [matTreeNodePaddingIndent]=\"20\" class=\"tree-node tree-node-simple\"\r\n [ngClass]=\"{'tree-node-activated': currentNode && currentNode.id === node.id }\" (click)=\"select($event, node);\">\r\n <div fxLayout=\"row\" fxLayoutGap=\"5px\" fxFill class=\"small\">\r\n <div fxFlex=\"30px\" fxFlexAlign=\"center\">\r\n <button type=\"button\" mat-icon-button matTreeNodeToggle [attr.aria-label]=\"'Apri/chiudi ' + node.name\"\r\n class=\"small-icon-button\">\r\n <mat-icon class=\"mat-icon-rtl-mirror\">\r\n {{treeControl.isExpanded(node) ? 'expand_more' : 'chevron_right'}}\r\n </mat-icon>\r\n </button>\r\n </div>\r\n <div fxFlex=\"*\" fxFlexAlign=\"center\" class=\"uppercase truncated\">\r\n <div>\r\n {{node.name}}\r\n </div>\r\n </div>\r\n <div fxFlex=\"30px\" fxFlexAlign=\"center\">\r\n @if (node.count > 0) {\r\n <div fxLayoutAlign=\"end\">({{node.count}})</div>\r\n }\r\n </div>\r\n </div>\r\n </mat-tree-node>\r\n </mat-tree>\r\n </div>\r\n</div>\r\n<div mat-dialog-actions>\r\n <div fxLayout=\"row\" fxLayoutAlign=\"end\" fxFill>\r\n <button mat-flat-button color=\"primary\" (click)=\"ok()\" \r\n [disabled]=\"!currentNode\">{{dialogData.okCaption}}</button>\r\n <button mat-button mat-dialog-close cdkFocusInitial \r\n color=\"primary\">Annulla</button>\r\n </div>\r\n</div>", styles: [":root{--ars-color-link: #03A9F4;--ars-color-link-low: #0288D1;--ars-color-accent: #7894ae;--ars-color-accent-low: #456179;--ars-color-primary: #00a293;--ars-color-primary-low: #006a60;--ars-color-primary-hi: #12c0ae;--ars-color-secondary: #4a635f;--ars-color-secondary-low: #27403c;--ars-color-error: #ff5449;--ars-color-error-low: #a80710;--ars-color-ok: #388E3C;--ars-color-ok-low: #29692c;--ars-color-warning: #FFC107;--ars-color-warning-low: #FFA000;--ars-item-hover-background-color: #eaecef;--ars-item-selected-background-color: #ced1d2;--ars-item-opaque-background-color: rgba(255, 255, 255, .75);--ars-filterbox-filtered-background-color: #f9fbe7}.dialog-info{font-size:x-small;font-weight:700;text-align:right;padding:10px}.dialog-info-green,.dialog-info-ok{color:var(--ars-color-ok, #388E3C)}.dialog-info-red,.dialog-info-error{color:var(--mat-form-field-error-text-color, #a80710)}.dialog-close{margin-right:10px;margin-top:10px}.dialog-menu{margin-left:10px;margin-top:10px}.dialog-title{padding:0 24px}.section-title{font-size:large;font-weight:600;padding-top:10px;padding-bottom:8px}.scroll-auto{overflow:auto}.scroll-hidden{overflow:hidden}b{font-weight:700}.large{font-size:large!important}.small{font-size:small!important}.small-icon-button{width:1.5rem!important;height:1.5rem!important;padding:0!important;display:inline-flex!important;align-items:center;justify-content:center}.small-icon-button .mat-mdc-button-touch-target{width:1.5rem!important;height:1.5rem!important}.x-small{font-size:x-small!important}.uppercase{text-transform:uppercase!important}.lowercase{text-transform:lowercase!important}.truncated{min-width:0}.truncated span,.truncated div{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@media (prefers-color-scheme: dark){:root{--ars-color-link: #03A9F4;--ars-color-link-low: #0288D1;--ars-color-accent: #adcae6;--ars-color-accent-low: #5e7a93;--ars-color-primary: #53dbc9;--ars-color-primary-low: #008679;--ars-color-primary-hi: #74f8e5;--ars-color-secondary: #b1ccc6;--ars-color-secondary-low: #627c77;--ars-color-error: #ff5449;--ars-color-error-low: #a80710;--ars-color-ok: #4CAF50;--ars-color-ok-low: #3f8f41;--ars-color-warning: #FFC107;--ars-color-warning-low: #FFA000;--ars-item-hover-background-color: #262a29;--ars-item-selected-background-color: #3f4342;--ars-item-opaque-background-color: rgba(0, 0, 0, .65);--ars-filterbox-filtered-background-color: #c6c7b8}.dialog-info-green,.dialog-info-ok{color:var(--ars-color-ok, #4CAF50)}.dialog-info-red,.dialog-info-error{color:var(--mat-form-field-error-text-color, #ff5449)}b{font-weight:600}}.tree{overflow-x:hidden}.tree-node{min-height:36px!important;padding-right:12px;margin-right:0}.tree-node .small-icon-button{width:2rem!important;height:2rem!important;padding:0!important;display:inline-flex!important;align-items:center;justify-content:center}.tree-node .small-icon-button .mat-mdc-button-touch-target{width:2rem!important;height:2rem!important}.tree-node:hover{cursor:pointer;background-color:var(--mat-menu-item-hover-state-layer-color, transparent);border-radius:24px}.tree-node-simple,.tree-node-simple>div{min-height:36px!important}.tree-node-activated,.tree-node-activated>div{min-height:36px!important;font-weight:700!important}\n"] }]
|
|
273
275
|
}], propDecorators: { done: [{
|
|
274
276
|
type: Output
|
|
275
277
|
}] } });
|
|
276
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LXRyZWUtZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fycy11dGlscy91aS5hcHBsaWNhdGlvbi91aS9kaWFsb2dzL3NlbGVjdC10cmVlL3NlbGVjdC10cmVlLWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcnMtdXRpbHMvdWkuYXBwbGljYXRpb24vdWkvZGlhbG9ncy9zZWxlY3QtdHJlZS9zZWxlY3QtdHJlZS1kaWFsb2cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQUUsVUFBVSxFQUd4QixNQUFNLEVBQ04sTUFBTSxFQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxjQUFjLEVBQUUsZ0JBQWdCLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzdJLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLHFCQUFxQixFQUFFLGdC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QWMsRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxnQkFBZ0IsRUFBRSxjQUFjLEVBQUUsWUFBWSxDQUFDOzhCQUd4TyxJQUFJO3NCQUFiLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGbGF0VHJlZUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9jZGsvdHJlZSc7XHJcbmltcG9ydCB7IE5nQ2xhc3MgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQge1xyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENvbXBvbmVudCxcclxuICBFdmVudEVtaXR0ZXIsIEluamVjdGFibGUsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgaW5qZWN0XHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xyXG5pbXBvcnQgeyBNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZ0FjdGlvbnMsIE1hdERpYWxvZ0Nsb3NlLCBNYXREaWFsb2dDb250ZW50LCBNYXREaWFsb2dSZWYsIE1hdERpYWxvZ1RpdGxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XHJcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XHJcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcclxuaW1wb3J0IHsgTWF0VHJlZUZsYXREYXRhU291cmNlLCBNYXRUcmVlRmxhdHRlbmVyLCBNYXRUcmVlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdHJlZSc7XHJcbmltcG9ydCB7IFNhZmVIdG1sUGlwZSwgU3lzdGVtVXRpbHMgfSBmcm9tICdAYXJzZWRpemlvbmkvYXJzLXV0aWxzL2NvcmUnO1xyXG5pbXBvcnQgeyBFeHRlbmRlZE1vZHVsZSB9IGZyb20gJ0BuZ2JyYWNrZXQvbmd4LWxheW91dC9leHRlbmRlZCc7XHJcbmltcG9ydCB7IEZsZXhNb2R1bGUgfSBmcm9tICdAbmdicmFja2V0L25neC1sYXlvdXQvZmxleCc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgb2YgYXMgb2JzZXJ2YWJsZU9mIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgSXRlbU5vZGUsIFNlbGVjdERpYWxvZ1Jlc3VsdCwgU2VsZWN0VHJlZURpYWxvZ0RhdGEsIFNlbGVjdGFibGVOb2RlIH0gZnJvbSAnLi4vLi4vZGVmaW5pdGlvbnMnO1xyXG5cclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIFRyZWVEYXRhU291cmNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuICBkYXRhQ2hhbmdlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxJdGVtTm9kZVtdPihbXSk7XHJcblxyXG4gIGdldCBkYXRhKCk6IEl0ZW1Ob2RlW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0YUNoYW5nZS52YWx1ZTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5kYXRhQ2hhbmdlLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJbml0aWFsemllIHRoZSBkYXRhIHNvdXJjZVxyXG4gICAqIEBwYXJhbSBkYXRhIDogZGF0YVxyXG4gICAqL1xyXG4gIGluaXRpYWxpemUoZGF0YTogSXRlbU5vZGVbXSkge1xyXG4gICAgdGhpcy5kYXRhQ2hhbmdlLm5leHQoZGF0YSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGaW5kIGEgbm9kZSBieSBpZCByZWN1cnNpdmVseVxyXG4gICAqIEBwYXJhbSBub2RlOiB0aGUgc291cmNlIG5vZGVcclxuICAgKiBAcGFyYW0gaWQgOiB0aGUgaWQgdG8gc2VhcmNoIGZvclxyXG4gICAqL1xyXG4gIGZpbmROb2RlKG5vZGU6IEl0ZW1Ob2RlLCBpZDogc3RyaW5nKTogSXRlbU5vZGUge1xyXG4gICAgbGV0IGNoaWxkcmVuO1xyXG4gICAgaWYgKG5vZGUgJiYgbm9kZS5pZCA9PT0gaWQpIHJldHVybiBub2RlO1xyXG4gICAgaWYgKG5vZGUpIGNoaWxkcmVuID0gbm9kZS5jaGlsZHJlbjtcclxuICAgIGVsc2UgaWYgKHRoaXMuZGF0YSAmJiB0aGlzLmRhdGEubGVuZ3RoID4gMClcclxuICAgICAgY2hpbGRyZW4gPSB0aGlzLmRhdGFbMF0uY2hpbGRyZW47XHJcbiAgICBpZiAoY2hpbGRyZW4pIHtcclxuICAgICAgbGV0IF9uID0gbnVsbDtcclxuICAgICAgY2hpbGRyZW4uc29tZShuID0+IHtcclxuICAgICAgICBpZiAobi5pZCA9PT0gaWQpIHtcclxuICAgICAgICAgIF9uID0gbjtcclxuICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBfbiA9IHRoaXMuZmluZE5vZGUobiwgaWQpO1xyXG4gICAgICAgIGlmIChfbikgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuIF9uO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFJlbW92ZSBhIG5vZGVcclxuICAgKiBAcGFyYW0gaWQgOiB0aGUgbm9kZSBpZCB0byByZW1vdmVcclxuICAgKi9cclxuICByZW1vdmVOb2RlKGlkOiBzdHJpbmcpIHtcclxuICAgIGxldCBuID0gdGhpcy5maW5kTm9kZShudWxsLCBpZCk7XHJcbiAgICBpZiAoIW4pIHJldHVybjtcclxuICAgIGlmIChuLnBhcmVudCkge1xyXG4gICAgICBsZXQgaSA9IFN5c3RlbVV0aWxzLmFycmF5RmluZEluZGV4QnlLZXkobi5wYXJlbnQuY2hpbGRyZW4sICdpZCcsIGlkKTtcclxuICAgICAgaWYgKGkgIT0gLTEpIHtcclxuICAgICAgICBuLnBhcmVudC5jaGlsZHJlbi5zcGxpY2UoaSwgMSk7XHJcbiAgICAgICAgaWYgKG4ucGFyZW50LmNvdW50ID4gMCkgbi5wYXJlbnQuY291bnQtLTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbGV0IGkgPSBTeXN0ZW1VdGlscy5hcnJheUZpbmRJbmRleEJ5S2V5KHRoaXMuZGF0YSwgJ2lkJywgaWQpO1xyXG4gICAgICBpZiAoaSAhPSAtMSkge1xyXG4gICAgICAgIHRoaXMuZGF0YS5zcGxpY2UoaSwgMSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmRhdGFDaGFuZ2UubmV4dCh0aGlzLmRhdGEpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSW5zZXJ0IGEgbmV3IG5vZGVcclxuICAgKiBAcGFyYW0gbm9kZSA6IHRoZSBuZXcgbm9kZVxyXG4gICAqL1xyXG4gIGluc2VydE5vZGUobm9kZTogSXRlbU5vZGUpIHtcclxuICAgIGlmIChub2RlLnBhcmVudCkge1xyXG4gICAgICBub2RlLnBhcmVudC5jaGlsZHJlbi51bnNoaWZ0KG5vZGUpO1xyXG4gICAgICBub2RlLnBhcmVudC5jb3VudCsrO1xyXG4gICAgfSBlbHNlIHRoaXMuZGF0YS51bnNoaWZ0KG5vZGUpO1xyXG5cclxuICAgIHRoaXMuZGF0YUNoYW5nZS5uZXh0KHRoaXMuZGF0YSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZW5hbWUgYSBub2RlXHJcbiAgICogQHBhcmFtIGlkIDogdGhlIG5vZGUgaWRcclxuICAgKiBAcGFyYW0gbmFtZSA6IHRoZSBuZXcgbm9kZSBuYW1lXHJcbiAgICovXHJcbiAgcmVuYW1lTm9kZShpZDogc3RyaW5nLCBuYW1lOiBzdHJpbmcpOiBJdGVtTm9kZSB7XHJcbiAgICBsZXQgbiA9IHRoaXMuZmluZE5vZGUobnVsbCwgaWQpO1xyXG4gICAgaWYgKG4pIHtcclxuICAgICAgbi5uYW1lID0gbmFtZTtcclxuICAgICAgdGhpcy5kYXRhQ2hhbmdlLm5leHQodGhpcy5kYXRhKTtcclxuICAgIH1cclxuICAgIHJldHVybiBuO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXBkYXRlIGRhdGFcclxuICAgKi9cclxuICB1cGRhdGUoKSB7XHJcbiAgICB0aGlzLmRhdGFDaGFuZ2UubmV4dCh0aGlzLmRhdGEpO1xyXG4gIH1cclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgaG9zdDogeyAnQmluZCc6IFN5c3RlbVV0aWxzLmdlbmVyYXRlVVVJRCgpIH0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3NlbGVjdC10cmVlLWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vc2VsZWN0LXRyZWUtZGlhbG9nLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgcHJvdmlkZXJzOiBbVHJlZURhdGFTb3VyY2VdLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgaW1wb3J0czogW01hdERpYWxvZ1RpdGxlLCBGbGV4TW9kdWxlLCBNYXRGb3JtRmllbGRNb2R1bGUsIE1hdElucHV0TW9kdWxlLCBGb3Jtc01vZHVsZSwgTWF0QnV0dG9uTW9kdWxlLCBNYXRJY29uTW9kdWxlLCBNYXRUb29sdGlwTW9kdWxlLCBNYXREaWFsb2dDb250ZW50LCBNYXRUcmVlTW9kdWxlLCBOZ0NsYXNzLCBFeHRlbmRlZE1vZHVsZSwgTWF0RGlhbG9nQWN0aW9ucywgTWF0RGlhbG9nQ2xvc2UsIFNhZmVIdG1sUGlwZV1cclxufSlcclxuZXhwb3J0IGNsYXNzIFNlbGVjdFRyZWVEaWFsb2dDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgQE91dHB1dCgpIGRvbmUgPSBuZXcgRXZlbnRFbWl0dGVyPFNlbGVjdERpYWxvZ1Jlc3VsdD4oKTtcclxuXHJcbiAgcHJpdmF0ZSB1bnN1YnNjcmliZTogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgcHJpdmF0ZSBkaWFsb2dSZWYgPSBpbmplY3QoTWF0RGlhbG9nUmVmPFNlbGVjdFRyZWVEaWFsb2dDb21wb25lbnQ+KTtcclxuICBwcm90ZWN0ZWQgZGlhbG9nRGF0YTogU2VsZWN0VHJlZURpYWxvZ0RhdGEgPSBpbmplY3QoTUFUX0RJQUxPR19EQVRBKTtcclxuICBwcml2YXRlIHRyZWUgPSBpbmplY3QoVHJlZURhdGFTb3VyY2UpO1xyXG4gIHByaXZhdGUgdHJlZUZsYXR0ZW5lcjogTWF0VHJlZUZsYXR0ZW5lcjxJdGVtTm9kZSwgU2VsZWN0YWJsZU5vZGU+O1xyXG4gIHByb3RlY3RlZCB0cmVlQ29udHJvbDogRmxhdFRyZWVDb250cm9sPFNlbGVjdGFibGVOb2RlPjtcclxuICBwcm90ZWN0ZWQgdHJlZURhdGE6IE1hdFRyZWVGbGF0RGF0YVNvdXJjZTxJdGVtTm9kZSwgU2VsZWN0YWJsZU5vZGU+O1xyXG4gIHByb3RlY3RlZCBjdXJyZW50Tm9kZTogSXRlbU5vZGU7XHJcblxyXG4gIC8vIFVzZWQgZm9yIGFycmF5IGZpbHRlcmluZ1xyXG4gIHByb3RlY3RlZCBmaWx0ZXJUZXh0OiBzdHJpbmcgPSAnJztcclxuICBwcm90ZWN0ZWQgZmlsdGVyZWRJdGVtczogU2VsZWN0YWJsZU5vZGVbXSA9IFtdO1xyXG4gIHByb3RlY3RlZCBmaWx0ZXJJbmRleDogbnVtYmVyID0gLTE7XHJcblxyXG4gIC8qKlxyXG4gICAqIE1hbmFnZSBmbGF0IHRyZWUgdmlld1xyXG4gICAqL1xyXG4gIHByaXZhdGUgZ2V0Q2hpbGRyZW4gPSAobm9kZTogSXRlbU5vZGUpOiBPYnNlcnZhYmxlPEl0ZW1Ob2RlW10+ID0+XHJcbiAgICBvYnNlcnZhYmxlT2Yobm9kZS5jaGlsZHJlbik7XHJcbiAgcHJpdmF0ZSBnZXRMZXZlbCA9IChub2RlOiBTZWxlY3RhYmxlTm9kZSkgPT4gbm9kZS5sZXZlbDtcclxuICBwcml2YXRlIGlzRXhwYW5kYWJsZSA9IChub2RlOiBTZWxlY3RhYmxlTm9kZSkgPT4gbm9kZS5leHBhbmRhYmxlO1xyXG4gIHByb3RlY3RlZCBoYXNDaGlsZCA9IChfOiBudW1iZXIsIF9ub2RlOiBTZWxlY3RhYmxlTm9kZSkgPT4gX25vZGUuZXhwYW5kYWJsZTtcclxuICBwcm90ZWN0ZWQgdHJhbnNmb3JtZXIgPSAoaXRlbTogSXRlbU5vZGUsIGxldmVsOiBudW1iZXIpID0+IHtcclxuICAgIHJldHVybiBuZXcgU2VsZWN0YWJsZU5vZGUoaXRlbSwgbGV2ZWwpO1xyXG4gIH07XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5kaWFsb2dEYXRhID0gdGhpcy5kaWFsb2dEYXRhIHx8IHsgYXBwZWFyYW5jZTogJ291dGxpbmUnLCB0aXRsZTogJ1NlbGV6aW9uYScsIG9rQ2FwdGlvbjogJ09rJyB9O1xyXG4gICAgdGhpcy50cmVlRmxhdHRlbmVyID0gbmV3IE1hdFRyZWVGbGF0dGVuZXIoXHJcbiAgICAgIHRoaXMudHJhbnNmb3JtZXIsXHJcbiAgICAgIHRoaXMuZ2V0TGV2ZWwsXHJcbiAgICAgIHRoaXMuaXNFeHBhbmRhYmxlLFxyXG4gICAgICB0aGlzLmdldENoaWxkcmVuXHJcbiAgICApO1xyXG4gICAgdGhpcy50cmVlQ29udHJvbCA9IG5ldyBGbGF0VHJlZUNvbnRyb2w8U2VsZWN0YWJsZU5vZGU+KFxyXG4gICAgICB0aGlzLmdldExldmVsLFxyXG4gICAgICB0aGlzLmlzRXhwYW5kYWJsZVxyXG4gICAgKTtcclxuICAgIHRoaXMudHJlZURhdGEgPSBuZXcgTWF0VHJlZUZsYXREYXRhU291cmNlKFxyXG4gICAgICB0aGlzLnRyZWVDb250cm9sLFxyXG4gICAgICB0aGlzLnRyZWVGbGF0dGVuZXJcclxuICAgICk7XHJcbiAgICB0aGlzLnRyZWUuZGF0YUNoYW5nZVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSkpXHJcbiAgICAgIC5zdWJzY3JpYmUoZGF0YSA9PiAodGhpcy50cmVlRGF0YS5kYXRhID0gZGF0YSkpO1xyXG4gICAgaWYgKHRoaXMuZGlhbG9nRGF0YS5ub2Rlcykge1xyXG4gICAgICB0aGlzLnRyZWUuaW5pdGlhbGl6ZSh0aGlzLmRpYWxvZ0RhdGEubm9kZXMpO1xyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLmRpYWxvZ0RhdGEudGl0bGUpIHtcclxuICAgICAgdGhpcy5kaWFsb2dEYXRhLnRpdGxlID0gJ1NlbGV6aW9uYSc7XHJcbiAgICB9XHJcbiAgICBpZiAoIXRoaXMuZGlhbG9nRGF0YS5va0NhcHRpb24pIHtcclxuICAgICAgdGhpcy5kaWFsb2dEYXRhLm9rQ2FwdGlvbiA9ICdPSyc7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5kaWFsb2dEYXRhLmluaXRpYWxGaWx0ZXIpIHtcclxuICAgICAgdGhpcy5kb0ZpbHRlcih0aGlzLmRpYWxvZ0RhdGEuaW5pdGlhbEZpbHRlcik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMudW5zdWJzY3JpYmUubmV4dCgpO1xyXG4gICAgdGhpcy51bnN1YnNjcmliZS5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU3VibWl0IHNlbGVjdGlvblxyXG4gICAqL1xyXG4gIG9rKCkge1xyXG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmRvbmUuZW1pdCh7IHNlbGVjdGVkSXRlbXM6IFt0aGlzLmN1cnJlbnROb2RlXSB9KTtcclxuICAgIH0sIDUwMCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZWxlY3QgIGEgbm9kZVxyXG4gICAqIEBwYXJhbSBlIDogdGhlIGV2ZW50XHJcbiAgICogQHBhcmFtIG5vZGUgOiB0aGVcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgc2VsZWN0KGU6IGFueSwgbm9kZTogU2VsZWN0YWJsZU5vZGUpIHtcclxuICAgIGlmIChlKSBlLnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgaWYgKG5vZGUpIHtcclxuICAgICAgdGhpcy5jdXJyZW50Tm9kZSA9IG5vZGU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDbGVhciBmaWx0ZXJcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgY2xlYXJGaWx0ZXIoKSB7XHJcbiAgICB0aGlzLmZpbHRlclRleHQgPSAnJztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFwcGx5IGZpbHRlclxyXG4gICAqIEBwYXJhbSB0ZXh0IDogdGhlIHRleHQgdG8gZmlsdGVyXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGRvRmlsdGVyKHRleHQ6IHN0cmluZyA9IG51bGwpIHtcclxuICAgIGlmICh0ZXh0KSB0aGlzLmZpbHRlclRleHQgPSB0ZXh0O1xyXG4gICAgdGhpcy5maWx0ZXJlZEl0ZW1zID0gW107XHJcbiAgICB0aGlzLmZpbHRlckluZGV4ID0gLTE7XHJcbiAgICBpZiAodGhpcy5maWx0ZXJUZXh0KSB7XHJcbiAgICAgIHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzLmZvckVhY2gobiA9PiB7XHJcbiAgICAgICAgaWYgKG4ubmFtZS5pbmRleE9mKHRoaXMuZmlsdGVyVGV4dCkgIT0gLTEpIHtcclxuICAgICAgICAgIHRoaXMuZmlsdGVyZWRJdGVtcy5wdXNoKG4pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcblxyXG4gICAgICBpZiAodGhpcy5maWx0ZXJlZEl0ZW1zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICB0aGlzLm5leHRGaWx0ZXJlZCgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHb3RvIG5leHQgZmlsdGVyZWQgaXRlbVxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBuZXh0RmlsdGVyZWQoKSB7XHJcbiAgICBpZiAoIVN5c3RlbVV0aWxzLmlzQnJvd3NlcigpKSByZXR1cm47XHJcbiAgICBpZiAodGhpcy5maWx0ZXJlZEl0ZW1zLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xyXG4gICAgdGhpcy5maWx0ZXJJbmRleCsrO1xyXG4gICAgaWYgKHRoaXMuZmlsdGVySW5kZXggPT09IHRoaXMuZmlsdGVyZWRJdGVtcy5sZW5ndGgpIHRoaXMuZmlsdGVySW5kZXggPSAwO1xyXG4gICAgbGV0IG5vZGUgPSB0aGlzLmZpbHRlcmVkSXRlbXNbdGhpcy5maWx0ZXJJbmRleF07XHJcbiAgICB0aGlzLmN1cnJlbnROb2RlID0gbm9kZTtcclxuICAgIHRoaXMuZXhwYW5kKG5vZGUpO1xyXG4gICAgbGV0IGVsZW0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChub2RlLmlkKTtcclxuICAgIGlmIChlbGVtKSBlbGVtLnNjcm9sbEludG9WaWV3KCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBFeHBhbmQgYSBub2RlIGFuZCBhbGwgaXRzIHBhcmVudHNcclxuICAgKiBAcGFyYW0gbm9kZSA6IHRoZSBzZWxlY3RhYmxlIG5vZGUgdG8gZXhwYW5kXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGV4cGFuZChub2RlOiBTZWxlY3RhYmxlTm9kZSkge1xyXG4gICAgdGhpcy50cmVlQ29udHJvbC5leHBhbmQobm9kZSk7XHJcbiAgICBsZXQgX24gPSBub2RlLnBhcmVudDtcclxuICAgIHdoaWxlIChfbikge1xyXG4gICAgICB0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlcy5zb21lKG4gPT4ge1xyXG4gICAgICAgIGlmIChuLmlkID09PSBfbi5pZCkge1xyXG4gICAgICAgICAgdGhpcy50cmVlQ29udHJvbC5leHBhbmQobik7XHJcbiAgICAgICAgICBfbiA9IF9uLnBhcmVudDtcclxuICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxufVxyXG5cclxuIiwiPGgyIG1hdC1kaWFsb2ctdGl0bGUgKGtleXVwLkFycm93RG93bik9XCJuZXh0RmlsdGVyZWQoKVwiPnt7ZGlhbG9nRGF0YS50aXRsZX19PC9oMj5cclxuPGRpdiBzdHlsZT1cInBhZGRpbmc6IDAgMjRweFwiPlxyXG4gIEBpZiAoZGlhbG9nRGF0YS5kZXNjcmlwdGlvbikge1xyXG4gIDxkaXYgW2lubmVySHRtbF09XCJkaWFsb2dEYXRhLmRlc2NyaXB0aW9uIHwgc2FmZUh0bWxcIj48L2Rpdj5cclxuICB9XHJcbiAgPGRpdiBzdHlsZT1cInBhZGRpbmctYm90dG9tOiAxMHB4O1wiPlxyXG4gICAgPGRpdiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0R2FwPVwiMTBweFwiIGZ4RmlsbD5cclxuICAgICAgPGRpdiBmeEZsZXg9XCI1MFwiPlxyXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBzdHlsZT1cIndpZHRoOjEwMCVcIiBbYXBwZWFyYW5jZV09XCJkaWFsb2dEYXRhLmFwcGVhcmFuY2VcIiBzdWJzY3JpcHRTaXppbmc9XCJkeW5hbWljXCIgPlxyXG4gICAgICAgICAgPG1hdC1sYWJlbD5DZXJjYS4uLjwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2RrRm9jdXNJbml0aWFsIChrZXl1cCk9XCJkb0ZpbHRlcigpXCIgbWF0SW5wdXQgdGl0bGU9XCJEaWdpdGEgaWwgdGVzdG8nXCJcclxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWx0ZXJUZXh0XCI+XHJcbiAgICAgICAgICBAaWYgKGZpbHRlclRleHQpIHtcclxuICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIHR5cGU9XCJidXR0b25cIiB0YWJpbmRleD1cIi0xXCIgbWF0U3VmZml4IG1hdC1pY29uLWJ1dHRvbiBhcmlhLWxhYmVsPVwiQ2xlYXJcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiY2xlYXJGaWx0ZXIoKVwiPlxyXG4gICAgICAgICAgICA8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIEBpZiAoZmlsdGVyZWRJdGVtcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIDxkaXYgZnhGbGV4PVwiNTBweFwiIGZ4TGF5b3V0QWxpZ249XCJlbmRcIj5cclxuICAgICAgICA8ZGl2IGZ4RmxleEFsaWduPVwiY2VudGVyXCIgY2xhc3M9XCJzbWFsbFwiPnt7ZmlsdGVySW5kZXggKyAxfX0gLyB7e2ZpbHRlcmVkSXRlbXMubGVuZ3RofX08L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIH1cclxuICAgICAgPGRpdiBmeEZsZXg9XCI1MFwiIGZ4TGF5b3V0QWxpZ249XCJlbmRcIiBzdHlsZT1cIndoaXRlLXNwYWNlOm5vd3JhcFwiPlxyXG4gICAgICAgIDxkaXYgZnhGbGV4QWxpZ249XCJjZW50ZXJcIj5cclxuICAgICAgICAgIEBpZiAoZmlsdGVyZWRJdGVtcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICA8YnV0dG9uIGZ4RmxleEFsaWduPVwiY2VudGVyXCIgdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwibmV4dEZpbHRlcmVkKClcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uIGFyaWEtbGFiZWw9XCJWYWkgYWwgcHJvc3NpbW9cIiBtYXRUb29sdGlwPVwiVmFpIGFsIHByb3NzaW1vXCI+YXJyb3dfZG93bndhcmQ8L21hdC1pY29uPlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICA8YnV0dG9uIGZ4RmxleEFsaWduPVwiY2VudGVyXCIgdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwidHJlZUNvbnRyb2wuY29sbGFwc2VBbGwoKVwiPlxyXG4gICAgICAgICAgICA8bWF0LWljb24gYXJpYS1sYWJlbD1cIkNvbXByaW1pIHR1dHRvXCIgbWF0VG9vbHRpcD1cIkNvbXByaW1pIHR1dHRvXCI+dW5mb2xkX2xlc3M8L21hdC1pY29uPlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uIGZ4RmxleEFsaWduPVwiY2VudGVyXCIgdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwidHJlZUNvbnRyb2wuZXhwYW5kQWxsKClcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uIGFyaWEtbGFiZWw9XCJFc3BhbmRpIHR1dHRvXCIgbWF0VG9vbHRpcD1cIkVzcGFuZGkgdHV0dG9cIj51bmZvbGRfbW9yZTwvbWF0LWljb24+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbjxkaXYgbWF0LWRpYWxvZy1jb250ZW50PlxyXG4gIDxkaXYgZnhMYXlvdXQ9XCJjb2x1bW5cIiBmeEZpbGw+XHJcbiAgICA8bWF0LXRyZWUgW2RhdGFTb3VyY2VdPVwidHJlZURhdGFcIiBbdHJlZUNvbnRyb2xdPVwidHJlZUNvbnRyb2xcIj5cclxuICAgICAgPG1hdC10cmVlLW5vZGUgW2lkXT1cIm5vZGUuaWRcIiAqbWF0VHJlZU5vZGVEZWY9XCJsZXQgbm9kZVwiIG1hdFRyZWVOb2RlVG9nZ2xlIG1hdFRyZWVOb2RlUGFkZGluZ1xyXG4gICAgICAgIFttYXRUcmVlTm9kZVBhZGRpbmdJbmRlbnRdPVwiMjBcIiBjbGFzcz1cInRyZWUtbm9kZSB0cmVlLW5vZGUtc2ltcGxlXCIgKGNsaWNrKT1cInNlbGVjdCgkZXZlbnQsIG5vZGUpO1wiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwieyd0cmVlLW5vZGUtYWN0aXZhdGVkJzogY3VycmVudE5vZGUgJiYgY3VycmVudE5vZGUuaWQgPT09IG5vZGUuaWR9XCIgPlxyXG4gICAgICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEdhcD1cIjVweFwiIGZ4RmlsbCBjbGFzcz1cInNtYWxsXCI+XHJcbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gZGlzYWJsZWQgY2xhc3M9XCJzbWFsbC1pY29uLWJ1dHRvblwiPjwvYnV0dG9uPlxyXG4gICAgICAgICAgPGRpdiBmeEZsZXg9XCIqXCIgZnhGbGV4QWxpZ249XCJjZW50ZXJcIiBjbGFzcz1cInVwcGVyY2FzZSBcIj5cclxuICAgICAgICAgICAge3tub2RlLm5hbWV9fVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGZ4RmxleD1cIjMwcHhcIiBmeEZsZXhBbGlnbj1cImNlbnRlclwiPlxyXG4gICAgICAgICAgICBAaWYgKG5vZGUuY291bnQgPiAwKSB7XHJcbiAgICAgICAgICAgIDxzcGFuIGZ4TGF5b3V0QWxpZ249XCJlbmRcIj4oe3tub2RlLmNvdW50fX0pPC9zcGFuPlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9tYXQtdHJlZS1ub2RlPlxyXG5cclxuICAgICAgPG1hdC10cmVlLW5vZGUgW2lkXT1cIm5vZGUuaWRcIiAqbWF0VHJlZU5vZGVEZWY9XCJsZXQgbm9kZTt3aGVuOiBoYXNDaGlsZFwiIG1hdFRyZWVOb2RlUGFkZGluZ1xyXG4gICAgICAgIFttYXRUcmVlTm9kZVBhZGRpbmdJbmRlbnRdPVwiMjBcIiBjbGFzcz1cInRyZWUtbm9kZSB0cmVlLW5vZGUtc2ltcGxlXCJcclxuICAgICAgICBbbmdDbGFzc109XCJ7J3RyZWUtbm9kZS1hY3RpdmF0ZWQnOiBjdXJyZW50Tm9kZSAmJiBjdXJyZW50Tm9kZS5pZCA9PT0gbm9kZS5pZCB9XCIgKGNsaWNrKT1cInNlbGVjdCgkZXZlbnQsIG5vZGUpO1wiPlxyXG4gICAgICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEdhcD1cIjVweFwiIGZ4RmlsbCBjbGFzcz1cInNtYWxsXCI+XHJcbiAgICAgICAgICA8ZGl2IGZ4RmxleD1cIjMwcHhcIiBmeEZsZXhBbGlnbj1cImNlbnRlclwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gbWF0VHJlZU5vZGVUb2dnbGUgW2F0dHIuYXJpYS1sYWJlbF09XCInQXByaS9jaGl1ZGkgJyArIG5vZGUubmFtZVwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJzbWFsbC1pY29uLWJ1dHRvblwiPlxyXG4gICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIm1hdC1pY29uLXJ0bC1taXJyb3JcIj5cclxuICAgICAgICAgICAgICAgIHt7dHJlZUNvbnRyb2wuaXNFeHBhbmRlZChub2RlKSA/ICdleHBhbmRfbW9yZScgOiAnY2hldnJvbl9yaWdodCd9fVxyXG4gICAgICAgICAgICAgIDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGZ4RmxleD1cIipcIiBmeEZsZXhBbGlnbj1cImNlbnRlclwiIGNsYXNzPVwidXBwZXJjYXNlIHRydW5jYXRlZFwiPlxyXG4gICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgIHt7bm9kZS5uYW1lfX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgZnhGbGV4PVwiMzBweFwiIGZ4RmxleEFsaWduPVwiY2VudGVyXCI+XHJcbiAgICAgICAgICAgIEBpZiAobm9kZS5jb3VudCA+IDApIHtcclxuICAgICAgICAgICAgPGRpdiBmeExheW91dEFsaWduPVwiZW5kXCI+KHt7bm9kZS5jb3VudH19KTwvZGl2PlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9tYXQtdHJlZS1ub2RlPlxyXG4gICAgPC9tYXQtdHJlZT5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbjxkaXYgbWF0LWRpYWxvZy1hY3Rpb25zPlxyXG4gIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEFsaWduPVwiZW5kXCIgZnhGaWxsPlxyXG4gICAgPGJ1dHRvbiBtYXQtZmxhdC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cIm9rKClcIiBcclxuICAgICAgW2Rpc2FibGVkXT1cIiFjdXJyZW50Tm9kZVwiPnt7ZGlhbG9nRGF0YS5va0NhcHRpb259fTwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvbiBtYXQtYnV0dG9uIG1hdC1kaWFsb2ctY2xvc2UgY2RrRm9jdXNJbml0aWFsIFxyXG4gICAgICBjb2xvcj1cInByaW1hcnlcIj5Bbm51bGxhPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==
|
|
278
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LXRyZWUtZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fycy11dGlscy91aS5hcHBsaWNhdGlvbi91aS9kaWFsb2dzL3NlbGVjdC10cmVlL3NlbGVjdC10cmVlLWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcnMtdXRpbHMvdWkuYXBwbGljYXRpb24vdWkvZGlhbG9ncy9zZWxlY3QtdHJlZS9zZWxlY3QtdHJlZS1kaWFsb2cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQUUsVUFBVSxFQUd4QixNQUFNLEVBQ04sTUFBTSxFQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxjQUFjLEVBQUUsZ0JBQWdCLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzdJLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLHFCQUFxQixFQUFFLGdC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Y0FBYyxFQUFFLFdBQVcsRUFBRSxlQUFlO3dCQUNwRyxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsZ0JBQWdCO3dCQUMzRyxjQUFjLEVBQUUsWUFBWSxDQUFDOzhCQUdyQixJQUFJO3NCQUFiLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGbGF0VHJlZUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9jZGsvdHJlZSc7XHJcbmltcG9ydCB7IE5nQ2xhc3MgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQge1xyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENvbXBvbmVudCxcclxuICBFdmVudEVtaXR0ZXIsIEluamVjdGFibGUsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgaW5qZWN0XHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xyXG5pbXBvcnQgeyBNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZ0FjdGlvbnMsIE1hdERpYWxvZ0Nsb3NlLCBNYXREaWFsb2dDb250ZW50LCBNYXREaWFsb2dSZWYsIE1hdERpYWxvZ1RpdGxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XHJcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XHJcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcclxuaW1wb3J0IHsgTWF0VHJlZUZsYXREYXRhU291cmNlLCBNYXRUcmVlRmxhdHRlbmVyLCBNYXRUcmVlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdHJlZSc7XHJcbmltcG9ydCB7IFNhZmVIdG1sUGlwZSwgU3lzdGVtVXRpbHMgfSBmcm9tICdAYXJzZWRpemlvbmkvYXJzLXV0aWxzL2NvcmUnO1xyXG5pbXBvcnQgeyBFeHRlbmRlZE1vZHVsZSB9IGZyb20gJ0BuZ2JyYWNrZXQvbmd4LWxheW91dC9leHRlbmRlZCc7XHJcbmltcG9ydCB7IEZsZXhNb2R1bGUgfSBmcm9tICdAbmdicmFja2V0L25neC1sYXlvdXQvZmxleCc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgb2YgYXMgb2JzZXJ2YWJsZU9mIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgSXRlbU5vZGUsIFNlbGVjdERpYWxvZ1Jlc3VsdCwgU2VsZWN0VHJlZURpYWxvZ0RhdGEsIFNlbGVjdGFibGVOb2RlIH0gZnJvbSAnLi4vLi4vZGVmaW5pdGlvbnMnO1xyXG5cclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIFRyZWVEYXRhU291cmNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuICBkYXRhQ2hhbmdlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxJdGVtTm9kZVtdPihbXSk7XHJcblxyXG4gIGdldCBkYXRhKCk6IEl0ZW1Ob2RlW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0YUNoYW5nZS52YWx1ZTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5kYXRhQ2hhbmdlLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJbml0aWFsemllIHRoZSBkYXRhIHNvdXJjZVxyXG4gICAqIEBwYXJhbSBkYXRhIDogZGF0YVxyXG4gICAqL1xyXG4gIGluaXRpYWxpemUoZGF0YTogSXRlbU5vZGVbXSkge1xyXG4gICAgdGhpcy5kYXRhQ2hhbmdlLm5leHQoZGF0YSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGaW5kIGEgbm9kZSBieSBpZCByZWN1cnNpdmVseVxyXG4gICAqIEBwYXJhbSBub2RlOiB0aGUgc291cmNlIG5vZGVcclxuICAgKiBAcGFyYW0gaWQgOiB0aGUgaWQgdG8gc2VhcmNoIGZvclxyXG4gICAqL1xyXG4gIGZpbmROb2RlKG5vZGU6IEl0ZW1Ob2RlLCBpZDogc3RyaW5nKTogSXRlbU5vZGUge1xyXG4gICAgbGV0IGNoaWxkcmVuO1xyXG4gICAgaWYgKG5vZGUgJiYgbm9kZS5pZCA9PT0gaWQpIHJldHVybiBub2RlO1xyXG4gICAgaWYgKG5vZGUpIGNoaWxkcmVuID0gbm9kZS5jaGlsZHJlbjtcclxuICAgIGVsc2UgaWYgKHRoaXMuZGF0YSAmJiB0aGlzLmRhdGEubGVuZ3RoID4gMClcclxuICAgICAgY2hpbGRyZW4gPSB0aGlzLmRhdGFbMF0uY2hpbGRyZW47XHJcbiAgICBpZiAoY2hpbGRyZW4pIHtcclxuICAgICAgbGV0IF9uID0gbnVsbDtcclxuICAgICAgY2hpbGRyZW4uc29tZShuID0+IHtcclxuICAgICAgICBpZiAobi5pZCA9PT0gaWQpIHtcclxuICAgICAgICAgIF9uID0gbjtcclxuICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBfbiA9IHRoaXMuZmluZE5vZGUobiwgaWQpO1xyXG4gICAgICAgIGlmIChfbikgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuIF9uO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFJlbW92ZSBhIG5vZGVcclxuICAgKiBAcGFyYW0gaWQgOiB0aGUgbm9kZSBpZCB0byByZW1vdmVcclxuICAgKi9cclxuICByZW1vdmVOb2RlKGlkOiBzdHJpbmcpIHtcclxuICAgIGxldCBuID0gdGhpcy5maW5kTm9kZShudWxsLCBpZCk7XHJcbiAgICBpZiAoIW4pIHJldHVybjtcclxuICAgIGlmIChuLnBhcmVudCkge1xyXG4gICAgICBsZXQgaSA9IFN5c3RlbVV0aWxzLmFycmF5RmluZEluZGV4QnlLZXkobi5wYXJlbnQuY2hpbGRyZW4sICdpZCcsIGlkKTtcclxuICAgICAgaWYgKGkgIT0gLTEpIHtcclxuICAgICAgICBuLnBhcmVudC5jaGlsZHJlbi5zcGxpY2UoaSwgMSk7XHJcbiAgICAgICAgaWYgKG4ucGFyZW50LmNvdW50ID4gMCkgbi5wYXJlbnQuY291bnQtLTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbGV0IGkgPSBTeXN0ZW1VdGlscy5hcnJheUZpbmRJbmRleEJ5S2V5KHRoaXMuZGF0YSwgJ2lkJywgaWQpO1xyXG4gICAgICBpZiAoaSAhPSAtMSkge1xyXG4gICAgICAgIHRoaXMuZGF0YS5zcGxpY2UoaSwgMSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmRhdGFDaGFuZ2UubmV4dCh0aGlzLmRhdGEpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSW5zZXJ0IGEgbmV3IG5vZGVcclxuICAgKiBAcGFyYW0gbm9kZSA6IHRoZSBuZXcgbm9kZVxyXG4gICAqL1xyXG4gIGluc2VydE5vZGUobm9kZTogSXRlbU5vZGUpIHtcclxuICAgIGlmIChub2RlLnBhcmVudCkge1xyXG4gICAgICBub2RlLnBhcmVudC5jaGlsZHJlbi51bnNoaWZ0KG5vZGUpO1xyXG4gICAgICBub2RlLnBhcmVudC5jb3VudCsrO1xyXG4gICAgfSBlbHNlIHRoaXMuZGF0YS51bnNoaWZ0KG5vZGUpO1xyXG5cclxuICAgIHRoaXMuZGF0YUNoYW5nZS5uZXh0KHRoaXMuZGF0YSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZW5hbWUgYSBub2RlXHJcbiAgICogQHBhcmFtIGlkIDogdGhlIG5vZGUgaWRcclxuICAgKiBAcGFyYW0gbmFtZSA6IHRoZSBuZXcgbm9kZSBuYW1lXHJcbiAgICovXHJcbiAgcmVuYW1lTm9kZShpZDogc3RyaW5nLCBuYW1lOiBzdHJpbmcpOiBJdGVtTm9kZSB7XHJcbiAgICBsZXQgbiA9IHRoaXMuZmluZE5vZGUobnVsbCwgaWQpO1xyXG4gICAgaWYgKG4pIHtcclxuICAgICAgbi5uYW1lID0gbmFtZTtcclxuICAgICAgdGhpcy5kYXRhQ2hhbmdlLm5leHQodGhpcy5kYXRhKTtcclxuICAgIH1cclxuICAgIHJldHVybiBuO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXBkYXRlIGRhdGFcclxuICAgKi9cclxuICB1cGRhdGUoKSB7XHJcbiAgICB0aGlzLmRhdGFDaGFuZ2UubmV4dCh0aGlzLmRhdGEpO1xyXG4gIH1cclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgaG9zdDogeyAnQmluZCc6IFN5c3RlbVV0aWxzLmdlbmVyYXRlVVVJRCgpIH0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3NlbGVjdC10cmVlLWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vc2VsZWN0LXRyZWUtZGlhbG9nLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgcHJvdmlkZXJzOiBbVHJlZURhdGFTb3VyY2VdLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgaW1wb3J0czogW01hdERpYWxvZ1RpdGxlLCBGbGV4TW9kdWxlLCBNYXRGb3JtRmllbGRNb2R1bGUsIE1hdElucHV0TW9kdWxlLCBGb3Jtc01vZHVsZSwgTWF0QnV0dG9uTW9kdWxlLCBcclxuICAgIE1hdEljb25Nb2R1bGUsIE1hdFRvb2x0aXBNb2R1bGUsIE1hdERpYWxvZ0NvbnRlbnQsIE1hdFRyZWVNb2R1bGUsIE5nQ2xhc3MsIEV4dGVuZGVkTW9kdWxlLCBNYXREaWFsb2dBY3Rpb25zLCBcclxuICAgIE1hdERpYWxvZ0Nsb3NlLCBTYWZlSHRtbFBpcGVdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTZWxlY3RUcmVlRGlhbG9nQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIEBPdXRwdXQoKSBkb25lID0gbmV3IEV2ZW50RW1pdHRlcjxTZWxlY3REaWFsb2dSZXN1bHQ+KCk7XHJcblxyXG4gIHByaXZhdGUgdW5zdWJzY3JpYmU6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIHByaXZhdGUgZGlhbG9nUmVmID0gaW5qZWN0KE1hdERpYWxvZ1JlZjxTZWxlY3RUcmVlRGlhbG9nQ29tcG9uZW50Pik7XHJcbiAgcHJvdGVjdGVkIGRpYWxvZ0RhdGE6IFNlbGVjdFRyZWVEaWFsb2dEYXRhID0gaW5qZWN0KE1BVF9ESUFMT0dfREFUQSk7XHJcbiAgcHJpdmF0ZSB0cmVlID0gaW5qZWN0KFRyZWVEYXRhU291cmNlKTtcclxuICBwcml2YXRlIHRyZWVGbGF0dGVuZXI6IE1hdFRyZWVGbGF0dGVuZXI8SXRlbU5vZGUsIFNlbGVjdGFibGVOb2RlPjtcclxuICBwcm90ZWN0ZWQgdHJlZUNvbnRyb2w6IEZsYXRUcmVlQ29udHJvbDxTZWxlY3RhYmxlTm9kZT47XHJcbiAgcHJvdGVjdGVkIHRyZWVEYXRhOiBNYXRUcmVlRmxhdERhdGFTb3VyY2U8SXRlbU5vZGUsIFNlbGVjdGFibGVOb2RlPjtcclxuICBwcm90ZWN0ZWQgY3VycmVudE5vZGU6IEl0ZW1Ob2RlO1xyXG5cclxuICAvLyBVc2VkIGZvciBhcnJheSBmaWx0ZXJpbmdcclxuICBwcm90ZWN0ZWQgZmlsdGVyVGV4dDogc3RyaW5nID0gJyc7XHJcbiAgcHJvdGVjdGVkIGZpbHRlcmVkSXRlbXM6IFNlbGVjdGFibGVOb2RlW10gPSBbXTtcclxuICBwcm90ZWN0ZWQgZmlsdGVySW5kZXg6IG51bWJlciA9IC0xO1xyXG5cclxuICAvKipcclxuICAgKiBNYW5hZ2UgZmxhdCB0cmVlIHZpZXdcclxuICAgKi9cclxuICBwcml2YXRlIGdldENoaWxkcmVuID0gKG5vZGU6IEl0ZW1Ob2RlKTogT2JzZXJ2YWJsZTxJdGVtTm9kZVtdPiA9PlxyXG4gICAgb2JzZXJ2YWJsZU9mKG5vZGUuY2hpbGRyZW4pO1xyXG4gIHByaXZhdGUgZ2V0TGV2ZWwgPSAobm9kZTogU2VsZWN0YWJsZU5vZGUpID0+IG5vZGUubGV2ZWw7XHJcbiAgcHJpdmF0ZSBpc0V4cGFuZGFibGUgPSAobm9kZTogU2VsZWN0YWJsZU5vZGUpID0+IG5vZGUuZXhwYW5kYWJsZTtcclxuICBwcm90ZWN0ZWQgaGFzQ2hpbGQgPSAoXzogbnVtYmVyLCBfbm9kZTogU2VsZWN0YWJsZU5vZGUpID0+IF9ub2RlLmV4cGFuZGFibGU7XHJcbiAgcHJvdGVjdGVkIHRyYW5zZm9ybWVyID0gKGl0ZW06IEl0ZW1Ob2RlLCBsZXZlbDogbnVtYmVyKSA9PiB7XHJcbiAgICByZXR1cm4gbmV3IFNlbGVjdGFibGVOb2RlKGl0ZW0sIGxldmVsKTtcclxuICB9O1xyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuZGlhbG9nRGF0YSA9IHRoaXMuZGlhbG9nRGF0YSB8fCB7IGFwcGVhcmFuY2U6ICdvdXRsaW5lJywgdGl0bGU6ICdTZWxlemlvbmEnLCBva0NhcHRpb246ICdPaycgfTtcclxuICAgIHRoaXMudHJlZUZsYXR0ZW5lciA9IG5ldyBNYXRUcmVlRmxhdHRlbmVyKFxyXG4gICAgICB0aGlzLnRyYW5zZm9ybWVyLFxyXG4gICAgICB0aGlzLmdldExldmVsLFxyXG4gICAgICB0aGlzLmlzRXhwYW5kYWJsZSxcclxuICAgICAgdGhpcy5nZXRDaGlsZHJlblxyXG4gICAgKTtcclxuICAgIHRoaXMudHJlZUNvbnRyb2wgPSBuZXcgRmxhdFRyZWVDb250cm9sPFNlbGVjdGFibGVOb2RlPihcclxuICAgICAgdGhpcy5nZXRMZXZlbCxcclxuICAgICAgdGhpcy5pc0V4cGFuZGFibGVcclxuICAgICk7XHJcbiAgICB0aGlzLnRyZWVEYXRhID0gbmV3IE1hdFRyZWVGbGF0RGF0YVNvdXJjZShcclxuICAgICAgdGhpcy50cmVlQ29udHJvbCxcclxuICAgICAgdGhpcy50cmVlRmxhdHRlbmVyXHJcbiAgICApO1xyXG4gICAgdGhpcy50cmVlLmRhdGFDaGFuZ2VcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUpKVxyXG4gICAgICAuc3Vic2NyaWJlKGRhdGEgPT4gKHRoaXMudHJlZURhdGEuZGF0YSA9IGRhdGEpKTtcclxuICAgIGlmICh0aGlzLmRpYWxvZ0RhdGEubm9kZXMpIHtcclxuICAgICAgdGhpcy50cmVlLmluaXRpYWxpemUodGhpcy5kaWFsb2dEYXRhLm5vZGVzKTtcclxuICAgIH1cclxuICAgIGlmICghdGhpcy5kaWFsb2dEYXRhLnRpdGxlKSB7XHJcbiAgICAgIHRoaXMuZGlhbG9nRGF0YS50aXRsZSA9ICdTZWxlemlvbmEnO1xyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLmRpYWxvZ0RhdGEub2tDYXB0aW9uKSB7XHJcbiAgICAgIHRoaXMuZGlhbG9nRGF0YS5va0NhcHRpb24gPSAnT0snO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuZGlhbG9nRGF0YS5pbml0aWFsRmlsdGVyKSB7XHJcbiAgICAgIHRoaXMuZG9GaWx0ZXIodGhpcy5kaWFsb2dEYXRhLmluaXRpYWxGaWx0ZXIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLnVuc3Vic2NyaWJlLm5leHQoKTtcclxuICAgIHRoaXMudW5zdWJzY3JpYmUuY29tcGxldGUoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFN1Ym1pdCBzZWxlY3Rpb25cclxuICAgKi9cclxuICBvaygpIHtcclxuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5kb25lLmVtaXQoeyBzZWxlY3RlZEl0ZW1zOiBbdGhpcy5jdXJyZW50Tm9kZV0gfSk7XHJcbiAgICB9LCA1MDApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2VsZWN0ICBhIG5vZGVcclxuICAgKiBAcGFyYW0gZSA6IHRoZSBldmVudFxyXG4gICAqIEBwYXJhbSBub2RlIDogdGhlXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIHNlbGVjdChlOiBhbnksIG5vZGU6IFNlbGVjdGFibGVOb2RlKSB7XHJcbiAgICBpZiAoZSkgZS5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIGlmIChub2RlKSB7XHJcbiAgICAgIHRoaXMuY3VycmVudE5vZGUgPSBub2RlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2xlYXIgZmlsdGVyXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGNsZWFyRmlsdGVyKCkge1xyXG4gICAgdGhpcy5maWx0ZXJUZXh0ID0gJyc7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBcHBseSBmaWx0ZXJcclxuICAgKiBAcGFyYW0gdGV4dCA6IHRoZSB0ZXh0IHRvIGZpbHRlclxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBkb0ZpbHRlcih0ZXh0OiBzdHJpbmcgPSBudWxsKSB7XHJcbiAgICBpZiAodGV4dCkgdGhpcy5maWx0ZXJUZXh0ID0gdGV4dDtcclxuICAgIHRoaXMuZmlsdGVyZWRJdGVtcyA9IFtdO1xyXG4gICAgdGhpcy5maWx0ZXJJbmRleCA9IC0xO1xyXG4gICAgaWYgKHRoaXMuZmlsdGVyVGV4dCkge1xyXG4gICAgICB0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlcy5mb3JFYWNoKG4gPT4ge1xyXG4gICAgICAgIGlmIChuLm5hbWUuaW5kZXhPZih0aGlzLmZpbHRlclRleHQpICE9IC0xKSB7XHJcbiAgICAgICAgICB0aGlzLmZpbHRlcmVkSXRlbXMucHVzaChuKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgaWYgKHRoaXMuZmlsdGVyZWRJdGVtcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy5uZXh0RmlsdGVyZWQoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR290byBuZXh0IGZpbHRlcmVkIGl0ZW1cclxuICAgKi9cclxuICBwcm90ZWN0ZWQgbmV4dEZpbHRlcmVkKCkge1xyXG4gICAgaWYgKCFTeXN0ZW1VdGlscy5pc0Jyb3dzZXIoKSkgcmV0dXJuO1xyXG4gICAgaWYgKHRoaXMuZmlsdGVyZWRJdGVtcy5sZW5ndGggPT09IDApIHJldHVybjtcclxuICAgIHRoaXMuZmlsdGVySW5kZXgrKztcclxuICAgIGlmICh0aGlzLmZpbHRlckluZGV4ID09PSB0aGlzLmZpbHRlcmVkSXRlbXMubGVuZ3RoKSB0aGlzLmZpbHRlckluZGV4ID0gMDtcclxuICAgIGxldCBub2RlID0gdGhpcy5maWx0ZXJlZEl0ZW1zW3RoaXMuZmlsdGVySW5kZXhdO1xyXG4gICAgdGhpcy5jdXJyZW50Tm9kZSA9IG5vZGU7XHJcbiAgICB0aGlzLmV4cGFuZChub2RlKTtcclxuICAgIGxldCBlbGVtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQobm9kZS5pZCk7XHJcbiAgICBpZiAoZWxlbSkgZWxlbS5zY3JvbGxJbnRvVmlldygpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRXhwYW5kIGEgbm9kZSBhbmQgYWxsIGl0cyBwYXJlbnRzXHJcbiAgICogQHBhcmFtIG5vZGUgOiB0aGUgc2VsZWN0YWJsZSBub2RlIHRvIGV4cGFuZFxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBleHBhbmQobm9kZTogU2VsZWN0YWJsZU5vZGUpIHtcclxuICAgIHRoaXMudHJlZUNvbnRyb2wuZXhwYW5kKG5vZGUpO1xyXG4gICAgbGV0IF9uID0gbm9kZS5wYXJlbnQ7XHJcbiAgICB3aGlsZSAoX24pIHtcclxuICAgICAgdGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXMuc29tZShuID0+IHtcclxuICAgICAgICBpZiAobi5pZCA9PT0gX24uaWQpIHtcclxuICAgICAgICAgIHRoaXMudHJlZUNvbnRyb2wuZXhwYW5kKG4pO1xyXG4gICAgICAgICAgX24gPSBfbi5wYXJlbnQ7XHJcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcbn1cclxuXHJcbiIsIjxoMiBtYXQtZGlhbG9nLXRpdGxlIChrZXl1cC5BcnJvd0Rvd24pPVwibmV4dEZpbHRlcmVkKClcIj57e2RpYWxvZ0RhdGEudGl0bGV9fTwvaDI+XHJcbjxkaXYgc3R5bGU9XCJwYWRkaW5nOiAwIDI0cHhcIj5cclxuICBAaWYgKGRpYWxvZ0RhdGEuZGVzY3JpcHRpb24pIHtcclxuICA8ZGl2IFtpbm5lckh0bWxdPVwiZGlhbG9nRGF0YS5kZXNjcmlwdGlvbiB8IHNhZmVIdG1sXCI+PC9kaXY+XHJcbiAgfVxyXG4gIDxkaXYgc3R5bGU9XCJwYWRkaW5nLWJvdHRvbTogMTBweDtcIj5cclxuICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEdhcD1cIjEwcHhcIiBmeEZpbGw+XHJcbiAgICAgIDxkaXYgZnhGbGV4PVwiNTBcIj5cclxuICAgICAgICA8bWF0LWZvcm0tZmllbGQgc3R5bGU9XCJ3aWR0aDoxMDAlXCIgW2FwcGVhcmFuY2VdPVwiZGlhbG9nRGF0YS5hcHBlYXJhbmNlXCIgc3Vic2NyaXB0U2l6aW5nPVwiZHluYW1pY1wiID5cclxuICAgICAgICAgIDxtYXQtbGFiZWw+Q2VyY2EuLi48L21hdC1sYWJlbD5cclxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNka0ZvY3VzSW5pdGlhbCAoa2V5dXApPVwiZG9GaWx0ZXIoKVwiIG1hdElucHV0IHRpdGxlPVwiRGlnaXRhIGlsIHRlc3RvJ1wiXHJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmlsdGVyVGV4dFwiPlxyXG4gICAgICAgICAgQGlmIChmaWx0ZXJUZXh0KSB7XHJcbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiB0eXBlPVwiYnV0dG9uXCIgdGFiaW5kZXg9XCItMVwiIG1hdFN1ZmZpeCBtYXQtaWNvbi1idXR0b24gYXJpYS1sYWJlbD1cIkNsZWFyXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImNsZWFyRmlsdGVyKClcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICBAaWYgKGZpbHRlcmVkSXRlbXMubGVuZ3RoID4gMCkge1xyXG4gICAgICA8ZGl2IGZ4RmxleD1cIjUwcHhcIiBmeExheW91dEFsaWduPVwiZW5kXCI+XHJcbiAgICAgICAgPGRpdiBmeEZsZXhBbGlnbj1cImNlbnRlclwiIGNsYXNzPVwic21hbGxcIj57e2ZpbHRlckluZGV4ICsgMX19IC8ge3tmaWx0ZXJlZEl0ZW1zLmxlbmd0aH19PC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICB9XHJcbiAgICAgIDxkaXYgZnhGbGV4PVwiNTBcIiBmeExheW91dEFsaWduPVwiZW5kXCIgc3R5bGU9XCJ3aGl0ZS1zcGFjZTpub3dyYXBcIj5cclxuICAgICAgICA8ZGl2IGZ4RmxleEFsaWduPVwiY2VudGVyXCI+XHJcbiAgICAgICAgICBAaWYgKGZpbHRlcmVkSXRlbXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgPGJ1dHRvbiBmeEZsZXhBbGlnbj1cImNlbnRlclwiIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cIm5leHRGaWx0ZXJlZCgpXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbiBhcmlhLWxhYmVsPVwiVmFpIGFsIHByb3NzaW1vXCIgbWF0VG9vbHRpcD1cIlZhaSBhbCBwcm9zc2ltb1wiPmFycm93X2Rvd253YXJkPC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgPGJ1dHRvbiBmeEZsZXhBbGlnbj1cImNlbnRlclwiIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cInRyZWVDb250cm9sLmNvbGxhcHNlQWxsKClcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uIGFyaWEtbGFiZWw9XCJDb21wcmltaSB0dXR0b1wiIG1hdFRvb2x0aXA9XCJDb21wcmltaSB0dXR0b1wiPnVuZm9sZF9sZXNzPC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvbiBmeEZsZXhBbGlnbj1cImNlbnRlclwiIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cInRyZWVDb250cm9sLmV4cGFuZEFsbCgpXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbiBhcmlhLWxhYmVsPVwiRXNwYW5kaSB0dXR0b1wiIG1hdFRvb2x0aXA9XCJFc3BhbmRpIHR1dHRvXCI+dW5mb2xkX21vcmU8L21hdC1pY29uPlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG48ZGl2IG1hdC1kaWFsb2ctY29udGVudD5cclxuICA8ZGl2IGZ4TGF5b3V0PVwiY29sdW1uXCIgZnhGaWxsPlxyXG4gICAgPG1hdC10cmVlIFtkYXRhU291cmNlXT1cInRyZWVEYXRhXCIgW3RyZWVDb250cm9sXT1cInRyZWVDb250cm9sXCI+XHJcbiAgICAgIDxtYXQtdHJlZS1ub2RlIFtpZF09XCJub2RlLmlkXCIgKm1hdFRyZWVOb2RlRGVmPVwibGV0IG5vZGVcIiBtYXRUcmVlTm9kZVRvZ2dsZSBtYXRUcmVlTm9kZVBhZGRpbmdcclxuICAgICAgICBbbWF0VHJlZU5vZGVQYWRkaW5nSW5kZW50XT1cIjIwXCIgY2xhc3M9XCJ0cmVlLW5vZGUgdHJlZS1ub2RlLXNpbXBsZVwiIChjbGljayk9XCJzZWxlY3QoJGV2ZW50LCBub2RlKTtcIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cInsndHJlZS1ub2RlLWFjdGl2YXRlZCc6IGN1cnJlbnROb2RlICYmIGN1cnJlbnROb2RlLmlkID09PSBub2RlLmlkfVwiID5cclxuICAgICAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRHYXA9XCI1cHhcIiBmeEZpbGwgY2xhc3M9XCJzbWFsbFwiPlxyXG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIGRpc2FibGVkIGNsYXNzPVwic21hbGwtaWNvbi1idXR0b25cIj48L2J1dHRvbj5cclxuICAgICAgICAgIDxkaXYgZnhGbGV4PVwiKlwiIGZ4RmxleEFsaWduPVwiY2VudGVyXCIgY2xhc3M9XCJ1cHBlcmNhc2UgXCI+XHJcbiAgICAgICAgICAgIHt7bm9kZS5uYW1lfX1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBmeEZsZXg9XCIzMHB4XCIgZnhGbGV4QWxpZ249XCJjZW50ZXJcIj5cclxuICAgICAgICAgICAgQGlmIChub2RlLmNvdW50ID4gMCkge1xyXG4gICAgICAgICAgICA8c3BhbiBmeExheW91dEFsaWduPVwiZW5kXCI+KHt7bm9kZS5jb3VudH19KTwvc3Bhbj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbWF0LXRyZWUtbm9kZT5cclxuXHJcbiAgICAgIDxtYXQtdHJlZS1ub2RlIFtpZF09XCJub2RlLmlkXCIgKm1hdFRyZWVOb2RlRGVmPVwibGV0IG5vZGU7d2hlbjogaGFzQ2hpbGRcIiBtYXRUcmVlTm9kZVBhZGRpbmdcclxuICAgICAgICBbbWF0VHJlZU5vZGVQYWRkaW5nSW5kZW50XT1cIjIwXCIgY2xhc3M9XCJ0cmVlLW5vZGUgdHJlZS1ub2RlLXNpbXBsZVwiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwieyd0cmVlLW5vZGUtYWN0aXZhdGVkJzogY3VycmVudE5vZGUgJiYgY3VycmVudE5vZGUuaWQgPT09IG5vZGUuaWQgfVwiIChjbGljayk9XCJzZWxlY3QoJGV2ZW50LCBub2RlKTtcIj5cclxuICAgICAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRHYXA9XCI1cHhcIiBmeEZpbGwgY2xhc3M9XCJzbWFsbFwiPlxyXG4gICAgICAgICAgPGRpdiBmeEZsZXg9XCIzMHB4XCIgZnhGbGV4QWxpZ249XCJjZW50ZXJcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIG1hdFRyZWVOb2RlVG9nZ2xlIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0FwcmkvY2hpdWRpICcgKyBub2RlLm5hbWVcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwic21hbGwtaWNvbi1idXR0b25cIj5cclxuICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJtYXQtaWNvbi1ydGwtbWlycm9yXCI+XHJcbiAgICAgICAgICAgICAgICB7e3RyZWVDb250cm9sLmlzRXhwYW5kZWQobm9kZSkgPyAnZXhwYW5kX21vcmUnIDogJ2NoZXZyb25fcmlnaHQnfX1cclxuICAgICAgICAgICAgICA8L21hdC1pY29uPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBmeEZsZXg9XCIqXCIgZnhGbGV4QWxpZ249XCJjZW50ZXJcIiBjbGFzcz1cInVwcGVyY2FzZSB0cnVuY2F0ZWRcIj5cclxuICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICB7e25vZGUubmFtZX19XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGZ4RmxleD1cIjMwcHhcIiBmeEZsZXhBbGlnbj1cImNlbnRlclwiPlxyXG4gICAgICAgICAgICBAaWYgKG5vZGUuY291bnQgPiAwKSB7XHJcbiAgICAgICAgICAgIDxkaXYgZnhMYXlvdXRBbGlnbj1cImVuZFwiPih7e25vZGUuY291bnR9fSk8L2Rpdj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbWF0LXRyZWUtbm9kZT5cclxuICAgIDwvbWF0LXRyZWU+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG48ZGl2IG1hdC1kaWFsb2ctYWN0aW9ucz5cclxuICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRBbGlnbj1cImVuZFwiIGZ4RmlsbD5cclxuICAgIDxidXR0b24gbWF0LWZsYXQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJvaygpXCIgXHJcbiAgICAgIFtkaXNhYmxlZF09XCIhY3VycmVudE5vZGVcIj57e2RpYWxvZ0RhdGEub2tDYXB0aW9ufX08L2J1dHRvbj5cclxuICAgIDxidXR0b24gbWF0LWJ1dHRvbiBtYXQtZGlhbG9nLWNsb3NlIGNka0ZvY3VzSW5pdGlhbCBcclxuICAgICAgY29sb3I9XCJwcmltYXJ5XCI+QW5udWxsYTwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj4iXX0=
|