@netgrif/components
Version:
Netgrif Application Engine frontend Angular components
42 lines • 22.1 kB
JavaScript
import { Component } from '@angular/core';
import { AbstractWorkflowViewComponent, WorkflowViewService } from '@netgrif/components-core';
import { ImportNetDialogComponent } from '../../dialog/import-net-dialog/import-net-dialog.component';
import * as i0 from "@angular/core";
import * as i1 from "@angular/material/dialog";
import * as i2 from "@netgrif/components-core";
import * as i3 from "@angular/common";
import * as i4 from "@ngbracket/ngx-layout";
import * as i5 from "@angular/material/button";
import * as i6 from "@angular/material/expansion";
import * as i7 from "@angular/material/icon";
import * as i8 from "@angular/material/input";
import * as i9 from "@angular/material/form-field";
import * as i10 from "@angular/material/progress-spinner";
import * as i11 from "@angular/cdk/scrolling";
import * as i12 from "@angular/forms";
import * as i13 from "../../header/header.component";
import * as i14 from "../../panel/workflow-panel/workflow-panel.component";
import * as i15 from "@ngx-translate/core";
export class WorkflowViewComponent extends AbstractWorkflowViewComponent {
_dialog;
_workflowViewService;
_log;
_processService;
constructor(_dialog, _workflowViewService, _log, _processService) {
super(_dialog, _workflowViewService, _log, _processService);
this._dialog = _dialog;
this._workflowViewService = _workflowViewService;
this._log = _log;
this._processService = _processService;
}
importNet() {
this.importSidemenuNet(ImportNetDialogComponent);
}
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: WorkflowViewComponent, deps: [{ token: i1.MatDialog }, { token: i2.WorkflowViewService }, { token: i2.LoggerService }, { token: i2.ProcessService }], target: i0.ɵɵFactoryTarget.Component });
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: WorkflowViewComponent, selector: "nc-workflow-view", providers: [WorkflowViewService], usesInheritance: true, ngImport: i0, template: "<div class=\"workflow-container full-height\" fxLayout=\"column\" fxLayoutAlign=\"start stretch\">\n <div>\n <button mat-fab color=\"primary\" class=\"upload-petri-net\" (click)=\"importNet()\">\n <mat-icon>cloud_upload</mat-icon>\n </button>\n </div>\n\n <div class=\"workflow-search-container\">\n <div fxLayout=\"row\" class=\"max-height\" fxLayoutAlign=\"space-between\">\n <div fxLayoutAlign=\"start center\" fxFlex>\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" class=\"full-size netgrif-input-primary-search-fix netgrif-input\">\n <mat-form-field appearance=\"outline\" class=\"disable-error-margin fulltext-search\">\n <mat-icon matPrefix class=\"prefix-icon\">search</mat-icon>\n <input type=\"text\" matInput [formControl]=\"fullTextFormControl\" [placeholder]=\"'search.fullText' | translate\">\n </mat-form-field>\n </div>\n </div>\n </div>\n </div>\n <div fxLayout=\"row\" fxLayoutAlign=\"center\" class=\"workflow-header\">\n <nc-header class=\"padding-mini\" #header fxFlex=\"100\" [type]=\"headerType\"></nc-header>\n </div>\n <div fxLayout=\"column\" fxLayoutAlign=\"start center\" fxFlex class=\"workflow-panels-container\">\n <ng-container *ngIf=\"workflows$ | async as workflows\">\n\n <div *ngIf=\"(loading$ | async) === false && workflows.length === 0\" fxLayout=\"column\"\n fxLayoutAlign=\"center center\">\n <mat-icon color=\"accent\" class=\"font-size-40 block-size-40 margin-bottom-default\">linear_scale\n </mat-icon>\n <span class=\"font-size-20\">{{ 'view-list.noProcessesSatisfyingThisFilter' | translate}}</span>\n </div>\n\n <mat-accordion [multi]=\"true\" fxFlex=\"100\" class=\"full-width panel-list-content\">\n\n <cdk-virtual-scroll-viewport itemSize=\"50\" (scrolledIndexChange)=\"loadNextPage()\"\n class=\"full-height full-width dashboard-workflow-view\">\n\n <nc-workflow-panel\n *cdkVirtualFor=\"let workflow of workflows;\n let first = first;\n let last = last;\n let i = index;\n templateCacheSize: 0;\n trackBy: trackBy\"\n [workflow]=\"workflow\" [first]=\"first\" [last]=\"last\"\n [selectedHeaders$]=\"selectedHeaders$\"\n [showDeleteMenu]=\"showDeleteMenu\">\n </nc-workflow-panel>\n\n <div *ngIf=\"loading$ | async\" fxLayout=\"column\" fxLayoutAlign=\"center center\"\n class=\"margin-top-default\">\n <mat-spinner color=\"primary\" diameter=\"50\"></mat-spinner>\n </div>\n\n </cdk-virtual-scroll-viewport>\n\n </mat-accordion>\n </ng-container>\n </div>\n</div>\n", styles: [".workflow-container{padding:16px 24px}.workflow-header{margin-top:16px}.upload-petri-net{position:fixed;bottom:24px;right:24px;z-index:999}.full-width{width:100%}.full-height{height:100%}.font-size-20{font-size:20px}.font-size-40{font-size:40px}.block-size-40{width:40px;height:40px}.padding-mini{padding-left:1px;padding-right:1px}.workflow-search-container{margin-top:16px;margin-bottom:2px;padding:0;max-height:50%}.search-width{width:100%}.search-fix{min-height:calc(100% + 2px);max-height:100%;overflow-y:auto}.max-height{max-height:100%}.prefix-icon{font-size:18px;color:#64748b}.fulltext-search{background:#fff;min-width:360px;border-radius:6px}.full-size{width:100%;height:100%}@media only screen and (max-width: 599px){.fulltext-search{min-width:unset}}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.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: i4.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: i4.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "component", type: i5.MatFabButton, selector: "button[mat-fab]", inputs: ["extended"], exportAs: ["matButton"] }, { kind: "directive", type: i6.MatAccordion, selector: "mat-accordion", inputs: ["hideToggle", "displayMode", "togglePosition"], exportAs: ["matAccordion"] }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i8.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: "component", type: i9.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i9.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "component", type: i10.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "directive", type: i11.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: i11.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "component", type: i11.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "directive", type: i12.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: i12.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i12.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i13.HeaderComponent, selector: "nc-header" }, { kind: "component", type: i14.WorkflowPanelComponent, selector: "nc-workflow-panel" }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i15.TranslatePipe, name: "translate" }] });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: WorkflowViewComponent, decorators: [{
type: Component,
args: [{ selector: 'nc-workflow-view', providers: [WorkflowViewService], template: "<div class=\"workflow-container full-height\" fxLayout=\"column\" fxLayoutAlign=\"start stretch\">\n <div>\n <button mat-fab color=\"primary\" class=\"upload-petri-net\" (click)=\"importNet()\">\n <mat-icon>cloud_upload</mat-icon>\n </button>\n </div>\n\n <div class=\"workflow-search-container\">\n <div fxLayout=\"row\" class=\"max-height\" fxLayoutAlign=\"space-between\">\n <div fxLayoutAlign=\"start center\" fxFlex>\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" class=\"full-size netgrif-input-primary-search-fix netgrif-input\">\n <mat-form-field appearance=\"outline\" class=\"disable-error-margin fulltext-search\">\n <mat-icon matPrefix class=\"prefix-icon\">search</mat-icon>\n <input type=\"text\" matInput [formControl]=\"fullTextFormControl\" [placeholder]=\"'search.fullText' | translate\">\n </mat-form-field>\n </div>\n </div>\n </div>\n </div>\n <div fxLayout=\"row\" fxLayoutAlign=\"center\" class=\"workflow-header\">\n <nc-header class=\"padding-mini\" #header fxFlex=\"100\" [type]=\"headerType\"></nc-header>\n </div>\n <div fxLayout=\"column\" fxLayoutAlign=\"start center\" fxFlex class=\"workflow-panels-container\">\n <ng-container *ngIf=\"workflows$ | async as workflows\">\n\n <div *ngIf=\"(loading$ | async) === false && workflows.length === 0\" fxLayout=\"column\"\n fxLayoutAlign=\"center center\">\n <mat-icon color=\"accent\" class=\"font-size-40 block-size-40 margin-bottom-default\">linear_scale\n </mat-icon>\n <span class=\"font-size-20\">{{ 'view-list.noProcessesSatisfyingThisFilter' | translate}}</span>\n </div>\n\n <mat-accordion [multi]=\"true\" fxFlex=\"100\" class=\"full-width panel-list-content\">\n\n <cdk-virtual-scroll-viewport itemSize=\"50\" (scrolledIndexChange)=\"loadNextPage()\"\n class=\"full-height full-width dashboard-workflow-view\">\n\n <nc-workflow-panel\n *cdkVirtualFor=\"let workflow of workflows;\n let first = first;\n let last = last;\n let i = index;\n templateCacheSize: 0;\n trackBy: trackBy\"\n [workflow]=\"workflow\" [first]=\"first\" [last]=\"last\"\n [selectedHeaders$]=\"selectedHeaders$\"\n [showDeleteMenu]=\"showDeleteMenu\">\n </nc-workflow-panel>\n\n <div *ngIf=\"loading$ | async\" fxLayout=\"column\" fxLayoutAlign=\"center center\"\n class=\"margin-top-default\">\n <mat-spinner color=\"primary\" diameter=\"50\"></mat-spinner>\n </div>\n\n </cdk-virtual-scroll-viewport>\n\n </mat-accordion>\n </ng-container>\n </div>\n</div>\n", styles: [".workflow-container{padding:16px 24px}.workflow-header{margin-top:16px}.upload-petri-net{position:fixed;bottom:24px;right:24px;z-index:999}.full-width{width:100%}.full-height{height:100%}.font-size-20{font-size:20px}.font-size-40{font-size:40px}.block-size-40{width:40px;height:40px}.padding-mini{padding-left:1px;padding-right:1px}.workflow-search-container{margin-top:16px;margin-bottom:2px;padding:0;max-height:50%}.search-width{width:100%}.search-fix{min-height:calc(100% + 2px);max-height:100%;overflow-y:auto}.max-height{max-height:100%}.prefix-icon{font-size:18px;color:#64748b}.fulltext-search{background:#fff;min-width:360px;border-radius:6px}.full-size{width:100%;height:100%}@media only screen and (max-width: 599px){.fulltext-search{min-width:unset}}\n"] }]
}], ctorParameters: () => [{ type: i1.MatDialog }, { type: i2.WorkflowViewService }, { type: i2.LoggerService }, { type: i2.ProcessService }] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZXRncmlmLWNvbXBvbmVudHMvc3JjL2xpYi92aWV3L3dvcmtmbG93LXZpZXcvd29ya2Zsb3ctdmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZXRncmlmLWNvbXBvbmVudHMvc3JjL2xpYi92aWV3L3dvcmtmbG93LXZpZXcvd29ya2Zsb3ctdmlldy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3hDLE9BQU8sRUFDSCw2QkFBNkIsRUFHN0IsbUJBQW1CLEVBQ3RCLE1BQU0sMEJBQTBCLENBQUM7QUFFbEMsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0sNERBQTRELENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBU3BHLE1BQU0sT0FBTyxxQkFBc0IsU0FBUSw2QkFBNkI7SUFDOUM7SUFDQTtJQUNBO0lBQ0E7SUFIdEIsWUFBc0IsT0FBa0IsRUFDbEIsb0JBQXlDLEVBQ3pDLElBQW1CLEVBQ25CLGVBQStCO1FBQ2pELEtBQUssQ0FBQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsSUFBSSxFQUFFLGVBQWUsQ0FBQyxDQUFDO1FBSjFDLFlBQU8sR0FBUCxPQUFPLENBQVc7UUFDbEIseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFxQjtRQUN6QyxTQUFJLEdBQUosSUFBSSxDQUFlO1FBQ25CLG9CQUFlLEdBQWYsZUFBZSxDQUFnQjtJQUVyRCxDQUFDO0lBRU0sU0FBUztRQUNaLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0lBQ3JELENBQUM7d0dBVlEscUJBQXFCOzRGQUFyQixxQkFBcUIsMkNBRm5CLENBQUMsbUJBQW1CLENBQUMsaURDZnBDLG9xR0E0REE7OzRGRDNDYSxxQkFBcUI7a0JBTmpDLFNBQVM7K0JBQ0ksa0JBQWtCLGFBR2pCLENBQUMsbUJBQW1CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIEFic3RyYWN0V29ya2Zsb3dWaWV3Q29tcG9uZW50LFxuICAgIExvZ2dlclNlcnZpY2UsXG4gICAgUHJvY2Vzc1NlcnZpY2UsXG4gICAgV29ya2Zsb3dWaWV3U2VydmljZVxufSBmcm9tICdAbmV0Z3JpZi9jb21wb25lbnRzLWNvcmUnO1xuaW1wb3J0IHtNYXREaWFsb2d9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQge0ltcG9ydE5ldERpYWxvZ0NvbXBvbmVudH0gZnJvbSAnLi4vLi4vZGlhbG9nL2ltcG9ydC1uZXQtZGlhbG9nL2ltcG9ydC1uZXQtZGlhbG9nLmNvbXBvbmVudCc7XG5cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduYy13b3JrZmxvdy12aWV3JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vd29ya2Zsb3ctdmlldy5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vd29ya2Zsb3ctdmlldy5jb21wb25lbnQuc2NzcyddLFxuICAgIHByb3ZpZGVyczogW1dvcmtmbG93Vmlld1NlcnZpY2VdXG59KVxuZXhwb3J0IGNsYXNzIFdvcmtmbG93Vmlld0NvbXBvbmVudCBleHRlbmRzIEFic3RyYWN0V29ya2Zsb3dWaWV3Q29tcG9uZW50IHtcbiAgICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgX2RpYWxvZzogTWF0RGlhbG9nLFxuICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfd29ya2Zsb3dWaWV3U2VydmljZTogV29ya2Zsb3dWaWV3U2VydmljZSxcbiAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX2xvZzogTG9nZ2VyU2VydmljZSxcbiAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX3Byb2Nlc3NTZXJ2aWNlOiBQcm9jZXNzU2VydmljZSkge1xuICAgICAgICBzdXBlcihfZGlhbG9nLCBfd29ya2Zsb3dWaWV3U2VydmljZSwgX2xvZywgX3Byb2Nlc3NTZXJ2aWNlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaW1wb3J0TmV0KCkge1xuICAgICAgICB0aGlzLmltcG9ydFNpZGVtZW51TmV0KEltcG9ydE5ldERpYWxvZ0NvbXBvbmVudCk7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIndvcmtmbG93LWNvbnRhaW5lciBmdWxsLWhlaWdodFwiIGZ4TGF5b3V0PVwiY29sdW1uXCIgZnhMYXlvdXRBbGlnbj1cInN0YXJ0IHN0cmV0Y2hcIj5cbiAgICA8ZGl2PlxuICAgICAgICA8YnV0dG9uIG1hdC1mYWIgY29sb3I9XCJwcmltYXJ5XCIgY2xhc3M9XCJ1cGxvYWQtcGV0cmktbmV0XCIgKGNsaWNrKT1cImltcG9ydE5ldCgpXCI+XG4gICAgICAgICAgICA8bWF0LWljb24+Y2xvdWRfdXBsb2FkPC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwid29ya2Zsb3ctc2VhcmNoLWNvbnRhaW5lclwiPlxuICAgICAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgY2xhc3M9XCJtYXgtaGVpZ2h0XCIgZnhMYXlvdXRBbGlnbj1cInNwYWNlLWJldHdlZW5cIj5cbiAgICAgICAgICAgIDxkaXYgZnhMYXlvdXRBbGlnbj1cInN0YXJ0IGNlbnRlclwiIGZ4RmxleD5cbiAgICAgICAgICAgICAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRBbGlnbj1cInN0YXJ0IGNlbnRlclwiIGNsYXNzPVwiZnVsbC1zaXplIG5ldGdyaWYtaW5wdXQtcHJpbWFyeS1zZWFyY2gtZml4IG5ldGdyaWYtaW5wdXRcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCIgY2xhc3M9XCJkaXNhYmxlLWVycm9yLW1hcmdpbiBmdWxsdGV4dC1zZWFyY2hcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBtYXRQcmVmaXggY2xhc3M9XCJwcmVmaXgtaWNvblwiPnNlYXJjaDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBtYXRJbnB1dCBbZm9ybUNvbnRyb2xdPVwiZnVsbFRleHRGb3JtQ29udHJvbFwiIFtwbGFjZWhvbGRlcl09XCInc2VhcmNoLmZ1bGxUZXh0JyB8IHRyYW5zbGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEFsaWduPVwiY2VudGVyXCIgY2xhc3M9XCJ3b3JrZmxvdy1oZWFkZXJcIj5cbiAgICAgICAgPG5jLWhlYWRlciBjbGFzcz1cInBhZGRpbmctbWluaVwiICNoZWFkZXIgZnhGbGV4PVwiMTAwXCIgW3R5cGVdPVwiaGVhZGVyVHlwZVwiPjwvbmMtaGVhZGVyPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgZnhMYXlvdXQ9XCJjb2x1bW5cIiBmeExheW91dEFsaWduPVwic3RhcnQgY2VudGVyXCIgZnhGbGV4IGNsYXNzPVwid29ya2Zsb3ctcGFuZWxzLWNvbnRhaW5lclwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwid29ya2Zsb3dzJCB8IGFzeW5jIGFzIHdvcmtmbG93c1wiPlxuXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiKGxvYWRpbmckIHwgYXN5bmMpID09PSBmYWxzZSAmJiB3b3JrZmxvd3MubGVuZ3RoID09PSAwXCIgZnhMYXlvdXQ9XCJjb2x1bW5cIlxuICAgICAgICAgICAgICAgICBmeExheW91dEFsaWduPVwiY2VudGVyIGNlbnRlclwiPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjb2xvcj1cImFjY2VudFwiIGNsYXNzPVwiZm9udC1zaXplLTQwIGJsb2NrLXNpemUtNDAgbWFyZ2luLWJvdHRvbS1kZWZhdWx0XCI+bGluZWFyX3NjYWxlXG4gICAgICAgICAgICAgICAgPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZvbnQtc2l6ZS0yMFwiPnt7ICd2aWV3LWxpc3Qubm9Qcm9jZXNzZXNTYXRpc2Z5aW5nVGhpc0ZpbHRlcicgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8bWF0LWFjY29yZGlvbiBbbXVsdGldPVwidHJ1ZVwiIGZ4RmxleD1cIjEwMFwiIGNsYXNzPVwiZnVsbC13aWR0aCBwYW5lbC1saXN0LWNvbnRlbnRcIj5cblxuICAgICAgICAgICAgICAgIDxjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQgaXRlbVNpemU9XCI1MFwiIChzY3JvbGxlZEluZGV4Q2hhbmdlKT1cImxvYWROZXh0UGFnZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZnVsbC1oZWlnaHQgZnVsbC13aWR0aCBkYXNoYm9hcmQtd29ya2Zsb3ctdmlld1wiPlxuXG4gICAgICAgICAgICAgICAgICAgIDxuYy13b3JrZmxvdy1wYW5lbFxuICAgICAgICAgICAgICAgICAgICAgICAgKmNka1ZpcnR1YWxGb3I9XCJsZXQgd29ya2Zsb3cgb2Ygd29ya2Zsb3dzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBmaXJzdCA9IGZpcnN0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBsYXN0ID0gbGFzdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaSA9IGluZGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlQ2FjaGVTaXplOiAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrQnk6IHRyYWNrQnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3dvcmtmbG93XT1cIndvcmtmbG93XCIgW2ZpcnN0XT1cImZpcnN0XCIgW2xhc3RdPVwibGFzdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2VsZWN0ZWRIZWFkZXJzJF09XCJzZWxlY3RlZEhlYWRlcnMkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93RGVsZXRlTWVudV09XCJzaG93RGVsZXRlTWVudVwiPlxuICAgICAgICAgICAgICAgICAgICA8L25jLXdvcmtmbG93LXBhbmVsPlxuXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJsb2FkaW5nJCB8IGFzeW5jXCIgZnhMYXlvdXQ9XCJjb2x1bW5cIiBmeExheW91dEFsaWduPVwiY2VudGVyIGNlbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtYXJnaW4tdG9wLWRlZmF1bHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtc3Bpbm5lciBjb2xvcj1cInByaW1hcnlcIiBkaWFtZXRlcj1cIjUwXCI+PC9tYXQtc3Bpbm5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8L2Nkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydD5cblxuICAgICAgICAgICAgPC9tYXQtYWNjb3JkaW9uPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuIl19