ax-common-ui-lib 1.0.1-beta.21 → 1.0.1-beta.21.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/data-view-lib/data-view-filters/data-view-filters.component.mjs +11 -4
- package/esm2020/lib/data-view-lib/data-view-filters/generate-qr/generate-qr.component.mjs +47 -48
- package/esm2020/lib/form-object/form-object-list/form-object-list.component.mjs +11 -4
- package/fesm2015/ax-common-ui-lib.mjs +65 -46
- package/fesm2015/ax-common-ui-lib.mjs.map +1 -1
- package/fesm2020/ax-common-ui-lib.mjs +61 -46
- package/fesm2020/ax-common-ui-lib.mjs.map +1 -1
- package/lib/data-view-lib/data-view-filters/generate-qr/generate-qr.component.d.ts +1 -4
- package/package.json +1 -1
|
@@ -278,7 +278,7 @@ function DataViewFiltersComponent_div_41_Template(rf, ctx) { if (rf & 1) {
|
|
|
278
278
|
function DataViewFiltersComponent_div_42_Template(rf, ctx) { if (rf & 1) {
|
|
279
279
|
const _r56 = i0.ɵɵgetCurrentView();
|
|
280
280
|
i0.ɵɵelementStart(0, "div", 69);
|
|
281
|
-
i0.ɵɵtext(1
|
|
281
|
+
i0.ɵɵtext(1);
|
|
282
282
|
i0.ɵɵelement(2, "br");
|
|
283
283
|
i0.ɵɵelement(3, "br");
|
|
284
284
|
i0.ɵɵelementStart(4, "button", 70);
|
|
@@ -286,6 +286,10 @@ function DataViewFiltersComponent_div_42_Template(rf, ctx) { if (rf & 1) {
|
|
|
286
286
|
i0.ɵɵtext(5, "Upgrade");
|
|
287
287
|
i0.ɵɵelementEnd();
|
|
288
288
|
i0.ɵɵelementEnd();
|
|
289
|
+
} if (rf & 2) {
|
|
290
|
+
const ctx_r17 = i0.ɵɵnextContext();
|
|
291
|
+
i0.ɵɵadvance(1);
|
|
292
|
+
i0.ɵɵtextInterpolate1(" To export data, please subscribe to a plan first.", ctx_r17.isAccountStatusActive, "");
|
|
289
293
|
} }
|
|
290
294
|
const _c2 = function (a0, a1) { return { "width-after-hide-button": a0, "no-filter": a1 }; };
|
|
291
295
|
const _c3 = function (a0) { return { "border-seperator": a0 }; };
|
|
@@ -375,7 +379,10 @@ export class DataViewFiltersComponent {
|
|
|
375
379
|
email: [this.userEmail, [Validators.required, Validators.email]]
|
|
376
380
|
});
|
|
377
381
|
this._userDataService.isAccountStatusActive$.subscribe((response) => {
|
|
382
|
+
debugger;
|
|
378
383
|
this.isAccountStatusActive = response;
|
|
384
|
+
alert(this.isAccountStatusActive);
|
|
385
|
+
console.log("Account Status:", this.isAccountStatusActive);
|
|
379
386
|
});
|
|
380
387
|
}
|
|
381
388
|
ngAfterViewInit() {
|
|
@@ -684,7 +691,7 @@ DataViewFiltersComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Da
|
|
|
684
691
|
i0.ɵɵelementEnd();
|
|
685
692
|
i0.ɵɵelementStart(39, "mat-menu", 33, 34);
|
|
686
693
|
i0.ɵɵtemplate(41, DataViewFiltersComponent_div_41_Template, 14, 4, "div", 35);
|
|
687
|
-
i0.ɵɵtemplate(42, DataViewFiltersComponent_div_42_Template, 6,
|
|
694
|
+
i0.ɵɵtemplate(42, DataViewFiltersComponent_div_42_Template, 6, 1, "div", 36);
|
|
688
695
|
i0.ɵɵelementEnd();
|
|
689
696
|
i0.ɵɵelementEnd();
|
|
690
697
|
i0.ɵɵelementEnd();
|
|
@@ -739,7 +746,7 @@ DataViewFiltersComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Da
|
|
|
739
746
|
} }, directives: [i8.NgClass, i8.NgIf, i9.MatMenuTrigger, i9.MatMenu, i9.MatMenuItem, i10.MatSlideToggle, i3.NgControlStatus, i3.NgModel, i11.MatIcon, i8.NgForOf, i12.FiltersComponent, i13.MatTooltip, i14.MatSelectionList, i14.MatListOption, i3.ɵNgNoValidate, i3.NgControlStatusGroup, i3.FormGroupDirective, i3.DefaultValueAccessor, i3.FormControlName], pipes: [i15.SearchPipe], styles: ["lib-data-view-filters{display:flex;align-items:center;width:100%;max-width:100% 1392}lib-data-view-filters .data-list-filter{display:flex;align-items:center;justify-content:space-between;flex-wrap:nowrap;row-gap:.8rem;width:100%}@media screen and (max-width: 1024px){lib-data-view-filters .data-list-filter{flex-wrap:wrap;margin-bottom:.8rem}}lib-data-view-filters .data-list-filter .data-view-filter-wrapper{display:flex;align-items:start;column-gap:10px;margin-left:auto;margin-right:auto}@media screen and (min-width: 1024px){lib-data-view-filters .data-list-filter .data-view-filter-wrapper{width:calc(100% - (var(--buttonsWarraperWidth) + 12px))!important;max-width:calc(100% - (var(--buttonsWarraperWidth) + 12px))!important;min-width:calc(100% - (var(--buttonsWarraperWidth) + 12px))!important}}lib-data-view-filters .data-list-filter .data-view-filter-wrapper .data-list-filter-container{display:flex;column-gap:.5rem!important;width:calc(100% - 6.6rem);min-width:calc(100% - 6.6rem);max-width:calc(100% - 6.6rem)}lib-data-view-filters .data-list-filter .data-view-filter-wrapper .data-list-filter-container .dash-reset,lib-data-view-filters .data-list-filter .data-view-filter-wrapper .data-list-filter-container .reset-section,lib-data-view-filters .data-list-filter .data-view-filter-wrapper .data-list-filter-container .reset-btn{border-left:1px solid #c9c9c9c9;white-space:nowrap;width:144px;display:flex;height:2rem;align-items:center;align-self:center;padding-left:.4rem}lib-data-view-filters .data-list-filter .data-view-filter-wrapper .data-list-filter-container .dash-reset .reset,lib-data-view-filters .data-list-filter .data-view-filter-wrapper .data-list-filter-container .reset-section .reset,lib-data-view-filters .data-list-filter .data-view-filter-wrapper .data-list-filter-container .reset-btn .reset{margin:0;font-size:11px}lib-data-view-filters .data-list-filter .data-view-filter-wrapper .data-list-filter-container .local-filter{width:auto;max-width:calc(100% - 15rem);height:2.5rem;align-items:center!important;margin-top:4px}@media screen and (max-width: 1024px){lib-data-view-filters .data-list-filter .data-view-filter-wrapper .data-list-filter-container .local-filter{width:calc(100vw - 10.125rem)!important;max-width:calc(100% - 10.125rem)}}lib-data-view-filters .data-list-filter .data-view-filter-wrapper .add-icon-btn{margin-top:9px}@media screen and (min-width: 1024px){lib-data-view-filters .data-list-filter .width-after-hide-button{width:calc(100% - 6.688rem)!important}}lib-data-view-filters .data-list-filter .data-view-header-button{display:flex;column-gap:12px}@media screen and (max-width: 1024px){lib-data-view-filters .data-list-filter .data-view-header-button{justify-content:flex-end;width:100%}}lib-data-view-filters .data-list-filter .outer-filterDiv{background-color:#fcfdff;border-color:#fcfdff}.filter-field-list{width:227px!important;min-width:280px!important}.list-field{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;display:inline-block}.list-field .mat-icon{vertical-align:middle}.global-border{border-bottom:1px solid #dcdcdc}.global-border .search-icon{margin-right:16px}.mat-menu-panel .mat-menu-content .mat-menu-item{font-size:13px}.mat-list-base .mat-list-item .mat-list-item-content-reverse,.mat-list-base .mat-list-option .mat-list-item-content-reverse{font-size:12px;display:flex!important}.mat-checkbox-ripple .mat-ripple-element,.mat-checkbox-checked.mat-accent .mat-checkbox-background{background-color:#6454c0!important}.send-excel-report-form,.upgrade-section{padding:8px 18px;height:auto;background-color:#fff!important}.send-excel-report-form form,.upgrade-section form{display:flex;flex-direction:column;row-gap:1rem}.send-excel-report-form .email-send-notification,.upgrade-section .email-send-notification{font-size:10px;color:green;text-align:center;width:200px;margin:0 auto}.send-excel-report-form .email-send-email-error,.upgrade-section .email-send-email-error{font-size:10px;color:red;text-align:left;width:200px}.send-excel-report-form .report-xslx-email,.upgrade-section .report-xslx-email{border:1px solid #8080802e;height:34px;width:100%}.send-excel-report-form .report-xslx-email:hover,.upgrade-section .report-xslx-email:hover{background:rgba(0,0,0,.04)!important;color:#172b4d!important}.send-excel-report-form .send-excel-report-form-btn,.send-excel-report-form .upgrade-btn-section,.upgrade-section .send-excel-report-form-btn,.upgrade-section .upgrade-btn-section{display:flex;justify-content:center;align-items:center;column-gap:1rem}.send-excel-report-form .send-excel-report-form-btn .btn,.send-excel-report-form .upgrade-btn-section .btn,.upgrade-section .send-excel-report-form-btn .btn,.upgrade-section .upgrade-btn-section .btn{height:34px;line-height:34px;flex:50;border-radius:5px;background-color:#7963ed;color:#fff;border:1px solid #7963ed;cursor:pointer;padding:0 12px}.send-excel-report-form .send-excel-report-form-btn .cancel-btn,.send-excel-report-form .upgrade-btn-section .cancel-btn,.upgrade-section .send-excel-report-form-btn .cancel-btn,.upgrade-section .upgrade-btn-section .cancel-btn{border:1px solid #80808059;display:flex;justify-content:center;align-items:center;color:#172b4d!important}.send-excel-report-form .send-excel-report-form-btn .cancel-btn:hover,.send-excel-report-form .upgrade-btn-section .cancel-btn:hover,.upgrade-section .send-excel-report-form-btn .cancel-btn:hover,.upgrade-section .upgrade-btn-section .cancel-btn:hover{background:rgba(0,0,0,.04)!important}.send-excel-report-form .send-excel-report-form-btn .send-btn,.send-excel-report-form .send-excel-report-form-btn .upgrade-btn,.send-excel-report-form .upgrade-btn-section .send-btn,.send-excel-report-form .upgrade-btn-section .upgrade-btn,.upgrade-section .send-excel-report-form-btn .send-btn,.upgrade-section .send-excel-report-form-btn .upgrade-btn,.upgrade-section .upgrade-btn-section .send-btn,.upgrade-section .upgrade-btn-section .upgrade-btn{border:1px solid #7963ed;background-color:#7963ed!important;color:#fff;display:flex;align-items:center;justify-content:center;column-gap:.5rem;padding:7px 10px;border-radius:20px}.send-excel-report-form .send-excel-report-form-btn .send-btn mat-icon,.send-excel-report-form .send-excel-report-form-btn .upgrade-btn mat-icon,.send-excel-report-form .upgrade-btn-section .send-btn mat-icon,.send-excel-report-form .upgrade-btn-section .upgrade-btn mat-icon,.upgrade-section .send-excel-report-form-btn .send-btn mat-icon,.upgrade-section .send-excel-report-form-btn .upgrade-btn mat-icon,.upgrade-section .upgrade-btn-section .send-btn mat-icon,.upgrade-section .upgrade-btn-section .upgrade-btn mat-icon{color:#fff;font-size:19px;height:1.188rem;min-height:1.188rem;width:1.188rem;min-width:1.188rem}.border-seperator{border-right:1px solid #c9c9c9c9;padding-right:12px}.green-square-btn{background-color:green;color:#fff;border:none;border-radius:5px;padding:0 10px;margin-right:10px;cursor:pointer}.dropdown-container{position:relative;display:inline-block}.dropdown-button{background-color:green;color:#fff;padding:10px 20px;border:none;border-radius:5px;cursor:pointer;outline:none}.arrow-icon{margin-left:10px}.dropdown-options{position:absolute;top:calc(100% + 5px);left:0;width:100%;background-color:#fff;border:1px solid green;border-radius:5px;padding:10px;box-shadow:0 2px 4px #0003;display:none}.dropdown-option{display:block;padding:5px;border:none;background-color:transparent;cursor:pointer}.dropdown-option:hover{background-color:#90ee90}.overlay{top:0;left:0;width:100%;height:100%;background-color:#00000080;display:flex;justify-content:center;align-items:center;z-index:9999;position:fixed}.overlay-content{z-index:9999;background-color:#fff;padding:20px;border-radius:5px;box-shadow:0 0 10px #0003;max-width:500px}.overlay-header{font-family:Times New Roman,Times,serif;font-size:18px;font-weight:700;margin-bottom:10px}.level-options{margin-bottom:10px}.remote-button{background-color:#4caf50;color:#fff;padding:10px 20px;border:none;border-radius:5px;cursor:pointer;margin-right:10px}.data-section{margin-bottom:10px;display:flex;align-items:center}.field-select{flex:1;padding:8px;border-radius:5px;border:1px solid #ccc}.text-box{flex:1;padding:8px;border-radius:5px;border:1px solid #ccc;margin-left:10px;margin-right:10px}.add-field-button{background-color:#008cba;color:#fff;border:none;border-radius:30%;cursor:pointer;width:30px;height:30px}.additional-fields{margin-bottom:10px}.logo-options{margin-bottom:10px;display:flex;align-items:center}.logo-options label{margin-left:15px;margin-right:30px}.logo-actions button{margin-right:10px}.browse-button{background-color:#008cba;color:#fff;padding:10px 20px;border:none;border-radius:5px;cursor:pointer}.generate-button{display:flex;align-items:center;margin-left:5px;margin-right:15px}.remote-button{display:inline-block;margin-right:10px;cursor:pointer}.remote-button input[type=checkbox]{display:none}.remote-button input[type=checkbox]+span{display:inline-block;width:20px;height:20px;border:1px solid #ccc;border-radius:50%;vertical-align:middle;position:relative}.remote-button input[type=checkbox]:checked+span:before{content:\"\";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:10px;height:10px;background-color:#4caf50;border-radius:50%}.dropdown-button{background-color:#29942c;color:#fff;border:none;border-radius:5px;padding:0 10px;margin-right:10px;position:relative}.dropdown-button:hover{background-color:#37883b}.button-text{margin-right:20px}.dropdown-arrow{position:absolute;top:50%;right:10px;transform:translateY(-50%);width:0;height:0;margin-left:10px;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid white}\n"], encapsulation: 2 });
|
|
740
747
|
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DataViewFiltersComponent, [{
|
|
741
748
|
type: Component,
|
|
742
|
-
args: [{ selector: 'lib-data-view-filters', encapsulation: ViewEncapsulation.None, template: "<div class=\"sticky data-list-filter\">\n <div class=\"data-view-filter-wrapper\" [ngClass]=\"{'width-after-hide-button':selectedViewType === ViewType.MapView || selectedViewType === ViewType.BoardView,'no-filter':filters.length <= 0}\">\n <div class=\"add-icon-btn\" [ngClass]=\"{'border-seperator': getFiltersCount()}\">\n <!-- Show hide condition for container. -->\n <button *ngIf=\"screenType === screenTypes.dataViewBuilder || dataViews.properties.showAddFilterButton\" class=\"light-blue-btn axo-font\"\n (click)=\"filtersMenuTrigger.openMenu()\" (contextmenu)=\"openPropertyMenu($event)\" >\n + Add Filter\n </button>\n\n <!-- Add Filter property Menu. this will get opened on right click -->\n <div #propertyMenuTrigger=\"matMenuTrigger\" [matMenuTriggerFor]=\"propertyMenu\"> </div>\n\n\n <mat-menu #propertyMenu=\"matMenu\">\n <div\n (click)=\"$event.stopPropagation();\"\n mat-menu-item\n class=\"filter-properties menu-btn\">\n <div class=\"filter-property\">\n <span class=\"style-title\">Show On Container</span>\n <mat-slide-toggle [(ngModel)]=\"dataViews.properties.showAddFilterButton\"></mat-slide-toggle>\n </div>\n </div>\n </mat-menu>\n\n <!-- Filter list menu -->\n <div #filtersMenuTrigger=\"matMenuTrigger\" [matMenuTriggerFor]=\"filtersMenu\"> </div>\n <mat-menu #filtersMenu=\"matMenu\" yPosition=\"below\" class=\"filter-field-list\" >\n <div (click)=\"$event.stopPropagation();\">\n <div class=\"group flex items-center justify-center mb-3\"\n [ngClass]=\"{'justify-between px-2.5': !showSearchBox}\">\n <span *ngIf=\"showField\" class=\"text-f font-medium\">Fields</span>\n\n <div class=\"flex items-center search-field\" [ngClass]=\"{'global-border px-2.5' : showSearchBox}\">\n <button (click)=\"'showFilterDiv()'\">\n <mat-icon [ngClass]=\"{'search-icon' : showSearchBox}\" class=\"mt-2 text-xs search-icons\"\n [svgIcon]=\"'heroicons_solid:search'\"></mat-icon>\n </button>\n\n <!-- <input id=\"global-field-search\" autocomplete=\"off\" placeholder=\"Search...\" [(ngModel)]=\"searchedTerm\" matInput class=\"search-bar chart-title\" [style.width]=\"!showSearchBox ? '0' : '100%'\" /> -->\n <mat-icon (click)=\"clear()\" *ngIf=\"showSearchBox\" class=\"clear_icon cursor-pointer text-base\">clear\n </mat-icon>\n </div>\n </div>\n <ng-container *ngIf=\"categories.length\">\n <div [ngClass]=\"{'field-container' : showSearchBox}\" *ngIf=\"(categories | search: searchedTerm)?.length\">\n <label class=\"px-2.5\" *ngIf=\"(categories | search: searchedTerm)?.length\">Category</label>\n <mat-selection-list #category>\n <mat-list-option checkboxPosition=\"after\"\n *ngFor=\"let category of categories| search: searchedTerm;let i=index \" [value]='category'\n [(selected)]=\"category.isSelected\" color=\"primary\">\n <span class=\"list-field\" [matTooltip]=\"category.name\"> {{category.name}}</span>\n </mat-list-option>\n </mat-selection-list>\n </div>\n </ng-container>\n <!-- Form filters. -->\n <div class=\"fields-div\" *ngFor=\"let _form of forms\">\n <label class=\"px-2.5\">{{_form?.name}}</label>\n <mat-selection-list (selectionChange)=\"addBasicFilter($event,_form)\">\n <ng-container *ngFor=\"let widget of _form?.widgets| search: searchedTerm\" >\n <ng-container *ngIf=\"!unhandledWIdgetsInFilters.includes(widget.type) && !unhandledWIdgetSubTypesInFilters.includes(widget.subType) \">\n <mat-list-option checkboxPosition=\"after\" [value]='widget' [selected]=\"this.selectedWidget.indexOf(widget.identifier) !== -1\" color=\"primary\">\n <span class=\"list-field\" [matTooltip]=\"widget.prompt\">\n <mat-icon class=\"svg-icon mr-2 align-middle\" [svgIcon]=\"widget.widgetIcon\"></mat-icon>\n {{widget.prompt}}\n </span>\n </mat-list-option>\n </ng-container>\n </ng-container>\n </mat-selection-list>\n </div>\n\n <!-- Meta Column Filters -->\n <div class=\"fields-div\" *ngIf=\"dataViews.type !== dataViewType.formDataView\" >\n <label class=\"px-2.5\">Meta Columns</label>\n <mat-selection-list (selectionChange)=\"addMetaColumnFilter($event)\">\n <mat-list-option checkboxPosition=\"after\" *ngFor=\"let metaColumn of metaColumns\"\n [value]='metaColumn' [selected]=\"this.selectedWidget.indexOf(metaColumn) !== -1\" color=\"primary\">\n <span class=\"list-field\" [matTooltip]=\"metaColumn\">\n <mat-icon class=\"svg-icon mr-2 align-middle\" [svgIcon]=\"'axo_square_text'\"></mat-icon>\n {{metaColumn}}\n </span>\n </mat-list-option>\n </mat-selection-list>\n </div>\n </div>\n </mat-menu>\n </div>\n\n <filters class=\"data-list-filter-container\" [filters]=\"filters\" [formId]=\"form?.formId\"\n [commonFilterArray]=\"commonFilterArray\" [screenType]=\"screenType\" [categories]='categories' [appVersionId]=\"appVersionId\"\n [scopeType]=\"scopeType\"\n (applyFilterEmit)=\"applyFilterEmit.emit($event)\" (resetFilterEmit)=\"resetFilterEmit.emit($event)\"\n (deleteFilterEmit)=\"deleteFilter($event)\"\n [showApplyFilterEvent]=\"showApplyFilterEvent\"\n [ngClass]=\"{'container-filter-witdh': !dataViews.properties.showAddFilterButton}\">\n </filters>\n\n </div>\n\n <div class=\"data-view-header-button\" id=\"data-view-header-button\">\n <!--Generate QR button-->\n <button style=\"margin-left: 30px;\" *ngIf=\"selectedViewType === ViewType.DataListView\" class=\"dropdown-button axo-font\" mat-icon-button [matMenuTriggerFor]=\"qrCodeMenu\">\n <span class=\"button-text axo-font\">Generate QR</span>\n <span class=\"dropdown-arrow\"></span>\n </button>\n <mat-menu #qrCodeMenu=\"matMenu\">\n <button mat-menu-item *ngFor=\"let form of actionforms\" (click)=\"openGenerateQrDialog(form)\">{{ form.name }}</button>\n </mat-menu>\n <button *ngIf=\" form && form.type === formTypes.asset && selectedViewType === ViewType.DataListView\" class=\"primary-btn axo-font\" (click)=\"addNewRecord.emit()\"> Add New Record</button>\n <button class=\"link-btn axo-font refresh-btn\" *ngIf=\"showAssignToButton\"(click)=\"assign.emit()\">Assign </button>\n <button class=\"link-btn axo-font refresh-btn\" (click)=\"refreshData.emit()\">Refresh Data</button>\n <button class=\"flex items-center icon-btn\" [matMenuTriggerFor]=\"beforeMenu\"><mat-icon matTooltip=\"Export Data\"\n svgIcon=\"axo_export\"></mat-icon></button>\n \n <!------------------------------------------------->\n \n <!-- context menu to show form to get userEmail Id to get userEmail for excel Export -->\n <mat-menu #beforeMenu=\"matMenu\" xPosition=\"before\">\n <!-- Show the export section if account status is active -->\n <div *ngIf=\"isAccountStatusActive\" class=\"send-excel-report-form\">\n <form [formGroup]=\"exportFormBuilder\">\n <div>XLSX</div>\n <input mat-menu-item type=\"text\" class=\"report-xslx-email\" formControlName=\"email\"\n (ngModelChange)=\"emailValidate()\">\n <p *ngIf=\"displayEmailValidationError\" class=\"email-send-email-error\">Please provide a valid email ID</p>\n <p *ngIf=\"displayNotification\" class=\"email-send-notification\">Export is in progress. You will receive the\n report on your email once completed.</p>\n <div class=\"send-excel-report-form-btn\">\n <button class=\"cancel-btn btn\" (click)=\"closeExportMenu();\">Cancel</button>\n <button class=\"send-btn btn\" (click)=\"sendEmail();$event.stopPropagation()\"\n [disabled]=\"displayEmailValidationError\">Export <mat-icon>send</mat-icon></button>\n </div>\n </form>\n </div>\n <!-- Show the upgrade section if account status is not active -->\n <div *ngIf=\"!isAccountStatusActive\" class=\"upgrade-section\">\n To export data, please subscribe to a plan first.<br><br>\n <button class=\"upgrade-btn btn\" (click)=\"navigateToBilling()\">Upgrade</button>\n </div>\n </mat-menu>\n </div>\n</div>\n", styles: ["lib-data-view-filters{display:flex;align-items:center;width:100%;max-width:100% 1392}lib-data-view-filters .data-list-filter{display:flex;align-items:center;justify-content:space-between;flex-wrap:nowrap;row-gap:.8rem;width:100%}@media screen and (max-width: 1024px){lib-data-view-filters .data-list-filter{flex-wrap:wrap;margin-bottom:.8rem}}lib-data-view-filters .data-list-filter .data-view-filter-wrapper{display:flex;align-items:start;column-gap:10px;margin-left:auto;margin-right:auto}@media screen and (min-width: 1024px){lib-data-view-filters .data-list-filter .data-view-filter-wrapper{width:calc(100% - (var(--buttonsWarraperWidth) + 12px))!important;max-width:calc(100% - (var(--buttonsWarraperWidth) + 12px))!important;min-width:calc(100% - (var(--buttonsWarraperWidth) + 12px))!important}}lib-data-view-filters .data-list-filter .data-view-filter-wrapper .data-list-filter-container{display:flex;column-gap:.5rem!important;width:calc(100% - 6.6rem);min-width:calc(100% - 6.6rem);max-width:calc(100% - 6.6rem)}lib-data-view-filters .data-list-filter .data-view-filter-wrapper .data-list-filter-container .dash-reset,lib-data-view-filters .data-list-filter .data-view-filter-wrapper .data-list-filter-container .reset-section,lib-data-view-filters .data-list-filter .data-view-filter-wrapper .data-list-filter-container .reset-btn{border-left:1px solid #c9c9c9c9;white-space:nowrap;width:144px;display:flex;height:2rem;align-items:center;align-self:center;padding-left:.4rem}lib-data-view-filters .data-list-filter .data-view-filter-wrapper .data-list-filter-container .dash-reset .reset,lib-data-view-filters .data-list-filter .data-view-filter-wrapper .data-list-filter-container .reset-section .reset,lib-data-view-filters .data-list-filter .data-view-filter-wrapper .data-list-filter-container .reset-btn .reset{margin:0;font-size:11px}lib-data-view-filters .data-list-filter .data-view-filter-wrapper .data-list-filter-container .local-filter{width:auto;max-width:calc(100% - 15rem);height:2.5rem;align-items:center!important;margin-top:4px}@media screen and (max-width: 1024px){lib-data-view-filters .data-list-filter .data-view-filter-wrapper .data-list-filter-container .local-filter{width:calc(100vw - 10.125rem)!important;max-width:calc(100% - 10.125rem)}}lib-data-view-filters .data-list-filter .data-view-filter-wrapper .add-icon-btn{margin-top:9px}@media screen and (min-width: 1024px){lib-data-view-filters .data-list-filter .width-after-hide-button{width:calc(100% - 6.688rem)!important}}lib-data-view-filters .data-list-filter .data-view-header-button{display:flex;column-gap:12px}@media screen and (max-width: 1024px){lib-data-view-filters .data-list-filter .data-view-header-button{justify-content:flex-end;width:100%}}lib-data-view-filters .data-list-filter .outer-filterDiv{background-color:#fcfdff;border-color:#fcfdff}.filter-field-list{width:227px!important;min-width:280px!important}.list-field{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;display:inline-block}.list-field .mat-icon{vertical-align:middle}.global-border{border-bottom:1px solid #dcdcdc}.global-border .search-icon{margin-right:16px}.mat-menu-panel .mat-menu-content .mat-menu-item{font-size:13px}.mat-list-base .mat-list-item .mat-list-item-content-reverse,.mat-list-base .mat-list-option .mat-list-item-content-reverse{font-size:12px;display:flex!important}.mat-checkbox-ripple .mat-ripple-element,.mat-checkbox-checked.mat-accent .mat-checkbox-background{background-color:#6454c0!important}.send-excel-report-form,.upgrade-section{padding:8px 18px;height:auto;background-color:#fff!important}.send-excel-report-form form,.upgrade-section form{display:flex;flex-direction:column;row-gap:1rem}.send-excel-report-form .email-send-notification,.upgrade-section .email-send-notification{font-size:10px;color:green;text-align:center;width:200px;margin:0 auto}.send-excel-report-form .email-send-email-error,.upgrade-section .email-send-email-error{font-size:10px;color:red;text-align:left;width:200px}.send-excel-report-form .report-xslx-email,.upgrade-section .report-xslx-email{border:1px solid #8080802e;height:34px;width:100%}.send-excel-report-form .report-xslx-email:hover,.upgrade-section .report-xslx-email:hover{background:rgba(0,0,0,.04)!important;color:#172b4d!important}.send-excel-report-form .send-excel-report-form-btn,.send-excel-report-form .upgrade-btn-section,.upgrade-section .send-excel-report-form-btn,.upgrade-section .upgrade-btn-section{display:flex;justify-content:center;align-items:center;column-gap:1rem}.send-excel-report-form .send-excel-report-form-btn .btn,.send-excel-report-form .upgrade-btn-section .btn,.upgrade-section .send-excel-report-form-btn .btn,.upgrade-section .upgrade-btn-section .btn{height:34px;line-height:34px;flex:50;border-radius:5px;background-color:#7963ed;color:#fff;border:1px solid #7963ed;cursor:pointer;padding:0 12px}.send-excel-report-form .send-excel-report-form-btn .cancel-btn,.send-excel-report-form .upgrade-btn-section .cancel-btn,.upgrade-section .send-excel-report-form-btn .cancel-btn,.upgrade-section .upgrade-btn-section .cancel-btn{border:1px solid #80808059;display:flex;justify-content:center;align-items:center;color:#172b4d!important}.send-excel-report-form .send-excel-report-form-btn .cancel-btn:hover,.send-excel-report-form .upgrade-btn-section .cancel-btn:hover,.upgrade-section .send-excel-report-form-btn .cancel-btn:hover,.upgrade-section .upgrade-btn-section .cancel-btn:hover{background:rgba(0,0,0,.04)!important}.send-excel-report-form .send-excel-report-form-btn .send-btn,.send-excel-report-form .send-excel-report-form-btn .upgrade-btn,.send-excel-report-form .upgrade-btn-section .send-btn,.send-excel-report-form .upgrade-btn-section .upgrade-btn,.upgrade-section .send-excel-report-form-btn .send-btn,.upgrade-section .send-excel-report-form-btn .upgrade-btn,.upgrade-section .upgrade-btn-section .send-btn,.upgrade-section .upgrade-btn-section .upgrade-btn{border:1px solid #7963ed;background-color:#7963ed!important;color:#fff;display:flex;align-items:center;justify-content:center;column-gap:.5rem;padding:7px 10px;border-radius:20px}.send-excel-report-form .send-excel-report-form-btn .send-btn mat-icon,.send-excel-report-form .send-excel-report-form-btn .upgrade-btn mat-icon,.send-excel-report-form .upgrade-btn-section .send-btn mat-icon,.send-excel-report-form .upgrade-btn-section .upgrade-btn mat-icon,.upgrade-section .send-excel-report-form-btn .send-btn mat-icon,.upgrade-section .send-excel-report-form-btn .upgrade-btn mat-icon,.upgrade-section .upgrade-btn-section .send-btn mat-icon,.upgrade-section .upgrade-btn-section .upgrade-btn mat-icon{color:#fff;font-size:19px;height:1.188rem;min-height:1.188rem;width:1.188rem;min-width:1.188rem}.border-seperator{border-right:1px solid #c9c9c9c9;padding-right:12px}.green-square-btn{background-color:green;color:#fff;border:none;border-radius:5px;padding:0 10px;margin-right:10px;cursor:pointer}.dropdown-container{position:relative;display:inline-block}.dropdown-button{background-color:green;color:#fff;padding:10px 20px;border:none;border-radius:5px;cursor:pointer;outline:none}.arrow-icon{margin-left:10px}.dropdown-options{position:absolute;top:calc(100% + 5px);left:0;width:100%;background-color:#fff;border:1px solid green;border-radius:5px;padding:10px;box-shadow:0 2px 4px #0003;display:none}.dropdown-option{display:block;padding:5px;border:none;background-color:transparent;cursor:pointer}.dropdown-option:hover{background-color:#90ee90}.overlay{top:0;left:0;width:100%;height:100%;background-color:#00000080;display:flex;justify-content:center;align-items:center;z-index:9999;position:fixed}.overlay-content{z-index:9999;background-color:#fff;padding:20px;border-radius:5px;box-shadow:0 0 10px #0003;max-width:500px}.overlay-header{font-family:Times New Roman,Times,serif;font-size:18px;font-weight:700;margin-bottom:10px}.level-options{margin-bottom:10px}.remote-button{background-color:#4caf50;color:#fff;padding:10px 20px;border:none;border-radius:5px;cursor:pointer;margin-right:10px}.data-section{margin-bottom:10px;display:flex;align-items:center}.field-select{flex:1;padding:8px;border-radius:5px;border:1px solid #ccc}.text-box{flex:1;padding:8px;border-radius:5px;border:1px solid #ccc;margin-left:10px;margin-right:10px}.add-field-button{background-color:#008cba;color:#fff;border:none;border-radius:30%;cursor:pointer;width:30px;height:30px}.additional-fields{margin-bottom:10px}.logo-options{margin-bottom:10px;display:flex;align-items:center}.logo-options label{margin-left:15px;margin-right:30px}.logo-actions button{margin-right:10px}.browse-button{background-color:#008cba;color:#fff;padding:10px 20px;border:none;border-radius:5px;cursor:pointer}.generate-button{display:flex;align-items:center;margin-left:5px;margin-right:15px}.remote-button{display:inline-block;margin-right:10px;cursor:pointer}.remote-button input[type=checkbox]{display:none}.remote-button input[type=checkbox]+span{display:inline-block;width:20px;height:20px;border:1px solid #ccc;border-radius:50%;vertical-align:middle;position:relative}.remote-button input[type=checkbox]:checked+span:before{content:\"\";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:10px;height:10px;background-color:#4caf50;border-radius:50%}.dropdown-button{background-color:#29942c;color:#fff;border:none;border-radius:5px;padding:0 10px;margin-right:10px;position:relative}.dropdown-button:hover{background-color:#37883b}.button-text{margin-right:20px}.dropdown-arrow{position:absolute;top:50%;right:10px;transform:translateY(-50%);width:0;height:0;margin-left:10px;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid white}\n"] }]
|
|
749
|
+
args: [{ selector: 'lib-data-view-filters', encapsulation: ViewEncapsulation.None, template: "<div class=\"sticky data-list-filter\">\n <div class=\"data-view-filter-wrapper\" [ngClass]=\"{'width-after-hide-button':selectedViewType === ViewType.MapView || selectedViewType === ViewType.BoardView,'no-filter':filters.length <= 0}\">\n <div class=\"add-icon-btn\" [ngClass]=\"{'border-seperator': getFiltersCount()}\">\n <!-- Show hide condition for container. -->\n <button *ngIf=\"screenType === screenTypes.dataViewBuilder || dataViews.properties.showAddFilterButton\" class=\"light-blue-btn axo-font\"\n (click)=\"filtersMenuTrigger.openMenu()\" (contextmenu)=\"openPropertyMenu($event)\" >\n + Add Filter\n </button>\n\n <!-- Add Filter property Menu. this will get opened on right click -->\n <div #propertyMenuTrigger=\"matMenuTrigger\" [matMenuTriggerFor]=\"propertyMenu\"> </div>\n\n\n <mat-menu #propertyMenu=\"matMenu\">\n <div\n (click)=\"$event.stopPropagation();\"\n mat-menu-item\n class=\"filter-properties menu-btn\">\n <div class=\"filter-property\">\n <span class=\"style-title\">Show On Container</span>\n <mat-slide-toggle [(ngModel)]=\"dataViews.properties.showAddFilterButton\"></mat-slide-toggle>\n </div>\n </div>\n </mat-menu>\n\n <!-- Filter list menu -->\n <div #filtersMenuTrigger=\"matMenuTrigger\" [matMenuTriggerFor]=\"filtersMenu\"> </div>\n <mat-menu #filtersMenu=\"matMenu\" yPosition=\"below\" class=\"filter-field-list\" >\n <div (click)=\"$event.stopPropagation();\">\n <div class=\"group flex items-center justify-center mb-3\"\n [ngClass]=\"{'justify-between px-2.5': !showSearchBox}\">\n <span *ngIf=\"showField\" class=\"text-f font-medium\">Fields</span>\n\n <div class=\"flex items-center search-field\" [ngClass]=\"{'global-border px-2.5' : showSearchBox}\">\n <button (click)=\"'showFilterDiv()'\">\n <mat-icon [ngClass]=\"{'search-icon' : showSearchBox}\" class=\"mt-2 text-xs search-icons\"\n [svgIcon]=\"'heroicons_solid:search'\"></mat-icon>\n </button>\n\n <!-- <input id=\"global-field-search\" autocomplete=\"off\" placeholder=\"Search...\" [(ngModel)]=\"searchedTerm\" matInput class=\"search-bar chart-title\" [style.width]=\"!showSearchBox ? '0' : '100%'\" /> -->\n <mat-icon (click)=\"clear()\" *ngIf=\"showSearchBox\" class=\"clear_icon cursor-pointer text-base\">clear\n </mat-icon>\n </div>\n </div>\n <ng-container *ngIf=\"categories.length\">\n <div [ngClass]=\"{'field-container' : showSearchBox}\" *ngIf=\"(categories | search: searchedTerm)?.length\">\n <label class=\"px-2.5\" *ngIf=\"(categories | search: searchedTerm)?.length\">Category</label>\n <mat-selection-list #category>\n <mat-list-option checkboxPosition=\"after\"\n *ngFor=\"let category of categories| search: searchedTerm;let i=index \" [value]='category'\n [(selected)]=\"category.isSelected\" color=\"primary\">\n <span class=\"list-field\" [matTooltip]=\"category.name\"> {{category.name}}</span>\n </mat-list-option>\n </mat-selection-list>\n </div>\n </ng-container>\n <!-- Form filters. -->\n <div class=\"fields-div\" *ngFor=\"let _form of forms\">\n <label class=\"px-2.5\">{{_form?.name}}</label>\n <mat-selection-list (selectionChange)=\"addBasicFilter($event,_form)\">\n <ng-container *ngFor=\"let widget of _form?.widgets| search: searchedTerm\" >\n <ng-container *ngIf=\"!unhandledWIdgetsInFilters.includes(widget.type) && !unhandledWIdgetSubTypesInFilters.includes(widget.subType) \">\n <mat-list-option checkboxPosition=\"after\" [value]='widget' [selected]=\"this.selectedWidget.indexOf(widget.identifier) !== -1\" color=\"primary\">\n <span class=\"list-field\" [matTooltip]=\"widget.prompt\">\n <mat-icon class=\"svg-icon mr-2 align-middle\" [svgIcon]=\"widget.widgetIcon\"></mat-icon>\n {{widget.prompt}}\n </span>\n </mat-list-option>\n </ng-container>\n </ng-container>\n </mat-selection-list>\n </div>\n\n <!-- Meta Column Filters -->\n <div class=\"fields-div\" *ngIf=\"dataViews.type !== dataViewType.formDataView\" >\n <label class=\"px-2.5\">Meta Columns</label>\n <mat-selection-list (selectionChange)=\"addMetaColumnFilter($event)\">\n <mat-list-option checkboxPosition=\"after\" *ngFor=\"let metaColumn of metaColumns\"\n [value]='metaColumn' [selected]=\"this.selectedWidget.indexOf(metaColumn) !== -1\" color=\"primary\">\n <span class=\"list-field\" [matTooltip]=\"metaColumn\">\n <mat-icon class=\"svg-icon mr-2 align-middle\" [svgIcon]=\"'axo_square_text'\"></mat-icon>\n {{metaColumn}}\n </span>\n </mat-list-option>\n </mat-selection-list>\n </div>\n </div>\n </mat-menu>\n </div>\n\n <filters class=\"data-list-filter-container\" [filters]=\"filters\" [formId]=\"form?.formId\"\n [commonFilterArray]=\"commonFilterArray\" [screenType]=\"screenType\" [categories]='categories' [appVersionId]=\"appVersionId\"\n [scopeType]=\"scopeType\"\n (applyFilterEmit)=\"applyFilterEmit.emit($event)\" (resetFilterEmit)=\"resetFilterEmit.emit($event)\"\n (deleteFilterEmit)=\"deleteFilter($event)\"\n [showApplyFilterEvent]=\"showApplyFilterEvent\"\n [ngClass]=\"{'container-filter-witdh': !dataViews.properties.showAddFilterButton}\">\n </filters>\n\n </div>\n\n <div class=\"data-view-header-button\" id=\"data-view-header-button\">\n <!--Generate QR button-->\n <button style=\"margin-left: 30px;\" *ngIf=\"selectedViewType === ViewType.DataListView\" class=\"dropdown-button axo-font\" mat-icon-button [matMenuTriggerFor]=\"qrCodeMenu\">\n <span class=\"button-text axo-font\">Generate QR</span>\n <span class=\"dropdown-arrow\"></span>\n </button>\n <mat-menu #qrCodeMenu=\"matMenu\">\n <button mat-menu-item *ngFor=\"let form of actionforms\" (click)=\"openGenerateQrDialog(form)\">{{ form.name }}</button>\n </mat-menu>\n <button *ngIf=\" form && form.type === formTypes.asset && selectedViewType === ViewType.DataListView\" class=\"primary-btn axo-font\" (click)=\"addNewRecord.emit()\"> Add New Record</button>\n <button class=\"link-btn axo-font refresh-btn\" *ngIf=\"showAssignToButton\"(click)=\"assign.emit()\">Assign </button>\n <button class=\"link-btn axo-font refresh-btn\" (click)=\"refreshData.emit()\">Refresh Data</button>\n <button class=\"flex items-center icon-btn\" [matMenuTriggerFor]=\"beforeMenu\"><mat-icon matTooltip=\"Export Data\"\n svgIcon=\"axo_export\"></mat-icon></button>\n \n <!------------------------------------------------->\n \n <!-- context menu to show form to get userEmail Id to get userEmail for excel Export -->\n <mat-menu #beforeMenu=\"matMenu\" xPosition=\"before\">\n <!-- Show the export section if account status is active -->\n <div *ngIf=\"isAccountStatusActive\" class=\"send-excel-report-form\">\n <form [formGroup]=\"exportFormBuilder\">\n <div>XLSX</div>\n <input mat-menu-item type=\"text\" class=\"report-xslx-email\" formControlName=\"email\"\n (ngModelChange)=\"emailValidate()\">\n <p *ngIf=\"displayEmailValidationError\" class=\"email-send-email-error\">Please provide a valid email ID</p>\n <p *ngIf=\"displayNotification\" class=\"email-send-notification\">Export is in progress. You will receive the\n report on your email once completed.</p>\n <div class=\"send-excel-report-form-btn\">\n <button class=\"cancel-btn btn\" (click)=\"closeExportMenu();\">Cancel</button>\n <button class=\"send-btn btn\" (click)=\"sendEmail();$event.stopPropagation()\"\n [disabled]=\"displayEmailValidationError\">Export <mat-icon>send</mat-icon></button>\n </div>\n </form>\n </div>\n <!-- Show the upgrade section if account status is not active -->\n <div *ngIf=\"!isAccountStatusActive\" class=\"upgrade-section\">\n To export data, please subscribe to a plan first.{{isAccountStatusActive}}<br><br>\n <button class=\"upgrade-btn btn\" (click)=\"navigateToBilling()\">Upgrade</button>\n </div>\n </mat-menu>\n </div>\n</div>\n", styles: ["lib-data-view-filters{display:flex;align-items:center;width:100%;max-width:100% 1392}lib-data-view-filters .data-list-filter{display:flex;align-items:center;justify-content:space-between;flex-wrap:nowrap;row-gap:.8rem;width:100%}@media screen and (max-width: 1024px){lib-data-view-filters .data-list-filter{flex-wrap:wrap;margin-bottom:.8rem}}lib-data-view-filters .data-list-filter .data-view-filter-wrapper{display:flex;align-items:start;column-gap:10px;margin-left:auto;margin-right:auto}@media screen and (min-width: 1024px){lib-data-view-filters .data-list-filter .data-view-filter-wrapper{width:calc(100% - (var(--buttonsWarraperWidth) + 12px))!important;max-width:calc(100% - (var(--buttonsWarraperWidth) + 12px))!important;min-width:calc(100% - (var(--buttonsWarraperWidth) + 12px))!important}}lib-data-view-filters .data-list-filter .data-view-filter-wrapper .data-list-filter-container{display:flex;column-gap:.5rem!important;width:calc(100% - 6.6rem);min-width:calc(100% - 6.6rem);max-width:calc(100% - 6.6rem)}lib-data-view-filters .data-list-filter .data-view-filter-wrapper .data-list-filter-container .dash-reset,lib-data-view-filters .data-list-filter .data-view-filter-wrapper .data-list-filter-container .reset-section,lib-data-view-filters .data-list-filter .data-view-filter-wrapper .data-list-filter-container .reset-btn{border-left:1px solid #c9c9c9c9;white-space:nowrap;width:144px;display:flex;height:2rem;align-items:center;align-self:center;padding-left:.4rem}lib-data-view-filters .data-list-filter .data-view-filter-wrapper .data-list-filter-container .dash-reset .reset,lib-data-view-filters .data-list-filter .data-view-filter-wrapper .data-list-filter-container .reset-section .reset,lib-data-view-filters .data-list-filter .data-view-filter-wrapper .data-list-filter-container .reset-btn .reset{margin:0;font-size:11px}lib-data-view-filters .data-list-filter .data-view-filter-wrapper .data-list-filter-container .local-filter{width:auto;max-width:calc(100% - 15rem);height:2.5rem;align-items:center!important;margin-top:4px}@media screen and (max-width: 1024px){lib-data-view-filters .data-list-filter .data-view-filter-wrapper .data-list-filter-container .local-filter{width:calc(100vw - 10.125rem)!important;max-width:calc(100% - 10.125rem)}}lib-data-view-filters .data-list-filter .data-view-filter-wrapper .add-icon-btn{margin-top:9px}@media screen and (min-width: 1024px){lib-data-view-filters .data-list-filter .width-after-hide-button{width:calc(100% - 6.688rem)!important}}lib-data-view-filters .data-list-filter .data-view-header-button{display:flex;column-gap:12px}@media screen and (max-width: 1024px){lib-data-view-filters .data-list-filter .data-view-header-button{justify-content:flex-end;width:100%}}lib-data-view-filters .data-list-filter .outer-filterDiv{background-color:#fcfdff;border-color:#fcfdff}.filter-field-list{width:227px!important;min-width:280px!important}.list-field{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;display:inline-block}.list-field .mat-icon{vertical-align:middle}.global-border{border-bottom:1px solid #dcdcdc}.global-border .search-icon{margin-right:16px}.mat-menu-panel .mat-menu-content .mat-menu-item{font-size:13px}.mat-list-base .mat-list-item .mat-list-item-content-reverse,.mat-list-base .mat-list-option .mat-list-item-content-reverse{font-size:12px;display:flex!important}.mat-checkbox-ripple .mat-ripple-element,.mat-checkbox-checked.mat-accent .mat-checkbox-background{background-color:#6454c0!important}.send-excel-report-form,.upgrade-section{padding:8px 18px;height:auto;background-color:#fff!important}.send-excel-report-form form,.upgrade-section form{display:flex;flex-direction:column;row-gap:1rem}.send-excel-report-form .email-send-notification,.upgrade-section .email-send-notification{font-size:10px;color:green;text-align:center;width:200px;margin:0 auto}.send-excel-report-form .email-send-email-error,.upgrade-section .email-send-email-error{font-size:10px;color:red;text-align:left;width:200px}.send-excel-report-form .report-xslx-email,.upgrade-section .report-xslx-email{border:1px solid #8080802e;height:34px;width:100%}.send-excel-report-form .report-xslx-email:hover,.upgrade-section .report-xslx-email:hover{background:rgba(0,0,0,.04)!important;color:#172b4d!important}.send-excel-report-form .send-excel-report-form-btn,.send-excel-report-form .upgrade-btn-section,.upgrade-section .send-excel-report-form-btn,.upgrade-section .upgrade-btn-section{display:flex;justify-content:center;align-items:center;column-gap:1rem}.send-excel-report-form .send-excel-report-form-btn .btn,.send-excel-report-form .upgrade-btn-section .btn,.upgrade-section .send-excel-report-form-btn .btn,.upgrade-section .upgrade-btn-section .btn{height:34px;line-height:34px;flex:50;border-radius:5px;background-color:#7963ed;color:#fff;border:1px solid #7963ed;cursor:pointer;padding:0 12px}.send-excel-report-form .send-excel-report-form-btn .cancel-btn,.send-excel-report-form .upgrade-btn-section .cancel-btn,.upgrade-section .send-excel-report-form-btn .cancel-btn,.upgrade-section .upgrade-btn-section .cancel-btn{border:1px solid #80808059;display:flex;justify-content:center;align-items:center;color:#172b4d!important}.send-excel-report-form .send-excel-report-form-btn .cancel-btn:hover,.send-excel-report-form .upgrade-btn-section .cancel-btn:hover,.upgrade-section .send-excel-report-form-btn .cancel-btn:hover,.upgrade-section .upgrade-btn-section .cancel-btn:hover{background:rgba(0,0,0,.04)!important}.send-excel-report-form .send-excel-report-form-btn .send-btn,.send-excel-report-form .send-excel-report-form-btn .upgrade-btn,.send-excel-report-form .upgrade-btn-section .send-btn,.send-excel-report-form .upgrade-btn-section .upgrade-btn,.upgrade-section .send-excel-report-form-btn .send-btn,.upgrade-section .send-excel-report-form-btn .upgrade-btn,.upgrade-section .upgrade-btn-section .send-btn,.upgrade-section .upgrade-btn-section .upgrade-btn{border:1px solid #7963ed;background-color:#7963ed!important;color:#fff;display:flex;align-items:center;justify-content:center;column-gap:.5rem;padding:7px 10px;border-radius:20px}.send-excel-report-form .send-excel-report-form-btn .send-btn mat-icon,.send-excel-report-form .send-excel-report-form-btn .upgrade-btn mat-icon,.send-excel-report-form .upgrade-btn-section .send-btn mat-icon,.send-excel-report-form .upgrade-btn-section .upgrade-btn mat-icon,.upgrade-section .send-excel-report-form-btn .send-btn mat-icon,.upgrade-section .send-excel-report-form-btn .upgrade-btn mat-icon,.upgrade-section .upgrade-btn-section .send-btn mat-icon,.upgrade-section .upgrade-btn-section .upgrade-btn mat-icon{color:#fff;font-size:19px;height:1.188rem;min-height:1.188rem;width:1.188rem;min-width:1.188rem}.border-seperator{border-right:1px solid #c9c9c9c9;padding-right:12px}.green-square-btn{background-color:green;color:#fff;border:none;border-radius:5px;padding:0 10px;margin-right:10px;cursor:pointer}.dropdown-container{position:relative;display:inline-block}.dropdown-button{background-color:green;color:#fff;padding:10px 20px;border:none;border-radius:5px;cursor:pointer;outline:none}.arrow-icon{margin-left:10px}.dropdown-options{position:absolute;top:calc(100% + 5px);left:0;width:100%;background-color:#fff;border:1px solid green;border-radius:5px;padding:10px;box-shadow:0 2px 4px #0003;display:none}.dropdown-option{display:block;padding:5px;border:none;background-color:transparent;cursor:pointer}.dropdown-option:hover{background-color:#90ee90}.overlay{top:0;left:0;width:100%;height:100%;background-color:#00000080;display:flex;justify-content:center;align-items:center;z-index:9999;position:fixed}.overlay-content{z-index:9999;background-color:#fff;padding:20px;border-radius:5px;box-shadow:0 0 10px #0003;max-width:500px}.overlay-header{font-family:Times New Roman,Times,serif;font-size:18px;font-weight:700;margin-bottom:10px}.level-options{margin-bottom:10px}.remote-button{background-color:#4caf50;color:#fff;padding:10px 20px;border:none;border-radius:5px;cursor:pointer;margin-right:10px}.data-section{margin-bottom:10px;display:flex;align-items:center}.field-select{flex:1;padding:8px;border-radius:5px;border:1px solid #ccc}.text-box{flex:1;padding:8px;border-radius:5px;border:1px solid #ccc;margin-left:10px;margin-right:10px}.add-field-button{background-color:#008cba;color:#fff;border:none;border-radius:30%;cursor:pointer;width:30px;height:30px}.additional-fields{margin-bottom:10px}.logo-options{margin-bottom:10px;display:flex;align-items:center}.logo-options label{margin-left:15px;margin-right:30px}.logo-actions button{margin-right:10px}.browse-button{background-color:#008cba;color:#fff;padding:10px 20px;border:none;border-radius:5px;cursor:pointer}.generate-button{display:flex;align-items:center;margin-left:5px;margin-right:15px}.remote-button{display:inline-block;margin-right:10px;cursor:pointer}.remote-button input[type=checkbox]{display:none}.remote-button input[type=checkbox]+span{display:inline-block;width:20px;height:20px;border:1px solid #ccc;border-radius:50%;vertical-align:middle;position:relative}.remote-button input[type=checkbox]:checked+span:before{content:\"\";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:10px;height:10px;background-color:#4caf50;border-radius:50%}.dropdown-button{background-color:#29942c;color:#fff;border:none;border-radius:5px;padding:0 10px;margin-right:10px;position:relative}.dropdown-button:hover{background-color:#37883b}.button-text{margin-right:20px}.dropdown-arrow{position:absolute;top:50%;right:10px;transform:translateY(-50%);width:0;height:0;margin-left:10px;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid white}\n"] }]
|
|
743
750
|
}], function () { return [{ type: i1.DataViewFiltersService }, { type: i1.DataViewFiltersService }, { type: i2.DataViewService }, { type: i3.FormBuilder }, { type: i4.FiltersService }, { type: i5.UserDataService }, { type: i6.Router }, { type: i7.MatDialog }, { type: i6.ActivatedRoute }, { type: i5.CommonLibConfigurationService }]; }, { form: [{
|
|
744
751
|
type: Input
|
|
745
752
|
}], filters: [{
|
|
@@ -785,4 +792,4 @@ DataViewFiltersComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Da
|
|
|
785
792
|
type: ViewChild,
|
|
786
793
|
args: ['propertyMenuTrigger']
|
|
787
794
|
}] }); })();
|
|
788
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS12aWV3LWZpbHRlcnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2F4LWNvbW1vbi11aS1saWIvc3JjL2xpYi9kYXRhLXZpZXctbGliL2RhdGEtdmlldy1maWx0ZXJzL2RhdGEtdmlldy1maWx0ZXJzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9heC1jb21tb24tdWktbGliL3NyYy9saWIvZGF0YS12aWV3LWxpYi9kYXRhLXZpZXctZmlsdGVycy9kYXRhLXZpZXctZmlsdGVycy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUUxSCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNwRCxPQUFPLEVBQWlCLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBaUIsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNJLE9BQU8sRUFBRSxXQUFXLEVBQWEsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFcEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXhELE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFFbkYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saURBQWlELENBQUM7QUFDcEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QyxPQUFP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RCx5RUFBZ0Q7UUFLM0MsZUFBYztRQUFkLHlDQUFjO1FBRTlDLGVBQTJGO1FBQTNGLDhIQUEyRjtRQUNyRCxlQUF3QjtRQUF4Qiw2Q0FBd0I7UUFFNUIsZUFBZ0M7UUFBaEMsd0NBQWdDO1FBUW5FLGVBQTJCO1FBQTNCLGdEQUEyQjtRQWdCM0IsZUFBNEI7UUFBNUIsaURBQTRCOzt1RkQxRzdCLHdCQUF3QjtjQU5wQyxTQUFTOzJCQUNFLHVCQUF1QixpQkFHbEIsaUJBQWlCLENBQUMsSUFBSTt1VkFJNUIsSUFBSTtrQkFBWixLQUFLO1lBQ0csT0FBTztrQkFBZixLQUFLO1lBQ0csVUFBVTtrQkFBbEIsS0FBSztZQUNHLFVBQVU7a0JBQWxCLEtBQUs7WUFDRyxVQUFVO2tCQUFsQixLQUFLO1lBQ0csWUFBWTtrQkFBcEIsS0FBSztZQUNHLGdCQUFnQjtrQkFBeEIsS0FBSztZQUNHLFNBQVM7a0JBQWpCLEtBQUs7WUFDRyxTQUFTO2tCQUFqQixLQUFLO1lBQ0csa0JBQWtCO2tCQUExQixLQUFLO1lBRUksbUJBQW1CO2tCQUE1QixNQUFNO1lBQ0csZUFBZTtrQkFBeEIsTUFBTTtZQUNHLGVBQWU7a0JBQXhCLE1BQU07WUFDRyxlQUFlO2tCQUF4QixNQUFNO1lBQ0csWUFBWTtrQkFBckIsTUFBTTtZQUNHLFVBQVU7a0JBQW5CLE1BQU07WUFDRyxXQUFXO2tCQUFwQixNQUFNO1lBQ0csTUFBTTtrQkFBZixNQUFNO1lBQ0csVUFBVTtrQkFBbkIsTUFBTTtZQUVvQixXQUFXO2tCQUFyQyxTQUFTO21CQUFDLGNBQWM7WUFDUyxtQkFBbUI7a0JBQXBELFNBQVM7bUJBQUMscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVW5oYW5kbGVkV0lkZ2V0c0luRmlsdGVycywgVW5oYW5kbGVkV0lkZ2V0U3ViVHlwZXNJbkZpbHRlcnMgfSBmcm9tICcuLy4uLy4uL2VubGlnaHRlbi1saWIvZmlsdGVycy9zdGF0aWMtd2lkZ2V0JztcbmltcG9ydCB7IERhdGFWaWV3RmlsdGVyIH0gZnJvbSAnLi8uLi9kYXRhLXZpZXcvZGF0YS12aWV3LWZpbHRlcic7XG5pbXBvcnQgeyBGb3JtVHlwZSB9IGZyb20gJy4vLi4vLi4vZm9ybXMvcGFnZS9jb21tb24vd2lkZ2V0LWVudW1zJztcbmltcG9ydCB7IEZpbHRlcnNTZXJ2aWNlIH0gZnJvbSAnLi8uLi8uLi9maWx0ZXJzL2ZpbHRlcnMuc2VydmljZSc7XG5pbXBvcnQgeyBEYXRhVmlldyB9IGZyb20gJy4vLi4vZGF0YS12aWV3L2RhdGEtdmlldyc7XG5pbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzLCBWaWV3Q2hpbGQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0U2VsZWN0aW9uTGlzdENoYW5nZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2xpc3QnO1xuaW1wb3J0IHsgTWF0TWVudVRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9tZW51JztcbmltcG9ydCB7IEF4RmlsdGVyIH0gZnJvbSAnLi4vLi4vZW5saWdodGVuLWxpYi9maWx0ZXJzL2F4LWZpbHRlcic7XG5pbXBvcnQgeyBTY29wZVR5cGUsIFNjcmVlblR5cGUgfSBmcm9tICcuLi8uLi9lbmxpZ2h0ZW4tbGliL2ZpbHRlcnMvY29uZGl0aW9uLXR5cGUnO1xuaW1wb3J0IHsgRmlsdGVyQ2F0ZWdvcnkgfSBmcm9tICcuLi8uLi9lbmxpZ2h0ZW4tbGliL2ZpbHRlcnMvZmlsdGVyLWNhdGVnb3J5JztcbmltcG9ydCB7IEdlbmVyYWxGaWx0ZXJUeXBlIH0gZnJvbSAnLi4vLi4vZW5saWdodGVuLWxpYi9maWx0ZXJzL2dlbmVyYWwtZmlsdGVyLXR5cGUnO1xuaW1wb3J0IHsgTWV0YUNvbHVtblR5cGVzIH0gZnJvbSAnLi4vLi4vZmlsdGVycy9tZXRhQ29sdW1uVHlwZXMnO1xuaW1wb3J0IHsgQXhGb3JtIH0gZnJvbSAnLi4vLi4vZm9ybXMvYXgtZm9ybSc7XG5pbXBvcnQgeyBEYXRhVmlld1NlcnZpY2UgfSBmcm9tICcuLi9kYXRhLXZpZXcuc2VydmljZSc7XG5pbXBvcnQgeyBEYXRhVmlld1R5cGUsIFZpZXdUeXBlIH0gZnJvbSAnLi4vZGF0YS12aWV3L2RhdGEtdmlldy1lbnVtcyc7XG5pbXBvcnQgeyBEYXRhVmlld0ZpbHRlcnNTZXJ2aWNlIH0gZnJvbSAnLi9kYXRhLXZpZXctZmlsdGVycy5zZXJ2aWNlJztcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBHZW5lcmF0ZVFSQ29tcG9uZW50IH0gZnJvbSAnLi9nZW5lcmF0ZS1xci9nZW5lcmF0ZS1xci5jb21wb25lbnQnO1xuaW1wb3J0IHsgVXNlckRhdGFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vcHVibGljLWFwaSc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQ29tbW9uTGliQ29uZmlndXJhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9wdWJsaWMtYXBpJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLWRhdGEtdmlldy1maWx0ZXJzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGEtdmlldy1maWx0ZXJzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZGF0YS12aWV3LWZpbHRlcnMuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBEYXRhVmlld0ZpbHRlcnNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsQWZ0ZXJWaWV3SW5pdCB7XG4gIC8vPC0tLS0tLSggSW5wdXRzICkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cbiAgQElucHV0KCkgZm9ybTogQXhGb3JtO1xuICBASW5wdXQoKSBmaWx0ZXJzOiBBcnJheTxBeEZpbHRlcj47XG4gIEBJbnB1dCgpIGNhdGVnb3JpZXM6IEFycmF5PEZpbHRlckNhdGVnb3J5PiA9IFtdO1xuICBASW5wdXQoKSBpc0VkaXRhYmxlOiBib29sZWFuO1xuICBASW5wdXQoKSBzY3JlZW5UeXBlOiBTY3JlZW5UeXBlO1xuICBASW5wdXQoKSBhcHBWZXJzaW9uSWQ6IG51bWJlcjtcbiAgQElucHV0KCkgc2VsZWN0ZWRWaWV3VHlwZTogVmlld1R5cGU7XG4gIEBJbnB1dCgpIHVzZXJFbWFpbDogc3RyaW5nO1xuICBASW5wdXQoKSBkYXRhVmlld3M6IERhdGFWaWV3O1xuICBASW5wdXQoKSBzaG93QXNzaWduVG9CdXR0b246IGJvb2xlYW4gPSBmYWxzZTtcbiAgLy88LS0tLS0tLS0tLS0tLShvdXRwdXRzKSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIEBPdXRwdXQoKSBkaXJ0eUZsb3dDaGVja0V2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBhcHBseUZpbHRlckVtaXQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIHJlc2V0RmlsdGVyRW1pdCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgY2xlYXJGaWx0ZXJFbWl0ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBhZGROZXdSZWNvcmQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIGdlbmVyYXRlUVIgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIHJlZnJlc2hEYXRhID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBhc3NpZ24gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIGV4cG9ydERhdGEgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy88LS0tLS0tLS0tLS0tLS0oQ2hpbGQgZWxlbWVudCBhY2Nlc3MpLS0tLS0tLS0tLS0tLT5cbiAgQFZpZXdDaGlsZChNYXRNZW51VHJpZ2dlcikgY29udGV4dE1lbnU6IE1hdE1lbnVUcmlnZ2VyO1xuICBAVmlld0NoaWxkKCdwcm9wZXJ0eU1lbnVUcmlnZ2VyJykgcHJvcGVydHlNZW51VHJpZ2dlcjogTWF0TWVudVRyaWdnZXI7XG4gIC8vPC0tLS0tLS0tLS0tLS0tLS0oIENvbXBvbmVudCBWYXJpYWJsZXMpLS0tLS0tLS0tLS0tLT5cbiAgc2NvcGVUeXBlID0gMjtcbiAgc2hvd1NlYXJjaEJveDogYm9vbGVhbiA9IGZhbHNlO1xuICBzaG93RmllbGQ6IGJvb2xlYW4gPSB0cnVlO1xuICB0aXRsZVZhbHVlOiBzdHJpbmcgPSAnJztcbiAgc2VhcmNoZWRUZXJtOiBzdHJpbmcgPSAnJzs7XG4gIHNob3dBcHBseUZpbHRlckV2ZW50OiBib29sZWFuID0gdHJ1ZTtcbiAgZm9ybUlkOiBzdHJpbmc7XG4gIHNlbGVjdGVkV2lkZ2V0OiBBcnJheTxzdHJpbmc+ID0gW107XG4gIGNvbW1vbkZpbHRlckFycmF5OiBBcnJheTxhbnk+ID0gW107XG4gIGV4cG9ydEZvcm1CdWlsZGVyOiBGb3JtR3JvdXA7XG4gIGRpc3BsYXlOb3RpZmljYXRpb246IGJvb2xlYW4gPSBmYWxzZTtcbiAgZW1haWxQYXR0ZXJuOiBzdHJpbmcgPSAnXlthLXowLTkuXyUrLV0rQFthLXowLTkuLV0rXFwuW2Etel17Miw0fSQnO1xuICBkaXNwbGF5RW1haWxWYWxpZGF0aW9uRXJyb3I6IGJvb2xlYW4gPSBmYWxzZTtcbiAgZm9ybXM6IEFycmF5PEF4Rm9ybT4gPSBbXTtcbiAgb2JzOiBSZXNpemVPYnNlcnZlcjtcbiAgbWV0YUNvbHVtbnM6IEFycmF5PE1ldGFDb2x1bW5UeXBlcz4gPSBbTWV0YUNvbHVtblR5cGVzLnRhc2tTdGF0dXMsTWV0YUNvbHVtblR5cGVzLnRhc2tBc3NpZ25lZFRvLE1ldGFDb2x1bW5UeXBlcy50YXNrQ3JlYXRlZERhdGVdO1xuICB1bmhhbmRsZWRXSWRnZXRzSW5GaWx0ZXJzPSBVbmhhbmRsZWRXSWRnZXRzSW5GaWx0ZXJzO1xuICB1bmhhbmRsZWRXSWRnZXRTdWJUeXBlc0luRmlsdGVycyA9IFVuaGFuZGxlZFdJZGdldFN1YlR5cGVzSW5GaWx0ZXJzO1xuICBhY3Rpb25Gb3JtczogQXJyYXk8QXhGb3JtPiA9IFtdO1xuICBhY3Rpb25zOmFueTtcbiAgYWN0aW9uZm9ybXMgPSBbXTtcbiAgY29udGFpbmVySWQ6IG51bWJlcjtcbiAgaXNBY2NvdW50U3RhdHVzQWN0aXZlOiBib29sZWFuO1xuICAvKipcbiAgICogQ29uc3RydWN0b3JcbiAgICpcbiAgICogQHBhcmFtIF9kYXRhVklld0ZpbHRlclNlcnZpY2VcbiAgICogQHBhcmFtIF9mb3JtQnVpbGRlclxuICAgKi9cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfZGF0YVZJZXdGaWx0ZXJTZXJ2aWNlOiBEYXRhVmlld0ZpbHRlcnNTZXJ2aWNlLFxuICAgIHByaXZhdGUgX2RhdGFWSWV3RmlsdGVyc1NlcnZpY2U6IERhdGFWaWV3RmlsdGVyc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBfZGF0YVZpZXdTZXJ2aWNlOiBEYXRhVmlld1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBfZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxuICAgIHByaXZhdGUgX2ZpbHRlclNlcnZpY2U6IEZpbHRlcnNTZXJ2aWNlLFxuICAgIHByaXZhdGUgX3VzZXJEYXRhU2VydmljZTogVXNlckRhdGFTZXJ2aWNlLFxuICAgIHByaXZhdGUgX3JvdXRlcjogUm91dGVyLFxuICAgIHB1YmxpYyBkaWFsb2c6IE1hdERpYWxvZyxcbiAgICBwcml2YXRlIF9hY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSBjb21tb25MaWJDb25maWc6IENvbW1vbkxpYkNvbmZpZ3VyYXRpb25TZXJ2aWNlXG4gICkgeyBcbiAgICB0aGlzLmFwcFZlcnNpb25JZD1KU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdhcHBWZXJzaW9uSWQnKSk7XG4gICAgdGhpcy5fZGF0YVZJZXdGaWx0ZXJzU2VydmljZS5nZXRBY3Rpb25Gb3JtTGlzdCh0aGlzLmFwcFZlcnNpb25JZCkuc3Vic2NyaWJlKChkYXRhKSA9PiB7XG4gICAgICBjb25zb2xlLmxvZyhcImRhdGFcIiwgZGF0YSk7XG4gICAgICBkYXRhLmFmbC5hZnMuZmlsdGVyKGZvcm0gPT4gZm9ybS5mdCA9PT0gJ1QnICYmIGZvcm0uZnN0ID09PSAnQScpLmZvckVhY2goZm9ybSA9PiB7XG4gICAgICAgIGNvbnN0IGF4Zm9ybSA9IG5ldyBBeEZvcm0oKTtcbiAgICAgICAgYXhmb3JtLmZvcm1JZCA9IGZvcm0uZmlkO1xuICAgICAgICBheGZvcm0ubmFtZSA9IGZvcm0uZm47XG4gICAgICAgIGF4Zm9ybS5pY29uID0gZm9ybS5maTtcbiAgICAgICAgYXhmb3JtLnN0YXR1cyA9IGZvcm0uZnN0O1xuICAgICAgICBheGZvcm0udHlwZSA9IGZvcm0uZnQ7XG4gICAgICAgIHRoaXMuYWN0aW9uZm9ybXMucHVzaChheGZvcm0pO1xuICAgIH0pO1xuXG4gICAgICBjb25zb2xlLmxvZyhcIkZpbHRlcmVkIGZvcm1zOlwiLCB0aGlzLmFjdGlvbmZvcm1zKTtcbiAgICB9KTtcbiAgfVxuXG4gIHNob3dPdmVybGF5OmJvb2xlYW4gPSBmYWxzZTsgLy8gQm9vbGVhbiBwcm9wZXJ0eSB0byBjb250cm9sIG92ZXJsYXkgdmlzaWJpbGl0eVxuICBcbiAgdG9nZ2xlT3ZlcmxheSgpIHsgICAgICAgICAgICAvLyBNZXRob2QgdG8gdG9nZ2xlIG92ZXJsYXkgdmlzaWJpbGl0eVxuICAgIHRoaXMuc2hvd092ZXJsYXkgPSAhdGhpcy5zaG93T3ZlcmxheTtcbiAgfVxuICBjbG9zZSgpOiB2b2lke1xuICAgIHRoaXMuc2hvd092ZXJsYXkgPSAhdGhpcy5zaG93T3ZlcmxheTtcbiAgfVxuXG5cbiAgZ2V0IGZvcm1UeXBlcygpOiB0eXBlb2YgRm9ybVR5cGUge1xuICAgIHJldHVybiBGb3JtVHlwZTtcbiAgfVxuICAvKipcbiAgICogT24gaW5pdCBsaWZlIGN5Y2xlIGhvb2tcbiAgICovXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZXhwb3J0Rm9ybUJ1aWxkZXIgPSB0aGlzLl9mb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICBlbWFpbDogW3RoaXMudXNlckVtYWlsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5lbWFpbF1dXG4gICAgfSk7XG4gICAgdGhpcy5fdXNlckRhdGFTZXJ2aWNlLmlzQWNjb3VudFN0YXR1c0FjdGl2ZSQuc3Vic2NyaWJlKChyZXNwb25zZSkgPT4ge1xuICAgICAgdGhpcy5pc0FjY291bnRTdGF0dXNBY3RpdmUgPSByZXNwb25zZTtcbiAgICB9KTtcbiAgfVxuICBuZ0FmdGVyVmlld0luaXQoKXtcbiAgICB0aGlzLm9icyA9IG5ldyBSZXNpemVPYnNlcnZlcigoKSA9PiB7XG4gICAgICAvKiogZ2V0IHdpZHRoIG9mIGZpbHRlciBidXR0b25zIHdycmFwZXIgKi9cbiAgICAgIGNvbnN0IG51bWJlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkYXRhLXZpZXctaGVhZGVyLWJ1dHRvbicpPy5jbGllbnRXaWR0aCsncHgnO1xuICAgICAgLyoqU2V0IHdpZHRoIG9mIGNzcyB2YXJpYWJsZSAqL1xuICAgICAgaWYobnVtYmVyKVxuICAgICAgICAgIHtkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tYnV0dG9uc1dhcnJhcGVyV2lkdGgnLCBudW1iZXIpO31cbiAgICB9KTtcbiAgICB0aGlzLm9icy5vYnNlcnZlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkYXRhLXZpZXctaGVhZGVyLWJ1dHRvbicpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPbiBjaGFuZ2VzIGxpZmUgY3ljbGUgaG9vay5cbiAgICovXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAvKiogZ2V0IHdpZHRoIG9mIGZpbHRlciBidXR0b25zIHdycmFwZXIgKi9cbiAgICBpZiAodGhpcy5vYnMpIHtcbiAgICAgIGNvbnN0IG51bWJlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkYXRhLXZpZXctaGVhZGVyLWJ1dHRvbicpLmNsaWVudFdpZHRoKydweCc7XG4gICAgICAvKipTZXQgd2lkdGggb2YgY3NzIHZhcmlhYmxlICovXG4gICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tYnV0dG9uc1dhcnJhcGVyV2lkdGgnLCBudW1iZXIpO1xuICAgICAgdGhpcy5vYnMub2JzZXJ2ZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGF0YS12aWV3LWhlYWRlci1idXR0b24nKSk7XG4gICAgICB9XG4gICAgaWYgKGNoYW5nZXMuZGF0YVZpZXdzKSB7XG4gICAgICB0aGlzLmZvcm1zID0gW107XG4gICAgICB0aGlzLmNvbW1vbkZpbHRlckFycmF5ID0gW107XG4gICAgICB0aGlzLmdlbmVyYXRlQ29tbW9uRmlsdGVyTGlzdCgpO1xuICAgICAgdGhpcy5zZWxlY3RlZFdpZGdldCA9IFtdO1xuICAgICAgaWYodGhpcy5kYXRhVmlld3MudHlwZSAhPT0gRGF0YVZpZXdUeXBlLmdlbmVyaWNUYXNrVmlldyl7XG4gICAgICAgIHRoaXMuZm9ybXMucHVzaCh0aGlzLmZvcm0pO1xuICAgICAgICBpZih0aGlzLmZvcm0udHJhY2tlZEFzc2V0SWQpe1xuICAgICAgICAgICAgdGhpcy5fZGF0YVZpZXdTZXJ2aWNlLmdldEZvcm1EZXRhaWxzKHRoaXMuZm9ybS50cmFja2VkQXNzZXRJZCkudGhlbigoX2Zvcm0pPT57XG4gICAgICAgICAgICAgICAgdGhpcy5mb3Jtcy5wdXNoKF9mb3JtKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBTdWJzY3JpYmVycyBzaG91bGQgYmUgaW1wbGVtZW50ZWQgaGVyZVxuICAgKi9cbiAgc3Vic2NyaWJlcnMoKSB7XG4gICAgdGhpcy5fZGF0YVZJZXdGaWx0ZXJzU2VydmljZS5nZXRBY3Rpb25Gb3JtTGlzdCh0aGlzLmFwcFZlcnNpb25JZCk7XG4gICAgdGhpcy5fZGF0YVZJZXdGaWx0ZXJzU2VydmljZS5hY3Rpb25Gb3JtTGlzdCQuc3Vic2NyaWJlKChhY3Rpb25Gb3JtcykgPT4ge1xuICAgICAgdGhpcy5hY3Rpb25Gb3Jtcz1hY3Rpb25Gb3JtcztcbiAgICB9KVxuICAgIGNvbnNvbGUubG9nKHRoaXMuYWN0aW9uRm9ybXMpO1xuICAgIHRoaXMuX2FjdGl2YXRlZFJvdXRlLnBhcmFtcy5zdWJzY3JpYmUoXG4gICAgICAocGFyYW1zKSA9PiB7XG4gICAgICAgIHRoaXMuY29udGFpbmVySWQgPSBwYXJhbXMuYXBwQ29udGFpbmVySWQ7XG4gICAgICAgIGNvbnNvbGUubG9nKHRoaXMuY29udGFpbmVySWQpO1xuICAgICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0dGVyIGZvciBkYXRhVmlld1R5cGVcbiAgICovXG4gICBnZXQgZGF0YVZpZXdUeXBlKCl7XG4gICAgcmV0dXJuIERhdGFWaWV3VHlwZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXR0ZXIgZm9yIFZpZXcgVHlwZVxuICAgKi9cbiAgIGdldCBWaWV3VHlwZSgpe1xuICAgIHJldHVybiBWaWV3VHlwZTtcbiAgICB9XG4gICAvKlxuICAgICogZ2V0dGVyIGZvciBzY3JlZW5UeXBlc1xuICAgICovXG4gIHB1YmxpYyBnZXQgc2NyZWVuVHlwZXMoKTogdHlwZW9mIFNjcmVlblR5cGV7XG4gICAgcmV0dXJuIFNjcmVlblR5cGU7XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGUgY29tbW9uIGZpbHRlciBsaXN0IGZyb20gZXhpc3RpbmcgZmlsdGVycyBhbmQgY290ZWdvcmllcy5cbiAgICovXG4gIGdlbmVyYXRlQ29tbW9uRmlsdGVyTGlzdCgpOiB2b2lkIHtcbiAgICAvL0FkZCBmaWx0ZXJzIGluIHRoZSBjb21tb24gZmlsdGVycyBsaXN0XG4gICAgdGhpcy5maWx0ZXJzLmZvckVhY2goKGZpbHRlcikgPT4ge1xuICAgIC8vICAgZmlsdGVyLmdlbmVyYWxGaWx0ZXJUeXBlID0gR2VuZXJhbEZpbHRlclR5cGUuZmlsdGVycztcbiAgICAgIGlmICghdGhpcy5jb21tb25GaWx0ZXJBcnJheS5pbmNsdWRlcyhmaWx0ZXIpKSB7XG4gICAgICAgIHRoaXMuY29tbW9uRmlsdGVyQXJyYXkucHVzaChmaWx0ZXIpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy9BZGQgQ2F0ZWdvcmllcyBpbiB0aGUgY29tbW9uIGZpbHRlcnMgbGlzdFxuICAgIHRoaXMuY2F0ZWdvcmllcy5mb3JFYWNoKChjYXRlZ29yeSkgPT4ge1xuICAgICAgY2F0ZWdvcnkuZ2VuZXJhbEZpbHRlclR5cGUgPSBHZW5lcmFsRmlsdGVyVHlwZS5jYXRlZ29yeTtcbiAgICAgIGlmICghdGhpcy5jb21tb25GaWx0ZXJBcnJheS5pbmNsdWRlcyhjYXRlZ29yeSkpIHtcbiAgICAgICAgdGhpcy5jb21tb25GaWx0ZXJBcnJheS5wdXNoKGNhdGVnb3J5KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIHNvcnQgdGhlIGZpbHRlciBieSBvcmRlci5cbiAgICB0aGlzLmNvbW1vbkZpbHRlckFycmF5LnNvcnQoKGEsIGIpID0+IChhLmdyaWRQcm9wZXJ0aWVzLnggPiBiLmdyaWRQcm9wZXJ0aWVzLngpID8gMSA6ICgoYi5ncmlkUHJvcGVydGllcy54ID4gYS5ncmlkUHJvcGVydGllcy54KSA/IC0xIDogMCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgd2lsbCBnZXQgY2FsbGVkIG9uIE1hdFNlbGVjdGlvbiBDaGFuZ2VcbiAgICogV2UgZGVsZXRlIGZpbHRlciBpZiBpZiBkZXNlbGVjdCB3aWRnZXQgb3Igd2UgY3JlYXRlIG5ldyBmaWx0ZXIgaWYgc2VsZWN0IHdpZGdldC5cbiAgICpcbiAgICogQHBhcmFtIGV2ZW50XG4gICAqL1xuICBhZGRCYXNpY0ZpbHRlcihldmVudDogTWF0U2VsZWN0aW9uTGlzdENoYW5nZSxmb3JtOiBBeEZvcm0pOiB2b2lkIHtcbiAgICAvLyBBZGQgbmV3IGZpbHRlclxuICAgIGlmIChldmVudC5vcHRpb24uc2VsZWN0ZWQpIHtcbiAgICAgIGNvbnN0IHdpZGdldCA9IGV2ZW50Lm9wdGlvbi52YWx1ZTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRXaWRnZXQucHVzaCh3aWRnZXQuaWRlbnRpZmllcik7XG4gICAgICB0aGlzLnNob3dBcHBseUZpbHRlckV2ZW50ID0gIXRoaXMuc2hvd0FwcGx5RmlsdGVyRXZlbnQ7XG4gICAgICAvL2NyZWF0ZWQgbmV3IGZpbHRlciBieSB3aWRnZXRcbiAgICAgIGNvbnN0IGZpbHRlciA9IHRoaXMuX2RhdGFWSWV3RmlsdGVyU2VydmljZS5nZW5lcmF0ZUJhc2ljRmlsdGVyKFxuICAgICAgICB0aGlzLmFwcFZlcnNpb25JZCxcbiAgICAgICAgZXZlbnQsXG4gICAgICAgIHRoaXMuZmlsdGVycyxcbiAgICAgICAgU2NvcGVUeXBlLmdsb2JhbCxcbiAgICAgICAgdGhpcy5maWx0ZXJzLmxlbmd0aCxcbiAgICAgICAgZm9ybT8uZm9ybUlkXG4gICAgICApIGFzIERhdGFWaWV3RmlsdGVyO1xuICAgICAgICBmaWx0ZXIuZm9ybVR5cGUgPSBmb3JtLnR5cGU7XG4gICAgICBmaWx0ZXIuc2VhcmNoTm9kZXNbMF0uZXhwcmVzc2lvbi5maWVsZC5jaG9pY2VzID0gd2lkZ2V0LmNob2ljZXM7XG4gICAgICB0aGlzLmZpbHRlcnMucHVzaChmaWx0ZXIpO1xuICAgICAgdGhpcy5jb21tb25GaWx0ZXJBcnJheS5wdXNoKGZpbHRlcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vcmVtb3ZlIHNlbGVjdGVkIGZpbHRlclxuICAgICAgdGhpcy5zZWxlY3RlZFdpZGdldC5zcGxpY2UodGhpcy5zZWxlY3RlZFdpZGdldC5pbmRleE9mKGV2ZW50Lm9wdGlvbi52YWx1ZS5pZGVudGlmaWVyKSwxKTtcbiAgICAgIGNvbnN0IGZpbHRlciA9IHRoaXMuZ2V0RmlsdGVyRnJvbUxpc3QoZXZlbnQub3B0aW9uLnZhbHVlLmlkZW50aWZpZXIpO1xuICAgICAgdGhpcy5yZW1vdmVCYXNpY0ZpbHRlcihmaWx0ZXIpO1xuICAgIH1cblxuICB9XG4gIC8qKlxuICAgKiBBZGQgTWV0YSBDb2x1bW4gRmlsdGVyXG4gICAqXG4gICAqIEBwYXJhbSBldmVudFxuICAgKi9cbiAgYWRkTWV0YUNvbHVtbkZpbHRlcihldmVudDogTWF0U2VsZWN0aW9uTGlzdENoYW5nZSk6IHZvaWR7XG4gICAgaWYgKGV2ZW50Lm9wdGlvbi5zZWxlY3RlZCkge1xuICAgICAgY29uc3QgdmFsdWUgPSBldmVudC5vcHRpb24udmFsdWU7XG5cbiAgICAgIGNvbnN0IGZpbHRlciA9IHRoaXMuX2ZpbHRlclNlcnZpY2UuZ2VuZXJhdGVNZXRhQ29sdW1uRmlsdGVyKHZhbHVlLHRoaXMuYXBwVmVyc2lvbklkKSBhcyBEYXRhVmlld0ZpbHRlcjtcbiAgICAgIHRoaXMuZmlsdGVycy5wdXNoKGZpbHRlcik7XG4gICAgICB0aGlzLmNvbW1vbkZpbHRlckFycmF5LnB1c2goZmlsdGVyKTtcbiAgICAvLyAgIGZpbHRlci5mb3JtVHlwZSA9IHZhbHVlO1xuICAgIH1lbHNle1xuICAgICAgLy9yZW1vdmUgc2VsZWN0ZWQgZmlsdGVyXG4gICAgICB0aGlzLnNlbGVjdGVkV2lkZ2V0LnNwbGljZSh0aGlzLnNlbGVjdGVkV2lkZ2V0LmluZGV4T2YoZXZlbnQub3B0aW9uLnZhbHVlKSwxKTtcbiAgICAgIGNvbnN0IGZpbHRlciA9IHRoaXMuZ2V0RmlsdGVyRnJvbUxpc3QoZXZlbnQub3B0aW9uLnZhbHVlLmlkZW50aWZpZXIpO1xuICAgICAgdGhpcy5yZW1vdmVCYXNpY0ZpbHRlcihmaWx0ZXIpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgZmlsdGVyIGZyb20gZmlsdGVyIGFycmF5IGlmIGZpbHRlciBpcyBub3Qgc2F2ZWQgb3IgbWFyayBhcyBkZWxldGVkIGlmIGl0J3Mgc2F2ZWQuXG4gICAqXG4gICAqIEBwYXJhbSBmaWx0ZXJcbiAgICovXG4gIHJlbW92ZUJhc2ljRmlsdGVyKGZpbHRlcjogQXhGaWx0ZXIpOiB2b2lkIHtcbiAgICBpZihmaWx0ZXIuaWQgPT09IDApe1xuICAgICAgdGhpcy5maWx0ZXJzLnNwbGljZSh0aGlzLmZpbHRlcnMuaW5kZXhPZihmaWx0ZXIpLCAxKTtcbiAgICAgIHRoaXMuY29tbW9uRmlsdGVyQXJyYXkuc3BsaWNlKHRoaXMuY29tbW9uRmlsdGVyQXJyYXkuaW5kZXhPZihmaWx0ZXIpLCAxKTtcbiAgICB9ZWxzZXtcbiAgICAgIGZpbHRlci5pc0RlbGV0ZWQgPSB0cnVlO1xuICAgICAgZmlsdGVyLmlzU2VsZWN0ZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgZmlsdGVyIGJ5IHdpZGdldCBpZGVudGlmaWVyLlxuICAgKlxuICAgKiBAcGFyYW0gaWRlbnRpZmllclxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgZ2V0RmlsdGVyRnJvbUxpc3QoaWRlbnRpZmllcjogc3RyaW5nKTogQXhGaWx0ZXIge1xuICAgIGZvciAoY29uc3QgZmlsdGVyIG9mIHRoaXMuY29tbW9uRmlsdGVyQXJyYXkpIHtcbiAgICAgIGlmIChmaWx0ZXIuc2VhcmNoTm9kZXNbMF0uZXhwcmVzc2lvbi5maWVsZC5uYW1lID09PSBpZGVudGlmaWVyKVxuICAgICAgICB7cmV0dXJuIGZpbHRlcjt9O1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIFRoaXMgd2lsbCBnZXQgY2FsbGVkIGZyb20gZmlsdGVyIGNvbW1vbmVudCBvbiBmaWx0ZXIgZGVsZXRlLlxuICAgKlxuICAgKiBAcGFyYW0gaW5kZXhcbiAgICovXG4gIGRlbGV0ZUZpbHRlcihpbmRleDogbnVtYmVyKTogdm9pZHtcbiAgICBjb25zdCBmaWx0ZXIgPSB0aGlzLmNvbW1vbkZpbHRlckFycmF5W2luZGV4XTtcbiAgICB0aGlzLnNlbGVjdGVkV2lkZ2V0LnNwbGljZSh0aGlzLnNlbGVjdGVkV2lkZ2V0LmluZGV4T2YoZmlsdGVyLnNlYXJjaE5vZGVzWzBdLmV4cHJlc3Npb24uZmllbGQubmFtZSksMSk7XG4gICAgdGhpcy5yZW1vdmVCYXNpY0ZpbHRlcihmaWx0ZXIpO1xuICB9XG4gIGdldEZpbHRlcnNDb3VudCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5maWx0ZXJzLmZpbHRlcihmbCA9PiAhZmwuaXNEZWxldGVkKS5sZW5ndGggPiAwO1xuICB9XG5cbiAgICAvKipcbiAgICAgKiAgVmFsaWRhdGlvbiBvZiBlbWFpbCBpZCBmb3IgZXhwb3J0IG9mIHRhYnVsYXIgcmVwb3J0XG4gICAgICovXG5cbiAgICAgZW1haWxWYWxpZGF0ZSgpOiB2b2lkIHtcbiAgICAgIGNvbnN0IHJlZ2V4ID0gbmV3IFJlZ0V4cCh0aGlzLmVtYWlsUGF0dGVybik7XG4gICAgICB0aGlzLmRpc3BsYXlFbWFpbFZhbGlkYXRpb25FcnJvciA9ICFyZWdleC50ZXN0KHRoaXMuZXhwb3J0Rm9ybUJ1aWxkZXIudmFsdWVbJ2VtYWlsJ10pO1xuICAgICAgaWYgKHRoaXMuZGlzcGxheUVtYWlsVmFsaWRhdGlvbkVycm9yKSB7XG4gICAgICAgIHRoaXMuZGlzcGxheU5vdGlmaWNhdGlvbiA9IGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgICAgLyoqXG4gICAgICAgKiAgY2xvc2UgdGhlIGV4cG9ydCB0byBlbWFpbCBtZW51IG9uIGNsaWNrIG9mIGNhbmNlbFxuICAgICAgICovXG4gIGNsb3NlRXhwb3J0TWVudSgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbnRleHRNZW51LmNsb3NlTWVudSgpO1xuICAgIHRoaXMuZGlzcGxheU5vdGlmaWNhdGlvbiA9IGZhbHNlO1xuICB9XG5cbiAgIC8qKlxuICAgICogIGNhbGwgdGhpcyBmdW5jdGlvbiBmb3Igc2VuZCBlbWFpbCB3aXRoIGV4Y2VsIHJlcG9ydCBhcyBhdHRhY2htZW50XG4gICAgKi9cblxuICAgIHNlbmRFbWFpbCgpOiB2b2lkIHtcbiAgICAgIHRoaXMuZGlzcGxheU5vdGlmaWNhdGlvbiA9IGZhbHNlO1xuICAgICAgaWYgKCF0aGlzLmRpc3BsYXlFbWFpbFZhbGlkYXRpb25FcnJvcikge1xuICAgICAgICB0aGlzLmV4cG9ydERhdGEuZW1pdCh0aGlzLmV4cG9ydEZvcm1CdWlsZGVyLnZhbHVlWydlbWFpbCddKTtcbiAgICAgICAgdGhpcy5kaXNwbGF5Tm90aWZpY2F0aW9uPXRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT3BlbiBNYXQgbWVudSBvbiByaWdodCBjbGljayBvbiBhZGQgZmlsdGVyICBidXR0b24uXG4gICAgICogQHBhcmFtIGV2ZW50XG4gICAgICovXG4gICAgb3BlblByb3BlcnR5TWVudShldmVudDogUG9pbnRlckV2ZW50KTogdm9pZHtcbiAgICAgICAgaWYodGhpcy5zY3JlZW5UeXBlID09PSBTY3JlZW5UeXBlLmRhdGFWaWV3QnVpbGRlcil7XG4gICAgICAgICAgICB0aGlzLnByb3BlcnR5TWVudVRyaWdnZXIub3Blbk1lbnUoKTtcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBPcGVuIGdlbmVyYXRlIFFyIGRpYWxvZyBib3hcbiAgICAgKiBcbiAgICAgKi9cbiAgICBvcGVuR2VuZXJhdGVRckRpYWxvZyhmb3JtOiBBeEZvcm0pOiB2b2lkIHtcbiAgICAgIC8vIG9wZW4gZGlhbG9nXG4gICAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKEdlbmVyYXRlUVJDb21wb25lbnQsIHtcbiAgICAgICAgZGF0YTogZm9ybSxcbiAgICAgICAgd2lkdGg6ICczM3JlbScsXG4gICAgICAgIGhlaWdodDogJ2F1dG8nLFxuICAgICAgICBwYW5lbENsYXNzOiAnZ2VuZXJhdGUtcXItcGFuZWwtY2xhc3MnLFxuICAgICAgICAvL2RhdGE6IHRoaXMuY29udGFpbmVySWRcblxuICAgICAgfSk7XG5cbiAgICAgIC8vIHRoaXMgd2lsbCBnZXQgY2FsbGVkIGFmdGVyIGRpYWxvZyBjbG9zZWQuXG4gICAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xuICAgICAgICBjb25zb2xlLmxvZygnVGhlIGRpYWxvZyB3YXMgY2xvc2VkJyk7XG5cbiAgICAgIH0pO1xuXG5cbiAgICB9XG5cbiAgbmF2aWdhdGVUb0JpbGxpbmcoKTogdm9pZCB7XG4gICAgd2luZG93Lm9wZW4odGhpcy5jb21tb25MaWJDb25maWcuYnVpbGRlclVybCArICdwYXltZW50aW5mby9wcmljaW5nJywgJ19ibGFuaycpO1xuICB9XG5cbn1cbiIsIjxkaXYgY2xhc3M9XCJzdGlja3kgZGF0YS1saXN0LWZpbHRlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJkYXRhLXZpZXctZmlsdGVyLXdyYXBwZXJcIiBbbmdDbGFzc109XCJ7J3dpZHRoLWFmdGVyLWhpZGUtYnV0dG9uJzpzZWxlY3RlZFZpZXdUeXBlID09PSBWaWV3VHlwZS5NYXBWaWV3IHx8IHNlbGVjdGVkVmlld1R5cGUgPT09IFZpZXdUeXBlLkJvYXJkVmlldywnbm8tZmlsdGVyJzpmaWx0ZXJzLmxlbmd0aCA8PSAwfVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImFkZC1pY29uLWJ0blwiIFtuZ0NsYXNzXT1cInsnYm9yZGVyLXNlcGVyYXRvcic6IGdldEZpbHRlcnNDb3VudCgpfVwiPlxuICAgICAgICA8IS0tIFNob3cgaGlkZSBjb25kaXRpb24gZm9yIGNvbnRhaW5lci4gLS0+XG4gICAgICAgIDxidXR0b24gICpuZ0lmPVwic2NyZWVuVHlwZSA9PT0gc2NyZWVuVHlwZXMuZGF0YVZpZXdCdWlsZGVyIHx8IGRhdGFWaWV3cy5wcm9wZXJ0aWVzLnNob3dBZGRGaWx0ZXJCdXR0b25cIiAgY2xhc3M9XCJsaWdodC1ibHVlLWJ0biBheG8tZm9udFwiXG4gICAgICAgICAgIChjbGljayk9XCJmaWx0ZXJzTWVudVRyaWdnZXIub3Blbk1lbnUoKVwiIChjb250ZXh0bWVudSk9XCJvcGVuUHJvcGVydHlNZW51KCRldmVudClcIiA+XG4gICAgICAgICAgICArIEFkZCBGaWx0ZXJcbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPCEtLSBBZGQgRmlsdGVyIHByb3BlcnR5IE1lbnUuIHRoaXMgd2lsbCBnZXQgb3BlbmVkIG9uIHJpZ2h0IGNsaWNrICAtLT5cbiAgICAgICAgPGRpdiAjcHJvcGVydHlNZW51VHJpZ2dlcj1cIm1hdE1lbnVUcmlnZ2VyXCIgIFttYXRNZW51VHJpZ2dlckZvcl09XCJwcm9wZXJ0eU1lbnVcIj4gPC9kaXY+XG5cblxuICAgICAgICA8bWF0LW1lbnUgI3Byb3BlcnR5TWVudT1cIm1hdE1lbnVcIj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XCJcbiAgICAgICAgICAgIG1hdC1tZW51LWl0ZW1cbiAgICAgICAgICAgIGNsYXNzPVwiZmlsdGVyLXByb3BlcnRpZXMgbWVudS1idG5cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLXByb3BlcnR5XCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3R5bGUtdGl0bGVcIj5TaG93IE9uIENvbnRhaW5lcjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1zbGlkZS10b2dnbGUgWyhuZ01vZGVsKV09XCJkYXRhVmlld3MucHJvcGVydGllcy5zaG93QWRkRmlsdGVyQnV0dG9uXCI+PC9tYXQtc2xpZGUtdG9nZ2xlPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbWF0LW1lbnU+XG5cbiAgICAgICAgPCEtLSBGaWx0ZXIgbGlzdCBtZW51IC0tPlxuICAgICAgICA8ZGl2ICNmaWx0ZXJzTWVudVRyaWdnZXI9XCJtYXRNZW51VHJpZ2dlclwiICBbbWF0TWVudVRyaWdnZXJGb3JdPVwiZmlsdGVyc01lbnVcIj4gPC9kaXY+XG4gICAgICAgIDxtYXQtbWVudSAjZmlsdGVyc01lbnU9XCJtYXRNZW51XCIgeVBvc2l0aW9uPVwiYmVsb3dcIiBjbGFzcz1cImZpbHRlci1maWVsZC1saXN0XCIgPlxuICAgICAgICAgIDxkaXYgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncm91cCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBtYi0zXCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydqdXN0aWZ5LWJldHdlZW4gcHgtMi41JzogIXNob3dTZWFyY2hCb3h9XCI+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2hvd0ZpZWxkXCIgY2xhc3M9XCJ0ZXh0LWYgZm9udC1tZWRpdW1cIj5GaWVsZHM8L3NwYW4+XG5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIHNlYXJjaC1maWVsZFwiIFtuZ0NsYXNzXT1cInsnZ2xvYmFsLWJvcmRlciBweC0yLjUnIDogc2hvd1NlYXJjaEJveH1cIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCInc2hvd0ZpbHRlckRpdigpJ1wiPlxuICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIFtuZ0NsYXNzXT1cInsnc2VhcmNoLWljb24nIDogc2hvd1NlYXJjaEJveH1cIiBjbGFzcz1cIm10LTIgdGV4dC14cyBzZWFyY2gtaWNvbnNcIlxuICAgICAgICAgICAgICAgICAgICBbc3ZnSWNvbl09XCInaGVyb2ljb25zX3NvbGlkOnNlYXJjaCdcIj48L21hdC1pY29uPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgICAgICAgPCEtLSA8aW5wdXQgaWQ9XCJnbG9iYWwtZmllbGQtc2VhcmNoXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgcGxhY2Vob2xkZXI9XCJTZWFyY2guLi5cIiBbKG5nTW9kZWwpXT1cInNlYXJjaGVkVGVybVwiIG1hdElucHV0IGNsYXNzPVwic2VhcmNoLWJhciBjaGFydC10aXRsZVwiICBbc3R5bGUud2lkdGhdPVwiIXNob3dTZWFyY2hCb3ggPyAnMCcgOiAnMTAwJSdcIiAvPiAtLT5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24gKGNsaWNrKT1cImNsZWFyKClcIiAqbmdJZj1cInNob3dTZWFyY2hCb3hcIiBjbGFzcz1cImNsZWFyX2ljb24gY3Vyc29yLXBvaW50ZXIgdGV4dC1iYXNlXCI+Y2xlYXJcbiAgICAgICAgICAgICAgICA8L21hdC1pY29uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNhdGVnb3JpZXMubGVuZ3RoXCI+XG4gICAgICAgICAgICAgIDxkaXYgW25nQ2xhc3NdPVwieydmaWVsZC1jb250YWluZXInIDogc2hvd1NlYXJjaEJveH1cIiAqbmdJZj1cIihjYXRlZ29yaWVzIHwgc2VhcmNoOiBzZWFyY2hlZFRlcm0pPy5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJweC0yLjVcIiAqbmdJZj1cIihjYXRlZ29yaWVzIHwgc2VhcmNoOiBzZWFyY2hlZFRlcm0pPy5sZW5ndGhcIj5DYXRlZ29yeTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPG1hdC1zZWxlY3Rpb24tbGlzdCAjY2F0ZWdvcnk+XG4gICAgICAgICAgICAgICAgICA8bWF0LWxpc3Qtb3B0aW9uIGNoZWNrYm94UG9zaXRpb249XCJhZnRlclwiXG4gICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjYXRlZ29yeSBvZiBjYXRlZ29yaWVzfCBzZWFyY2g6IHNlYXJjaGVkVGVybTtsZXQgaT1pbmRleCBcIiBbdmFsdWVdPSdjYXRlZ29yeSdcbiAgICAgICAgICAgICAgICAgICAgWyhzZWxlY3RlZCldPVwiY2F0ZWdvcnkuaXNTZWxlY3RlZFwiIGNvbG9yPVwicHJpbWFyeVwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxpc3QtZmllbGRcIiBbbWF0VG9vbHRpcF09XCJjYXRlZ29yeS5uYW1lXCI+IHt7Y2F0ZWdvcnkubmFtZX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9tYXQtbGlzdC1vcHRpb24+XG4gICAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0aW9uLWxpc3Q+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8IS0tIEZvcm0gZmlsdGVycy4gLS0+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGRzLWRpdlwiICpuZ0Zvcj1cImxldCBfZm9ybSBvZiBmb3Jtc1wiPlxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJweC0yLjVcIj57e19mb3JtPy5uYW1lfX08L2xhYmVsPlxuICAgICAgICAgICAgICA8bWF0LXNlbGVjdGlvbi1saXN0IChzZWxlY3Rpb25DaGFuZ2UpPVwiYWRkQmFzaWNGaWx0ZXIoJGV2ZW50LF9mb3JtKVwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHdpZGdldCBvZiBfZm9ybT8ud2lkZ2V0c3wgc2VhcmNoOiBzZWFyY2hlZFRlcm1cIiA+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhdW5oYW5kbGVkV0lkZ2V0c0luRmlsdGVycy5pbmNsdWRlcyh3aWRnZXQudHlwZSkgJiYgIXVuaGFuZGxlZFdJZGdldFN1YlR5cGVzSW5GaWx0ZXJzLmluY2x1ZGVzKHdpZGdldC5zdWJUeXBlKSBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGlzdC1vcHRpb24gY2hlY2tib3hQb3NpdGlvbj1cImFmdGVyXCIgW3ZhbHVlXT0nd2lkZ2V0JyBbc2VsZWN0ZWRdPVwidGhpcy5zZWxlY3RlZFdpZGdldC5pbmRleE9mKHdpZGdldC5pZGVudGlmaWVyKSAhPT0gLTFcIiBjb2xvcj1cInByaW1hcnlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsaXN0LWZpZWxkXCIgW21hdFRvb2x0aXBdPVwid2lkZ2V0LnByb21wdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cInN2Zy1pY29uIG1yLTIgYWxpZ24tbWlkZGxlXCIgW3N2Z0ljb25dPVwid2lkZ2V0LndpZGdldEljb25cIj48L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7d2lkZ2V0LnByb21wdH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWxpc3Qtb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0aW9uLWxpc3Q+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPCEtLSBNZXRhIENvbHVtbiBGaWx0ZXJzIC0tPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkcy1kaXZcIiAqbmdJZj1cImRhdGFWaWV3cy50eXBlICE9PSBkYXRhVmlld1R5cGUuZm9ybURhdGFWaWV3XCIgPlxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInB4LTIuNVwiPk1ldGEgQ29sdW1uczwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPG1hdC1zZWxlY3Rpb24tbGlzdCAoc2VsZWN0aW9uQ2hhbmdlKT1cImFkZE1ldGFDb2x1bW5GaWx0ZXIoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgPG1hdC1saXN0LW9wdGlvbiBjaGVja2JveFBvc2l0aW9uPVwiYWZ0ZXJcIiAqbmdGb3I9XCJsZXQgbWV0YUNvbHVtbiBvZiBtZXRhQ29sdW1uc1wiXG4gICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09J21ldGFDb2x1bW4nIFtzZWxlY3RlZF09XCJ0aGlzLnNlbGVjdGVkV2lkZ2V0LmluZGV4T2YobWV0YUNvbHVtbikgIT09IC0xXCIgY29sb3I9XCJwcmltYXJ5XCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGlzdC1maWVsZFwiIFttYXRUb29sdGlwXT1cIm1ldGFDb2x1bW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJzdmctaWNvbiBtci0yIGFsaWduLW1pZGRsZVwiIFtzdmdJY29uXT1cIidheG9fc3F1YXJlX3RleHQnXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICB7e21ldGFDb2x1bW59fVxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L21hdC1saXN0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICA8L21hdC1zZWxlY3Rpb24tbGlzdD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbWF0LW1lbnU+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGZpbHRlcnMgY2xhc3M9XCJkYXRhLWxpc3QtZmlsdGVyLWNvbnRhaW5lclwiICBbZmlsdGVyc109XCJmaWx0ZXJzXCIgW2Zvcm1JZF09XCJmb3JtPy5mb3JtSWRcIlxuICAgICAgICBbY29tbW9uRmlsdGVyQXJyYXldPVwiY29tbW9uRmlsdGVyQXJyYXlcIiBbc2NyZWVuVHlwZV09XCJzY3JlZW5UeXBlXCIgW2NhdGVnb3JpZXNdPSdjYXRlZ29yaWVzJyBbYXBwVmVyc2lvbklkXT1cImFwcFZlcnNpb25JZFwiXG4gICAgICAgIFtzY29wZVR5cGVdPVwic2NvcGVUeXBlXCJcbiAgICAgICAgKGFwcGx5RmlsdGVyRW1pdCk9XCJhcHBseUZpbHRlckVtaXQuZW1pdCgkZXZlbnQpXCIgKHJlc2V0RmlsdGVyRW1pdCk9XCJyZXNldEZpbHRlckVtaXQuZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgKGRlbGV0ZUZpbHRlckVtaXQpPVwiZGVsZXRlRmlsdGVyKCRldmVudClcIlxuICAgICAgICBbc2hvd0FwcGx5RmlsdGVyRXZlbnRdPVwic2hvd0FwcGx5RmlsdGVyRXZlbnRcIlxuICAgICAgICBbbmdDbGFzc109XCJ7J2NvbnRhaW5lci1maWx0ZXItd2l0ZGgnOiAhZGF0YVZpZXdzLnByb3BlcnRpZXMuc2hvd0FkZEZpbHRlckJ1dHRvbn1cIj5cbiAgICAgIDwvZmlsdGVycz5cblxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImRhdGEtdmlldy1oZWFkZXItYnV0dG9uXCIgaWQ9XCJkYXRhLXZpZXctaGVhZGVyLWJ1dHRvblwiPlxuICAgICAgPCEtLUdlbmVyYXRlIFFSIGJ1dHRvbi0tPlxuICAgICAgPGJ1dHRvbiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAzMHB4O1wiICpuZ0lmPVwic2VsZWN0ZWRWaWV3VHlwZSA9PT0gVmlld1R5cGUuRGF0YUxpc3RWaWV3XCIgY2xhc3M9XCJkcm9wZG93bi1idXR0b24gYXhvLWZvbnRcIiAgbWF0LWljb24tYnV0dG9uIFttYXRNZW51VHJpZ2dlckZvcl09XCJxckNvZGVNZW51XCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiYnV0dG9uLXRleHQgYXhvLWZvbnRcIj5HZW5lcmF0ZSBRUjwvc3Bhbj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJkcm9wZG93bi1hcnJvd1wiPjwvc3Bhbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPG1hdC1tZW51ICNxckNvZGVNZW51PVwibWF0TWVudVwiPlxuICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKm5nRm9yPVwibGV0IGZvcm0gb2YgYWN0aW9uZm9ybXNcIiAoY2xpY2spPVwib3BlbkdlbmVyYXRlUXJEaWFsb2coZm9ybSlcIj57eyBmb3JtLm5hbWUgfX08L2J1dHRvbj5cbiAgICAgIDwvbWF0LW1lbnU+XG4gICAgICA8YnV0dG9uICpuZ0lmPVwiIGZvcm0gJiYgZm9ybS50eXBlID09PSBmb3JtVHlwZXMuYXNzZXQgJiYgc2VsZWN0ZWRWaWV3VHlwZSA9PT0gVmlld1R5cGUuRGF0YUxpc3RWaWV3XCIgY2xhc3M9XCJwcmltYXJ5LWJ0biBheG8tZm9udFwiIChjbGljayk9XCJhZGROZXdSZWNvcmQuZW1pdCgpXCI+IEFkZCBOZXcgUmVjb3JkPC9idXR0b24+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwibGluay1idG4gYXhvLWZvbnQgcmVmcmVzaC1idG5cIiAqbmdJZj1cInNob3dBc3NpZ25Ub0J1dHRvblwiKGNsaWNrKT1cImFzc2lnbi5lbWl0KClcIj5Bc3NpZ24gPC9idXR0b24+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwibGluay1idG4gYXhvLWZvbnQgcmVmcmVzaC1idG5cIiAoY2xpY2spPVwicmVmcmVzaERhdGEuZW1pdCgpXCI+UmVmcmVzaCBEYXRhPC9idXR0b24+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgaWNvbi1idG5cIiBbbWF0TWVudVRyaWdnZXJGb3JdPVwiYmVmb3JlTWVudVwiPjxtYXQtaWNvbiBtYXRUb29sdGlwPVwiRXhwb3J0IERhdGFcIlxuICAgICAgICAgIHN2Z0ljb249XCJheG9fZXhwb3J0XCI+PC9tYXQtaWNvbj48L2J1dHRvbj5cbiAgICBcbiAgICAgIDwhLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cbiAgICBcbiAgICAgIDwhLS0gY29udGV4dCBtZW51IHRvIHNob3cgZm9ybSB0byBnZXQgdXNlckVtYWlsIElkIHRvIGdldCB1c2VyRW1haWwgZm9yIGV4Y2VsIEV4cG9ydCAtLT5cbiAgICAgIDxtYXQtbWVudSAjYmVmb3JlTWVudT1cIm1hdE1lbnVcIiB4UG9zaXRpb249XCJiZWZvcmVcIj5cbiAgICAgICAgPCEtLSBTaG93IHRoZSBleHBvcnQgc2VjdGlvbiBpZiBhY2NvdW50IHN0YXR1cyBpcyBhY3RpdmUgLS0+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJpc0FjY291bnRTdGF0dXNBY3RpdmVcIiBjbGFzcz1cInNlbmQtZXhjZWwtcmVwb3J0LWZvcm1cIj5cbiAgICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImV4cG9ydEZvcm1CdWlsZGVyXCI+XG4gICAgICAgICAgICA8ZGl2PlhMU1g8L2Rpdj5cbiAgICAgICAgICAgIDxpbnB1dCBtYXQtbWVudS1pdGVtIHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJyZXBvcnQteHNseC1lbWFpbFwiIGZvcm1Db250cm9sTmFtZT1cImVtYWlsXCJcbiAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiZW1haWxWYWxpZGF0ZSgpXCI+XG4gICAgICAgICAgICA8cCAqbmdJZj1cImRpc3BsYXlFbWFpbFZhbGlkYXRpb25FcnJvclwiIGNsYXNzPVwiZW1haWwtc2VuZC1lbWFpbC1lcnJvclwiPlBsZWFzZSBwcm92aWRlIGEgdmFsaWQgZW1haWwgSUQ8L3A+XG4gICAgICAgICAgICA8cCAqbmdJZj1cImRpc3BsYXlOb3RpZmljYXRpb25cIiBjbGFzcz1cImVtYWlsLXNlbmQtbm90aWZpY2F0aW9uXCI+RXhwb3J0IGlzIGluIHByb2dyZXNzLiBZb3Ugd2lsbCByZWNlaXZlIHRoZVxuICAgICAgICAgICAgICByZXBvcnQgb24geW91ciBlbWFpbCBvbmNlIGNvbXBsZXRlZC48L3A+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VuZC1leGNlbC1yZXBvcnQtZm9ybS1idG5cIj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNhbmNlbC1idG4gYnRuXCIgKGNsaWNrKT1cImNsb3NlRXhwb3J0TWVudSgpO1wiPkNhbmNlbDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwic2VuZC1idG4gYnRuXCIgKGNsaWNrKT1cInNlbmRFbWFpbCgpOyRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc3BsYXlFbWFpbFZhbGlkYXRpb25FcnJvclwiPkV4cG9ydCA8bWF0LWljb24+c2VuZDwvbWF0LWljb24+PC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Zvcm0+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8IS0tIFNob3cgdGhlIHVwZ3JhZGUgc2VjdGlvbiBpZiBhY2NvdW50IHN0YXR1cyBpcyBub3QgYWN0aXZlIC0tPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiIWlzQWNjb3VudFN0YXR1c0FjdGl2ZVwiIGNsYXNzPVwidXBncmFkZS1zZWN0aW9uXCI+XG4gICAgICAgICAgVG8gZXhwb3J0IGRhdGEsIHBsZWFzZSBzdWJzY3JpYmUgdG8gYSBwbGFuIGZpcnN0Ljxicj48YnI+XG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInVwZ3JhZGUtYnRuIGJ0blwiIChjbGljayk9XCJuYXZpZ2F0ZVRvQmlsbGluZygpXCI+VXBncmFkZTwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbWF0LW1lbnU+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
795
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS12aWV3LWZpbHRlcnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2F4LWNvbW1vbi11aS1saWIvc3JjL2xpYi9kYXRhLXZpZXctbGliL2RhdGEtdmlldy1maWx0ZXJzL2RhdGEtdmlldy1maWx0ZXJzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9heC1jb21tb24tdWktbGliL3NyYy9saWIvZGF0YS12aWV3LWxpYi9kYXRhLXZpZXctZmlsdGVycy9kYXRhLXZpZXctZmlsdGVycy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUUxSCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNwRCxPQUFPLEVBQWlCLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBaUIsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNJLE9BQU8sRUFBRSxXQUFXLEVBQWEsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFcEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXhELE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFFbkYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saURBQWlELENBQUM7QUFDcEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QyxPQUFP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ZWRXSWRnZXRzSW5GaWx0ZXJzLCBVbmhhbmRsZWRXSWRnZXRTdWJUeXBlc0luRmlsdGVycyB9IGZyb20gJy4vLi4vLi4vZW5saWdodGVuLWxpYi9maWx0ZXJzL3N0YXRpYy13aWRnZXQnO1xuaW1wb3J0IHsgRGF0YVZpZXdGaWx0ZXIgfSBmcm9tICcuLy4uL2RhdGEtdmlldy9kYXRhLXZpZXctZmlsdGVyJztcbmltcG9ydCB7IEZvcm1UeXBlIH0gZnJvbSAnLi8uLi8uLi9mb3Jtcy9wYWdlL2NvbW1vbi93aWRnZXQtZW51bXMnO1xuaW1wb3J0IHsgRmlsdGVyc1NlcnZpY2UgfSBmcm9tICcuLy4uLy4uL2ZpbHRlcnMvZmlsdGVycy5zZXJ2aWNlJztcbmltcG9ydCB7IERhdGFWaWV3IH0gZnJvbSAnLi8uLi9kYXRhLXZpZXcvZGF0YS12aWV3JztcbmltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMsIFZpZXdDaGlsZCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRTZWxlY3Rpb25MaXN0Q2hhbmdlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGlzdCc7XG5pbXBvcnQgeyBNYXRNZW51VHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xuaW1wb3J0IHsgQXhGaWx0ZXIgfSBmcm9tICcuLi8uLi9lbmxpZ2h0ZW4tbGliL2ZpbHRlcnMvYXgtZmlsdGVyJztcbmltcG9ydCB7IFNjb3BlVHlwZSwgU2NyZWVuVHlwZSB9IGZyb20gJy4uLy4uL2VubGlnaHRlbi1saWIvZmlsdGVycy9jb25kaXRpb24tdHlwZSc7XG5pbXBvcnQgeyBGaWx0ZXJDYXRlZ29yeSB9IGZyb20gJy4uLy4uL2VubGlnaHRlbi1saWIvZmlsdGVycy9maWx0ZXItY2F0ZWdvcnknO1xuaW1wb3J0IHsgR2VuZXJhbEZpbHRlclR5cGUgfSBmcm9tICcuLi8uLi9lbmxpZ2h0ZW4tbGliL2ZpbHRlcnMvZ2VuZXJhbC1maWx0ZXItdHlwZSc7XG5pbXBvcnQgeyBNZXRhQ29sdW1uVHlwZXMgfSBmcm9tICcuLi8uLi9maWx0ZXJzL21ldGFDb2x1bW5UeXBlcyc7XG5pbXBvcnQgeyBBeEZvcm0gfSBmcm9tICcuLi8uLi9mb3Jtcy9heC1mb3JtJztcbmltcG9ydCB7IERhdGFWaWV3U2VydmljZSB9IGZyb20gJy4uL2RhdGEtdmlldy5zZXJ2aWNlJztcbmltcG9ydCB7IERhdGFWaWV3VHlwZSwgVmlld1R5cGUgfSBmcm9tICcuLi9kYXRhLXZpZXcvZGF0YS12aWV3LWVudW1zJztcbmltcG9ydCB7IERhdGFWaWV3RmlsdGVyc1NlcnZpY2UgfSBmcm9tICcuL2RhdGEtdmlldy1maWx0ZXJzLnNlcnZpY2UnO1xuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEdlbmVyYXRlUVJDb21wb25lbnQgfSBmcm9tICcuL2dlbmVyYXRlLXFyL2dlbmVyYXRlLXFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBVc2VyRGF0YVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9wdWJsaWMtYXBpJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBDb21tb25MaWJDb25maWd1cmF0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3B1YmxpYy1hcGknO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItZGF0YS12aWV3LWZpbHRlcnMnLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0YS12aWV3LWZpbHRlcnMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kYXRhLXZpZXctZmlsdGVycy5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIERhdGFWaWV3RmlsdGVyc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCxBZnRlclZpZXdJbml0IHtcbiAgLy88LS0tLS0tKCBJbnB1dHMgKSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPlxuICBASW5wdXQoKSBmb3JtOiBBeEZvcm07XG4gIEBJbnB1dCgpIGZpbHRlcnM6IEFycmF5PEF4RmlsdGVyPjtcbiAgQElucHV0KCkgY2F0ZWdvcmllczogQXJyYXk8RmlsdGVyQ2F0ZWdvcnk+ID0gW107XG4gIEBJbnB1dCgpIGlzRWRpdGFibGU6IGJvb2xlYW47XG4gIEBJbnB1dCgpIHNjcmVlblR5cGU6IFNjcmVlblR5cGU7XG4gIEBJbnB1dCgpIGFwcFZlcnNpb25JZDogbnVtYmVyO1xuICBASW5wdXQoKSBzZWxlY3RlZFZpZXdUeXBlOiBWaWV3VHlwZTtcbiAgQElucHV0KCkgdXNlckVtYWlsOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGRhdGFWaWV3czogRGF0YVZpZXc7XG4gIEBJbnB1dCgpIHNob3dBc3NpZ25Ub0J1dHRvbjogYm9vbGVhbiA9IGZhbHNlO1xuICAvLzwtLS0tLS0tLS0tLS0tKG91dHB1dHMpIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgQE91dHB1dCgpIGRpcnR5Rmxvd0NoZWNrRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIGFwcGx5RmlsdGVyRW1pdCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgcmVzZXRGaWx0ZXJFbWl0ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBjbGVhckZpbHRlckVtaXQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIGFkZE5ld1JlY29yZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgZ2VuZXJhdGVRUiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgcmVmcmVzaERhdGEgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIGFzc2lnbiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgZXhwb3J0RGF0YSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICAvLzwtLS0tLS0tLS0tLS0tLShDaGlsZCBlbGVtZW50IGFjY2VzcyktLS0tLS0tLS0tLS0tPlxuICBAVmlld0NoaWxkKE1hdE1lbnVUcmlnZ2VyKSBjb250ZXh0TWVudTogTWF0TWVudVRyaWdnZXI7XG4gIEBWaWV3Q2hpbGQoJ3Byb3BlcnR5TWVudVRyaWdnZXInKSBwcm9wZXJ0eU1lbnVUcmlnZ2VyOiBNYXRNZW51VHJpZ2dlcjtcbiAgLy88LS0tLS0tLS0tLS0tLS0tLSggQ29tcG9uZW50IFZhcmlhYmxlcyktLS0tLS0tLS0tLS0tPlxuICBzY29wZVR5cGUgPSAyO1xuICBzaG93U2VhcmNoQm94OiBib29sZWFuID0gZmFsc2U7XG4gIHNob3dGaWVsZDogYm9vbGVhbiA9IHRydWU7XG4gIHRpdGxlVmFsdWU6IHN0cmluZyA9ICcnO1xuICBzZWFyY2hlZFRlcm06IHN0cmluZyA9ICcnOztcbiAgc2hvd0FwcGx5RmlsdGVyRXZlbnQ6IGJvb2xlYW4gPSB0cnVlO1xuICBmb3JtSWQ6IHN0cmluZztcbiAgc2VsZWN0ZWRXaWRnZXQ6IEFycmF5PHN0cmluZz4gPSBbXTtcbiAgY29tbW9uRmlsdGVyQXJyYXk6IEFycmF5PGFueT4gPSBbXTtcbiAgZXhwb3J0Rm9ybUJ1aWxkZXI6IEZvcm1Hcm91cDtcbiAgZGlzcGxheU5vdGlmaWNhdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xuICBlbWFpbFBhdHRlcm46IHN0cmluZyA9ICdeW2EtejAtOS5fJSstXStAW2EtejAtOS4tXStcXC5bYS16XXsyLDR9JCc7XG4gIGRpc3BsYXlFbWFpbFZhbGlkYXRpb25FcnJvcjogYm9vbGVhbiA9IGZhbHNlO1xuICBmb3JtczogQXJyYXk8QXhGb3JtPiA9IFtdO1xuICBvYnM6IFJlc2l6ZU9ic2VydmVyO1xuICBtZXRhQ29sdW1uczogQXJyYXk8TWV0YUNvbHVtblR5cGVzPiA9IFtNZXRhQ29sdW1uVHlwZXMudGFza1N0YXR1cyxNZXRhQ29sdW1uVHlwZXMudGFza0Fzc2lnbmVkVG8sTWV0YUNvbHVtblR5cGVzLnRhc2tDcmVhdGVkRGF0ZV07XG4gIHVuaGFuZGxlZFdJZGdldHNJbkZpbHRlcnM9IFVuaGFuZGxlZFdJZGdldHNJbkZpbHRlcnM7XG4gIHVuaGFuZGxlZFdJZGdldFN1YlR5cGVzSW5GaWx0ZXJzID0gVW5oYW5kbGVkV0lkZ2V0U3ViVHlwZXNJbkZpbHRlcnM7XG4gIGFjdGlvbkZvcm1zOiBBcnJheTxBeEZvcm0+ID0gW107XG4gIGFjdGlvbnM6YW55O1xuICBhY3Rpb25mb3JtcyA9IFtdO1xuICBjb250YWluZXJJZDogbnVtYmVyO1xuICBpc0FjY291bnRTdGF0dXNBY3RpdmU6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RvclxuICAgKlxuICAgKiBAcGFyYW0gX2RhdGFWSWV3RmlsdGVyU2VydmljZVxuICAgKiBAcGFyYW0gX2Zvcm1CdWlsZGVyXG4gICAqL1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9kYXRhVklld0ZpbHRlclNlcnZpY2U6IERhdGFWaWV3RmlsdGVyc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBfZGF0YVZJZXdGaWx0ZXJzU2VydmljZTogRGF0YVZpZXdGaWx0ZXJzU2VydmljZSxcbiAgICBwcml2YXRlIF9kYXRhVmlld1NlcnZpY2U6IERhdGFWaWV3U2VydmljZSxcbiAgICBwcml2YXRlIF9mb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSBfZmlsdGVyU2VydmljZTogRmlsdGVyc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBfdXNlckRhdGFTZXJ2aWNlOiBVc2VyRGF0YVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBfcm91dGVyOiBSb3V0ZXIsXG4gICAgcHVibGljIGRpYWxvZzogTWF0RGlhbG9nLFxuICAgIHByaXZhdGUgX2FjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIGNvbW1vbkxpYkNvbmZpZzogQ29tbW9uTGliQ29uZmlndXJhdGlvblNlcnZpY2VcbiAgKSB7IFxuICAgIHRoaXMuYXBwVmVyc2lvbklkPUpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2FwcFZlcnNpb25JZCcpKTtcbiAgICB0aGlzLl9kYXRhVklld0ZpbHRlcnNTZXJ2aWNlLmdldEFjdGlvbkZvcm1MaXN0KHRoaXMuYXBwVmVyc2lvbklkKS5zdWJzY3JpYmUoKGRhdGEpID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKFwiZGF0YVwiLCBkYXRhKTtcbiAgICAgIGRhdGEuYWZsLmFmcy5maWx0ZXIoZm9ybSA9PiBmb3JtLmZ0ID09PSAnVCcgJiYgZm9ybS5mc3QgPT09ICdBJykuZm9yRWFjaChmb3JtID0+IHtcbiAgICAgICAgY29uc3QgYXhmb3JtID0gbmV3IEF4Rm9ybSgpO1xuICAgICAgICBheGZvcm0uZm9ybUlkID0gZm9ybS5maWQ7XG4gICAgICAgIGF4Zm9ybS5uYW1lID0gZm9ybS5mbjtcbiAgICAgICAgYXhmb3JtLmljb24gPSBmb3JtLmZpO1xuICAgICAgICBheGZvcm0uc3RhdHVzID0gZm9ybS5mc3Q7XG4gICAgICAgIGF4Zm9ybS50eXBlID0gZm9ybS5mdDtcbiAgICAgICAgdGhpcy5hY3Rpb25mb3Jtcy5wdXNoKGF4Zm9ybSk7XG4gICAgfSk7XG5cbiAgICAgIGNvbnNvbGUubG9nKFwiRmlsdGVyZWQgZm9ybXM6XCIsIHRoaXMuYWN0aW9uZm9ybXMpO1xuICAgIH0pO1xuICB9XG5cbiAgc2hvd092ZXJsYXk6Ym9vbGVhbiA9IGZhbHNlOyAvLyBCb29sZWFuIHByb3BlcnR5IHRvIGNvbnRyb2wgb3ZlcmxheSB2aXNpYmlsaXR5XG4gIFxuICB0b2dnbGVPdmVybGF5KCkgeyAgICAgICAgICAgIC8vIE1ldGhvZCB0byB0b2dnbGUgb3ZlcmxheSB2aXNpYmlsaXR5XG4gICAgdGhpcy5zaG93T3ZlcmxheSA9ICF0aGlzLnNob3dPdmVybGF5O1xuICB9XG4gIGNsb3NlKCk6IHZvaWR7XG4gICAgdGhpcy5zaG93T3ZlcmxheSA9ICF0aGlzLnNob3dPdmVybGF5O1xuICB9XG5cblxuICBnZXQgZm9ybVR5cGVzKCk6IHR5cGVvZiBGb3JtVHlwZSB7XG4gICAgcmV0dXJuIEZvcm1UeXBlO1xuICB9XG4gIC8qKlxuICAgKiBPbiBpbml0IGxpZmUgY3ljbGUgaG9va1xuICAgKi9cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5leHBvcnRGb3JtQnVpbGRlciA9IHRoaXMuX2Zvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgIGVtYWlsOiBbdGhpcy51c2VyRW1haWwsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLmVtYWlsXV1cbiAgICB9KTtcbiAgICB0aGlzLl91c2VyRGF0YVNlcnZpY2UuaXNBY2NvdW50U3RhdHVzQWN0aXZlJC5zdWJzY3JpYmUoKHJlc3BvbnNlKSA9PiB7XG4gICAgICBkZWJ1Z2dlcjtcbiAgICAgIHRoaXMuaXNBY2NvdW50U3RhdHVzQWN0aXZlID0gcmVzcG9uc2U7XG4gICAgICBhbGVydCh0aGlzLmlzQWNjb3VudFN0YXR1c0FjdGl2ZSk7XG4gICAgICBjb25zb2xlLmxvZyhcIkFjY291bnQgU3RhdHVzOlwiLHRoaXMuaXNBY2NvdW50U3RhdHVzQWN0aXZlKTtcbiAgICB9KTtcbiAgfVxuICBuZ0FmdGVyVmlld0luaXQoKXtcbiAgICB0aGlzLm9icyA9IG5ldyBSZXNpemVPYnNlcnZlcigoKSA9PiB7XG4gICAgICAvKiogZ2V0IHdpZHRoIG9mIGZpbHRlciBidXR0b25zIHdycmFwZXIgKi9cbiAgICAgIGNvbnN0IG51bWJlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkYXRhLXZpZXctaGVhZGVyLWJ1dHRvbicpPy5jbGllbnRXaWR0aCsncHgnO1xuICAgICAgLyoqU2V0IHdpZHRoIG9mIGNzcyB2YXJpYWJsZSAqL1xuICAgICAgaWYobnVtYmVyKVxuICAgICAgICAgIHtkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tYnV0dG9uc1dhcnJhcGVyV2lkdGgnLCBudW1iZXIpO31cbiAgICB9KTtcbiAgICB0aGlzLm9icy5vYnNlcnZlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkYXRhLXZpZXctaGVhZGVyLWJ1dHRvbicpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPbiBjaGFuZ2VzIGxpZmUgY3ljbGUgaG9vay5cbiAgICovXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAvKiogZ2V0IHdpZHRoIG9mIGZpbHRlciBidXR0b25zIHdycmFwZXIgKi9cbiAgICBpZiAodGhpcy5vYnMpIHtcbiAgICAgIGNvbnN0IG51bWJlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkYXRhLXZpZXctaGVhZGVyLWJ1dHRvbicpLmNsaWVudFdpZHRoKydweCc7XG4gICAgICAvKipTZXQgd2lkdGggb2YgY3NzIHZhcmlhYmxlICovXG4gICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tYnV0dG9uc1dhcnJhcGVyV2lkdGgnLCBudW1iZXIpO1xuICAgICAgdGhpcy5vYnMub2JzZXJ2ZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGF0YS12aWV3LWhlYWRlci1idXR0b24nKSk7XG4gICAgICB9XG4gICAgaWYgKGNoYW5nZXMuZGF0YVZpZXdzKSB7XG4gICAgICB0aGlzLmZvcm1zID0gW107XG4gICAgICB0aGlzLmNvbW1vbkZpbHRlckFycmF5ID0gW107XG4gICAgICB0aGlzLmdlbmVyYXRlQ29tbW9uRmlsdGVyTGlzdCgpO1xuICAgICAgdGhpcy5zZWxlY3RlZFdpZGdldCA9IFtdO1xuICAgICAgaWYodGhpcy5kYXRhVmlld3MudHlwZSAhPT0gRGF0YVZpZXdUeXBlLmdlbmVyaWNUYXNrVmlldyl7XG4gICAgICAgIHRoaXMuZm9ybXMucHVzaCh0aGlzLmZvcm0pO1xuICAgICAgICBpZih0aGlzLmZvcm0udHJhY2tlZEFzc2V0SWQpe1xuICAgICAgICAgICAgdGhpcy5fZGF0YVZpZXdTZXJ2aWNlLmdldEZvcm1EZXRhaWxzKHRoaXMuZm9ybS50cmFja2VkQXNzZXRJZCkudGhlbigoX2Zvcm0pPT57XG4gICAgICAgICAgICAgICAgdGhpcy5mb3Jtcy5wdXNoKF9mb3JtKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBTdWJzY3JpYmVycyBzaG91bGQgYmUgaW1wbGVtZW50ZWQgaGVyZVxuICAgKi9cbiAgc3Vic2NyaWJlcnMoKSB7XG4gICAgdGhpcy5fZGF0YVZJZXdGaWx0ZXJzU2VydmljZS5nZXRBY3Rpb25Gb3JtTGlzdCh0aGlzLmFwcFZlcnNpb25JZCk7XG4gICAgdGhpcy5fZGF0YVZJZXdGaWx0ZXJzU2VydmljZS5hY3Rpb25Gb3JtTGlzdCQuc3Vic2NyaWJlKChhY3Rpb25Gb3JtcykgPT4ge1xuICAgICAgdGhpcy5hY3Rpb25Gb3Jtcz1hY3Rpb25Gb3JtcztcbiAgICB9KVxuICAgIGNvbnNvbGUubG9nKHRoaXMuYWN0aW9uRm9ybXMpO1xuICAgIHRoaXMuX2FjdGl2YXRlZFJvdXRlLnBhcmFtcy5zdWJzY3JpYmUoXG4gICAgICAocGFyYW1zKSA9PiB7XG4gICAgICAgIHRoaXMuY29udGFpbmVySWQgPSBwYXJhbXMuYXBwQ29udGFpbmVySWQ7XG4gICAgICAgIGNvbnNvbGUubG9nKHRoaXMuY29udGFpbmVySWQpO1xuICAgICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0dGVyIGZvciBkYXRhVmlld1R5cGVcbiAgICovXG4gICBnZXQgZGF0YVZpZXdUeXBlKCl7XG4gICAgcmV0dXJuIERhdGFWaWV3VHlwZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXR0ZXIgZm9yIFZpZXcgVHlwZVxuICAgKi9cbiAgIGdldCBWaWV3VHlwZSgpe1xuICAgIHJldHVybiBWaWV3VHlwZTtcbiAgICB9XG4gICAvKlxuICAgICogZ2V0dGVyIGZvciBzY3JlZW5UeXBlc1xuICAgICovXG4gIHB1YmxpYyBnZXQgc2NyZWVuVHlwZXMoKTogdHlwZW9mIFNjcmVlblR5cGV7XG4gICAgcmV0dXJuIFNjcmVlblR5cGU7XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGUgY29tbW9uIGZpbHRlciBsaXN0IGZyb20gZXhpc3RpbmcgZmlsdGVycyBhbmQgY290ZWdvcmllcy5cbiAgICovXG4gIGdlbmVyYXRlQ29tbW9uRmlsdGVyTGlzdCgpOiB2b2lkIHtcbiAgICAvL0FkZCBmaWx0ZXJzIGluIHRoZSBjb21tb24gZmlsdGVycyBsaXN0XG4gICAgdGhpcy5maWx0ZXJzLmZvckVhY2goKGZpbHRlcikgPT4ge1xuICAgIC8vICAgZmlsdGVyLmdlbmVyYWxGaWx0ZXJUeXBlID0gR2VuZXJhbEZpbHRlclR5cGUuZmlsdGVycztcbiAgICAgIGlmICghdGhpcy5jb21tb25GaWx0ZXJBcnJheS5pbmNsdWRlcyhmaWx0ZXIpKSB7XG4gICAgICAgIHRoaXMuY29tbW9uRmlsdGVyQXJyYXkucHVzaChmaWx0ZXIpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy9BZGQgQ2F0ZWdvcmllcyBpbiB0aGUgY29tbW9uIGZpbHRlcnMgbGlzdFxuICAgIHRoaXMuY2F0ZWdvcmllcy5mb3JFYWNoKChjYXRlZ29yeSkgPT4ge1xuICAgICAgY2F0ZWdvcnkuZ2VuZXJhbEZpbHRlclR5cGUgPSBHZW5lcmFsRmlsdGVyVHlwZS5jYXRlZ29yeTtcbiAgICAgIGlmICghdGhpcy5jb21tb25GaWx0ZXJBcnJheS5pbmNsdWRlcyhjYXRlZ29yeSkpIHtcbiAgICAgICAgdGhpcy5jb21tb25GaWx0ZXJBcnJheS5wdXNoKGNhdGVnb3J5KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIHNvcnQgdGhlIGZpbHRlciBieSBvcmRlci5cbiAgICB0aGlzLmNvbW1vbkZpbHRlckFycmF5LnNvcnQoKGEsIGIpID0+IChhLmdyaWRQcm9wZXJ0aWVzLnggPiBiLmdyaWRQcm9wZXJ0aWVzLngpID8gMSA6ICgoYi5ncmlkUHJvcGVydGllcy54ID4gYS5ncmlkUHJvcGVydGllcy54KSA/IC0xIDogMCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgd2lsbCBnZXQgY2FsbGVkIG9uIE1hdFNlbGVjdGlvbiBDaGFuZ2VcbiAgICogV2UgZGVsZXRlIGZpbHRlciBpZiBpZiBkZXNlbGVjdCB3aWRnZXQgb3Igd2UgY3JlYXRlIG5ldyBmaWx0ZXIgaWYgc2VsZWN0IHdpZGdldC5cbiAgICpcbiAgICogQHBhcmFtIGV2ZW50XG4gICAqL1xuICBhZGRCYXNpY0ZpbHRlcihldmVudDogTWF0U2VsZWN0aW9uTGlzdENoYW5nZSxmb3JtOiBBeEZvcm0pOiB2b2lkIHtcbiAgICAvLyBBZGQgbmV3IGZpbHRlclxuICAgIGlmIChldmVudC5vcHRpb24uc2VsZWN0ZWQpIHtcbiAgICAgIGNvbnN0IHdpZGdldCA9IGV2ZW50Lm9wdGlvbi52YWx1ZTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRXaWRnZXQucHVzaCh3aWRnZXQuaWRlbnRpZmllcik7XG4gICAgICB0aGlzLnNob3dBcHBseUZpbHRlckV2ZW50ID0gIXRoaXMuc2hvd0FwcGx5RmlsdGVyRXZlbnQ7XG4gICAgICAvL2NyZWF0ZWQgbmV3IGZpbHRlciBieSB3aWRnZXRcbiAgICAgIGNvbnN0IGZpbHRlciA9IHRoaXMuX2RhdGFWSWV3RmlsdGVyU2VydmljZS5nZW5lcmF0ZUJhc2ljRmlsdGVyKFxuICAgICAgICB0aGlzLmFwcFZlcnNpb25JZCxcbiAgICAgICAgZXZlbnQsXG4gICAgICAgIHRoaXMuZmlsdGVycyxcbiAgICAgICAgU2NvcGVUeXBlLmdsb2JhbCxcbiAgICAgICAgdGhpcy5maWx0ZXJzLmxlbmd0aCxcbiAgICAgICAgZm9ybT8uZm9ybUlkXG4gICAgICApIGFzIERhdGFWaWV3RmlsdGVyO1xuICAgICAgICBmaWx0ZXIuZm9ybVR5cGUgPSBmb3JtLnR5cGU7XG4gICAgICBmaWx0ZXIuc2VhcmNoTm9kZXNbMF0uZXhwcmVzc2lvbi5maWVsZC5jaG9pY2VzID0gd2lkZ2V0LmNob2ljZXM7XG4gICAgICB0aGlzLmZpbHRlcnMucHVzaChmaWx0ZXIpO1xuICAgICAgdGhpcy5jb21tb25GaWx0ZXJBcnJheS5wdXNoKGZpbHRlcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vcmVtb3ZlIHNlbGVjdGVkIGZpbHRlclxuICAgICAgdGhpcy5zZWxlY3RlZFdpZGdldC5zcGxpY2UodGhpcy5zZWxlY3RlZFdpZGdldC5pbmRleE9mKGV2ZW50Lm9wdGlvbi52YWx1ZS5pZGVudGlmaWVyKSwxKTtcbiAgICAgIGNvbnN0IGZpbHRlciA9IHRoaXMuZ2V0RmlsdGVyRnJvbUxpc3QoZXZlbnQub3B0aW9uLnZhbHVlLmlkZW50aWZpZXIpO1xuICAgICAgdGhpcy5yZW1vdmVCYXNpY0ZpbHRlcihmaWx0ZXIpO1xuICAgIH1cblxuICB9XG4gIC8qKlxuICAgKiBBZGQgTWV0YSBDb2x1bW4gRmlsdGVyXG4gICAqXG4gICAqIEBwYXJhbSBldmVudFxuICAgKi9cbiAgYWRkTWV0YUNvbHVtbkZpbHRlcihldmVudDogTWF0U2VsZWN0aW9uTGlzdENoYW5nZSk6IHZvaWR7XG4gICAgaWYgKGV2ZW50Lm9wdGlvbi5zZWxlY3RlZCkge1xuICAgICAgY29uc3QgdmFsdWUgPSBldmVudC5vcHRpb24udmFsdWU7XG5cbiAgICAgIGNvbnN0IGZpbHRlciA9IHRoaXMuX2ZpbHRlclNlcnZpY2UuZ2VuZXJhdGVNZXRhQ29sdW1uRmlsdGVyKHZhbHVlLHRoaXMuYXBwVmVyc2lvbklkKSBhcyBEYXRhVmlld0ZpbHRlcjtcbiAgICAgIHRoaXMuZmlsdGVycy5wdXNoKGZpbHRlcik7XG4gICAgICB0aGlzLmNvbW1vbkZpbHRlckFycmF5LnB1c2goZmlsdGVyKTtcbiAgICAvLyAgIGZpbHRlci5mb3JtVHlwZSA9IHZhbHVlO1xuICAgIH1lbHNle1xuICAgICAgLy9yZW1vdmUgc2VsZWN0ZWQgZmlsdGVyXG4gICAgICB0aGlzLnNlbGVjdGVkV2lkZ2V0LnNwbGljZSh0aGlzLnNlbGVjdGVkV2lkZ2V0LmluZGV4T2YoZXZlbnQub3B0aW9uLnZhbHVlKSwxKTtcbiAgICAgIGNvbnN0IGZpbHRlciA9IHRoaXMuZ2V0RmlsdGVyRnJvbUxpc3QoZXZlbnQub3B0aW9uLnZhbHVlLmlkZW50aWZpZXIpO1xuICAgICAgdGhpcy5yZW1vdmVCYXNpY0ZpbHRlcihmaWx0ZXIpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgZmlsdGVyIGZyb20gZmlsdGVyIGFycmF5IGlmIGZpbHRlciBpcyBub3Qgc2F2ZWQgb3IgbWFyayBhcyBkZWxldGVkIGlmIGl0J3Mgc2F2ZWQuXG4gICAqXG4gICAqIEBwYXJhbSBmaWx0ZXJcbiAgICovXG4gIHJlbW92ZUJhc2ljRmlsdGVyKGZpbHRlcjogQXhGaWx0ZXIpOiB2b2lkIHtcbiAgICBpZihmaWx0ZXIuaWQgPT09IDApe1xuICAgICAgdGhpcy5maWx0ZXJzLnNwbGljZSh0aGlzLmZpbHRlcnMuaW5kZXhPZihmaWx0ZXIpLCAxKTtcbiAgICAgIHRoaXMuY29tbW9uRmlsdGVyQXJyYXkuc3BsaWNlKHRoaXMuY29tbW9uRmlsdGVyQXJyYXkuaW5kZXhPZihmaWx0ZXIpLCAxKTtcbiAgICB9ZWxzZXtcbiAgICAgIGZpbHRlci5pc0RlbGV0ZWQgPSB0cnVlO1xuICAgICAgZmlsdGVyLmlzU2VsZWN0ZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgZmlsdGVyIGJ5IHdpZGdldCBpZGVudGlmaWVyLlxuICAgKlxuICAgKiBAcGFyYW0gaWRlbnRpZmllclxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgZ2V0RmlsdGVyRnJvbUxpc3QoaWRlbnRpZmllcjogc3RyaW5nKTogQXhGaWx0ZXIge1xuICAgIGZvciAoY29uc3QgZmlsdGVyIG9mIHRoaXMuY29tbW9uRmlsdGVyQXJyYXkpIHtcbiAgICAgIGlmIChmaWx0ZXIuc2VhcmNoTm9kZXNbMF0uZXhwcmVzc2lvbi5maWVsZC5uYW1lID09PSBpZGVudGlmaWVyKVxuICAgICAgICB7cmV0dXJuIGZpbHRlcjt9O1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIFRoaXMgd2lsbCBnZXQgY2FsbGVkIGZyb20gZmlsdGVyIGNvbW1vbmVudCBvbiBmaWx0ZXIgZGVsZXRlLlxuICAgKlxuICAgKiBAcGFyYW0gaW5kZXhcbiAgICovXG4gIGRlbGV0ZUZpbHRlcihpbmRleDogbnVtYmVyKTogdm9pZHtcbiAgICBjb25zdCBmaWx0ZXIgPSB0aGlzLmNvbW1vbkZpbHRlckFycmF5W2luZGV4XTtcbiAgICB0aGlzLnNlbGVjdGVkV2lkZ2V0LnNwbGljZSh0aGlzLnNlbGVjdGVkV2lkZ2V0LmluZGV4T2YoZmlsdGVyLnNlYXJjaE5vZGVzWzBdLmV4cHJlc3Npb24uZmllbGQubmFtZSksMSk7XG4gICAgdGhpcy5yZW1vdmVCYXNpY0ZpbHRlcihmaWx0ZXIpO1xuICB9XG4gIGdldEZpbHRlcnNDb3VudCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5maWx0ZXJzLmZpbHRlcihmbCA9PiAhZmwuaXNEZWxldGVkKS5sZW5ndGggPiAwO1xuICB9XG5cbiAgICAvKipcbiAgICAgKiAgVmFsaWRhdGlvbiBvZiBlbWFpbCBpZCBmb3IgZXhwb3J0IG9mIHRhYnVsYXIgcmVwb3J0XG4gICAgICovXG5cbiAgICAgZW1haWxWYWxpZGF0ZSgpOiB2b2lkIHtcbiAgICAgIGNvbnN0IHJlZ2V4ID0gbmV3IFJlZ0V4cCh0aGlzLmVtYWlsUGF0dGVybik7XG4gICAgICB0aGlzLmRpc3BsYXlFbWFpbFZhbGlkYXRpb25FcnJvciA9ICFyZWdleC50ZXN0KHRoaXMuZXhwb3J0Rm9ybUJ1aWxkZXIudmFsdWVbJ2VtYWlsJ10pO1xuICAgICAgaWYgKHRoaXMuZGlzcGxheUVtYWlsVmFsaWRhdGlvbkVycm9yKSB7XG4gICAgICAgIHRoaXMuZGlzcGxheU5vdGlmaWNhdGlvbiA9IGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgICAgLyoqXG4gICAgICAgKiAgY2xvc2UgdGhlIGV4cG9ydCB0byBlbWFpbCBtZW51IG9uIGNsaWNrIG9mIGNhbmNlbFxuICAgICAgICovXG4gIGNsb3NlRXhwb3J0TWVudSgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbnRleHRNZW51LmNsb3NlTWVudSgpO1xuICAgIHRoaXMuZGlzcGxheU5vdGlmaWNhdGlvbiA9IGZhbHNlO1xuICB9XG5cbiAgIC8qKlxuICAgICogIGNhbGwgdGhpcyBmdW5jdGlvbiBmb3Igc2VuZCBlbWFpbCB3aXRoIGV4Y2VsIHJlcG9ydCBhcyBhdHRhY2htZW50XG4gICAgKi9cblxuICAgIHNlbmRFbWFpbCgpOiB2b2lkIHtcbiAgICAgIHRoaXMuZGlzcGxheU5vdGlmaWNhdGlvbiA9IGZhbHNlO1xuICAgICAgaWYgKCF0aGlzLmRpc3BsYXlFbWFpbFZhbGlkYXRpb25FcnJvcikge1xuICAgICAgICB0aGlzLmV4cG9ydERhdGEuZW1pdCh0aGlzLmV4cG9ydEZvcm1CdWlsZGVyLnZhbHVlWydlbWFpbCddKTtcbiAgICAgICAgdGhpcy5kaXNwbGF5Tm90aWZpY2F0aW9uPXRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT3BlbiBNYXQgbWVudSBvbiByaWdodCBjbGljayBvbiBhZGQgZmlsdGVyICBidXR0b24uXG4gICAgICogQHBhcmFtIGV2ZW50XG4gICAgICovXG4gICAgb3BlblByb3BlcnR5TWVudShldmVudDogUG9pbnRlckV2ZW50KTogdm9pZHtcbiAgICAgICAgaWYodGhpcy5zY3JlZW5UeXBlID09PSBTY3JlZW5UeXBlLmRhdGFWaWV3QnVpbGRlcil7XG4gICAgICAgICAgICB0aGlzLnByb3BlcnR5TWVudVRyaWdnZXIub3Blbk1lbnUoKTtcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBPcGVuIGdlbmVyYXRlIFFyIGRpYWxvZyBib3hcbiAgICAgKiBcbiAgICAgKi9cbiAgICBvcGVuR2VuZXJhdGVRckRpYWxvZyhmb3JtOiBBeEZvcm0pOiB2b2lkIHtcbiAgICAgIC8vIG9wZW4gZGlhbG9nXG4gICAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKEdlbmVyYXRlUVJDb21wb25lbnQsIHtcbiAgICAgICAgZGF0YTogZm9ybSxcbiAgICAgICAgd2lkdGg6ICczM3JlbScsXG4gICAgICAgIGhlaWdodDogJ2F1dG8nLFxuICAgICAgICBwYW5lbENsYXNzOiAnZ2VuZXJhdGUtcXItcGFuZWwtY2xhc3MnLFxuICAgICAgICAvL2RhdGE6IHRoaXMuY29udGFpbmVySWRcblxuICAgICAgfSk7XG5cbiAgICAgIC8vIHRoaXMgd2lsbCBnZXQgY2FsbGVkIGFmdGVyIGRpYWxvZyBjbG9zZWQuXG4gICAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xuICAgICAgICBjb25zb2xlLmxvZygnVGhlIGRpYWxvZyB3YXMgY2xvc2VkJyk7XG5cbiAgICAgIH0pO1xuXG5cbiAgICB9XG5cbiAgbmF2aWdhdGVUb0JpbGxpbmcoKTogdm9pZCB7XG4gICAgd2luZG93Lm9wZW4odGhpcy5jb21tb25MaWJDb25maWcuYnVpbGRlclVybCArICdwYXltZW50aW5mby9wcmljaW5nJywgJ19ibGFuaycpO1xuICB9XG5cbn1cbiIsIjxkaXYgY2xhc3M9XCJzdGlja3kgZGF0YS1saXN0LWZpbHRlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJkYXRhLXZpZXctZmlsdGVyLXdyYXBwZXJcIiBbbmdDbGFzc109XCJ7J3dpZHRoLWFmdGVyLWhpZGUtYnV0dG9uJzpzZWxlY3RlZFZpZXdUeXBlID09PSBWaWV3VHlwZS5NYXBWaWV3IHx8IHNlbGVjdGVkVmlld1R5cGUgPT09IFZpZXdUeXBlLkJvYXJkVmlldywnbm8tZmlsdGVyJzpmaWx0ZXJzLmxlbmd0aCA8PSAwfVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImFkZC1pY29uLWJ0blwiIFtuZ0NsYXNzXT1cInsnYm9yZGVyLXNlcGVyYXRvcic6IGdldEZpbHRlcnNDb3VudCgpfVwiPlxuICAgICAgICA8IS0tIFNob3cgaGlkZSBjb25kaXRpb24gZm9yIGNvbnRhaW5lci4gLS0+XG4gICAgICAgIDxidXR0b24gICpuZ0lmPVwic2NyZWVuVHlwZSA9PT0gc2NyZWVuVHlwZXMuZGF0YVZpZXdCdWlsZGVyIHx8IGRhdGFWaWV3cy5wcm9wZXJ0aWVzLnNob3dBZGRGaWx0ZXJCdXR0b25cIiAgY2xhc3M9XCJsaWdodC1ibHVlLWJ0biBheG8tZm9udFwiXG4gICAgICAgICAgIChjbGljayk9XCJmaWx0ZXJzTWVudVRyaWdnZXIub3Blbk1lbnUoKVwiIChjb250ZXh0bWVudSk9XCJvcGVuUHJvcGVydHlNZW51KCRldmVudClcIiA+XG4gICAgICAgICAgICArIEFkZCBGaWx0ZXJcbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPCEtLSBBZGQgRmlsdGVyIHByb3BlcnR5IE1lbnUuIHRoaXMgd2lsbCBnZXQgb3BlbmVkIG9uIHJpZ2h0IGNsaWNrICAtLT5cbiAgICAgICAgPGRpdiAjcHJvcGVydHlNZW51VHJpZ2dlcj1cIm1hdE1lbnVUcmlnZ2VyXCIgIFttYXRNZW51VHJpZ2dlckZvcl09XCJwcm9wZXJ0eU1lbnVcIj4gPC9kaXY+XG5cblxuICAgICAgICA8bWF0LW1lbnUgI3Byb3BlcnR5TWVudT1cIm1hdE1lbnVcIj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XCJcbiAgICAgICAgICAgIG1hdC1tZW51LWl0ZW1cbiAgICAgICAgICAgIGNsYXNzPVwiZmlsdGVyLXByb3BlcnRpZXMgbWVudS1idG5cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLXByb3BlcnR5XCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3R5bGUtdGl0bGVcIj5TaG93IE9uIENvbnRhaW5lcjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1zbGlkZS10b2dnbGUgWyhuZ01vZGVsKV09XCJkYXRhVmlld3MucHJvcGVydGllcy5zaG93QWRkRmlsdGVyQnV0dG9uXCI+PC9tYXQtc2xpZGUtdG9nZ2xlPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbWF0LW1lbnU+XG5cbiAgICAgICAgPCEtLSBGaWx0ZXIgbGlzdCBtZW51IC0tPlxuICAgICAgICA8ZGl2ICNmaWx0ZXJzTWVudVRyaWdnZXI9XCJtYXRNZW51VHJpZ2dlclwiICBbbWF0TWVudVRyaWdnZXJGb3JdPVwiZmlsdGVyc01lbnVcIj4gPC9kaXY+XG4gICAgICAgIDxtYXQtbWVudSAjZmlsdGVyc01lbnU9XCJtYXRNZW51XCIgeVBvc2l0aW9uPVwiYmVsb3dcIiBjbGFzcz1cImZpbHRlci1maWVsZC1saXN0XCIgPlxuICAgICAgICAgIDxkaXYgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncm91cCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBtYi0zXCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydqdXN0aWZ5LWJldHdlZW4gcHgtMi41JzogIXNob3dTZWFyY2hCb3h9XCI+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2hvd0ZpZWxkXCIgY2xhc3M9XCJ0ZXh0LWYgZm9udC1tZWRpdW1cIj5GaWVsZHM8L3NwYW4+XG5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIHNlYXJjaC1maWVsZFwiIFtuZ0NsYXNzXT1cInsnZ2xvYmFsLWJvcmRlciBweC0yLjUnIDogc2hvd1NlYXJjaEJveH1cIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCInc2hvd0ZpbHRlckRpdigpJ1wiPlxuICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIFtuZ0NsYXNzXT1cInsnc2VhcmNoLWljb24nIDogc2hvd1NlYXJjaEJveH1cIiBjbGFzcz1cIm10LTIgdGV4dC14cyBzZWFyY2gtaWNvbnNcIlxuICAgICAgICAgICAgICAgICAgICBbc3ZnSWNvbl09XCInaGVyb2ljb25zX3NvbGlkOnNlYXJjaCdcIj48L21hdC1pY29uPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgICAgICAgPCEtLSA8aW5wdXQgaWQ9XCJnbG9iYWwtZmllbGQtc2VhcmNoXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgcGxhY2Vob2xkZXI9XCJTZWFyY2guLi5cIiBbKG5nTW9kZWwpXT1cInNlYXJjaGVkVGVybVwiIG1hdElucHV0IGNsYXNzPVwic2VhcmNoLWJhciBjaGFydC10aXRsZVwiICBbc3R5bGUud2lkdGhdPVwiIXNob3dTZWFyY2hCb3ggPyAnMCcgOiAnMTAwJSdcIiAvPiAtLT5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24gKGNsaWNrKT1cImNsZWFyKClcIiAqbmdJZj1cInNob3dTZWFyY2hCb3hcIiBjbGFzcz1cImNsZWFyX2ljb24gY3Vyc29yLXBvaW50ZXIgdGV4dC1iYXNlXCI+Y2xlYXJcbiAgICAgICAgICAgICAgICA8L21hdC1pY29uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNhdGVnb3JpZXMubGVuZ3RoXCI+XG4gICAgICAgICAgICAgIDxkaXYgW25nQ2xhc3NdPVwieydmaWVsZC1jb250YWluZXInIDogc2hvd1NlYXJjaEJveH1cIiAqbmdJZj1cIihjYXRlZ29yaWVzIHwgc2VhcmNoOiBzZWFyY2hlZFRlcm0pPy5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJweC0yLjVcIiAqbmdJZj1cIihjYXRlZ29yaWVzIHwgc2VhcmNoOiBzZWFyY2hlZFRlcm0pPy5sZW5ndGhcIj5DYXRlZ29yeTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPG1hdC1zZWxlY3Rpb24tbGlzdCAjY2F0ZWdvcnk+XG4gICAgICAgICAgICAgICAgICA8bWF0LWxpc3Qtb3B0aW9uIGNoZWNrYm94UG9zaXRpb249XCJhZnRlclwiXG4gICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjYXRlZ29yeSBvZiBjYXRlZ29yaWVzfCBzZWFyY2g6IHNlYXJjaGVkVGVybTtsZXQgaT1pbmRleCBcIiBbdmFsdWVdPSdjYXRlZ29yeSdcbiAgICAgICAgICAgICAgICAgICAgWyhzZWxlY3RlZCldPVwiY2F0ZWdvcnkuaXNTZWxlY3RlZFwiIGNvbG9yPVwicHJpbWFyeVwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxpc3QtZmllbGRcIiBbbWF0VG9vbHRpcF09XCJjYXRlZ29yeS5uYW1lXCI+IHt7Y2F0ZWdvcnkubmFtZX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9tYXQtbGlzdC1vcHRpb24+XG4gICAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0aW9uLWxpc3Q+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8IS0tIEZvcm0gZmlsdGVycy4gLS0+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGRzLWRpdlwiICpuZ0Zvcj1cImxldCBfZm9ybSBvZiBmb3Jtc1wiPlxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJweC0yLjVcIj57e19mb3JtPy5uYW1lfX08L2xhYmVsPlxuICAgICAgICAgICAgICA8bWF0LXNlbGVjdGlvbi1saXN0IChzZWxlY3Rpb25DaGFuZ2UpPVwiYWRkQmFzaWNGaWx0ZXIoJGV2ZW50LF9mb3JtKVwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHdpZGdldCBvZiBfZm9ybT8ud2lkZ2V0c3wgc2VhcmNoOiBzZWFyY2hlZFRlcm1cIiA+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhdW5oYW5kbGVkV0lkZ2V0c0luRmlsdGVycy5pbmNsdWRlcyh3aWRnZXQudHlwZSkgJiYgIXVuaGFuZGxlZFdJZGdldFN1YlR5cGVzSW5GaWx0ZXJzLmluY2x1ZGVzKHdpZGdldC5zdWJUeXBlKSBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGlzdC1vcHRpb24gY2hlY2tib3hQb3NpdGlvbj1cImFmdGVyXCIgW3ZhbHVlXT0nd2lkZ2V0JyBbc2VsZWN0ZWRdPVwidGhpcy5zZWxlY3RlZFdpZGdldC5pbmRleE9mKHdpZGdldC5pZGVudGlmaWVyKSAhPT0gLTFcIiBjb2xvcj1cInByaW1hcnlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsaXN0LWZpZWxkXCIgW21hdFRvb2x0aXBdPVwid2lkZ2V0LnByb21wdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cInN2Zy1pY29uIG1yLTIgYWxpZ24tbWlkZGxlXCIgW3N2Z0ljb25dPVwid2lkZ2V0LndpZGdldEljb25cIj48L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7d2lkZ2V0LnByb21wdH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWxpc3Qtb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0aW9uLWxpc3Q+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPCEtLSBNZXRhIENvbHVtbiBGaWx0ZXJzIC0tPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkcy1kaXZcIiAqbmdJZj1cImRhdGFWaWV3cy50eXBlICE9PSBkYXRhVmlld1R5cGUuZm9ybURhdGFWaWV3XCIgPlxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInB4LTIuNVwiPk1ldGEgQ29sdW1uczwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPG1hdC1zZWxlY3Rpb24tbGlzdCAoc2VsZWN0aW9uQ2hhbmdlKT1cImFkZE1ldGFDb2x1bW5GaWx0ZXIoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgPG1hdC1saXN0LW9wdGlvbiBjaGVja2JveFBvc2l0aW9uPVwiYWZ0ZXJcIiAqbmdGb3I9XCJsZXQgbWV0YUNvbHVtbiBvZiBtZXRhQ29sdW1uc1wiXG4gICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09J21ldGFDb2x1bW4nIFtzZWxlY3RlZF09XCJ0aGlzLnNlbGVjdGVkV2lkZ2V0LmluZGV4T2YobWV0YUNvbHVtbikgIT09IC0xXCIgY29sb3I9XCJwcmltYXJ5XCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGlzdC1maWVsZFwiIFttYXRUb29sdGlwXT1cIm1ldGFDb2x1bW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJzdmctaWNvbiBtci0yIGFsaWduLW1pZGRsZVwiIFtzdmdJY29uXT1cIidheG9fc3F1YXJlX3RleHQnXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICB7e21ldGFDb2x1bW59fVxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L21hdC1saXN0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICA8L21hdC1zZWxlY3Rpb24tbGlzdD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbWF0LW1lbnU+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGZpbHRlcnMgY2xhc3M9XCJkYXRhLWxpc3QtZmlsdGVyLWNvbnRhaW5lclwiICBbZmlsdGVyc109XCJmaWx0ZXJzXCIgW2Zvcm1JZF09XCJmb3JtPy5mb3JtSWRcIlxuICAgICAgICBbY29tbW9uRmlsdGVyQXJyYXldPVwiY29tbW9uRmlsdGVyQXJyYXlcIiBbc2NyZWVuVHlwZV09XCJzY3JlZW5UeXBlXCIgW2NhdGVnb3JpZXNdPSdjYXRlZ29yaWVzJyBbYXBwVmVyc2lvbklkXT1cImFwcFZlcnNpb25JZFwiXG4gICAgICAgIFtzY29wZVR5cGVdPVwic2NvcGVUeXBlXCJcbiAgICAgICAgKGFwcGx5RmlsdGVyRW1pdCk9XCJhcHBseUZpbHRlckVtaXQuZW1pdCgkZXZlbnQpXCIgKHJlc2V0RmlsdGVyRW1pdCk9XCJyZXNldEZpbHRlckVtaXQuZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgKGRlbGV0ZUZpbHRlckVtaXQpPVwiZGVsZXRlRmlsdGVyKCRldmVudClcIlxuICAgICAgICBbc2hvd0FwcGx5RmlsdGVyRXZlbnRdPVwic2hvd0FwcGx5RmlsdGVyRXZlbnRcIlxuICAgICAgICBbbmdDbGFzc109XCJ7J2NvbnRhaW5lci1maWx0ZXItd2l0ZGgnOiAhZGF0YVZpZXdzLnByb3BlcnRpZXMuc2hvd0FkZEZpbHRlckJ1dHRvbn1cIj5cbiAgICAgIDwvZmlsdGVycz5cblxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImRhdGEtdmlldy1oZWFkZXItYnV0dG9uXCIgaWQ9XCJkYXRhLXZpZXctaGVhZGVyLWJ1dHRvblwiPlxuICAgICAgPCEtLUdlbmVyYXRlIFFSIGJ1dHRvbi0tPlxuICAgICAgPGJ1dHRvbiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAzMHB4O1wiICpuZ0lmPVwic2VsZWN0ZWRWaWV3VHlwZSA9PT0gVmlld1R5cGUuRGF0YUxpc3RWaWV3XCIgY2xhc3M9XCJkcm9wZG93bi1idXR0b24gYXhvLWZvbnRcIiAgbWF0LWljb24tYnV0dG9uIFttYXRNZW51VHJpZ2dlckZvcl09XCJxckNvZGVNZW51XCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiYnV0dG9uLXRleHQgYXhvLWZvbnRcIj5HZW5lcmF0ZSBRUjwvc3Bhbj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJkcm9wZG93bi1hcnJvd1wiPjwvc3Bhbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPG1hdC1tZW51ICNxckNvZGVNZW51PVwibWF0TWVudVwiPlxuICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKm5nRm9yPVwibGV0IGZvcm0gb2YgYWN0aW9uZm9ybXNcIiAoY2xpY2spPVwib3BlbkdlbmVyYXRlUXJEaWFsb2coZm9ybSlcIj57eyBmb3JtLm5hbWUgfX08L2J1dHRvbj5cbiAgICAgIDwvbWF0LW1lbnU+XG4gICAgICA8YnV0dG9uICpuZ0lmPVwiIGZvcm0gJiYgZm9ybS50eXBlID09PSBmb3JtVHlwZXMuYXNzZXQgJiYgc2VsZWN0ZWRWaWV3VHlwZSA9PT0gVmlld1R5cGUuRGF0YUxpc3RWaWV3XCIgY2xhc3M9XCJwcmltYXJ5LWJ0biBheG8tZm9udFwiIChjbGljayk9XCJhZGROZXdSZWNvcmQuZW1pdCgpXCI+IEFkZCBOZXcgUmVjb3JkPC9idXR0b24+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwibGluay1idG4gYXhvLWZvbnQgcmVmcmVzaC1idG5cIiAqbmdJZj1cInNob3dBc3NpZ25Ub0J1dHRvblwiKGNsaWNrKT1cImFzc2lnbi5lbWl0KClcIj5Bc3NpZ24gPC9idXR0b24+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwibGluay1idG4gYXhvLWZvbnQgcmVmcmVzaC1idG5cIiAoY2xpY2spPVwicmVmcmVzaERhdGEuZW1pdCgpXCI+UmVmcmVzaCBEYXRhPC9idXR0b24+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgaWNvbi1idG5cIiBbbWF0TWVudVRyaWdnZXJGb3JdPVwiYmVmb3JlTWVudVwiPjxtYXQtaWNvbiBtYXRUb29sdGlwPVwiRXhwb3J0IERhdGFcIlxuICAgICAgICAgIHN2Z0ljb249XCJheG9fZXhwb3J0XCI+PC9tYXQtaWNvbj48L2J1dHRvbj5cbiAgICBcbiAgICAgIDwhLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cbiAgICBcbiAgICAgIDwhLS0gY29udGV4dCBtZW51IHRvIHNob3cgZm9ybSB0byBnZXQgdXNlckVtYWlsIElkIHRvIGdldCB1c2VyRW1haWwgZm9yIGV4Y2VsIEV4cG9ydCAtLT5cbiAgICAgIDxtYXQtbWVudSAjYmVmb3JlTWVudT1cIm1hdE1lbnVcIiB4UG9zaXRpb249XCJiZWZvcmVcIj5cbiAgICAgICAgPCEtLSBTaG93IHRoZSBleHBvcnQgc2VjdGlvbiBpZiBhY2NvdW50IHN0YXR1cyBpcyBhY3RpdmUgLS0+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJpc0FjY291bnRTdGF0dXNBY3RpdmVcIiBjbGFzcz1cInNlbmQtZXhjZWwtcmVwb3J0LWZvcm1cIj5cbiAgICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImV4cG9ydEZvcm1CdWlsZGVyXCI+XG4gICAgICAgICAgICA8ZGl2PlhMU1g8L2Rpdj5cbiAgICAgICAgICAgIDxpbnB1dCBtYXQtbWVudS1pdGVtIHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJyZXBvcnQteHNseC1lbWFpbFwiIGZvcm1Db250cm9sTmFtZT1cImVtYWlsXCJcbiAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiZW1haWxWYWxpZGF0ZSgpXCI+XG4gICAgICAgICAgICA8cCAqbmdJZj1cImRpc3BsYXlFbWFpbFZhbGlkYXRpb25FcnJvclwiIGNsYXNzPVwiZW1haWwtc2VuZC1lbWFpbC1lcnJvclwiPlBsZWFzZSBwcm92aWRlIGEgdmFsaWQgZW1haWwgSUQ8L3A+XG4gICAgICAgICAgICA8cCAqbmdJZj1cImRpc3BsYXlOb3RpZmljYXRpb25cIiBjbGFzcz1cImVtYWlsLXNlbmQtbm90aWZpY2F0aW9uXCI+RXhwb3J0IGlzIGluIHByb2dyZXNzLiBZb3Ugd2lsbCByZWNlaXZlIHRoZVxuICAgICAgICAgICAgICByZXBvcnQgb24geW91ciBlbWFpbCBvbmNlIGNvbXBsZXRlZC48L3A+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VuZC1leGNlbC1yZXBvcnQtZm9ybS1idG5cIj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNhbmNlbC1idG4gYnRuXCIgKGNsaWNrKT1cImNsb3NlRXhwb3J0TWVudSgpO1wiPkNhbmNlbDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwic2VuZC1idG4gYnRuXCIgKGNsaWNrKT1cInNlbmRFbWFpbCgpOyRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc3BsYXlFbWFpbFZhbGlkYXRpb25FcnJvclwiPkV4cG9ydCA8bWF0LWljb24+c2VuZDwvbWF0LWljb24+PC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Zvcm0+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8IS0tIFNob3cgdGhlIHVwZ3JhZGUgc2VjdGlvbiBpZiBhY2NvdW50IHN0YXR1cyBpcyBub3QgYWN0aXZlIC0tPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiIWlzQWNjb3VudFN0YXR1c0FjdGl2ZVwiIGNsYXNzPVwidXBncmFkZS1zZWN0aW9uXCI+XG4gICAgICAgICAgVG8gZXhwb3J0IGRhdGEsIHBsZWFzZSBzdWJzY3JpYmUgdG8gYSBwbGFuIGZpcnN0Lnt7aXNBY2NvdW50U3RhdHVzQWN0aXZlfX08YnI+PGJyPlxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ1cGdyYWRlLWJ0biBidG5cIiAoY2xpY2spPVwibmF2aWdhdGVUb0JpbGxpbmcoKVwiPlVwZ3JhZGU8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L21hdC1tZW51PlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|