ngx-bimplus-components 0.0.165 → 0.0.166

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.
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18 18"><path d="M9 0C4 0 0 4 0 9s4 9 9 9 9-4 9-9-4-9-9-9zM8 4h2v2H8V4zm3 10H7v-1h1V8H7V7h3v6h1v1z" fill="#fff"/></svg>
@@ -51,6 +51,7 @@ export class BimplusObjectNavigatorComponent extends BimplusLocalizedWidgetCompo
51
51
  this.pipetteActiveStatus = new EventEmitter();
52
52
  this.FilterCriteriaSelectionMode = FilterCriteriaSelectionMode; // Expose enum to template
53
53
  this.isLoadingResults = false;
54
+ this.filterResultInvalidated = false;
54
55
  // #endregion public fields
55
56
  // #region private fields
56
57
  this._filterResult = null;
@@ -92,6 +93,11 @@ export class BimplusObjectNavigatorComponent extends BimplusLocalizedWidgetCompo
92
93
  if (!this.projectId || !this.api || !v) {
93
94
  return;
94
95
  }
96
+ if (this._filterResult) {
97
+ // Filter results are available and visibility of model/layer was changed
98
+ // Invalidate filter results => show overlay info dailog
99
+ this.filterResultInvalidated = true;
100
+ }
95
101
  this.activeFilter = null;
96
102
  this.loadCurrentLayerFilters(this.projectId, v.id)?.subscribe({
97
103
  next: (value) => {
@@ -151,6 +157,8 @@ export class BimplusObjectNavigatorComponent extends BimplusLocalizedWidgetCompo
151
157
  this.handlePipetteActiveStatus(false /* disable pipette cursor */);
152
158
  this.filterCriteriaSelectionMode$.next(FilterCriteriaSelectionMode.None);
153
159
  this._filterResult = null;
160
+ // Filter results will be updated again, so they are no longer invalid
161
+ this.filterResultInvalidated = false;
154
162
  // Custom filter is selected
155
163
  if (this.activeFilter && !this.activeFilter.id) {
156
164
  this.activeFilter.filterString = new FilterString().fromFilterCriteria(this.filterCriteria);
@@ -240,7 +248,7 @@ export class BimplusObjectNavigatorComponent extends BimplusLocalizedWidgetCompo
240
248
  }
241
249
  }
242
250
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: BimplusObjectNavigatorComponent, deps: [{ token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
243
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.12", type: BimplusObjectNavigatorComponent, isStandalone: true, selector: "lib-bimplus-object-navigator", inputs: { hideFilterContextMenu: "hideFilterContextMenu", filterContextMenu: "filterContextMenu", filterTypes: "filterTypes", filters: "filters", api: "api", projectId: "projectId", selectedObjectId: "selectedObjectId", selectedRevision: "selectedRevision", selectedObjects: "selectedObjects", selectionObject: "selectionObject" }, outputs: { filterCriteriaSelectionModeChanged: "filterCriteriaSelectionModeChanged", filterResultObjectSelectionChanged: "filterResultObjectSelectionChanged", filterResultObjectDoubleClicked: "filterResultObjectDoubleClicked", filterResultObjectMouseEntered: "filterResultObjectMouseEntered", filterResultObjectMouseLeft: "filterResultObjectMouseLeft", pipetteActiveStatus: "pipetteActiveStatus" }, host: { properties: { "class.object-navigator": "this.objNavClassClass" } }, viewQueries: [{ propertyName: "objectFilterResult", first: true, predicate: ObjectFilterResultComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<lib-bimplus-sidenav-drawer-content [header]=\"'_Object navigator' | translate\"\r\n [isLoading]=\"isLoadingResults\"\r\n [loadingSpinnerText]=\"'_Loading_Filter_Results' | translate\"\r\n>\r\n <div class=\"object-navigator-content-container\">\r\n @if(filterTypes.length > 0){\r\n <div class=\"description\">\r\n {{\"_Select_an_object_using_Object_Picker\" | translate}}\r\n </div>\r\n <div class=\"object-navigator-filters-type\">\r\n <ng-select data-test=\"object-navigator-filter-types-dropdown\" class=\"object-navigator-dropdown\" [(ngModel)]=\"activeFilterType\" [clearable]=\"false\" [searchable]=\"false\">\r\n <ng-option *ngFor=\"let type of filterTypes\" [value]=\"type\">{{type.name}}</ng-option>\r\n </ng-select>\r\n </div>\r\n <div class=\"object-navigator-filters-name\">\r\n <ng-select data-test=\"object-navigator-filters-name-dropdown\" class=\"object-navigator-dropdown\" [(ngModel)]=\"activeFilter\" [clearable]=\"false\" [disabled]=\"!filters\" [searchable]=\"false\">\r\n <ng-option *ngFor=\"let filter of filters\" [value]=\"filter\">{{filter.name}}</ng-option>\r\n </ng-select>\r\n\r\n @if(!hideFilterContextMenu){\r\n <lib-bimplus-context-menu class=\"object-navigator-filters-name-context-menu\"\r\n [items]=\"filterContextMenu\"\r\n *ngIf=\"filterContextMenu?.length\"\r\n >\r\n </lib-bimplus-context-menu>\r\n }\r\n\r\n </div>\r\n\r\n <lib-expansion-panel class=\"object-navigator-filter-criteria-panel\">\r\n <lib-expansion-panel-header>\r\n <span class=\"object-navigator-filter-criteria-header\">\r\n {{ \"_Assign_Objects_Selection_Mode\" | translate }} &#40;{{ filterCriteria.length }}/{{ maxFilterCriteria }}&#41;\r\n </span>\r\n <lib-expansion-panel-header-actions>\r\n <div class=\"object-navigator-pick-object-button\"\r\n [ngClass]=\"filterCriteriaSelectionMode$.getValue() === FilterCriteriaSelectionMode.SelectObjectProperties? 'active' : ''\"\r\n (click)=\"setFilterCriteriaSelectionMode(FilterCriteriaSelectionMode.SelectObjectProperties)\"\r\n (keypress)=\"setFilterCriteriaSelectionMode(FilterCriteriaSelectionMode.SelectObjectProperties)\"\r\n [title]=\"'_Object_Picker'| translate\"\r\n ></div>\r\n </lib-expansion-panel-header-actions>\r\n </lib-expansion-panel-header>\r\n\r\n <div class=\"filter-criteria-container\">\r\n @for (criterium of filterCriteria; track criterium; let i = $index) {\r\n <app-filter-criterium\r\n [criterium] = \"criterium\"\r\n [indent]=\"i*0.8\"\r\n (deleteCriterium)=\"deleteFilterCriterium(i)\"\r\n ></app-filter-criterium>\r\n }\r\n </div>\r\n </lib-expansion-panel>\r\n\r\n @switch(filterCriteriaSelectionMode$.getValue()){\r\n @case(FilterCriteriaSelectionMode.SelectObjectProperties){\r\n @if(!selectedObjectId){\r\n <p id=\"NoObjectSelected\">{{ \"_NoObjectSelected\" | translate}}</p>\r\n }\r\n }\r\n }\r\n\r\n <div class=\"object-navigator-apply-button-row\">\r\n <button class=\"primary-button\" \r\n [class.disabled]=\"applyFilterDisabled()\"\r\n [disabled]=\"applyFilterDisabled()\"\r\n (click)=\"applyFilter()\"\r\n > \r\n {{\"_Apply filter\" | translate}}\r\n </button>\r\n </div>\r\n\r\n <div class=\"object-navigator-separator\"></div>\r\n\r\n @switch(filterCriteriaSelectionMode$.getValue()){\r\n @case(FilterCriteriaSelectionMode.SelectObjectProperties){\r\n @if(selectedObjectId){\r\n <div class=\"scrollable-content-container\">\r\n <lib-bimplus-scrollable-container>\r\n <lib-criteria-select-object-properties\r\n [api]=\"api\"\r\n [selectedLanguage]=\"selectedLanguage\"\r\n [localizedStrings]=\"localizedStrings\"\r\n [(filterCriteria)]=\"filterCriteria\"\r\n [rootObjectId]=\"selectedObjectId\"\r\n [revision]=\"selectedRevision\"\r\n (filterCriteriaChange)=\"filterCriteriaWasChanged()\"\r\n >\r\n </lib-criteria-select-object-properties>\r\n </lib-bimplus-scrollable-container>\r\n </div>\r\n }\r\n }\r\n @case(FilterCriteriaSelectionMode.SelectAttributes){\r\n\r\n }\r\n @default{\r\n @if (filterResult) {\r\n <div class=\"scrollable-content-container\">\r\n <lib-bimplus-scrollable-container>\r\n <lib-object-filter-result\r\n [filterResult]=\"filterResult\"\r\n [selectedObjects]=\"selectedObjects\"\r\n (nodeSelectionChanged)=\"handleFilterResultSelectionChanged($event)\"\r\n (nodeDoubleClicked)=\"handleFilterResultObjectDoubleClicked($event)\"\r\n (nodeMouseEntered)=\"handleFilterResultObjectMouseEntered($event)\"\r\n (nodeMouseLeft)=\"handleFilterResultObjectMouseLeft($event)\"\r\n ></lib-object-filter-result>\r\n </lib-bimplus-scrollable-container>\r\n </div>\r\n }\r\n }\r\n }\r\n }\r\n @else {\r\n <div data-test=\"object-navigator-no-filter-types-message\" class=\"object-navigator-no-filter-types\"> {{\"_No_visible_models_found\" | translate}} </div>\r\n }\r\n </div>\r\n</lib-bimplus-sidenav-drawer-content>\r\n", styles: [".ng-select.ng-select-opened>.ng-select-container{background:var(--select-container-open-background-color-enabled);border-color:var(--select-container-open-border-color-enabled)}.ng-select.ng-select-opened>.ng-select-container:hover{box-shadow:none}.ng-select.ng-select-opened>.ng-select-container .ng-arrow{top:-2px;border-color:transparent transparent var(--select-container-open-arrow-border-color-enabled);border-width:0 5px 5px}.ng-select.ng-select-opened>.ng-select-container .ng-arrow:hover{border-color:transparent transparent var(--select-container-open-arrow-border-color-hovered)}.ng-select.ng-select-opened.ng-select-top>.ng-select-container{border-top-right-radius:0;border-top-left-radius:0}.ng-select.ng-select-opened.ng-select-right>.ng-select-container{border-top-right-radius:0;border-bottom-right-radius:0}.ng-select.ng-select-opened.ng-select-bottom>.ng-select-container{border-bottom-right-radius:0;border-bottom-left-radius:0}.ng-select.ng-select-opened.ng-select-left>.ng-select-container{border-top-left-radius:0;border-bottom-left-radius:0}.ng-select.ng-select-disabled>.ng-select-container{background-color:var(--select-container-background-color-disabled)}.ng-select .ng-has-value .ng-placeholder{display:none}.ng-select .ng-select-container{color:var(--select-container-text-color-enabled);background-color:var(--select-container-background-color-enabled);border-radius:0;border:1px solid var(--select-container-border-color-enabled);min-height:36px;align-items:center}.ng-select .ng-select-container:hover{box-shadow:0 1px 0 var(--select-container-box-shadow-color-hovered);background-color:var(--select-container-background-color-hovered)}.ng-select .ng-select-container .ng-value-container{align-items:center;padding-left:10px}[dir=rtl] .ng-select .ng-select-container .ng-value-container{padding-right:10px;padding-left:0}.ng-select .ng-select-container .ng-value-container .ng-placeholder{color:var(--select-container-placeholder-text-color-enabled)}.ng-select.ng-select-single .ng-select-container{height:36px}.ng-select.ng-select-single .ng-select-container .ng-value-container .ng-input{top:5px;left:0;padding-left:10px;padding-right:50px}[dir=rtl] .ng-select.ng-select-single .ng-select-container .ng-value-container .ng-input{padding-right:10px;padding-left:50px}.ng-select.ng-select-multiple.ng-select-disabled>.ng-select-container .ng-value-container .ng-value{background-color:var(--select-multiple-disabled-container-value-background-color-enabled);border:1px solid var(--select-multiple-disabled-container-value-border-color-enabled)}.ng-select.ng-select-multiple.ng-select-disabled>.ng-select-container .ng-value-container .ng-value .ng-value-label{padding:0 5px}.ng-select.ng-select-multiple .ng-select-container .ng-value-container{padding-top:5px;padding-left:7px}[dir=rtl] .ng-select.ng-select-multiple .ng-select-container .ng-value-container{padding-right:7px;padding-left:0}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value{font-size:.9em;margin-bottom:5px;color:var(--select-multiple-container-value-text-color-enabled);background-color:var(--select-multiple-container-value-background-color-enabled);border-radius:2px;margin-right:5px}[dir=rtl] .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value{margin-right:0;margin-left:5px}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value.ng-value-disabled{background-color:var(--select-multiple-container-value-background-color-disabled)}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value.ng-value-disabled .ng-value-label{padding-left:5px}[dir=rtl] .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value.ng-value-disabled .ng-value-label{padding-left:0;padding-right:5px}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-label,.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon{display:inline-block;padding:1px 5px}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon:hover{background-color:var(--select-multiple-container-value-icon-background-color-hovered)}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon.left{border-right:1px solid var(--select-multiple-container-value-icon-left-border-color-enbabled)}[dir=rtl] .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon.left{border-left:1px solid var(--select-multiple-container-value-icon-left-border-color-enbabled);border-right:none}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon.right{border-left:1px solid var(--select-multiple-container-value-icon-right-border-color-enbabled)}[dir=rtl] .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon.right{border-left:0;border-right:1px solid var(--select-multiple-container-value-icon-right-border-color-enbabled)}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-input{padding:0 0 3px 3px}[dir=rtl] .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-input{padding:0 3px 3px 0}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-input>input{color:var(--select-multiple-container-value-input-text-color-enabled)}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{top:5px;padding-bottom:5px;padding-left:3px}[dir=rtl] .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{padding-right:3px;padding-left:0}.ng-select .ng-clear-wrapper{color:var(--select-clear-wrapper-text-color-enabled)}.ng-select .ng-clear-wrapper:hover .ng-clear{color:var(--select-clear-wrapper-text-color-hovered)}.ng-select .ng-clear-wrapper:focus .ng-clear{color:var(--select-clear-wrapper-text-color-focused)}.ng-select .ng-clear-wrapper:focus{outline:none}.ng-select .ng-spinner-zone{padding:5px 5px 0 0}[dir=rtl] .ng-select .ng-spinner-zone{padding:5px 0 0 5px}.ng-select .ng-arrow-wrapper{width:25px;padding-right:5px}[dir=rtl] .ng-select .ng-arrow-wrapper{padding-left:5px;padding-right:0}.ng-select .ng-arrow-wrapper:hover .ng-arrow{border-top-color:var(--select-arrow-wrapper-border-color-hovored)}.ng-select .ng-arrow-wrapper .ng-arrow{border-color:var(--select-arrow-wrapper-border-color-enabled) transparent transparent;border-style:solid;border-width:5px 5px 2.5px}.ng-dropdown-panel{background-color:var(--dropdown-panel-background-color-enabled);border:1px solid var(--dropdown-panel-border-color-enabled);box-shadow:0 1px 0 var(--dropdown-panel-box-shadow-color-enabled);left:0}.ng-dropdown-panel.ng-select-top{bottom:100%;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-color:var(--dropdown-panel-select-top-border-color-enabled);margin-bottom:-1px}.ng-dropdown-panel.ng-select-top .ng-dropdown-panel-items .ng-option:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.ng-dropdown-panel.ng-select-right{left:100%;top:0;border-top-right-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px;border-bottom-color:var(--dropdown-panel-select-right-border-color-enabled);margin-bottom:-1px}.ng-dropdown-panel.ng-select-right .ng-dropdown-panel-items .ng-option:first-child{border-top-right-radius:4px}.ng-dropdown-panel.ng-select-bottom{top:100%;border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-color:var(--dropdown-panel-select-bottom-border-color-enabled);margin-top:-1px}.ng-dropdown-panel.ng-select-bottom .ng-dropdown-panel-items .ng-option:last-child{border-bottom-right-radius:0;border-bottom-left-radius:0}.ng-dropdown-panel.ng-select-left{left:-100%;top:0;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px;border-bottom-color:var(--dropdown-panel-select-left-border-color-enabled);margin-bottom:-1px}.ng-dropdown-panel.ng-select-left .ng-dropdown-panel-items .ng-option:first-child{border-top-left-radius:4px}.ng-dropdown-panel .ng-dropdown-header{border-bottom:1px solid var(--dropdown-panel-header-border-color-enabled);padding:5px 7px}.ng-dropdown-panel .ng-dropdown-footer{border-top:1px solid var(--dropdown-panel-footer-border-color-enabled);padding:5px 7px}.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup{-webkit-user-select:none;user-select:none;padding:8px 10px;font-weight:500;color:var(--dropdown-panel-items-text-color-enabled);cursor:pointer}.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-disabled{cursor:default}.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-marked{background-color:var(--dropdown-panel-items-marked-background-color-enabled)}.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-selected,.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-selected.ng-option-marked{color:var(--dropdown-panel-items-option-selected-text-color-enabled);background-color:var(--dropdown-panel-items-option-selected-background-color-enabled);font-weight:600}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option{background-color:var(--dropdown-panel-items-option-background-color-enabled);color:var(--dropdown-panel-items-option-text-color-enabled);padding:8px 10px}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected,.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected.ng-option-marked{color:var(--dropdown-panel-items-option-selected2-text-color-enabled);background-color:var(--dropdown-panel-items-option-selected2-background-color-enabled)}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected .ng-option-label,.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected.ng-option-marked .ng-option-label{font-weight:600}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-marked{background-color:var(--dropdown-panel-items-marked-background-color-enabled);color:var(--dropdown-panel-items-marked-text-color-enabled)}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-disabled{color:var(--dropdown-panel-items-text-color-disabled)}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-child{padding-left:22px}[dir=rtl] .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-child{padding-right:22px;padding-left:0}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option .ng-tag-label{font-size:80%;font-weight:400;padding-right:5px}[dir=rtl] .ng-dropdown-panel .ng-dropdown-panel-items .ng-option .ng-tag-label{padding-left:5px;padding-right:0}[dir=rtl] .ng-dropdown-panel{direction:rtl;text-align:right}.primary-button{text-transform:uppercase;font: 700 1rem Source Sans Pro,Helvetica,Arial,tahoma,sans-serif;display:inline-block;margin-left:.8rem;padding:.2rem 1rem .4rem;height:2.4rem;white-space:nowrap;border-radius:.2rem;vertical-align:middle;font-size:1.2rem;border:solid .2rem var(--primary-button-border-color-enabled);color:var(--primary-button-text-color-enabled);background-color:var(--primary-button-background-color-enabled);cursor:pointer}.primary-button:hover{border:solid .2rem var(--primary-button-border-color-hovered);color:var(--primary-button-text-color-hovered);background-color:var(--primary-button-background-color-hovered);outline:0}.primary-button:disabled,.primary-button:disabled:active,.primary-button.disabled{border:solid .2rem var(--primary-button-border-color-disabled);color:var(--primary-button-text-color-disabled);background-color:var(--primary-button-background-color-disabled);cursor:default}.primary-button:active{border:solid .2rem var(--primary-button-border-color-pressed);color:var(--primary-button-text-color-pressed);background-color:var(--primary-button-background-color-pressed);cursor:default}:host{display:flex}lib-bimplus-sidenav-drawer-content{width:100%;max-height:100%;display:flex;flex:1}lib-bimplus-sidenav-drawer-content .object-navigator-content-container{display:flex;flex-direction:column;width:100%;max-height:100%;flex:1}lib-bimplus-sidenav-drawer-content .object-navigator-content-container lib-object-filter-result{--bimplus-object-filter-result-background-color: transparent}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.description{margin-bottom:.8rem;font-size:1.2rem}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.object-navigator-no-filter-types{font-size:1.2rem}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.object-navigator-filters-type{flex:0;margin-top:.1rem;margin-bottom:.1rem;height:2.4rem}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.object-navigator-filters-type>.object-navigator-dropdown .ng-select-container{height:2.4rem;min-height:2.4rem}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.object-navigator-filters-name{flex:0;margin-top:.1rem;margin-bottom:.1rem;height:2.4rem;display:flex;flex-direction:row}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.object-navigator-filters-name>.object-navigator-dropdown{flex:1}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.object-navigator-filters-name>.object-navigator-dropdown .ng-select-container{height:2.4rem;min-height:2.4rem}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.object-navigator-filters-name>.object-navigator-filters-name-context-menu{--context-menu-trigger-width: 2.4rem;--context-menu-trigger-height: 2.4rem}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.object-navigator-filter-criteria-panel{flex:0;padding-top:.8rem}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.object-navigator-apply-button-row{flex:0;display:flex;margin-top:.8rem;margin-bottom:.8rem;justify-content:flex-end}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.object-navigator-separator{flex:0;border-top:solid .078125em var(--object-navigator-separator-border-color-enabled);padding-bottom:.8rem}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.scrollable-content-container{position:relative;flex:1;width:100%;display:flex;flex-direction:column}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.scrollable-content-container>lib-bimplus-scrollable-container{position:absolute;top:0;bottom:0;flex:1;width:100%}.filter-criteria-container{display:flex;flex-direction:column;width:calc(100% - 2.4rem);padding-left:2.4rem;height:12rem}:host(.object-navigator){height:100%;width:100%}.object-navigator-filter-action-buttons{width:2.4rem;height:2.4rem;display:inline-block;background-position:center center;background-repeat:no-repeat;cursor:pointer;background-size:1.8rem 1.8rem;color:var(--object-navigator-filter-action-buttons-text-color);margin-left:.4rem}.object-navigator-select-attributes-button{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0D%0A<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M1.70697 10.707L7.29297 16.293C7.4805 16.4805 7.73481 16.5858 7.99997 16.5858C8.26514 16.5858 8.51944 16.4805 8.70697 16.293L15.415 9.586C15.7897 9.21085 16.0001 8.70225 16 8.172V4C16 3.46957 15.7893 2.96086 15.4142 2.58579C15.0391 2.21071 14.5304 2 14 2H9.82997C9.29958 2.00011 8.79096 2.2109 8.41597 2.586L1.70697 9.293C1.5195 9.48053 1.41418 9.73484 1.41418 10C1.41418 10.2652 1.5195 10.5195 1.70697 10.707ZM12 8C12.5304 8 13.0391 7.78929 13.4142 7.41421C13.7893 7.03914 14 6.53043 14 6C14 5.46957 13.7893 4.96086 13.4142 4.58579C13.0391 4.21071 12.5304 4 12 4C11.4695 4 10.9608 4.21071 10.5858 4.58579C10.2107 4.96086 9.99997 5.46957 9.99997 6C9.99997 6.53043 10.2107 7.03914 10.5858 7.41421C10.9608 7.78929 11.4695 8 12 8Z\" fill=\"%2346494D\"/>%0D%0A</svg>%0D%0A');width:2.4rem;height:2.4rem;display:inline-block;background-position:center center;background-repeat:no-repeat;cursor:pointer;background-size:1.8rem 1.8rem;color:var(--object-navigator-filter-action-buttons-text-color);margin-left:.4rem}.object-navigator-select-attributes-button.active{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0D%0A<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M1.707 10.707L7.293 16.293C7.48053 16.4805 7.73484 16.5858 8 16.5858C8.26517 16.5858 8.51947 16.4805 8.707 16.293L15.415 9.586C15.7897 9.21085 16.0002 8.70225 16 8.172V4C16 3.46957 15.7893 2.96086 15.4142 2.58579C15.0391 2.21071 14.5304 2 14 2H9.83C9.29961 2.00011 8.79099 2.2109 8.416 2.586L1.707 9.293C1.51953 9.48053 1.41422 9.73484 1.41422 10C1.41422 10.2652 1.51953 10.5195 1.707 10.707ZM12 8C12.5304 8 13.0391 7.78929 13.4142 7.41421C13.7893 7.03914 14 6.53043 14 6C14 5.46957 13.7893 4.96086 13.4142 4.58579C13.0391 4.21071 12.5304 4 12 4C11.4696 4 10.9609 4.21071 10.5858 4.58579C10.2107 4.96086 10 5.46957 10 6C10 6.53043 10.2107 7.03914 10.5858 7.41421C10.9609 7.78929 11.4696 8 12 8Z\" fill=\"%230066CC\"/>%0D%0A</svg>%0D%0A')}.object-navigator-pick-object-button{background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 18 18\"><path d=\"M2.8 12.4c1.2 1.2-1.3 3-.7 3.6.5.5 2.5-1.8 3.6-.7l5.6-5.6-2.9-3s-4.6 4.7-5.6 5.7zM8.4 11L7 9.6l1.4-1.4 1.4 1.4L8.4 11zm4.2-8.4l-2 2-.7-.7-1.5 1.4 4.3 4.3 1.4-1.4-.7-.7 2-2c1.8-1.9-1-4.7-2.8-2.9z\" fill-rule=\"evenodd\" clip-rule=\"evenodd\" fill=\"%23444\"/></svg>');width:2.4rem;height:2.4rem;display:inline-block;background-position:center center;background-repeat:no-repeat;cursor:pointer;background-size:1.8rem 1.8rem;color:var(--object-navigator-filter-action-buttons-text-color);margin-left:.4rem}.object-navigator-pick-object-button.active{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0D%0A<path d=\"M2.80001 12.4C4.00001 13.6 1.50001 15.4 2.10001 16C2.60001 16.5 4.60001 14.2 5.70001 15.3L11.3 9.69997L8.40001 6.69997C8.40001 6.69997 3.80001 11.4 2.80001 12.4ZM8.40001 11L7.00001 9.59997L8.40001 8.19997L9.80001 9.59997L8.40001 11ZM12.6 2.59997L10.6 4.59997L9.90001 3.89997L8.40001 5.29997L12.7 9.59997L14.1 8.19997L13.4 7.49997L15.4 5.49997C17.2 3.59997 14.4 0.799974 12.6 2.59997Z\" fill=\"%230066CC\"/>%0D%0A</svg>%0D%0A')}.object-navigator-filter-criteria-header{display:inline-block;text-transform:uppercase;line-height:2.4rem;font-weight:700;font-size:.9375em;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:100%}lib-object-filter-result{--flat-tree-container-background-color-enabled: transparent}#NoObjectSelected{margin:.8rem;line-height:.72rem;font-size:1.2rem}#NoObjectSelected+.object-navigator-apply-button-row{margin-top:0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: NgSelectModule }, { kind: "component", type: i4.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "ariaLabel", "markFirst", "placeholder", "fixedPlaceholder", "notFoundText", "typeToSearchText", "preventToggleOnRightClick", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "ngClass", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "deselectOnClick", "keyDownFn"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "component", type: i4.NgOptionComponent, selector: "ng-option", inputs: ["value", "disabled"] }, { kind: "component", type: FilterCriteriumComponent, selector: "app-filter-criterium", inputs: ["criterium", "indent"], outputs: ["deleteCriterium"] }, { kind: "component", type: ExpansionPanelComponent, selector: "lib-expansion-panel", inputs: ["expanded"] }, { kind: "component", type: ExpansionPanelHeaderComponent, selector: "lib-expansion-panel-header" }, { kind: "component", type: ExpansionPanelHeaderActionsComponent, selector: "lib-expansion-panel-header-actions" }, { kind: "component", type: BimplusSidenavDrawerContentComponent, selector: "lib-bimplus-sidenav-drawer-content", inputs: ["header", "isLoading", "loadingSpinnerText"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "component", type: CriteriaSelectObjectPropertiesComponent, selector: "lib-criteria-select-object-properties", inputs: ["api", "rootObjectId", "revision", "filterCriteria"], outputs: ["filterCriteriaChange"] }, { kind: "component", type: BimplusContextMenuComponent, selector: "lib-bimplus-context-menu", inputs: ["showIcons", "triggerTitle", "items", "data"], outputs: ["triggerSelected"] }, { kind: "component", type: ObjectFilterResultComponent, selector: "lib-object-filter-result", inputs: ["filterResult", "selectedObjects"], outputs: ["nodeSelectionChanged", "nodeDoubleClicked", "nodeMouseEntered", "nodeMouseLeft"] }, { kind: "component", type: BimplusScrollableContainerComponent, selector: "lib-bimplus-scrollable-container" }], encapsulation: i0.ViewEncapsulation.ShadowDom }); }
251
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.12", type: BimplusObjectNavigatorComponent, isStandalone: true, selector: "lib-bimplus-object-navigator", inputs: { hideFilterContextMenu: "hideFilterContextMenu", filterContextMenu: "filterContextMenu", filterTypes: "filterTypes", filters: "filters", api: "api", projectId: "projectId", selectedObjectId: "selectedObjectId", selectedRevision: "selectedRevision", selectedObjects: "selectedObjects", selectionObject: "selectionObject" }, outputs: { filterCriteriaSelectionModeChanged: "filterCriteriaSelectionModeChanged", filterResultObjectSelectionChanged: "filterResultObjectSelectionChanged", filterResultObjectDoubleClicked: "filterResultObjectDoubleClicked", filterResultObjectMouseEntered: "filterResultObjectMouseEntered", filterResultObjectMouseLeft: "filterResultObjectMouseLeft", pipetteActiveStatus: "pipetteActiveStatus" }, host: { properties: { "class.object-navigator": "this.objNavClassClass" } }, viewQueries: [{ propertyName: "objectFilterResult", first: true, predicate: ObjectFilterResultComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<lib-bimplus-sidenav-drawer-content [header]=\"'_Object navigator' | translate\"\r\n [isLoading]=\"isLoadingResults\"\r\n [loadingSpinnerText]=\"'_Loading_Filter_Results' | translate\"\r\n>\r\n <div class=\"object-navigator-content-container\">\r\n @if(filterTypes.length > 0){\r\n <div class=\"description\">\r\n {{\"_Select_an_object_using_Object_Picker\" | translate}}\r\n </div>\r\n <div class=\"object-navigator-filters-type\">\r\n <ng-select data-test=\"object-navigator-filter-types-dropdown\" class=\"object-navigator-dropdown\" [(ngModel)]=\"activeFilterType\" [clearable]=\"false\" [searchable]=\"false\">\r\n <ng-option *ngFor=\"let type of filterTypes\" [value]=\"type\">{{type.name}}</ng-option>\r\n </ng-select>\r\n </div>\r\n <div class=\"object-navigator-filters-name\">\r\n <ng-select data-test=\"object-navigator-filters-name-dropdown\" class=\"object-navigator-dropdown\" [(ngModel)]=\"activeFilter\" [clearable]=\"false\" [disabled]=\"!filters\" [searchable]=\"false\">\r\n <ng-option *ngFor=\"let filter of filters\" [value]=\"filter\">{{filter.name}}</ng-option>\r\n </ng-select>\r\n\r\n @if(!hideFilterContextMenu){\r\n <lib-bimplus-context-menu class=\"object-navigator-filters-name-context-menu\"\r\n [items]=\"filterContextMenu\"\r\n *ngIf=\"filterContextMenu?.length\"\r\n >\r\n </lib-bimplus-context-menu>\r\n }\r\n\r\n </div>\r\n\r\n <lib-expansion-panel class=\"object-navigator-filter-criteria-panel\">\r\n <lib-expansion-panel-header>\r\n <span class=\"object-navigator-filter-criteria-header\">\r\n {{ \"_Assign_Objects_Selection_Mode\" | translate }} &#40;{{ filterCriteria.length }}/{{ maxFilterCriteria }}&#41;\r\n </span>\r\n <lib-expansion-panel-header-actions>\r\n <div class=\"object-navigator-pick-object-button\"\r\n [ngClass]=\"filterCriteriaSelectionMode$.getValue() === FilterCriteriaSelectionMode.SelectObjectProperties? 'active' : ''\"\r\n (click)=\"setFilterCriteriaSelectionMode(FilterCriteriaSelectionMode.SelectObjectProperties)\"\r\n (keypress)=\"setFilterCriteriaSelectionMode(FilterCriteriaSelectionMode.SelectObjectProperties)\"\r\n [title]=\"'_Object_Picker'| translate\"\r\n ></div>\r\n </lib-expansion-panel-header-actions>\r\n </lib-expansion-panel-header>\r\n\r\n <div class=\"filter-criteria-container\">\r\n @for (criterium of filterCriteria; track criterium; let i = $index) {\r\n <app-filter-criterium\r\n [criterium] = \"criterium\"\r\n [indent]=\"i*0.8\"\r\n (deleteCriterium)=\"deleteFilterCriterium(i)\"\r\n ></app-filter-criterium>\r\n }\r\n </div>\r\n </lib-expansion-panel>\r\n\r\n @switch(filterCriteriaSelectionMode$.getValue()){\r\n @case(FilterCriteriaSelectionMode.SelectObjectProperties){\r\n @if(!selectedObjectId){\r\n <p id=\"NoObjectSelected\">{{ \"_NoObjectSelected\" | translate}}</p>\r\n }\r\n }\r\n }\r\n\r\n <div class=\"object-navigator-apply-button-row\">\r\n <button class=\"primary-button\" \r\n [class.disabled]=\"applyFilterDisabled()\"\r\n [disabled]=\"applyFilterDisabled()\"\r\n (click)=\"applyFilter()\"\r\n > \r\n {{\"_Apply filter\" | translate}}\r\n </button>\r\n </div>\r\n\r\n <div class=\"object-navigator-separator\"></div>\r\n\r\n @switch(filterCriteriaSelectionMode$.getValue()){\r\n @case(FilterCriteriaSelectionMode.SelectObjectProperties){\r\n @if(selectedObjectId){\r\n <div class=\"scrollable-content-container\">\r\n <lib-bimplus-scrollable-container>\r\n <lib-criteria-select-object-properties\r\n [api]=\"api\"\r\n [selectedLanguage]=\"selectedLanguage\"\r\n [localizedStrings]=\"localizedStrings\"\r\n [(filterCriteria)]=\"filterCriteria\"\r\n [rootObjectId]=\"selectedObjectId\"\r\n [revision]=\"selectedRevision\"\r\n (filterCriteriaChange)=\"filterCriteriaWasChanged()\"\r\n >\r\n </lib-criteria-select-object-properties>\r\n </lib-bimplus-scrollable-container>\r\n </div>\r\n }\r\n }\r\n @case(FilterCriteriaSelectionMode.SelectAttributes){\r\n\r\n }\r\n @default{\r\n @if (filterResult) {\r\n <div class=\"scrollable-content-container\">\r\n <lib-bimplus-scrollable-container>\r\n <lib-object-filter-result\r\n [filterResult]=\"filterResult\"\r\n [selectedObjects]=\"selectedObjects\"\r\n [isFilterResultInvalid]=\"filterResultInvalidated\"\r\n [filterResultInvalidTitle]=\"'Result_is_Invalid' | translate\"\r\n [filterResultInvalidText]=\"'Selection_in_Project_navigator_has_changed' | translate\"\r\n (nodeSelectionChanged)=\"handleFilterResultSelectionChanged($event)\"\r\n (nodeDoubleClicked)=\"handleFilterResultObjectDoubleClicked($event)\"\r\n (nodeMouseEntered)=\"handleFilterResultObjectMouseEntered($event)\"\r\n (nodeMouseLeft)=\"handleFilterResultObjectMouseLeft($event)\"\r\n ></lib-object-filter-result>\r\n </lib-bimplus-scrollable-container>\r\n </div>\r\n }\r\n }\r\n }\r\n }\r\n @else {\r\n <div data-test=\"object-navigator-no-filter-types-message\" class=\"object-navigator-no-filter-types\"> {{\"_No_visible_models_found\" | translate}} </div>\r\n }\r\n </div>\r\n</lib-bimplus-sidenav-drawer-content>\r\n", styles: [".ng-select.ng-select-opened>.ng-select-container{background:var(--select-container-open-background-color-enabled);border-color:var(--select-container-open-border-color-enabled)}.ng-select.ng-select-opened>.ng-select-container:hover{box-shadow:none}.ng-select.ng-select-opened>.ng-select-container .ng-arrow{top:-2px;border-color:transparent transparent var(--select-container-open-arrow-border-color-enabled);border-width:0 5px 5px}.ng-select.ng-select-opened>.ng-select-container .ng-arrow:hover{border-color:transparent transparent var(--select-container-open-arrow-border-color-hovered)}.ng-select.ng-select-opened.ng-select-top>.ng-select-container{border-top-right-radius:0;border-top-left-radius:0}.ng-select.ng-select-opened.ng-select-right>.ng-select-container{border-top-right-radius:0;border-bottom-right-radius:0}.ng-select.ng-select-opened.ng-select-bottom>.ng-select-container{border-bottom-right-radius:0;border-bottom-left-radius:0}.ng-select.ng-select-opened.ng-select-left>.ng-select-container{border-top-left-radius:0;border-bottom-left-radius:0}.ng-select.ng-select-disabled>.ng-select-container{background-color:var(--select-container-background-color-disabled)}.ng-select .ng-has-value .ng-placeholder{display:none}.ng-select .ng-select-container{color:var(--select-container-text-color-enabled);background-color:var(--select-container-background-color-enabled);border-radius:0;border:1px solid var(--select-container-border-color-enabled);min-height:36px;align-items:center}.ng-select .ng-select-container:hover{box-shadow:0 1px 0 var(--select-container-box-shadow-color-hovered);background-color:var(--select-container-background-color-hovered)}.ng-select .ng-select-container .ng-value-container{align-items:center;padding-left:10px}[dir=rtl] .ng-select .ng-select-container .ng-value-container{padding-right:10px;padding-left:0}.ng-select .ng-select-container .ng-value-container .ng-placeholder{color:var(--select-container-placeholder-text-color-enabled)}.ng-select.ng-select-single .ng-select-container{height:36px}.ng-select.ng-select-single .ng-select-container .ng-value-container .ng-input{top:5px;left:0;padding-left:10px;padding-right:50px}[dir=rtl] .ng-select.ng-select-single .ng-select-container .ng-value-container .ng-input{padding-right:10px;padding-left:50px}.ng-select.ng-select-multiple.ng-select-disabled>.ng-select-container .ng-value-container .ng-value{background-color:var(--select-multiple-disabled-container-value-background-color-enabled);border:1px solid var(--select-multiple-disabled-container-value-border-color-enabled)}.ng-select.ng-select-multiple.ng-select-disabled>.ng-select-container .ng-value-container .ng-value .ng-value-label{padding:0 5px}.ng-select.ng-select-multiple .ng-select-container .ng-value-container{padding-top:5px;padding-left:7px}[dir=rtl] .ng-select.ng-select-multiple .ng-select-container .ng-value-container{padding-right:7px;padding-left:0}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value{font-size:.9em;margin-bottom:5px;color:var(--select-multiple-container-value-text-color-enabled);background-color:var(--select-multiple-container-value-background-color-enabled);border-radius:2px;margin-right:5px}[dir=rtl] .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value{margin-right:0;margin-left:5px}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value.ng-value-disabled{background-color:var(--select-multiple-container-value-background-color-disabled)}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value.ng-value-disabled .ng-value-label{padding-left:5px}[dir=rtl] .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value.ng-value-disabled .ng-value-label{padding-left:0;padding-right:5px}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-label,.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon{display:inline-block;padding:1px 5px}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon:hover{background-color:var(--select-multiple-container-value-icon-background-color-hovered)}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon.left{border-right:1px solid var(--select-multiple-container-value-icon-left-border-color-enbabled)}[dir=rtl] .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon.left{border-left:1px solid var(--select-multiple-container-value-icon-left-border-color-enbabled);border-right:none}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon.right{border-left:1px solid var(--select-multiple-container-value-icon-right-border-color-enbabled)}[dir=rtl] .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon.right{border-left:0;border-right:1px solid var(--select-multiple-container-value-icon-right-border-color-enbabled)}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-input{padding:0 0 3px 3px}[dir=rtl] .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-input{padding:0 3px 3px 0}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-input>input{color:var(--select-multiple-container-value-input-text-color-enabled)}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{top:5px;padding-bottom:5px;padding-left:3px}[dir=rtl] .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{padding-right:3px;padding-left:0}.ng-select .ng-clear-wrapper{color:var(--select-clear-wrapper-text-color-enabled)}.ng-select .ng-clear-wrapper:hover .ng-clear{color:var(--select-clear-wrapper-text-color-hovered)}.ng-select .ng-clear-wrapper:focus .ng-clear{color:var(--select-clear-wrapper-text-color-focused)}.ng-select .ng-clear-wrapper:focus{outline:none}.ng-select .ng-spinner-zone{padding:5px 5px 0 0}[dir=rtl] .ng-select .ng-spinner-zone{padding:5px 0 0 5px}.ng-select .ng-arrow-wrapper{width:25px;padding-right:5px}[dir=rtl] .ng-select .ng-arrow-wrapper{padding-left:5px;padding-right:0}.ng-select .ng-arrow-wrapper:hover .ng-arrow{border-top-color:var(--select-arrow-wrapper-border-color-hovored)}.ng-select .ng-arrow-wrapper .ng-arrow{border-color:var(--select-arrow-wrapper-border-color-enabled) transparent transparent;border-style:solid;border-width:5px 5px 2.5px}.ng-dropdown-panel{background-color:var(--dropdown-panel-background-color-enabled);border:1px solid var(--dropdown-panel-border-color-enabled);box-shadow:0 1px 0 var(--dropdown-panel-box-shadow-color-enabled);left:0}.ng-dropdown-panel.ng-select-top{bottom:100%;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-color:var(--dropdown-panel-select-top-border-color-enabled);margin-bottom:-1px}.ng-dropdown-panel.ng-select-top .ng-dropdown-panel-items .ng-option:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.ng-dropdown-panel.ng-select-right{left:100%;top:0;border-top-right-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px;border-bottom-color:var(--dropdown-panel-select-right-border-color-enabled);margin-bottom:-1px}.ng-dropdown-panel.ng-select-right .ng-dropdown-panel-items .ng-option:first-child{border-top-right-radius:4px}.ng-dropdown-panel.ng-select-bottom{top:100%;border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-color:var(--dropdown-panel-select-bottom-border-color-enabled);margin-top:-1px}.ng-dropdown-panel.ng-select-bottom .ng-dropdown-panel-items .ng-option:last-child{border-bottom-right-radius:0;border-bottom-left-radius:0}.ng-dropdown-panel.ng-select-left{left:-100%;top:0;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px;border-bottom-color:var(--dropdown-panel-select-left-border-color-enabled);margin-bottom:-1px}.ng-dropdown-panel.ng-select-left .ng-dropdown-panel-items .ng-option:first-child{border-top-left-radius:4px}.ng-dropdown-panel .ng-dropdown-header{border-bottom:1px solid var(--dropdown-panel-header-border-color-enabled);padding:5px 7px}.ng-dropdown-panel .ng-dropdown-footer{border-top:1px solid var(--dropdown-panel-footer-border-color-enabled);padding:5px 7px}.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup{-webkit-user-select:none;user-select:none;padding:8px 10px;font-weight:500;color:var(--dropdown-panel-items-text-color-enabled);cursor:pointer}.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-disabled{cursor:default}.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-marked{background-color:var(--dropdown-panel-items-marked-background-color-enabled)}.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-selected,.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-selected.ng-option-marked{color:var(--dropdown-panel-items-option-selected-text-color-enabled);background-color:var(--dropdown-panel-items-option-selected-background-color-enabled);font-weight:600}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option{background-color:var(--dropdown-panel-items-option-background-color-enabled);color:var(--dropdown-panel-items-option-text-color-enabled);padding:8px 10px}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected,.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected.ng-option-marked{color:var(--dropdown-panel-items-option-selected2-text-color-enabled);background-color:var(--dropdown-panel-items-option-selected2-background-color-enabled)}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected .ng-option-label,.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected.ng-option-marked .ng-option-label{font-weight:600}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-marked{background-color:var(--dropdown-panel-items-marked-background-color-enabled);color:var(--dropdown-panel-items-marked-text-color-enabled)}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-disabled{color:var(--dropdown-panel-items-text-color-disabled)}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-child{padding-left:22px}[dir=rtl] .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-child{padding-right:22px;padding-left:0}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option .ng-tag-label{font-size:80%;font-weight:400;padding-right:5px}[dir=rtl] .ng-dropdown-panel .ng-dropdown-panel-items .ng-option .ng-tag-label{padding-left:5px;padding-right:0}[dir=rtl] .ng-dropdown-panel{direction:rtl;text-align:right}.primary-button{text-transform:uppercase;font: 700 1rem Source Sans Pro,Helvetica,Arial,tahoma,sans-serif;display:inline-block;margin-left:.8rem;padding:.2rem 1rem .4rem;height:2.4rem;white-space:nowrap;border-radius:.2rem;vertical-align:middle;font-size:1.2rem;border:solid .2rem var(--primary-button-border-color-enabled);color:var(--primary-button-text-color-enabled);background-color:var(--primary-button-background-color-enabled);cursor:pointer}.primary-button:hover{border:solid .2rem var(--primary-button-border-color-hovered);color:var(--primary-button-text-color-hovered);background-color:var(--primary-button-background-color-hovered);outline:0}.primary-button:disabled,.primary-button:disabled:active,.primary-button.disabled{border:solid .2rem var(--primary-button-border-color-disabled);color:var(--primary-button-text-color-disabled);background-color:var(--primary-button-background-color-disabled);cursor:default}.primary-button:active{border:solid .2rem var(--primary-button-border-color-pressed);color:var(--primary-button-text-color-pressed);background-color:var(--primary-button-background-color-pressed);cursor:default}:host{display:flex}lib-bimplus-sidenav-drawer-content{width:100%;max-height:100%;display:flex;flex:1}lib-bimplus-sidenav-drawer-content .object-navigator-content-container{display:flex;flex-direction:column;width:100%;max-height:100%;flex:1}lib-bimplus-sidenav-drawer-content .object-navigator-content-container lib-object-filter-result{--bimplus-object-filter-result-background-color: transparent}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.description{margin-bottom:.8rem;font-size:1.2rem}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.object-navigator-no-filter-types{font-size:1.2rem}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.object-navigator-filters-type{flex:0;margin-top:.1rem;margin-bottom:.1rem;height:2.4rem}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.object-navigator-filters-type>.object-navigator-dropdown .ng-select-container{height:2.4rem;min-height:2.4rem}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.object-navigator-filters-name{flex:0;margin-top:.1rem;margin-bottom:.1rem;height:2.4rem;display:flex;flex-direction:row}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.object-navigator-filters-name>.object-navigator-dropdown{flex:1}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.object-navigator-filters-name>.object-navigator-dropdown .ng-select-container{height:2.4rem;min-height:2.4rem}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.object-navigator-filters-name>.object-navigator-filters-name-context-menu{--context-menu-trigger-width: 2.4rem;--context-menu-trigger-height: 2.4rem}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.object-navigator-filter-criteria-panel{flex:0;padding-top:.8rem}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.object-navigator-apply-button-row{flex:0;display:flex;margin-top:.8rem;margin-bottom:.8rem;justify-content:flex-end}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.object-navigator-separator{flex:0;border-top:solid .078125em var(--object-navigator-separator-border-color-enabled);padding-bottom:.8rem}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.scrollable-content-container{position:relative;flex:1;width:100%;display:flex;flex-direction:column}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.scrollable-content-container>lib-bimplus-scrollable-container{position:absolute;top:0;bottom:0;flex:1;width:100%}.filter-criteria-container{display:flex;flex-direction:column;width:calc(100% - 2.4rem);padding-left:2.4rem;height:12rem}:host(.object-navigator){height:100%;width:100%}.object-navigator-filter-action-buttons{width:2.4rem;height:2.4rem;display:inline-block;background-position:center center;background-repeat:no-repeat;cursor:pointer;background-size:1.8rem 1.8rem;color:var(--object-navigator-filter-action-buttons-text-color);margin-left:.4rem}.object-navigator-select-attributes-button{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0D%0A<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M1.70697 10.707L7.29297 16.293C7.4805 16.4805 7.73481 16.5858 7.99997 16.5858C8.26514 16.5858 8.51944 16.4805 8.70697 16.293L15.415 9.586C15.7897 9.21085 16.0001 8.70225 16 8.172V4C16 3.46957 15.7893 2.96086 15.4142 2.58579C15.0391 2.21071 14.5304 2 14 2H9.82997C9.29958 2.00011 8.79096 2.2109 8.41597 2.586L1.70697 9.293C1.5195 9.48053 1.41418 9.73484 1.41418 10C1.41418 10.2652 1.5195 10.5195 1.70697 10.707ZM12 8C12.5304 8 13.0391 7.78929 13.4142 7.41421C13.7893 7.03914 14 6.53043 14 6C14 5.46957 13.7893 4.96086 13.4142 4.58579C13.0391 4.21071 12.5304 4 12 4C11.4695 4 10.9608 4.21071 10.5858 4.58579C10.2107 4.96086 9.99997 5.46957 9.99997 6C9.99997 6.53043 10.2107 7.03914 10.5858 7.41421C10.9608 7.78929 11.4695 8 12 8Z\" fill=\"%2346494D\"/>%0D%0A</svg>%0D%0A');width:2.4rem;height:2.4rem;display:inline-block;background-position:center center;background-repeat:no-repeat;cursor:pointer;background-size:1.8rem 1.8rem;color:var(--object-navigator-filter-action-buttons-text-color);margin-left:.4rem}.object-navigator-select-attributes-button.active{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0D%0A<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M1.707 10.707L7.293 16.293C7.48053 16.4805 7.73484 16.5858 8 16.5858C8.26517 16.5858 8.51947 16.4805 8.707 16.293L15.415 9.586C15.7897 9.21085 16.0002 8.70225 16 8.172V4C16 3.46957 15.7893 2.96086 15.4142 2.58579C15.0391 2.21071 14.5304 2 14 2H9.83C9.29961 2.00011 8.79099 2.2109 8.416 2.586L1.707 9.293C1.51953 9.48053 1.41422 9.73484 1.41422 10C1.41422 10.2652 1.51953 10.5195 1.707 10.707ZM12 8C12.5304 8 13.0391 7.78929 13.4142 7.41421C13.7893 7.03914 14 6.53043 14 6C14 5.46957 13.7893 4.96086 13.4142 4.58579C13.0391 4.21071 12.5304 4 12 4C11.4696 4 10.9609 4.21071 10.5858 4.58579C10.2107 4.96086 10 5.46957 10 6C10 6.53043 10.2107 7.03914 10.5858 7.41421C10.9609 7.78929 11.4696 8 12 8Z\" fill=\"%230066CC\"/>%0D%0A</svg>%0D%0A')}.object-navigator-pick-object-button{background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 18 18\"><path d=\"M2.8 12.4c1.2 1.2-1.3 3-.7 3.6.5.5 2.5-1.8 3.6-.7l5.6-5.6-2.9-3s-4.6 4.7-5.6 5.7zM8.4 11L7 9.6l1.4-1.4 1.4 1.4L8.4 11zm4.2-8.4l-2 2-.7-.7-1.5 1.4 4.3 4.3 1.4-1.4-.7-.7 2-2c1.8-1.9-1-4.7-2.8-2.9z\" fill-rule=\"evenodd\" clip-rule=\"evenodd\" fill=\"%23444\"/></svg>');width:2.4rem;height:2.4rem;display:inline-block;background-position:center center;background-repeat:no-repeat;cursor:pointer;background-size:1.8rem 1.8rem;color:var(--object-navigator-filter-action-buttons-text-color);margin-left:.4rem}.object-navigator-pick-object-button.active{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0D%0A<path d=\"M2.80001 12.4C4.00001 13.6 1.50001 15.4 2.10001 16C2.60001 16.5 4.60001 14.2 5.70001 15.3L11.3 9.69997L8.40001 6.69997C8.40001 6.69997 3.80001 11.4 2.80001 12.4ZM8.40001 11L7.00001 9.59997L8.40001 8.19997L9.80001 9.59997L8.40001 11ZM12.6 2.59997L10.6 4.59997L9.90001 3.89997L8.40001 5.29997L12.7 9.59997L14.1 8.19997L13.4 7.49997L15.4 5.49997C17.2 3.59997 14.4 0.799974 12.6 2.59997Z\" fill=\"%230066CC\"/>%0D%0A</svg>%0D%0A')}.object-navigator-filter-criteria-header{display:inline-block;text-transform:uppercase;line-height:2.4rem;font-weight:700;font-size:.9375em;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:100%}lib-object-filter-result{--flat-tree-container-background-color-enabled: transparent}#NoObjectSelected{margin:.8rem;line-height:.72rem;font-size:1.2rem}#NoObjectSelected+.object-navigator-apply-button-row{margin-top:0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: NgSelectModule }, { kind: "component", type: i4.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "ariaLabel", "markFirst", "placeholder", "fixedPlaceholder", "notFoundText", "typeToSearchText", "preventToggleOnRightClick", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "ngClass", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "deselectOnClick", "keyDownFn"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "component", type: i4.NgOptionComponent, selector: "ng-option", inputs: ["value", "disabled"] }, { kind: "component", type: FilterCriteriumComponent, selector: "app-filter-criterium", inputs: ["criterium", "indent"], outputs: ["deleteCriterium"] }, { kind: "component", type: ExpansionPanelComponent, selector: "lib-expansion-panel", inputs: ["expanded"] }, { kind: "component", type: ExpansionPanelHeaderComponent, selector: "lib-expansion-panel-header" }, { kind: "component", type: ExpansionPanelHeaderActionsComponent, selector: "lib-expansion-panel-header-actions" }, { kind: "component", type: BimplusSidenavDrawerContentComponent, selector: "lib-bimplus-sidenav-drawer-content", inputs: ["header", "isLoading", "loadingSpinnerText"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "component", type: CriteriaSelectObjectPropertiesComponent, selector: "lib-criteria-select-object-properties", inputs: ["api", "rootObjectId", "revision", "filterCriteria"], outputs: ["filterCriteriaChange"] }, { kind: "component", type: BimplusContextMenuComponent, selector: "lib-bimplus-context-menu", inputs: ["showIcons", "triggerTitle", "items", "data"], outputs: ["triggerSelected"] }, { kind: "component", type: ObjectFilterResultComponent, selector: "lib-object-filter-result", inputs: ["filterResult", "selectedObjects", "isFilterResultInvalid", "filterResultInvalidTitle", "filterResultInvalidText"], outputs: ["nodeSelectionChanged", "nodeDoubleClicked", "nodeMouseEntered", "nodeMouseLeft"] }, { kind: "component", type: BimplusScrollableContainerComponent, selector: "lib-bimplus-scrollable-container" }], encapsulation: i0.ViewEncapsulation.ShadowDom }); }
244
252
  }
245
253
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: BimplusObjectNavigatorComponent, decorators: [{
246
254
  type: Component,
@@ -257,7 +265,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImpo
257
265
  BimplusContextMenuComponent,
258
266
  ObjectFilterResultComponent,
259
267
  BimplusScrollableContainerComponent
260
- ], encapsulation: ViewEncapsulation.ShadowDom, template: "<lib-bimplus-sidenav-drawer-content [header]=\"'_Object navigator' | translate\"\r\n [isLoading]=\"isLoadingResults\"\r\n [loadingSpinnerText]=\"'_Loading_Filter_Results' | translate\"\r\n>\r\n <div class=\"object-navigator-content-container\">\r\n @if(filterTypes.length > 0){\r\n <div class=\"description\">\r\n {{\"_Select_an_object_using_Object_Picker\" | translate}}\r\n </div>\r\n <div class=\"object-navigator-filters-type\">\r\n <ng-select data-test=\"object-navigator-filter-types-dropdown\" class=\"object-navigator-dropdown\" [(ngModel)]=\"activeFilterType\" [clearable]=\"false\" [searchable]=\"false\">\r\n <ng-option *ngFor=\"let type of filterTypes\" [value]=\"type\">{{type.name}}</ng-option>\r\n </ng-select>\r\n </div>\r\n <div class=\"object-navigator-filters-name\">\r\n <ng-select data-test=\"object-navigator-filters-name-dropdown\" class=\"object-navigator-dropdown\" [(ngModel)]=\"activeFilter\" [clearable]=\"false\" [disabled]=\"!filters\" [searchable]=\"false\">\r\n <ng-option *ngFor=\"let filter of filters\" [value]=\"filter\">{{filter.name}}</ng-option>\r\n </ng-select>\r\n\r\n @if(!hideFilterContextMenu){\r\n <lib-bimplus-context-menu class=\"object-navigator-filters-name-context-menu\"\r\n [items]=\"filterContextMenu\"\r\n *ngIf=\"filterContextMenu?.length\"\r\n >\r\n </lib-bimplus-context-menu>\r\n }\r\n\r\n </div>\r\n\r\n <lib-expansion-panel class=\"object-navigator-filter-criteria-panel\">\r\n <lib-expansion-panel-header>\r\n <span class=\"object-navigator-filter-criteria-header\">\r\n {{ \"_Assign_Objects_Selection_Mode\" | translate }} &#40;{{ filterCriteria.length }}/{{ maxFilterCriteria }}&#41;\r\n </span>\r\n <lib-expansion-panel-header-actions>\r\n <div class=\"object-navigator-pick-object-button\"\r\n [ngClass]=\"filterCriteriaSelectionMode$.getValue() === FilterCriteriaSelectionMode.SelectObjectProperties? 'active' : ''\"\r\n (click)=\"setFilterCriteriaSelectionMode(FilterCriteriaSelectionMode.SelectObjectProperties)\"\r\n (keypress)=\"setFilterCriteriaSelectionMode(FilterCriteriaSelectionMode.SelectObjectProperties)\"\r\n [title]=\"'_Object_Picker'| translate\"\r\n ></div>\r\n </lib-expansion-panel-header-actions>\r\n </lib-expansion-panel-header>\r\n\r\n <div class=\"filter-criteria-container\">\r\n @for (criterium of filterCriteria; track criterium; let i = $index) {\r\n <app-filter-criterium\r\n [criterium] = \"criterium\"\r\n [indent]=\"i*0.8\"\r\n (deleteCriterium)=\"deleteFilterCriterium(i)\"\r\n ></app-filter-criterium>\r\n }\r\n </div>\r\n </lib-expansion-panel>\r\n\r\n @switch(filterCriteriaSelectionMode$.getValue()){\r\n @case(FilterCriteriaSelectionMode.SelectObjectProperties){\r\n @if(!selectedObjectId){\r\n <p id=\"NoObjectSelected\">{{ \"_NoObjectSelected\" | translate}}</p>\r\n }\r\n }\r\n }\r\n\r\n <div class=\"object-navigator-apply-button-row\">\r\n <button class=\"primary-button\" \r\n [class.disabled]=\"applyFilterDisabled()\"\r\n [disabled]=\"applyFilterDisabled()\"\r\n (click)=\"applyFilter()\"\r\n > \r\n {{\"_Apply filter\" | translate}}\r\n </button>\r\n </div>\r\n\r\n <div class=\"object-navigator-separator\"></div>\r\n\r\n @switch(filterCriteriaSelectionMode$.getValue()){\r\n @case(FilterCriteriaSelectionMode.SelectObjectProperties){\r\n @if(selectedObjectId){\r\n <div class=\"scrollable-content-container\">\r\n <lib-bimplus-scrollable-container>\r\n <lib-criteria-select-object-properties\r\n [api]=\"api\"\r\n [selectedLanguage]=\"selectedLanguage\"\r\n [localizedStrings]=\"localizedStrings\"\r\n [(filterCriteria)]=\"filterCriteria\"\r\n [rootObjectId]=\"selectedObjectId\"\r\n [revision]=\"selectedRevision\"\r\n (filterCriteriaChange)=\"filterCriteriaWasChanged()\"\r\n >\r\n </lib-criteria-select-object-properties>\r\n </lib-bimplus-scrollable-container>\r\n </div>\r\n }\r\n }\r\n @case(FilterCriteriaSelectionMode.SelectAttributes){\r\n\r\n }\r\n @default{\r\n @if (filterResult) {\r\n <div class=\"scrollable-content-container\">\r\n <lib-bimplus-scrollable-container>\r\n <lib-object-filter-result\r\n [filterResult]=\"filterResult\"\r\n [selectedObjects]=\"selectedObjects\"\r\n (nodeSelectionChanged)=\"handleFilterResultSelectionChanged($event)\"\r\n (nodeDoubleClicked)=\"handleFilterResultObjectDoubleClicked($event)\"\r\n (nodeMouseEntered)=\"handleFilterResultObjectMouseEntered($event)\"\r\n (nodeMouseLeft)=\"handleFilterResultObjectMouseLeft($event)\"\r\n ></lib-object-filter-result>\r\n </lib-bimplus-scrollable-container>\r\n </div>\r\n }\r\n }\r\n }\r\n }\r\n @else {\r\n <div data-test=\"object-navigator-no-filter-types-message\" class=\"object-navigator-no-filter-types\"> {{\"_No_visible_models_found\" | translate}} </div>\r\n }\r\n </div>\r\n</lib-bimplus-sidenav-drawer-content>\r\n", styles: [".ng-select.ng-select-opened>.ng-select-container{background:var(--select-container-open-background-color-enabled);border-color:var(--select-container-open-border-color-enabled)}.ng-select.ng-select-opened>.ng-select-container:hover{box-shadow:none}.ng-select.ng-select-opened>.ng-select-container .ng-arrow{top:-2px;border-color:transparent transparent var(--select-container-open-arrow-border-color-enabled);border-width:0 5px 5px}.ng-select.ng-select-opened>.ng-select-container .ng-arrow:hover{border-color:transparent transparent var(--select-container-open-arrow-border-color-hovered)}.ng-select.ng-select-opened.ng-select-top>.ng-select-container{border-top-right-radius:0;border-top-left-radius:0}.ng-select.ng-select-opened.ng-select-right>.ng-select-container{border-top-right-radius:0;border-bottom-right-radius:0}.ng-select.ng-select-opened.ng-select-bottom>.ng-select-container{border-bottom-right-radius:0;border-bottom-left-radius:0}.ng-select.ng-select-opened.ng-select-left>.ng-select-container{border-top-left-radius:0;border-bottom-left-radius:0}.ng-select.ng-select-disabled>.ng-select-container{background-color:var(--select-container-background-color-disabled)}.ng-select .ng-has-value .ng-placeholder{display:none}.ng-select .ng-select-container{color:var(--select-container-text-color-enabled);background-color:var(--select-container-background-color-enabled);border-radius:0;border:1px solid var(--select-container-border-color-enabled);min-height:36px;align-items:center}.ng-select .ng-select-container:hover{box-shadow:0 1px 0 var(--select-container-box-shadow-color-hovered);background-color:var(--select-container-background-color-hovered)}.ng-select .ng-select-container .ng-value-container{align-items:center;padding-left:10px}[dir=rtl] .ng-select .ng-select-container .ng-value-container{padding-right:10px;padding-left:0}.ng-select .ng-select-container .ng-value-container .ng-placeholder{color:var(--select-container-placeholder-text-color-enabled)}.ng-select.ng-select-single .ng-select-container{height:36px}.ng-select.ng-select-single .ng-select-container .ng-value-container .ng-input{top:5px;left:0;padding-left:10px;padding-right:50px}[dir=rtl] .ng-select.ng-select-single .ng-select-container .ng-value-container .ng-input{padding-right:10px;padding-left:50px}.ng-select.ng-select-multiple.ng-select-disabled>.ng-select-container .ng-value-container .ng-value{background-color:var(--select-multiple-disabled-container-value-background-color-enabled);border:1px solid var(--select-multiple-disabled-container-value-border-color-enabled)}.ng-select.ng-select-multiple.ng-select-disabled>.ng-select-container .ng-value-container .ng-value .ng-value-label{padding:0 5px}.ng-select.ng-select-multiple .ng-select-container .ng-value-container{padding-top:5px;padding-left:7px}[dir=rtl] .ng-select.ng-select-multiple .ng-select-container .ng-value-container{padding-right:7px;padding-left:0}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value{font-size:.9em;margin-bottom:5px;color:var(--select-multiple-container-value-text-color-enabled);background-color:var(--select-multiple-container-value-background-color-enabled);border-radius:2px;margin-right:5px}[dir=rtl] .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value{margin-right:0;margin-left:5px}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value.ng-value-disabled{background-color:var(--select-multiple-container-value-background-color-disabled)}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value.ng-value-disabled .ng-value-label{padding-left:5px}[dir=rtl] .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value.ng-value-disabled .ng-value-label{padding-left:0;padding-right:5px}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-label,.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon{display:inline-block;padding:1px 5px}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon:hover{background-color:var(--select-multiple-container-value-icon-background-color-hovered)}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon.left{border-right:1px solid var(--select-multiple-container-value-icon-left-border-color-enbabled)}[dir=rtl] .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon.left{border-left:1px solid var(--select-multiple-container-value-icon-left-border-color-enbabled);border-right:none}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon.right{border-left:1px solid var(--select-multiple-container-value-icon-right-border-color-enbabled)}[dir=rtl] .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon.right{border-left:0;border-right:1px solid var(--select-multiple-container-value-icon-right-border-color-enbabled)}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-input{padding:0 0 3px 3px}[dir=rtl] .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-input{padding:0 3px 3px 0}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-input>input{color:var(--select-multiple-container-value-input-text-color-enabled)}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{top:5px;padding-bottom:5px;padding-left:3px}[dir=rtl] .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{padding-right:3px;padding-left:0}.ng-select .ng-clear-wrapper{color:var(--select-clear-wrapper-text-color-enabled)}.ng-select .ng-clear-wrapper:hover .ng-clear{color:var(--select-clear-wrapper-text-color-hovered)}.ng-select .ng-clear-wrapper:focus .ng-clear{color:var(--select-clear-wrapper-text-color-focused)}.ng-select .ng-clear-wrapper:focus{outline:none}.ng-select .ng-spinner-zone{padding:5px 5px 0 0}[dir=rtl] .ng-select .ng-spinner-zone{padding:5px 0 0 5px}.ng-select .ng-arrow-wrapper{width:25px;padding-right:5px}[dir=rtl] .ng-select .ng-arrow-wrapper{padding-left:5px;padding-right:0}.ng-select .ng-arrow-wrapper:hover .ng-arrow{border-top-color:var(--select-arrow-wrapper-border-color-hovored)}.ng-select .ng-arrow-wrapper .ng-arrow{border-color:var(--select-arrow-wrapper-border-color-enabled) transparent transparent;border-style:solid;border-width:5px 5px 2.5px}.ng-dropdown-panel{background-color:var(--dropdown-panel-background-color-enabled);border:1px solid var(--dropdown-panel-border-color-enabled);box-shadow:0 1px 0 var(--dropdown-panel-box-shadow-color-enabled);left:0}.ng-dropdown-panel.ng-select-top{bottom:100%;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-color:var(--dropdown-panel-select-top-border-color-enabled);margin-bottom:-1px}.ng-dropdown-panel.ng-select-top .ng-dropdown-panel-items .ng-option:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.ng-dropdown-panel.ng-select-right{left:100%;top:0;border-top-right-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px;border-bottom-color:var(--dropdown-panel-select-right-border-color-enabled);margin-bottom:-1px}.ng-dropdown-panel.ng-select-right .ng-dropdown-panel-items .ng-option:first-child{border-top-right-radius:4px}.ng-dropdown-panel.ng-select-bottom{top:100%;border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-color:var(--dropdown-panel-select-bottom-border-color-enabled);margin-top:-1px}.ng-dropdown-panel.ng-select-bottom .ng-dropdown-panel-items .ng-option:last-child{border-bottom-right-radius:0;border-bottom-left-radius:0}.ng-dropdown-panel.ng-select-left{left:-100%;top:0;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px;border-bottom-color:var(--dropdown-panel-select-left-border-color-enabled);margin-bottom:-1px}.ng-dropdown-panel.ng-select-left .ng-dropdown-panel-items .ng-option:first-child{border-top-left-radius:4px}.ng-dropdown-panel .ng-dropdown-header{border-bottom:1px solid var(--dropdown-panel-header-border-color-enabled);padding:5px 7px}.ng-dropdown-panel .ng-dropdown-footer{border-top:1px solid var(--dropdown-panel-footer-border-color-enabled);padding:5px 7px}.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup{-webkit-user-select:none;user-select:none;padding:8px 10px;font-weight:500;color:var(--dropdown-panel-items-text-color-enabled);cursor:pointer}.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-disabled{cursor:default}.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-marked{background-color:var(--dropdown-panel-items-marked-background-color-enabled)}.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-selected,.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-selected.ng-option-marked{color:var(--dropdown-panel-items-option-selected-text-color-enabled);background-color:var(--dropdown-panel-items-option-selected-background-color-enabled);font-weight:600}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option{background-color:var(--dropdown-panel-items-option-background-color-enabled);color:var(--dropdown-panel-items-option-text-color-enabled);padding:8px 10px}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected,.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected.ng-option-marked{color:var(--dropdown-panel-items-option-selected2-text-color-enabled);background-color:var(--dropdown-panel-items-option-selected2-background-color-enabled)}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected .ng-option-label,.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected.ng-option-marked .ng-option-label{font-weight:600}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-marked{background-color:var(--dropdown-panel-items-marked-background-color-enabled);color:var(--dropdown-panel-items-marked-text-color-enabled)}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-disabled{color:var(--dropdown-panel-items-text-color-disabled)}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-child{padding-left:22px}[dir=rtl] .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-child{padding-right:22px;padding-left:0}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option .ng-tag-label{font-size:80%;font-weight:400;padding-right:5px}[dir=rtl] .ng-dropdown-panel .ng-dropdown-panel-items .ng-option .ng-tag-label{padding-left:5px;padding-right:0}[dir=rtl] .ng-dropdown-panel{direction:rtl;text-align:right}.primary-button{text-transform:uppercase;font: 700 1rem Source Sans Pro,Helvetica,Arial,tahoma,sans-serif;display:inline-block;margin-left:.8rem;padding:.2rem 1rem .4rem;height:2.4rem;white-space:nowrap;border-radius:.2rem;vertical-align:middle;font-size:1.2rem;border:solid .2rem var(--primary-button-border-color-enabled);color:var(--primary-button-text-color-enabled);background-color:var(--primary-button-background-color-enabled);cursor:pointer}.primary-button:hover{border:solid .2rem var(--primary-button-border-color-hovered);color:var(--primary-button-text-color-hovered);background-color:var(--primary-button-background-color-hovered);outline:0}.primary-button:disabled,.primary-button:disabled:active,.primary-button.disabled{border:solid .2rem var(--primary-button-border-color-disabled);color:var(--primary-button-text-color-disabled);background-color:var(--primary-button-background-color-disabled);cursor:default}.primary-button:active{border:solid .2rem var(--primary-button-border-color-pressed);color:var(--primary-button-text-color-pressed);background-color:var(--primary-button-background-color-pressed);cursor:default}:host{display:flex}lib-bimplus-sidenav-drawer-content{width:100%;max-height:100%;display:flex;flex:1}lib-bimplus-sidenav-drawer-content .object-navigator-content-container{display:flex;flex-direction:column;width:100%;max-height:100%;flex:1}lib-bimplus-sidenav-drawer-content .object-navigator-content-container lib-object-filter-result{--bimplus-object-filter-result-background-color: transparent}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.description{margin-bottom:.8rem;font-size:1.2rem}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.object-navigator-no-filter-types{font-size:1.2rem}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.object-navigator-filters-type{flex:0;margin-top:.1rem;margin-bottom:.1rem;height:2.4rem}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.object-navigator-filters-type>.object-navigator-dropdown .ng-select-container{height:2.4rem;min-height:2.4rem}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.object-navigator-filters-name{flex:0;margin-top:.1rem;margin-bottom:.1rem;height:2.4rem;display:flex;flex-direction:row}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.object-navigator-filters-name>.object-navigator-dropdown{flex:1}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.object-navigator-filters-name>.object-navigator-dropdown .ng-select-container{height:2.4rem;min-height:2.4rem}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.object-navigator-filters-name>.object-navigator-filters-name-context-menu{--context-menu-trigger-width: 2.4rem;--context-menu-trigger-height: 2.4rem}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.object-navigator-filter-criteria-panel{flex:0;padding-top:.8rem}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.object-navigator-apply-button-row{flex:0;display:flex;margin-top:.8rem;margin-bottom:.8rem;justify-content:flex-end}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.object-navigator-separator{flex:0;border-top:solid .078125em var(--object-navigator-separator-border-color-enabled);padding-bottom:.8rem}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.scrollable-content-container{position:relative;flex:1;width:100%;display:flex;flex-direction:column}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.scrollable-content-container>lib-bimplus-scrollable-container{position:absolute;top:0;bottom:0;flex:1;width:100%}.filter-criteria-container{display:flex;flex-direction:column;width:calc(100% - 2.4rem);padding-left:2.4rem;height:12rem}:host(.object-navigator){height:100%;width:100%}.object-navigator-filter-action-buttons{width:2.4rem;height:2.4rem;display:inline-block;background-position:center center;background-repeat:no-repeat;cursor:pointer;background-size:1.8rem 1.8rem;color:var(--object-navigator-filter-action-buttons-text-color);margin-left:.4rem}.object-navigator-select-attributes-button{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0D%0A<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M1.70697 10.707L7.29297 16.293C7.4805 16.4805 7.73481 16.5858 7.99997 16.5858C8.26514 16.5858 8.51944 16.4805 8.70697 16.293L15.415 9.586C15.7897 9.21085 16.0001 8.70225 16 8.172V4C16 3.46957 15.7893 2.96086 15.4142 2.58579C15.0391 2.21071 14.5304 2 14 2H9.82997C9.29958 2.00011 8.79096 2.2109 8.41597 2.586L1.70697 9.293C1.5195 9.48053 1.41418 9.73484 1.41418 10C1.41418 10.2652 1.5195 10.5195 1.70697 10.707ZM12 8C12.5304 8 13.0391 7.78929 13.4142 7.41421C13.7893 7.03914 14 6.53043 14 6C14 5.46957 13.7893 4.96086 13.4142 4.58579C13.0391 4.21071 12.5304 4 12 4C11.4695 4 10.9608 4.21071 10.5858 4.58579C10.2107 4.96086 9.99997 5.46957 9.99997 6C9.99997 6.53043 10.2107 7.03914 10.5858 7.41421C10.9608 7.78929 11.4695 8 12 8Z\" fill=\"%2346494D\"/>%0D%0A</svg>%0D%0A');width:2.4rem;height:2.4rem;display:inline-block;background-position:center center;background-repeat:no-repeat;cursor:pointer;background-size:1.8rem 1.8rem;color:var(--object-navigator-filter-action-buttons-text-color);margin-left:.4rem}.object-navigator-select-attributes-button.active{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0D%0A<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M1.707 10.707L7.293 16.293C7.48053 16.4805 7.73484 16.5858 8 16.5858C8.26517 16.5858 8.51947 16.4805 8.707 16.293L15.415 9.586C15.7897 9.21085 16.0002 8.70225 16 8.172V4C16 3.46957 15.7893 2.96086 15.4142 2.58579C15.0391 2.21071 14.5304 2 14 2H9.83C9.29961 2.00011 8.79099 2.2109 8.416 2.586L1.707 9.293C1.51953 9.48053 1.41422 9.73484 1.41422 10C1.41422 10.2652 1.51953 10.5195 1.707 10.707ZM12 8C12.5304 8 13.0391 7.78929 13.4142 7.41421C13.7893 7.03914 14 6.53043 14 6C14 5.46957 13.7893 4.96086 13.4142 4.58579C13.0391 4.21071 12.5304 4 12 4C11.4696 4 10.9609 4.21071 10.5858 4.58579C10.2107 4.96086 10 5.46957 10 6C10 6.53043 10.2107 7.03914 10.5858 7.41421C10.9609 7.78929 11.4696 8 12 8Z\" fill=\"%230066CC\"/>%0D%0A</svg>%0D%0A')}.object-navigator-pick-object-button{background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 18 18\"><path d=\"M2.8 12.4c1.2 1.2-1.3 3-.7 3.6.5.5 2.5-1.8 3.6-.7l5.6-5.6-2.9-3s-4.6 4.7-5.6 5.7zM8.4 11L7 9.6l1.4-1.4 1.4 1.4L8.4 11zm4.2-8.4l-2 2-.7-.7-1.5 1.4 4.3 4.3 1.4-1.4-.7-.7 2-2c1.8-1.9-1-4.7-2.8-2.9z\" fill-rule=\"evenodd\" clip-rule=\"evenodd\" fill=\"%23444\"/></svg>');width:2.4rem;height:2.4rem;display:inline-block;background-position:center center;background-repeat:no-repeat;cursor:pointer;background-size:1.8rem 1.8rem;color:var(--object-navigator-filter-action-buttons-text-color);margin-left:.4rem}.object-navigator-pick-object-button.active{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0D%0A<path d=\"M2.80001 12.4C4.00001 13.6 1.50001 15.4 2.10001 16C2.60001 16.5 4.60001 14.2 5.70001 15.3L11.3 9.69997L8.40001 6.69997C8.40001 6.69997 3.80001 11.4 2.80001 12.4ZM8.40001 11L7.00001 9.59997L8.40001 8.19997L9.80001 9.59997L8.40001 11ZM12.6 2.59997L10.6 4.59997L9.90001 3.89997L8.40001 5.29997L12.7 9.59997L14.1 8.19997L13.4 7.49997L15.4 5.49997C17.2 3.59997 14.4 0.799974 12.6 2.59997Z\" fill=\"%230066CC\"/>%0D%0A</svg>%0D%0A')}.object-navigator-filter-criteria-header{display:inline-block;text-transform:uppercase;line-height:2.4rem;font-weight:700;font-size:.9375em;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:100%}lib-object-filter-result{--flat-tree-container-background-color-enabled: transparent}#NoObjectSelected{margin:.8rem;line-height:.72rem;font-size:1.2rem}#NoObjectSelected+.object-navigator-apply-button-row{margin-top:0}\n"] }]
268
+ ], encapsulation: ViewEncapsulation.ShadowDom, template: "<lib-bimplus-sidenav-drawer-content [header]=\"'_Object navigator' | translate\"\r\n [isLoading]=\"isLoadingResults\"\r\n [loadingSpinnerText]=\"'_Loading_Filter_Results' | translate\"\r\n>\r\n <div class=\"object-navigator-content-container\">\r\n @if(filterTypes.length > 0){\r\n <div class=\"description\">\r\n {{\"_Select_an_object_using_Object_Picker\" | translate}}\r\n </div>\r\n <div class=\"object-navigator-filters-type\">\r\n <ng-select data-test=\"object-navigator-filter-types-dropdown\" class=\"object-navigator-dropdown\" [(ngModel)]=\"activeFilterType\" [clearable]=\"false\" [searchable]=\"false\">\r\n <ng-option *ngFor=\"let type of filterTypes\" [value]=\"type\">{{type.name}}</ng-option>\r\n </ng-select>\r\n </div>\r\n <div class=\"object-navigator-filters-name\">\r\n <ng-select data-test=\"object-navigator-filters-name-dropdown\" class=\"object-navigator-dropdown\" [(ngModel)]=\"activeFilter\" [clearable]=\"false\" [disabled]=\"!filters\" [searchable]=\"false\">\r\n <ng-option *ngFor=\"let filter of filters\" [value]=\"filter\">{{filter.name}}</ng-option>\r\n </ng-select>\r\n\r\n @if(!hideFilterContextMenu){\r\n <lib-bimplus-context-menu class=\"object-navigator-filters-name-context-menu\"\r\n [items]=\"filterContextMenu\"\r\n *ngIf=\"filterContextMenu?.length\"\r\n >\r\n </lib-bimplus-context-menu>\r\n }\r\n\r\n </div>\r\n\r\n <lib-expansion-panel class=\"object-navigator-filter-criteria-panel\">\r\n <lib-expansion-panel-header>\r\n <span class=\"object-navigator-filter-criteria-header\">\r\n {{ \"_Assign_Objects_Selection_Mode\" | translate }} &#40;{{ filterCriteria.length }}/{{ maxFilterCriteria }}&#41;\r\n </span>\r\n <lib-expansion-panel-header-actions>\r\n <div class=\"object-navigator-pick-object-button\"\r\n [ngClass]=\"filterCriteriaSelectionMode$.getValue() === FilterCriteriaSelectionMode.SelectObjectProperties? 'active' : ''\"\r\n (click)=\"setFilterCriteriaSelectionMode(FilterCriteriaSelectionMode.SelectObjectProperties)\"\r\n (keypress)=\"setFilterCriteriaSelectionMode(FilterCriteriaSelectionMode.SelectObjectProperties)\"\r\n [title]=\"'_Object_Picker'| translate\"\r\n ></div>\r\n </lib-expansion-panel-header-actions>\r\n </lib-expansion-panel-header>\r\n\r\n <div class=\"filter-criteria-container\">\r\n @for (criterium of filterCriteria; track criterium; let i = $index) {\r\n <app-filter-criterium\r\n [criterium] = \"criterium\"\r\n [indent]=\"i*0.8\"\r\n (deleteCriterium)=\"deleteFilterCriterium(i)\"\r\n ></app-filter-criterium>\r\n }\r\n </div>\r\n </lib-expansion-panel>\r\n\r\n @switch(filterCriteriaSelectionMode$.getValue()){\r\n @case(FilterCriteriaSelectionMode.SelectObjectProperties){\r\n @if(!selectedObjectId){\r\n <p id=\"NoObjectSelected\">{{ \"_NoObjectSelected\" | translate}}</p>\r\n }\r\n }\r\n }\r\n\r\n <div class=\"object-navigator-apply-button-row\">\r\n <button class=\"primary-button\" \r\n [class.disabled]=\"applyFilterDisabled()\"\r\n [disabled]=\"applyFilterDisabled()\"\r\n (click)=\"applyFilter()\"\r\n > \r\n {{\"_Apply filter\" | translate}}\r\n </button>\r\n </div>\r\n\r\n <div class=\"object-navigator-separator\"></div>\r\n\r\n @switch(filterCriteriaSelectionMode$.getValue()){\r\n @case(FilterCriteriaSelectionMode.SelectObjectProperties){\r\n @if(selectedObjectId){\r\n <div class=\"scrollable-content-container\">\r\n <lib-bimplus-scrollable-container>\r\n <lib-criteria-select-object-properties\r\n [api]=\"api\"\r\n [selectedLanguage]=\"selectedLanguage\"\r\n [localizedStrings]=\"localizedStrings\"\r\n [(filterCriteria)]=\"filterCriteria\"\r\n [rootObjectId]=\"selectedObjectId\"\r\n [revision]=\"selectedRevision\"\r\n (filterCriteriaChange)=\"filterCriteriaWasChanged()\"\r\n >\r\n </lib-criteria-select-object-properties>\r\n </lib-bimplus-scrollable-container>\r\n </div>\r\n }\r\n }\r\n @case(FilterCriteriaSelectionMode.SelectAttributes){\r\n\r\n }\r\n @default{\r\n @if (filterResult) {\r\n <div class=\"scrollable-content-container\">\r\n <lib-bimplus-scrollable-container>\r\n <lib-object-filter-result\r\n [filterResult]=\"filterResult\"\r\n [selectedObjects]=\"selectedObjects\"\r\n [isFilterResultInvalid]=\"filterResultInvalidated\"\r\n [filterResultInvalidTitle]=\"'Result_is_Invalid' | translate\"\r\n [filterResultInvalidText]=\"'Selection_in_Project_navigator_has_changed' | translate\"\r\n (nodeSelectionChanged)=\"handleFilterResultSelectionChanged($event)\"\r\n (nodeDoubleClicked)=\"handleFilterResultObjectDoubleClicked($event)\"\r\n (nodeMouseEntered)=\"handleFilterResultObjectMouseEntered($event)\"\r\n (nodeMouseLeft)=\"handleFilterResultObjectMouseLeft($event)\"\r\n ></lib-object-filter-result>\r\n </lib-bimplus-scrollable-container>\r\n </div>\r\n }\r\n }\r\n }\r\n }\r\n @else {\r\n <div data-test=\"object-navigator-no-filter-types-message\" class=\"object-navigator-no-filter-types\"> {{\"_No_visible_models_found\" | translate}} </div>\r\n }\r\n </div>\r\n</lib-bimplus-sidenav-drawer-content>\r\n", styles: [".ng-select.ng-select-opened>.ng-select-container{background:var(--select-container-open-background-color-enabled);border-color:var(--select-container-open-border-color-enabled)}.ng-select.ng-select-opened>.ng-select-container:hover{box-shadow:none}.ng-select.ng-select-opened>.ng-select-container .ng-arrow{top:-2px;border-color:transparent transparent var(--select-container-open-arrow-border-color-enabled);border-width:0 5px 5px}.ng-select.ng-select-opened>.ng-select-container .ng-arrow:hover{border-color:transparent transparent var(--select-container-open-arrow-border-color-hovered)}.ng-select.ng-select-opened.ng-select-top>.ng-select-container{border-top-right-radius:0;border-top-left-radius:0}.ng-select.ng-select-opened.ng-select-right>.ng-select-container{border-top-right-radius:0;border-bottom-right-radius:0}.ng-select.ng-select-opened.ng-select-bottom>.ng-select-container{border-bottom-right-radius:0;border-bottom-left-radius:0}.ng-select.ng-select-opened.ng-select-left>.ng-select-container{border-top-left-radius:0;border-bottom-left-radius:0}.ng-select.ng-select-disabled>.ng-select-container{background-color:var(--select-container-background-color-disabled)}.ng-select .ng-has-value .ng-placeholder{display:none}.ng-select .ng-select-container{color:var(--select-container-text-color-enabled);background-color:var(--select-container-background-color-enabled);border-radius:0;border:1px solid var(--select-container-border-color-enabled);min-height:36px;align-items:center}.ng-select .ng-select-container:hover{box-shadow:0 1px 0 var(--select-container-box-shadow-color-hovered);background-color:var(--select-container-background-color-hovered)}.ng-select .ng-select-container .ng-value-container{align-items:center;padding-left:10px}[dir=rtl] .ng-select .ng-select-container .ng-value-container{padding-right:10px;padding-left:0}.ng-select .ng-select-container .ng-value-container .ng-placeholder{color:var(--select-container-placeholder-text-color-enabled)}.ng-select.ng-select-single .ng-select-container{height:36px}.ng-select.ng-select-single .ng-select-container .ng-value-container .ng-input{top:5px;left:0;padding-left:10px;padding-right:50px}[dir=rtl] .ng-select.ng-select-single .ng-select-container .ng-value-container .ng-input{padding-right:10px;padding-left:50px}.ng-select.ng-select-multiple.ng-select-disabled>.ng-select-container .ng-value-container .ng-value{background-color:var(--select-multiple-disabled-container-value-background-color-enabled);border:1px solid var(--select-multiple-disabled-container-value-border-color-enabled)}.ng-select.ng-select-multiple.ng-select-disabled>.ng-select-container .ng-value-container .ng-value .ng-value-label{padding:0 5px}.ng-select.ng-select-multiple .ng-select-container .ng-value-container{padding-top:5px;padding-left:7px}[dir=rtl] .ng-select.ng-select-multiple .ng-select-container .ng-value-container{padding-right:7px;padding-left:0}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value{font-size:.9em;margin-bottom:5px;color:var(--select-multiple-container-value-text-color-enabled);background-color:var(--select-multiple-container-value-background-color-enabled);border-radius:2px;margin-right:5px}[dir=rtl] .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value{margin-right:0;margin-left:5px}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value.ng-value-disabled{background-color:var(--select-multiple-container-value-background-color-disabled)}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value.ng-value-disabled .ng-value-label{padding-left:5px}[dir=rtl] .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value.ng-value-disabled .ng-value-label{padding-left:0;padding-right:5px}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-label,.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon{display:inline-block;padding:1px 5px}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon:hover{background-color:var(--select-multiple-container-value-icon-background-color-hovered)}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon.left{border-right:1px solid var(--select-multiple-container-value-icon-left-border-color-enbabled)}[dir=rtl] .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon.left{border-left:1px solid var(--select-multiple-container-value-icon-left-border-color-enbabled);border-right:none}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon.right{border-left:1px solid var(--select-multiple-container-value-icon-right-border-color-enbabled)}[dir=rtl] .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon.right{border-left:0;border-right:1px solid var(--select-multiple-container-value-icon-right-border-color-enbabled)}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-input{padding:0 0 3px 3px}[dir=rtl] .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-input{padding:0 3px 3px 0}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-input>input{color:var(--select-multiple-container-value-input-text-color-enabled)}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{top:5px;padding-bottom:5px;padding-left:3px}[dir=rtl] .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{padding-right:3px;padding-left:0}.ng-select .ng-clear-wrapper{color:var(--select-clear-wrapper-text-color-enabled)}.ng-select .ng-clear-wrapper:hover .ng-clear{color:var(--select-clear-wrapper-text-color-hovered)}.ng-select .ng-clear-wrapper:focus .ng-clear{color:var(--select-clear-wrapper-text-color-focused)}.ng-select .ng-clear-wrapper:focus{outline:none}.ng-select .ng-spinner-zone{padding:5px 5px 0 0}[dir=rtl] .ng-select .ng-spinner-zone{padding:5px 0 0 5px}.ng-select .ng-arrow-wrapper{width:25px;padding-right:5px}[dir=rtl] .ng-select .ng-arrow-wrapper{padding-left:5px;padding-right:0}.ng-select .ng-arrow-wrapper:hover .ng-arrow{border-top-color:var(--select-arrow-wrapper-border-color-hovored)}.ng-select .ng-arrow-wrapper .ng-arrow{border-color:var(--select-arrow-wrapper-border-color-enabled) transparent transparent;border-style:solid;border-width:5px 5px 2.5px}.ng-dropdown-panel{background-color:var(--dropdown-panel-background-color-enabled);border:1px solid var(--dropdown-panel-border-color-enabled);box-shadow:0 1px 0 var(--dropdown-panel-box-shadow-color-enabled);left:0}.ng-dropdown-panel.ng-select-top{bottom:100%;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-color:var(--dropdown-panel-select-top-border-color-enabled);margin-bottom:-1px}.ng-dropdown-panel.ng-select-top .ng-dropdown-panel-items .ng-option:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.ng-dropdown-panel.ng-select-right{left:100%;top:0;border-top-right-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px;border-bottom-color:var(--dropdown-panel-select-right-border-color-enabled);margin-bottom:-1px}.ng-dropdown-panel.ng-select-right .ng-dropdown-panel-items .ng-option:first-child{border-top-right-radius:4px}.ng-dropdown-panel.ng-select-bottom{top:100%;border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-color:var(--dropdown-panel-select-bottom-border-color-enabled);margin-top:-1px}.ng-dropdown-panel.ng-select-bottom .ng-dropdown-panel-items .ng-option:last-child{border-bottom-right-radius:0;border-bottom-left-radius:0}.ng-dropdown-panel.ng-select-left{left:-100%;top:0;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px;border-bottom-color:var(--dropdown-panel-select-left-border-color-enabled);margin-bottom:-1px}.ng-dropdown-panel.ng-select-left .ng-dropdown-panel-items .ng-option:first-child{border-top-left-radius:4px}.ng-dropdown-panel .ng-dropdown-header{border-bottom:1px solid var(--dropdown-panel-header-border-color-enabled);padding:5px 7px}.ng-dropdown-panel .ng-dropdown-footer{border-top:1px solid var(--dropdown-panel-footer-border-color-enabled);padding:5px 7px}.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup{-webkit-user-select:none;user-select:none;padding:8px 10px;font-weight:500;color:var(--dropdown-panel-items-text-color-enabled);cursor:pointer}.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-disabled{cursor:default}.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-marked{background-color:var(--dropdown-panel-items-marked-background-color-enabled)}.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-selected,.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-selected.ng-option-marked{color:var(--dropdown-panel-items-option-selected-text-color-enabled);background-color:var(--dropdown-panel-items-option-selected-background-color-enabled);font-weight:600}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option{background-color:var(--dropdown-panel-items-option-background-color-enabled);color:var(--dropdown-panel-items-option-text-color-enabled);padding:8px 10px}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected,.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected.ng-option-marked{color:var(--dropdown-panel-items-option-selected2-text-color-enabled);background-color:var(--dropdown-panel-items-option-selected2-background-color-enabled)}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected .ng-option-label,.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected.ng-option-marked .ng-option-label{font-weight:600}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-marked{background-color:var(--dropdown-panel-items-marked-background-color-enabled);color:var(--dropdown-panel-items-marked-text-color-enabled)}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-disabled{color:var(--dropdown-panel-items-text-color-disabled)}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-child{padding-left:22px}[dir=rtl] .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-child{padding-right:22px;padding-left:0}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option .ng-tag-label{font-size:80%;font-weight:400;padding-right:5px}[dir=rtl] .ng-dropdown-panel .ng-dropdown-panel-items .ng-option .ng-tag-label{padding-left:5px;padding-right:0}[dir=rtl] .ng-dropdown-panel{direction:rtl;text-align:right}.primary-button{text-transform:uppercase;font: 700 1rem Source Sans Pro,Helvetica,Arial,tahoma,sans-serif;display:inline-block;margin-left:.8rem;padding:.2rem 1rem .4rem;height:2.4rem;white-space:nowrap;border-radius:.2rem;vertical-align:middle;font-size:1.2rem;border:solid .2rem var(--primary-button-border-color-enabled);color:var(--primary-button-text-color-enabled);background-color:var(--primary-button-background-color-enabled);cursor:pointer}.primary-button:hover{border:solid .2rem var(--primary-button-border-color-hovered);color:var(--primary-button-text-color-hovered);background-color:var(--primary-button-background-color-hovered);outline:0}.primary-button:disabled,.primary-button:disabled:active,.primary-button.disabled{border:solid .2rem var(--primary-button-border-color-disabled);color:var(--primary-button-text-color-disabled);background-color:var(--primary-button-background-color-disabled);cursor:default}.primary-button:active{border:solid .2rem var(--primary-button-border-color-pressed);color:var(--primary-button-text-color-pressed);background-color:var(--primary-button-background-color-pressed);cursor:default}:host{display:flex}lib-bimplus-sidenav-drawer-content{width:100%;max-height:100%;display:flex;flex:1}lib-bimplus-sidenav-drawer-content .object-navigator-content-container{display:flex;flex-direction:column;width:100%;max-height:100%;flex:1}lib-bimplus-sidenav-drawer-content .object-navigator-content-container lib-object-filter-result{--bimplus-object-filter-result-background-color: transparent}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.description{margin-bottom:.8rem;font-size:1.2rem}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.object-navigator-no-filter-types{font-size:1.2rem}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.object-navigator-filters-type{flex:0;margin-top:.1rem;margin-bottom:.1rem;height:2.4rem}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.object-navigator-filters-type>.object-navigator-dropdown .ng-select-container{height:2.4rem;min-height:2.4rem}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.object-navigator-filters-name{flex:0;margin-top:.1rem;margin-bottom:.1rem;height:2.4rem;display:flex;flex-direction:row}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.object-navigator-filters-name>.object-navigator-dropdown{flex:1}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.object-navigator-filters-name>.object-navigator-dropdown .ng-select-container{height:2.4rem;min-height:2.4rem}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.object-navigator-filters-name>.object-navigator-filters-name-context-menu{--context-menu-trigger-width: 2.4rem;--context-menu-trigger-height: 2.4rem}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.object-navigator-filter-criteria-panel{flex:0;padding-top:.8rem}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.object-navigator-apply-button-row{flex:0;display:flex;margin-top:.8rem;margin-bottom:.8rem;justify-content:flex-end}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.object-navigator-separator{flex:0;border-top:solid .078125em var(--object-navigator-separator-border-color-enabled);padding-bottom:.8rem}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.scrollable-content-container{position:relative;flex:1;width:100%;display:flex;flex-direction:column}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.scrollable-content-container>lib-bimplus-scrollable-container{position:absolute;top:0;bottom:0;flex:1;width:100%}.filter-criteria-container{display:flex;flex-direction:column;width:calc(100% - 2.4rem);padding-left:2.4rem;height:12rem}:host(.object-navigator){height:100%;width:100%}.object-navigator-filter-action-buttons{width:2.4rem;height:2.4rem;display:inline-block;background-position:center center;background-repeat:no-repeat;cursor:pointer;background-size:1.8rem 1.8rem;color:var(--object-navigator-filter-action-buttons-text-color);margin-left:.4rem}.object-navigator-select-attributes-button{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0D%0A<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M1.70697 10.707L7.29297 16.293C7.4805 16.4805 7.73481 16.5858 7.99997 16.5858C8.26514 16.5858 8.51944 16.4805 8.70697 16.293L15.415 9.586C15.7897 9.21085 16.0001 8.70225 16 8.172V4C16 3.46957 15.7893 2.96086 15.4142 2.58579C15.0391 2.21071 14.5304 2 14 2H9.82997C9.29958 2.00011 8.79096 2.2109 8.41597 2.586L1.70697 9.293C1.5195 9.48053 1.41418 9.73484 1.41418 10C1.41418 10.2652 1.5195 10.5195 1.70697 10.707ZM12 8C12.5304 8 13.0391 7.78929 13.4142 7.41421C13.7893 7.03914 14 6.53043 14 6C14 5.46957 13.7893 4.96086 13.4142 4.58579C13.0391 4.21071 12.5304 4 12 4C11.4695 4 10.9608 4.21071 10.5858 4.58579C10.2107 4.96086 9.99997 5.46957 9.99997 6C9.99997 6.53043 10.2107 7.03914 10.5858 7.41421C10.9608 7.78929 11.4695 8 12 8Z\" fill=\"%2346494D\"/>%0D%0A</svg>%0D%0A');width:2.4rem;height:2.4rem;display:inline-block;background-position:center center;background-repeat:no-repeat;cursor:pointer;background-size:1.8rem 1.8rem;color:var(--object-navigator-filter-action-buttons-text-color);margin-left:.4rem}.object-navigator-select-attributes-button.active{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0D%0A<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M1.707 10.707L7.293 16.293C7.48053 16.4805 7.73484 16.5858 8 16.5858C8.26517 16.5858 8.51947 16.4805 8.707 16.293L15.415 9.586C15.7897 9.21085 16.0002 8.70225 16 8.172V4C16 3.46957 15.7893 2.96086 15.4142 2.58579C15.0391 2.21071 14.5304 2 14 2H9.83C9.29961 2.00011 8.79099 2.2109 8.416 2.586L1.707 9.293C1.51953 9.48053 1.41422 9.73484 1.41422 10C1.41422 10.2652 1.51953 10.5195 1.707 10.707ZM12 8C12.5304 8 13.0391 7.78929 13.4142 7.41421C13.7893 7.03914 14 6.53043 14 6C14 5.46957 13.7893 4.96086 13.4142 4.58579C13.0391 4.21071 12.5304 4 12 4C11.4696 4 10.9609 4.21071 10.5858 4.58579C10.2107 4.96086 10 5.46957 10 6C10 6.53043 10.2107 7.03914 10.5858 7.41421C10.9609 7.78929 11.4696 8 12 8Z\" fill=\"%230066CC\"/>%0D%0A</svg>%0D%0A')}.object-navigator-pick-object-button{background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 18 18\"><path d=\"M2.8 12.4c1.2 1.2-1.3 3-.7 3.6.5.5 2.5-1.8 3.6-.7l5.6-5.6-2.9-3s-4.6 4.7-5.6 5.7zM8.4 11L7 9.6l1.4-1.4 1.4 1.4L8.4 11zm4.2-8.4l-2 2-.7-.7-1.5 1.4 4.3 4.3 1.4-1.4-.7-.7 2-2c1.8-1.9-1-4.7-2.8-2.9z\" fill-rule=\"evenodd\" clip-rule=\"evenodd\" fill=\"%23444\"/></svg>');width:2.4rem;height:2.4rem;display:inline-block;background-position:center center;background-repeat:no-repeat;cursor:pointer;background-size:1.8rem 1.8rem;color:var(--object-navigator-filter-action-buttons-text-color);margin-left:.4rem}.object-navigator-pick-object-button.active{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0D%0A<path d=\"M2.80001 12.4C4.00001 13.6 1.50001 15.4 2.10001 16C2.60001 16.5 4.60001 14.2 5.70001 15.3L11.3 9.69997L8.40001 6.69997C8.40001 6.69997 3.80001 11.4 2.80001 12.4ZM8.40001 11L7.00001 9.59997L8.40001 8.19997L9.80001 9.59997L8.40001 11ZM12.6 2.59997L10.6 4.59997L9.90001 3.89997L8.40001 5.29997L12.7 9.59997L14.1 8.19997L13.4 7.49997L15.4 5.49997C17.2 3.59997 14.4 0.799974 12.6 2.59997Z\" fill=\"%230066CC\"/>%0D%0A</svg>%0D%0A')}.object-navigator-filter-criteria-header{display:inline-block;text-transform:uppercase;line-height:2.4rem;font-weight:700;font-size:.9375em;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:100%}lib-object-filter-result{--flat-tree-container-background-color-enabled: transparent}#NoObjectSelected{margin:.8rem;line-height:.72rem;font-size:1.2rem}#NoObjectSelected+.object-navigator-apply-button-row{margin-top:0}\n"] }]
261
269
  }], ctorParameters: () => [{ type: i1.TranslateService }], propDecorators: { objectFilterResult: [{
262
270
  type: ViewChild,
263
271
  args: [ObjectFilterResultComponent]
@@ -297,4 +305,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImpo
297
305
  }], pipetteActiveStatus: [{
298
306
  type: Output
299
307
  }] } });
300
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmltcGx1cy1vYmplY3QtbmF2aWdhdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1iaW1wbHVzLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2JpbXBsdXMtb2JqZWN0LW5hdmlnYXRvci9iaW1wbHVzLW9iamVjdC1uYXZpZ2F0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWJpbXBsdXMtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvYmltcGx1cy1vYmplY3QtbmF2aWdhdG9yL2JpbXBsdXMtb2JqZWN0LW5hdmlnYXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRyxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0gsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsMkJBQTJCLEVBQStCLGlCQUFpQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDbkksT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDekYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFFdkYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxvQ0FBb0MsRUFBRSxNQUFNLDRFQUE0RSxDQUFDO0FBQ2xJLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLDREQUE0RCxDQUFD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ZCxLQUFLO2dCQUlOLGVBQWU7c0JBRGQsS0FBSztnQkFRTixrQ0FBa0M7c0JBRGpDLE1BQU07Z0JBSVAsK0JBQStCO3NCQUQ5QixNQUFNO2dCQUlQLDhCQUE4QjtzQkFEN0IsTUFBTTtnQkFJUCwyQkFBMkI7c0JBRDFCLE1BQU07Z0JBSVAsbUJBQW1CO3NCQURsQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsICBWaWV3Q2hpbGQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgKiBhcyBXZWJTZGsgZnJvbSAnYmltcGx1cy13ZWJzZGsnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgLGZyb20gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBGaWx0ZXJDcml0ZXJpYVNlbGVjdGlvbk1vZGUsIEZpbHRlckNyaXRlcml1bSwgRmlsdGVyVHlwZSwgTWF4RmlsdGVyQ3JpdGVyaWEgfSBmcm9tICcuL2JpbXBsdXMtb2JqZWN0LW5hdmlnYXRvci5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBGaWx0ZXJDcml0ZXJpdW1Db21wb25lbnQgfSBmcm9tICcuL2ZpbHRlci1jcml0ZXJpdW0vZmlsdGVyLWNyaXRlcml1bS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBFeHBhbnNpb25QYW5lbENvbXBvbmVudCB9IGZyb20gJy4uL2V4cGFuc2lvbi1wYW5lbC9leHBhbnNpb24tcGFuZWwuY29tcG9uZW50JztcclxuXHJcbmltcG9ydCB7IE5nU2VsZWN0TW9kdWxlIH0gZnJvbSAnQG5nLXNlbGVjdC9uZy1zZWxlY3QnO1xyXG5pbXBvcnQgeyBCaW1wbHVzU2lkZW5hdkRyYXdlckNvbnRlbnRDb21wb25lbnQgfSBmcm9tICcuLi9iaW1wbHVzLXNpZGVuYXYtZHJhd2VyLWNvbnRlbnQvYmltcGx1cy1zaWRlbmF2LWRyYXdlci1jb250ZW50LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEV4cGFuc2lvblBhbmVsSGVhZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vZXhwYW5zaW9uLXBhbmVsLWhlYWRlci9leHBhbnNpb24tcGFuZWwtaGVhZGVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEV4cGFuc2lvblBhbmVsSGVhZGVyQWN0aW9uc0NvbXBvbmVudCB9IGZyb20gJy4uL2V4cGFuc2lvbi1wYW5lbC1oZWFkZXItYWN0aW9ucy9leHBhbnNpb24tcGFuZWwtaGVhZGVyLWFjdGlvbnMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQmltcGx1c0xvY2FsaXplZFdpZGdldENvbXBvbmVudCB9IGZyb20gJy4uL2JpbXBsdXMtbG9jYWxpemVkLXdpZGdldC9iaW1wbHVzLWxvY2FsaXplZC13aWRnZXQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlLCBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IENyaXRlcmlhU2VsZWN0T2JqZWN0UHJvcGVydGllc0NvbXBvbmVudCB9IGZyb20gJy4vY3JpdGVyaWEtc2VsZWN0LW9iamVjdC1wcm9wZXJ0aWVzL2NyaXRlcmlhLXNlbGVjdC1vYmplY3QtcHJvcGVydGllcy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBPYmplY3RGaWx0ZXJSZXN1bHRDb21wb25lbnQgfSBmcm9tICcuL29iamVjdC1maWx0ZXItcmVzdWx0L29iamVjdC1maWx0ZXItcmVzdWx0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEJpbXBsdXNDb250ZXh0TWVudUNvbXBvbmVudCB9IGZyb20gICcuLi9iaW1wbHVzLWNvbnRleHQtbWVudS9iaW1wbHVzLWNvbnRleHQtbWVudS5jb21wb25lbnQnXHJcbmltcG9ydCB7IEJpbXBsdXNDb250ZXh0TWVudUl0ZW0gfSBmcm9tICcuLi9iaW1wbHVzLWNvbnRleHQtbWVudS9iaW1wbHVzLWNvbnRleHQtbWVudS5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBGaWx0ZXJTdHJpbmcgfSBmcm9tICcuLi8uLi91dGlscy9maWx0ZXJTdHJpbmcnO1xyXG5pbXBvcnQgeyBGaWx0ZXJTdHJ1Y3R1cmVGZXRjaGVyIH0gZnJvbSAnLi4vLi4vdXRpbHMvZmlsdGVyU3RydWN0dXJlRmV0Y2hlcic7XHJcbmltcG9ydCB7IEJpbXBsdXNTY3JvbGxhYmxlQ29udGFpbmVyQ29tcG9uZW50IH0gZnJvbSAnLi4vYmltcGx1cy1zY3JvbGxhYmxlLWNvbnRhaW5lci9iaW1wbHVzLXNjcm9sbGFibGUtY29udGFpbmVyLmNvbXBvbmVudCdcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWJpbXBsdXMtb2JqZWN0LW5hdmlnYXRvcicsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbIENvbW1vbk1vZHVsZVxyXG4gICAgLCBGb3Jtc01vZHVsZVxyXG4gICAgLCBOZ1NlbGVjdE1vZHVsZVxyXG4gICAgLCBGaWx0ZXJDcml0ZXJpdW1Db21wb25lbnRcclxuICAgICwgRXhwYW5zaW9uUGFuZWxDb21wb25lbnRcclxuICAgICwgRXhwYW5zaW9uUGFuZWxIZWFkZXJDb21wb25lbnRcclxuICAgICwgRXhwYW5zaW9uUGFuZWxIZWFkZXJBY3Rpb25zQ29tcG9uZW50XHJcbiAgICAsIEJpbXBsdXNTaWRlbmF2RHJhd2VyQ29udGVudENvbXBvbmVudFxyXG4gICAgLCBUcmFuc2xhdGVNb2R1bGVcclxuICAgICwgQ3JpdGVyaWFTZWxlY3RPYmplY3RQcm9wZXJ0aWVzQ29tcG9uZW50XHJcbiAgICAsIEJpbXBsdXNDb250ZXh0TWVudUNvbXBvbmVudFxyXG4gICAgLCBPYmplY3RGaWx0ZXJSZXN1bHRDb21wb25lbnRcclxuICAgICwgQmltcGx1c1Njcm9sbGFibGVDb250YWluZXJDb21wb25lbnRcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9iaW1wbHVzLW9iamVjdC1uYXZpZ2F0b3IuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9iaW1wbHVzLW9iamVjdC1uYXZpZ2F0b3IuY29tcG9uZW50Lmxlc3MnLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLlNoYWRvd0RvbVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQmltcGx1c09iamVjdE5hdmlnYXRvckNvbXBvbmVudCBleHRlbmRzIEJpbXBsdXNMb2NhbGl6ZWRXaWRnZXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBjb25zdHJ1Y3Rvcih0cmFuc2xhdGVTZXJ2aWNlOiAgVHJhbnNsYXRlU2VydmljZSl7XHJcbiAgICBzdXBlcih0cmFuc2xhdGVTZXJ2aWNlKVxyXG4gIH1cclxuXHJcbiAgLy8gI3JlZ2lvbiBwdWJsaWMgZmllbGRzXHJcbiAgQFZpZXdDaGlsZChPYmplY3RGaWx0ZXJSZXN1bHRDb21wb25lbnQpIG9iamVjdEZpbHRlclJlc3VsdDogT2JqZWN0RmlsdGVyUmVzdWx0Q29tcG9uZW50IHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgaGlkZUZpbHRlckNvbnRleHRNZW51OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgZmlsdGVyQ29udGV4dE1lbnU6IEFycmF5PEJpbXBsdXNDb250ZXh0TWVudUl0ZW0+ID0gW107XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IGZpbHRlclR5cGVzKHR5cGVzIDogQXJyYXk8RmlsdGVyVHlwZT4pe1xyXG4gICAgdGhpcy5fZmlsdGVyVHlwZXMgPSB0eXBlcztcclxuICAgIGlmKHRoaXMuX2ZpbHRlclR5cGVzLmxlbmd0aCA+MClcclxuICAgICAgdGhpcy5hY3RpdmVGaWx0ZXJUeXBlID0gdGhpcy5fZmlsdGVyVHlwZXNbMF07XHJcbiAgfVxyXG5cclxuICBnZXQgZmlsdGVyVHlwZXMoKTpBcnJheTxGaWx0ZXJUeXBlPntcclxuICAgIHJldHVybiB0aGlzLl9maWx0ZXJUeXBlcztcclxuICB9XHJcblxyXG4gIHNldCBhY3RpdmVGaWx0ZXJUeXBlKHZhbHVlIDogRmlsdGVyVHlwZSB8IG51bGwpe1xyXG4gICAgdGhpcy5hY3RpdmVGaWx0ZXJUeXBlU3ViamVjdCQubmV4dCh2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBnZXQgYWN0aXZlRmlsdGVyVHlwZSgpIDogRmlsdGVyVHlwZSB8IG51bGx7XHJcbiAgICByZXR1cm4gdGhpcy5hY3RpdmVGaWx0ZXJUeXBlU3ViamVjdCQuZ2V0VmFsdWUoKTtcclxuICB9XHJcblxyXG4gIGFjdGl2ZUZpbHRlclR5cGVTdWJqZWN0JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RmlsdGVyVHlwZSB8IG51bGw+IChudWxsKTtcclxuICBhY3RpdmVGaWx0ZXJTdWJqZWN0JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8V2ViU2RrLk9iamVjdEZpbHRlciB8IG51bGw+IChudWxsKTtcclxuXHJcbiAgc2V0IGFjdGl2ZUZpbHRlcihmaWx0ZXIgOiBXZWJTZGsuT2JqZWN0RmlsdGVyIHwgbnVsbCl7XHJcblxyXG4gICAgLy8gTmV3IGFjdGl2ZSBmaWx0ZXIgaXMgc2VsZWN0ZWQuIEFwcGx5IGZpbHRlciBidXR0b24gc2hvdWxkIGJlIGVuYWJsZWRcclxuICAgIHRoaXMuZmlsdGVyQ3JpdGVyaWFDaGFuZ2VkID0gdHJ1ZTtcclxuXHJcbiAgICBpZihmaWx0ZXIgJiYgIWZpbHRlci5pZCl7IC8vIFN3aXRjaGluZyB0byBjdXN0b20gZmlsdGVyIHdpbGwgcmVzdG9yZSB0aGUgZGVmYXVsdCBjdXN0b20gZmlsdGVyXHJcbiAgICAgIHRoaXMuX3NldERlZmF1bHRDdXN0b21GaWx0ZXJTdHJpbmcoZmlsdGVyKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmFjdGl2ZUZpbHRlclN1YmplY3QkLm5leHQoZmlsdGVyKTtcclxuICB9XHJcblxyXG4gIGdldCBhY3RpdmVGaWx0ZXIoKSA6IFdlYlNkay5PYmplY3RGaWx0ZXIgfCBudWxse1xyXG4gICAgcmV0dXJuIHRoaXMuYWN0aXZlRmlsdGVyU3ViamVjdCQuZ2V0VmFsdWUoKTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgZmlsdGVycyA6IFdlYlNkay5PYmplY3RGaWx0ZXJzUmVzcG9uc2UgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgZmlsdGVyQ3JpdGVyaWEgOiBGaWx0ZXJDcml0ZXJpdW1bXSA9IFtdXHJcbiAgZmlsdGVyQ3JpdGVyaWFDaGFuZ2VkIDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIG1heEZpbHRlckNyaXRlcmlhOiBudW1iZXIgPSBNYXhGaWx0ZXJDcml0ZXJpYTtcclxuXHJcbiAgQElucHV0KClcclxuICBhcGkgOiBXZWJTZGsuQXBpIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHJvamVjdElkIDogc3RyaW5nID0gJydcclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5vYmplY3QtbmF2aWdhdG9yJykgb2JqTmF2Q2xhc3NDbGFzczogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIGZpbHRlckNyaXRlcmlhU2VsZWN0aW9uTW9kZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEZpbHRlckNyaXRlcmlhU2VsZWN0aW9uTW9kZT4oRmlsdGVyQ3JpdGVyaWFTZWxlY3Rpb25Nb2RlLk5vbmUpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBmaWx0ZXJDcml0ZXJpYVNlbGVjdGlvbk1vZGVDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxGaWx0ZXJDcml0ZXJpYVNlbGVjdGlvbk1vZGU+KCk7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2VsZWN0ZWRPYmplY3RJZCA6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNlbGVjdGVkUmV2aXNpb24gOiBudW1iZXIgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2VsZWN0ZWRPYmplY3RzIDogc3RyaW5nW10gPSBbXTtcclxuXHJcbiAgQElucHV0KClcclxuICBzZWxlY3Rpb25PYmplY3QgOiBXZWJTZGsuRXhwb3J0T2JqZWN0IHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIGdldCBmaWx0ZXJSZXN1bHQoKXtcclxuICAgIHJldHVybiB0aGlzLl9maWx0ZXJSZXN1bHQ7XHJcbiAgfVxyXG5cclxuICBAT3V0cHV0KClcclxuICBmaWx0ZXJSZXN1bHRPYmplY3RTZWxlY3Rpb25DaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmdbXT4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgZmlsdGVyUmVzdWx0T2JqZWN0RG91YmxlQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBmaWx0ZXJSZXN1bHRPYmplY3RNb3VzZUVudGVyZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgZmlsdGVyUmVzdWx0T2JqZWN0TW91c2VMZWZ0ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHBpcGV0dGVBY3RpdmVTdGF0dXMgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcblxyXG4gIEZpbHRlckNyaXRlcmlhU2VsZWN0aW9uTW9kZSA9IEZpbHRlckNyaXRlcmlhU2VsZWN0aW9uTW9kZTsgLy8gRXhwb3NlIGVudW0gdG8gdGVtcGxhdGVcclxuXHJcbiAgaXNMb2FkaW5nUmVzdWx0cyA9IGZhbHNlO1xyXG5cclxuICAvLyAjZW5kcmVnaW9uIHB1YmxpYyBmaWVsZHNcclxuXHJcbiAgLy8gI3JlZ2lvbiBwcml2YXRlIGZpZWxkc1xyXG4gIHByaXZhdGUgX2ZpbHRlclJlc3VsdCA6IFdlYlNkay5PYmplY3RGaWx0ZXJTdHJ1Y3R1cmVSZXNwb25zZSB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgX2ZpbHRlclR5cGVzIDogQXJyYXk8RmlsdGVyVHlwZT4gPSBbXTtcclxuICAvLyAjZW5kcmVnaW9uIHByaXZhdGUgZmllbGRzXHJcblxyXG4gIC8vICNyZWdpb24gcHVibGljIG1ldGhvZHNcclxuICBuZ09uSW5pdCgpIHtcclxuXHJcbiAgICB0aGlzLmFjdGl2ZUZpbHRlclR5cGVTdWJqZWN0JC5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAodikgPT4ge1xyXG4gICAgICAgIGlmKCF0aGlzLnByb2plY3RJZCB8fCAhdGhpcy5hcGkgfHwgIXYpe1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5hY3RpdmVGaWx0ZXIgPSBudWxsO1xyXG5cclxuICAgICAgICB0aGlzLmxvYWRDdXJyZW50TGF5ZXJGaWx0ZXJzKHRoaXMucHJvamVjdElkLCB2LmlkKT8uc3Vic2NyaWJlKHtcclxuICAgICAgICAgICAgbmV4dDogKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5maWx0ZXJzID0gW3RoaXMuX2NyZWF0ZURlZmF1bHRDdXN0b21GaWx0ZXIodi5pZCksIC4uLnZhbHVlXTtcclxuICAgICAgICAgICAgICB0aGlzLmFjdGl2ZUZpbHRlciA9IHRoaXMuZmlsdGVyc1swXTtcclxuICAgICAgICAgICAgICB0aGlzLl9hcHBseUN1c3RvbU9yU3RvcmVkRmlsdGVyKCk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGVycm9yOiBlcnIgPT4ge3Rocm93IG5ldyBFcnJvciAoZXJyKX0sXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKX1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWN0aXZlRmlsdGVyU3ViamVjdCQuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHYpID0+IHtcclxuICAgICAgICBpZighdilcclxuICAgICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgICAgdGhpcy5maWx0ZXJDcml0ZXJpYSA9IHRoaXMucGFyc2VGaWx0ZXJTdHJpbmcodik7XHJcbiAgICAgICAgdGhpcy5fYXBwbHlDdXN0b21PclN0b3JlZEZpbHRlcigpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmZpbHRlckNyaXRlcmlhU2VsZWN0aW9uTW9kZSQuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHYpID0+IHtcclxuICAgICAgICB0aGlzLmZpbHRlckNyaXRlcmlhU2VsZWN0aW9uTW9kZUNoYW5nZWQuZW1pdCh2KVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG5cclxuICAgIGlmKCB0aGlzLmZpbHRlclR5cGVzLmxlbmd0aCA+IDApe1xyXG4gICAgICB0aGlzLmFjdGl2ZUZpbHRlclR5cGUgPSB0aGlzLmZpbHRlclR5cGVzWzBdO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbG9hZEN1cnJlbnRMYXllckZpbHRlcnMocHJvamVjdElkIDogc3RyaW5nLCBsYXllcklkIDogc3RyaW5nKXtcclxuICAgIGlmKCF0aGlzLmFwaSl7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHJldHVybiBmcm9tKHRoaXMuYXBpLm9iamVjdEZpbHRlcnMuZ2V0KGxheWVySWQscHJvamVjdElkKSk7XHJcbiAgfVxyXG5cclxuICBwYXJzZUZpbHRlclN0cmluZyhmaWx0ZXIgOiBXZWJTZGsuT2JqZWN0RmlsdGVyKXtcclxuICAgIGNvbnN0IGZpbHRlclN0cmluZyA9IG5ldyBGaWx0ZXJTdHJpbmcoZmlsdGVyLmZpbHRlclN0cmluZywgdGhpcy5tYXhGaWx0ZXJDcml0ZXJpYSk7XHJcbiAgICByZXR1cm4gZmlsdGVyU3RyaW5nLnRvRmlsdGVyQ3JpdGVyaWEoZmlsdGVyLnJlYWRhYmxlVmFsdWVzKTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZUZpbHRlckNyaXRlcml1bShpbmRleDogbnVtYmVyKXtcclxuICAgIHRoaXMuZmlsdGVyQ3JpdGVyaWEuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgIHRoaXMuZmlsdGVyQ3JpdGVyaWEgPSBbLi4udGhpcy5maWx0ZXJDcml0ZXJpYV07XHJcbiAgICAvLyBGaWx0ZXIgY3JpdGVyaWEgd2FzIHJlbW92ZWQuIEFwcGx5IGZpbHRlciBidXR0b24gc2hvdWxkIGJlIGVuYWJsZWRcclxuICAgIHRoaXMuZmlsdGVyQ3JpdGVyaWFDaGFuZ2VkID0gdHJ1ZTtcclxuICAgIHRoaXMuYWN0aXZhdGVNb2RpZmllZEN1c3RvbUZpbHRlcigpO1xyXG4gIH1cclxuXHJcbiAgc2V0RmlsdGVyQ3JpdGVyaWFTZWxlY3Rpb25Nb2RlKG1vZGU6IEZpbHRlckNyaXRlcmlhU2VsZWN0aW9uTW9kZSkge1xyXG4gICAgY29uc3QgaXNTYW1lTW9kZSA9IHRoaXMuZmlsdGVyQ3JpdGVyaWFTZWxlY3Rpb25Nb2RlJC5nZXRWYWx1ZSgpID09PSBtb2RlO1xyXG4gICAgdGhpcy5maWx0ZXJDcml0ZXJpYVNlbGVjdGlvbk1vZGUkLm5leHQoaXNTYW1lTW9kZSA/IEZpbHRlckNyaXRlcmlhU2VsZWN0aW9uTW9kZS5Ob25lIDogbW9kZSk7XHJcbiAgICB0aGlzLmhhbmRsZVBpcGV0dGVBY3RpdmVTdGF0dXMoIWlzU2FtZU1vZGUpO1xyXG4gIH1cclxuICBcclxuICBhcHBseUZpbHRlckRpc2FibGVkKCkgOiBib29sZWFuIHtcclxuICAgIC8vIEFwcGx5IGZpbHRlciBidXR0b24gc2hvdWxkIGJlIGRpc2FibGVkIHdoZW4gbm8gZmlsdGVyIGNyaXRlcmlhIGFyZSBzZWxlY3RlZFxyXG4gICAgLy8gb3IgZmlsdGVyIGNyaXRlcmlhIHdhcyBhbHJlYWR5IGFwcGxpZWQgYW5kIG5vIG5ldyBjcml0ZXJpYSB3YXMgc2VsZWN0ZWRcclxuICAgIHJldHVybiB0aGlzLmZpbHRlckNyaXRlcmlhLmxlbmd0aCA9PT0gMCB8fCAhIHRoaXMuZmlsdGVyQ3JpdGVyaWFDaGFuZ2VkO1xyXG4gIH1cclxuXHJcbiAgYXBwbHlGaWx0ZXIoKXtcclxuICAgIHRoaXMuaGFuZGxlUGlwZXR0ZUFjdGl2ZVN0YXR1cyhmYWxzZSAvKiBkaXNhYmxlIHBpcGV0dGUgY3Vyc29yICovKTtcclxuICAgIHRoaXMuZmlsdGVyQ3JpdGVyaWFTZWxlY3Rpb25Nb2RlJC5uZXh0KEZpbHRlckNyaXRlcmlhU2VsZWN0aW9uTW9kZS5Ob25lKTtcclxuICAgIHRoaXMuX2ZpbHRlclJlc3VsdCA9IG51bGw7XHJcblxyXG4gICAgLy8gQ3VzdG9tIGZpbHRlciBpcyBzZWxlY3RlZFxyXG4gICAgaWYodGhpcy5hY3RpdmVGaWx0ZXIgJiYgIXRoaXMuYWN0aXZlRmlsdGVyLmlkKXtcclxuICAgICAgdGhpcy5hY3RpdmVGaWx0ZXIuZmlsdGVyU3RyaW5nID0gbmV3IEZpbHRlclN0cmluZygpLmZyb21GaWx0ZXJDcml0ZXJpYSh0aGlzLmZpbHRlckNyaXRlcmlhKTtcclxuICAgIH1cclxuXHJcbiAgICBpZih0aGlzLnNlbGVjdGlvbk9iamVjdCl7XHJcbiAgICAgIHRoaXMuX2FwcGx5U2VsZWN0aW9uT2JqZWN0RmlsdGVyKHRoaXMuYWN0aXZlRmlsdGVyKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGhhbmRsZUZpbHRlclJlc3VsdFNlbGVjdGlvbkNoYW5nZWQoc2VsZWN0aW9uIDogc3RyaW5nW10pe1xyXG4gICAgdGhpcy5maWx0ZXJSZXN1bHRPYmplY3RTZWxlY3Rpb25DaGFuZ2VkLmVtaXQoc2VsZWN0aW9uKTtcclxuICB9XHJcblxyXG4gIGhhbmRsZUZpbHRlclJlc3VsdE9iamVjdERvdWJsZUNsaWNrZWQoc2VsZWN0aW9uIDogc3RyaW5nKXtcclxuICAgIHRoaXMuZmlsdGVyUmVzdWx0T2JqZWN0RG91YmxlQ2xpY2tlZC5lbWl0KHNlbGVjdGlvbik7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVGaWx0ZXJSZXN1bHRPYmplY3RNb3VzZUVudGVyZWQoc2VsZWN0aW9uIDogc3RyaW5nKXtcclxuICAgIHRoaXMuZmlsdGVyUmVzdWx0T2JqZWN0TW91c2VFbnRlcmVkLmVtaXQoc2VsZWN0aW9uKTtcclxuICB9XHJcblxyXG4gIGhhbmRsZUZpbHRlclJlc3VsdE9iamVjdE1vdXNlTGVmdChzZWxlY3Rpb24gOiBzdHJpbmcpe1xyXG4gICAgdGhpcy5maWx0ZXJSZXN1bHRPYmplY3RNb3VzZUxlZnQuZW1pdChzZWxlY3Rpb24pO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlUGlwZXR0ZUFjdGl2ZVN0YXR1cyhzdGF0dXM6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMucGlwZXR0ZUFjdGl2ZVN0YXR1cy5lbWl0KHN0YXR1cyk7XHJcbiAgfVxyXG5cclxuICBmaWx0ZXJDcml0ZXJpYVdhc0NoYW5nZWQoLypmaWx0ZXJDcml0ZXJpYTogRmlsdGVyQ3JpdGVyaXVtW10qLykge1xyXG4gICAgLy8gU29tZSBuZXcgZmlsdGVyIGNyaXRlcmlhIHdhcyBzZWxlY3RlZC4gQXBwbHkgZmlsdGVyIGJ1dHRvbiBzaG91bGQgYmUgZW5hYmxlZFxyXG4gICAgdGhpcy5maWx0ZXJDcml0ZXJpYUNoYW5nZWQgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgYWN0aXZhdGVNb2RpZmllZEN1c3RvbUZpbHRlcigpe1xyXG4gICAgLy8gV2hlbiBleGlzdGluZyBmaWx0ZXIgaXMgY2hhbmdlZCwgQ3VzdG9tIGZpbHRlciB3aWxsIGJlIHNlbGVjdGVkIGFuZCBmaWx0ZXIgc2V0dGluZ3MgbmVlZCB0byBiZSBjbG9uZWQuIE5vdGhpbmcgaXMgZG9uZSB3aGVuIGN1c3RvbSBmaWx0ZXIgaXMgYWxyZWFkeSBhY3RpdmVcclxuICAgIGlmKHRoaXMuYWN0aXZlRmlsdGVyPy5pZCAmJiB0aGlzLmZpbHRlcnMpe1xyXG5cclxuICAgICAgLy8gQ29weSBmaWx0ZXIgc3RyaW5nIGZyb20gY3VycmVudCBjcml0ZXJpYSBzZXR0aW5ncyB0byBjdXN0b20gZmlsdGVyXHJcbiAgICAgIHRoaXMuZmlsdGVyc1swXS5maWx0ZXJTdHJpbmcgPSBuZXcgRmlsdGVyU3RyaW5nKCkuZnJvbUZpbHRlckNyaXRlcmlhKHRoaXMuZmlsdGVyQ3JpdGVyaWEpO1xyXG4gICAgICB0aGlzLmZpbHRlcnNbMF0ucmVhZGFibGVWYWx1ZXMgPSBuZXcgRmlsdGVyU3RyaW5nKCkuZ2V0UmVhZGFibGVWYWx1ZXNGcm9tRmlsdGVyQ3JpdGVyaWEodGhpcy5maWx0ZXJDcml0ZXJpYSk7XHJcblxyXG4gICAgICB0aGlzLmFjdGl2ZUZpbHRlclN1YmplY3QkLm5leHQodGhpcy5maWx0ZXJzWzBdKTtcclxuICAgIH1cclxuICB9XHJcbiAgLy8gI2VuZHJlZ2lvbiBwdWJsaWMgbWV0aG9kc1xyXG5cclxuICAvLyAjcmVnaW9uIHByaXZhdGUgbWV0aG9kc1xyXG4gIHByaXZhdGUgX2FwcGx5U2VsZWN0aW9uT2JqZWN0RmlsdGVyKGFjdGl2ZUZpbHRlciA6IFdlYlNkay5PYmplY3RGaWx0ZXIgfCBudWxsKXtcclxuXHJcbiAgICBpZighdGhpcy5hcGkgfHwgIXRoaXMuc2VsZWN0aW9uT2JqZWN0IHx8ICFhY3RpdmVGaWx0ZXIpe1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zZWxlY3Rpb25PYmplY3Quc2luZ2xlVXNlID0gdHJ1ZTtcclxuICAgIHRoaXMuc2VsZWN0aW9uT2JqZWN0LnNlbGVjdGlvbi5zaW5nbGV1c2UgPSB0cnVlO1xyXG5cclxuICAgIHRoaXMuaXNMb2FkaW5nUmVzdWx0cyA9IHRydWU7XHJcblxyXG4gICAgRmlsdGVyU3RydWN0dXJlRmV0Y2hlci5mZXRjaE9iamVjdEZpbHRlclN0cnVjdHVyZUZyb21TZWxlY3Rpb24odGhpcy5wcm9qZWN0SWQsIGFjdGl2ZUZpbHRlciwgdGhpcy5zZWxlY3Rpb25PYmplY3QsIHRoaXMuYXBpKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAoZmlsdGVyUmVzdWx0KSA9PiB7XHJcbiAgICAgICAgdGhpcy5fZmlsdGVyUmVzdWx0ID0gZmlsdGVyUmVzdWx0O1xyXG4gICAgICAgIHRoaXMuaXNMb2FkaW5nUmVzdWx0cyA9IGZhbHNlO1xyXG4gICAgICAgIC8vIEZldGNoaW5nIG5ldyByZXN1bHRzIGZpbmlzaGVkLiBBcHBseSBmaWx0ZXIgYnV0dG9uIHNob3VsZCBiZSBkaXNhYmxlZFxyXG4gICAgICAgIHRoaXMuZmlsdGVyQ3JpdGVyaWFDaGFuZ2VkID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfc2V0RGVmYXVsdEN1c3RvbUZpbHRlclN0cmluZyhmaWx0ZXI6IFdlYlNkay5PYmplY3RGaWx0ZXIpe1xyXG4gICAgY29uc3QgdHlwZUF0dHJpYklkID0gXCJhMGU4YWUyYy1jODY5LTRlYzMtOTAxOS0yNWQzNzA0YmU3MDdcIjtcclxuICAgIGZpbHRlci5maWx0ZXJTdHJpbmcgPSBgW0ldWyR7dHlwZUF0dHJpYklkfV0uVmFsdWVgO1xyXG4gICAgZmlsdGVyLnJlYWRhYmxlVmFsdWVzID0ge307XHJcbiAgICBmaWx0ZXIucmVhZGFibGVWYWx1ZXNbdHlwZUF0dHJpYklkXSA9IFwiVHlwZVwiOyAvLyBQcm92aWRlIHJlYWRhYmxlIGNyaXRlcml1bSBuYW1lIGZvciB0eXBlXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jcmVhdGVEZWZhdWx0Q3VzdG9tRmlsdGVyKGRpc2NpcGxpbmVJRDogc3RyaW5nKSA6IFdlYlNkay5PYmplY3RGaWx0ZXJ7XHJcblxyXG4gICAgY29uc3QgZmlsdGVyID0ge1xyXG4gICAgICBtb2R1bGU6IFwiMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXHJcbiAgICAgIGNhdGVnb3J5OiBcIlwiLFxyXG4gICAgICBkaXNjaXBsaW5lSUQ6IGRpc2NpcGxpbmVJRCxcclxuICAgICAgbmFtZTogXCJDdXN0b20gZmlsdGVyXCIsXHJcbiAgICAgIGZpbHRlclN0cmluZzogIFwiXCIsXHJcbiAgICAgIGlzRGVmYXVsdDogZmFsc2UsXHJcbiAgICAgIGRpc2FibGVTb3J0QnlNb2RlbHM6IGZhbHNlLFxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuX3NldERlZmF1bHRDdXN0b21GaWx0ZXJTdHJpbmcoZmlsdGVyKTtcclxuICAgIHJldHVybiBmaWx0ZXI7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9hcHBseUN1c3RvbU9yU3RvcmVkRmlsdGVyKCkge1xyXG4gICAgaWYodGhpcy5hY3RpdmVGaWx0ZXIgJiYgdGhpcy5hY3RpdmVGaWx0ZXIuaWQpe1xyXG4gICAgICAvLyBTdG9yZWQgZmlsdGVyIGlzIHNlbGVjdGVkLiBSZXN1bHRzIG11c3QgYmUgYXBwbGllZCBhdXRvbWF0aWNhbGx5LlxyXG4gICAgICB0aGlzLmFwcGx5RmlsdGVyKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBDdXN0b20gZmlsdGVyIGlzIHNlbGVjdGVkLiBQcm9wZXJ0aWVzIG9mIHNlbGVjdGVkIG9iamVjdCBtdXN0IGJlIHNob3duIGFnYWluLlxyXG4gICAgICBpZiAodGhpcy5zZWxlY3RlZE9iamVjdElkKSB7XHJcbiAgICAgICAgdGhpcy5zZXRGaWx0ZXJDcml0ZXJpYVNlbGVjdGlvbk1vZGUoRmlsdGVyQ3JpdGVyaWFTZWxlY3Rpb25Nb2RlLlNlbGVjdE9iamVjdFByb3BlcnRpZXMpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMub2JqZWN0RmlsdGVyUmVzdWx0Py5jbGVhckZpbHRlclJlc3VsdCgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8vICNlbmRyZWdpb24gcHJpdmF0ZSBtZXRob2RzXHJcblxyXG59XHJcbiIsIjxsaWItYmltcGx1cy1zaWRlbmF2LWRyYXdlci1jb250ZW50IFtoZWFkZXJdPVwiJ19PYmplY3QgbmF2aWdhdG9yJyB8IHRyYW5zbGF0ZVwiXHJcbiAgICBbaXNMb2FkaW5nXT1cImlzTG9hZGluZ1Jlc3VsdHNcIlxyXG4gICAgW2xvYWRpbmdTcGlubmVyVGV4dF09XCInX0xvYWRpbmdfRmlsdGVyX1Jlc3VsdHMnIHwgdHJhbnNsYXRlXCJcclxuPlxyXG4gICAgPGRpdiBjbGFzcz1cIm9iamVjdC1uYXZpZ2F0b3ItY29udGVudC1jb250YWluZXJcIj5cclxuICAgICAgICBAaWYoZmlsdGVyVHlwZXMubGVuZ3RoID4gMCl7XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZXNjcmlwdGlvblwiPlxyXG4gICAgICAgICAgICAgICAge3tcIl9TZWxlY3RfYW5fb2JqZWN0X3VzaW5nX09iamVjdF9QaWNrZXJcIiB8IHRyYW5zbGF0ZX19XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwib2JqZWN0LW5hdmlnYXRvci1maWx0ZXJzLXR5cGVcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1zZWxlY3QgZGF0YS10ZXN0PVwib2JqZWN0LW5hdmlnYXRvci1maWx0ZXItdHlwZXMtZHJvcGRvd25cIiBjbGFzcz1cIm9iamVjdC1uYXZpZ2F0b3ItZHJvcGRvd25cIiBbKG5nTW9kZWwpXT1cImFjdGl2ZUZpbHRlclR5cGVcIiBbY2xlYXJhYmxlXT1cImZhbHNlXCIgW3NlYXJjaGFibGVdPVwiZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctb3B0aW9uICpuZ0Zvcj1cImxldCB0eXBlIG9mIGZpbHRlclR5cGVzXCIgW3ZhbHVlXT1cInR5cGVcIj57e3R5cGUubmFtZX19PC9uZy1vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8L25nLXNlbGVjdD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvYmplY3QtbmF2aWdhdG9yLWZpbHRlcnMtbmFtZVwiPlxyXG4gICAgICAgICAgICAgICAgPG5nLXNlbGVjdCBkYXRhLXRlc3Q9XCJvYmplY3QtbmF2aWdhdG9yLWZpbHRlcnMtbmFtZS1kcm9wZG93blwiIGNsYXNzPVwib2JqZWN0LW5hdmlnYXRvci1kcm9wZG93blwiIFsobmdNb2RlbCldPVwiYWN0aXZlRmlsdGVyXCIgIFtjbGVhcmFibGVdPVwiZmFsc2VcIiBbZGlzYWJsZWRdPVwiIWZpbHRlcnNcIiBbc2VhcmNoYWJsZV09XCJmYWxzZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1vcHRpb24gKm5nRm9yPVwibGV0IGZpbHRlciBvZiBmaWx0ZXJzXCIgW3ZhbHVlXT1cImZpbHRlclwiPnt7ZmlsdGVyLm5hbWV9fTwvbmctb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1zZWxlY3Q+XHJcblxyXG4gICAgICAgICAgICAgICAgQGlmKCFoaWRlRmlsdGVyQ29udGV4dE1lbnUpe1xyXG4gICAgICAgICAgICAgICAgICAgIDxsaWItYmltcGx1cy1jb250ZXh0LW1lbnUgY2xhc3M9XCJvYmplY3QtbmF2aWdhdG9yLWZpbHRlcnMtbmFtZS1jb250ZXh0LW1lbnVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtpdGVtc109XCJmaWx0ZXJDb250ZXh0TWVudVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJmaWx0ZXJDb250ZXh0TWVudT8ubGVuZ3RoXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDwvbGliLWJpbXBsdXMtY29udGV4dC1tZW51PlxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8bGliLWV4cGFuc2lvbi1wYW5lbCBjbGFzcz1cIm9iamVjdC1uYXZpZ2F0b3ItZmlsdGVyLWNyaXRlcmlhLXBhbmVsXCI+XHJcbiAgICAgICAgICAgICAgICA8bGliLWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJvYmplY3QtbmF2aWdhdG9yLWZpbHRlci1jcml0ZXJpYS1oZWFkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgXCJfQXNzaWduX09iamVjdHNfU2VsZWN0aW9uX01vZGVcIiB8IHRyYW5zbGF0ZSB9fSAmIzQwO3t7IGZpbHRlckNyaXRlcmlhLmxlbmd0aCB9fS97eyBtYXhGaWx0ZXJDcml0ZXJpYSB9fSYjNDE7XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaWItZXhwYW5zaW9uLXBhbmVsLWhlYWRlci1hY3Rpb25zPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwib2JqZWN0LW5hdmlnYXRvci1waWNrLW9iamVjdC1idXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImZpbHRlckNyaXRlcmlhU2VsZWN0aW9uTW9kZSQuZ2V0VmFsdWUoKSA9PT0gRmlsdGVyQ3JpdGVyaWFTZWxlY3Rpb25Nb2RlLlNlbGVjdE9iamVjdFByb3BlcnRpZXM/ICdhY3RpdmUnIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZXRGaWx0ZXJDcml0ZXJpYVNlbGVjdGlvbk1vZGUoRmlsdGVyQ3JpdGVyaWFTZWxlY3Rpb25Nb2RlLlNlbGVjdE9iamVjdFByb3BlcnRpZXMpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5cHJlc3MpPVwic2V0RmlsdGVyQ3JpdGVyaWFTZWxlY3Rpb25Nb2RlKEZpbHRlckNyaXRlcmlhU2VsZWN0aW9uTW9kZS5TZWxlY3RPYmplY3RQcm9wZXJ0aWVzKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidfT2JqZWN0X1BpY2tlcid8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2xpYi1leHBhbnNpb24tcGFuZWwtaGVhZGVyLWFjdGlvbnM+XHJcbiAgICAgICAgICAgICAgICA8L2xpYi1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItY3JpdGVyaWEtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICBAZm9yIChjcml0ZXJpdW0gb2YgZmlsdGVyQ3JpdGVyaWE7IHRyYWNrIGNyaXRlcml1bTsgbGV0ICBpID0gJGluZGV4KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPGFwcC1maWx0ZXItY3JpdGVyaXVtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjcml0ZXJpdW1dID0gXCJjcml0ZXJpdW1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5kZW50XT1cImkqMC44XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGRlbGV0ZUNyaXRlcml1bSk9XCJkZWxldGVGaWx0ZXJDcml0ZXJpdW0oaSlcIlxyXG4gICAgICAgICAgICAgICAgICAgID48L2FwcC1maWx0ZXItY3JpdGVyaXVtPlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbGliLWV4cGFuc2lvbi1wYW5lbD5cclxuXHJcbiAgICAgICAgICAgIEBzd2l0Y2goZmlsdGVyQ3JpdGVyaWFTZWxlY3Rpb25Nb2RlJC5nZXRWYWx1ZSgpKXtcclxuICAgICAgICAgICAgICAgIEBjYXNlKEZpbHRlckNyaXRlcmlhU2VsZWN0aW9uTW9kZS5TZWxlY3RPYmplY3RQcm9wZXJ0aWVzKXtcclxuICAgICAgICAgICAgICAgICAgICBAaWYoIXNlbGVjdGVkT2JqZWN0SWQpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBpZD1cIk5vT2JqZWN0U2VsZWN0ZWRcIj57eyBcIl9Ob09iamVjdFNlbGVjdGVkXCIgfCB0cmFuc2xhdGV9fTwvcD5cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvYmplY3QtbmF2aWdhdG9yLWFwcGx5LWJ1dHRvbi1yb3dcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJwcmltYXJ5LWJ1dHRvblwiIFxyXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJhcHBseUZpbHRlckRpc2FibGVkKClcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJhcHBseUZpbHRlckRpc2FibGVkKClcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhcHBseUZpbHRlcigpXCJcclxuICAgICAgICAgICAgICAgID4gXHJcbiAgICAgICAgICAgICAgICAgICAge3tcIl9BcHBseSBmaWx0ZXJcIiB8IHRyYW5zbGF0ZX19XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwib2JqZWN0LW5hdmlnYXRvci1zZXBhcmF0b3JcIj48L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIEBzd2l0Y2goZmlsdGVyQ3JpdGVyaWFTZWxlY3Rpb25Nb2RlJC5nZXRWYWx1ZSgpKXtcclxuICAgICAgICAgICAgICAgIEBjYXNlKEZpbHRlckNyaXRlcmlhU2VsZWN0aW9uTW9kZS5TZWxlY3RPYmplY3RQcm9wZXJ0aWVzKXtcclxuICAgICAgICAgICAgICAgICAgICBAaWYoc2VsZWN0ZWRPYmplY3RJZCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzY3JvbGxhYmxlLWNvbnRlbnQtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1iaW1wbHVzLXNjcm9sbGFibGUtY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1jcml0ZXJpYS1zZWxlY3Qtb2JqZWN0LXByb3BlcnRpZXNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FwaV09XCJhcGlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VsZWN0ZWRMYW5ndWFnZV09XCJzZWxlY3RlZExhbmd1YWdlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xvY2FsaXplZFN0cmluZ3NdPVwibG9jYWxpemVkU3RyaW5nc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsoZmlsdGVyQ3JpdGVyaWEpXT1cImZpbHRlckNyaXRlcmlhXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Jvb3RPYmplY3RJZF09XCJzZWxlY3RlZE9iamVjdElkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JldmlzaW9uXT1cInNlbGVjdGVkUmV2aXNpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZmlsdGVyQ3JpdGVyaWFDaGFuZ2UpPVwiZmlsdGVyQ3JpdGVyaWFXYXNDaGFuZ2VkKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saWItY3JpdGVyaWEtc2VsZWN0LW9iamVjdC1wcm9wZXJ0aWVzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGliLWJpbXBsdXMtc2Nyb2xsYWJsZS1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIEBjYXNlKEZpbHRlckNyaXRlcmlhU2VsZWN0aW9uTW9kZS5TZWxlY3RBdHRyaWJ1dGVzKXtcclxuXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBAZGVmYXVsdHtcclxuICAgICAgICAgICAgICAgICAgICBAaWYgKGZpbHRlclJlc3VsdCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2Nyb2xsYWJsZS1jb250ZW50LWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1iaW1wbHVzLXNjcm9sbGFibGUtY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaWItb2JqZWN0LWZpbHRlci1yZXN1bHRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZpbHRlclJlc3VsdF09XCJmaWx0ZXJSZXN1bHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VsZWN0ZWRPYmplY3RzXT1cInNlbGVjdGVkT2JqZWN0c1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub2RlU2VsZWN0aW9uQ2hhbmdlZCk9XCJoYW5kbGVGaWx0ZXJSZXN1bHRTZWxlY3Rpb25DaGFuZ2VkKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9kZURvdWJsZUNsaWNrZWQpPVwiaGFuZGxlRmlsdGVyUmVzdWx0T2JqZWN0RG91YmxlQ2xpY2tlZCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vZGVNb3VzZUVudGVyZWQpPVwiaGFuZGxlRmlsdGVyUmVzdWx0T2JqZWN0TW91c2VFbnRlcmVkKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9kZU1vdXNlTGVmdCk9XCJoYW5kbGVGaWx0ZXJSZXN1bHRPYmplY3RNb3VzZUxlZnQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvbGliLW9iamVjdC1maWx0ZXItcmVzdWx0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saWItYmltcGx1cy1zY3JvbGxhYmxlLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEBlbHNlIHtcclxuICAgICAgICAgICAgPGRpdiBkYXRhLXRlc3Q9XCJvYmplY3QtbmF2aWdhdG9yLW5vLWZpbHRlci10eXBlcy1tZXNzYWdlXCIgY2xhc3M9XCJvYmplY3QtbmF2aWdhdG9yLW5vLWZpbHRlci10eXBlc1wiPiB7e1wiX05vX3Zpc2libGVfbW9kZWxzX2ZvdW5kXCIgfCB0cmFuc2xhdGV9fSA8L2Rpdj5cclxuICAgICAgICB9XHJcbiAgICA8L2Rpdj5cclxuPC9saWItYmltcGx1cy1zaWRlbmF2LWRyYXdlci1jb250ZW50PlxyXG4iXX0=
308
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmltcGx1cy1vYmplY3QtbmF2aWdhdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1iaW1wbHVzLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2JpbXBsdXMtb2JqZWN0LW5hdmlnYXRvci9iaW1wbHVzLW9iamVjdC1uYXZpZ2F0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWJpbXBsdXMtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvYmltcGx1cy1vYmplY3QtbmF2aWdhdG9yL2JpbXBsdXMtb2JqZWN0LW5hdmlnYXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRyxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0gsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsMkJBQTJCLEVBQStCLGlCQUFpQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDbkksT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDekYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFFdkYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxvQ0FBb0MsRUFBRSxNQUFNLDRFQUE0RSxDQUFDO0FBQ2xJLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLDREQUE0RCxDQUFD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QkF1Q04sT0FBTztzQkFETixLQUFLO2dCQVFOLEdBQUc7c0JBREYsS0FBSztnQkFJTixTQUFTO3NCQURSLEtBQUs7Z0JBR2lDLGdCQUFnQjtzQkFBdEQsV0FBVzt1QkFBQyx3QkFBd0I7Z0JBS3JDLGtDQUFrQztzQkFEakMsTUFBTTtnQkFJUCxnQkFBZ0I7c0JBRGYsS0FBSztnQkFJTixnQkFBZ0I7c0JBRGYsS0FBSztnQkFJTixlQUFlO3NCQURkLEtBQUs7Z0JBSU4sZUFBZTtzQkFEZCxLQUFLO2dCQVFOLGtDQUFrQztzQkFEakMsTUFBTTtnQkFJUCwrQkFBK0I7c0JBRDlCLE1BQU07Z0JBSVAsOEJBQThCO3NCQUQ3QixNQUFNO2dCQUlQLDJCQUEyQjtzQkFEMUIsTUFBTTtnQkFJUCxtQkFBbUI7c0JBRGxCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIElucHV0LCBPbkluaXQsIE91dHB1dCwgIFZpZXdDaGlsZCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCAqIGFzIFdlYlNkayBmcm9tICdiaW1wbHVzLXdlYnNkayc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCAsZnJvbSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEZpbHRlckNyaXRlcmlhU2VsZWN0aW9uTW9kZSwgRmlsdGVyQ3JpdGVyaXVtLCBGaWx0ZXJUeXBlLCBNYXhGaWx0ZXJDcml0ZXJpYSB9IGZyb20gJy4vYmltcGx1cy1vYmplY3QtbmF2aWdhdG9yLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IEZpbHRlckNyaXRlcml1bUNvbXBvbmVudCB9IGZyb20gJy4vZmlsdGVyLWNyaXRlcml1bS9maWx0ZXItY3JpdGVyaXVtLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEV4cGFuc2lvblBhbmVsQ29tcG9uZW50IH0gZnJvbSAnLi4vZXhwYW5zaW9uLXBhbmVsL2V4cGFuc2lvbi1wYW5lbC5jb21wb25lbnQnO1xyXG5cclxuaW1wb3J0IHsgTmdTZWxlY3RNb2R1bGUgfSBmcm9tICdAbmctc2VsZWN0L25nLXNlbGVjdCc7XHJcbmltcG9ydCB7IEJpbXBsdXNTaWRlbmF2RHJhd2VyQ29udGVudENvbXBvbmVudCB9IGZyb20gJy4uL2JpbXBsdXMtc2lkZW5hdi1kcmF3ZXItY29udGVudC9iaW1wbHVzLXNpZGVuYXYtZHJhd2VyLWNvbnRlbnQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRXhwYW5zaW9uUGFuZWxIZWFkZXJDb21wb25lbnQgfSBmcm9tICcuLi9leHBhbnNpb24tcGFuZWwtaGVhZGVyL2V4cGFuc2lvbi1wYW5lbC1oZWFkZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRXhwYW5zaW9uUGFuZWxIZWFkZXJBY3Rpb25zQ29tcG9uZW50IH0gZnJvbSAnLi4vZXhwYW5zaW9uLXBhbmVsLWhlYWRlci1hY3Rpb25zL2V4cGFuc2lvbi1wYW5lbC1oZWFkZXItYWN0aW9ucy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBCaW1wbHVzTG9jYWxpemVkV2lkZ2V0Q29tcG9uZW50IH0gZnJvbSAnLi4vYmltcGx1cy1sb2NhbGl6ZWQtd2lkZ2V0L2JpbXBsdXMtbG9jYWxpemVkLXdpZGdldC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUsIFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHsgQ3JpdGVyaWFTZWxlY3RPYmplY3RQcm9wZXJ0aWVzQ29tcG9uZW50IH0gZnJvbSAnLi9jcml0ZXJpYS1zZWxlY3Qtb2JqZWN0LXByb3BlcnRpZXMvY3JpdGVyaWEtc2VsZWN0LW9iamVjdC1wcm9wZXJ0aWVzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE9iamVjdEZpbHRlclJlc3VsdENvbXBvbmVudCB9IGZyb20gJy4vb2JqZWN0LWZpbHRlci1yZXN1bHQvb2JqZWN0LWZpbHRlci1yZXN1bHQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQmltcGx1c0NvbnRleHRNZW51Q29tcG9uZW50IH0gZnJvbSAgJy4uL2JpbXBsdXMtY29udGV4dC1tZW51L2JpbXBsdXMtY29udGV4dC1tZW51LmNvbXBvbmVudCdcclxuaW1wb3J0IHsgQmltcGx1c0NvbnRleHRNZW51SXRlbSB9IGZyb20gJy4uL2JpbXBsdXMtY29udGV4dC1tZW51L2JpbXBsdXMtY29udGV4dC1tZW51LmludGVyZmFjZSc7XHJcbmltcG9ydCB7IEZpbHRlclN0cmluZyB9IGZyb20gJy4uLy4uL3V0aWxzL2ZpbHRlclN0cmluZyc7XHJcbmltcG9ydCB7IEZpbHRlclN0cnVjdHVyZUZldGNoZXIgfSBmcm9tICcuLi8uLi91dGlscy9maWx0ZXJTdHJ1Y3R1cmVGZXRjaGVyJztcclxuaW1wb3J0IHsgQmltcGx1c1Njcm9sbGFibGVDb250YWluZXJDb21wb25lbnQgfSBmcm9tICcuLi9iaW1wbHVzLXNjcm9sbGFibGUtY29udGFpbmVyL2JpbXBsdXMtc2Nyb2xsYWJsZS1jb250YWluZXIuY29tcG9uZW50J1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItYmltcGx1cy1vYmplY3QtbmF2aWdhdG9yJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFsgQ29tbW9uTW9kdWxlXHJcbiAgICAsIEZvcm1zTW9kdWxlXHJcbiAgICAsIE5nU2VsZWN0TW9kdWxlXHJcbiAgICAsIEZpbHRlckNyaXRlcml1bUNvbXBvbmVudFxyXG4gICAgLCBFeHBhbnNpb25QYW5lbENvbXBvbmVudFxyXG4gICAgLCBFeHBhbnNpb25QYW5lbEhlYWRlckNvbXBvbmVudFxyXG4gICAgLCBFeHBhbnNpb25QYW5lbEhlYWRlckFjdGlvbnNDb21wb25lbnRcclxuICAgICwgQmltcGx1c1NpZGVuYXZEcmF3ZXJDb250ZW50Q29tcG9uZW50XHJcbiAgICAsIFRyYW5zbGF0ZU1vZHVsZVxyXG4gICAgLCBDcml0ZXJpYVNlbGVjdE9iamVjdFByb3BlcnRpZXNDb21wb25lbnRcclxuICAgICwgQmltcGx1c0NvbnRleHRNZW51Q29tcG9uZW50XHJcbiAgICAsIE9iamVjdEZpbHRlclJlc3VsdENvbXBvbmVudFxyXG4gICAgLCBCaW1wbHVzU2Nyb2xsYWJsZUNvbnRhaW5lckNvbXBvbmVudFxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2JpbXBsdXMtb2JqZWN0LW5hdmlnYXRvci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2JpbXBsdXMtb2JqZWN0LW5hdmlnYXRvci5jb21wb25lbnQubGVzcycsXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uU2hhZG93RG9tXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBCaW1wbHVzT2JqZWN0TmF2aWdhdG9yQ29tcG9uZW50IGV4dGVuZHMgQmltcGx1c0xvY2FsaXplZFdpZGdldENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHRyYW5zbGF0ZVNlcnZpY2U6ICBUcmFuc2xhdGVTZXJ2aWNlKXtcclxuICAgIHN1cGVyKHRyYW5zbGF0ZVNlcnZpY2UpXHJcbiAgfVxyXG5cclxuICAvLyAjcmVnaW9uIHB1YmxpYyBmaWVsZHNcclxuICBAVmlld0NoaWxkKE9iamVjdEZpbHRlclJlc3VsdENvbXBvbmVudCkgb2JqZWN0RmlsdGVyUmVzdWx0OiBPYmplY3RGaWx0ZXJSZXN1bHRDb21wb25lbnQgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgQElucHV0KClcclxuICBoaWRlRmlsdGVyQ29udGV4dE1lbnU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICBmaWx0ZXJDb250ZXh0TWVudTogQXJyYXk8QmltcGx1c0NvbnRleHRNZW51SXRlbT4gPSBbXTtcclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgZmlsdGVyVHlwZXModHlwZXMgOiBBcnJheTxGaWx0ZXJUeXBlPil7XHJcbiAgICB0aGlzLl9maWx0ZXJUeXBlcyA9IHR5cGVzO1xyXG4gICAgaWYodGhpcy5fZmlsdGVyVHlwZXMubGVuZ3RoID4wKVxyXG4gICAgICB0aGlzLmFjdGl2ZUZpbHRlclR5cGUgPSB0aGlzLl9maWx0ZXJUeXBlc1swXTtcclxuICB9XHJcblxyXG4gIGdldCBmaWx0ZXJUeXBlcygpOkFycmF5PEZpbHRlclR5cGU+e1xyXG4gICAgcmV0dXJuIHRoaXMuX2ZpbHRlclR5cGVzO1xyXG4gIH1cclxuXHJcbiAgc2V0IGFjdGl2ZUZpbHRlclR5cGUodmFsdWUgOiBGaWx0ZXJUeXBlIHwgbnVsbCl7XHJcbiAgICB0aGlzLmFjdGl2ZUZpbHRlclR5cGVTdWJqZWN0JC5uZXh0KHZhbHVlKTtcclxuICB9XHJcblxyXG4gIGdldCBhY3RpdmVGaWx0ZXJUeXBlKCkgOiBGaWx0ZXJUeXBlIHwgbnVsbHtcclxuICAgIHJldHVybiB0aGlzLmFjdGl2ZUZpbHRlclR5cGVTdWJqZWN0JC5nZXRWYWx1ZSgpO1xyXG4gIH1cclxuXHJcbiAgYWN0aXZlRmlsdGVyVHlwZVN1YmplY3QkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxGaWx0ZXJUeXBlIHwgbnVsbD4gKG51bGwpO1xyXG4gIGFjdGl2ZUZpbHRlclN1YmplY3QkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxXZWJTZGsuT2JqZWN0RmlsdGVyIHwgbnVsbD4gKG51bGwpO1xyXG5cclxuICBzZXQgYWN0aXZlRmlsdGVyKGZpbHRlciA6IFdlYlNkay5PYmplY3RGaWx0ZXIgfCBudWxsKXtcclxuXHJcbiAgICAvLyBOZXcgYWN0aXZlIGZpbHRlciBpcyBzZWxlY3RlZC4gQXBwbHkgZmlsdGVyIGJ1dHRvbiBzaG91bGQgYmUgZW5hYmxlZFxyXG4gICAgdGhpcy5maWx0ZXJDcml0ZXJpYUNoYW5nZWQgPSB0cnVlO1xyXG5cclxuICAgIGlmKGZpbHRlciAmJiAhZmlsdGVyLmlkKXsgLy8gU3dpdGNoaW5nIHRvIGN1c3RvbSBmaWx0ZXIgd2lsbCByZXN0b3JlIHRoZSBkZWZhdWx0IGN1c3RvbSBmaWx0ZXJcclxuICAgICAgdGhpcy5fc2V0RGVmYXVsdEN1c3RvbUZpbHRlclN0cmluZyhmaWx0ZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuYWN0aXZlRmlsdGVyU3ViamVjdCQubmV4dChmaWx0ZXIpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGFjdGl2ZUZpbHRlcigpIDogV2ViU2RrLk9iamVjdEZpbHRlciB8IG51bGx7XHJcbiAgICByZXR1cm4gdGhpcy5hY3RpdmVGaWx0ZXJTdWJqZWN0JC5nZXRWYWx1ZSgpO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBmaWx0ZXJzIDogV2ViU2RrLk9iamVjdEZpbHRlcnNSZXNwb25zZSB8IG51bGwgPSBudWxsO1xyXG5cclxuICBmaWx0ZXJDcml0ZXJpYSA6IEZpbHRlckNyaXRlcml1bVtdID0gW11cclxuICBmaWx0ZXJDcml0ZXJpYUNoYW5nZWQgOiBib29sZWFuID0gZmFsc2U7XHJcbiAgbWF4RmlsdGVyQ3JpdGVyaWE6IG51bWJlciA9IE1heEZpbHRlckNyaXRlcmlhO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGFwaSA6IFdlYlNkay5BcGkgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgQElucHV0KClcclxuICBwcm9qZWN0SWQgOiBzdHJpbmcgPSAnJ1xyXG5cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLm9iamVjdC1uYXZpZ2F0b3InKSBvYmpOYXZDbGFzc0NsYXNzOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgZmlsdGVyQ3JpdGVyaWFTZWxlY3Rpb25Nb2RlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RmlsdGVyQ3JpdGVyaWFTZWxlY3Rpb25Nb2RlPihGaWx0ZXJDcml0ZXJpYVNlbGVjdGlvbk1vZGUuTm9uZSk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIGZpbHRlckNyaXRlcmlhU2VsZWN0aW9uTW9kZUNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEZpbHRlckNyaXRlcmlhU2VsZWN0aW9uTW9kZT4oKTtcclxuXHJcbiAgQElucHV0KClcclxuICBzZWxlY3RlZE9iamVjdElkIDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2VsZWN0ZWRSZXZpc2lvbiA6IG51bWJlciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcclxuXHJcbiAgQElucHV0KClcclxuICBzZWxlY3RlZE9iamVjdHMgOiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNlbGVjdGlvbk9iamVjdCA6IFdlYlNkay5FeHBvcnRPYmplY3QgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgZ2V0IGZpbHRlclJlc3VsdCgpe1xyXG4gICAgcmV0dXJuIHRoaXMuX2ZpbHRlclJlc3VsdDtcclxuICB9XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIGZpbHRlclJlc3VsdE9iamVjdFNlbGVjdGlvbkNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZ1tdPigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBmaWx0ZXJSZXN1bHRPYmplY3REb3VibGVDbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIGZpbHRlclJlc3VsdE9iamVjdE1vdXNlRW50ZXJlZCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBmaWx0ZXJSZXN1bHRPYmplY3RNb3VzZUxlZnQgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcGlwZXR0ZUFjdGl2ZVN0YXR1cyA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuXHJcbiAgRmlsdGVyQ3JpdGVyaWFTZWxlY3Rpb25Nb2RlID0gRmlsdGVyQ3JpdGVyaWFTZWxlY3Rpb25Nb2RlOyAvLyBFeHBvc2UgZW51bSB0byB0ZW1wbGF0ZVxyXG5cclxuICBwdWJsaWMgaXNMb2FkaW5nUmVzdWx0cyA9IGZhbHNlO1xyXG5cclxuICBwdWJsaWMgZmlsdGVyUmVzdWx0SW52YWxpZGF0ZWQgPSBmYWxzZTtcclxuICAvLyAjZW5kcmVnaW9uIHB1YmxpYyBmaWVsZHNcclxuXHJcbiAgLy8gI3JlZ2lvbiBwcml2YXRlIGZpZWxkc1xyXG4gIHByaXZhdGUgX2ZpbHRlclJlc3VsdCA6IFdlYlNkay5PYmplY3RGaWx0ZXJTdHJ1Y3R1cmVSZXNwb25zZSB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgX2ZpbHRlclR5cGVzIDogQXJyYXk8RmlsdGVyVHlwZT4gPSBbXTtcclxuICAvLyAjZW5kcmVnaW9uIHByaXZhdGUgZmllbGRzXHJcblxyXG4gIC8vICNyZWdpb24gcHVibGljIG1ldGhvZHNcclxuICBuZ09uSW5pdCgpIHtcclxuXHJcbiAgICB0aGlzLmFjdGl2ZUZpbHRlclR5cGVTdWJqZWN0JC5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAodikgPT4ge1xyXG4gICAgICAgIGlmKCF0aGlzLnByb2plY3RJZCB8fCAhdGhpcy5hcGkgfHwgIXYpe1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuX2ZpbHRlclJlc3VsdCkge1xyXG4gICAgICAgICAgLy8gRmlsdGVyIHJlc3VsdHMgYXJlIGF2YWlsYWJsZSBhbmQgdmlzaWJpbGl0eSBvZiBtb2RlbC9sYXllciB3YXMgY2hhbmdlZFxyXG4gICAgICAgICAgLy8gSW52YWxpZGF0ZSBmaWx0ZXIgcmVzdWx0cyA9PiBzaG93IG92ZXJsYXkgaW5mbyBkYWlsb2dcclxuICAgICAgICAgIHRoaXMuZmlsdGVyUmVzdWx0SW52YWxpZGF0ZWQgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5hY3RpdmVGaWx0ZXIgPSBudWxsO1xyXG5cclxuICAgICAgICB0aGlzLmxvYWRDdXJyZW50TGF5ZXJGaWx0ZXJzKHRoaXMucHJvamVjdElkLCB2LmlkKT8uc3Vic2NyaWJlKHtcclxuICAgICAgICAgICAgbmV4dDogKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5maWx0ZXJzID0gW3RoaXMuX2NyZWF0ZURlZmF1bHRDdXN0b21GaWx0ZXIodi5pZCksIC4uLnZhbHVlXTtcclxuICAgICAgICAgICAgICB0aGlzLmFjdGl2ZUZpbHRlciA9IHRoaXMuZmlsdGVyc1swXTtcclxuICAgICAgICAgICAgICB0aGlzLl9hcHBseUN1c3RvbU9yU3RvcmVkRmlsdGVyKCk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGVycm9yOiBlcnIgPT4ge3Rocm93IG5ldyBFcnJvciAoZXJyKX0sXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKX1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWN0aXZlRmlsdGVyU3ViamVjdCQuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHYpID0+IHtcclxuICAgICAgICBpZighdilcclxuICAgICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgICAgdGhpcy5maWx0ZXJDcml0ZXJpYSA9IHRoaXMucGFyc2VGaWx0ZXJTdHJpbmcodik7XHJcbiAgICAgICAgdGhpcy5fYXBwbHlDdXN0b21PclN0b3JlZEZpbHRlcigpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmZpbHRlckNyaXRlcmlhU2VsZWN0aW9uTW9kZSQuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHYpID0+IHtcclxuICAgICAgICB0aGlzLmZpbHRlckNyaXRlcmlhU2VsZWN0aW9uTW9kZUNoYW5nZWQuZW1pdCh2KVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG5cclxuICAgIGlmKCB0aGlzLmZpbHRlclR5cGVzLmxlbmd0aCA+IDApe1xyXG4gICAgICB0aGlzLmFjdGl2ZUZpbHRlclR5cGUgPSB0aGlzLmZpbHRlclR5cGVzWzBdO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbG9hZEN1cnJlbnRMYXllckZpbHRlcnMocHJvamVjdElkIDogc3RyaW5nLCBsYXllcklkIDogc3RyaW5nKXtcclxuICAgIGlmKCF0aGlzLmFwaSl7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHJldHVybiBmcm9tKHRoaXMuYXBpLm9iamVjdEZpbHRlcnMuZ2V0KGxheWVySWQscHJvamVjdElkKSk7XHJcbiAgfVxyXG5cclxuICBwYXJzZUZpbHRlclN0cmluZyhmaWx0ZXIgOiBXZWJTZGsuT2JqZWN0RmlsdGVyKXtcclxuICAgIGNvbnN0IGZpbHRlclN0cmluZyA9IG5ldyBGaWx0ZXJTdHJpbmcoZmlsdGVyLmZpbHRlclN0cmluZywgdGhpcy5tYXhGaWx0ZXJDcml0ZXJpYSk7XHJcbiAgICByZXR1cm4gZmlsdGVyU3RyaW5nLnRvRmlsdGVyQ3JpdGVyaWEoZmlsdGVyLnJlYWRhYmxlVmFsdWVzKTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZUZpbHRlckNyaXRlcml1bShpbmRleDogbnVtYmVyKXtcclxuICAgIHRoaXMuZmlsdGVyQ3JpdGVyaWEuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgIHRoaXMuZmlsdGVyQ3JpdGVyaWEgPSBbLi4udGhpcy5maWx0ZXJDcml0ZXJpYV07XHJcbiAgICAvLyBGaWx0ZXIgY3JpdGVyaWEgd2FzIHJlbW92ZWQuIEFwcGx5IGZpbHRlciBidXR0b24gc2hvdWxkIGJlIGVuYWJsZWRcclxuICAgIHRoaXMuZmlsdGVyQ3JpdGVyaWFDaGFuZ2VkID0gdHJ1ZTtcclxuICAgIHRoaXMuYWN0aXZhdGVNb2RpZmllZEN1c3RvbUZpbHRlcigpO1xyXG4gIH1cclxuXHJcbiAgc2V0RmlsdGVyQ3JpdGVyaWFTZWxlY3Rpb25Nb2RlKG1vZGU6IEZpbHRlckNyaXRlcmlhU2VsZWN0aW9uTW9kZSkge1xyXG4gICAgY29uc3QgaXNTYW1lTW9kZSA9IHRoaXMuZmlsdGVyQ3JpdGVyaWFTZWxlY3Rpb25Nb2RlJC5nZXRWYWx1ZSgpID09PSBtb2RlO1xyXG4gICAgdGhpcy5maWx0ZXJDcml0ZXJpYVNlbGVjdGlvbk1vZGUkLm5leHQoaXNTYW1lTW9kZSA/IEZpbHRlckNyaXRlcmlhU2VsZWN0aW9uTW9kZS5Ob25lIDogbW9kZSk7XHJcbiAgICB0aGlzLmhhbmRsZVBpcGV0dGVBY3RpdmVTdGF0dXMoIWlzU2FtZU1vZGUpO1xyXG4gIH1cclxuICBcclxuICBhcHBseUZpbHRlckRpc2FibGVkKCkgOiBib29sZWFuIHtcclxuICAgIC8vIEFwcGx5IGZpbHRlciBidXR0b24gc2hvdWxkIGJlIGRpc2FibGVkIHdoZW4gbm8gZmlsdGVyIGNyaXRlcmlhIGFyZSBzZWxlY3RlZFxyXG4gICAgLy8gb3IgZmlsdGVyIGNyaXRlcmlhIHdhcyBhbHJlYWR5IGFwcGxpZWQgYW5kIG5vIG5ldyBjcml0ZXJpYSB3YXMgc2VsZWN0ZWRcclxuICAgIHJldHVybiB0aGlzLmZpbHRlckNyaXRlcmlhLmxlbmd0aCA9PT0gMCB8fCAhIHRoaXMuZmlsdGVyQ3JpdGVyaWFDaGFuZ2VkO1xyXG4gIH1cclxuXHJcbiAgYXBwbHlGaWx0ZXIoKXtcclxuICAgIHRoaXMuaGFuZGxlUGlwZXR0ZUFjdGl2ZVN0YXR1cyhmYWxzZSAvKiBkaXNhYmxlIHBpcGV0dGUgY3Vyc29yICovKTtcclxuICAgIHRoaXMuZmlsdGVyQ3JpdGVyaWFTZWxlY3Rpb25Nb2RlJC5uZXh0KEZpbHRlckNyaXRlcmlhU2VsZWN0aW9uTW9kZS5Ob25lKTtcclxuICAgIHRoaXMuX2ZpbHRlclJlc3VsdCA9IG51bGw7XHJcbiAgICAvLyBGaWx0ZXIgcmVzdWx0cyB3aWxsIGJlIHVwZGF0ZWQgYWdhaW4sIHNvIHRoZXkgYXJlIG5vIGxvbmdlciBpbnZhbGlkXHJcbiAgICB0aGlzLmZpbHRlclJlc3VsdEludmFsaWRhdGVkID0gZmFsc2U7XHJcblxyXG4gICAgLy8gQ3VzdG9tIGZpbHRlciBpcyBzZWxlY3RlZFxyXG4gICAgaWYodGhpcy5hY3RpdmVGaWx0ZXIgJiYgIXRoaXMuYWN0aXZlRmlsdGVyLmlkKXtcclxuICAgICAgdGhpcy5hY3RpdmVGaWx0ZXIuZmlsdGVyU3RyaW5nID0gbmV3IEZpbHRlclN0cmluZygpLmZyb21GaWx0ZXJDcml0ZXJpYSh0aGlzLmZpbHRlckNyaXRlcmlhKTtcclxuICAgIH1cclxuXHJcbiAgICBpZih0aGlzLnNlbGVjdGlvbk9iamVjdCl7XHJcbiAgICAgIHRoaXMuX2FwcGx5U2VsZWN0aW9uT2JqZWN0RmlsdGVyKHRoaXMuYWN0aXZlRmlsdGVyKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGhhbmRsZUZpbHRlclJlc3VsdFNlbGVjdGlvbkNoYW5nZWQoc2VsZWN0aW9uIDogc3RyaW5nW10pe1xyXG4gICAgdGhpcy5maWx0ZXJSZXN1bHRPYmplY3RTZWxlY3Rpb25DaGFuZ2VkLmVtaXQoc2VsZWN0aW9uKTtcclxuICB9XHJcblxyXG4gIGhhbmRsZUZpbHRlclJlc3VsdE9iamVjdERvdWJsZUNsaWNrZWQoc2VsZWN0aW9uIDogc3RyaW5nKXtcclxuICAgIHRoaXMuZmlsdGVyUmVzdWx0T2JqZWN0RG91YmxlQ2xpY2tlZC5lbWl0KHNlbGVjdGlvbik7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVGaWx0ZXJSZXN1bHRPYmplY3RNb3VzZUVudGVyZWQoc2VsZWN0aW9uIDogc3RyaW5nKXtcclxuICAgIHRoaXMuZmlsdGVyUmVzdWx0T2JqZWN0TW91c2VFbnRlcmVkLmVtaXQoc2VsZWN0aW9uKTtcclxuICB9XHJcblxyXG4gIGhhbmRsZUZpbHRlclJlc3VsdE9iamVjdE1vdXNlTGVmdChzZWxlY3Rpb24gOiBzdHJpbmcpe1xyXG4gICAgdGhpcy5maWx0ZXJSZXN1bHRPYmplY3RNb3VzZUxlZnQuZW1pdChzZWxlY3Rpb24pO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlUGlwZXR0ZUFjdGl2ZVN0YXR1cyhzdGF0dXM6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMucGlwZXR0ZUFjdGl2ZVN0YXR1cy5lbWl0KHN0YXR1cyk7XHJcbiAgfVxyXG5cclxuICBmaWx0ZXJDcml0ZXJpYVdhc0NoYW5nZWQoLypmaWx0ZXJDcml0ZXJpYTogRmlsdGVyQ3JpdGVyaXVtW10qLykge1xyXG4gICAgLy8gU29tZSBuZXcgZmlsdGVyIGNyaXRlcmlhIHdhcyBzZWxlY3RlZC4gQXBwbHkgZmlsdGVyIGJ1dHRvbiBzaG91bGQgYmUgZW5hYmxlZFxyXG4gICAgdGhpcy5maWx0ZXJDcml0ZXJpYUNoYW5nZWQgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgYWN0aXZhdGVNb2RpZmllZEN1c3RvbUZpbHRlcigpe1xyXG4gICAgLy8gV2hlbiBleGlzdGluZyBmaWx0ZXIgaXMgY2hhbmdlZCwgQ3VzdG9tIGZpbHRlciB3aWxsIGJlIHNlbGVjdGVkIGFuZCBmaWx0ZXIgc2V0dGluZ3MgbmVlZCB0byBiZSBjbG9uZWQuIE5vdGhpbmcgaXMgZG9uZSB3aGVuIGN1c3RvbSBmaWx0ZXIgaXMgYWxyZWFkeSBhY3RpdmVcclxuICAgIGlmKHRoaXMuYWN0aXZlRmlsdGVyPy5pZCAmJiB0aGlzLmZpbHRlcnMpe1xyXG5cclxuICAgICAgLy8gQ29weSBmaWx0ZXIgc3RyaW5nIGZyb20gY3VycmVudCBjcml0ZXJpYSBzZXR0aW5ncyB0byBjdXN0b20gZmlsdGVyXHJcbiAgICAgIHRoaXMuZmlsdGVyc1swXS5maWx0ZXJTdHJpbmcgPSBuZXcgRmlsdGVyU3RyaW5nKCkuZnJvbUZpbHRlckNyaXRlcmlhKHRoaXMuZmlsdGVyQ3JpdGVyaWEpO1xyXG4gICAgICB0aGlzLmZpbHRlcnNbMF0ucmVhZGFibGVWYWx1ZXMgPSBuZXcgRmlsdGVyU3RyaW5nKCkuZ2V0UmVhZGFibGVWYWx1ZXNGcm9tRmlsdGVyQ3JpdGVyaWEodGhpcy5maWx0ZXJDcml0ZXJpYSk7XHJcblxyXG4gICAgICB0aGlzLmFjdGl2ZUZpbHRlclN1YmplY3QkLm5leHQodGhpcy5maWx0ZXJzWzBdKTtcclxuICAgIH1cclxuICB9XHJcbiAgLy8gI2VuZHJlZ2lvbiBwdWJsaWMgbWV0aG9kc1xyXG5cclxuICAvLyAjcmVnaW9uIHByaXZhdGUgbWV0aG9kc1xyXG4gIHByaXZhdGUgX2FwcGx5U2VsZWN0aW9uT2JqZWN0RmlsdGVyKGFjdGl2ZUZpbHRlciA6IFdlYlNkay5PYmplY3RGaWx0ZXIgfCBudWxsKXtcclxuXHJcbiAgICBpZighdGhpcy5hcGkgfHwgIXRoaXMuc2VsZWN0aW9uT2JqZWN0IHx8ICFhY3RpdmVGaWx0ZXIpe1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zZWxlY3Rpb25PYmplY3Quc2luZ2xlVXNlID0gdHJ1ZTtcclxuICAgIHRoaXMuc2VsZWN0aW9uT2JqZWN0LnNlbGVjdGlvbi5zaW5nbGV1c2UgPSB0cnVlO1xyXG5cclxuICAgIHRoaXMuaXNMb2FkaW5nUmVzdWx0cyA9IHRydWU7XHJcblxyXG4gICAgRmlsdGVyU3RydWN0dXJlRmV0Y2hlci5mZXRjaE9iamVjdEZpbHRlclN0cnVjdHVyZUZyb21TZWxlY3Rpb24odGhpcy5wcm9qZWN0SWQsIGFjdGl2ZUZpbHRlciwgdGhpcy5zZWxlY3Rpb25PYmplY3QsIHRoaXMuYXBpKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAoZmlsdGVyUmVzdWx0KSA9PiB7XHJcbiAgICAgICAgdGhpcy5fZmlsdGVyUmVzdWx0ID0gZmlsdGVyUmVzdWx0O1xyXG4gICAgICAgIHRoaXMuaXNMb2FkaW5nUmVzdWx0cyA9IGZhbHNlO1xyXG4gICAgICAgIC8vIEZldGNoaW5nIG5ldyByZXN1bHRzIGZpbmlzaGVkLiBBcHBseSBmaWx0ZXIgYnV0dG9uIHNob3VsZCBiZSBkaXNhYmxlZFxyXG4gICAgICAgIHRoaXMuZmlsdGVyQ3JpdGVyaWFDaGFuZ2VkID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfc2V0RGVmYXVsdEN1c3RvbUZpbHRlclN0cmluZyhmaWx0ZXI6IFdlYlNkay5PYmplY3RGaWx0ZXIpe1xyXG4gICAgY29uc3QgdHlwZUF0dHJpYklkID0gXCJhMGU4YWUyYy1jODY5LTRlYzMtOTAxOS0yNWQzNzA0YmU3MDdcIjtcclxuICAgIGZpbHRlci5maWx0ZXJTdHJpbmcgPSBgW0ldWyR7dHlwZUF0dHJpYklkfV0uVmFsdWVgO1xyXG4gICAgZmlsdGVyLnJlYWRhYmxlVmFsdWVzID0ge307XHJcbiAgICBmaWx0ZXIucmVhZGFibGVWYWx1ZXNbdHlwZUF0dHJpYklkXSA9IFwiVHlwZVwiOyAvLyBQcm92aWRlIHJlYWRhYmxlIGNyaXRlcml1bSBuYW1lIGZvciB0eXBlXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jcmVhdGVEZWZhdWx0Q3VzdG9tRmlsdGVyKGRpc2NpcGxpbmVJRDogc3RyaW5nKSA6IFdlYlNkay5PYmplY3RGaWx0ZXJ7XHJcblxyXG4gICAgY29uc3QgZmlsdGVyID0ge1xyXG4gICAgICBtb2R1bGU6IFwiMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXHJcbiAgICAgIGNhdGVnb3J5OiBcIlwiLFxyXG4gICAgICBkaXNjaXBsaW5lSUQ6IGRpc2NpcGxpbmVJRCxcclxuICAgICAgbmFtZTogXCJDdXN0b20gZmlsdGVyXCIsXHJcbiAgICAgIGZpbHRlclN0cmluZzogIFwiXCIsXHJcbiAgICAgIGlzRGVmYXVsdDogZmFsc2UsXHJcbiAgICAgIGRpc2FibGVTb3J0QnlNb2RlbHM6IGZhbHNlLFxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuX3NldERlZmF1bHRDdXN0b21GaWx0ZXJTdHJpbmcoZmlsdGVyKTtcclxuICAgIHJldHVybiBmaWx0ZXI7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9hcHBseUN1c3RvbU9yU3RvcmVkRmlsdGVyKCkge1xyXG4gICAgaWYodGhpcy5hY3RpdmVGaWx0ZXIgJiYgdGhpcy5hY3RpdmVGaWx0ZXIuaWQpe1xyXG4gICAgICAvLyBTdG9yZWQgZmlsdGVyIGlzIHNlbGVjdGVkLiBSZXN1bHRzIG11c3QgYmUgYXBwbGllZCBhdXRvbWF0aWNhbGx5LlxyXG4gICAgICB0aGlzLmFwcGx5RmlsdGVyKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBDdXN0b20gZmlsdGVyIGlzIHNlbGVjdGVkLiBQcm9wZXJ0aWVzIG9mIHNlbGVjdGVkIG9iamVjdCBtdXN0IGJlIHNob3duIGFnYWluLlxyXG4gICAgICBpZiAodGhpcy5zZWxlY3RlZE9iamVjdElkKSB7XHJcbiAgICAgICAgdGhpcy5zZXRGaWx0ZXJDcml0ZXJpYVNlbGVjdGlvbk1vZGUoRmlsdGVyQ3JpdGVyaWFTZWxlY3Rpb25Nb2RlLlNlbGVjdE9iamVjdFByb3BlcnRpZXMpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMub2JqZWN0RmlsdGVyUmVzdWx0Py5jbGVhckZpbHRlclJlc3VsdCgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8vICNlbmRyZWdpb24gcHJpdmF0ZSBtZXRob2RzXHJcblxyXG59XHJcbiIsIjxsaWItYmltcGx1cy1zaWRlbmF2LWRyYXdlci1jb250ZW50IFtoZWFkZXJdPVwiJ19PYmplY3QgbmF2aWdhdG9yJyB8IHRyYW5zbGF0ZVwiXHJcbiAgICBbaXNMb2FkaW5nXT1cImlzTG9hZGluZ1Jlc3VsdHNcIlxyXG4gICAgW2xvYWRpbmdTcGlubmVyVGV4dF09XCInX0xvYWRpbmdfRmlsdGVyX1Jlc3VsdHMnIHwgdHJhbnNsYXRlXCJcclxuPlxyXG4gICAgPGRpdiBjbGFzcz1cIm9iamVjdC1uYXZpZ2F0b3ItY29udGVudC1jb250YWluZXJcIj5cclxuICAgICAgICBAaWYoZmlsdGVyVHlwZXMubGVuZ3RoID4gMCl7XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZXNjcmlwdGlvblwiPlxyXG4gICAgICAgICAgICAgICAge3tcIl9TZWxlY3RfYW5fb2JqZWN0X3VzaW5nX09iamVjdF9QaWNrZXJcIiB8IHRyYW5zbGF0ZX19XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwib2JqZWN0LW5hdmlnYXRvci1maWx0ZXJzLXR5cGVcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1zZWxlY3QgZGF0YS10ZXN0PVwib2JqZWN0LW5hdmlnYXRvci1maWx0ZXItdHlwZXMtZHJvcGRvd25cIiBjbGFzcz1cIm9iamVjdC1uYXZpZ2F0b3ItZHJvcGRvd25cIiBbKG5nTW9kZWwpXT1cImFjdGl2ZUZpbHRlclR5cGVcIiBbY2xlYXJhYmxlXT1cImZhbHNlXCIgW3NlYXJjaGFibGVdPVwiZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctb3B0aW9uICpuZ0Zvcj1cImxldCB0eXBlIG9mIGZpbHRlclR5cGVzXCIgW3ZhbHVlXT1cInR5cGVcIj57e3R5cGUubmFtZX19PC9uZy1vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8L25nLXNlbGVjdD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvYmplY3QtbmF2aWdhdG9yLWZpbHRlcnMtbmFtZVwiPlxyXG4gICAgICAgICAgICAgICAgPG5nLXNlbGVjdCBkYXRhLXRlc3Q9XCJvYmplY3QtbmF2aWdhdG9yLWZpbHRlcnMtbmFtZS1kcm9wZG93blwiIGNsYXNzPVwib2JqZWN0LW5hdmlnYXRvci1kcm9wZG93blwiIFsobmdNb2RlbCldPVwiYWN0aXZlRmlsdGVyXCIgIFtjbGVhcmFibGVdPVwiZmFsc2VcIiBbZGlzYWJsZWRdPVwiIWZpbHRlcnNcIiBbc2VhcmNoYWJsZV09XCJmYWxzZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1vcHRpb24gKm5nRm9yPVwibGV0IGZpbHRlciBvZiBmaWx0ZXJzXCIgW3ZhbHVlXT1cImZpbHRlclwiPnt7ZmlsdGVyLm5hbWV9fTwvbmctb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1zZWxlY3Q+XHJcblxyXG4gICAgICAgICAgICAgICAgQGlmKCFoaWRlRmlsdGVyQ29udGV4dE1lbnUpe1xyXG4gICAgICAgICAgICAgICAgICAgIDxsaWItYmltcGx1cy1jb250ZXh0LW1lbnUgY2xhc3M9XCJvYmplY3QtbmF2aWdhdG9yLWZpbHRlcnMtbmFtZS1jb250ZXh0LW1lbnVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtpdGVtc109XCJmaWx0ZXJDb250ZXh0TWVudVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJmaWx0ZXJDb250ZXh0TWVudT8ubGVuZ3RoXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDwvbGliLWJpbXBsdXMtY29udGV4dC1tZW51PlxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8bGliLWV4cGFuc2lvbi1wYW5lbCBjbGFzcz1cIm9iamVjdC1uYXZpZ2F0b3ItZmlsdGVyLWNyaXRlcmlhLXBhbmVsXCI+XHJcbiAgICAgICAgICAgICAgICA8bGliLWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJvYmplY3QtbmF2aWdhdG9yLWZpbHRlci1jcml0ZXJpYS1oZWFkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgXCJfQXNzaWduX09iamVjdHNfU2VsZWN0aW9uX01vZGVcIiB8IHRyYW5zbGF0ZSB9fSAmIzQwO3t7IGZpbHRlckNyaXRlcmlhLmxlbmd0aCB9fS97eyBtYXhGaWx0ZXJDcml0ZXJpYSB9fSYjNDE7XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaWItZXhwYW5zaW9uLXBhbmVsLWhlYWRlci1hY3Rpb25zPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwib2JqZWN0LW5hdmlnYXRvci1waWNrLW9iamVjdC1idXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImZpbHRlckNyaXRlcmlhU2VsZWN0aW9uTW9kZSQuZ2V0VmFsdWUoKSA9PT0gRmlsdGVyQ3JpdGVyaWFTZWxlY3Rpb25Nb2RlLlNlbGVjdE9iamVjdFByb3BlcnRpZXM/ICdhY3RpdmUnIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZXRGaWx0ZXJDcml0ZXJpYVNlbGVjdGlvbk1vZGUoRmlsdGVyQ3JpdGVyaWFTZWxlY3Rpb25Nb2RlLlNlbGVjdE9iamVjdFByb3BlcnRpZXMpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5cHJlc3MpPVwic2V0RmlsdGVyQ3JpdGVyaWFTZWxlY3Rpb25Nb2RlKEZpbHRlckNyaXRlcmlhU2VsZWN0aW9uTW9kZS5TZWxlY3RPYmplY3RQcm9wZXJ0aWVzKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidfT2JqZWN0X1BpY2tlcid8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2xpYi1leHBhbnNpb24tcGFuZWwtaGVhZGVyLWFjdGlvbnM+XHJcbiAgICAgICAgICAgICAgICA8L2xpYi1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItY3JpdGVyaWEtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICBAZm9yIChjcml0ZXJpdW0gb2YgZmlsdGVyQ3JpdGVyaWE7IHRyYWNrIGNyaXRlcml1bTsgbGV0ICBpID0gJGluZGV4KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPGFwcC1maWx0ZXItY3JpdGVyaXVtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjcml0ZXJpdW1dID0gXCJjcml0ZXJpdW1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5kZW50XT1cImkqMC44XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGRlbGV0ZUNyaXRlcml1bSk9XCJkZWxldGVGaWx0ZXJDcml0ZXJpdW0oaSlcIlxyXG4gICAgICAgICAgICAgICAgICAgID48L2FwcC1maWx0ZXItY3JpdGVyaXVtPlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbGliLWV4cGFuc2lvbi1wYW5lbD5cclxuXHJcbiAgICAgICAgICAgIEBzd2l0Y2goZmlsdGVyQ3JpdGVyaWFTZWxlY3Rpb25Nb2RlJC5nZXRWYWx1ZSgpKXtcclxuICAgICAgICAgICAgICAgIEBjYXNlKEZpbHRlckNyaXRlcmlhU2VsZWN0aW9uTW9kZS5TZWxlY3RPYmplY3RQcm9wZXJ0aWVzKXtcclxuICAgICAgICAgICAgICAgICAgICBAaWYoIXNlbGVjdGVkT2JqZWN0SWQpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBpZD1cIk5vT2JqZWN0U2VsZWN0ZWRcIj57eyBcIl9Ob09iamVjdFNlbGVjdGVkXCIgfCB0cmFuc2xhdGV9fTwvcD5cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvYmplY3QtbmF2aWdhdG9yLWFwcGx5LWJ1dHRvbi1yb3dcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJwcmltYXJ5LWJ1dHRvblwiIFxyXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJhcHBseUZpbHRlckRpc2FibGVkKClcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJhcHBseUZpbHRlckRpc2FibGVkKClcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhcHBseUZpbHRlcigpXCJcclxuICAgICAgICAgICAgICAgID4gXHJcbiAgICAgICAgICAgICAgICAgICAge3tcIl9BcHBseSBmaWx0ZXJcIiB8IHRyYW5zbGF0ZX19XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwib2JqZWN0LW5hdmlnYXRvci1zZXBhcmF0b3JcIj48L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIEBzd2l0Y2goZmlsdGVyQ3JpdGVyaWFTZWxlY3Rpb25Nb2RlJC5nZXRWYWx1ZSgpKXtcclxuICAgICAgICAgICAgICAgIEBjYXNlKEZpbHRlckNyaXRlcmlhU2VsZWN0aW9uTW9kZS5TZWxlY3RPYmplY3RQcm9wZXJ0aWVzKXtcclxuICAgICAgICAgICAgICAgICAgICBAaWYoc2VsZWN0ZWRPYmplY3RJZCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzY3JvbGxhYmxlLWNvbnRlbnQtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1iaW1wbHVzLXNjcm9sbGFibGUtY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1jcml0ZXJpYS1zZWxlY3Qtb2JqZWN0LXByb3BlcnRpZXNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FwaV09XCJhcGlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VsZWN0ZWRMYW5ndWFnZV09XCJzZWxlY3RlZExhbmd1YWdlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xvY2FsaXplZFN0cmluZ3NdPVwibG9jYWxpemVkU3RyaW5nc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsoZmlsdGVyQ3JpdGVyaWEpXT1cImZpbHRlckNyaXRlcmlhXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Jvb3RPYmplY3RJZF09XCJzZWxlY3RlZE9iamVjdElkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JldmlzaW9uXT1cInNlbGVjdGVkUmV2aXNpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZmlsdGVyQ3JpdGVyaWFDaGFuZ2UpPVwiZmlsdGVyQ3JpdGVyaWFXYXNDaGFuZ2VkKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saWItY3JpdGVyaWEtc2VsZWN0LW9iamVjdC1wcm9wZXJ0aWVzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGliLWJpbXBsdXMtc2Nyb2xsYWJsZS1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIEBjYXNlKEZpbHRlckNyaXRlcmlhU2VsZWN0aW9uTW9kZS5TZWxlY3RBdHRyaWJ1dGVzKXtcclxuXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBAZGVmYXVsdHtcclxuICAgICAgICAgICAgICAgICAgICBAaWYgKGZpbHRlclJlc3VsdCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2Nyb2xsYWJsZS1jb250ZW50LWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1iaW1wbHVzLXNjcm9sbGFibGUtY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaWItb2JqZWN0LWZpbHRlci1yZXN1bHRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZpbHRlclJlc3VsdF09XCJmaWx0ZXJSZXN1bHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VsZWN0ZWRPYmplY3RzXT1cInNlbGVjdGVkT2JqZWN0c1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpc0ZpbHRlclJlc3VsdEludmFsaWRdPVwiZmlsdGVyUmVzdWx0SW52YWxpZGF0ZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmlsdGVyUmVzdWx0SW52YWxpZFRpdGxlXT1cIidSZXN1bHRfaXNfSW52YWxpZCcgfCB0cmFuc2xhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmlsdGVyUmVzdWx0SW52YWxpZFRleHRdPVwiJ1NlbGVjdGlvbl9pbl9Qcm9qZWN0X25hdmlnYXRvcl9oYXNfY2hhbmdlZCcgfCB0cmFuc2xhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9kZVNlbGVjdGlvbkNoYW5nZWQpPVwiaGFuZGxlRmlsdGVyUmVzdWx0U2VsZWN0aW9uQ2hhbmdlZCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vZGVEb3VibGVDbGlja2VkKT1cImhhbmRsZUZpbHRlclJlc3VsdE9iamVjdERvdWJsZUNsaWNrZWQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub2RlTW91c2VFbnRlcmVkKT1cImhhbmRsZUZpbHRlclJlc3VsdE9iamVjdE1vdXNlRW50ZXJlZCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vZGVNb3VzZUxlZnQpPVwiaGFuZGxlRmlsdGVyUmVzdWx0T2JqZWN0TW91c2VMZWZ0KCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2xpYi1vYmplY3QtZmlsdGVyLXJlc3VsdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGliLWJpbXBsdXMtc2Nyb2xsYWJsZS1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBAZWxzZSB7XHJcbiAgICAgICAgICAgIDxkaXYgZGF0YS10ZXN0PVwib2JqZWN0LW5hdmlnYXRvci1uby1maWx0ZXItdHlwZXMtbWVzc2FnZVwiIGNsYXNzPVwib2JqZWN0LW5hdmlnYXRvci1uby1maWx0ZXItdHlwZXNcIj4ge3tcIl9Ob192aXNpYmxlX21vZGVsc19mb3VuZFwiIHwgdHJhbnNsYXRlfX0gPC9kaXY+XHJcbiAgICAgICAgfVxyXG4gICAgPC9kaXY+XHJcbjwvbGliLWJpbXBsdXMtc2lkZW5hdi1kcmF3ZXItY29udGVudD5cclxuIl19