@unifylib/ui-lib 1.2.32 → 1.2.34
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.
|
@@ -285,7 +285,7 @@ export class FilterBuilderComponent {
|
|
|
285
285
|
return options.length === 0 || !options.every((code) => selected.includes(code));
|
|
286
286
|
}
|
|
287
287
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FilterBuilderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
288
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FilterBuilderComponent, isStandalone: true, selector: "app-filter-builder", inputs: { columns: "columns", isChecked: "isChecked", filterFields: "filterFields", pageInfo: "pageInfo", pendingFilters: "pendingFilters", showExportButton: "showExportButton", exportDisabled: "exportDisabled" }, outputs: { filterInformation: "filterInformation", isEmpty: "isEmpty", applyFilter: "applyFilter", sortByClicked: "sortByClicked", exportClicked: "exportClicked" }, host: { listeners: { "keydown": "onKeyDown($event)" } }, ngImport: i0, template: "<div class=\"main-filter-builder\">\n\n <!-- Desktop View -->\n <div class=\"filterForm desktop-view\">\n <div class=\"filterForm__row\">\n <div class=\"filterForm__col\">\n <app-field-filter\n [editable]=\"isEditable()\"\n [filter]=\"filter\"\n [pageInfo]=\"pageInfo\"\n *ngIf=\"isEditable()\"\n [filterFields]=\"filterFields\"\n [filterResetNonce]=\"filterResetNonce\"\n (filterFieldInformation)=\"formChanges($event)\"\n class=\"filterForm__filed-filter\"\n >\n </app-field-filter>\n </div>\n <div class=\"button-group\">\n <button\n mat-flat-button\n class=\"btn-apply-filter\"\n type=\"button\"\n (click)=\"onClearFilters()\">\n <div class=\"button-text\">\n <mat-icon>clear_all</mat-icon>\n <span>{{ 'FILTER-BUILDER.clearFilters' | translate }}</span>\n </div>\n </button>\n <button\n mat-flat-button\n class=\"btn-apply-filter\"\n type=\"button\"\n [disabled]=\"dateRangeInvalid\"\n (click)=\"onApplyFilter()\">\n <div class=\"button-text\">\n <mat-icon>filter_list</mat-icon>\n <span>{{ 'FILTER-BUILDER.applyFilter' | translate }}</span>\n </div>\n </button>\n </div>\n </div>\n </div>\n\n <!-- Mobile View -->\n <div class=\"mobile-view\">\n <!-- Mobile Row 1: Search Field and Export Button -->\n <div class=\"mobile-search-row\">\n <div class=\"mobile-search-field\">\n <app-field-filter\n [editable]=\"isEditable()\"\n [filter]=\"filter\"\n [pageInfo]=\"pageInfo\"\n *ngIf=\"isEditable()\"\n [filterFields]=\"filterFields\"\n [filterResetNonce]=\"filterResetNonce\"\n (filterFieldInformation)=\"formChanges($event)\"\n class=\"mobile-field-filter\"\n >\n </app-field-filter>\n </div>\n <button\n *ngIf=\"showExportButton\"\n mat-flat-button\n class=\"btn-export-mobile\"\n [disabled]=\"exportDisabled\"\n [matMenuTriggerFor]=\"exportMenu\">\n <div class=\"button-content\">\n <mat-icon>file_export</mat-icon>\n <mat-icon class=\"arrow-icon\">keyboard_arrow_down</mat-icon>\n </div>\n </button>\n <mat-menu #exportMenu=\"matMenu\">\n <button mat-menu-item (click)=\"onExportClick('pdf')\">PDF</button>\n <button mat-menu-item (click)=\"onExportClick('xlsx')\">Excel</button>\n <button mat-menu-item (click)=\"onExportClick('csv')\">CSV</button>\n </mat-menu>\n </div>\n\n <!-- Mobile Row 2: Filter By and Sort By Buttons -->\n <div class=\"mobile-filter-row\">\n <button\n mat-flat-button\n class=\"btn-filter-by btn-filter-by--icon-only\"\n type=\"button\"\n (click)=\"onClearFilters()\"\n [attr.aria-label]=\"'FILTER-BUILDER.clearFilters' | translate\">\n <div class=\"button-content\">\n <mat-icon>delete_sweep</mat-icon>\n </div>\n </button>\n <button\n mat-flat-button\n class=\"btn-filter-by\"\n type=\"button\"\n [disabled]=\"dateRangeInvalid\"\n (click)=\"onApplyFilter()\">\n <div class=\"button-content\">\n <mat-icon>filter_list</mat-icon>\n <span>{{ 'FILTER-BUILDER.applyFilter' | translate }}</span>\n </div>\n </button>\n <button\n mat-flat-button\n class=\"btn-sort-by\"\n type=\"button\"\n [matMenuTriggerFor]=\"sortMenu\">\n <div class=\"button-content\">\n <mat-icon>unfold_more</mat-icon>\n <span>{{ 'FILTER-BUILDER.sortBy' | translate }}</span>\n <mat-icon class=\"arrow-icon\">keyboard_arrow_down</mat-icon>\n </div>\n </button>\n <mat-menu #sortMenu=\"matMenu\">\n <button\n *ngFor=\"let column of getSortableColumns()\"\n mat-menu-item\n (click)=\"onSortByClick(column.property)\">\n {{ labelKey(column) | translate }}\n </button>\n <button\n *ngIf=\"getSortableColumns().length === 0\"\n mat-menu-item\n disabled>\n {{ 'FILTER-BUILDER.noSortableColumns' | translate }}\n </button>\n </mat-menu>\n </div>\n </div>\n\n<!-- <div *ngIf=\"checkIsEmpty()\" class=\"line-top\">-->\n<!-- <mat-divider></mat-divider>-->\n<!-- </div>-->\n\n<!-- <div class=\"line-bottom\">-->\n<!-- <mat-divider></mat-divider>-->\n<!-- </div>-->\n\n<!-- <div class=\"action\">-->\n<!-- <button class=\"btn-none-background-primary action__clear\" mat-button (click)=\"deleteAll()\">-->\n<!-- {{'FILTER-BUILDER.clearAllFilters' | translate}}-->\n<!-- </button>-->\n<!-- <button class=\"btn-background-primary\" mat-button (click)=\"doSearch()\">-->\n<!-- {{'FILTER-BUILDER.search' | translate}}-->\n<!-- </button>-->\n<!-- </div>-->\n</div>\n", styles: [".main-filter-builder{width:100%;max-width:100%;box-sizing:border-box;flex:1 1 auto;min-width:0;display:flex;align-items:center;overflow:visible;min-height:48px;margin-bottom:7px}.main-filter-builder .filterForm{display:flex;width:100%;max-width:100%;box-sizing:border-box;align-items:center}.main-filter-builder .filterForm__row{display:flex;align-items:center;gap:16px;margin:0;flex-wrap:nowrap;width:100%;max-width:100%;box-sizing:border-box;min-width:0}.main-filter-builder .filterForm__col{flex:1 1 auto;min-width:0;max-width:none;width:auto}.main-filter-builder .filterForm__filed-filter{margin:0!important}.main-filter-builder .filterForm__filed-filter ::ng-deep .main-form-canvas{display:flex!important;flex-direction:row!important;align-items:center!important;margin-top:0!important;width:100%!important;flex-wrap:nowrap!important;gap:16px!important}.main-filter-builder .filterForm__filed-filter ::ng-deep .form-wrapper{display:flex!important;flex-direction:row!important;align-items:center!important;flex:1 1 auto!important;width:100%!important;min-width:0!important}.main-filter-builder .filterForm__filed-filter ::ng-deep .form-content{width:100%!important;display:flex!important;flex-direction:row!important;align-items:center!important}.main-filter-builder .filterForm__filed-filter ::ng-deep .form-row{display:flex!important;gap:16px;align-items:center;flex-wrap:nowrap;width:100%!important}.main-filter-builder .filterForm__filed-filter ::ng-deep .form-column{flex:0 0 auto;width:100%}.main-filter-builder .filterForm__filed-filter ::ng-deep .row-container{display:flex;gap:16px;align-items:center;flex-wrap:nowrap;width:auto}.main-filter-builder .filterForm__filed-filter ::ng-deep .field-column{flex:0 0 auto;width:auto}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field{width:auto!important;margin:0!important;overflow:visible!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-form-field-infix{min-height:44px!important;padding:0 16px!important;display:flex!important;align-items:center!important;border-top:none!important;overflow:visible!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-form-field-input-control{height:44px!important;font-weight:300!important;font-size:16px!important;line-height:1.2!important;color:#000!important;overflow:visible!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-form-field-outline{border:1px solid #b7b7b7!important;border-radius:8px!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-form-field-icon-prefix{padding-right:4px!important;display:flex!important;align-items:center!important;justify-content:center!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-form-field-icon-prefix mat-icon{font-size:24px!important;width:10px!important;height:28px!important;color:#0d4261!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-form-field-icon-suffix{padding-left:0!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-form-field-icon-suffix mat-icon{font-size:24px!important;width:24px!important;height:24px!important;color:#0d4261!important;margin-top:6px}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field input::placeholder{color:#888!important;font-weight:300!important;font-size:16px!important;line-height:1.2!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-select{font-weight:300!important;font-size:16px!important;line-height:1.2!important;color:#888!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-datepicker-toggle .mat-icon-button{width:24px!important;height:24px!important;padding:0!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-datepicker-toggle .mat-icon-button mat-icon{font-size:24px!important;width:24px!important;height:24px!important;color:#0d4261}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-form-field-subscript-wrapper{height:0!important;min-height:0!important;margin:0!important;padding:0!important}.main-filter-builder .filterForm .action-filter{flex:0 0 auto}.main-filter-builder .filterForm .action-filter .edit-design{margin:auto}.main-filter-builder .filterForm .action-filter .edit-design__add-button{background:#fff!important;color:var(--primary-color)!important;height:48px;width:48px;border-radius:5px;border:#D9D9D9 solid 1px;margin:30px 0 0}.main-filter-builder .filterForm .action-filter .edit-design__add-button__add-button-text{margin:0 5px}.main-filter-builder .line-top mat-divider{width:98%;margin:0 auto 10px}.main-filter-builder .advanced-button{display:flex;flex-wrap:wrap;gap:8px}.main-filter-builder .advanced-button .view{background:#e3fbff!important;border:1px solid #00ABC8!important;border-radius:6px!important;margin:10px 0;padding:6px 8px;height:32px;margin-top:0!important;display:flex;align-items:center;gap:6px}.main-filter-builder .advanced-button .view__filed{margin-top:-3px;display:inline-block;color:#1c355e;font-weight:400;font-size:14px;line-height:16px;font-style:normal;text-align:center!important}.main-filter-builder .advanced-button .view__close{margin-left:6px}.main-filter-builder .advanced-button .view__close__icon{color:#1c355e;font-size:14px;cursor:pointer;display:inline-block}.main-filter-builder .line-bottom mat-divider{width:98%;margin:0 auto 10px}.main-filter-builder .action{justify-content:end;padding:5px 10px 10px}.main-filter-builder .action__clear{border:none!important;margin:0 5px}@media (max-width: 599.98px){.main-filter-builder .filterForm__row{flex-wrap:wrap}.main-filter-builder .filterForm .action-filter .edit-design__add-button{width:100%;height:45px;margin:5px 5px 10px}}@media (min-width: 600px){.main-filter-builder .add-text-responsive{display:none}}.main-filter-builder .button-group{display:flex!important;flex-direction:row!important;align-items:center!important;justify-content:flex-end;gap:8px!important;flex-shrink:0!important;flex-grow:0!important;flex-basis:auto!important;height:46px!important;white-space:nowrap!important;min-width:0!important;max-width:none!important}.main-filter-builder .btn-apply-filter{background:#fff!important;border:1px solid #3e627b!important;border-radius:8px!important;height:46px!important;min-width:120px!important;padding:0 16px!important;box-shadow:none!important}.main-filter-builder .btn-apply-filter .button-text{display:flex;align-items:center;justify-content:center;gap:4px;width:100%}.main-filter-builder .btn-apply-filter mat-icon{font-size:24px;width:24px;height:30px;color:#0d4261}.main-filter-builder .btn-apply-filter span{font-family:Lusail,sans-serif;font-weight:500;font-size:16px;line-height:1.2;color:#0d4261;white-space:nowrap}.main-filter-builder .btn-apply-filter:hover:not(:disabled){background:#fafafa!important}.main-filter-builder .btn-apply-filter:disabled{opacity:.45;cursor:not-allowed}.main-filter-builder .mobile-view{display:none;flex-direction:column;gap:8px;width:100%;box-sizing:border-box}.main-filter-builder .mobile-filter-row{display:flex;align-items:center;gap:8px;width:100%;box-sizing:border-box}.main-filter-builder .btn-filter-by,.main-filter-builder .btn-sort-by{background:#fff!important;border:1px solid #3e627b!important;border-radius:8px!important;height:40px!important;flex:1 1 0!important;min-width:0!important;padding:0 16px!important;box-shadow:none!important;display:flex!important;align-items:center!important;justify-content:center!important;cursor:pointer!important}.main-filter-builder .btn-filter-by .button-content,.main-filter-builder .btn-sort-by .button-content{display:flex;align-items:center;justify-content:center;gap:4px;width:100%}.main-filter-builder .btn-filter-by mat-icon,.main-filter-builder .btn-sort-by mat-icon{font-size:24px;width:24px;height:28px;color:#0d4261}.main-filter-builder .btn-filter-by span,.main-filter-builder .btn-sort-by span{font-family:Lusail,sans-serif;font-weight:500;font-size:16px;line-height:1;color:#0d4261;white-space:nowrap}.main-filter-builder .btn-filter-by:hover:not(:disabled),.main-filter-builder .btn-sort-by:hover:not(:disabled){background:#fafafa!important}.main-filter-builder .btn-filter-by:disabled,.main-filter-builder .btn-sort-by:disabled{opacity:.45;cursor:not-allowed}.main-filter-builder .btn-sort-by{border:1px solid #0d4261!important}.main-filter-builder .btn-sort-by .sort-icons{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:0;height:24px;width:24px;flex-shrink:0}.main-filter-builder .btn-sort-by .sort-icons .sort-arrow-up,.main-filter-builder .btn-sort-by .sort-icons .sort-arrow-down{font-size:16px;width:16px;height:8px;line-height:8px;margin:0;color:#0d4261}.main-filter-builder .btn-sort-by .sort-icons .sort-arrow-up{margin-bottom:-2px}.main-filter-builder .btn-sort-by .sort-icons .sort-arrow-down{margin-top:-2px}.main-filter-builder .btn-sort-by .arrow-icon{font-size:16px;width:16px;height:16px;margin-left:auto}.main-filter-builder .btn-filter-by.btn-filter-by--icon-only{flex:0 0 44px!important;min-width:44px!important;max-width:48px!important;padding:0 6px!important}.main-filter-builder .mobile-search-row{display:flex;align-items:flex-start;gap:8px;width:100%;box-sizing:border-box}.main-filter-builder .mobile-search-field{flex:1;min-width:0;width:100%;max-width:none}.main-filter-builder .btn-export-mobile{background:transparent!important;border:none!important;border-radius:8px!important;height:40px!important;width:60px!important;padding:0!important;box-shadow:none!important;display:flex!important;align-items:center!important;justify-content:center!important;cursor:pointer!important;flex-shrink:0!important}.main-filter-builder .btn-export-mobile .button-content{display:flex;align-items:center;justify-content:center;gap:4px;width:100%}.main-filter-builder .btn-export-mobile mat-icon{font-size:24px;width:24px;height:24px;color:#0d4261}.main-filter-builder .btn-export-mobile .arrow-icon{font-size:16px;width:16px;height:16px}.main-filter-builder .btn-export-mobile:hover:not(:disabled){background:#fafafa!important}.main-filter-builder .btn-export-mobile:disabled,.main-filter-builder .btn-export-mobile.mat-mdc-button-disabled{opacity:.45;cursor:not-allowed;pointer-events:none}.main-filter-builder .mobile-field-filter{margin:0!important;width:100%!important}.main-filter-builder .mobile-field-filter ::ng-deep .main-form-canvas{display:flex!important;flex-direction:row!important;align-items:center!important;margin-top:0!important;width:100%!important;flex-wrap:wrap!important;gap:8px!important}.main-filter-builder .mobile-field-filter ::ng-deep .form-wrapper{display:flex!important;flex-direction:row!important;align-items:center!important;flex:1 1 auto!important;width:100%!important;min-width:0!important}.main-filter-builder .mobile-field-filter ::ng-deep .form-content{width:100%!important;align-items:center!important}.main-filter-builder .mobile-field-filter ::ng-deep .field-column:has(.multi-state-filter){display:flex!important;flex:1 1 100%!important;width:100%!important;min-width:0!important}.main-filter-builder .mobile-field-filter ::ng-deep mat-form-field{width:100%!important;margin:0!important;overflow:visible!important}.main-filter-builder .mobile-field-filter ::ng-deep mat-form-field .mat-mdc-form-field-infix{min-height:40px!important;padding:0 16px!important;display:flex!important;align-items:center!important;border-top:none!important;overflow:visible!important}.main-filter-builder .mobile-field-filter ::ng-deep mat-form-field .mat-mdc-form-field-input-control{height:40px!important;font-weight:300!important;font-size:16px!important;line-height:1.2!important;color:#000!important;overflow:visible!important}.main-filter-builder .mobile-field-filter ::ng-deep mat-form-field .mat-mdc-form-field-outline{border:1px solid #b7b7b7!important;border-radius:8px!important}.main-filter-builder .mobile-field-filter ::ng-deep mat-form-field .mat-mdc-form-field-icon-prefix{padding-right:4px!important;display:flex!important;align-items:center!important;justify-content:center!important}.main-filter-builder .mobile-field-filter ::ng-deep mat-form-field .mat-mdc-form-field-icon-prefix mat-icon{font-size:24px!important;width:24px!important;height:24px!important;color:#0d4261!important}.main-filter-builder .mobile-field-filter ::ng-deep mat-form-field input::placeholder{color:#888!important;font-weight:300!important;font-size:16px!important;line-height:1.2!important}@container base-table (min-width: 769px) and (max-width: 900px){.main-filter-builder{margin-bottom:0}.main-filter-builder .filterForm__row{align-items:flex-end}.main-filter-builder .filterForm__col{flex:1 1 auto;min-width:0;width:auto}.main-filter-builder .filterForm__filed-filter ::ng-deep .main-form-canvas,.main-filter-builder .filterForm__filed-filter ::ng-deep .form-wrapper,.main-filter-builder .filterForm__filed-filter ::ng-deep .form-content,.main-filter-builder .filterForm__filed-filter ::ng-deep .form-row,.main-filter-builder .filterForm__filed-filter ::ng-deep .form-column,.main-filter-builder .filterForm__filed-filter ::ng-deep .row-container{width:100%!important;flex-direction:row!important;flex-wrap:wrap!important}.main-filter-builder .filterForm__filed-filter ::ng-deep .row-container{display:flex!important;gap:12px!important}.main-filter-builder .filterForm__filed-filter ::ng-deep .field-column{flex:1 1 calc(50% - 12px)!important;width:calc(50% - 12px)!important;max-width:calc(50% - 12px)!important;min-width:180px!important}.main-filter-builder .filterForm__filed-filter ::ng-deep .multi-state-filter,.main-filter-builder .filterForm__filed-filter ::ng-deep .multi-state-filter__trigger,.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field{width:100%!important}.main-filter-builder .button-group{flex-direction:column-reverse!important;justify-content:flex-start!important;gap:12px!important}.main-filter-builder .btn-apply-filter{height:45px!important;margin-bottom:0!important}}@media (max-width: 768px){.main-filter-builder .desktop-view{display:none!important}.main-filter-builder .mobile-view{display:flex!important}}@media (min-width: 769px){.main-filter-builder .desktop-view{display:flex!important}.main-filter-builder .mobile-view{display:none!important}}:host-context([dir=ltr]) .main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-form-field-infix{padding-right:0!important}:host-context([dir=rtl]) .main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-form-field-infix{padding-left:0!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: FieldFilterComponent, selector: "app-field-filter", inputs: ["filter", "pageInfo", "filterFields", "item", "editable", "filterResetNonce"], outputs: ["selectedValue", "filterFieldInformation"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }] }); }
|
|
288
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FilterBuilderComponent, isStandalone: true, selector: "app-filter-builder", inputs: { columns: "columns", isChecked: "isChecked", filterFields: "filterFields", pageInfo: "pageInfo", pendingFilters: "pendingFilters", showExportButton: "showExportButton", exportDisabled: "exportDisabled" }, outputs: { filterInformation: "filterInformation", isEmpty: "isEmpty", applyFilter: "applyFilter", sortByClicked: "sortByClicked", exportClicked: "exportClicked" }, host: { listeners: { "keydown": "onKeyDown($event)" } }, ngImport: i0, template: "<div class=\"main-filter-builder\">\n\n <!-- Desktop View -->\n <div class=\"filterForm desktop-view\">\n <div class=\"filterForm__row\">\n <div class=\"filterForm__col\">\n <app-field-filter\n [editable]=\"isEditable()\"\n [filter]=\"filter\"\n [pageInfo]=\"pageInfo\"\n *ngIf=\"isEditable()\"\n [filterFields]=\"filterFields\"\n [filterResetNonce]=\"filterResetNonce\"\n (filterFieldInformation)=\"formChanges($event)\"\n class=\"filterForm__filed-filter\"\n >\n </app-field-filter>\n </div>\n <div class=\"button-group\">\n <button\n mat-flat-button\n class=\"btn-apply-filter\"\n type=\"button\"\n (click)=\"onClearFilters()\">\n <div class=\"button-text\">\n <mat-icon>clear_all</mat-icon>\n <span>{{ 'FILTER-BUILDER.clearFilters' | translate }}</span>\n </div>\n </button>\n <button\n mat-flat-button\n class=\"btn-apply-filter\"\n type=\"button\"\n [disabled]=\"dateRangeInvalid\"\n (click)=\"onApplyFilter()\">\n <div class=\"button-text\">\n <mat-icon>filter_list</mat-icon>\n <span>{{ 'FILTER-BUILDER.applyFilter' | translate }}</span>\n </div>\n </button>\n </div>\n </div>\n </div>\n\n <!-- Mobile View -->\n <div class=\"mobile-view\">\n <!-- Mobile Row 1: Search Field and Export Button -->\n <div class=\"mobile-search-row\">\n <div class=\"mobile-search-field\">\n <app-field-filter\n [editable]=\"isEditable()\"\n [filter]=\"filter\"\n [pageInfo]=\"pageInfo\"\n *ngIf=\"isEditable()\"\n [filterFields]=\"filterFields\"\n [filterResetNonce]=\"filterResetNonce\"\n (filterFieldInformation)=\"formChanges($event)\"\n class=\"mobile-field-filter\"\n >\n </app-field-filter>\n </div>\n <button\n *ngIf=\"showExportButton\"\n mat-flat-button\n class=\"btn-export-mobile\"\n [disabled]=\"exportDisabled\"\n [matMenuTriggerFor]=\"exportMenu\">\n <div class=\"button-content\">\n <mat-icon>file_export</mat-icon>\n <mat-icon class=\"arrow-icon\">keyboard_arrow_down</mat-icon>\n </div>\n </button>\n <mat-menu #exportMenu=\"matMenu\">\n <button mat-menu-item (click)=\"onExportClick('pdf')\">PDF</button>\n <button mat-menu-item (click)=\"onExportClick('xlsx')\">Excel</button>\n <button mat-menu-item (click)=\"onExportClick('csv')\">CSV</button>\n </mat-menu>\n </div>\n\n <!-- Mobile Row 2: Filter By and Sort By Buttons -->\n <div class=\"mobile-filter-row\">\n <button\n mat-flat-button\n class=\"btn-filter-by btn-filter-by--icon-only\"\n type=\"button\"\n (click)=\"onClearFilters()\"\n [attr.aria-label]=\"'FILTER-BUILDER.clearFilters' | translate\">\n <div class=\"button-content\">\n <mat-icon>delete_sweep</mat-icon>\n </div>\n </button>\n <button\n mat-flat-button\n class=\"btn-filter-by\"\n type=\"button\"\n [disabled]=\"dateRangeInvalid\"\n (click)=\"onApplyFilter()\">\n <div class=\"button-content\">\n <mat-icon>filter_list</mat-icon>\n <span>{{ 'FILTER-BUILDER.applyFilter' | translate }}</span>\n </div>\n </button>\n <button\n mat-flat-button\n class=\"btn-sort-by\"\n type=\"button\"\n [matMenuTriggerFor]=\"sortMenu\">\n <div class=\"button-content\">\n <mat-icon>unfold_more</mat-icon>\n <span>{{ 'FILTER-BUILDER.sortBy' | translate }}</span>\n <mat-icon class=\"arrow-icon\">keyboard_arrow_down</mat-icon>\n </div>\n </button>\n <mat-menu #sortMenu=\"matMenu\">\n <button\n *ngFor=\"let column of getSortableColumns()\"\n mat-menu-item\n (click)=\"onSortByClick(column.property)\">\n {{ labelKey(column) | translate }}\n </button>\n <button\n *ngIf=\"getSortableColumns().length === 0\"\n mat-menu-item\n disabled>\n {{ 'FILTER-BUILDER.noSortableColumns' | translate }}\n </button>\n </mat-menu>\n </div>\n </div>\n\n<!-- <div *ngIf=\"checkIsEmpty()\" class=\"line-top\">-->\n<!-- <mat-divider></mat-divider>-->\n<!-- </div>-->\n\n<!-- <div class=\"line-bottom\">-->\n<!-- <mat-divider></mat-divider>-->\n<!-- </div>-->\n\n<!-- <div class=\"action\">-->\n<!-- <button class=\"btn-none-background-primary action__clear\" mat-button (click)=\"deleteAll()\">-->\n<!-- {{'FILTER-BUILDER.clearAllFilters' | translate}}-->\n<!-- </button>-->\n<!-- <button class=\"btn-background-primary\" mat-button (click)=\"doSearch()\">-->\n<!-- {{'FILTER-BUILDER.search' | translate}}-->\n<!-- </button>-->\n<!-- </div>-->\n</div>\n", styles: [".main-filter-builder{width:100%;max-width:100%;box-sizing:border-box;flex:1 1 auto;min-width:0;display:flex;align-items:center;overflow:visible;min-height:48px;margin-bottom:7px}.main-filter-builder .filterForm{display:flex;width:100%;max-width:100%;box-sizing:border-box;align-items:center}.main-filter-builder .filterForm__row{display:flex;align-items:center;gap:16px;margin:0;flex-wrap:nowrap;width:100%;max-width:100%;box-sizing:border-box;min-width:0}.main-filter-builder .filterForm__col{flex:1 1 auto;min-width:0;max-width:none;width:auto}.main-filter-builder .filterForm__filed-filter{margin:0!important}.main-filter-builder .filterForm__filed-filter ::ng-deep .main-form-canvas{display:flex!important;flex-direction:row!important;align-items:center!important;margin-top:0!important;width:100%!important;flex-wrap:nowrap!important;gap:16px!important}.main-filter-builder .filterForm__filed-filter ::ng-deep .form-wrapper{display:flex!important;flex-direction:row!important;align-items:center!important;flex:1 1 auto!important;width:100%!important;min-width:0!important}.main-filter-builder .filterForm__filed-filter ::ng-deep .form-content{width:100%!important;display:flex!important;flex-direction:row!important;align-items:center!important}.main-filter-builder .filterForm__filed-filter ::ng-deep .form-row{display:flex!important;gap:16px;align-items:center;flex-wrap:nowrap;width:100%!important}.main-filter-builder .filterForm__filed-filter ::ng-deep .form-column{flex:0 0 auto;width:100%}.main-filter-builder .filterForm__filed-filter ::ng-deep .row-container{display:flex;gap:16px;align-items:center;flex-wrap:nowrap;width:auto}.main-filter-builder .filterForm__filed-filter ::ng-deep .field-column{flex:0 0 auto;width:auto}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field{width:auto!important;margin:0!important;overflow:visible!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-form-field-infix{min-height:44px!important;padding:0 16px!important;display:flex!important;align-items:center!important;border-top:none!important;overflow:visible!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-form-field-input-control{height:44px!important;font-weight:300!important;font-size:16px!important;line-height:1.2!important;color:#000!important;overflow:visible!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-form-field-outline{border:1px solid #b7b7b7!important;border-radius:8px!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-form-field-icon-prefix{padding-right:4px!important;display:flex!important;align-items:center!important;justify-content:center!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-form-field-icon-prefix mat-icon{font-size:24px!important;width:10px!important;height:28px!important;color:#0d4261!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-form-field-icon-suffix{padding-left:0!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-form-field-icon-suffix mat-icon{font-size:24px!important;width:24px!important;height:24px!important;color:#0d4261!important;margin-top:6px}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field input::placeholder{color:#888!important;font-weight:300!important;font-size:16px!important;line-height:1.2!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-select{font-weight:300!important;font-size:16px!important;line-height:1.2!important;color:#888!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-datepicker-toggle .mat-icon-button{width:24px!important;height:24px!important;padding:0!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-datepicker-toggle .mat-icon-button mat-icon{font-size:24px!important;width:24px!important;height:24px!important;color:#0d4261}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-form-field-subscript-wrapper{height:0!important;min-height:0!important;margin:0!important;padding:0!important}.main-filter-builder .filterForm .action-filter{flex:0 0 auto}.main-filter-builder .filterForm .action-filter .edit-design{margin:auto}.main-filter-builder .filterForm .action-filter .edit-design__add-button{background:#fff!important;color:var(--primary-color)!important;height:48px;width:48px;border-radius:5px;border:#D9D9D9 solid 1px;margin:30px 0 0}.main-filter-builder .filterForm .action-filter .edit-design__add-button__add-button-text{margin:0 5px}.main-filter-builder .line-top mat-divider{width:98%;margin:0 auto 10px}.main-filter-builder .advanced-button{display:flex;flex-wrap:wrap;gap:8px}.main-filter-builder .advanced-button .view{background:#e3fbff!important;border:1px solid #00ABC8!important;border-radius:6px!important;margin:10px 0;padding:6px 8px;height:32px;margin-top:0!important;display:flex;align-items:center;gap:6px}.main-filter-builder .advanced-button .view__filed{margin-top:-3px;display:inline-block;color:#1c355e;font-weight:400;font-size:14px;line-height:16px;font-style:normal;text-align:center!important}.main-filter-builder .advanced-button .view__close{margin-left:6px}.main-filter-builder .advanced-button .view__close__icon{color:#1c355e;font-size:14px;cursor:pointer;display:inline-block}.main-filter-builder .line-bottom mat-divider{width:98%;margin:0 auto 10px}.main-filter-builder .action{justify-content:end;padding:5px 10px 10px}.main-filter-builder .action__clear{border:none!important;margin:0 5px}@media (max-width: 599.98px){.main-filter-builder .filterForm__row{flex-wrap:wrap}.main-filter-builder .filterForm .action-filter .edit-design__add-button{width:100%;height:45px;margin:5px 5px 10px}}@media (min-width: 600px){.main-filter-builder .add-text-responsive{display:none}}.main-filter-builder .button-group{display:flex!important;flex-direction:row!important;align-items:center!important;justify-content:flex-end;gap:8px!important;flex-shrink:0!important;flex-grow:0!important;flex-basis:auto!important;white-space:nowrap!important;min-width:0!important;max-width:none!important}.main-filter-builder .btn-apply-filter{background:#fff!important;border:1px solid #3e627b!important;border-radius:8px!important;height:46px!important;min-width:120px!important;padding:0 16px!important;box-shadow:none!important}.main-filter-builder .btn-apply-filter .button-text{display:flex;align-items:center;justify-content:center;gap:4px;width:100%}.main-filter-builder .btn-apply-filter mat-icon{font-size:24px;width:24px;height:30px;color:#0d4261}.main-filter-builder .btn-apply-filter span{font-family:Lusail,sans-serif;font-weight:500;font-size:16px;line-height:1.2;color:#0d4261;white-space:nowrap}.main-filter-builder .btn-apply-filter:hover:not(:disabled){background:#fafafa!important}.main-filter-builder .btn-apply-filter:disabled{opacity:.45;cursor:not-allowed}.main-filter-builder .mobile-view{display:none;flex-direction:column;gap:8px;width:100%;box-sizing:border-box}.main-filter-builder .mobile-filter-row{display:flex;align-items:center;gap:8px;width:100%;box-sizing:border-box}.main-filter-builder .btn-filter-by,.main-filter-builder .btn-sort-by{background:#fff!important;border:1px solid #3e627b!important;border-radius:8px!important;height:40px!important;flex:1 1 0!important;min-width:0!important;padding:0 16px!important;box-shadow:none!important;display:flex!important;align-items:center!important;justify-content:center!important;cursor:pointer!important}.main-filter-builder .btn-filter-by .button-content,.main-filter-builder .btn-sort-by .button-content{display:flex;align-items:center;justify-content:center;gap:4px;width:100%}.main-filter-builder .btn-filter-by mat-icon,.main-filter-builder .btn-sort-by mat-icon{font-size:24px;width:24px;height:28px;color:#0d4261}.main-filter-builder .btn-filter-by span,.main-filter-builder .btn-sort-by span{font-family:Lusail,sans-serif;font-weight:500;font-size:16px;line-height:1;color:#0d4261;white-space:nowrap}.main-filter-builder .btn-filter-by:hover:not(:disabled),.main-filter-builder .btn-sort-by:hover:not(:disabled){background:#fafafa!important}.main-filter-builder .btn-filter-by:disabled,.main-filter-builder .btn-sort-by:disabled{opacity:.45;cursor:not-allowed}.main-filter-builder .btn-sort-by{border:1px solid #0d4261!important}.main-filter-builder .btn-sort-by .sort-icons{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:0;height:24px;width:24px;flex-shrink:0}.main-filter-builder .btn-sort-by .sort-icons .sort-arrow-up,.main-filter-builder .btn-sort-by .sort-icons .sort-arrow-down{font-size:16px;width:16px;height:8px;line-height:8px;margin:0;color:#0d4261}.main-filter-builder .btn-sort-by .sort-icons .sort-arrow-up{margin-bottom:-2px}.main-filter-builder .btn-sort-by .sort-icons .sort-arrow-down{margin-top:-2px}.main-filter-builder .btn-sort-by .arrow-icon{font-size:16px;width:16px;height:16px;margin-left:auto}.main-filter-builder .btn-filter-by.btn-filter-by--icon-only{flex:0 0 44px!important;min-width:44px!important;max-width:48px!important;padding:0 6px!important}.main-filter-builder .mobile-search-row{display:flex;align-items:flex-start;gap:8px;width:100%;box-sizing:border-box}.main-filter-builder .mobile-search-field{flex:1;min-width:0;width:100%;max-width:none}.main-filter-builder .btn-export-mobile{background:transparent!important;border:none!important;border-radius:8px!important;height:40px!important;width:60px!important;padding:0!important;box-shadow:none!important;display:flex!important;align-items:center!important;justify-content:center!important;cursor:pointer!important;flex-shrink:0!important}.main-filter-builder .btn-export-mobile .button-content{display:flex;align-items:center;justify-content:center;gap:4px;width:100%}.main-filter-builder .btn-export-mobile mat-icon{font-size:24px;width:24px;height:24px;color:#0d4261}.main-filter-builder .btn-export-mobile .arrow-icon{font-size:16px;width:16px;height:16px}.main-filter-builder .btn-export-mobile:hover:not(:disabled){background:#fafafa!important}.main-filter-builder .btn-export-mobile:disabled,.main-filter-builder .btn-export-mobile.mat-mdc-button-disabled{opacity:.45;cursor:not-allowed;pointer-events:none}.main-filter-builder .mobile-field-filter{margin:0!important;width:100%!important}.main-filter-builder .mobile-field-filter ::ng-deep .main-form-canvas{display:flex!important;flex-direction:row!important;align-items:center!important;margin-top:0!important;width:100%!important;flex-wrap:wrap!important;gap:8px!important}.main-filter-builder .mobile-field-filter ::ng-deep .form-wrapper{display:flex!important;flex-direction:row!important;align-items:center!important;flex:1 1 auto!important;width:100%!important;min-width:0!important}.main-filter-builder .mobile-field-filter ::ng-deep .form-content{width:100%!important;align-items:center!important}.main-filter-builder .mobile-field-filter ::ng-deep .field-column:has(.multi-state-filter){display:flex!important;flex:1 1 100%!important;width:100%!important;min-width:0!important}.main-filter-builder .mobile-field-filter ::ng-deep mat-form-field{width:100%!important;margin:0!important;overflow:visible!important}.main-filter-builder .mobile-field-filter ::ng-deep mat-form-field .mat-mdc-form-field-infix{min-height:40px!important;padding:0 16px!important;display:flex!important;align-items:center!important;border-top:none!important;overflow:visible!important}.main-filter-builder .mobile-field-filter ::ng-deep mat-form-field .mat-mdc-form-field-input-control{height:40px!important;font-weight:300!important;font-size:16px!important;line-height:1.2!important;color:#000!important;overflow:visible!important}.main-filter-builder .mobile-field-filter ::ng-deep mat-form-field .mat-mdc-form-field-outline{border:1px solid #b7b7b7!important;border-radius:8px!important}.main-filter-builder .mobile-field-filter ::ng-deep mat-form-field .mat-mdc-form-field-icon-prefix{padding-right:4px!important;display:flex!important;align-items:center!important;justify-content:center!important}.main-filter-builder .mobile-field-filter ::ng-deep mat-form-field .mat-mdc-form-field-icon-prefix mat-icon{font-size:24px!important;width:24px!important;height:24px!important;color:#0d4261!important}.main-filter-builder .mobile-field-filter ::ng-deep mat-form-field input::placeholder{color:#888!important;font-weight:300!important;font-size:16px!important;line-height:1.2!important}@container base-table (min-width: 769px) and (max-width: 900px){.main-filter-builder{margin-bottom:0}.main-filter-builder .filterForm__row{align-items:flex-end}.main-filter-builder .filterForm__col{flex:1 1 auto;min-width:0;width:auto}.main-filter-builder .filterForm__filed-filter ::ng-deep .main-form-canvas,.main-filter-builder .filterForm__filed-filter ::ng-deep .form-wrapper,.main-filter-builder .filterForm__filed-filter ::ng-deep .form-content,.main-filter-builder .filterForm__filed-filter ::ng-deep .form-row,.main-filter-builder .filterForm__filed-filter ::ng-deep .form-column,.main-filter-builder .filterForm__filed-filter ::ng-deep .row-container{width:100%!important;flex-direction:row!important;flex-wrap:wrap!important}.main-filter-builder .filterForm__filed-filter ::ng-deep .row-container{display:flex!important;gap:12px!important}.main-filter-builder .filterForm__filed-filter ::ng-deep .field-column{flex:1 1 calc(50% - 12px)!important;width:calc(50% - 12px)!important;max-width:calc(50% - 12px)!important;min-width:180px!important}.main-filter-builder .filterForm__filed-filter ::ng-deep .multi-state-filter,.main-filter-builder .filterForm__filed-filter ::ng-deep .multi-state-filter__trigger,.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field{width:100%!important}.main-filter-builder .button-group{flex-direction:column-reverse!important;justify-content:flex-start!important;gap:12px!important}.main-filter-builder .btn-apply-filter{height:45px!important;margin-bottom:0!important}}@media (max-width: 768px){.main-filter-builder .desktop-view{display:none!important}.main-filter-builder .mobile-view{display:flex!important}}@media (min-width: 769px){.main-filter-builder .desktop-view{display:flex!important}.main-filter-builder .mobile-view{display:none!important}}:host-context([dir=ltr]) .main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-form-field-infix{padding-right:0!important}:host-context([dir=rtl]) .main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-form-field-infix{padding-left:0!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: FieldFilterComponent, selector: "app-field-filter", inputs: ["filter", "pageInfo", "filterFields", "item", "editable", "filterResetNonce"], outputs: ["selectedValue", "filterFieldInformation"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }] }); }
|
|
289
289
|
}
|
|
290
290
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FilterBuilderComponent, decorators: [{
|
|
291
291
|
type: Component,
|
|
@@ -299,7 +299,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
299
299
|
MatMenuItem,
|
|
300
300
|
MatMenuTrigger,
|
|
301
301
|
NgForOf
|
|
302
|
-
], template: "<div class=\"main-filter-builder\">\n\n <!-- Desktop View -->\n <div class=\"filterForm desktop-view\">\n <div class=\"filterForm__row\">\n <div class=\"filterForm__col\">\n <app-field-filter\n [editable]=\"isEditable()\"\n [filter]=\"filter\"\n [pageInfo]=\"pageInfo\"\n *ngIf=\"isEditable()\"\n [filterFields]=\"filterFields\"\n [filterResetNonce]=\"filterResetNonce\"\n (filterFieldInformation)=\"formChanges($event)\"\n class=\"filterForm__filed-filter\"\n >\n </app-field-filter>\n </div>\n <div class=\"button-group\">\n <button\n mat-flat-button\n class=\"btn-apply-filter\"\n type=\"button\"\n (click)=\"onClearFilters()\">\n <div class=\"button-text\">\n <mat-icon>clear_all</mat-icon>\n <span>{{ 'FILTER-BUILDER.clearFilters' | translate }}</span>\n </div>\n </button>\n <button\n mat-flat-button\n class=\"btn-apply-filter\"\n type=\"button\"\n [disabled]=\"dateRangeInvalid\"\n (click)=\"onApplyFilter()\">\n <div class=\"button-text\">\n <mat-icon>filter_list</mat-icon>\n <span>{{ 'FILTER-BUILDER.applyFilter' | translate }}</span>\n </div>\n </button>\n </div>\n </div>\n </div>\n\n <!-- Mobile View -->\n <div class=\"mobile-view\">\n <!-- Mobile Row 1: Search Field and Export Button -->\n <div class=\"mobile-search-row\">\n <div class=\"mobile-search-field\">\n <app-field-filter\n [editable]=\"isEditable()\"\n [filter]=\"filter\"\n [pageInfo]=\"pageInfo\"\n *ngIf=\"isEditable()\"\n [filterFields]=\"filterFields\"\n [filterResetNonce]=\"filterResetNonce\"\n (filterFieldInformation)=\"formChanges($event)\"\n class=\"mobile-field-filter\"\n >\n </app-field-filter>\n </div>\n <button\n *ngIf=\"showExportButton\"\n mat-flat-button\n class=\"btn-export-mobile\"\n [disabled]=\"exportDisabled\"\n [matMenuTriggerFor]=\"exportMenu\">\n <div class=\"button-content\">\n <mat-icon>file_export</mat-icon>\n <mat-icon class=\"arrow-icon\">keyboard_arrow_down</mat-icon>\n </div>\n </button>\n <mat-menu #exportMenu=\"matMenu\">\n <button mat-menu-item (click)=\"onExportClick('pdf')\">PDF</button>\n <button mat-menu-item (click)=\"onExportClick('xlsx')\">Excel</button>\n <button mat-menu-item (click)=\"onExportClick('csv')\">CSV</button>\n </mat-menu>\n </div>\n\n <!-- Mobile Row 2: Filter By and Sort By Buttons -->\n <div class=\"mobile-filter-row\">\n <button\n mat-flat-button\n class=\"btn-filter-by btn-filter-by--icon-only\"\n type=\"button\"\n (click)=\"onClearFilters()\"\n [attr.aria-label]=\"'FILTER-BUILDER.clearFilters' | translate\">\n <div class=\"button-content\">\n <mat-icon>delete_sweep</mat-icon>\n </div>\n </button>\n <button\n mat-flat-button\n class=\"btn-filter-by\"\n type=\"button\"\n [disabled]=\"dateRangeInvalid\"\n (click)=\"onApplyFilter()\">\n <div class=\"button-content\">\n <mat-icon>filter_list</mat-icon>\n <span>{{ 'FILTER-BUILDER.applyFilter' | translate }}</span>\n </div>\n </button>\n <button\n mat-flat-button\n class=\"btn-sort-by\"\n type=\"button\"\n [matMenuTriggerFor]=\"sortMenu\">\n <div class=\"button-content\">\n <mat-icon>unfold_more</mat-icon>\n <span>{{ 'FILTER-BUILDER.sortBy' | translate }}</span>\n <mat-icon class=\"arrow-icon\">keyboard_arrow_down</mat-icon>\n </div>\n </button>\n <mat-menu #sortMenu=\"matMenu\">\n <button\n *ngFor=\"let column of getSortableColumns()\"\n mat-menu-item\n (click)=\"onSortByClick(column.property)\">\n {{ labelKey(column) | translate }}\n </button>\n <button\n *ngIf=\"getSortableColumns().length === 0\"\n mat-menu-item\n disabled>\n {{ 'FILTER-BUILDER.noSortableColumns' | translate }}\n </button>\n </mat-menu>\n </div>\n </div>\n\n<!-- <div *ngIf=\"checkIsEmpty()\" class=\"line-top\">-->\n<!-- <mat-divider></mat-divider>-->\n<!-- </div>-->\n\n<!-- <div class=\"line-bottom\">-->\n<!-- <mat-divider></mat-divider>-->\n<!-- </div>-->\n\n<!-- <div class=\"action\">-->\n<!-- <button class=\"btn-none-background-primary action__clear\" mat-button (click)=\"deleteAll()\">-->\n<!-- {{'FILTER-BUILDER.clearAllFilters' | translate}}-->\n<!-- </button>-->\n<!-- <button class=\"btn-background-primary\" mat-button (click)=\"doSearch()\">-->\n<!-- {{'FILTER-BUILDER.search' | translate}}-->\n<!-- </button>-->\n<!-- </div>-->\n</div>\n", styles: [".main-filter-builder{width:100%;max-width:100%;box-sizing:border-box;flex:1 1 auto;min-width:0;display:flex;align-items:center;overflow:visible;min-height:48px;margin-bottom:7px}.main-filter-builder .filterForm{display:flex;width:100%;max-width:100%;box-sizing:border-box;align-items:center}.main-filter-builder .filterForm__row{display:flex;align-items:center;gap:16px;margin:0;flex-wrap:nowrap;width:100%;max-width:100%;box-sizing:border-box;min-width:0}.main-filter-builder .filterForm__col{flex:1 1 auto;min-width:0;max-width:none;width:auto}.main-filter-builder .filterForm__filed-filter{margin:0!important}.main-filter-builder .filterForm__filed-filter ::ng-deep .main-form-canvas{display:flex!important;flex-direction:row!important;align-items:center!important;margin-top:0!important;width:100%!important;flex-wrap:nowrap!important;gap:16px!important}.main-filter-builder .filterForm__filed-filter ::ng-deep .form-wrapper{display:flex!important;flex-direction:row!important;align-items:center!important;flex:1 1 auto!important;width:100%!important;min-width:0!important}.main-filter-builder .filterForm__filed-filter ::ng-deep .form-content{width:100%!important;display:flex!important;flex-direction:row!important;align-items:center!important}.main-filter-builder .filterForm__filed-filter ::ng-deep .form-row{display:flex!important;gap:16px;align-items:center;flex-wrap:nowrap;width:100%!important}.main-filter-builder .filterForm__filed-filter ::ng-deep .form-column{flex:0 0 auto;width:100%}.main-filter-builder .filterForm__filed-filter ::ng-deep .row-container{display:flex;gap:16px;align-items:center;flex-wrap:nowrap;width:auto}.main-filter-builder .filterForm__filed-filter ::ng-deep .field-column{flex:0 0 auto;width:auto}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field{width:auto!important;margin:0!important;overflow:visible!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-form-field-infix{min-height:44px!important;padding:0 16px!important;display:flex!important;align-items:center!important;border-top:none!important;overflow:visible!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-form-field-input-control{height:44px!important;font-weight:300!important;font-size:16px!important;line-height:1.2!important;color:#000!important;overflow:visible!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-form-field-outline{border:1px solid #b7b7b7!important;border-radius:8px!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-form-field-icon-prefix{padding-right:4px!important;display:flex!important;align-items:center!important;justify-content:center!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-form-field-icon-prefix mat-icon{font-size:24px!important;width:10px!important;height:28px!important;color:#0d4261!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-form-field-icon-suffix{padding-left:0!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-form-field-icon-suffix mat-icon{font-size:24px!important;width:24px!important;height:24px!important;color:#0d4261!important;margin-top:6px}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field input::placeholder{color:#888!important;font-weight:300!important;font-size:16px!important;line-height:1.2!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-select{font-weight:300!important;font-size:16px!important;line-height:1.2!important;color:#888!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-datepicker-toggle .mat-icon-button{width:24px!important;height:24px!important;padding:0!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-datepicker-toggle .mat-icon-button mat-icon{font-size:24px!important;width:24px!important;height:24px!important;color:#0d4261}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-form-field-subscript-wrapper{height:0!important;min-height:0!important;margin:0!important;padding:0!important}.main-filter-builder .filterForm .action-filter{flex:0 0 auto}.main-filter-builder .filterForm .action-filter .edit-design{margin:auto}.main-filter-builder .filterForm .action-filter .edit-design__add-button{background:#fff!important;color:var(--primary-color)!important;height:48px;width:48px;border-radius:5px;border:#D9D9D9 solid 1px;margin:30px 0 0}.main-filter-builder .filterForm .action-filter .edit-design__add-button__add-button-text{margin:0 5px}.main-filter-builder .line-top mat-divider{width:98%;margin:0 auto 10px}.main-filter-builder .advanced-button{display:flex;flex-wrap:wrap;gap:8px}.main-filter-builder .advanced-button .view{background:#e3fbff!important;border:1px solid #00ABC8!important;border-radius:6px!important;margin:10px 0;padding:6px 8px;height:32px;margin-top:0!important;display:flex;align-items:center;gap:6px}.main-filter-builder .advanced-button .view__filed{margin-top:-3px;display:inline-block;color:#1c355e;font-weight:400;font-size:14px;line-height:16px;font-style:normal;text-align:center!important}.main-filter-builder .advanced-button .view__close{margin-left:6px}.main-filter-builder .advanced-button .view__close__icon{color:#1c355e;font-size:14px;cursor:pointer;display:inline-block}.main-filter-builder .line-bottom mat-divider{width:98%;margin:0 auto 10px}.main-filter-builder .action{justify-content:end;padding:5px 10px 10px}.main-filter-builder .action__clear{border:none!important;margin:0 5px}@media (max-width: 599.98px){.main-filter-builder .filterForm__row{flex-wrap:wrap}.main-filter-builder .filterForm .action-filter .edit-design__add-button{width:100%;height:45px;margin:5px 5px 10px}}@media (min-width: 600px){.main-filter-builder .add-text-responsive{display:none}}.main-filter-builder .button-group{display:flex!important;flex-direction:row!important;align-items:center!important;justify-content:flex-end;gap:8px!important;flex-shrink:0!important;flex-grow:0!important;flex-basis:auto!important;height:46px!important;white-space:nowrap!important;min-width:0!important;max-width:none!important}.main-filter-builder .btn-apply-filter{background:#fff!important;border:1px solid #3e627b!important;border-radius:8px!important;height:46px!important;min-width:120px!important;padding:0 16px!important;box-shadow:none!important}.main-filter-builder .btn-apply-filter .button-text{display:flex;align-items:center;justify-content:center;gap:4px;width:100%}.main-filter-builder .btn-apply-filter mat-icon{font-size:24px;width:24px;height:30px;color:#0d4261}.main-filter-builder .btn-apply-filter span{font-family:Lusail,sans-serif;font-weight:500;font-size:16px;line-height:1.2;color:#0d4261;white-space:nowrap}.main-filter-builder .btn-apply-filter:hover:not(:disabled){background:#fafafa!important}.main-filter-builder .btn-apply-filter:disabled{opacity:.45;cursor:not-allowed}.main-filter-builder .mobile-view{display:none;flex-direction:column;gap:8px;width:100%;box-sizing:border-box}.main-filter-builder .mobile-filter-row{display:flex;align-items:center;gap:8px;width:100%;box-sizing:border-box}.main-filter-builder .btn-filter-by,.main-filter-builder .btn-sort-by{background:#fff!important;border:1px solid #3e627b!important;border-radius:8px!important;height:40px!important;flex:1 1 0!important;min-width:0!important;padding:0 16px!important;box-shadow:none!important;display:flex!important;align-items:center!important;justify-content:center!important;cursor:pointer!important}.main-filter-builder .btn-filter-by .button-content,.main-filter-builder .btn-sort-by .button-content{display:flex;align-items:center;justify-content:center;gap:4px;width:100%}.main-filter-builder .btn-filter-by mat-icon,.main-filter-builder .btn-sort-by mat-icon{font-size:24px;width:24px;height:28px;color:#0d4261}.main-filter-builder .btn-filter-by span,.main-filter-builder .btn-sort-by span{font-family:Lusail,sans-serif;font-weight:500;font-size:16px;line-height:1;color:#0d4261;white-space:nowrap}.main-filter-builder .btn-filter-by:hover:not(:disabled),.main-filter-builder .btn-sort-by:hover:not(:disabled){background:#fafafa!important}.main-filter-builder .btn-filter-by:disabled,.main-filter-builder .btn-sort-by:disabled{opacity:.45;cursor:not-allowed}.main-filter-builder .btn-sort-by{border:1px solid #0d4261!important}.main-filter-builder .btn-sort-by .sort-icons{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:0;height:24px;width:24px;flex-shrink:0}.main-filter-builder .btn-sort-by .sort-icons .sort-arrow-up,.main-filter-builder .btn-sort-by .sort-icons .sort-arrow-down{font-size:16px;width:16px;height:8px;line-height:8px;margin:0;color:#0d4261}.main-filter-builder .btn-sort-by .sort-icons .sort-arrow-up{margin-bottom:-2px}.main-filter-builder .btn-sort-by .sort-icons .sort-arrow-down{margin-top:-2px}.main-filter-builder .btn-sort-by .arrow-icon{font-size:16px;width:16px;height:16px;margin-left:auto}.main-filter-builder .btn-filter-by.btn-filter-by--icon-only{flex:0 0 44px!important;min-width:44px!important;max-width:48px!important;padding:0 6px!important}.main-filter-builder .mobile-search-row{display:flex;align-items:flex-start;gap:8px;width:100%;box-sizing:border-box}.main-filter-builder .mobile-search-field{flex:1;min-width:0;width:100%;max-width:none}.main-filter-builder .btn-export-mobile{background:transparent!important;border:none!important;border-radius:8px!important;height:40px!important;width:60px!important;padding:0!important;box-shadow:none!important;display:flex!important;align-items:center!important;justify-content:center!important;cursor:pointer!important;flex-shrink:0!important}.main-filter-builder .btn-export-mobile .button-content{display:flex;align-items:center;justify-content:center;gap:4px;width:100%}.main-filter-builder .btn-export-mobile mat-icon{font-size:24px;width:24px;height:24px;color:#0d4261}.main-filter-builder .btn-export-mobile .arrow-icon{font-size:16px;width:16px;height:16px}.main-filter-builder .btn-export-mobile:hover:not(:disabled){background:#fafafa!important}.main-filter-builder .btn-export-mobile:disabled,.main-filter-builder .btn-export-mobile.mat-mdc-button-disabled{opacity:.45;cursor:not-allowed;pointer-events:none}.main-filter-builder .mobile-field-filter{margin:0!important;width:100%!important}.main-filter-builder .mobile-field-filter ::ng-deep .main-form-canvas{display:flex!important;flex-direction:row!important;align-items:center!important;margin-top:0!important;width:100%!important;flex-wrap:wrap!important;gap:8px!important}.main-filter-builder .mobile-field-filter ::ng-deep .form-wrapper{display:flex!important;flex-direction:row!important;align-items:center!important;flex:1 1 auto!important;width:100%!important;min-width:0!important}.main-filter-builder .mobile-field-filter ::ng-deep .form-content{width:100%!important;align-items:center!important}.main-filter-builder .mobile-field-filter ::ng-deep .field-column:has(.multi-state-filter){display:flex!important;flex:1 1 100%!important;width:100%!important;min-width:0!important}.main-filter-builder .mobile-field-filter ::ng-deep mat-form-field{width:100%!important;margin:0!important;overflow:visible!important}.main-filter-builder .mobile-field-filter ::ng-deep mat-form-field .mat-mdc-form-field-infix{min-height:40px!important;padding:0 16px!important;display:flex!important;align-items:center!important;border-top:none!important;overflow:visible!important}.main-filter-builder .mobile-field-filter ::ng-deep mat-form-field .mat-mdc-form-field-input-control{height:40px!important;font-weight:300!important;font-size:16px!important;line-height:1.2!important;color:#000!important;overflow:visible!important}.main-filter-builder .mobile-field-filter ::ng-deep mat-form-field .mat-mdc-form-field-outline{border:1px solid #b7b7b7!important;border-radius:8px!important}.main-filter-builder .mobile-field-filter ::ng-deep mat-form-field .mat-mdc-form-field-icon-prefix{padding-right:4px!important;display:flex!important;align-items:center!important;justify-content:center!important}.main-filter-builder .mobile-field-filter ::ng-deep mat-form-field .mat-mdc-form-field-icon-prefix mat-icon{font-size:24px!important;width:24px!important;height:24px!important;color:#0d4261!important}.main-filter-builder .mobile-field-filter ::ng-deep mat-form-field input::placeholder{color:#888!important;font-weight:300!important;font-size:16px!important;line-height:1.2!important}@container base-table (min-width: 769px) and (max-width: 900px){.main-filter-builder{margin-bottom:0}.main-filter-builder .filterForm__row{align-items:flex-end}.main-filter-builder .filterForm__col{flex:1 1 auto;min-width:0;width:auto}.main-filter-builder .filterForm__filed-filter ::ng-deep .main-form-canvas,.main-filter-builder .filterForm__filed-filter ::ng-deep .form-wrapper,.main-filter-builder .filterForm__filed-filter ::ng-deep .form-content,.main-filter-builder .filterForm__filed-filter ::ng-deep .form-row,.main-filter-builder .filterForm__filed-filter ::ng-deep .form-column,.main-filter-builder .filterForm__filed-filter ::ng-deep .row-container{width:100%!important;flex-direction:row!important;flex-wrap:wrap!important}.main-filter-builder .filterForm__filed-filter ::ng-deep .row-container{display:flex!important;gap:12px!important}.main-filter-builder .filterForm__filed-filter ::ng-deep .field-column{flex:1 1 calc(50% - 12px)!important;width:calc(50% - 12px)!important;max-width:calc(50% - 12px)!important;min-width:180px!important}.main-filter-builder .filterForm__filed-filter ::ng-deep .multi-state-filter,.main-filter-builder .filterForm__filed-filter ::ng-deep .multi-state-filter__trigger,.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field{width:100%!important}.main-filter-builder .button-group{flex-direction:column-reverse!important;justify-content:flex-start!important;gap:12px!important}.main-filter-builder .btn-apply-filter{height:45px!important;margin-bottom:0!important}}@media (max-width: 768px){.main-filter-builder .desktop-view{display:none!important}.main-filter-builder .mobile-view{display:flex!important}}@media (min-width: 769px){.main-filter-builder .desktop-view{display:flex!important}.main-filter-builder .mobile-view{display:none!important}}:host-context([dir=ltr]) .main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-form-field-infix{padding-right:0!important}:host-context([dir=rtl]) .main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-form-field-infix{padding-left:0!important}\n"] }]
|
|
302
|
+
], template: "<div class=\"main-filter-builder\">\n\n <!-- Desktop View -->\n <div class=\"filterForm desktop-view\">\n <div class=\"filterForm__row\">\n <div class=\"filterForm__col\">\n <app-field-filter\n [editable]=\"isEditable()\"\n [filter]=\"filter\"\n [pageInfo]=\"pageInfo\"\n *ngIf=\"isEditable()\"\n [filterFields]=\"filterFields\"\n [filterResetNonce]=\"filterResetNonce\"\n (filterFieldInformation)=\"formChanges($event)\"\n class=\"filterForm__filed-filter\"\n >\n </app-field-filter>\n </div>\n <div class=\"button-group\">\n <button\n mat-flat-button\n class=\"btn-apply-filter\"\n type=\"button\"\n (click)=\"onClearFilters()\">\n <div class=\"button-text\">\n <mat-icon>clear_all</mat-icon>\n <span>{{ 'FILTER-BUILDER.clearFilters' | translate }}</span>\n </div>\n </button>\n <button\n mat-flat-button\n class=\"btn-apply-filter\"\n type=\"button\"\n [disabled]=\"dateRangeInvalid\"\n (click)=\"onApplyFilter()\">\n <div class=\"button-text\">\n <mat-icon>filter_list</mat-icon>\n <span>{{ 'FILTER-BUILDER.applyFilter' | translate }}</span>\n </div>\n </button>\n </div>\n </div>\n </div>\n\n <!-- Mobile View -->\n <div class=\"mobile-view\">\n <!-- Mobile Row 1: Search Field and Export Button -->\n <div class=\"mobile-search-row\">\n <div class=\"mobile-search-field\">\n <app-field-filter\n [editable]=\"isEditable()\"\n [filter]=\"filter\"\n [pageInfo]=\"pageInfo\"\n *ngIf=\"isEditable()\"\n [filterFields]=\"filterFields\"\n [filterResetNonce]=\"filterResetNonce\"\n (filterFieldInformation)=\"formChanges($event)\"\n class=\"mobile-field-filter\"\n >\n </app-field-filter>\n </div>\n <button\n *ngIf=\"showExportButton\"\n mat-flat-button\n class=\"btn-export-mobile\"\n [disabled]=\"exportDisabled\"\n [matMenuTriggerFor]=\"exportMenu\">\n <div class=\"button-content\">\n <mat-icon>file_export</mat-icon>\n <mat-icon class=\"arrow-icon\">keyboard_arrow_down</mat-icon>\n </div>\n </button>\n <mat-menu #exportMenu=\"matMenu\">\n <button mat-menu-item (click)=\"onExportClick('pdf')\">PDF</button>\n <button mat-menu-item (click)=\"onExportClick('xlsx')\">Excel</button>\n <button mat-menu-item (click)=\"onExportClick('csv')\">CSV</button>\n </mat-menu>\n </div>\n\n <!-- Mobile Row 2: Filter By and Sort By Buttons -->\n <div class=\"mobile-filter-row\">\n <button\n mat-flat-button\n class=\"btn-filter-by btn-filter-by--icon-only\"\n type=\"button\"\n (click)=\"onClearFilters()\"\n [attr.aria-label]=\"'FILTER-BUILDER.clearFilters' | translate\">\n <div class=\"button-content\">\n <mat-icon>delete_sweep</mat-icon>\n </div>\n </button>\n <button\n mat-flat-button\n class=\"btn-filter-by\"\n type=\"button\"\n [disabled]=\"dateRangeInvalid\"\n (click)=\"onApplyFilter()\">\n <div class=\"button-content\">\n <mat-icon>filter_list</mat-icon>\n <span>{{ 'FILTER-BUILDER.applyFilter' | translate }}</span>\n </div>\n </button>\n <button\n mat-flat-button\n class=\"btn-sort-by\"\n type=\"button\"\n [matMenuTriggerFor]=\"sortMenu\">\n <div class=\"button-content\">\n <mat-icon>unfold_more</mat-icon>\n <span>{{ 'FILTER-BUILDER.sortBy' | translate }}</span>\n <mat-icon class=\"arrow-icon\">keyboard_arrow_down</mat-icon>\n </div>\n </button>\n <mat-menu #sortMenu=\"matMenu\">\n <button\n *ngFor=\"let column of getSortableColumns()\"\n mat-menu-item\n (click)=\"onSortByClick(column.property)\">\n {{ labelKey(column) | translate }}\n </button>\n <button\n *ngIf=\"getSortableColumns().length === 0\"\n mat-menu-item\n disabled>\n {{ 'FILTER-BUILDER.noSortableColumns' | translate }}\n </button>\n </mat-menu>\n </div>\n </div>\n\n<!-- <div *ngIf=\"checkIsEmpty()\" class=\"line-top\">-->\n<!-- <mat-divider></mat-divider>-->\n<!-- </div>-->\n\n<!-- <div class=\"line-bottom\">-->\n<!-- <mat-divider></mat-divider>-->\n<!-- </div>-->\n\n<!-- <div class=\"action\">-->\n<!-- <button class=\"btn-none-background-primary action__clear\" mat-button (click)=\"deleteAll()\">-->\n<!-- {{'FILTER-BUILDER.clearAllFilters' | translate}}-->\n<!-- </button>-->\n<!-- <button class=\"btn-background-primary\" mat-button (click)=\"doSearch()\">-->\n<!-- {{'FILTER-BUILDER.search' | translate}}-->\n<!-- </button>-->\n<!-- </div>-->\n</div>\n", styles: [".main-filter-builder{width:100%;max-width:100%;box-sizing:border-box;flex:1 1 auto;min-width:0;display:flex;align-items:center;overflow:visible;min-height:48px;margin-bottom:7px}.main-filter-builder .filterForm{display:flex;width:100%;max-width:100%;box-sizing:border-box;align-items:center}.main-filter-builder .filterForm__row{display:flex;align-items:center;gap:16px;margin:0;flex-wrap:nowrap;width:100%;max-width:100%;box-sizing:border-box;min-width:0}.main-filter-builder .filterForm__col{flex:1 1 auto;min-width:0;max-width:none;width:auto}.main-filter-builder .filterForm__filed-filter{margin:0!important}.main-filter-builder .filterForm__filed-filter ::ng-deep .main-form-canvas{display:flex!important;flex-direction:row!important;align-items:center!important;margin-top:0!important;width:100%!important;flex-wrap:nowrap!important;gap:16px!important}.main-filter-builder .filterForm__filed-filter ::ng-deep .form-wrapper{display:flex!important;flex-direction:row!important;align-items:center!important;flex:1 1 auto!important;width:100%!important;min-width:0!important}.main-filter-builder .filterForm__filed-filter ::ng-deep .form-content{width:100%!important;display:flex!important;flex-direction:row!important;align-items:center!important}.main-filter-builder .filterForm__filed-filter ::ng-deep .form-row{display:flex!important;gap:16px;align-items:center;flex-wrap:nowrap;width:100%!important}.main-filter-builder .filterForm__filed-filter ::ng-deep .form-column{flex:0 0 auto;width:100%}.main-filter-builder .filterForm__filed-filter ::ng-deep .row-container{display:flex;gap:16px;align-items:center;flex-wrap:nowrap;width:auto}.main-filter-builder .filterForm__filed-filter ::ng-deep .field-column{flex:0 0 auto;width:auto}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field{width:auto!important;margin:0!important;overflow:visible!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-form-field-infix{min-height:44px!important;padding:0 16px!important;display:flex!important;align-items:center!important;border-top:none!important;overflow:visible!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-form-field-input-control{height:44px!important;font-weight:300!important;font-size:16px!important;line-height:1.2!important;color:#000!important;overflow:visible!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-form-field-outline{border:1px solid #b7b7b7!important;border-radius:8px!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-form-field-icon-prefix{padding-right:4px!important;display:flex!important;align-items:center!important;justify-content:center!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-form-field-icon-prefix mat-icon{font-size:24px!important;width:10px!important;height:28px!important;color:#0d4261!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-form-field-icon-suffix{padding-left:0!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-form-field-icon-suffix mat-icon{font-size:24px!important;width:24px!important;height:24px!important;color:#0d4261!important;margin-top:6px}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field input::placeholder{color:#888!important;font-weight:300!important;font-size:16px!important;line-height:1.2!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-select{font-weight:300!important;font-size:16px!important;line-height:1.2!important;color:#888!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-datepicker-toggle .mat-icon-button{width:24px!important;height:24px!important;padding:0!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-datepicker-toggle .mat-icon-button mat-icon{font-size:24px!important;width:24px!important;height:24px!important;color:#0d4261}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-form-field-subscript-wrapper{height:0!important;min-height:0!important;margin:0!important;padding:0!important}.main-filter-builder .filterForm .action-filter{flex:0 0 auto}.main-filter-builder .filterForm .action-filter .edit-design{margin:auto}.main-filter-builder .filterForm .action-filter .edit-design__add-button{background:#fff!important;color:var(--primary-color)!important;height:48px;width:48px;border-radius:5px;border:#D9D9D9 solid 1px;margin:30px 0 0}.main-filter-builder .filterForm .action-filter .edit-design__add-button__add-button-text{margin:0 5px}.main-filter-builder .line-top mat-divider{width:98%;margin:0 auto 10px}.main-filter-builder .advanced-button{display:flex;flex-wrap:wrap;gap:8px}.main-filter-builder .advanced-button .view{background:#e3fbff!important;border:1px solid #00ABC8!important;border-radius:6px!important;margin:10px 0;padding:6px 8px;height:32px;margin-top:0!important;display:flex;align-items:center;gap:6px}.main-filter-builder .advanced-button .view__filed{margin-top:-3px;display:inline-block;color:#1c355e;font-weight:400;font-size:14px;line-height:16px;font-style:normal;text-align:center!important}.main-filter-builder .advanced-button .view__close{margin-left:6px}.main-filter-builder .advanced-button .view__close__icon{color:#1c355e;font-size:14px;cursor:pointer;display:inline-block}.main-filter-builder .line-bottom mat-divider{width:98%;margin:0 auto 10px}.main-filter-builder .action{justify-content:end;padding:5px 10px 10px}.main-filter-builder .action__clear{border:none!important;margin:0 5px}@media (max-width: 599.98px){.main-filter-builder .filterForm__row{flex-wrap:wrap}.main-filter-builder .filterForm .action-filter .edit-design__add-button{width:100%;height:45px;margin:5px 5px 10px}}@media (min-width: 600px){.main-filter-builder .add-text-responsive{display:none}}.main-filter-builder .button-group{display:flex!important;flex-direction:row!important;align-items:center!important;justify-content:flex-end;gap:8px!important;flex-shrink:0!important;flex-grow:0!important;flex-basis:auto!important;white-space:nowrap!important;min-width:0!important;max-width:none!important}.main-filter-builder .btn-apply-filter{background:#fff!important;border:1px solid #3e627b!important;border-radius:8px!important;height:46px!important;min-width:120px!important;padding:0 16px!important;box-shadow:none!important}.main-filter-builder .btn-apply-filter .button-text{display:flex;align-items:center;justify-content:center;gap:4px;width:100%}.main-filter-builder .btn-apply-filter mat-icon{font-size:24px;width:24px;height:30px;color:#0d4261}.main-filter-builder .btn-apply-filter span{font-family:Lusail,sans-serif;font-weight:500;font-size:16px;line-height:1.2;color:#0d4261;white-space:nowrap}.main-filter-builder .btn-apply-filter:hover:not(:disabled){background:#fafafa!important}.main-filter-builder .btn-apply-filter:disabled{opacity:.45;cursor:not-allowed}.main-filter-builder .mobile-view{display:none;flex-direction:column;gap:8px;width:100%;box-sizing:border-box}.main-filter-builder .mobile-filter-row{display:flex;align-items:center;gap:8px;width:100%;box-sizing:border-box}.main-filter-builder .btn-filter-by,.main-filter-builder .btn-sort-by{background:#fff!important;border:1px solid #3e627b!important;border-radius:8px!important;height:40px!important;flex:1 1 0!important;min-width:0!important;padding:0 16px!important;box-shadow:none!important;display:flex!important;align-items:center!important;justify-content:center!important;cursor:pointer!important}.main-filter-builder .btn-filter-by .button-content,.main-filter-builder .btn-sort-by .button-content{display:flex;align-items:center;justify-content:center;gap:4px;width:100%}.main-filter-builder .btn-filter-by mat-icon,.main-filter-builder .btn-sort-by mat-icon{font-size:24px;width:24px;height:28px;color:#0d4261}.main-filter-builder .btn-filter-by span,.main-filter-builder .btn-sort-by span{font-family:Lusail,sans-serif;font-weight:500;font-size:16px;line-height:1;color:#0d4261;white-space:nowrap}.main-filter-builder .btn-filter-by:hover:not(:disabled),.main-filter-builder .btn-sort-by:hover:not(:disabled){background:#fafafa!important}.main-filter-builder .btn-filter-by:disabled,.main-filter-builder .btn-sort-by:disabled{opacity:.45;cursor:not-allowed}.main-filter-builder .btn-sort-by{border:1px solid #0d4261!important}.main-filter-builder .btn-sort-by .sort-icons{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:0;height:24px;width:24px;flex-shrink:0}.main-filter-builder .btn-sort-by .sort-icons .sort-arrow-up,.main-filter-builder .btn-sort-by .sort-icons .sort-arrow-down{font-size:16px;width:16px;height:8px;line-height:8px;margin:0;color:#0d4261}.main-filter-builder .btn-sort-by .sort-icons .sort-arrow-up{margin-bottom:-2px}.main-filter-builder .btn-sort-by .sort-icons .sort-arrow-down{margin-top:-2px}.main-filter-builder .btn-sort-by .arrow-icon{font-size:16px;width:16px;height:16px;margin-left:auto}.main-filter-builder .btn-filter-by.btn-filter-by--icon-only{flex:0 0 44px!important;min-width:44px!important;max-width:48px!important;padding:0 6px!important}.main-filter-builder .mobile-search-row{display:flex;align-items:flex-start;gap:8px;width:100%;box-sizing:border-box}.main-filter-builder .mobile-search-field{flex:1;min-width:0;width:100%;max-width:none}.main-filter-builder .btn-export-mobile{background:transparent!important;border:none!important;border-radius:8px!important;height:40px!important;width:60px!important;padding:0!important;box-shadow:none!important;display:flex!important;align-items:center!important;justify-content:center!important;cursor:pointer!important;flex-shrink:0!important}.main-filter-builder .btn-export-mobile .button-content{display:flex;align-items:center;justify-content:center;gap:4px;width:100%}.main-filter-builder .btn-export-mobile mat-icon{font-size:24px;width:24px;height:24px;color:#0d4261}.main-filter-builder .btn-export-mobile .arrow-icon{font-size:16px;width:16px;height:16px}.main-filter-builder .btn-export-mobile:hover:not(:disabled){background:#fafafa!important}.main-filter-builder .btn-export-mobile:disabled,.main-filter-builder .btn-export-mobile.mat-mdc-button-disabled{opacity:.45;cursor:not-allowed;pointer-events:none}.main-filter-builder .mobile-field-filter{margin:0!important;width:100%!important}.main-filter-builder .mobile-field-filter ::ng-deep .main-form-canvas{display:flex!important;flex-direction:row!important;align-items:center!important;margin-top:0!important;width:100%!important;flex-wrap:wrap!important;gap:8px!important}.main-filter-builder .mobile-field-filter ::ng-deep .form-wrapper{display:flex!important;flex-direction:row!important;align-items:center!important;flex:1 1 auto!important;width:100%!important;min-width:0!important}.main-filter-builder .mobile-field-filter ::ng-deep .form-content{width:100%!important;align-items:center!important}.main-filter-builder .mobile-field-filter ::ng-deep .field-column:has(.multi-state-filter){display:flex!important;flex:1 1 100%!important;width:100%!important;min-width:0!important}.main-filter-builder .mobile-field-filter ::ng-deep mat-form-field{width:100%!important;margin:0!important;overflow:visible!important}.main-filter-builder .mobile-field-filter ::ng-deep mat-form-field .mat-mdc-form-field-infix{min-height:40px!important;padding:0 16px!important;display:flex!important;align-items:center!important;border-top:none!important;overflow:visible!important}.main-filter-builder .mobile-field-filter ::ng-deep mat-form-field .mat-mdc-form-field-input-control{height:40px!important;font-weight:300!important;font-size:16px!important;line-height:1.2!important;color:#000!important;overflow:visible!important}.main-filter-builder .mobile-field-filter ::ng-deep mat-form-field .mat-mdc-form-field-outline{border:1px solid #b7b7b7!important;border-radius:8px!important}.main-filter-builder .mobile-field-filter ::ng-deep mat-form-field .mat-mdc-form-field-icon-prefix{padding-right:4px!important;display:flex!important;align-items:center!important;justify-content:center!important}.main-filter-builder .mobile-field-filter ::ng-deep mat-form-field .mat-mdc-form-field-icon-prefix mat-icon{font-size:24px!important;width:24px!important;height:24px!important;color:#0d4261!important}.main-filter-builder .mobile-field-filter ::ng-deep mat-form-field input::placeholder{color:#888!important;font-weight:300!important;font-size:16px!important;line-height:1.2!important}@container base-table (min-width: 769px) and (max-width: 900px){.main-filter-builder{margin-bottom:0}.main-filter-builder .filterForm__row{align-items:flex-end}.main-filter-builder .filterForm__col{flex:1 1 auto;min-width:0;width:auto}.main-filter-builder .filterForm__filed-filter ::ng-deep .main-form-canvas,.main-filter-builder .filterForm__filed-filter ::ng-deep .form-wrapper,.main-filter-builder .filterForm__filed-filter ::ng-deep .form-content,.main-filter-builder .filterForm__filed-filter ::ng-deep .form-row,.main-filter-builder .filterForm__filed-filter ::ng-deep .form-column,.main-filter-builder .filterForm__filed-filter ::ng-deep .row-container{width:100%!important;flex-direction:row!important;flex-wrap:wrap!important}.main-filter-builder .filterForm__filed-filter ::ng-deep .row-container{display:flex!important;gap:12px!important}.main-filter-builder .filterForm__filed-filter ::ng-deep .field-column{flex:1 1 calc(50% - 12px)!important;width:calc(50% - 12px)!important;max-width:calc(50% - 12px)!important;min-width:180px!important}.main-filter-builder .filterForm__filed-filter ::ng-deep .multi-state-filter,.main-filter-builder .filterForm__filed-filter ::ng-deep .multi-state-filter__trigger,.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field{width:100%!important}.main-filter-builder .button-group{flex-direction:column-reverse!important;justify-content:flex-start!important;gap:12px!important}.main-filter-builder .btn-apply-filter{height:45px!important;margin-bottom:0!important}}@media (max-width: 768px){.main-filter-builder .desktop-view{display:none!important}.main-filter-builder .mobile-view{display:flex!important}}@media (min-width: 769px){.main-filter-builder .desktop-view{display:flex!important}.main-filter-builder .mobile-view{display:none!important}}:host-context([dir=ltr]) .main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-form-field-infix{padding-right:0!important}:host-context([dir=rtl]) .main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-form-field-infix{padding-left:0!important}\n"] }]
|
|
303
303
|
}], ctorParameters: () => [], propDecorators: { columns: [{
|
|
304
304
|
type: Input
|
|
305
305
|
}], isChecked: [{
|
|
@@ -328,4 +328,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
328
328
|
type: HostListener,
|
|
329
329
|
args: ['keydown', ['$event']]
|
|
330
330
|
}] } });
|
|
331
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLWJ1aWxkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW52b2ljZXEvdWktbGliL3NyYy9saWIvY29tcG9uZW50cy9hZHZhbmNlZC1maWx0ZXIvZmlsdGVyLWJ1aWxkZXIvZmlsdGVyLWJ1aWxkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW52b2ljZXEvdWktbGliL3NyYy9saWIvY29tcG9uZW50cy9hZHZhbmNlZC1maWx0ZXIvZmlsdGVyLWJ1aWxkZXIvZmlsdGVyLWJ1aWxkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM5RyxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDaEQsT0FBTyxFQUFDLFlBQVksRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFHbEUsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sd0NBQXdDLENBQUM7QUFDNUUsT0FBTyxFQUFDLGVBQWUsRUFBRSxnQkFBZ0IsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3RFLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDL0MsT0FBTyxFQUFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFDLE1BQU0sd0JBQXdCLENBQUM7Ozs7O0FBbUI1RSxNQUFNLE9BQU8sc0JBQXNCO0lBOENqQztRQTVDaUIsa0JBQWEsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDdEMsY0FBUyxHQUFH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QUNmLE9BQU8sMklBQ1AsT0FBTywyUUFDUCxXQUFXLHNJQUNYLGNBQWM7OzRGQUtMLHNCQUFzQjtrQkFqQmxDLFNBQVM7K0JBQ0Usb0JBQW9CLGNBRWxCLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLG9CQUFvQjt3QkFDcEIsZUFBZTt3QkFDZixlQUFlO3dCQUNmLE9BQU87d0JBQ1AsT0FBTzt3QkFDUCxXQUFXO3dCQUNYLGNBQWM7d0JBQ2QsT0FBTztxQkFDUjt3REFTRCxPQUFPO3NCQUROLEtBQUs7Z0JBSU4sU0FBUztzQkFEUixLQUFLO2dCQUdOLFlBQVk7c0JBRFgsS0FBSztnQkFHTixRQUFRO3NCQURQLEtBQUs7Z0JBR04sY0FBYztzQkFEYixLQUFLO2dCQUlOLGdCQUFnQjtzQkFEZixLQUFLO2dCQUlOLGNBQWM7c0JBRGIsS0FBSztnQkFZTixpQkFBaUI7c0JBRGhCLE1BQU07Z0JBSVAsT0FBTztzQkFETixNQUFNO2dCQUlQLFdBQVc7c0JBRFYsTUFBTTtnQkFJUCxhQUFhO3NCQURaLE1BQU07Z0JBSVAsYUFBYTtzQkFEWixNQUFNO2dCQTREUCxTQUFTO3NCQURSLFlBQVk7dUJBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBpbmplY3QsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TGl2ZUFubm91bmNlcn0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHtDb21tb25Nb2R1bGUsIGZvcm1hdERhdGUsIE5nRm9yT2Z9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge0ZpZWxkSW5mbywgUGFnZUluZm8sIFRhYmxlQ29sdW1ufSBmcm9tIFwiLi4vLi4vLi4vYmFzZS1tb2RlbFwiO1xuaW1wb3J0IHtGaWVsZEZpbHRlcn0gZnJvbSBcIi4uLy4uLy4uL2Jhc2UtbW9kZWwvZmllbGQtZmlsdGVyLm1vZGVsXCI7XG5pbXBvcnQge0ZpZWxkRmlsdGVyQ29tcG9uZW50fSBmcm9tIFwiLi4vZmllbGQtZmlsdGVyL2ZpZWxkLWZpbHRlci5jb21wb25lbnRcIjtcbmltcG9ydCB7VHJhbnNsYXRlTW9kdWxlLCBUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tIFwiQG5neC10cmFuc2xhdGUvY29yZVwiO1xuaW1wb3J0IHtNYXRCdXR0b25Nb2R1bGV9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9idXR0b25cIjtcbmltcG9ydCB7TWF0SWNvbn0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2ljb25cIjtcbmltcG9ydCB7TWF0TWVudSwgTWF0TWVudUl0ZW0sIE1hdE1lbnVUcmlnZ2VyfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudVwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtZmlsdGVyLWJ1aWxkZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vZmlsdGVyLWJ1aWxkZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEZpZWxkRmlsdGVyQ29tcG9uZW50LFxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgTWF0SWNvbixcbiAgICBNYXRNZW51LFxuICAgIE1hdE1lbnVJdGVtLFxuICAgIE1hdE1lbnVUcmlnZ2VyLFxuICAgIE5nRm9yT2ZcbiAgXSxcbiAgc3R5bGVVcmxzOiBbJy4vZmlsdGVyLWJ1aWxkZXIuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBGaWx0ZXJCdWlsZGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgbGl2ZUFubm91bmNlciA9IGluamVjdChMaXZlQW5ub3VuY2VyKTtcbiAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGUgPSBpbmplY3QoVHJhbnNsYXRlU2VydmljZSk7XG5cbiAgQElucHV0KClcbiAgY29sdW1uczogVGFibGVDb2x1bW48YW55PltdO1xuXG4gIEBJbnB1dCgpXG4gIGlzQ2hlY2tlZDogYm9vbGVhbjtcbiAgQElucHV0KClcbiAgZmlsdGVyRmllbGRzOiBGaWVsZEluZm9bXTtcbiAgQElucHV0KClcbiAgcGFnZUluZm86IFBhZ2VJbmZvO1xuICBASW5wdXQoKVxuICBwZW5kaW5nRmlsdGVyczogRmllbGRGaWx0ZXJbXSA9IFtdO1xuXG4gIEBJbnB1dCgpXG4gIHNob3dFeHBvcnRCdXR0b246IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBleHBvcnREaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGZpbHRlcjogRmllbGRGaWx0ZXI7XG4gIGZpbHRlcnM6IEZpZWxkRmlsdGVyW10gPSBbXTtcbiAgZGF0ZVJhbmdlSW52YWxpZCA9IGZhbHNlO1xuXG4gIHByaXZhdGUgc2VhcmNoVGltZW91dDogYW55O1xuXG4gIGZpbHRlclJlc2V0Tm9uY2UgPSAwO1xuXG4gIEBPdXRwdXQoKVxuICBmaWx0ZXJJbmZvcm1hdGlvbjogRXZlbnRFbWl0dGVyPHsgZmlsdGVyczogRmllbGRGaWx0ZXJbXSwgc2VhcmNoU3RyOiBzdHJpbmcgfT4gPSBuZXcgRXZlbnRFbWl0dGVyPHsgZmlsdGVyczogRmllbGRGaWx0ZXJbXSwgc2VhcmNoU3RyOiBzdHJpbmcgfT4oKTtcblxuICBAT3V0cHV0KClcbiAgaXNFbXB0eTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIEBPdXRwdXQoKVxuICBhcHBseUZpbHRlcjogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIEBPdXRwdXQoKVxuICBzb3J0QnlDbGlja2VkOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIEBPdXRwdXQoKVxuICBleHBvcnRDbGlja2VkOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICB9XG5cbiAgaXNNb2JpbGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHdpbmRvdy5pbm5lcldpZHRoIDw9IDc2ODtcbiAgfVxuXG4gIGdldFNvcnRhYmxlQ29sdW1ucygpOiBUYWJsZUNvbHVtbjxhbnk+W10ge1xuICAgIGlmICghdGhpcy5jb2x1bW5zKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmNvbHVtbnMuZmlsdGVyKGNvbHVtbiA9PlxuICAgICAgY29sdW1uLnZpc2libGUgPT09IHRydWUgJiYgY29sdW1uLmVuYWJsZVNvcnRpbmcgPT09IHRydWVcbiAgICApO1xuICB9XG5cbiAgbGFiZWxLZXkoY29sdW1uOiBUYWJsZUNvbHVtbjxhbnk+KTogc3RyaW5nIHtcbiAgICBpZiAoIWNvbHVtbiB8fCAhY29sdW1uLnByb3BlcnR5KSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIGNvbnN0IGNvbmZpZ3VyZWRLZXkgPSBjb2x1bW4ubGFiZWwgPyBjb2x1bW4ubGFiZWwgOiBjb2x1bW4ucHJvcGVydHk7XG4gICAgaWYgKCF0aGlzLnBhZ2VJbmZvIHx8ICF0aGlzLnBhZ2VJbmZvLmxhYmVsc1NlY3Rpb24pIHtcbiAgICAgIHJldHVybiBjb25maWd1cmVkS2V5O1xuICAgIH1cbiAgICByZXR1cm4gY29uZmlndXJlZEtleS5zdGFydHNXaXRoKHRoaXMucGFnZUluZm8ubGFiZWxzU2VjdGlvbilcbiAgICAgID8gYCR7Y29uZmlndXJlZEtleX1gXG4gICAgICA6IGAke3RoaXMucGFnZUluZm8ubGFiZWxzU2VjdGlvbn0uJHtjb25maWd1cmVkS2V5fWA7XG4gIH1cblxuICBvblNvcnRCeUNsaWNrKGNvbHVtblByb3BlcnR5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnNvcnRCeUNsaWNrZWQuZW1pdChjb2x1bW5Qcm9wZXJ0eSk7XG4gIH1cblxuICBvbkV4cG9ydENsaWNrKHJlcG9ydFR5cGU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuZXhwb3J0Q2xpY2tlZC5lbWl0KHJlcG9ydFR5cGUpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG5cblxuICAgIHRoaXMuc3dpdGNoVG9BZHZhbmNlZCgpO1xuICAgIGlmICghdGhpcy5maWx0ZXIpIHtcbiAgICAgIHRoaXMuZmlsdGVyID0gdGhpcy5jcmVhdGVEZWZhdWx0RmllbGRGaWx0ZXIoKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuZmlsdGVyRmllbGRzICYmIHRoaXMuZmlsdGVyRmllbGRzLmxlbmd0aCkge1xuICAgICAgdGhpcy5maWx0ZXJzID0gdGhpcy5maWx0ZXJGaWVsZHMubWFwKCgpID0+IHRoaXMuY3JlYXRlRGVmYXVsdEZpZWxkRmlsdGVyKCkpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNlYXJjaFRpbWVvdXQpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLnNlYXJjaFRpbWVvdXQpO1xuICAgICAgdGhpcy5zZWFyY2hUaW1lb3V0ID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSlcbiAgb25LZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VudGVyJyAmJiAhZXZlbnQuc2hpZnRLZXkgJiYgIWV2ZW50LmN0cmxLZXkgJiYgIWV2ZW50Lm1ldGFLZXkpIHtcbiAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICAgIGNvbnN0IGlzSW5wdXRFbGVtZW50ID0gdGFyZ2V0LnRhZ05hbWUgPT09ICdJTlBVVCcgfHxcbiAgICAgICAgdGFyZ2V0LnRhZ05hbWUgPT09ICdURVhUQVJFQScgfHxcbiAgICAgICAgdGFyZ2V0LnRhZ05hbWUgPT09ICdTRUxFQ1QnIHx8XG4gICAgICAgIHRhcmdldC5pc0NvbnRlbnRFZGl0YWJsZTtcblxuICAgICAgaWYgKGlzSW5wdXRFbGVtZW50KSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBpZiAodGhpcy5zZWFyY2hUaW1lb3V0KSB7XG4gICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuc2VhcmNoVGltZW91dCk7XG4gICAgICAgICAgdGhpcy5zZWFyY2hUaW1lb3V0ID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLmRvU2VhcmNoKCk7XG4gICAgICAgICAgdGhpcy5vbkFwcGx5RmlsdGVyKCk7XG4gICAgICAgIH0sIDApO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLm9uQXBwbHlGaWx0ZXIoKTtcbiAgICB9XG4gIH1cblxuXG4gIGRvU2VhcmNoKCkge1xuICAgIGxldCBzZWFyY2hTdHIgPSAnJztcbiAgICBjb25zdCBmaWx0ZXJzQXJyYXkgPSAodGhpcy5maWx0ZXJzIHx8IFtdKVxuICAgICAgLmZpbHRlcihmID0+ICEhZiAmJiAhIWYuZmllbGROYW1lICYmIHRoaXMuaGFzRmlsdGVyVmFsdWUoZi52YWx1ZU9iamVjdCkpXG4gICAgICAubWFwKGYgPT4ge1xuICAgICAgICBjb25zdCBmaWVsZEluZm8gPSB0aGlzLmZpbHRlckZpZWxkcz8uZmluZChmaWVsZCA9PiBmaWVsZC5wcm9wZXJ0eSA9PT0gZi5maWVsZE5hbWUpO1xuICAgICAgICBpZiAoZmllbGRJbmZvPy5tdWx0aUxldmVsU2VhcmNoRW5hYmxlICYmIGYudmFsdWVPYmplY3QpIHtcbiAgICAgICAgICBzZWFyY2hTdHIgPSBmLnZhbHVlT2JqZWN0O1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7Li4uZn07XG4gICAgICB9KVxuICAgICAgLmZpbHRlcihmID0+IGYgIT09IG51bGwpO1xuXG4gICAgdGhpcy5maWx0ZXJJbmZvcm1hdGlvbi5lbWl0KHsgZmlsdGVyczogZmlsdGVyc0FycmF5LCBzZWFyY2hTdHIgfSk7XG4gIH1cblxuICBvbkFwcGx5RmlsdGVyKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRhdGVSYW5nZUludmFsaWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmRvU2VhcmNoKCk7XG4gICAgICB0aGlzLmFwcGx5RmlsdGVyLmVtaXQoKTtcbiAgICAgIGNvbnN0IG1zZyA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ0JBU0VfVEFCTEUuZmlsdGVyQXBwbGllZCcpO1xuICAgICAgdm9pZCB0aGlzLmxpdmVBbm5vdW5jZXIuYW5ub3VuY2UobXNnLCAncG9saXRlJyk7XG4gICAgfSwgMCk7XG4gIH1cblxuICBwcml2YXRlIHNjaGVkdWxlU2VhcmNoKGRlbGF5TXM6IG51bWJlciA9IDgwMCkge1xuICAgIGlmICh0aGlzLnNlYXJjaFRpbWVvdXQpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLnNlYXJjaFRpbWVvdXQpO1xuICAgIH1cbiAgICB0aGlzLnNlYXJjaFRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuZG9TZWFyY2goKTtcbiAgICB9LCBkZWxheU1zKTtcbiAgfVxuXG4gIGZvcm1DaGFuZ2VzKCRldmVudDogYW55LCBpbmRleD86IG51bWJlciwgZmllbGRJbmZvPzogRmllbGRJbmZvKSB7XG4gICAgY29uc3QgZm9ybWF0SWZEYXRlID0gKHR5cGU/OiBzdHJpbmcsIHZhbHVlPzogYW55KSA9PiB7XG4gICAgICBpZiAoIXR5cGUgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gJycpIHJldHVybiB2YWx1ZTtcbiAgICAgIGlmICgodHlwZSB8fCAnJykudG9Mb3dlckNhc2UoKS5pbmNsdWRlcygnZGF0ZScpKSB7XG4gICAgICAgIHJldHVybiBmb3JtYXREYXRlKHZhbHVlLCAneXl5eS1NTS1kZCcsICdlbl9VUycpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH07XG5cbiAgICBpZiAoaW5kZXggPT09IHVuZGVmaW5lZCB8fCAhZmllbGRJbmZvKSB7XG4gICAgICB0aGlzLmRhdGVSYW5nZUludmFsaWQgPSB0aGlzLmlzRGF0ZVJhbmdlSW52YWxpZCgkZXZlbnQpO1xuICAgICAgaWYgKCF0aGlzLmZpbHRlckZpZWxkcyB8fCAhdGhpcy5maWx0ZXJGaWVsZHMubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMuZmlsdGVycyA9IFtdO1xuICAgICAgICB0aGlzLmRvU2VhcmNoKCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5maWx0ZXJzID0gdGhpcy5maWx0ZXJGaWVsZHMubWFwKChmaSkgPT4ge1xuICAgICAgICBjb25zdCBjb250cm9sTmFtZSA9IGZpLnByb3BlcnR5O1xuICAgICAgICBsZXQgdmFsdWUgPSAkZXZlbnQgPyAkZXZlbnRbY29udHJvbE5hbWVdIDogdW5kZWZpbmVkO1xuICAgICAgICBpZiAoIXRoaXMuaXNGaWx0ZXJWYWx1ZUFjdGl2ZShmaSwgdmFsdWUpKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlRGVmYXVsdEZpZWxkRmlsdGVyKCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZmllbGROYW1lID0gY29udHJvbE5hbWUgPT09ICdmcm9tJyB8fCBjb250cm9sTmFtZSA9PT0gJ3RvJyA/ICBmaS50YXJnZXRQcm9wZXJ0eSA6IGNvbnRyb2xOYW1lO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZmllbGROYW1lOiBmaWVsZE5hbWUsXG4gICAgICAgICAgb3BlcmF0b3I6IGZpLmZpbHRlck9wZXJhdG9yIHx8ICdFUVVBTFMnLFxuICAgICAgICAgIGZpbHRlclR5cGU6ICdGSUxFRF9GSUxURVInLFxuICAgICAgICAgIGZpZWxkVHlwZTogdGhpcy50eXBlTWFwKGZpLnR5cGUpIGFzIGFueSxcbiAgICAgICAgICB2YWx1ZU9iamVjdDogZm9ybWF0SWZEYXRlKGZpLnR5cGUsIHZhbHVlKSBhcyBhbnlcbiAgICAgICAgfSBhcyBGaWVsZEZpbHRlcjtcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBoYXNUZXh0RmllbGQgPSAodGhpcy5maWx0ZXJGaWVsZHMgfHwgW10pLnNvbWUoZmkgPT4gKChmaS50eXBlIHx8ICcnKS50b0xvd2VyQ2FzZSgpID09PSAndGV4dCcpKTtcbiAgICAgIGlmIChoYXNUZXh0RmllbGQpIHtcbiAgICAgICAgdGhpcy5zY2hlZHVsZVNlYXJjaCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5kb1NlYXJjaCgpO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5maWx0ZXJzKSB7XG4gICAgICB0aGlzLmZpbHRlcnMgPSBbXTtcbiAgICB9XG4gICAgaWYgKHRoaXMuZmlsdGVycy5sZW5ndGggPCBpbmRleCArIDEpIHtcbiAgICAgIHRoaXMuZmlsdGVycy5sZW5ndGggPSBpbmRleCArIDE7XG4gICAgfVxuXG4gICAgbGV0IGNvbnRyb2xOYW1lID0gZmllbGRJbmZvLnByb3BlcnR5O1xuICAgIGxldCB2YWx1ZSA9ICRldmVudCA/ICRldmVudFtjb250cm9sTmFtZV0gOiB1bmRlZmluZWQ7XG4gICAgaWYgKCRldmVudCAmJiAkZXZlbnQuZmlsdGVyRmllbGQgIT09IHVuZGVmaW5lZCAmJiAkZXZlbnQuZnJvbVZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnRyb2xOYW1lID0gJGV2ZW50LmZpbHRlckZpZWxkIHx8IGNvbnRyb2xOYW1lO1xuICAgICAgdmFsdWUgPSAkZXZlbnQuZnJvbVZhbHVlO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5pc0ZpbHRlclZhbHVlQWN0aXZlKGZpZWxkSW5mbywgdmFsdWUpKSB7XG4gICAgICB0aGlzLmZpbHRlcnNbaW5kZXhdID0gdGhpcy5jcmVhdGVEZWZhdWx0RmllbGRGaWx0ZXIoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5maWx0ZXJzW2luZGV4XSA9IHtcbiAgICAgICAgZmllbGROYW1lOiBjb250cm9sTmFtZSxcbiAgICAgICAgb3BlcmF0b3I6ICBmaWVsZEluZm8uZmlsdGVyT3BlcmF0b3IgfHwgJ0VRVUFMUycsXG4gICAgICAgIGZpbHRlclR5cGU6ICdGSUxFRF9GSUxURVInLFxuICAgICAgICBmaWVsZFR5cGU6IHRoaXMudHlwZU1hcChmaWVsZEluZm8udHlwZSkgYXMgYW55LFxuICAgICAgICB2YWx1ZU9iamVjdDogZm9ybWF0SWZEYXRlKGZpZWxkSW5mby50eXBlLCB2YWx1ZSkgYXMgYW55XG4gICAgICB9IGFzIEZpZWxkRmlsdGVyO1xuICAgIH1cbiAgICBjb25zdCBpc1RleHRGaWVsZCA9ICgoZmllbGRJbmZvLnR5cGUgfHwgJycpLnRvTG93ZXJDYXNlKCkgPT09ICd0ZXh0Jyk7XG4gICAgaWYgKGlzVGV4dEZpZWxkKSB7XG4gICAgICB0aGlzLnNjaGVkdWxlU2VhcmNoKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZG9TZWFyY2goKTtcbiAgICB9XG4gIH1cbiAgdHlwZU1hcChjb2xUeXBlPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCB0ID0gKGNvbFR5cGUgfHwgJycpLnRvTG93ZXJDYXNlKCk7XG4gICAgaWYgKHQuaW5jbHVkZXMoJ251bWJlcicpIHx8IHQuaW5jbHVkZXMoJ2ludCcpIHx8IHQgPT09ICdsb25nJykgcmV0dXJuICdMb25nJztcbiAgICBpZiAodC5pbmNsdWRlcygnZGF0ZScpIHx8IHQuaW5jbHVkZXMoJ3RpbWUnKSkgcmV0dXJuICdEYXRlJztcbiAgICBpZiAodC5pbmNsdWRlcygnYm9vbCcpKSByZXR1cm4gJ0Jvb2xlYW4nO1xuICAgIHJldHVybiAnU3RyaW5nJztcbiAgfVxuXG4gIGlzRWRpdGFibGUoX2luZGV4PzogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuXG4gIGRlbGV0ZUFsbCgpIHtcbiAgICB0aGlzLmZpbHRlciA9IHRoaXMuY3JlYXRlRGVmYXVsdEZpZWxkRmlsdGVyKCk7XG4gICAgdGhpcy5maWx0ZXJzID0gdGhpcy5maWx0ZXJGaWVsZHMgPyB0aGlzLmZpbHRlckZpZWxkcy5tYXAoKCkgPT4gdGhpcy5jcmVhdGVEZWZhdWx0RmllbGRGaWx0ZXIoKSkgOiBbXTtcbiAgICB0aGlzLmlzRW1wdHkuZW1pdCh0cnVlKTtcbiAgfVxuXG4gIG9uQ2xlYXJGaWx0ZXJzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNlYXJjaFRpbWVvdXQpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLnNlYXJjaFRpbWVvdXQpO1xuICAgICAgdGhpcy5zZWFyY2hUaW1lb3V0ID0gbnVsbDtcbiAgICB9XG4gICAgdGhpcy5maWx0ZXJSZXNldE5vbmNlKys7XG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmRlbGV0ZUFsbCgpLCAwKTtcbiAgfVxuXG4gIHN3aXRjaFRvQWR2YW5jZWQoKSB7XG4gICAgaWYgKHRoaXMuaXNDaGVja2VkKSB7XG4gICAgICBpZiAoIXRoaXMuZmlsdGVyIHx8IE9iamVjdC5rZXlzKHRoaXMuZmlsdGVyKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdGhpcy5maWx0ZXIgPSB0aGlzLmNyZWF0ZURlZmF1bHRGaWVsZEZpbHRlcigpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG5cbiAgcHJpdmF0ZSBjcmVhdGVEZWZhdWx0RmllbGRGaWx0ZXIoKTogRmllbGRGaWx0ZXIge1xuICAgIHJldHVybiB7XG4gICAgICBmaWVsZE5hbWU6ICcnLFxuICAgICAgb3BlcmF0b3I6ICcnLFxuICAgICAgZmlsdGVyVHlwZTogJycsXG4gICAgICBmaWVsZFR5cGU6ICcnLFxuICAgICAgdmFsdWVPYmplY3Q6ICcnXG4gICAgfSBhcyBGaWVsZEZpbHRlcjtcbiAgfVxuXG4gIHByaXZhdGUgaXNEYXRlUmFuZ2VJbnZhbGlkKHZhbHVlOiB1bmtub3duKTogYm9vbGVhbiB7XG4gICAgaWYgKCF2YWx1ZSB8fCB0eXBlb2YgdmFsdWUgIT09ICdvYmplY3QnKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IHJlY29yZCA9IHZhbHVlIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgIGNvbnN0IGZyb21UaW1lID0gdGhpcy50b1RpbWVzdGFtcChyZWNvcmRbJ2Zyb20nXSk7XG4gICAgY29uc3QgdG9UaW1lID0gdGhpcy50b1RpbWVzdGFtcChyZWNvcmRbJ3RvJ10pO1xuICAgIGlmIChmcm9tVGltZSA9PT0gbnVsbCB8fCB0b1RpbWUgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIGZyb21UaW1lID4gdG9UaW1lO1xuICB9XG5cbiAgcHJpdmF0ZSB0b1RpbWVzdGFtcCh2YWx1ZTogdW5rbm93bik6IG51bWJlciB8IG51bGwge1xuICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSAnJykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgIHJldHVybiBOdW1iZXIuaXNOYU4odmFsdWUuZ2V0VGltZSgpKSA/IG51bGwgOiB2YWx1ZS5nZXRUaW1lKCk7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSB7XG4gICAgICBjb25zdCBwcmltaXRpdmUgPSAodmFsdWUgYXMgeyB2YWx1ZU9mOiAoKSA9PiB1bmtub3duIH0pLnZhbHVlT2YoKTtcbiAgICAgIGlmICh0eXBlb2YgcHJpbWl0aXZlID09PSAnbnVtYmVyJyAmJiBOdW1iZXIuaXNGaW5pdGUocHJpbWl0aXZlKSkge1xuICAgICAgICByZXR1cm4gcHJpbWl0aXZlO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBwYXJzZWQgPSBuZXcgRGF0ZSh2YWx1ZSBhcyBzdHJpbmcgfCBudW1iZXIpLmdldFRpbWUoKTtcbiAgICByZXR1cm4gTnVtYmVyLmlzRmluaXRlKHBhcnNlZCkgPyBwYXJzZWQgOiBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBoYXNGaWx0ZXJWYWx1ZSh2YWx1ZTogdW5rbm93bik6IGJvb2xlYW4ge1xuICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSAnJykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gIUFycmF5LmlzQXJyYXkodmFsdWUpIHx8IHZhbHVlLmxlbmd0aCA+IDA7XG4gIH1cblxuICBwcml2YXRlIGlzRmlsdGVyVmFsdWVBY3RpdmUoZmllbGRJbmZvOiBGaWVsZEluZm8sIHZhbHVlOiB1bmtub3duKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLmhhc0ZpbHRlclZhbHVlKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoKGZpZWxkSW5mby50eXBlIHx8ICcnKSAhPT0gJ211bHRpLXN0YXRlLWNoZWNrYm94Jykge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGNvbnN0IHNlbGVjdGVkID0gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFtdO1xuICAgIGNvbnN0IG9wdGlvbnMgPSBmaWVsZEluZm8ubGlzdE9wdGlvbnMgfHwgW107XG4gICAgcmV0dXJuIG9wdGlvbnMubGVuZ3RoID09PSAwIHx8ICFvcHRpb25zLmV2ZXJ5KChjb2RlOiBzdHJpbmcpID0+IHNlbGVjdGVkLmluY2x1ZGVzKGNvZGUpKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIm1haW4tZmlsdGVyLWJ1aWxkZXJcIj5cblxuICA8IS0tIERlc2t0b3AgVmlldyAtLT5cbiAgPGRpdiBjbGFzcz1cImZpbHRlckZvcm0gZGVza3RvcC12aWV3XCI+XG4gICAgPGRpdiBjbGFzcz1cImZpbHRlckZvcm1fX3Jvd1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImZpbHRlckZvcm1fX2NvbFwiPlxuICAgICAgICA8YXBwLWZpZWxkLWZpbHRlclxuICAgICAgICAgIFtlZGl0YWJsZV09XCJpc0VkaXRhYmxlKClcIlxuICAgICAgICAgIFtmaWx0ZXJdPVwiZmlsdGVyXCJcbiAgICAgICAgICBbcGFnZUluZm9dPVwicGFnZUluZm9cIlxuICAgICAgICAgICpuZ0lmPVwiaXNFZGl0YWJsZSgpXCJcbiAgICAgICAgICBbZmlsdGVyRmllbGRzXT1cImZpbHRlckZpZWxkc1wiXG4gICAgICAgICAgW2ZpbHRlclJlc2V0Tm9uY2VdPVwiZmlsdGVyUmVzZXROb25jZVwiXG4gICAgICAgICAgKGZpbHRlckZpZWxkSW5mb3JtYXRpb24pPVwiZm9ybUNoYW5nZXMoJGV2ZW50KVwiXG4gICAgICAgICAgY2xhc3M9XCJmaWx0ZXJGb3JtX19maWxlZC1maWx0ZXJcIlxuICAgICAgICA+XG4gICAgICAgIDwvYXBwLWZpZWxkLWZpbHRlcj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbi1ncm91cFwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgbWF0LWZsYXQtYnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJidG4tYXBwbHktZmlsdGVyXCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAoY2xpY2spPVwib25DbGVhckZpbHRlcnMoKVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24tdGV4dFwiPlxuICAgICAgICAgICAgPG1hdC1pY29uPmNsZWFyX2FsbDwvbWF0LWljb24+XG4gICAgICAgICAgICA8c3Bhbj57eyAnRklMVEVSLUJVSUxERVIuY2xlYXJGaWx0ZXJzJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBtYXQtZmxhdC1idXR0b25cbiAgICAgICAgICBjbGFzcz1cImJ0bi1hcHBseS1maWx0ZXJcIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJkYXRlUmFuZ2VJbnZhbGlkXCJcbiAgICAgICAgICAoY2xpY2spPVwib25BcHBseUZpbHRlcigpXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbi10ZXh0XCI+XG4gICAgICAgICAgICA8bWF0LWljb24+ZmlsdGVyX2xpc3Q8L21hdC1pY29uPlxuICAgICAgICAgICAgPHNwYW4+e3sgJ0ZJTFRFUi1CVUlMREVSLmFwcGx5RmlsdGVyJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBNb2JpbGUgVmlldyAtLT5cbiAgPGRpdiBjbGFzcz1cIm1vYmlsZS12aWV3XCI+XG4gICAgPCEtLSBNb2JpbGUgUm93IDE6IFNlYXJjaCBGaWVsZCBhbmQgRXhwb3J0IEJ1dHRvbiAtLT5cbiAgICA8ZGl2IGNsYXNzPVwibW9iaWxlLXNlYXJjaC1yb3dcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtb2JpbGUtc2VhcmNoLWZpZWxkXCI+XG4gICAgICAgIDxhcHAtZmllbGQtZmlsdGVyXG4gICAgICAgICAgW2VkaXRhYmxlXT1cImlzRWRpdGFibGUoKVwiXG4gICAgICAgICAgW2ZpbHRlcl09XCJmaWx0ZXJcIlxuICAgICAgICAgIFtwYWdlSW5mb109XCJwYWdlSW5mb1wiXG4gICAgICAgICAgKm5nSWY9XCJpc0VkaXRhYmxlKClcIlxuICAgICAgICAgIFtmaWx0ZXJGaWVsZHNdPVwiZmlsdGVyRmllbGRzXCJcbiAgICAgICAgICBbZmlsdGVyUmVzZXROb25jZV09XCJmaWx0ZXJSZXNldE5vbmNlXCJcbiAgICAgICAgICAoZmlsdGVyRmllbGRJbmZvcm1hdGlvbik9XCJmb3JtQ2hhbmdlcygkZXZlbnQpXCJcbiAgICAgICAgICBjbGFzcz1cIm1vYmlsZS1maWVsZC1maWx0ZXJcIlxuICAgICAgICA+XG4gICAgICAgIDwvYXBwLWZpZWxkLWZpbHRlcj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGJ1dHRvblxuICAgICAgICAqbmdJZj1cInNob3dFeHBvcnRCdXR0b25cIlxuICAgICAgICBtYXQtZmxhdC1idXR0b25cbiAgICAgICAgY2xhc3M9XCJidG4tZXhwb3J0LW1vYmlsZVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJleHBvcnREaXNhYmxlZFwiXG4gICAgICAgIFttYXRNZW51VHJpZ2dlckZvcl09XCJleHBvcnRNZW51XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24tY29udGVudFwiPlxuICAgICAgICAgIDxtYXQtaWNvbj5maWxlX2V4cG9ydDwvbWF0LWljb24+XG4gICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiYXJyb3ctaWNvblwiPmtleWJvYXJkX2Fycm93X2Rvd248L21hdC1pY29uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPG1hdC1tZW51ICNleHBvcnRNZW51PVwibWF0TWVudVwiPlxuICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cIm9uRXhwb3J0Q2xpY2soJ3BkZicpXCI+UERGPC9idXR0b24+XG4gICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwib25FeHBvcnRDbGljaygneGxzeCcpXCI+RXhjZWw8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJvbkV4cG9ydENsaWNrKCdjc3YnKVwiPkNTVjwvYnV0dG9uPlxuICAgICAgPC9tYXQtbWVudT5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gTW9iaWxlIFJvdyAyOiBGaWx0ZXIgQnkgYW5kIFNvcnQgQnkgQnV0dG9ucyAtLT5cbiAgICA8ZGl2IGNsYXNzPVwibW9iaWxlLWZpbHRlci1yb3dcIj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgbWF0LWZsYXQtYnV0dG9uXG4gICAgICAgIGNsYXNzPVwiYnRuLWZpbHRlci1ieSBidG4tZmlsdGVyLWJ5LS1pY29uLW9ubHlcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgKGNsaWNrKT1cIm9uQ2xlYXJGaWx0ZXJzKClcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidGSUxURVItQlVJTERFUi5jbGVhckZpbHRlcnMnIHwgdHJhbnNsYXRlXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24tY29udGVudFwiPlxuICAgICAgICAgIDxtYXQtaWNvbj5kZWxldGVfc3dlZXA8L21hdC1pY29uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBtYXQtZmxhdC1idXR0b25cbiAgICAgICAgY2xhc3M9XCJidG4tZmlsdGVyLWJ5XCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkYXRlUmFuZ2VJbnZhbGlkXCJcbiAgICAgICAgKGNsaWNrKT1cIm9uQXBwbHlGaWx0ZXIoKVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uLWNvbnRlbnRcIj5cbiAgICAgICAgICA8bWF0LWljb24+ZmlsdGVyX2xpc3Q8L21hdC1pY29uPlxuICAgICAgICAgIDxzcGFuPnt7ICdGSUxURVItQlVJTERFUi5hcHBseUZpbHRlcicgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIG1hdC1mbGF0LWJ1dHRvblxuICAgICAgICBjbGFzcz1cImJ0bi1zb3J0LWJ5XCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIFttYXRNZW51VHJpZ2dlckZvcl09XCJzb3J0TWVudVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uLWNvbnRlbnRcIj5cbiAgICAgICAgICA8bWF0LWljb24+dW5mb2xkX21vcmU8L21hdC1pY29uPlxuICAgICAgICAgIDxzcGFuPnt7ICdGSUxURVItQlVJTERFUi5zb3J0QnknIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImFycm93LWljb25cIj5rZXlib2FyZF9hcnJvd19kb3duPC9tYXQtaWNvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxtYXQtbWVudSAjc29ydE1lbnU9XCJtYXRNZW51XCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIGdldFNvcnRhYmxlQ29sdW1ucygpXCJcbiAgICAgICAgICBtYXQtbWVudS1pdGVtXG4gICAgICAgICAgKGNsaWNrKT1cIm9uU29ydEJ5Q2xpY2soY29sdW1uLnByb3BlcnR5KVwiPlxuICAgICAgICAgIHt7IGxhYmVsS2V5KGNvbHVtbikgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAqbmdJZj1cImdldFNvcnRhYmxlQ29sdW1ucygpLmxlbmd0aCA9PT0gMFwiXG4gICAgICAgICAgbWF0LW1lbnUtaXRlbVxuICAgICAgICAgIGRpc2FibGVkPlxuICAgICAgICAgIHt7ICdGSUxURVItQlVJTERFUi5ub1NvcnRhYmxlQ29sdW1ucycgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L21hdC1tZW51PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuPCEtLSAgPGRpdiAqbmdJZj1cImNoZWNrSXNFbXB0eSgpXCIgY2xhc3M9XCJsaW5lLXRvcFwiPi0tPlxuPCEtLSAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj4tLT5cbjwhLS0gIDwvZGl2Pi0tPlxuXG48IS0tICA8ZGl2IGNsYXNzPVwibGluZS1ib3R0b21cIj4tLT5cbjwhLS0gICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+LS0+XG48IS0tICA8L2Rpdj4tLT5cblxuPCEtLSAgPGRpdiBjbGFzcz1cImFjdGlvblwiPi0tPlxuPCEtLSAgICA8YnV0dG9uIGNsYXNzPVwiYnRuLW5vbmUtYmFja2dyb3VuZC1wcmltYXJ5IGFjdGlvbl9fY2xlYXJcIiBtYXQtYnV0dG9uIChjbGljayk9XCJkZWxldGVBbGwoKVwiPi0tPlxuPCEtLSAgICAgIHt7J0ZJTFRFUi1CVUlMREVSLmNsZWFyQWxsRmlsdGVycycgfCB0cmFuc2xhdGV9fS0tPlxuPCEtLSAgICA8L2J1dHRvbj4tLT5cbjwhLS0gICAgPGJ1dHRvbiBjbGFzcz1cImJ0bi1iYWNrZ3JvdW5kLXByaW1hcnlcIiBtYXQtYnV0dG9uIChjbGljayk9XCJkb1NlYXJjaCgpXCI+LS0+XG48IS0tICAgICAge3snRklMVEVSLUJVSUxERVIuc2VhcmNoJyB8IHRyYW5zbGF0ZX19LS0+XG48IS0tICAgIDwvYnV0dG9uPi0tPlxuPCEtLSAgPC9kaXY+LS0+XG48L2Rpdj5cbiJdfQ==
|
|
331
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLWJ1aWxkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW52b2ljZXEvdWktbGliL3NyYy9saWIvY29tcG9uZW50cy9hZHZhbmNlZC1maWx0ZXIvZmlsdGVyLWJ1aWxkZXIvZmlsdGVyLWJ1aWxkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW52b2ljZXEvdWktbGliL3NyYy9saWIvY29tcG9uZW50cy9hZHZhbmNlZC1maWx0ZXIvZmlsdGVyLWJ1aWxkZXIvZmlsdGVyLWJ1aWxkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM5RyxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDaEQsT0FBTyxFQUFDLFlBQVksRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFHbEUsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sd0NBQXdDLENBQUM7QUFDNUUsT0FBTyxFQUFDLGVBQWUsRUFBRSxnQkFBZ0IsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3RFLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDL0MsT0FBTyxFQUFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFDLE1BQU0sd0JBQXdCLENBQUM7Ozs7O0FBbUI1RSxNQUFNLE9BQU8sc0JBQXNCO0lBOENqQztRQTVDaUIsa0JBQWEsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDdEMsY0FBUyxHQUFH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QUNmLE9BQU8sMklBQ1AsT0FBTywyUUFDUCxXQUFXLHNJQUNYLGNBQWM7OzRGQUtMLHNCQUFzQjtrQkFqQmxDLFNBQVM7K0JBQ0Usb0JBQW9CLGNBRWxCLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLG9CQUFvQjt3QkFDcEIsZUFBZTt3QkFDZixlQUFlO3dCQUNmLE9BQU87d0JBQ1AsT0FBTzt3QkFDUCxXQUFXO3dCQUNYLGNBQWM7d0JBQ2QsT0FBTztxQkFDUjt3REFTRCxPQUFPO3NCQUROLEtBQUs7Z0JBSU4sU0FBUztzQkFEUixLQUFLO2dCQUdOLFlBQVk7c0JBRFgsS0FBSztnQkFHTixRQUFRO3NCQURQLEtBQUs7Z0JBR04sY0FBYztzQkFEYixLQUFLO2dCQUlOLGdCQUFnQjtzQkFEZixLQUFLO2dCQUlOLGNBQWM7c0JBRGIsS0FBSztnQkFZTixpQkFBaUI7c0JBRGhCLE1BQU07Z0JBSVAsT0FBTztzQkFETixNQUFNO2dCQUlQLFdBQVc7c0JBRFYsTUFBTTtnQkFJUCxhQUFhO3NCQURaLE1BQU07Z0JBSVAsYUFBYTtzQkFEWixNQUFNO2dCQTREUCxTQUFTO3NCQURSLFlBQVk7dUJBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBpbmplY3QsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TGl2ZUFubm91bmNlcn0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHtDb21tb25Nb2R1bGUsIGZvcm1hdERhdGUsIE5nRm9yT2Z9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge0ZpZWxkSW5mbywgUGFnZUluZm8sIFRhYmxlQ29sdW1ufSBmcm9tIFwiLi4vLi4vLi4vYmFzZS1tb2RlbFwiO1xuaW1wb3J0IHtGaWVsZEZpbHRlcn0gZnJvbSBcIi4uLy4uLy4uL2Jhc2UtbW9kZWwvZmllbGQtZmlsdGVyLm1vZGVsXCI7XG5pbXBvcnQge0ZpZWxkRmlsdGVyQ29tcG9uZW50fSBmcm9tIFwiLi4vZmllbGQtZmlsdGVyL2ZpZWxkLWZpbHRlci5jb21wb25lbnRcIjtcbmltcG9ydCB7VHJhbnNsYXRlTW9kdWxlLCBUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tIFwiQG5neC10cmFuc2xhdGUvY29yZVwiO1xuaW1wb3J0IHtNYXRCdXR0b25Nb2R1bGV9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9idXR0b25cIjtcbmltcG9ydCB7TWF0SWNvbn0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2ljb25cIjtcbmltcG9ydCB7TWF0TWVudSwgTWF0TWVudUl0ZW0sIE1hdE1lbnVUcmlnZ2VyfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudVwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtZmlsdGVyLWJ1aWxkZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vZmlsdGVyLWJ1aWxkZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEZpZWxkRmlsdGVyQ29tcG9uZW50LFxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgTWF0SWNvbixcbiAgICBNYXRNZW51LFxuICAgIE1hdE1lbnVJdGVtLFxuICAgIE1hdE1lbnVUcmlnZ2VyLFxuICAgIE5nRm9yT2ZcbiAgXSxcbiAgc3R5bGVVcmxzOiBbJy4vZmlsdGVyLWJ1aWxkZXIuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBGaWx0ZXJCdWlsZGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgbGl2ZUFubm91bmNlciA9IGluamVjdChMaXZlQW5ub3VuY2VyKTtcbiAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGUgPSBpbmplY3QoVHJhbnNsYXRlU2VydmljZSk7XG5cbiAgQElucHV0KClcbiAgY29sdW1uczogVGFibGVDb2x1bW48YW55PltdO1xuXG4gIEBJbnB1dCgpXG4gIGlzQ2hlY2tlZDogYm9vbGVhbjtcbiAgQElucHV0KClcbiAgZmlsdGVyRmllbGRzOiBGaWVsZEluZm9bXTtcbiAgQElucHV0KClcbiAgcGFnZUluZm86IFBhZ2VJbmZvO1xuICBASW5wdXQoKVxuICBwZW5kaW5nRmlsdGVyczogRmllbGRGaWx0ZXJbXSA9IFtdO1xuXG4gIEBJbnB1dCgpXG4gIHNob3dFeHBvcnRCdXR0b246IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBleHBvcnREaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGZpbHRlcjogRmllbGRGaWx0ZXI7XG4gIGZpbHRlcnM6IEZpZWxkRmlsdGVyW10gPSBbXTtcbiAgZGF0ZVJhbmdlSW52YWxpZCA9IGZhbHNlO1xuXG4gIHByaXZhdGUgc2VhcmNoVGltZW91dDogYW55O1xuXG4gIGZpbHRlclJlc2V0Tm9uY2UgPSAwO1xuXG4gIEBPdXRwdXQoKVxuICBmaWx0ZXJJbmZvcm1hdGlvbjogRXZlbnRFbWl0dGVyPHsgZmlsdGVyczogRmllbGRGaWx0ZXJbXSwgc2VhcmNoU3RyOiBzdHJpbmcgfT4gPSBuZXcgRXZlbnRFbWl0dGVyPHsgZmlsdGVyczogRmllbGRGaWx0ZXJbXSwgc2VhcmNoU3RyOiBzdHJpbmcgfT4oKTtcblxuICBAT3V0cHV0KClcbiAgaXNFbXB0eTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIEBPdXRwdXQoKVxuICBhcHBseUZpbHRlcjogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIEBPdXRwdXQoKVxuICBzb3J0QnlDbGlja2VkOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIEBPdXRwdXQoKVxuICBleHBvcnRDbGlja2VkOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICB9XG5cbiAgaXNNb2JpbGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHdpbmRvdy5pbm5lcldpZHRoIDw9IDc2ODtcbiAgfVxuXG4gIGdldFNvcnRhYmxlQ29sdW1ucygpOiBUYWJsZUNvbHVtbjxhbnk+W10ge1xuICAgIGlmICghdGhpcy5jb2x1bW5zKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmNvbHVtbnMuZmlsdGVyKGNvbHVtbiA9PlxuICAgICAgY29sdW1uLnZpc2libGUgPT09IHRydWUgJiYgY29sdW1uLmVuYWJsZVNvcnRpbmcgPT09IHRydWVcbiAgICApO1xuICB9XG5cbiAgbGFiZWxLZXkoY29sdW1uOiBUYWJsZUNvbHVtbjxhbnk+KTogc3RyaW5nIHtcbiAgICBpZiAoIWNvbHVtbiB8fCAhY29sdW1uLnByb3BlcnR5KSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIGNvbnN0IGNvbmZpZ3VyZWRLZXkgPSBjb2x1bW4ubGFiZWwgPyBjb2x1bW4ubGFiZWwgOiBjb2x1bW4ucHJvcGVydHk7XG4gICAgaWYgKCF0aGlzLnBhZ2VJbmZvIHx8ICF0aGlzLnBhZ2VJbmZvLmxhYmVsc1NlY3Rpb24pIHtcbiAgICAgIHJldHVybiBjb25maWd1cmVkS2V5O1xuICAgIH1cbiAgICByZXR1cm4gY29uZmlndXJlZEtleS5zdGFydHNXaXRoKHRoaXMucGFnZUluZm8ubGFiZWxzU2VjdGlvbilcbiAgICAgID8gYCR7Y29uZmlndXJlZEtleX1gXG4gICAgICA6IGAke3RoaXMucGFnZUluZm8ubGFiZWxzU2VjdGlvbn0uJHtjb25maWd1cmVkS2V5fWA7XG4gIH1cblxuICBvblNvcnRCeUNsaWNrKGNvbHVtblByb3BlcnR5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnNvcnRCeUNsaWNrZWQuZW1pdChjb2x1bW5Qcm9wZXJ0eSk7XG4gIH1cblxuICBvbkV4cG9ydENsaWNrKHJlcG9ydFR5cGU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuZXhwb3J0Q2xpY2tlZC5lbWl0KHJlcG9ydFR5cGUpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG5cblxuICAgIHRoaXMuc3dpdGNoVG9BZHZhbmNlZCgpO1xuICAgIGlmICghdGhpcy5maWx0ZXIpIHtcbiAgICAgIHRoaXMuZmlsdGVyID0gdGhpcy5jcmVhdGVEZWZhdWx0RmllbGRGaWx0ZXIoKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuZmlsdGVyRmllbGRzICYmIHRoaXMuZmlsdGVyRmllbGRzLmxlbmd0aCkge1xuICAgICAgdGhpcy5maWx0ZXJzID0gdGhpcy5maWx0ZXJGaWVsZHMubWFwKCgpID0+IHRoaXMuY3JlYXRlRGVmYXVsdEZpZWxkRmlsdGVyKCkpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNlYXJjaFRpbWVvdXQpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLnNlYXJjaFRpbWVvdXQpO1xuICAgICAgdGhpcy5zZWFyY2hUaW1lb3V0ID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSlcbiAgb25LZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VudGVyJyAmJiAhZXZlbnQuc2hpZnRLZXkgJiYgIWV2ZW50LmN0cmxLZXkgJiYgIWV2ZW50Lm1ldGFLZXkpIHtcbiAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICAgIGNvbnN0IGlzSW5wdXRFbGVtZW50ID0gdGFyZ2V0LnRhZ05hbWUgPT09ICdJTlBVVCcgfHxcbiAgICAgICAgdGFyZ2V0LnRhZ05hbWUgPT09ICdURVhUQVJFQScgfHxcbiAgICAgICAgdGFyZ2V0LnRhZ05hbWUgPT09ICdTRUxFQ1QnIHx8XG4gICAgICAgIHRhcmdldC5pc0NvbnRlbnRFZGl0YWJsZTtcblxuICAgICAgaWYgKGlzSW5wdXRFbGVtZW50KSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBpZiAodGhpcy5zZWFyY2hUaW1lb3V0KSB7XG4gICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuc2VhcmNoVGltZW91dCk7XG4gICAgICAgICAgdGhpcy5zZWFyY2hUaW1lb3V0ID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLmRvU2VhcmNoKCk7XG4gICAgICAgICAgdGhpcy5vbkFwcGx5RmlsdGVyKCk7XG4gICAgICAgIH0sIDApO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLm9uQXBwbHlGaWx0ZXIoKTtcbiAgICB9XG4gIH1cblxuXG4gIGRvU2VhcmNoKCkge1xuICAgIGxldCBzZWFyY2hTdHIgPSAnJztcbiAgICBjb25zdCBmaWx0ZXJzQXJyYXkgPSAodGhpcy5maWx0ZXJzIHx8IFtdKVxuICAgICAgLmZpbHRlcihmID0+ICEhZiAmJiAhIWYuZmllbGROYW1lICYmIHRoaXMuaGFzRmlsdGVyVmFsdWUoZi52YWx1ZU9iamVjdCkpXG4gICAgICAubWFwKGYgPT4ge1xuICAgICAgICBjb25zdCBmaWVsZEluZm8gPSB0aGlzLmZpbHRlckZpZWxkcz8uZmluZChmaWVsZCA9PiBmaWVsZC5wcm9wZXJ0eSA9PT0gZi5maWVsZE5hbWUpO1xuICAgICAgICBpZiAoZmllbGRJbmZvPy5tdWx0aUxldmVsU2VhcmNoRW5hYmxlICYmIGYudmFsdWVPYmplY3QpIHtcbiAgICAgICAgICBzZWFyY2hTdHIgPSBmLnZhbHVlT2JqZWN0O1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7Li4uZn07XG4gICAgICB9KVxuICAgICAgLmZpbHRlcihmID0+IGYgIT09IG51bGwpO1xuXG4gICAgdGhpcy5maWx0ZXJJbmZvcm1hdGlvbi5lbWl0KHsgZmlsdGVyczogZmlsdGVyc0FycmF5LCBzZWFyY2hTdHIgfSk7XG4gIH1cblxuICBvbkFwcGx5RmlsdGVyKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRhdGVSYW5nZUludmFsaWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmRvU2VhcmNoKCk7XG4gICAgICB0aGlzLmFwcGx5RmlsdGVyLmVtaXQoKTtcbiAgICAgIGNvbnN0IG1zZyA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ0JBU0VfVEFCTEUuZmlsdGVyQXBwbGllZCcpO1xuICAgICAgdm9pZCB0aGlzLmxpdmVBbm5vdW5jZXIuYW5ub3VuY2UobXNnLCAncG9saXRlJyk7XG4gICAgfSwgMCk7XG4gIH1cblxuICBwcml2YXRlIHNjaGVkdWxlU2VhcmNoKGRlbGF5TXM6IG51bWJlciA9IDgwMCkge1xuICAgIGlmICh0aGlzLnNlYXJjaFRpbWVvdXQpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLnNlYXJjaFRpbWVvdXQpO1xuICAgIH1cbiAgICB0aGlzLnNlYXJjaFRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuZG9TZWFyY2goKTtcbiAgICB9LCBkZWxheU1zKTtcbiAgfVxuXG4gIGZvcm1DaGFuZ2VzKCRldmVudDogYW55LCBpbmRleD86IG51bWJlciwgZmllbGRJbmZvPzogRmllbGRJbmZvKSB7XG4gICAgY29uc3QgZm9ybWF0SWZEYXRlID0gKHR5cGU/OiBzdHJpbmcsIHZhbHVlPzogYW55KSA9PiB7XG4gICAgICBpZiAoIXR5cGUgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gJycpIHJldHVybiB2YWx1ZTtcbiAgICAgIGlmICgodHlwZSB8fCAnJykudG9Mb3dlckNhc2UoKS5pbmNsdWRlcygnZGF0ZScpKSB7XG4gICAgICAgIHJldHVybiBmb3JtYXREYXRlKHZhbHVlLCAneXl5eS1NTS1kZCcsICdlbl9VUycpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH07XG5cbiAgICBpZiAoaW5kZXggPT09IHVuZGVmaW5lZCB8fCAhZmllbGRJbmZvKSB7XG4gICAgICB0aGlzLmRhdGVSYW5nZUludmFsaWQgPSB0aGlzLmlzRGF0ZVJhbmdlSW52YWxpZCgkZXZlbnQpO1xuICAgICAgaWYgKCF0aGlzLmZpbHRlckZpZWxkcyB8fCAhdGhpcy5maWx0ZXJGaWVsZHMubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMuZmlsdGVycyA9IFtdO1xuICAgICAgICB0aGlzLmRvU2VhcmNoKCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5maWx0ZXJzID0gdGhpcy5maWx0ZXJGaWVsZHMubWFwKChmaSkgPT4ge1xuICAgICAgICBjb25zdCBjb250cm9sTmFtZSA9IGZpLnByb3BlcnR5O1xuICAgICAgICBsZXQgdmFsdWUgPSAkZXZlbnQgPyAkZXZlbnRbY29udHJvbE5hbWVdIDogdW5kZWZpbmVkO1xuICAgICAgICBpZiAoIXRoaXMuaXNGaWx0ZXJWYWx1ZUFjdGl2ZShmaSwgdmFsdWUpKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlRGVmYXVsdEZpZWxkRmlsdGVyKCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZmllbGROYW1lID0gY29udHJvbE5hbWUgPT09ICdmcm9tJyB8fCBjb250cm9sTmFtZSA9PT0gJ3RvJyA/ICBmaS50YXJnZXRQcm9wZXJ0eSA6IGNvbnRyb2xOYW1lO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZmllbGROYW1lOiBmaWVsZE5hbWUsXG4gICAgICAgICAgb3BlcmF0b3I6IGZpLmZpbHRlck9wZXJhdG9yIHx8ICdFUVVBTFMnLFxuICAgICAgICAgIGZpbHRlclR5cGU6ICdGSUxFRF9GSUxURVInLFxuICAgICAgICAgIGZpZWxkVHlwZTogdGhpcy50eXBlTWFwKGZpLnR5cGUpIGFzIGFueSxcbiAgICAgICAgICB2YWx1ZU9iamVjdDogZm9ybWF0SWZEYXRlKGZpLnR5cGUsIHZhbHVlKSBhcyBhbnlcbiAgICAgICAgfSBhcyBGaWVsZEZpbHRlcjtcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBoYXNUZXh0RmllbGQgPSAodGhpcy5maWx0ZXJGaWVsZHMgfHwgW10pLnNvbWUoZmkgPT4gKChmaS50eXBlIHx8ICcnKS50b0xvd2VyQ2FzZSgpID09PSAndGV4dCcpKTtcbiAgICAgIGlmIChoYXNUZXh0RmllbGQpIHtcbiAgICAgICAgdGhpcy5zY2hlZHVsZVNlYXJjaCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5kb1NlYXJjaCgpO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5maWx0ZXJzKSB7XG4gICAgICB0aGlzLmZpbHRlcnMgPSBbXTtcbiAgICB9XG4gICAgaWYgKHRoaXMuZmlsdGVycy5sZW5ndGggPCBpbmRleCArIDEpIHtcbiAgICAgIHRoaXMuZmlsdGVycy5sZW5ndGggPSBpbmRleCArIDE7XG4gICAgfVxuXG4gICAgbGV0IGNvbnRyb2xOYW1lID0gZmllbGRJbmZvLnByb3BlcnR5O1xuICAgIGxldCB2YWx1ZSA9ICRldmVudCA/ICRldmVudFtjb250cm9sTmFtZV0gOiB1bmRlZmluZWQ7XG4gICAgaWYgKCRldmVudCAmJiAkZXZlbnQuZmlsdGVyRmllbGQgIT09IHVuZGVmaW5lZCAmJiAkZXZlbnQuZnJvbVZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnRyb2xOYW1lID0gJGV2ZW50LmZpbHRlckZpZWxkIHx8IGNvbnRyb2xOYW1lO1xuICAgICAgdmFsdWUgPSAkZXZlbnQuZnJvbVZhbHVlO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5pc0ZpbHRlclZhbHVlQWN0aXZlKGZpZWxkSW5mbywgdmFsdWUpKSB7XG4gICAgICB0aGlzLmZpbHRlcnNbaW5kZXhdID0gdGhpcy5jcmVhdGVEZWZhdWx0RmllbGRGaWx0ZXIoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5maWx0ZXJzW2luZGV4XSA9IHtcbiAgICAgICAgZmllbGROYW1lOiBjb250cm9sTmFtZSxcbiAgICAgICAgb3BlcmF0b3I6ICBmaWVsZEluZm8uZmlsdGVyT3BlcmF0b3IgfHwgJ0VRVUFMUycsXG4gICAgICAgIGZpbHRlclR5cGU6ICdGSUxFRF9GSUxURVInLFxuICAgICAgICBmaWVsZFR5cGU6IHRoaXMudHlwZU1hcChmaWVsZEluZm8udHlwZSkgYXMgYW55LFxuICAgICAgICB2YWx1ZU9iamVjdDogZm9ybWF0SWZEYXRlKGZpZWxkSW5mby50eXBlLCB2YWx1ZSkgYXMgYW55XG4gICAgICB9IGFzIEZpZWxkRmlsdGVyO1xuICAgIH1cbiAgICBjb25zdCBpc1RleHRGaWVsZCA9ICgoZmllbGRJbmZvLnR5cGUgfHwgJycpLnRvTG93ZXJDYXNlKCkgPT09ICd0ZXh0Jyk7XG4gICAgaWYgKGlzVGV4dEZpZWxkKSB7XG4gICAgICB0aGlzLnNjaGVkdWxlU2VhcmNoKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZG9TZWFyY2goKTtcbiAgICB9XG4gIH1cbiAgdHlwZU1hcChjb2xUeXBlPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCB0ID0gKGNvbFR5cGUgfHwgJycpLnRvTG93ZXJDYXNlKCk7XG4gICAgaWYgKHQuaW5jbHVkZXMoJ251bWJlcicpIHx8IHQuaW5jbHVkZXMoJ2ludCcpIHx8IHQgPT09ICdsb25nJykgcmV0dXJuICdMb25nJztcbiAgICBpZiAodC5pbmNsdWRlcygnZGF0ZScpIHx8IHQuaW5jbHVkZXMoJ3RpbWUnKSkgcmV0dXJuICdEYXRlJztcbiAgICBpZiAodC5pbmNsdWRlcygnYm9vbCcpKSByZXR1cm4gJ0Jvb2xlYW4nO1xuICAgIHJldHVybiAnU3RyaW5nJztcbiAgfVxuXG4gIGlzRWRpdGFibGUoX2luZGV4PzogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuXG4gIGRlbGV0ZUFsbCgpIHtcbiAgICB0aGlzLmZpbHRlciA9IHRoaXMuY3JlYXRlRGVmYXVsdEZpZWxkRmlsdGVyKCk7XG4gICAgdGhpcy5maWx0ZXJzID0gdGhpcy5maWx0ZXJGaWVsZHMgPyB0aGlzLmZpbHRlckZpZWxkcy5tYXAoKCkgPT4gdGhpcy5jcmVhdGVEZWZhdWx0RmllbGRGaWx0ZXIoKSkgOiBbXTtcbiAgICB0aGlzLmlzRW1wdHkuZW1pdCh0cnVlKTtcbiAgfVxuXG4gIG9uQ2xlYXJGaWx0ZXJzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNlYXJjaFRpbWVvdXQpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLnNlYXJjaFRpbWVvdXQpO1xuICAgICAgdGhpcy5zZWFyY2hUaW1lb3V0ID0gbnVsbDtcbiAgICB9XG4gICAgdGhpcy5maWx0ZXJSZXNldE5vbmNlKys7XG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmRlbGV0ZUFsbCgpLCAwKTtcbiAgfVxuXG4gIHN3aXRjaFRvQWR2YW5jZWQoKSB7XG4gICAgaWYgKHRoaXMuaXNDaGVja2VkKSB7XG4gICAgICBpZiAoIXRoaXMuZmlsdGVyIHx8IE9iamVjdC5rZXlzKHRoaXMuZmlsdGVyKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdGhpcy5maWx0ZXIgPSB0aGlzLmNyZWF0ZURlZmF1bHRGaWVsZEZpbHRlcigpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG5cbiAgcHJpdmF0ZSBjcmVhdGVEZWZhdWx0RmllbGRGaWx0ZXIoKTogRmllbGRGaWx0ZXIge1xuICAgIHJldHVybiB7XG4gICAgICBmaWVsZE5hbWU6ICcnLFxuICAgICAgb3BlcmF0b3I6ICcnLFxuICAgICAgZmlsdGVyVHlwZTogJycsXG4gICAgICBmaWVsZFR5cGU6ICcnLFxuICAgICAgdmFsdWVPYmplY3Q6ICcnXG4gICAgfSBhcyBGaWVsZEZpbHRlcjtcbiAgfVxuXG4gIHByaXZhdGUgaXNEYXRlUmFuZ2VJbnZhbGlkKHZhbHVlOiB1bmtub3duKTogYm9vbGVhbiB7XG4gICAgaWYgKCF2YWx1ZSB8fCB0eXBlb2YgdmFsdWUgIT09ICdvYmplY3QnKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IHJlY29yZCA9IHZhbHVlIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgIGNvbnN0IGZyb21UaW1lID0gdGhpcy50b1RpbWVzdGFtcChyZWNvcmRbJ2Zyb20nXSk7XG4gICAgY29uc3QgdG9UaW1lID0gdGhpcy50b1RpbWVzdGFtcChyZWNvcmRbJ3RvJ10pO1xuICAgIGlmIChmcm9tVGltZSA9PT0gbnVsbCB8fCB0b1RpbWUgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIGZyb21UaW1lID4gdG9UaW1lO1xuICB9XG5cbiAgcHJpdmF0ZSB0b1RpbWVzdGFtcCh2YWx1ZTogdW5rbm93bik6IG51bWJlciB8IG51bGwge1xuICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSAnJykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgIHJldHVybiBOdW1iZXIuaXNOYU4odmFsdWUuZ2V0VGltZSgpKSA/IG51bGwgOiB2YWx1ZS5nZXRUaW1lKCk7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSB7XG4gICAgICBjb25zdCBwcmltaXRpdmUgPSAodmFsdWUgYXMgeyB2YWx1ZU9mOiAoKSA9PiB1bmtub3duIH0pLnZhbHVlT2YoKTtcbiAgICAgIGlmICh0eXBlb2YgcHJpbWl0aXZlID09PSAnbnVtYmVyJyAmJiBOdW1iZXIuaXNGaW5pdGUocHJpbWl0aXZlKSkge1xuICAgICAgICByZXR1cm4gcHJpbWl0aXZlO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBwYXJzZWQgPSBuZXcgRGF0ZSh2YWx1ZSBhcyBzdHJpbmcgfCBudW1iZXIpLmdldFRpbWUoKTtcbiAgICByZXR1cm4gTnVtYmVyLmlzRmluaXRlKHBhcnNlZCkgPyBwYXJzZWQgOiBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBoYXNGaWx0ZXJWYWx1ZSh2YWx1ZTogdW5rbm93bik6IGJvb2xlYW4ge1xuICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSAnJykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gIUFycmF5LmlzQXJyYXkodmFsdWUpIHx8IHZhbHVlLmxlbmd0aCA+IDA7XG4gIH1cblxuICBwcml2YXRlIGlzRmlsdGVyVmFsdWVBY3RpdmUoZmllbGRJbmZvOiBGaWVsZEluZm8sIHZhbHVlOiB1bmtub3duKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLmhhc0ZpbHRlclZhbHVlKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoKGZpZWxkSW5mby50eXBlIHx8ICcnKSAhPT0gJ211bHRpLXN0YXRlLWNoZWNrYm94Jykge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGNvbnN0IHNlbGVjdGVkID0gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFtdO1xuICAgIGNvbnN0IG9wdGlvbnMgPSBmaWVsZEluZm8ubGlzdE9wdGlvbnMgfHwgW107XG4gICAgcmV0dXJuIG9wdGlvbnMubGVuZ3RoID09PSAwIHx8ICFvcHRpb25zLmV2ZXJ5KChjb2RlOiBzdHJpbmcpID0+IHNlbGVjdGVkLmluY2x1ZGVzKGNvZGUpKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIm1haW4tZmlsdGVyLWJ1aWxkZXJcIj5cblxuICA8IS0tIERlc2t0b3AgVmlldyAtLT5cbiAgPGRpdiBjbGFzcz1cImZpbHRlckZvcm0gZGVza3RvcC12aWV3XCI+XG4gICAgPGRpdiBjbGFzcz1cImZpbHRlckZvcm1fX3Jvd1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImZpbHRlckZvcm1fX2NvbFwiPlxuICAgICAgICA8YXBwLWZpZWxkLWZpbHRlclxuICAgICAgICAgIFtlZGl0YWJsZV09XCJpc0VkaXRhYmxlKClcIlxuICAgICAgICAgIFtmaWx0ZXJdPVwiZmlsdGVyXCJcbiAgICAgICAgICBbcGFnZUluZm9dPVwicGFnZUluZm9cIlxuICAgICAgICAgICpuZ0lmPVwiaXNFZGl0YWJsZSgpXCJcbiAgICAgICAgICBbZmlsdGVyRmllbGRzXT1cImZpbHRlckZpZWxkc1wiXG4gICAgICAgICAgW2ZpbHRlclJlc2V0Tm9uY2VdPVwiZmlsdGVyUmVzZXROb25jZVwiXG4gICAgICAgICAgKGZpbHRlckZpZWxkSW5mb3JtYXRpb24pPVwiZm9ybUNoYW5nZXMoJGV2ZW50KVwiXG4gICAgICAgICAgY2xhc3M9XCJmaWx0ZXJGb3JtX19maWxlZC1maWx0ZXJcIlxuICAgICAgICA+XG4gICAgICAgIDwvYXBwLWZpZWxkLWZpbHRlcj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbi1ncm91cFwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgbWF0LWZsYXQtYnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJidG4tYXBwbHktZmlsdGVyXCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAoY2xpY2spPVwib25DbGVhckZpbHRlcnMoKVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24tdGV4dFwiPlxuICAgICAgICAgICAgPG1hdC1pY29uPmNsZWFyX2FsbDwvbWF0LWljb24+XG4gICAgICAgICAgICA8c3Bhbj57eyAnRklMVEVSLUJVSUxERVIuY2xlYXJGaWx0ZXJzJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBtYXQtZmxhdC1idXR0b25cbiAgICAgICAgICBjbGFzcz1cImJ0bi1hcHBseS1maWx0ZXJcIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJkYXRlUmFuZ2VJbnZhbGlkXCJcbiAgICAgICAgICAoY2xpY2spPVwib25BcHBseUZpbHRlcigpXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbi10ZXh0XCI+XG4gICAgICAgICAgICA8bWF0LWljb24+ZmlsdGVyX2xpc3Q8L21hdC1pY29uPlxuICAgICAgICAgICAgPHNwYW4+e3sgJ0ZJTFRFUi1CVUlMREVSLmFwcGx5RmlsdGVyJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBNb2JpbGUgVmlldyAtLT5cbiAgPGRpdiBjbGFzcz1cIm1vYmlsZS12aWV3XCI+XG4gICAgPCEtLSBNb2JpbGUgUm93IDE6IFNlYXJjaCBGaWVsZCBhbmQgRXhwb3J0IEJ1dHRvbiAtLT5cbiAgICA8ZGl2IGNsYXNzPVwibW9iaWxlLXNlYXJjaC1yb3dcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtb2JpbGUtc2VhcmNoLWZpZWxkXCI+XG4gICAgICAgIDxhcHAtZmllbGQtZmlsdGVyXG4gICAgICAgICAgW2VkaXRhYmxlXT1cImlzRWRpdGFibGUoKVwiXG4gICAgICAgICAgW2ZpbHRlcl09XCJmaWx0ZXJcIlxuICAgICAgICAgIFtwYWdlSW5mb109XCJwYWdlSW5mb1wiXG4gICAgICAgICAgKm5nSWY9XCJpc0VkaXRhYmxlKClcIlxuICAgICAgICAgIFtmaWx0ZXJGaWVsZHNdPVwiZmlsdGVyRmllbGRzXCJcbiAgICAgICAgICBbZmlsdGVyUmVzZXROb25jZV09XCJmaWx0ZXJSZXNldE5vbmNlXCJcbiAgICAgICAgICAoZmlsdGVyRmllbGRJbmZvcm1hdGlvbik9XCJmb3JtQ2hhbmdlcygkZXZlbnQpXCJcbiAgICAgICAgICBjbGFzcz1cIm1vYmlsZS1maWVsZC1maWx0ZXJcIlxuICAgICAgICA+XG4gICAgICAgIDwvYXBwLWZpZWxkLWZpbHRlcj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGJ1dHRvblxuICAgICAgICAqbmdJZj1cInNob3dFeHBvcnRCdXR0b25cIlxuICAgICAgICBtYXQtZmxhdC1idXR0b25cbiAgICAgICAgY2xhc3M9XCJidG4tZXhwb3J0LW1vYmlsZVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJleHBvcnREaXNhYmxlZFwiXG4gICAgICAgIFttYXRNZW51VHJpZ2dlckZvcl09XCJleHBvcnRNZW51XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24tY29udGVudFwiPlxuICAgICAgICAgIDxtYXQtaWNvbj5maWxlX2V4cG9ydDwvbWF0LWljb24+XG4gICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiYXJyb3ctaWNvblwiPmtleWJvYXJkX2Fycm93X2Rvd248L21hdC1pY29uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPG1hdC1tZW51ICNleHBvcnRNZW51PVwibWF0TWVudVwiPlxuICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cIm9uRXhwb3J0Q2xpY2soJ3BkZicpXCI+UERGPC9idXR0b24+XG4gICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwib25FeHBvcnRDbGljaygneGxzeCcpXCI+RXhjZWw8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJvbkV4cG9ydENsaWNrKCdjc3YnKVwiPkNTVjwvYnV0dG9uPlxuICAgICAgPC9tYXQtbWVudT5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gTW9iaWxlIFJvdyAyOiBGaWx0ZXIgQnkgYW5kIFNvcnQgQnkgQnV0dG9ucyAtLT5cbiAgICA8ZGl2IGNsYXNzPVwibW9iaWxlLWZpbHRlci1yb3dcIj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgbWF0LWZsYXQtYnV0dG9uXG4gICAgICAgIGNsYXNzPVwiYnRuLWZpbHRlci1ieSBidG4tZmlsdGVyLWJ5LS1pY29uLW9ubHlcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgKGNsaWNrKT1cIm9uQ2xlYXJGaWx0ZXJzKClcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidGSUxURVItQlVJTERFUi5jbGVhckZpbHRlcnMnIHwgdHJhbnNsYXRlXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24tY29udGVudFwiPlxuICAgICAgICAgIDxtYXQtaWNvbj5kZWxldGVfc3dlZXA8L21hdC1pY29uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBtYXQtZmxhdC1idXR0b25cbiAgICAgICAgY2xhc3M9XCJidG4tZmlsdGVyLWJ5XCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkYXRlUmFuZ2VJbnZhbGlkXCJcbiAgICAgICAgKGNsaWNrKT1cIm9uQXBwbHlGaWx0ZXIoKVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uLWNvbnRlbnRcIj5cbiAgICAgICAgICA8bWF0LWljb24+ZmlsdGVyX2xpc3Q8L21hdC1pY29uPlxuICAgICAgICAgIDxzcGFuPnt7ICdGSUxURVItQlVJTERFUi5hcHBseUZpbHRlcicgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIG1hdC1mbGF0LWJ1dHRvblxuICAgICAgICBjbGFzcz1cImJ0bi1zb3J0LWJ5XCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIFttYXRNZW51VHJpZ2dlckZvcl09XCJzb3J0TWVudVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uLWNvbnRlbnRcIj5cbiAgICAgICAgICA8bWF0LWljb24+dW5mb2xkX21vcmU8L21hdC1pY29uPlxuICAgICAgICAgIDxzcGFuPnt7ICdGSUxURVItQlVJTERFUi5zb3J0QnknIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImFycm93LWljb25cIj5rZXlib2FyZF9hcnJvd19kb3duPC9tYXQtaWNvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxtYXQtbWVudSAjc29ydE1lbnU9XCJtYXRNZW51XCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIGdldFNvcnRhYmxlQ29sdW1ucygpXCJcbiAgICAgICAgICBtYXQtbWVudS1pdGVtXG4gICAgICAgICAgKGNsaWNrKT1cIm9uU29ydEJ5Q2xpY2soY29sdW1uLnByb3BlcnR5KVwiPlxuICAgICAgICAgIHt7IGxhYmVsS2V5KGNvbHVtbikgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAqbmdJZj1cImdldFNvcnRhYmxlQ29sdW1ucygpLmxlbmd0aCA9PT0gMFwiXG4gICAgICAgICAgbWF0LW1lbnUtaXRlbVxuICAgICAgICAgIGRpc2FibGVkPlxuICAgICAgICAgIHt7ICdGSUxURVItQlVJTERFUi5ub1NvcnRhYmxlQ29sdW1ucycgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L21hdC1tZW51PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuPCEtLSAgPGRpdiAqbmdJZj1cImNoZWNrSXNFbXB0eSgpXCIgY2xhc3M9XCJsaW5lLXRvcFwiPi0tPlxuPCEtLSAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj4tLT5cbjwhLS0gIDwvZGl2Pi0tPlxuXG48IS0tICA8ZGl2IGNsYXNzPVwibGluZS1ib3R0b21cIj4tLT5cbjwhLS0gICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+LS0+XG48IS0tICA8L2Rpdj4tLT5cblxuPCEtLSAgPGRpdiBjbGFzcz1cImFjdGlvblwiPi0tPlxuPCEtLSAgICA8YnV0dG9uIGNsYXNzPVwiYnRuLW5vbmUtYmFja2dyb3VuZC1wcmltYXJ5IGFjdGlvbl9fY2xlYXJcIiBtYXQtYnV0dG9uIChjbGljayk9XCJkZWxldGVBbGwoKVwiPi0tPlxuPCEtLSAgICAgIHt7J0ZJTFRFUi1CVUlMREVSLmNsZWFyQWxsRmlsdGVycycgfCB0cmFuc2xhdGV9fS0tPlxuPCEtLSAgICA8L2J1dHRvbj4tLT5cbjwhLS0gICAgPGJ1dHRvbiBjbGFzcz1cImJ0bi1iYWNrZ3JvdW5kLXByaW1hcnlcIiBtYXQtYnV0dG9uIChjbGljayk9XCJkb1NlYXJjaCgpXCI+LS0+XG48IS0tICAgICAge3snRklMVEVSLUJVSUxERVIuc2VhcmNoJyB8IHRyYW5zbGF0ZX19LS0+XG48IS0tICAgIDwvYnV0dG9uPi0tPlxuPCEtLSAgPC9kaXY+LS0+XG48L2Rpdj5cbiJdfQ==
|