qms-angular 2.0.1 → 2.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/banner/qms-banner-confirm/qms-banner-confirm.component.mjs +3 -3
- package/esm2022/lib/components/related/popup/related-popup.component.mjs +3 -3
- package/esm2022/lib/components/related/risk/analysis/analysis.component.mjs +2 -2
- package/esm2022/lib/components/select-access-dialog/select-access-dialog.component.mjs +3 -3
- package/esm2022/lib/components/select-department/select-department.component.mjs +3 -3
- package/esm2022/lib/components/select-department-tree/select-department-tree.component.mjs +5 -5
- package/esm2022/lib/components/select-one/select-one.component.mjs +10 -12
- package/esm2022/lib/components/select-process-data/select-process-data.component.mjs +3 -3
- package/esm2022/lib/components/select-process-data-tree/select-process-data-tree.component.mjs +3 -3
- package/esm2022/lib/qms-ckeditor-components/common/module/confirm/qms-ckeditor-confirm.component.mjs +2 -2
- package/esm2022/lib/qms-ckeditor-components/components/qms-ckeditor-about/qms-ckeditor-about.component.mjs +2 -2
- package/esm2022/lib/qms-ckeditor-components/components/qms-ckeditor-imagemap/qms-ckeditor-imagemap.component.mjs +2 -2
- package/esm2022/lib/qms-ckeditor-components/components/qms-ckeditor-link/attachments/link-attachment.component.mjs +2 -2
- package/esm2022/lib/qms-ckeditor-components/components/qms-ckeditor-link/qms-ckeditor-link.component.mjs +2 -2
- package/esm2022/lib/qms-ckeditor-components/components/qms-ckeditor-link-simple/qms-ckeditor-link-simple.component.mjs +2 -2
- package/esm2022/lib/qms-ckeditor-components/components/qms-ckeditor-load-template/qms-ckeditor-load-template.component.mjs +2 -2
- package/esm2022/lib/qms-ckeditor-components/components/qms-ckeditor-relation/qmsckeditor-related.component.mjs +2 -2
- package/esm2022/lib/qms-ckeditor-components/components/qms-ckeditor-template/qms-ckeditor-template.component.mjs +2 -2
- package/esm2022/lib/qms-ckeditor-components/components/qms-ckeditor-tooltip/qms-ckeditor-tooltip.component.mjs +2 -2
- package/esm2022/lib/qms-ckeditor-components/qms-ckeditor.component.mjs +2 -2
- package/fesm2022/qms-angular.mjs +42 -42
- package/fesm2022/qms-angular.mjs.map +1 -1
- package/package.json +1 -1
- package/src/assets/qms-ckeditor-plugin/build/ckeditor.js +1 -1
- package/src/lib/components/banner/qms-banner-confirm/qms-banner-confirm.component.scss +44 -44
- package/src/lib/components/related/risk/analysis/analysis.component.scss +0 -3
- package/src/lib/components/select-access-dialog/select-access-dialog.component.scss +8 -2
- package/src/lib/components/select-department/select-department.component.scss +3 -3
- package/src/lib/components/select-department-tree/select-department-tree.component.scss +1 -1
- package/src/lib/components/select-dialog/select-dialog.scss +1 -1
- package/src/lib/components/select-process-data/select-process-data.component.scss +1 -1
- package/src/lib/components/select-process-data-tree/select-process-data-tree.component.scss +1 -1
- package/src/lib/components/select-process-document/select-process-document.component.scss +5 -6
- package/src/lib/qms-ckeditor-components/styles/_modules.scss +149 -146
- package/src/themes/core/_checkbox.scss +5 -1
- package/src/themes/core/_dialog.scss +42 -53
- package/src/themes/core/_form.scss +40 -35
- package/src/themes/core/_radio.scss +5 -1
- package/src/themes/core/_range-slider.scss +223 -201
- package/src/themes/core/_slide-toggle.scss +48 -6
- package/src/themes/core/_tab.scss +516 -512
@@ -20,14 +20,12 @@ import * as i7 from "@angular/common";
|
|
20
20
|
import * as i8 from "@angular/material/expansion";
|
21
21
|
import * as i9 from "@angular/material/autocomplete";
|
22
22
|
import * as i10 from "@angular/material/core";
|
23
|
-
import * as i11 from "
|
24
|
-
import * as i12 from "
|
25
|
-
import * as i13 from "
|
26
|
-
import * as i14 from "../
|
27
|
-
import * as i15 from "
|
28
|
-
import * as i16 from "
|
29
|
-
import * as i17 from "../tree/tree.component";
|
30
|
-
import * as i18 from "./common/selectone-popup-data.model";
|
23
|
+
import * as i11 from "../button/button";
|
24
|
+
import * as i12 from "../list/list";
|
25
|
+
import * as i13 from "../../directives/tooltip/tooltip-renderer.directive";
|
26
|
+
import * as i14 from "../breadcrumb/breadcrumb";
|
27
|
+
import * as i15 from "../tree/tree.component";
|
28
|
+
import * as i16 from "./common/selectone-popup-data.model";
|
31
29
|
export class SelectOneDialog {
|
32
30
|
constructor(cdRef, translate, dialogRef, globalService, iconRegistry, sanitizer, appIconService, data) {
|
33
31
|
this.cdRef = cdRef;
|
@@ -450,12 +448,12 @@ export class SelectOneDialog {
|
|
450
448
|
}
|
451
449
|
}
|
452
450
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SelectOneDialog, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.TranslateLibraryService }, { token: i2.MatDialogRef }, { token: i3.QMSSelectOneGlobalService }, { token: i4.MatIconRegistry }, { token: i5.DomSanitizer }, { token: i6.QMSIconRegistryService }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
|
453
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: SelectOneDialog, selector: "qms-select-one", host: { listeners: { "window:message": "onMessage($event)" } }, viewQueries: [{ propertyName: "dataTrees", predicate: TreeComponent, descendants: true }], ngImport: i0, template: "<div class=\"qmslib__related__popup__container\">\n <div>\n <span mat-icon-button class=\"button__close\" (click)=\"onCloseClick()\">\n <mat-icon mat-icon>close</mat-icon>\n </span>\n <div class=\"module-name\" mat-dialog-content>\n <span>{{ moduleName }}</span>\n </div>\n </div>\n\n <div class=\"input__field\">\n <input type=\"text\" placeholder=\"{{ LANG.SEARCH }}\" matInput [formControl]=\"myControl\" [matAutocomplete]=\"auto\" />\n <mat-icon>search</mat-icon>\n </div>\n\n <div class=\"line__divider\"></div>\n\n <mat-autocomplete mat-autocomplete autoActiveFirstOption #auto=\"matAutocomplete\">\n\n <div class=\"search__module-result\" *ngIf=\"filteredOptions.length\">\n <mat-option class=\"search__option\" *ngFor=\"let option of getModuleFilteredOptions()\" [value]=\"option\"\n (click)=\"selectItemSearched(option)\">\n <qms-list-item class=\"item-suggestion\" type=\"image-square\">\n <mat-icon leading-icon type=\"image-square\" [svgIcon]=\"getNodeIcon(option)\"></mat-icon>\n <div qms-list-header>\n <div qms-line type=\"caption\" qms-tool-tip=\"{{\n isEllipsisActive(searchItemResult) ? option.parentName : ''\n }}\" mode=\"dark\" *ngIf=\"getParentName(option)\">\n <span #searchItemResult class=\"search__result__parent-name\">\n {{ option.parentName }}\n </span>\n </div>\n <div qms-line type=\"subtitle\" class=\"search__option-name\">\n {{ option.itemName }}\n </div>\n <div class=\"caption\" *ngIf=\"option.breadcumbs && option.breadcumbs.length\">\n <qms-breadcrumb class=\"breadcrumb-container\" type=\"table\" numDisplayItem=\"1\" [nodes]=\"option.breadcumbs\">\n </qms-breadcrumb>\n </div>\n </div>\n <div qms-line color=\"default-subtitle\" *ngIf=\"getItemId(option)\">\n <span>\n <mat-icon class=\"material-icons-outlined search__description-icon\">\n local_offer\n </mat-icon>\n </span>\n {{ getItemId(option) }}\n </div>\n </qms-list-item>\n </mat-option>\n </div>\n </mat-autocomplete>\n\n <div class=\"row\">\n <div class=\"qms-scrollbar col-12 qmslib_related_popup_content panel__content_item\">\n <mat-expansion-panel hideToggle id=\"qmslib_related_popup_common_001\" [expanded]=\"isCommonExpanded\"\n (opened)=\"isCommonExpanded = true\" (closed)=\"isCommonExpanded = false\" class=\"panel-tree\">\n <div id=\"qmslib_related_popup_common_002\">\n <qms-tree [treeData]=\"treeData\" [treeConfig]=\"treeConfig\" [selectedData]=\"selectedData\"\n [selectedRiskData]=\"selectedRiskData\" [disabledList]=\"disabledList\"\n (selectNodeEvent)=\"selectNodeTreeEvent($event)\" (nodeExpandEvent)=\"nodeExpandEvent($event)\"\n [expandOnTitleClick]=\"false\" [expandToChildNode]=\"expandToChildNode\"\n (nodeCondensedEvent)=\"nodeCondensedEvent($event)\"></qms-tree>\n </div>\n </mat-expansion-panel>\n </div>\n </div>\n\n <!-- <div *ngIf=\"checkedNodeList.length\" class=\"line__divider\"></div>\n\n <div *ngIf=\"checkedNodeList.length\" class=\"panel__item qms-scrollbar\">\n <div class=\"related__item__inline\" *ngFor=\"let item of checkedNodeList\">\n <button\n *ngIf=\"item.itemName\"\n mat-button\n class=\"related__item__content\"\n qms-tool-tip=\"{{\n isEllipsisActive(itemName) ? getItemChipName(item) : ''\n }}\"\n mode=\"dark\"\n >\n <span class=\"related__item__content_name\" #itemName>{{\n getItemChipName(item)\n }}</span>\n <mat-icon (click)=\"removeCheckedNodeList()\">cancel</mat-icon>\n </button>\n </div>\n </div> -->\n\n <div class=\"line__divider\"></div>\n\n <div class=\"confirm__button__groups\">\n <button qms-btn [class.add-button-spacing-top-7px]=\"!checkedNodeList.length\" (click)=\"onAddClick()\">\n {{ LANG.ADD }} {{ checkedNodeList?.length ? '(' + checkedNodeList?.length + ')' : ''}}\n </button>\n <button qms-btn-text [ngStyle]=\"{ 'margin-top': checkedNodeList.length ? '0px' : '7px' }\" (click)=\"onCloseClick()\">\n {{ LANG.CANCEL }}\n </button>\n </div>\n</div>", styles: ["::-webkit-scrollbar{width:12px}::-webkit-scrollbar-track{background:#0000001f;background-clip:content-box}::-webkit-scrollbar-thumb{background:#00000061;border-radius:20px;width:4px;border:4px solid transparent;background-clip:content-box}::-webkit-scrollbar-thumb:hover{background:#00000080;background-clip:content-box;border:4px solid transparent}.qms__popup .button__close{float:right;top:-24px;right:-24px;cursor:pointer}.qms__danger button{border:none;color:var(--text-white);padding:0;text-align:center;text-decoration:none;display:inline-block;cursor:pointer;height:20px;width:20px;font-family:Open Sans;font-size:12px;font-weight:600;font-style:normal;line-height:16px}.qms__danger .red{background-color:var(--button-red-background);margin-left:10px}.qms__danger .yellow{background-color:var(--button-yellow-background);margin-left:10px;color:var(--popup-title-color)}.qms__danger .green{background-color:var(--button-green-background);margin-left:10px}.confirm__button__groups{margin-top:11px}.confirm__button__groups button{min-height:36px;width:auto;font-family:Open Sans;font-weight:500;font-size:14px;letter-spacing:1px;line-height:16px;padding-left:15px;padding-right:15px;margin-right:5px;float:right}.confirm__button__groups .confirm{background:var(--button-background)}.confirm__button__groups .confirm:hover{background:var(--primary-button-background-color);color:var(--primary-button-text-color)}.confirm__button__groups .confirm:disabled{cursor:not-allowed}.confirm__button__groups .cancel{background:var(--button-background)}.confirm__button__groups .cancel:hover{background:var(--primary-button-background-color);color:var(--primary-button-text-color)}.qms-list-item.item-suggestion .image-square.wrap-image{width:2.5rem!important;height:100%!important;background:transparent;align-self:center;margin-right:0}::ng-deep .mat-mdc-option:hover:not(.mat-option-disabled),.mat-option:focus:not(.mat-option-disabled){background:transparent!important}.qmslib__related__popup__container .input__field{display:flex;align-items:center}.qmslib__related__popup__container .input__field input{width:100%;padding:10px;outline:none;border:none;background:var(--background-input-text)}.qmslib__related__popup__container .input__field .mat-icon{margin-left:-30px;cursor:pointer;vertical-align:middle}.qmslib__related__popup__container .line__divider{border-bottom:1px solid #ccc;height:1px;margin-top:10px;min-width:300px;max-width:100%}.qmslib__related__popup__container .button__close{float:right;top:-24px;right:-24px;cursor:pointer}.qmslib__related__popup__container .panel__content{height:450px;overflow:auto;margin-top:12px}.qmslib__related__popup__container .panel__content_item{height:350px;overflow:auto;margin-top:12px}.qmslib__related__popup__container .panel-tree .mat-expansion-panel-body{padding:0 12px 12px}.qmslib__related__popup__container .mat-expansion-panel-header{height:30px;font-size:12px;letter-spacing:1px;font-family:Raleway;font-weight:600;padding:0}.qmslib__related__popup__container .mat-expansion-panel-header .mat-expansion-panel-header-title{align-items:center;margin-left:12px}.qmslib__related__popup__container .mat-expansion-panel-header .related_popup_toggle-btn{width:1.5rem;height:1.5rem;line-height:1.5rem}.qmslib__related__popup__container .mat-expansion-panel:not([class*=mat-elevation-z]){box-shadow:none}.qmslib__related__popup__container .panel__item{height:100px;margin-top:12px;overflow-x:hidden;overflow-y:auto;padding-right:5px;width:100%;max-width:100%;display:flex;flex-wrap:wrap;align-content:flex-start}.qmslib__related__popup__container .panel__item .related__item__inline{max-width:100%}.qmslib__related__popup__container .panel__item .related__item__content{height:32px;line-height:32px;background-color:var(--related-item-background);max-width:100%;margin-bottom:5px;margin-left:2.5px;margin-right:2.5px}.qmslib__related__popup__container .panel__item .related__item__content .mat-icon{color:var(--related-mat-icon-color);font-size:24px}.qmslib__related__popup__container .panel__item .related__item__content span.related__item__content_name{display:inline-block;min-width:calc(100% - 13px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:320px}.qmslib__related__popup__container .add-button-spacing-top-7px{margin-top:7px}.search__module-result{margin:1.5rem;padding:0 0 .5rem 0px}.search__module-result .search__module-title{font-size:14px;font-weight:600}.search__module-result .search__option{height:auto;line-height:normal;padding:0;border-bottom:1px solid #e0e0e0}.search__module-result .search__option .qms-list-item.mat-2-line.image-item{height:auto}.search__module-result .search__option .qms-list-item-content{margin:0;border-bottom:none}.search__module-result .search__option .qms-list-item-content .material-icons-outlined.leading-icon,.search__module-result .search__option .qms-list-item-content mat-icon.leading-icon{padding:4px 0 4px 4px}.search__module-result .search__option .qms-list-item-content .caption{overflow:hidden;line-height:normal;white-space:normal;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;padding:0;margin:0}.search__module-result .search__option .qms-list-item-content .caption span.search__result__parent-name{display:inline-block;width:auto;width:calc(100% - 13px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.search__module-result .search__option .qms-list-item-content .default-subtitle{color:#00000061}.search__module-result .search__option .qms-list-item-content .search__description-icon{margin-right:0;width:12px;height:12px;font-size:12px}.search__module-result .search__option .qms-list-item-content .qms-list-text{border-bottom:none;height:auto}.search__module-result .search__option .qms-list-item-content .breadcrumb-container .qms-breadcrumb-item .mat-icon{font-size:16px!important;padding-bottom:1px}.search__module-result .search__option.mat-mdc-option:hover:not(.mat-option-disabled),.search__module-result .search__option .mat-option:focus:not(.mat-option-disabled){background:transparent!important}.search__module-result svg{display:block}.module-name{margin-bottom:20px;padding:0;font-weight:600;font-family:Raleway}.padding-5{padding:5px}.mat-mdc-autocomplete_related-viewport{height:100%;max-height:100%!important}.mat-mdc-autocomplete_related-viewport .cdk-virtual-scroll-content-wrapper{width:100%}.mat-mdc-autocomplete_related-viewport .related-viewport{min-height:10.25rem}\n"], dependencies: [{ kind: "directive", type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i8.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i9.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i10.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i9.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "directive", type: i11.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i11.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i11.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i12.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: i2.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "component", type: i13.QMSButton, selector: "button[qms-btn], button[qms-btn-lg], button[qms-btn-outlined],\n button[qms-btn-outlined-lg], button[qms-btn-text], button[qms-btn-text-lg],\n button[qms-btn-fab],button[qms-btn-fab-sm],button[qms-btn-fab-ext],\n button[qms-btn-fab-outlined],button[qms-btn-fab-outlined-sm],button[qms-btn-fab-outlined-ext]", inputs: ["disabled", "color"], exportAs: ["qmsButton"] }, { kind: "component", type: i14.QMSListItem, selector: "qms-list-item", inputs: ["type", "disabled"] }, { kind: "directive", type: i14.QMSListLeadingIcon, selector: "[leading-icon]" }, { kind: "directive", type: i14.QMSListLine, selector: "[qms-line]", inputs: ["size", "type", "color"] }, { kind: "directive", type: i14.QMSListHeader, selector: "[qms-list-header]" }, { kind: "directive", type: i15.QMSToolTipRendererDirective, selector: "[qms-tool-tip]", inputs: ["showToolTip", "mode", "qms-tool-tip", "contentTemplate", "position"] }, { kind: "component", type: i16.QMSBreadcrumb, selector: "qms-breadcrumb", inputs: ["nodes", "type", "maxLine", "numDisplayItem", "onlyItem", "disabledLastItem"], outputs: ["onItemClick"] }, { kind: "component", type: i17.TreeComponent, selector: "qms-tree", inputs: ["treeData", "treeConfig", "selectedData", "selectedRiskData", "disabledList", "expandOnTitleClick", "expandToChildNode", "parentNodeOnClick"], outputs: ["selectNodeEvent", "selectFolderEvent", "checkBoxEvent", "childCheckedEvent", "nodeExpandEvent", "treeControlNodes", "nodeCondensedEvent"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
451
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: SelectOneDialog, selector: "qms-select-one", host: { listeners: { "window:message": "onMessage($event)" } }, viewQueries: [{ propertyName: "dataTrees", predicate: TreeComponent, descendants: true }], ngImport: i0, template: "<h2 mat-dialog-title>\n <span>{{ moduleName }}</span>\n <button qms-btn-icon class=\"close-btn\" (click)=\"onCloseClick()\">\n <mat-icon mat-icon>close</mat-icon>\n </button>\n</h2>\n<mat-dialog-content>\n <mat-autocomplete mat-autocomplete autoActiveFirstOption #auto=\"matAutocomplete\">\n <div class=\"search__module-result\" *ngIf=\"filteredOptions.length\">\n <mat-option class=\"search__option\" *ngFor=\"let option of getModuleFilteredOptions()\" [value]=\"option\"\n (click)=\"selectItemSearched(option)\">\n <qms-list-item class=\"item-suggestion\" type=\"image-square\">\n <mat-icon leading-icon type=\"image-square\" [svgIcon]=\"getNodeIcon(option)\"></mat-icon>\n <div qms-list-header>\n <div qms-line type=\"caption\" qms-tool-tip=\"{{\n isEllipsisActive(searchItemResult) ? option.parentName : ''\n }}\" mode=\"dark\" *ngIf=\"getParentName(option)\">\n <span #searchItemResult class=\"search__result__parent-name\">\n {{ option.parentName }}\n </span>\n </div>\n <div qms-line type=\"subtitle\" class=\"search__option-name\">\n {{ option.itemName }}\n </div>\n <div class=\"caption\" *ngIf=\"option.breadcumbs && option.breadcumbs.length\">\n <qms-breadcrumb class=\"breadcrumb-container\" type=\"table\" numDisplayItem=\"1\" [nodes]=\"option.breadcumbs\">\n </qms-breadcrumb>\n </div>\n </div>\n <div qms-line color=\"default-subtitle\" *ngIf=\"getItemId(option)\">\n <span>\n <mat-icon class=\"material-icons-outlined search__description-icon\">\n local_offer\n </mat-icon>\n </span>\n {{ getItemId(option) }}\n </div>\n </qms-list-item>\n </mat-option>\n </div>\n </mat-autocomplete>\n\n <div class=\"row\">\n <div class=\"qms-scrollbar col-12 qmslib_related_popup_content panel__content_item\">\n <mat-expansion-panel hideToggle id=\"qmslib_related_popup_common_001\" [expanded]=\"isCommonExpanded\"\n (opened)=\"isCommonExpanded = true\" (closed)=\"isCommonExpanded = false\" class=\"panel-tree\">\n <div id=\"qmslib_related_popup_common_002\">\n <qms-tree [treeData]=\"treeData\" [treeConfig]=\"treeConfig\" [selectedData]=\"selectedData\"\n [selectedRiskData]=\"selectedRiskData\" [disabledList]=\"disabledList\"\n (selectNodeEvent)=\"selectNodeTreeEvent($event)\" (nodeExpandEvent)=\"nodeExpandEvent($event)\"\n [expandOnTitleClick]=\"false\" [expandToChildNode]=\"expandToChildNode\"\n (nodeCondensedEvent)=\"nodeCondensedEvent($event)\"></qms-tree>\n </div>\n </mat-expansion-panel>\n </div>\n </div>\n</mat-dialog-content>\n<mat-dialog-actions>\n <button qms-btn-text (click)=\"onCloseClick()\">\n {{ LANG.CANCEL }}\n </button>\n <button qms-btn (click)=\"onAddClick()\">\n {{ LANG.ADD }} {{ checkedNodeList?.length ? '(' + checkedNodeList?.length + ')' : ''}}\n </button>\n</mat-dialog-actions>", styles: ["::-webkit-scrollbar{width:12px}::-webkit-scrollbar-track{background:#0000001f;background-clip:content-box}::-webkit-scrollbar-thumb{background:#00000061;border-radius:20px;width:4px;border:4px solid transparent;background-clip:content-box}::-webkit-scrollbar-thumb:hover{background:#00000080;background-clip:content-box;border:4px solid transparent}.qms__popup .button__close{float:right;top:-24px;right:-24px;cursor:pointer}.qms__danger button{border:none;color:var(--text-white);padding:0;text-align:center;text-decoration:none;display:inline-block;cursor:pointer;height:20px;width:20px;font-family:Open Sans;font-size:12px;font-weight:600;font-style:normal;line-height:16px}.qms__danger .red{background-color:var(--button-red-background);margin-left:10px}.qms__danger .yellow{background-color:var(--button-yellow-background);margin-left:10px;color:var(--popup-title-color)}.qms__danger .green{background-color:var(--button-green-background);margin-left:10px}.confirm__button__groups{margin-top:11px}.confirm__button__groups button{min-height:36px;width:auto;font-family:Open Sans;font-weight:500;font-size:14px;letter-spacing:1px;line-height:16px;padding-left:15px;padding-right:15px;margin-right:5px;float:right}.confirm__button__groups .confirm{background:var(--button-background)}.confirm__button__groups .confirm:hover{background:var(--primary-button-background-color);color:var(--primary-button-text-color)}.confirm__button__groups .confirm:disabled{cursor:not-allowed}.confirm__button__groups .cancel{background:var(--button-background)}.confirm__button__groups .cancel:hover{background:var(--primary-button-background-color);color:var(--primary-button-text-color)}.qms-list-item.item-suggestion .image-square.wrap-image{width:2.5rem!important;height:100%!important;background:transparent;align-self:center;margin-right:0}::ng-deep .mat-mdc-option:hover:not(.mat-option-disabled),.mat-option:focus:not(.mat-option-disabled){background:transparent!important}.qmslib__related__popup__container .input__field{display:flex;align-items:center}.qmslib__related__popup__container .input__field input{width:100%;padding:10px;outline:none;border:none;background:var(--background-input-text)}.qmslib__related__popup__container .input__field .mat-icon{margin-left:-30px;cursor:pointer;vertical-align:middle}.qmslib__related__popup__container .line__divider{border-bottom:1px solid #ccc;height:1px;margin-top:10px;min-width:300px;max-width:100%}.qmslib__related__popup__container .button__close{float:right;top:-24px;right:-24px;cursor:pointer}.qmslib__related__popup__container .panel__content{height:450px;overflow:auto;margin-top:12px}.qmslib__related__popup__container .panel__content_item{height:350px;overflow:auto;margin-top:12px}.qmslib__related__popup__container .panel-tree .mat-expansion-panel-body{padding:0 12px 12px}.qmslib__related__popup__container .mat-expansion-panel-header{height:30px;font-size:12px;letter-spacing:1px;font-family:Raleway;font-weight:600;padding:0}.qmslib__related__popup__container .mat-expansion-panel-header .mat-expansion-panel-header-title{align-items:center;margin-left:12px}.qmslib__related__popup__container .mat-expansion-panel-header .related_popup_toggle-btn{width:1.5rem;height:1.5rem;line-height:1.5rem}.qmslib__related__popup__container .mat-expansion-panel:not([class*=mat-elevation-z]){box-shadow:none}.qmslib__related__popup__container .panel__item{height:100px;margin-top:12px;overflow-x:hidden;overflow-y:auto;padding-right:5px;width:100%;max-width:100%;display:flex;flex-wrap:wrap;align-content:flex-start}.qmslib__related__popup__container .panel__item .related__item__inline{max-width:100%}.qmslib__related__popup__container .panel__item .related__item__content{height:32px;line-height:32px;background-color:var(--related-item-background);max-width:100%;margin-bottom:5px;margin-left:2.5px;margin-right:2.5px}.qmslib__related__popup__container .panel__item .related__item__content .mat-icon{color:var(--related-mat-icon-color);font-size:24px}.qmslib__related__popup__container .panel__item .related__item__content span.related__item__content_name{display:inline-block;min-width:calc(100% - 13px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:320px}.qmslib__related__popup__container .add-button-spacing-top-7px{margin-top:7px}.search__module-result{margin:1.5rem;padding:0 0 .5rem 0px}.search__module-result .search__module-title{font-size:14px;font-weight:600}.search__module-result .search__option{height:auto;line-height:normal;padding:0;border-bottom:1px solid #e0e0e0}.search__module-result .search__option .qms-list-item.mat-2-line.image-item{height:auto}.search__module-result .search__option .qms-list-item-content{margin:0;border-bottom:none}.search__module-result .search__option .qms-list-item-content .material-icons-outlined.leading-icon,.search__module-result .search__option .qms-list-item-content mat-icon.leading-icon{padding:4px 0 4px 4px}.search__module-result .search__option .qms-list-item-content .caption{overflow:hidden;line-height:normal;white-space:normal;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;padding:0;margin:0}.search__module-result .search__option .qms-list-item-content .caption span.search__result__parent-name{display:inline-block;width:auto;width:calc(100% - 13px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.search__module-result .search__option .qms-list-item-content .default-subtitle{color:#00000061}.search__module-result .search__option .qms-list-item-content .search__description-icon{margin-right:0;width:12px;height:12px;font-size:12px}.search__module-result .search__option .qms-list-item-content .qms-list-text{border-bottom:none;height:auto}.search__module-result .search__option .qms-list-item-content .breadcrumb-container .qms-breadcrumb-item .mat-icon{font-size:16px!important;padding-bottom:1px}.search__module-result .search__option.mat-mdc-option:hover:not(.mat-option-disabled),.search__module-result .search__option .mat-option:focus:not(.mat-option-disabled){background:transparent!important}.search__module-result svg{display:block}.module-name{margin-bottom:20px;padding:0;font-weight:600;font-family:Raleway}.padding-5{padding:5px}.mat-mdc-autocomplete_related-viewport{height:100%;max-height:100%!important}.mat-mdc-autocomplete_related-viewport .cdk-virtual-scroll-content-wrapper{width:100%}.mat-mdc-autocomplete_related-viewport .related-viewport{min-height:10.25rem}\n"], dependencies: [{ kind: "directive", type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i8.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i9.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i10.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i2.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i2.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i2.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "component", type: i11.QMSButton, selector: "button[qms-btn], button[qms-btn-lg], button[qms-btn-outlined],\n button[qms-btn-outlined-lg], button[qms-btn-text], button[qms-btn-text-lg],\n button[qms-btn-fab],button[qms-btn-fab-sm],button[qms-btn-fab-ext],\n button[qms-btn-fab-outlined],button[qms-btn-fab-outlined-sm],button[qms-btn-fab-outlined-ext]", inputs: ["disabled", "color"], exportAs: ["qmsButton"] }, { kind: "component", type: i11.QMSButtonIcon, selector: "button[qms-btn-icon]", inputs: ["disabled", "color", "active"], exportAs: ["qmsButtonIcon"] }, { kind: "component", type: i12.QMSListItem, selector: "qms-list-item", inputs: ["type", "disabled"] }, { kind: "directive", type: i12.QMSListLeadingIcon, selector: "[leading-icon]" }, { kind: "directive", type: i12.QMSListLine, selector: "[qms-line]", inputs: ["size", "type", "color"] }, { kind: "directive", type: i12.QMSListHeader, selector: "[qms-list-header]" }, { kind: "directive", type: i13.QMSToolTipRendererDirective, selector: "[qms-tool-tip]", inputs: ["showToolTip", "mode", "qms-tool-tip", "contentTemplate", "position"] }, { kind: "component", type: i14.QMSBreadcrumb, selector: "qms-breadcrumb", inputs: ["nodes", "type", "maxLine", "numDisplayItem", "onlyItem", "disabledLastItem"], outputs: ["onItemClick"] }, { kind: "component", type: i15.TreeComponent, selector: "qms-tree", inputs: ["treeData", "treeConfig", "selectedData", "selectedRiskData", "disabledList", "expandOnTitleClick", "expandToChildNode", "parentNodeOnClick"], outputs: ["selectNodeEvent", "selectFolderEvent", "checkBoxEvent", "childCheckedEvent", "nodeExpandEvent", "treeControlNodes", "nodeCondensedEvent"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
454
452
|
}
|
455
453
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SelectOneDialog, decorators: [{
|
456
454
|
type: Component,
|
457
|
-
args: [{ selector: 'qms-select-one', encapsulation: ViewEncapsulation.None, template: "<div class=\"qmslib__related__popup__container\">\n <div>\n <span mat-icon-button class=\"button__close\" (click)=\"onCloseClick()\">\n <mat-icon mat-icon>close</mat-icon>\n </span>\n <div class=\"module-name\" mat-dialog-content>\n <span>{{ moduleName }}</span>\n </div>\n </div>\n\n <div class=\"input__field\">\n <input type=\"text\" placeholder=\"{{ LANG.SEARCH }}\" matInput [formControl]=\"myControl\" [matAutocomplete]=\"auto\" />\n <mat-icon>search</mat-icon>\n </div>\n\n <div class=\"line__divider\"></div>\n\n <mat-autocomplete mat-autocomplete autoActiveFirstOption #auto=\"matAutocomplete\">\n\n <div class=\"search__module-result\" *ngIf=\"filteredOptions.length\">\n <mat-option class=\"search__option\" *ngFor=\"let option of getModuleFilteredOptions()\" [value]=\"option\"\n (click)=\"selectItemSearched(option)\">\n <qms-list-item class=\"item-suggestion\" type=\"image-square\">\n <mat-icon leading-icon type=\"image-square\" [svgIcon]=\"getNodeIcon(option)\"></mat-icon>\n <div qms-list-header>\n <div qms-line type=\"caption\" qms-tool-tip=\"{{\n isEllipsisActive(searchItemResult) ? option.parentName : ''\n }}\" mode=\"dark\" *ngIf=\"getParentName(option)\">\n <span #searchItemResult class=\"search__result__parent-name\">\n {{ option.parentName }}\n </span>\n </div>\n <div qms-line type=\"subtitle\" class=\"search__option-name\">\n {{ option.itemName }}\n </div>\n <div class=\"caption\" *ngIf=\"option.breadcumbs && option.breadcumbs.length\">\n <qms-breadcrumb class=\"breadcrumb-container\" type=\"table\" numDisplayItem=\"1\" [nodes]=\"option.breadcumbs\">\n </qms-breadcrumb>\n </div>\n </div>\n <div qms-line color=\"default-subtitle\" *ngIf=\"getItemId(option)\">\n <span>\n <mat-icon class=\"material-icons-outlined search__description-icon\">\n local_offer\n </mat-icon>\n </span>\n {{ getItemId(option) }}\n </div>\n </qms-list-item>\n </mat-option>\n </div>\n </mat-autocomplete>\n\n <div class=\"row\">\n <div class=\"qms-scrollbar col-12 qmslib_related_popup_content panel__content_item\">\n <mat-expansion-panel hideToggle id=\"qmslib_related_popup_common_001\" [expanded]=\"isCommonExpanded\"\n (opened)=\"isCommonExpanded = true\" (closed)=\"isCommonExpanded = false\" class=\"panel-tree\">\n <div id=\"qmslib_related_popup_common_002\">\n <qms-tree [treeData]=\"treeData\" [treeConfig]=\"treeConfig\" [selectedData]=\"selectedData\"\n [selectedRiskData]=\"selectedRiskData\" [disabledList]=\"disabledList\"\n (selectNodeEvent)=\"selectNodeTreeEvent($event)\" (nodeExpandEvent)=\"nodeExpandEvent($event)\"\n [expandOnTitleClick]=\"false\" [expandToChildNode]=\"expandToChildNode\"\n (nodeCondensedEvent)=\"nodeCondensedEvent($event)\"></qms-tree>\n </div>\n </mat-expansion-panel>\n </div>\n </div>\n\n <!-- <div *ngIf=\"checkedNodeList.length\" class=\"line__divider\"></div>\n\n <div *ngIf=\"checkedNodeList.length\" class=\"panel__item qms-scrollbar\">\n <div class=\"related__item__inline\" *ngFor=\"let item of checkedNodeList\">\n <button\n *ngIf=\"item.itemName\"\n mat-button\n class=\"related__item__content\"\n qms-tool-tip=\"{{\n isEllipsisActive(itemName) ? getItemChipName(item) : ''\n }}\"\n mode=\"dark\"\n >\n <span class=\"related__item__content_name\" #itemName>{{\n getItemChipName(item)\n }}</span>\n <mat-icon (click)=\"removeCheckedNodeList()\">cancel</mat-icon>\n </button>\n </div>\n </div> -->\n\n <div class=\"line__divider\"></div>\n\n <div class=\"confirm__button__groups\">\n <button qms-btn [class.add-button-spacing-top-7px]=\"!checkedNodeList.length\" (click)=\"onAddClick()\">\n {{ LANG.ADD }} {{ checkedNodeList?.length ? '(' + checkedNodeList?.length + ')' : ''}}\n </button>\n <button qms-btn-text [ngStyle]=\"{ 'margin-top': checkedNodeList.length ? '0px' : '7px' }\" (click)=\"onCloseClick()\">\n {{ LANG.CANCEL }}\n </button>\n </div>\n</div>", styles: ["::-webkit-scrollbar{width:12px}::-webkit-scrollbar-track{background:#0000001f;background-clip:content-box}::-webkit-scrollbar-thumb{background:#00000061;border-radius:20px;width:4px;border:4px solid transparent;background-clip:content-box}::-webkit-scrollbar-thumb:hover{background:#00000080;background-clip:content-box;border:4px solid transparent}.qms__popup .button__close{float:right;top:-24px;right:-24px;cursor:pointer}.qms__danger button{border:none;color:var(--text-white);padding:0;text-align:center;text-decoration:none;display:inline-block;cursor:pointer;height:20px;width:20px;font-family:Open Sans;font-size:12px;font-weight:600;font-style:normal;line-height:16px}.qms__danger .red{background-color:var(--button-red-background);margin-left:10px}.qms__danger .yellow{background-color:var(--button-yellow-background);margin-left:10px;color:var(--popup-title-color)}.qms__danger .green{background-color:var(--button-green-background);margin-left:10px}.confirm__button__groups{margin-top:11px}.confirm__button__groups button{min-height:36px;width:auto;font-family:Open Sans;font-weight:500;font-size:14px;letter-spacing:1px;line-height:16px;padding-left:15px;padding-right:15px;margin-right:5px;float:right}.confirm__button__groups .confirm{background:var(--button-background)}.confirm__button__groups .confirm:hover{background:var(--primary-button-background-color);color:var(--primary-button-text-color)}.confirm__button__groups .confirm:disabled{cursor:not-allowed}.confirm__button__groups .cancel{background:var(--button-background)}.confirm__button__groups .cancel:hover{background:var(--primary-button-background-color);color:var(--primary-button-text-color)}.qms-list-item.item-suggestion .image-square.wrap-image{width:2.5rem!important;height:100%!important;background:transparent;align-self:center;margin-right:0}::ng-deep .mat-mdc-option:hover:not(.mat-option-disabled),.mat-option:focus:not(.mat-option-disabled){background:transparent!important}.qmslib__related__popup__container .input__field{display:flex;align-items:center}.qmslib__related__popup__container .input__field input{width:100%;padding:10px;outline:none;border:none;background:var(--background-input-text)}.qmslib__related__popup__container .input__field .mat-icon{margin-left:-30px;cursor:pointer;vertical-align:middle}.qmslib__related__popup__container .line__divider{border-bottom:1px solid #ccc;height:1px;margin-top:10px;min-width:300px;max-width:100%}.qmslib__related__popup__container .button__close{float:right;top:-24px;right:-24px;cursor:pointer}.qmslib__related__popup__container .panel__content{height:450px;overflow:auto;margin-top:12px}.qmslib__related__popup__container .panel__content_item{height:350px;overflow:auto;margin-top:12px}.qmslib__related__popup__container .panel-tree .mat-expansion-panel-body{padding:0 12px 12px}.qmslib__related__popup__container .mat-expansion-panel-header{height:30px;font-size:12px;letter-spacing:1px;font-family:Raleway;font-weight:600;padding:0}.qmslib__related__popup__container .mat-expansion-panel-header .mat-expansion-panel-header-title{align-items:center;margin-left:12px}.qmslib__related__popup__container .mat-expansion-panel-header .related_popup_toggle-btn{width:1.5rem;height:1.5rem;line-height:1.5rem}.qmslib__related__popup__container .mat-expansion-panel:not([class*=mat-elevation-z]){box-shadow:none}.qmslib__related__popup__container .panel__item{height:100px;margin-top:12px;overflow-x:hidden;overflow-y:auto;padding-right:5px;width:100%;max-width:100%;display:flex;flex-wrap:wrap;align-content:flex-start}.qmslib__related__popup__container .panel__item .related__item__inline{max-width:100%}.qmslib__related__popup__container .panel__item .related__item__content{height:32px;line-height:32px;background-color:var(--related-item-background);max-width:100%;margin-bottom:5px;margin-left:2.5px;margin-right:2.5px}.qmslib__related__popup__container .panel__item .related__item__content .mat-icon{color:var(--related-mat-icon-color);font-size:24px}.qmslib__related__popup__container .panel__item .related__item__content span.related__item__content_name{display:inline-block;min-width:calc(100% - 13px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:320px}.qmslib__related__popup__container .add-button-spacing-top-7px{margin-top:7px}.search__module-result{margin:1.5rem;padding:0 0 .5rem 0px}.search__module-result .search__module-title{font-size:14px;font-weight:600}.search__module-result .search__option{height:auto;line-height:normal;padding:0;border-bottom:1px solid #e0e0e0}.search__module-result .search__option .qms-list-item.mat-2-line.image-item{height:auto}.search__module-result .search__option .qms-list-item-content{margin:0;border-bottom:none}.search__module-result .search__option .qms-list-item-content .material-icons-outlined.leading-icon,.search__module-result .search__option .qms-list-item-content mat-icon.leading-icon{padding:4px 0 4px 4px}.search__module-result .search__option .qms-list-item-content .caption{overflow:hidden;line-height:normal;white-space:normal;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;padding:0;margin:0}.search__module-result .search__option .qms-list-item-content .caption span.search__result__parent-name{display:inline-block;width:auto;width:calc(100% - 13px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.search__module-result .search__option .qms-list-item-content .default-subtitle{color:#00000061}.search__module-result .search__option .qms-list-item-content .search__description-icon{margin-right:0;width:12px;height:12px;font-size:12px}.search__module-result .search__option .qms-list-item-content .qms-list-text{border-bottom:none;height:auto}.search__module-result .search__option .qms-list-item-content .breadcrumb-container .qms-breadcrumb-item .mat-icon{font-size:16px!important;padding-bottom:1px}.search__module-result .search__option.mat-mdc-option:hover:not(.mat-option-disabled),.search__module-result .search__option .mat-option:focus:not(.mat-option-disabled){background:transparent!important}.search__module-result svg{display:block}.module-name{margin-bottom:20px;padding:0;font-weight:600;font-family:Raleway}.padding-5{padding:5px}.mat-mdc-autocomplete_related-viewport{height:100%;max-height:100%!important}.mat-mdc-autocomplete_related-viewport .cdk-virtual-scroll-content-wrapper{width:100%}.mat-mdc-autocomplete_related-viewport .related-viewport{min-height:10.25rem}\n"] }]
|
458
|
-
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.TranslateLibraryService }, { type: i2.MatDialogRef }, { type: i3.QMSSelectOneGlobalService }, { type: i4.MatIconRegistry }, { type: i5.DomSanitizer }, { type: i6.QMSIconRegistryService }, { type:
|
455
|
+
args: [{ selector: 'qms-select-one', encapsulation: ViewEncapsulation.None, template: "<h2 mat-dialog-title>\n <span>{{ moduleName }}</span>\n <button qms-btn-icon class=\"close-btn\" (click)=\"onCloseClick()\">\n <mat-icon mat-icon>close</mat-icon>\n </button>\n</h2>\n<mat-dialog-content>\n <mat-autocomplete mat-autocomplete autoActiveFirstOption #auto=\"matAutocomplete\">\n <div class=\"search__module-result\" *ngIf=\"filteredOptions.length\">\n <mat-option class=\"search__option\" *ngFor=\"let option of getModuleFilteredOptions()\" [value]=\"option\"\n (click)=\"selectItemSearched(option)\">\n <qms-list-item class=\"item-suggestion\" type=\"image-square\">\n <mat-icon leading-icon type=\"image-square\" [svgIcon]=\"getNodeIcon(option)\"></mat-icon>\n <div qms-list-header>\n <div qms-line type=\"caption\" qms-tool-tip=\"{{\n isEllipsisActive(searchItemResult) ? option.parentName : ''\n }}\" mode=\"dark\" *ngIf=\"getParentName(option)\">\n <span #searchItemResult class=\"search__result__parent-name\">\n {{ option.parentName }}\n </span>\n </div>\n <div qms-line type=\"subtitle\" class=\"search__option-name\">\n {{ option.itemName }}\n </div>\n <div class=\"caption\" *ngIf=\"option.breadcumbs && option.breadcumbs.length\">\n <qms-breadcrumb class=\"breadcrumb-container\" type=\"table\" numDisplayItem=\"1\" [nodes]=\"option.breadcumbs\">\n </qms-breadcrumb>\n </div>\n </div>\n <div qms-line color=\"default-subtitle\" *ngIf=\"getItemId(option)\">\n <span>\n <mat-icon class=\"material-icons-outlined search__description-icon\">\n local_offer\n </mat-icon>\n </span>\n {{ getItemId(option) }}\n </div>\n </qms-list-item>\n </mat-option>\n </div>\n </mat-autocomplete>\n\n <div class=\"row\">\n <div class=\"qms-scrollbar col-12 qmslib_related_popup_content panel__content_item\">\n <mat-expansion-panel hideToggle id=\"qmslib_related_popup_common_001\" [expanded]=\"isCommonExpanded\"\n (opened)=\"isCommonExpanded = true\" (closed)=\"isCommonExpanded = false\" class=\"panel-tree\">\n <div id=\"qmslib_related_popup_common_002\">\n <qms-tree [treeData]=\"treeData\" [treeConfig]=\"treeConfig\" [selectedData]=\"selectedData\"\n [selectedRiskData]=\"selectedRiskData\" [disabledList]=\"disabledList\"\n (selectNodeEvent)=\"selectNodeTreeEvent($event)\" (nodeExpandEvent)=\"nodeExpandEvent($event)\"\n [expandOnTitleClick]=\"false\" [expandToChildNode]=\"expandToChildNode\"\n (nodeCondensedEvent)=\"nodeCondensedEvent($event)\"></qms-tree>\n </div>\n </mat-expansion-panel>\n </div>\n </div>\n</mat-dialog-content>\n<mat-dialog-actions>\n <button qms-btn-text (click)=\"onCloseClick()\">\n {{ LANG.CANCEL }}\n </button>\n <button qms-btn (click)=\"onAddClick()\">\n {{ LANG.ADD }} {{ checkedNodeList?.length ? '(' + checkedNodeList?.length + ')' : ''}}\n </button>\n</mat-dialog-actions>", styles: ["::-webkit-scrollbar{width:12px}::-webkit-scrollbar-track{background:#0000001f;background-clip:content-box}::-webkit-scrollbar-thumb{background:#00000061;border-radius:20px;width:4px;border:4px solid transparent;background-clip:content-box}::-webkit-scrollbar-thumb:hover{background:#00000080;background-clip:content-box;border:4px solid transparent}.qms__popup .button__close{float:right;top:-24px;right:-24px;cursor:pointer}.qms__danger button{border:none;color:var(--text-white);padding:0;text-align:center;text-decoration:none;display:inline-block;cursor:pointer;height:20px;width:20px;font-family:Open Sans;font-size:12px;font-weight:600;font-style:normal;line-height:16px}.qms__danger .red{background-color:var(--button-red-background);margin-left:10px}.qms__danger .yellow{background-color:var(--button-yellow-background);margin-left:10px;color:var(--popup-title-color)}.qms__danger .green{background-color:var(--button-green-background);margin-left:10px}.confirm__button__groups{margin-top:11px}.confirm__button__groups button{min-height:36px;width:auto;font-family:Open Sans;font-weight:500;font-size:14px;letter-spacing:1px;line-height:16px;padding-left:15px;padding-right:15px;margin-right:5px;float:right}.confirm__button__groups .confirm{background:var(--button-background)}.confirm__button__groups .confirm:hover{background:var(--primary-button-background-color);color:var(--primary-button-text-color)}.confirm__button__groups .confirm:disabled{cursor:not-allowed}.confirm__button__groups .cancel{background:var(--button-background)}.confirm__button__groups .cancel:hover{background:var(--primary-button-background-color);color:var(--primary-button-text-color)}.qms-list-item.item-suggestion .image-square.wrap-image{width:2.5rem!important;height:100%!important;background:transparent;align-self:center;margin-right:0}::ng-deep .mat-mdc-option:hover:not(.mat-option-disabled),.mat-option:focus:not(.mat-option-disabled){background:transparent!important}.qmslib__related__popup__container .input__field{display:flex;align-items:center}.qmslib__related__popup__container .input__field input{width:100%;padding:10px;outline:none;border:none;background:var(--background-input-text)}.qmslib__related__popup__container .input__field .mat-icon{margin-left:-30px;cursor:pointer;vertical-align:middle}.qmslib__related__popup__container .line__divider{border-bottom:1px solid #ccc;height:1px;margin-top:10px;min-width:300px;max-width:100%}.qmslib__related__popup__container .button__close{float:right;top:-24px;right:-24px;cursor:pointer}.qmslib__related__popup__container .panel__content{height:450px;overflow:auto;margin-top:12px}.qmslib__related__popup__container .panel__content_item{height:350px;overflow:auto;margin-top:12px}.qmslib__related__popup__container .panel-tree .mat-expansion-panel-body{padding:0 12px 12px}.qmslib__related__popup__container .mat-expansion-panel-header{height:30px;font-size:12px;letter-spacing:1px;font-family:Raleway;font-weight:600;padding:0}.qmslib__related__popup__container .mat-expansion-panel-header .mat-expansion-panel-header-title{align-items:center;margin-left:12px}.qmslib__related__popup__container .mat-expansion-panel-header .related_popup_toggle-btn{width:1.5rem;height:1.5rem;line-height:1.5rem}.qmslib__related__popup__container .mat-expansion-panel:not([class*=mat-elevation-z]){box-shadow:none}.qmslib__related__popup__container .panel__item{height:100px;margin-top:12px;overflow-x:hidden;overflow-y:auto;padding-right:5px;width:100%;max-width:100%;display:flex;flex-wrap:wrap;align-content:flex-start}.qmslib__related__popup__container .panel__item .related__item__inline{max-width:100%}.qmslib__related__popup__container .panel__item .related__item__content{height:32px;line-height:32px;background-color:var(--related-item-background);max-width:100%;margin-bottom:5px;margin-left:2.5px;margin-right:2.5px}.qmslib__related__popup__container .panel__item .related__item__content .mat-icon{color:var(--related-mat-icon-color);font-size:24px}.qmslib__related__popup__container .panel__item .related__item__content span.related__item__content_name{display:inline-block;min-width:calc(100% - 13px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:320px}.qmslib__related__popup__container .add-button-spacing-top-7px{margin-top:7px}.search__module-result{margin:1.5rem;padding:0 0 .5rem 0px}.search__module-result .search__module-title{font-size:14px;font-weight:600}.search__module-result .search__option{height:auto;line-height:normal;padding:0;border-bottom:1px solid #e0e0e0}.search__module-result .search__option .qms-list-item.mat-2-line.image-item{height:auto}.search__module-result .search__option .qms-list-item-content{margin:0;border-bottom:none}.search__module-result .search__option .qms-list-item-content .material-icons-outlined.leading-icon,.search__module-result .search__option .qms-list-item-content mat-icon.leading-icon{padding:4px 0 4px 4px}.search__module-result .search__option .qms-list-item-content .caption{overflow:hidden;line-height:normal;white-space:normal;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;padding:0;margin:0}.search__module-result .search__option .qms-list-item-content .caption span.search__result__parent-name{display:inline-block;width:auto;width:calc(100% - 13px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.search__module-result .search__option .qms-list-item-content .default-subtitle{color:#00000061}.search__module-result .search__option .qms-list-item-content .search__description-icon{margin-right:0;width:12px;height:12px;font-size:12px}.search__module-result .search__option .qms-list-item-content .qms-list-text{border-bottom:none;height:auto}.search__module-result .search__option .qms-list-item-content .breadcrumb-container .qms-breadcrumb-item .mat-icon{font-size:16px!important;padding-bottom:1px}.search__module-result .search__option.mat-mdc-option:hover:not(.mat-option-disabled),.search__module-result .search__option .mat-option:focus:not(.mat-option-disabled){background:transparent!important}.search__module-result svg{display:block}.module-name{margin-bottom:20px;padding:0;font-weight:600;font-family:Raleway}.padding-5{padding:5px}.mat-mdc-autocomplete_related-viewport{height:100%;max-height:100%!important}.mat-mdc-autocomplete_related-viewport .cdk-virtual-scroll-content-wrapper{width:100%}.mat-mdc-autocomplete_related-viewport .related-viewport{min-height:10.25rem}\n"] }]
|
456
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.TranslateLibraryService }, { type: i2.MatDialogRef }, { type: i3.QMSSelectOneGlobalService }, { type: i4.MatIconRegistry }, { type: i5.DomSanitizer }, { type: i6.QMSIconRegistryService }, { type: i16.SelectOnePopupData, decorators: [{
|
459
457
|
type: Inject,
|
460
458
|
args: [MAT_DIALOG_DATA]
|
461
459
|
}] }], propDecorators: { dataTrees: [{
|
@@ -465,4 +463,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
465
463
|
type: HostListener,
|
466
464
|
args: ['window:message', ['$event']]
|
467
465
|
}] } });
|
468
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LW9uZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9xbXMtYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvc2VsZWN0LW9uZS9zZWxlY3Qtb25lLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Ftcy1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9zZWxlY3Qtb25lL3NlbGVjdC1vbmUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixZQUFZLEVBQXdCLGlCQUFpQixFQUErQixZQUFZLEVBQWMsTUFBTSxlQUFlLENBQUM7QUFDaEssT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXBELE9BQU8sRUFBZ0IsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFHekUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBS3pELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN2RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQVVuRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVU1RCxNQUFNLE9BQU8sZUFBZTtJQXdDMUIsWUFDVSxLQUF3QixFQUN6QixTQUFrQyxFQUNsQyxTQUF3QyxF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LENBQUMsQ0FBQztJQUNWLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxFQUFVO1FBQzNCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEtBQUssRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFDMUYsSUFBSSxLQUFLLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDZixJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMxQyxDQUFDO0lBQ0gsQ0FBQzsrR0FsZlUsZUFBZSxnUUFnRGhCLGVBQWU7bUdBaERkLGVBQWUsb0pBcUNaLGFBQWEsZ0RDekU3QixpMElBbUdNOzs0RkQvRE8sZUFBZTtrQkFOM0IsU0FBUzsrQkFDRSxnQkFBZ0IsaUJBR1gsaUJBQWlCLENBQUMsSUFBSTs7MEJBa0RsQyxNQUFNOzJCQUFDLGVBQWU7eUNBWFEsU0FBUztzQkFBekMsWUFBWTt1QkFBQyxhQUFhLEVBQUUsRUFBRTtnQkFxQy9CLFNBQVM7c0JBRFIsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBFdmVudEVtaXR0ZXIsIE9uRGVzdHJveSwgVmlld0NoaWxkLCBWaWV3RW5jYXBzdWxhdGlvbiwgQWZ0ZXJWaWV3Q2hlY2tlZCwgUXVlcnlMaXN0LCBWaWV3Q2hpbGRyZW4sIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbXBvbmVudCwgSG9zdExpc3RlbmVyLCBJbmplY3QsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVW50eXBlZEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0QXV0b2NvbXBsZXRlVHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2F1dG9jb21wbGV0ZSc7XG5pbXBvcnQgeyBNYXREaWFsb2dSZWYsIE1BVF9ESUFMT0dfREFUQSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBNYXRJY29uUmVnaXN0cnkgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFRyYW5zbGF0ZUxpYnJhcnlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJhbnNsYXRpb24tcmVnaXN0cnkuc2VydmljZSc7XG5pbXBvcnQgeyBRTVNJY29uUmVnaXN0cnlTZXJ2aWNlIH0gZnJvbSAnLi4vYXBwLWljb24vaWNvbi1yZWdpc3RyeS5zZXJ2aWNlJztcblxuaW1wb3J0IHsgRG9jdW1lbnROb2RlVHlwZSB9IGZyb20gJy4vY29tbW9uL2RvY3VtZW50LWZvbGRlci10eXBlLmVudW0nO1xuaW1wb3J0IHsgTW9kdWxlVHlwZSB9IGZyb20gJy4vY29tbW9uL21vZHVsZS10eXBlLmVudW0nO1xuaW1wb3J0IHsgU2hvd0hpZGVTZWFyY2hSZXN1bHRDb25zdCB9IGZyb20gJy4vY29tbW9uL3Nob3ctaGlkZS1zZWFyY2gtcmVzdWx0LmNvbnN0JztcbmltcG9ydCB7IFNlbGVjdE9uZVBvcHVwRGF0YSB9IGZyb20gJy4vY29tbW9uL3NlbGVjdG9uZS1wb3B1cC1kYXRhLm1vZGVsJztcbmltcG9ydCB7IElTZWxlY3RPbmVJdGVtIH0gZnJvbSAnLi9jb21tb24vc2VsZWN0LWRhdGEubW9kZWwnO1xuaW1wb3J0IHsgU2VsZWN0ZWROb2RlIH0gZnJvbSAnLi9jb21tb24vc2VsZWN0ZWQtbm9kZS5tb2RlbCc7XG5pbXBvcnQgeyBRTVNTZWxlY3RPbmVHbG9iYWxTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlL3NlbGVjdC1vbmUtZ2xvYmFsLnNlcnZpY2UnO1xuXG5pbXBvcnQgeyBUcmVlQ29uZmlnIH0gZnJvbSAnLi4vdHJlZS9tb2RlbC90cmVlLWNvbmZpZy5tb2RlbCc7XG5pbXBvcnQgeyBUcmVlRmxhdE5vZGUgfSBmcm9tICcuLi90cmVlL21vZGVsL3RyZWUtZmxhdC1ub2RlLm1vZGVsJztcbmltcG9ydCB7IFRyZWVOb2RlIH0gZnJvbSAnLi4vdHJlZS9tb2RlbC90cmVlLW5vZGUubW9kZWwnO1xuaW1wb3J0IHsgVHJlZU1vZGVsIH0gZnJvbSAnLi4vdHJlZS9tb2RlbC90cmVlLm1vZGVsJztcbmltcG9ydCB7IFRyZWVDb21wb25lbnQgfSBmcm9tICcuLi90cmVlL3RyZWUuY29tcG9uZW50JztcbmltcG9ydCB7IERhdGFUeXBlIH0gZnJvbSAnLi4vLi4vY29tbW9uL2VudW0vZGF0YS10eXBlLmVudW0nO1xuXG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncW1zLXNlbGVjdC1vbmUnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2VsZWN0LW9uZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NlbGVjdC1vbmUuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBTZWxlY3RPbmVEaWFsb2cgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3Q2hlY2tlZCB7XG4gIG5nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIExBTkc6IGFueTtcbiAgbW9kdWxlSWQgPSAwO1xuICBtb2R1bGVOYW1lID0gJyc7XG4gIHRyZWVEYXRhOiBBcnJheTxUcmVlTW9kZWw+ID0gW107XG4gIHRyZWVDb25maWc6IFRyZWVDb25maWc7XG5cbiAgY2hlY2tlZE5vZGVMaXN0OiBBcnJheTxTZWxlY3RlZE5vZGU+ID0gW107XG4gIHNlbGVjdGVkTm9kZTogQXJyYXk8U2VsZWN0ZWROb2RlPiA9IFtdO1xuICBzZWxlY3RlZERhdGE6IEFycmF5PFRyZWVGbGF0Tm9kZT4gPSBbXTtcblxuICBtb2R1bGUgPSBNb2R1bGVUeXBlO1xuICBkYXRhVHlwZSA9IERhdGFUeXBlO1xuICBpdGVtVHlwZSA9IDA7XG4gIHNlbGVjdGVkUmlza0RhdGE6IGFueSA9IFtdO1xuICBkaXNhYmxlZExpc3Q6IGFueSA9IFtdO1xuICBleHBhbmRUb0NoaWxkTm9kZTogYW55ID0gW107XG5cbiAgaXNDb21tb25FeHBhbmRlZCA9IHRydWU7XG4gIGd1aWRIZWxwZXIgPSB7XG4gICAgZW1wdHk6ICcwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAnXG4gIH07XG5cbiAgbXlDb250cm9sID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbCgpO1xuICBmaWx0ZXJlZE9wdGlvbnM6IElTZWxlY3RPbmVJdGVtW10gPSBbXTtcbiAgaXNJbnB1dFZhbHVlID0gZmFsc2U7XG4gIGl0ZW1TZWFyY2hlZDogSVNlbGVjdE9uZUl0ZW07XG4gIGl0ZW1QYXJlbnRTZWFyY2ggPSBmYWxzZTtcblxuICBzZWxlY3RlZEZvbGRlcjogVHJlZUZsYXROb2RlID0gbnVsbDtcbiAgbGlzdENoaWxkcmVuU2VsZWN0T25lOiBhbnkgPSBbXTtcblxuICBvblNlYXJjaCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgb25FeHBhbmRGb2xkZXIgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgQFZpZXdDaGlsZHJlbihUcmVlQ29tcG9uZW50LCB7fSkgZGF0YVRyZWVzOiBRdWVyeUxpc3Q8VHJlZUNvbXBvbmVudD47XG5cbiAgYXV0b0NvbXBsZXRlOiBNYXRBdXRvY29tcGxldGVUcmlnZ2VyO1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwdWJsaWMgdHJhbnNsYXRlOiBUcmFuc2xhdGVMaWJyYXJ5U2VydmljZSxcbiAgICBwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8U2VsZWN0T25lRGlhbG9nPixcbiAgICBwdWJsaWMgZ2xvYmFsU2VydmljZTogUU1TU2VsZWN0T25lR2xvYmFsU2VydmljZSxcbiAgICBwcml2YXRlIGljb25SZWdpc3RyeTogTWF0SWNvblJlZ2lzdHJ5LFxuICAgIHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXG4gICAgcHJpdmF0ZSBhcHBJY29uU2VydmljZTogUU1TSWNvblJlZ2lzdHJ5U2VydmljZSxcbiAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGE6IFNlbGVjdE9uZVBvcHVwRGF0YVxuICApIHtcbiAgICB0aGlzLm1vZHVsZUlkID0gZGF0YS5tb2R1bGVJZDtcbiAgICB0aGlzLm1vZHVsZU5hbWUgPSBkYXRhLm1vZHVsZU5hbWU7XG4gICAgdGhpcy50cmVlRGF0YSA9IGRhdGEudHJlZURhdGE7XG4gICAgdGhpcy50cmVlQ29uZmlnID0gZGF0YS50cmVlQ29uZmlnO1xuICAgIHRoaXMuc2VsZWN0ZWRSaXNrRGF0YSA9IGRhdGE/LnNlbGVjdGVkTm9kZSB8fCBbXTtcbiAgICB0aGlzLmRpc2FibGVkTGlzdCA9IGRhdGEuZGlzYWJsZWRMaXN0IHx8IFtdO1xuICAgIHRoaXMuZXhwYW5kVG9DaGlsZE5vZGUgPSBkYXRhLmV4cGFuZFRvQ2hpbGROb2RlO1xuICAgIGFwcEljb25TZXJ2aWNlLnJlZ2lzdGVyUHJvY2Vzc0ljb24oaWNvblJlZ2lzdHJ5LCBzYW5pdGl6ZXIpO1xuICAgIGFwcEljb25TZXJ2aWNlLnJlZ2lzdGVyUHJvY2Vzc0FyZWFJY29uKGljb25SZWdpc3RyeSwgc2FuaXRpemVyKTtcbiAgICBhcHBJY29uU2VydmljZS5yZWdpc3RlckRvY3VtZW50SWNvbihpY29uUmVnaXN0cnksIHNhbml0aXplcik7XG4gICAgYXBwSWNvblNlcnZpY2UucmVnaXN0ZXJGb2xkZXJJY29uKGljb25SZWdpc3RyeSwgc2FuaXRpemVyKTtcbiAgICBhcHBJY29uU2VydmljZS5yZWdpc3RlckRldmlhdGlvbkljb24oaWNvblJlZ2lzdHJ5LCBzYW5pdGl6ZXIpO1xuICAgIGFwcEljb25TZXJ2aWNlLnJlZ2lzdGVyQ2hlY2tsaXN0SWNvbihpY29uUmVnaXN0cnksIHNhbml0aXplcik7XG4gICAgYXBwSWNvblNlcnZpY2UucmVnaXN0ZXJSaXNrSWNvbihpY29uUmVnaXN0cnksIHNhbml0aXplcik7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLm5nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMubmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICAgIHRoaXMuZ2xvYmFsU2VydmljZS5zZXRTZWFyY2hSZWxhdGVkKFtdKTtcbiAgICB0aGlzLnNlbGVjdGVkRm9sZGVyID0gbnVsbDtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzptZXNzYWdlJywgWyckZXZlbnQnXSlcbiAgb25NZXNzYWdlKGV2ZW50KSB7XG4gICAgaWYgKGV2ZW50LmRhdGEgPT09IFNob3dIaWRlU2VhcmNoUmVzdWx0Q29uc3QuSElERV9TRUFSQ0hfUkVTVUxUKSB7XG4gICAgICB0aGlzLmF1dG9Db21wbGV0ZS5jbG9zZVBhbmVsKCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy50cmFuc2xhdGUuZ2V0TGFuZ3VhZ2VTdWJqZWN0JC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xuICAgICAgaWYgKHJlcykge1xuICAgICAgICB0aGlzLkxBTkcgPSB0aGlzLnRyYW5zbGF0ZS5nZXRPYmplY3RMYW5nKHJlcyk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLmdsb2JhbFNlcnZpY2Uuc2VhcmNoUmVsYXRlZC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xuICAgICAgaWYgKHJlcyAmJiByZXMubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zID0gcmVzO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5nbG9iYWxTZXJ2aWNlLmdldEl0ZW1zQ2hpbGRyZW4ucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSkuc3Vic2NyaWJlKChyZXM6IFRyZWVNb2RlbFtdKSA9PiB7XG4gICAgICBpZiAocmVzICYmIHJlcy5sZW5ndGgpIHtcbiAgICAgICAgY29uc3QgcmVzTm90RXhpc3RzID0gcmVzLmZpbHRlcihyID0+ICF0aGlzLnRyZWVEYXRhLnNvbWUodCA9PiByLnJvb3RJZCA9PSB0LnJvb3RJZCkpO1xuICAgICAgICB0aGlzLnRyZWVEYXRhID0gWy4uLnRoaXMudHJlZURhdGEsIC4uLnJlc05vdEV4aXN0c107XG5cbiAgICAgICAgaWYgKChyZXNbMF0ucGFyZW50SWQgJiYgcmVzWzBdLnBhcmVudElkICE9PSB0aGlzLmd1aWRIZWxwZXIuZW1wdHkpICYmICghdGhpcy5leHBhbmRUb0NoaWxkTm9kZS5sZW5ndGggfHwgKHRoaXMuZXhwYW5kVG9DaGlsZE5vZGUuc29tZSh4ID0+IHggIT09IHJlc1swXS5wYXJlbnRJZCkpKSkge1xuICAgICAgICAgIGxldCBfdGVtcEl0ZW1zID0gWy4uLnRoaXMuZXhwYW5kVG9DaGlsZE5vZGVdO1xuICAgICAgICAgIF90ZW1wSXRlbXMucHVzaChyZXNbMF0ucGFyZW50SWQpO1xuICAgICAgICAgIHRoaXMuZXhwYW5kVG9DaGlsZE5vZGUgPSBfdGVtcEl0ZW1zO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaXRlbVBhcmVudFNlYXJjaCkge1xuICAgICAgICAgIGNvbnN0IGFyciA9IHJlcyB8fCBbXTtcbiAgICAgICAgICBhcnIucG9wKCk7XG4gICAgICAgICAgYXJyLmZvckVhY2goeCA9PiB7XG4gICAgICAgICAgICB0aGlzLmV4cGFuZFRvQ2hpbGROb2RlLnB1c2goeC5yb290SWQpO1xuICAgICAgICAgIH0pXG5cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLml0ZW1TZWFyY2hlZCkge1xuICAgICAgICAgIHRoaXMuc2VsZWN0SXRlbVNlYXJjaGVkKHRoaXMuaXRlbVNlYXJjaGVkKTtcbiAgICAgICAgICB0aGlzLml0ZW1QYXJlbnRTZWFyY2ggPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5teUNvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoZGVib3VuY2VUaW1lKDEwMDApLCB0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSkuc3Vic2NyaWJlKCh2YWwpID0+IHtcbiAgICAgIHRoaXMuaXNJbnB1dFZhbHVlID0gdHJ1ZTtcbiAgICAgIHRoaXMub25TZWFyY2hSZWxhdGVkKHZhbCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLml0ZW1UeXBlID0gdGhpcy5nZXREYXRhVHlwZUlkKHRoaXMubW9kdWxlSWQpO1xuICB9XG5cblxuICBuZ0FmdGVyVmlld0NoZWNrZWQoKSB7XG4gICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBnZXREYXRhVHlwZUlkKG1vZHVsZUlkOiBudW1iZXIpIHtcbiAgICBsZXQgaXRlbVR5cGU7XG4gICAgc3dpdGNoIChtb2R1bGVJZCkge1xuICAgICAgY2FzZSBNb2R1bGVUeXBlLmRvY3VtZW50UHJvY2VzczpcbiAgICAgICAgaXRlbVR5cGUgPSB0aGlzLmRhdGFUeXBlLnByb2Nlc3M7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBNb2R1bGVUeXBlLmRldmlhdGlvbjpcbiAgICAgICAgaXRlbVR5cGUgPSB0aGlzLmRhdGFUeXBlLmRldmlhdGlvbjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIE1vZHVsZVR5cGUuY2hlY2tsaXN0OlxuICAgICAgICBpdGVtVHlwZSA9IHRoaXMuZGF0YVR5cGUuY2hlY2tsaXN0O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgTW9kdWxlVHlwZS5yaXNrOlxuICAgICAgICBpdGVtVHlwZSA9IHRoaXMuZGF0YVR5cGUucmlzaztcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBpdGVtVHlwZSA9IHRoaXMuZGF0YVR5cGUuZG9jdW1lbnQ7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICByZXR1cm4gaXRlbVR5cGU7XG4gIH1cblxuICBzZXRSZXN1bHRIZWlnaHQoYXJyPzogSVNlbGVjdE9uZUl0ZW1bXSkge1xuICAgIGxldCBtYXhIZWlnaHQgPSA0ODQ7XG4gICAgY29uc3QgcG9wdXBfY29udGVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3Ftc2xpYl9yZWxhdGVkX3BvcHVwX2NvbnRlbnQnKVswXSBhcyBIVE1MRWxlbWVudDtcbiAgICBjb25zdCBsaW5lX19kaXZpZGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnbGluZV9fZGl2aWRlcicpWzBdIGFzIEhUTUxFbGVtZW50O1xuICAgIGlmIChwb3B1cF9jb250ZW50ICYmIGxpbmVfX2RpdmlkZXIpIHtcbiAgICAgIG1heEhlaWdodCA9IHRoaXMuZ2V0T2Zmc2V0SGVpZ2h0KHBvcHVwX2NvbnRlbnQsIHRydWUpICsgdGhpcy5nZXRPZmZzZXRIZWlnaHQobGluZV9fZGl2aWRlciwgdHJ1ZSkgKiAyO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbnRlbnRSZXN1bHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdjZGstdmlydHVhbC1zY3JvbGwtY29udGVudC13cmFwcGVyJylbMF0gYXMgSFRNTEVsZW1lbnQ7XG4gICAgY29uc3Qgdmlld3JlcG9ydHMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdyZWxhdGVkLXZpZXdwb3J0JylbMF0gYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICBpZiAodmlld3JlcG9ydHMpIHtcbiAgICAgIGlmIChjb250ZW50UmVzdWx0Lm9mZnNldEhlaWdodCA8PSBtYXhIZWlnaHQpIHtcbiAgICAgICAgdmlld3JlcG9ydHMuc3R5bGUuaGVpZ2h0ID0gYCR7Y29udGVudFJlc3VsdC5vZmZzZXRIZWlnaHR9cHhgO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIHZpZXdyZXBvcnRzLnN0eWxlLmhlaWdodCA9IGAke21heEhlaWdodH1weGA7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgb25TZWFyY2hSZWxhdGVkKF92YWw6IGFueSkge1xuICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zID0gW107XG4gICAgaWYgKHR5cGVvZiAoX3ZhbCkgPT09ICdvYmplY3QnKSB7XG4gICAgICB0aGlzLm15Q29udHJvbC5zZXRWYWx1ZSgnJyk7XG4gICAgfVxuICAgIGVsc2UgaWYgKHR5cGVvZiAoX3ZhbCkgPT09ICdzdHJpbmcnKSB7XG4gICAgICBpZiAoISFfdmFsKSB7XG4gICAgICAgIHRoaXMub25TZWFyY2guZW1pdChfdmFsKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXRNb2R1bGVGaWx0ZXJlZE9wdGlvbnMoKSB7XG4gICAgaWYgKHRoaXMuZmlsdGVyZWRPcHRpb25zLmxlbmd0aCAmJiB0aGlzLmRpc2FibGVkTGlzdC5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IGN1cnJOb2RlID0gdGhpcy5kaXNhYmxlZExpc3RbdGhpcy5kaXNhYmxlZExpc3QubGVuZ3RoIC0gMV07XG4gICAgICBjb25zdCBpZHhQYXJlbnQgPSB0aGlzLmRpc2FibGVkTGlzdC5sZW5ndGggPj0gMiA/IHRoaXMuZGlzYWJsZWRMaXN0Lmxlbmd0aCAtIDIgOiAnJztcbiAgICAgIGNvbnN0IHBhcmVudE5vZGUgPSBpZHhQYXJlbnQgIT09ICcnID8gdGhpcy5kaXNhYmxlZExpc3RbaWR4UGFyZW50XSA6ICcnO1xuXG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuZmlsdGVyZWRPcHRpb25zLmxlbmd0aDsgaisrKSB7XG4gICAgICAgIGNvbnN0IHNlY29uZEVsID0gdGhpcy5maWx0ZXJlZE9wdGlvbnNbal07XG5cbiAgICAgICAgaWYgKHNlY29uZEVsLmlkPy50b0xvd2VyQ2FzZSgpID09PSBjdXJyTm9kZT8udG9Mb3dlckNhc2UoKSAmJiAocGFyZW50Tm9kZT8udG9Mb3dlckNhc2UoKSA9PT0gc2Vjb25kRWwucGFyZW50SWQ/LnRvTG93ZXJDYXNlKCkpKSB7XG4gICAgICAgICAgdGhpcy5maWx0ZXJlZE9wdGlvbnMuc3BsaWNlKGosIDEpO1xuICAgICAgICB9XG4gICAgICB9XG5cblxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5maWx0ZXJlZE9wdGlvbnM7XG4gIH1cblxuICBkaXNwbGF5UmVsYXRlZChyZWxhdGVkPzogSVNlbGVjdE9uZUl0ZW0pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiByZWxhdGVkID8gcmVsYXRlZC5pdGVtTmFtZSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHNlbGVjdEl0ZW1TZWFyY2hlZChpdGVtOiBJU2VsZWN0T25lSXRlbSkge1xuXG4gICAgLy8gcmVzZXQgdG8gcm9vdFxuICAgIHRoaXMuY2hlY2tlZE5vZGVMaXN0ID0gW107XG4gICAgdGhpcy5pdGVtU2VhcmNoZWQgPSBpdGVtO1xuXG4gICAgbGV0IHBvc2l0aW9uID0gLTE7XG4gICAgbGV0IG5vZGU6IGFueTtcbiAgICBsZXQgdHlwZUlkOiBudW1iZXI7XG4gICAgbGV0IHRyZWVOb2RlRHVwOiBhbnk7XG5cbiAgICBpZiAodGhpcy50cmVlQ29uZmlnLmNhbkhhdmVEdXBJZCkge1xuICAgICAgcG9zaXRpb24gPSB0aGlzLnRyZWVEYXRhLmZpbmRJbmRleCh4ID0+IHtcbiAgICAgICAgcmV0dXJuIHgucm9vdElkID09PSBpdGVtLnBhcmVudElkICYmIHguY2hpbGRJZCA9PT0gaXRlbS5pZDtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBwb3NpdGlvbiA9IHRoaXMudHJlZURhdGEuZmluZEluZGV4KHggPT4ge1xuICAgICAgICByZXR1cm4geC5yb290SWQgPT09IGl0ZW0uaWQ7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAocG9zaXRpb24gPCAwKSB7XG4gICAgICB0aGlzLml0ZW1QYXJlbnRTZWFyY2ggPSB0cnVlO1xuICAgICAgdGhpcy5vbkV4cGFuZEZvbGRlci5lbWl0KHtcbiAgICAgICAgbm9kZToge1xuICAgICAgICAgIGlkOiBpdGVtLmlkLFxuICAgICAgICAgIGl0ZW1OYW1lOiAnJyxcbiAgICAgICAgICBpdGVtVHlwZTogMCxcbiAgICAgICAgICBzdGF0dXNOYW1lOiAnJyxcbiAgICAgICAgICBwYXJlbnRJZDogJycsXG4gICAgICAgICAgcGFyZW50TmFtZTogJydcbiAgICAgICAgfSwgaXNFeHBhbmQ6IGZhbHNlXG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLml0ZW1TZWFyY2hlZCA9IG51bGw7XG4gICAgfVxuXG4gICAgdHlwZUlkID0gaXRlbS5pdGVtVHlwZTtcbiAgICBub2RlID0gdGhpcy50cmVlRGF0YVtwb3NpdGlvbl07XG5cbiAgICB0aGlzLmNoZWNrZWROb2RlTGlzdC5wdXNoKHtcbiAgICAgIG1vZHVsZUlkOiB0aGlzLm1vZHVsZUlkLFxuICAgICAgaWQ6IHRoaXMudHJlZUNvbmZpZy5jYW5IYXZlRHVwSWQgPyBub2RlLmNoaWxkSWQgOiBub2RlLnJvb3RJZCxcbiAgICAgIGl0ZW1OYW1lOiB0aGlzLnRyZWVDb25maWcuY2FuSGF2ZUR1cElkID8gbm9kZS5jaGlsZE5hbWUgOiBub2RlLnJvb3ROYW1lIHx8IG5vZGUuc3ViTmFtZSxcbiAgICAgIGl0ZW1UeXBlOiB0eXBlSWQsXG4gICAgICBpdGVtTnVtYmVySWQ6IGl0ZW0uaXRlbU51bWJlcklkLFxuICAgICAgbGV2ZWxUeXBlOiBpdGVtLmxldmVsVHlwZSxcbiAgICAgIHBhcmVudElkOiBub2RlLnJvb3RJZCxcbiAgICAgIHBhcmVudE5hbWU6IG5vZGUucm9vdE5hbWVcbiAgICB9KTtcblxuICAgIHRoaXMuc2VsZWN0ZWREYXRhID0gW107XG4gICAgdGhpcy5zZWxlY3RlZERhdGEucHVzaChub2RlKTtcblxuXG4gICAgaWYgKHRoaXMudHJlZUNvbmZpZy5jYW5IYXZlRHVwSWQpIHtcbiAgICAgIHRyZWVOb2RlRHVwID0ge1xuICAgICAgICBpZDogbm9kZS5jaGlsZElkLFxuICAgICAgICBuYW1lOiAhIW5vZGUucm9vdElkID8gbm9kZS5zdWJOYW1lIDogbm9kZS5yb290TmFtZSxcbiAgICAgICAgY2hpbGRyZW46IFtdLFxuICAgICAgICBwYXJlbnRJZDogbm9kZS5yb290SWRcbiAgICAgIH07XG4gICAgfVxuXG4gICAgY29uc3QgdHJlZU5vZGUgPSB7XG4gICAgICBpZDogbm9kZS5yb290SWQsXG4gICAgICBuYW1lOiAhIW5vZGUucm9vdElkID8gbm9kZS5zdWJOYW1lIDogbm9kZS5yb290TmFtZSxcbiAgICAgIGNoaWxkcmVuOiBbXSxcbiAgICAgIHBhcmVudElkOiBub2RlLnBhcmVudElkXG4gICAgfTtcblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5kYXRhVHJlZXMudG9BcnJheSgpWzBdLnRvZG9Gb2xkZXJTZWxlY3Rpb24oW3RoaXMudHJlZUNvbmZpZy5jYW5IYXZlRHVwSWQgPyB0cmVlTm9kZUR1cCA6IHRyZWVOb2RlXSk7XG4gICAgICB0aGlzLmV4cGFuZEFuZFNjcm9sbFRvTm9kZSh0aGlzLnRyZWVDb25maWcuY2FuSGF2ZUR1cElkID8gdHJlZU5vZGVEdXAgOiB0cmVlTm9kZSwgbm9kZSk7XG4gICAgfSwgNTAwKTtcblxuICAgIHJldHVybjtcbiAgfVxuXG4gIGV4cGFuZEFuZFNjcm9sbFRvTm9kZSh0cmVlTm9kZTogVHJlZU5vZGUsIG5vZGU6IFRyZWVNb2RlbCkge1xuICAgIGxldCBwYXJlbnQ7XG4gICAgbGV0IHBhcmVudExpc3QgPSBbXTtcbiAgICBpZiAodGhpcy50cmVlQ29uZmlnLmNhbkhhdmVEdXBJZCkge1xuICAgICAgcGFyZW50ID0gdGhpcy50cmVlRGF0YS5maW5kKHggPT4geC5yb290SWQgPT09IG5vZGUucm9vdElkICYmIHguY2hpbGRJZCA9PT0gbm9kZS5jaGlsZElkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcGFyZW50ID0gdGhpcy50cmVlRGF0YS5maW5kKHggPT4geC5yb290SWQgPT09IG5vZGUucGFyZW50SWQpO1xuICAgIH1cblxuICAgIGlmIChwYXJlbnQpIHtcbiAgICAgIHBhcmVudExpc3QucHVzaCh7XG4gICAgICAgIGlkOiBwYXJlbnQucm9vdElkLFxuICAgICAgICBpdGVtTmFtZTogcGFyZW50LnJvb3ROYW1lLFxuICAgICAgICBwYXJlbnRJZDogcGFyZW50LnBhcmVudElkXG4gICAgICB9KTtcbiAgICAgIHBhcmVudExpc3QgPSB0aGlzLmdldFBhcmVudExpbmVPZk5vZGUocGFyZW50TGlzdCwgcGFyZW50KTtcbiAgICB9XG4gICAgcGFyZW50TGlzdC51bnNoaWZ0KHRyZWVOb2RlKTtcblxuICAgIHBhcmVudExpc3QucmV2ZXJzZSgpLmZvckVhY2goeCA9PiB7XG4gICAgICB0aGlzLmZvY3VzRWRpdEl0ZW0oeCk7XG4gICAgfSk7XG5cbiAgfVxuXG4gIGdldFBhcmVudExpbmVPZk5vZGUobGlzdFBhcmVudCwgbm9kZTogVHJlZU1vZGVsKSB7XG4gICAgbGV0IHBhcmVudDtcbiAgICBwYXJlbnQgPSB0aGlzLnRyZWVEYXRhLmZpbmQoeCA9PiB4LnJvb3RJZCA9PT0gbm9kZS5wYXJlbnRJZCk7XG5cbiAgICBpZiAocGFyZW50KSB7XG4gICAgICBsaXN0UGFyZW50LnB1c2goe1xuICAgICAgICBpZDogcGFyZW50LnJvb3RJZCxcbiAgICAgICAgaXRlbU5hbWU6IHBhcmVudC5yb290TmFtZSxcbiAgICAgICAgcGFyZW50SWQ6IHBhcmVudC5wYXJlbnRJZFxuICAgICAgfSk7XG4gICAgICB0aGlzLmdldFBhcmVudExpbmVPZk5vZGUobGlzdFBhcmVudCwgcGFyZW50KTtcbiAgICB9XG5cbiAgICByZXR1cm4gbGlzdFBhcmVudDtcbiAgfVxuXG4gIGZvY3VzRWRpdEl0ZW0oc2VsZWN0ZWRPcHRpb24pIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5kYXRhVHJlZXMudG9BcnJheSgpWzBdLmdldE5vZGVCeUlkQW5kUGFyZW50SWQoc2VsZWN0ZWRPcHRpb24uaWQsIHNlbGVjdGVkT3B0aW9uLnBhcmVudElkKTtcblxuICAgIGlmIChub2RlKSB7XG4gICAgICB0aGlzLmRhdGFUcmVlcy50b0FycmF5KClbMF0uZXhwYW5kTm9kZShub2RlKTtcbiAgICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChgXyR7bm9kZS5wYXJlbnRJZCA/IG5vZGUucGFyZW50SWQudG9Mb3dlckNhc2UoKSA6ICcnfV8ke25vZGUuaWQudG9Mb3dlckNhc2UoKX1fJHtub2RlLmxldmVsfWApO1xuXG4gICAgICBpZiAoZWxlbWVudCkge1xuICAgICAgICBlbGVtZW50LnNjcm9sbEludG9WaWV3KGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBvbkNsb3NlQ2xpY2soKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZEZvbGRlciA9IG51bGw7XG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKTtcbiAgfTtcblxuICBvbkFkZENsaWNrKCkge1xuICAgIHRoaXMuc2VsZWN0ZWRGb2xkZXIgPSBudWxsO1xuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHRoaXMuY2hlY2tlZE5vZGVMaXN0KTtcbiAgfVxuXG4gIGdldE9mZnNldEhlaWdodChlbGVtZW50OiBIVE1MRWxlbWVudCwgaW5jbHVkZU1hcmdpbjogYm9vbGVhbik6IG51bWJlciB7XG4gICAgbGV0IGVsbUhlaWdodCA9IDAsIGVsbU1hcmdpbiA9IDA7XG5cbiAgICBlbG1IZWlnaHQgPSBlbGVtZW50Lm9mZnNldEhlaWdodDtcbiAgICBpZiAoaW5jbHVkZU1hcmdpbikge1xuICAgICAgY29uc3Qgc3R5bGUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KTtcbiAgICAgIGVsbU1hcmdpbiA9IHBhcnNlRmxvYXQoc3R5bGUubWFyZ2luVG9wLnJlcGxhY2UoJ3B4JywgJycpKSArIHBhcnNlRmxvYXQoc3R5bGUubWFyZ2luQm90dG9tLnJlcGxhY2UoJ3B4JywgJycpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gKGVsbUhlaWdodCArIGVsbU1hcmdpbik7XG4gIH1cblxuICBnZXRJdGVtQ2hpcE5hbWUoaXRlbTogU2VsZWN0ZWROb2RlKSB7XG4gICAgaWYgKGl0ZW0uaXRlbVR5cGUgPT09IERhdGFUeXBlLmNoZWNrbGlzdCB8fCBpdGVtLml0ZW1UeXBlID09PSBEYXRhVHlwZS5kZXZpYXRpb24pIHtcbiAgICAgIHJldHVybiAoaXRlbS5wYXJlbnROYW1lICYmIGl0ZW0uaXRlbU5hbWUgIT09IGl0ZW0ucGFyZW50TmFtZSkgPyBgJHtpdGVtLnBhcmVudE5hbWV9LyR7aXRlbS5pdGVtTmFtZX1gIDogaXRlbS5pdGVtTmFtZTtcbiAgICB9XG4gICAgcmV0dXJuIGl0ZW0uaXRlbU5hbWU7XG4gIH1cblxuICBpc0VsbGlwc2lzQWN0aXZlKGU6IEhUTUxFbGVtZW50KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGUgPyAoZS5jbGllbnRXaWR0aCA8IGUuc2Nyb2xsV2lkdGgpIDogZmFsc2U7XG4gIH1cblxuICBnZXROb2RlSWNvbihpdGVtOiBJU2VsZWN0T25lSXRlbSkge1xuICAgIHN3aXRjaCAoaXRlbS5pdGVtVHlwZSkge1xuICAgICAgY2FzZSBEYXRhVHlwZS5mb2xkZXI6IHtcbiAgICAgICAgc3dpdGNoIChpdGVtLmxldmVsVHlwZSkge1xuICAgICAgICAgIGNhc2UgRG9jdW1lbnROb2RlVHlwZS5EZXBhcnRtZW50Rm9sZGVyOlxuICAgICAgICAgICAgcmV0dXJuICdkZXBhcnRtZW50X2ZvbGRlcl9vdXRsaW5lZCc7XG4gICAgICAgICAgY2FzZSBEb2N1bWVudE5vZGVUeXBlLlJlZ2lvbmFsRm9sZGVyOlxuICAgICAgICAgICAgcmV0dXJuICdyZWdpb25hbF9mb2xkZXJfb3V0bGluZWQnO1xuICAgICAgICAgIGNhc2UgRG9jdW1lbnROb2RlVHlwZS5Ub3BGb2xkZXI6XG4gICAgICAgICAgICByZXR1cm4gJ2VudGVycHJpc2VfZm9sZGVyX291dGxpbmVkJztcbiAgICAgICAgICBjYXNlIERvY3VtZW50Tm9kZVR5cGUuRm9sZGVyOlxuICAgICAgICAgICAgcmV0dXJuICdsb2NhbF9mb2xkZXJfb3V0bGluZWQnO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gJ2ZvbGRlcl9vdXRsaW5lZCc7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNhc2UgRGF0YVR5cGUuZG9jdW1lbnQ6IHtcbiAgICAgICAgc3dpdGNoIChpdGVtLmxldmVsVHlwZSkge1xuICAgICAgICAgIGNhc2UgRG9jdW1lbnROb2RlVHlwZS5EZXBhcnRtZW50Rm9sZGVyOlxuICAgICAgICAgICAgcmV0dXJuICdkb2N1bWVudF9kZXBhcnRtZW50JztcbiAgICAgICAgICBjYXNlIERvY3VtZW50Tm9kZVR5cGUuUmVnaW9uYWxGb2xkZXI6XG4gICAgICAgICAgICByZXR1cm4gJ2RvY3VtZW50X3JlZ2lvbmFsJztcbiAgICAgICAgICBjYXNlIERvY3VtZW50Tm9kZVR5cGUuVG9wRm9sZGVyOlxuICAgICAgICAgICAgcmV0dXJuICdkb2N1bWVudF9lbnRlcnByaXNlJztcbiAgICAgICAgICBjYXNlIERvY3VtZW50Tm9kZVR5cGUuRm9sZGVyOlxuICAgICAgICAgICAgcmV0dXJuICdkb2N1bWVudF9sb2NhbCc7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiAnZG9jdW1lbnQnO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjYXNlIERhdGFUeXBlLmFyZWE6XG4gICAgICAgIHJldHVybiAncHJvY2Vzc19hcmVhX291dGxpbmVkJztcbiAgICAgIGNhc2UgRGF0YVR5cGUucHJvY2VzczpcbiAgICAgICAgcmV0dXJuICdwcm9jZXNzJztcbiAgICAgIGNhc2UgRGF0YVR5cGUuZGV2aWF0aW9uOlxuICAgICAgICByZXR1cm4gJ2RldmlhdGlvbic7XG4gICAgICBjYXNlIERhdGFUeXBlLmNoZWNrbGlzdDpcbiAgICAgICAgcmV0dXJuICdjaGVja2xpc3QnO1xuICAgICAgY2FzZSBEYXRhVHlwZS5yaXNrOlxuICAgICAgICByZXR1cm4gJ3Jpc2snO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICdmb2xkZXJfb3V0bGluZWQnO1xuICAgIH1cbiAgfVxuXG4gIGdldFBhcmVudE5hbWUoaXRlbTogSVNlbGVjdE9uZUl0ZW0pIHtcbiAgICBpZiAoaXRlbS5pdGVtVHlwZSA9PT0gdGhpcy5kYXRhVHlwZS5jaGVja2xpc3QgfHwgaXRlbS5pdGVtVHlwZSA9PT0gdGhpcy5kYXRhVHlwZS5kZXZpYXRpb24pIHtcbiAgICAgIHJldHVybiBpdGVtLnBhcmVudE5hbWU7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgZ2V0SXRlbUlkKGl0ZW06IElTZWxlY3RPbmVJdGVtKSB7XG4gICAgaWYgKGl0ZW0uaXRlbVR5cGUgPT09IHRoaXMuZGF0YVR5cGUucHJvY2Vzcykge1xuICAgICAgcmV0dXJuIGAke3RoaXMuTEFORy5QUk9DRVNTX0lEfTogJHtpdGVtLml0ZW1OdW1iZXJJZH07ICR7aXRlbS5zdGF0dXNOYW1lfWA7XG4gICAgfVxuICAgIGVsc2UgaWYgKGl0ZW0uaXRlbVR5cGUgPT09IHRoaXMuZGF0YVR5cGUuZG9jdW1lbnQpIHtcbiAgICAgIHJldHVybiBgJHt0aGlzLkxBTkcuRE9DVU1FTlRfSUR9OiAke2l0ZW0uaXRlbU51bWJlcklkfTsgJHtpdGVtLnN0YXR1c05hbWV9YDtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBzZWxlY3ROb2RlVHJlZUV2ZW50KG5vZGUpIHtcbiAgICBpZiAobm9kZS5kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBsZXQgcG9zaXRpb24gPSAtMTtcbiAgICBsZXQgcGFyZW50TmFtZSA9ICcnO1xuICAgIGxldCBpdGVtTnVtYmVySWQgPSAnJztcblxuICAgIHBvc2l0aW9uID0gIW5vZGUuZXhwYW5kYWJsZSA/IHRoaXMudHJlZURhdGEuZmluZEluZGV4KHAgPT4gcC5jaGlsZElkID09PSBub2RlLmlkICYmIHAucm9vdElkID09PSBub2RlLnBhcmVudElkKSA6XG4gICAgICB0aGlzLnRyZWVEYXRhLmZpbmRJbmRleChwID0+IHAucm9vdElkID09PSBub2RlLmlkKTtcbiAgICBwYXJlbnROYW1lID0gdGhpcy50cmVlRGF0YVtwb3NpdGlvbl0ucGFyZW50SWQgPyB0aGlzLnRyZWVEYXRhW3Bvc2l0aW9uXS5zdWJOYW1lIDogdGhpcy50cmVlRGF0YVtwb3NpdGlvbl0ucm9vdE5hbWU7XG4gICAgaXRlbU51bWJlcklkID0gdGhpcy50cmVlRGF0YVtwb3NpdGlvbl0/LmRpc3BsYXlJZD8udG9TdHJpbmcoKTtcblxuICAgIHRoaXMuY2hlY2tlZE5vZGVMaXN0ID0gW107XG4gICAgdGhpcy5jaGVja2VkTm9kZUxpc3QucHVzaCh7XG4gICAgICBtb2R1bGVJZDogdGhpcy5tb2R1bGVJZCxcbiAgICAgIGlkOiBub2RlLmlkLFxuICAgICAgaXRlbU5hbWU6IG5vZGUubmFtZSxcbiAgICAgIGl0ZW1UeXBlOiBub2RlLml0ZW1UeXBlLFxuICAgICAgcGFyZW50SWQ6IG5vZGUucGFyZW50SWQsXG4gICAgICBwYXJlbnROYW1lOiBwYXJlbnROYW1lLFxuICAgICAgaXRlbU51bWJlcklkOiBpdGVtTnVtYmVySWQsXG4gICAgICBsZXZlbFR5cGU6IG5vZGUubGV2ZWxUeXBlXG4gICAgfSk7XG5cbiAgICB0aGlzLnNlbGVjdGVkRGF0YSA9IFtdO1xuICAgIHRoaXMuc2VsZWN0ZWREYXRhLnB1c2gobm9kZSk7XG4gIH1cblxuXG4gIG5vZGVFeHBhbmRFdmVudChub2RlKSB7XG4gICAgdGhpcy5vbkV4cGFuZEZvbGRlci5lbWl0KHtcbiAgICAgIG5vZGU6IHtcbiAgICAgICAgaWQ6IG5vZGUuaWQsXG4gICAgICAgIGl0ZW1OYW1lOiAnJyxcbiAgICAgICAgaXRlbVR5cGU6IDAsXG4gICAgICAgIHN0YXR1c05hbWU6ICcnLFxuICAgICAgICBwYXJlbnRJZDogJycsXG4gICAgICAgIHBhcmVudE5hbWU6ICcnXG4gICAgICB9LCBpc0V4cGFuZDogdHJ1ZVxuICAgIH0pO1xuICB9XG5cbiAgcmVtb3ZlQ2hlY2tlZE5vZGVMaXN0KCkge1xuICAgIGNvbnN0IGl0ZW06IFRyZWVGbGF0Tm9kZSA9IG51bGw7XG4gICAgdGhpcy5jaGVja2VkTm9kZUxpc3QgPSBbXTtcbiAgICB0aGlzLnNlbGVjdGVkRGF0YSA9IFsuLi5bXSwgaXRlbV07XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnNlbGVjdGVkRGF0YSA9IFtdO1xuICAgIH0sIDUwMCk7XG4gIH1cblxuICBub2RlQ29uZGVuc2VkRXZlbnQoaWQ6IHN0cmluZykge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5leHBhbmRUb0NoaWxkTm9kZS5maW5kSW5kZXgoeCA9PiB4LnRvTG93ZXJDYXNlKCkgPT09IGlkLnRvTG93ZXJDYXNlKCkpO1xuICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICB0aGlzLmV4cGFuZFRvQ2hpbGROb2RlLnNwbGljZShpbmRleCwgMSk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwicW1zbGliX19yZWxhdGVkX19wb3B1cF9fY29udGFpbmVyXCI+XG4gIDxkaXY+XG4gICAgPHNwYW4gbWF0LWljb24tYnV0dG9uIGNsYXNzPVwiYnV0dG9uX19jbG9zZVwiIChjbGljayk9XCJvbkNsb3NlQ2xpY2soKVwiPlxuICAgICAgPG1hdC1pY29uIG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cbiAgICA8L3NwYW4+XG4gICAgPGRpdiBjbGFzcz1cIm1vZHVsZS1uYW1lXCIgbWF0LWRpYWxvZy1jb250ZW50PlxuICAgICAgPHNwYW4+e3sgbW9kdWxlTmFtZSB9fTwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImlucHV0X19maWVsZFwiPlxuICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIHBsYWNlaG9sZGVyPVwie3sgTEFORy5TRUFSQ0ggfX1cIiBtYXRJbnB1dCBbZm9ybUNvbnRyb2xdPVwibXlDb250cm9sXCIgW21hdEF1dG9jb21wbGV0ZV09XCJhdXRvXCIgLz5cbiAgICA8bWF0LWljb24+c2VhcmNoPC9tYXQtaWNvbj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImxpbmVfX2RpdmlkZXJcIj48L2Rpdj5cblxuICA8bWF0LWF1dG9jb21wbGV0ZSBtYXQtYXV0b2NvbXBsZXRlIGF1dG9BY3RpdmVGaXJzdE9wdGlvbiAjYXV0bz1cIm1hdEF1dG9jb21wbGV0ZVwiPlxuXG4gICAgPGRpdiBjbGFzcz1cInNlYXJjaF9fbW9kdWxlLXJlc3VsdFwiICpuZ0lmPVwiZmlsdGVyZWRPcHRpb25zLmxlbmd0aFwiPlxuICAgICAgPG1hdC1vcHRpb24gY2xhc3M9XCJzZWFyY2hfX29wdGlvblwiICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgZ2V0TW9kdWxlRmlsdGVyZWRPcHRpb25zKClcIiBbdmFsdWVdPVwib3B0aW9uXCJcbiAgICAgICAgKGNsaWNrKT1cInNlbGVjdEl0ZW1TZWFyY2hlZChvcHRpb24pXCI+XG4gICAgICAgIDxxbXMtbGlzdC1pdGVtIGNsYXNzPVwiaXRlbS1zdWdnZXN0aW9uXCIgdHlwZT1cImltYWdlLXNxdWFyZVwiPlxuICAgICAgICAgIDxtYXQtaWNvbiBsZWFkaW5nLWljb24gdHlwZT1cImltYWdlLXNxdWFyZVwiIFtzdmdJY29uXT1cImdldE5vZGVJY29uKG9wdGlvbilcIj48L21hdC1pY29uPlxuICAgICAgICAgIDxkaXYgcW1zLWxpc3QtaGVhZGVyPlxuICAgICAgICAgICAgPGRpdiBxbXMtbGluZSB0eXBlPVwiY2FwdGlvblwiIHFtcy10b29sLXRpcD1cInt7XG4gICAgICAgICAgICAgICAgICBpc0VsbGlwc2lzQWN0aXZlKHNlYXJjaEl0ZW1SZXN1bHQpID8gb3B0aW9uLnBhcmVudE5hbWUgOiAnJ1xuICAgICAgICAgICAgICAgIH19XCIgbW9kZT1cImRhcmtcIiAqbmdJZj1cImdldFBhcmVudE5hbWUob3B0aW9uKVwiPlxuICAgICAgICAgICAgICA8c3BhbiAjc2VhcmNoSXRlbVJlc3VsdCBjbGFzcz1cInNlYXJjaF9fcmVzdWx0X19wYXJlbnQtbmFtZVwiPlxuICAgICAgICAgICAgICAgIHt7IG9wdGlvbi5wYXJlbnROYW1lIH19XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBxbXMtbGluZSB0eXBlPVwic3VidGl0bGVcIiBjbGFzcz1cInNlYXJjaF9fb3B0aW9uLW5hbWVcIj5cbiAgICAgICAgICAgICAge3sgb3B0aW9uLml0ZW1OYW1lIH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXB0aW9uXCIgKm5nSWY9XCJvcHRpb24uYnJlYWRjdW1icyAmJiBvcHRpb24uYnJlYWRjdW1icy5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgPHFtcy1icmVhZGNydW1iIGNsYXNzPVwiYnJlYWRjcnVtYi1jb250YWluZXJcIiB0eXBlPVwidGFibGVcIiBudW1EaXNwbGF5SXRlbT1cIjFcIiBbbm9kZXNdPVwib3B0aW9uLmJyZWFkY3VtYnNcIj5cbiAgICAgICAgICAgICAgPC9xbXMtYnJlYWRjcnVtYj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgcW1zLWxpbmUgY29sb3I9XCJkZWZhdWx0LXN1YnRpdGxlXCIgKm5nSWY9XCJnZXRJdGVtSWQob3B0aW9uKVwiPlxuICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIm1hdGVyaWFsLWljb25zLW91dGxpbmVkIHNlYXJjaF9fZGVzY3JpcHRpb24taWNvblwiPlxuICAgICAgICAgICAgICAgIGxvY2FsX29mZmVyXG4gICAgICAgICAgICAgIDwvbWF0LWljb24+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICB7eyBnZXRJdGVtSWQob3B0aW9uKSB9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3Ftcy1saXN0LWl0ZW0+XG4gICAgICA8L21hdC1vcHRpb24+XG4gICAgPC9kaXY+XG4gIDwvbWF0LWF1dG9jb21wbGV0ZT5cblxuICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgPGRpdiBjbGFzcz1cInFtcy1zY3JvbGxiYXIgY29sLTEyIHFtc2xpYl9yZWxhdGVkX3BvcHVwX2NvbnRlbnQgcGFuZWxfX2NvbnRlbnRfaXRlbVwiPlxuICAgICAgPG1hdC1leHBhbnNpb24tcGFuZWwgaGlkZVRvZ2dsZSBpZD1cInFtc2xpYl9yZWxhdGVkX3BvcHVwX2NvbW1vbl8wMDFcIiBbZXhwYW5kZWRdPVwiaXNDb21tb25FeHBhbmRlZFwiXG4gICAgICAgIChvcGVuZWQpPVwiaXNDb21tb25FeHBhbmRlZCA9IHRydWVcIiAoY2xvc2VkKT1cImlzQ29tbW9uRXhwYW5kZWQgPSBmYWxzZVwiIGNsYXNzPVwicGFuZWwtdHJlZVwiPlxuICAgICAgICA8ZGl2IGlkPVwicW1zbGliX3JlbGF0ZWRfcG9wdXBfY29tbW9uXzAwMlwiPlxuICAgICAgICAgIDxxbXMtdHJlZSBbdHJlZURhdGFdPVwidHJlZURhdGFcIiBbdHJlZUNvbmZpZ109XCJ0cmVlQ29uZmlnXCIgW3NlbGVjdGVkRGF0YV09XCJzZWxlY3RlZERhdGFcIlxuICAgICAgICAgICAgW3NlbGVjdGVkUmlza0RhdGFdPVwic2VsZWN0ZWRSaXNrRGF0YVwiIFtkaXNhYmxlZExpc3RdPVwiZGlzYWJsZWRMaXN0XCJcbiAgICAgICAgICAgIChzZWxlY3ROb2RlRXZlbnQpPVwic2VsZWN0Tm9kZVRyZWVFdmVudCgkZXZlbnQpXCIgKG5vZGVFeHBhbmRFdmVudCk9XCJub2RlRXhwYW5kRXZlbnQoJGV2ZW50KVwiXG4gICAgICAgICAgICBbZXhwYW5kT25UaXRsZUNsaWNrXT1cImZhbHNlXCIgW2V4cGFuZFRvQ2hpbGROb2RlXT1cImV4cGFuZFRvQ2hpbGROb2RlXCJcbiAgICAgICAgICAgIChub2RlQ29uZGVuc2VkRXZlbnQpPVwibm9kZUNvbmRlbnNlZEV2ZW50KCRldmVudClcIj48L3Ftcy10cmVlPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPCEtLSA8ZGl2ICpuZ0lmPVwiY2hlY2tlZE5vZGVMaXN0Lmxlbmd0aFwiIGNsYXNzPVwibGluZV9fZGl2aWRlclwiPjwvZGl2PlxuXG4gIDxkaXYgKm5nSWY9XCJjaGVja2VkTm9kZUxpc3QubGVuZ3RoXCIgY2xhc3M9XCJwYW5lbF9faXRlbSBxbXMtc2Nyb2xsYmFyXCI+XG4gICAgPGRpdiBjbGFzcz1cInJlbGF0ZWRfX2l0ZW1fX2lubGluZVwiICpuZ0Zvcj1cImxldCBpdGVtIG9mIGNoZWNrZWROb2RlTGlzdFwiPlxuICAgICAgPGJ1dHRvblxuICAgICAgICAqbmdJZj1cIml0ZW0uaXRlbU5hbWVcIlxuICAgICAgICBtYXQtYnV0dG9uXG4gICAgICAgIGNsYXNzPVwicmVsYXRlZF9faXRlbV9fY29udGVudFwiXG4gICAgICAgIHFtcy10b29sLXRpcD1cInt7XG4gICAgICAgICAgaXNFbGxpcHNpc0FjdGl2ZShpdGVtTmFtZSkgPyBnZXRJdGVtQ2hpcE5hbWUoaXRlbSkgOiAnJ1xuICAgICAgICB9fVwiXG4gICAgICAgIG1vZGU9XCJkYXJrXCJcbiAgICAgID5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJyZWxhdGVkX19pdGVtX19jb250ZW50X25hbWVcIiAjaXRlbU5hbWU+e3tcbiAgICAgICAgICBnZXRJdGVtQ2hpcE5hbWUoaXRlbSlcbiAgICAgICAgfX08L3NwYW4+XG4gICAgICAgIDxtYXQtaWNvbiAoY2xpY2spPVwicmVtb3ZlQ2hlY2tlZE5vZGVMaXN0KClcIj5jYW5jZWw8L21hdC1pY29uPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PiAtLT5cblxuICA8ZGl2IGNsYXNzPVwibGluZV9fZGl2aWRlclwiPjwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJjb25maXJtX19idXR0b25fX2dyb3Vwc1wiPlxuICAgIDxidXR0b24gcW1zLWJ0biBbY2xhc3MuYWRkLWJ1dHRvbi1zcGFjaW5nLXRvcC03cHhdPVwiIWNoZWNrZWROb2RlTGlzdC5sZW5ndGhcIiAoY2xpY2spPVwib25BZGRDbGljaygpXCI+XG4gICAgICB7eyBMQU5HLkFERCB9fSB7eyBjaGVja2VkTm9kZUxpc3Q/Lmxlbmd0aCA/ICcoJyArIGNoZWNrZWROb2RlTGlzdD8ubGVuZ3RoICsgJyknIDogJyd9fVxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b24gcW1zLWJ0bi10ZXh0IFtuZ1N0eWxlXT1cInsgJ21hcmdpbi10b3AnOiBjaGVja2VkTm9kZUxpc3QubGVuZ3RoID8gJzBweCcgOiAnN3B4JyB9XCIgKGNsaWNrKT1cIm9uQ2xvc2VDbGljaygpXCI+XG4gICAgICB7eyBMQU5HLkNBTkNFTCB9fVxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvZGl2PiJdfQ==
|
466
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LW9uZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9xbXMtYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvc2VsZWN0LW9uZS9zZWxlY3Qtb25lLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Ftcy1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9zZWxlY3Qtb25lL3NlbGVjdC1vbmUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixZQUFZLEVBQXdCLGlCQUFpQixFQUErQixZQUFZLEVBQWMsTUFBTSxlQUFlLENBQUM7QUFDaEssT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXBELE9BQU8sRUFBZ0IsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFHekUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBS3pELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN2RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQVVuRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFVNUQsTUFBTSxPQUFPLGVBQWU7SUF3QzFCLFlBQ1UsS0FBd0IsRUFDekIsU0FBa0MsRUFDbEMsU0FBd0MsRUFD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QUFDLENBQUM7SUFDVixDQUFDO0lBRUQsa0JBQWtCLENBQUMsRUFBVTtRQUMzQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQzFGLElBQUksS0FBSyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ2YsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDMUMsQ0FBQztJQUNILENBQUM7K0dBbGZVLGVBQWUsZ1FBZ0RoQixlQUFlO21HQWhEZCxlQUFlLG9KQXFDWixhQUFhLGdEQ3pFN0IsOGxHQWdFcUI7OzRGRDVCUixlQUFlO2tCQU4zQixTQUFTOytCQUNFLGdCQUFnQixpQkFHWCxpQkFBaUIsQ0FBQyxJQUFJOzswQkFrRGxDLE1BQU07MkJBQUMsZUFBZTt5Q0FYUSxTQUFTO3NCQUF6QyxZQUFZO3VCQUFDLGFBQWEsRUFBRSxFQUFFO2dCQXFDL0IsU0FBUztzQkFEUixZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIEV2ZW50RW1pdHRlciwgT25EZXN0cm95LCBWaWV3Q2hpbGQsIFZpZXdFbmNhcHN1bGF0aW9uLCBBZnRlclZpZXdDaGVja2VkLCBRdWVyeUxpc3QsIFZpZXdDaGlsZHJlbiwgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBIb3N0TGlzdGVuZXIsIEluamVjdCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBVbnR5cGVkRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRBdXRvY29tcGxldGVUcmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYXV0b2NvbXBsZXRlJztcbmltcG9ydCB7IE1hdERpYWxvZ1JlZiwgTUFUX0RJQUxPR19EQVRBIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IE1hdEljb25SZWdpc3RyeSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgVHJhbnNsYXRlTGlicmFyeVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cmFuc2xhdGlvbi1yZWdpc3RyeS5zZXJ2aWNlJztcbmltcG9ydCB7IFFNU0ljb25SZWdpc3RyeVNlcnZpY2UgfSBmcm9tICcuLi9hcHAtaWNvbi9pY29uLXJlZ2lzdHJ5LnNlcnZpY2UnO1xuXG5pbXBvcnQgeyBEb2N1bWVudE5vZGVUeXBlIH0gZnJvbSAnLi9jb21tb24vZG9jdW1lbnQtZm9sZGVyLXR5cGUuZW51bSc7XG5pbXBvcnQgeyBNb2R1bGVUeXBlIH0gZnJvbSAnLi9jb21tb24vbW9kdWxlLXR5cGUuZW51bSc7XG5pbXBvcnQgeyBTaG93SGlkZVNlYXJjaFJlc3VsdENvbnN0IH0gZnJvbSAnLi9jb21tb24vc2hvdy1oaWRlLXNlYXJjaC1yZXN1bHQuY29uc3QnO1xuaW1wb3J0IHsgU2VsZWN0T25lUG9wdXBEYXRhIH0gZnJvbSAnLi9jb21tb24vc2VsZWN0b25lLXBvcHVwLWRhdGEubW9kZWwnO1xuaW1wb3J0IHsgSVNlbGVjdE9uZUl0ZW0gfSBmcm9tICcuL2NvbW1vbi9zZWxlY3QtZGF0YS5tb2RlbCc7XG5pbXBvcnQgeyBTZWxlY3RlZE5vZGUgfSBmcm9tICcuL2NvbW1vbi9zZWxlY3RlZC1ub2RlLm1vZGVsJztcbmltcG9ydCB7IFFNU1NlbGVjdE9uZUdsb2JhbFNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2Uvc2VsZWN0LW9uZS1nbG9iYWwuc2VydmljZSc7XG5cbmltcG9ydCB7IFRyZWVDb25maWcgfSBmcm9tICcuLi90cmVlL21vZGVsL3RyZWUtY29uZmlnLm1vZGVsJztcbmltcG9ydCB7IFRyZWVGbGF0Tm9kZSB9IGZyb20gJy4uL3RyZWUvbW9kZWwvdHJlZS1mbGF0LW5vZGUubW9kZWwnO1xuaW1wb3J0IHsgVHJlZU5vZGUgfSBmcm9tICcuLi90cmVlL21vZGVsL3RyZWUtbm9kZS5tb2RlbCc7XG5pbXBvcnQgeyBUcmVlTW9kZWwgfSBmcm9tICcuLi90cmVlL21vZGVsL3RyZWUubW9kZWwnO1xuaW1wb3J0IHsgVHJlZUNvbXBvbmVudCB9IGZyb20gJy4uL3RyZWUvdHJlZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGF0YVR5cGUgfSBmcm9tICcuLi8uLi9jb21tb24vZW51bS9kYXRhLXR5cGUuZW51bSc7XG5cblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdxbXMtc2VsZWN0LW9uZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9zZWxlY3Qtb25lLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2VsZWN0LW9uZS5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIFNlbGVjdE9uZURpYWxvZyBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdDaGVja2VkIHtcbiAgbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgTEFORzogYW55O1xuICBtb2R1bGVJZCA9IDA7XG4gIG1vZHVsZU5hbWUgPSAnJztcbiAgdHJlZURhdGE6IEFycmF5PFRyZWVNb2RlbD4gPSBbXTtcbiAgdHJlZUNvbmZpZzogVHJlZUNvbmZpZztcblxuICBjaGVja2VkTm9kZUxpc3Q6IEFycmF5PFNlbGVjdGVkTm9kZT4gPSBbXTtcbiAgc2VsZWN0ZWROb2RlOiBBcnJheTxTZWxlY3RlZE5vZGU+ID0gW107XG4gIHNlbGVjdGVkRGF0YTogQXJyYXk8VHJlZUZsYXROb2RlPiA9IFtdO1xuXG4gIG1vZHVsZSA9IE1vZHVsZVR5cGU7XG4gIGRhdGFUeXBlID0gRGF0YVR5cGU7XG4gIGl0ZW1UeXBlID0gMDtcbiAgc2VsZWN0ZWRSaXNrRGF0YTogYW55ID0gW107XG4gIGRpc2FibGVkTGlzdDogYW55ID0gW107XG4gIGV4cGFuZFRvQ2hpbGROb2RlOiBhbnkgPSBbXTtcblxuICBpc0NvbW1vbkV4cGFuZGVkID0gdHJ1ZTtcbiAgZ3VpZEhlbHBlciA9IHtcbiAgICBlbXB0eTogJzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMCdcbiAgfTtcblxuICBteUNvbnRyb2wgPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKCk7XG4gIGZpbHRlcmVkT3B0aW9uczogSVNlbGVjdE9uZUl0ZW1bXSA9IFtdO1xuICBpc0lucHV0VmFsdWUgPSBmYWxzZTtcbiAgaXRlbVNlYXJjaGVkOiBJU2VsZWN0T25lSXRlbTtcbiAgaXRlbVBhcmVudFNlYXJjaCA9IGZhbHNlO1xuXG4gIHNlbGVjdGVkRm9sZGVyOiBUcmVlRmxhdE5vZGUgPSBudWxsO1xuICBsaXN0Q2hpbGRyZW5TZWxlY3RPbmU6IGFueSA9IFtdO1xuXG4gIG9uU2VhcmNoID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBvbkV4cGFuZEZvbGRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBAVmlld0NoaWxkcmVuKFRyZWVDb21wb25lbnQsIHt9KSBkYXRhVHJlZXM6IFF1ZXJ5TGlzdDxUcmVlQ29tcG9uZW50PjtcblxuICBhdXRvQ29tcGxldGU6IE1hdEF1dG9jb21wbGV0ZVRyaWdnZXI7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHB1YmxpYyB0cmFuc2xhdGU6IFRyYW5zbGF0ZUxpYnJhcnlTZXJ2aWNlLFxuICAgIHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxTZWxlY3RPbmVEaWFsb2c+LFxuICAgIHB1YmxpYyBnbG9iYWxTZXJ2aWNlOiBRTVNTZWxlY3RPbmVHbG9iYWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgaWNvblJlZ2lzdHJ5OiBNYXRJY29uUmVnaXN0cnksXG4gICAgcHJpdmF0ZSBzYW5pdGl6ZXI6IERvbVNhbml0aXplcixcbiAgICBwcml2YXRlIGFwcEljb25TZXJ2aWNlOiBRTVNJY29uUmVnaXN0cnlTZXJ2aWNlLFxuICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgZGF0YTogU2VsZWN0T25lUG9wdXBEYXRhXG4gICkge1xuICAgIHRoaXMubW9kdWxlSWQgPSBkYXRhLm1vZHVsZUlkO1xuICAgIHRoaXMubW9kdWxlTmFtZSA9IGRhdGEubW9kdWxlTmFtZTtcbiAgICB0aGlzLnRyZWVEYXRhID0gZGF0YS50cmVlRGF0YTtcbiAgICB0aGlzLnRyZWVDb25maWcgPSBkYXRhLnRyZWVDb25maWc7XG4gICAgdGhpcy5zZWxlY3RlZFJpc2tEYXRhID0gZGF0YT8uc2VsZWN0ZWROb2RlIHx8IFtdO1xuICAgIHRoaXMuZGlzYWJsZWRMaXN0ID0gZGF0YS5kaXNhYmxlZExpc3QgfHwgW107XG4gICAgdGhpcy5leHBhbmRUb0NoaWxkTm9kZSA9IGRhdGEuZXhwYW5kVG9DaGlsZE5vZGU7XG4gICAgYXBwSWNvblNlcnZpY2UucmVnaXN0ZXJQcm9jZXNzSWNvbihpY29uUmVnaXN0cnksIHNhbml0aXplcik7XG4gICAgYXBwSWNvblNlcnZpY2UucmVnaXN0ZXJQcm9jZXNzQXJlYUljb24oaWNvblJlZ2lzdHJ5LCBzYW5pdGl6ZXIpO1xuICAgIGFwcEljb25TZXJ2aWNlLnJlZ2lzdGVyRG9jdW1lbnRJY29uKGljb25SZWdpc3RyeSwgc2FuaXRpemVyKTtcbiAgICBhcHBJY29uU2VydmljZS5yZWdpc3RlckZvbGRlckljb24oaWNvblJlZ2lzdHJ5LCBzYW5pdGl6ZXIpO1xuICAgIGFwcEljb25TZXJ2aWNlLnJlZ2lzdGVyRGV2aWF0aW9uSWNvbihpY29uUmVnaXN0cnksIHNhbml0aXplcik7XG4gICAgYXBwSWNvblNlcnZpY2UucmVnaXN0ZXJDaGVja2xpc3RJY29uKGljb25SZWdpc3RyeSwgc2FuaXRpemVyKTtcbiAgICBhcHBJY29uU2VydmljZS5yZWdpc3RlclJpc2tJY29uKGljb25SZWdpc3RyeSwgc2FuaXRpemVyKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMubmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5nbG9iYWxTZXJ2aWNlLnNldFNlYXJjaFJlbGF0ZWQoW10pO1xuICAgIHRoaXMuc2VsZWN0ZWRGb2xkZXIgPSBudWxsO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93Om1lc3NhZ2UnLCBbJyRldmVudCddKVxuICBvbk1lc3NhZ2UoZXZlbnQpIHtcbiAgICBpZiAoZXZlbnQuZGF0YSA9PT0gU2hvd0hpZGVTZWFyY2hSZXN1bHRDb25zdC5ISURFX1NFQVJDSF9SRVNVTFQpIHtcbiAgICAgIHRoaXMuYXV0b0NvbXBsZXRlLmNsb3NlUGFuZWwoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnRyYW5zbGF0ZS5nZXRMYW5ndWFnZVN1YmplY3QkLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpLnN1YnNjcmliZSgocmVzKSA9PiB7XG4gICAgICBpZiAocmVzKSB7XG4gICAgICAgIHRoaXMuTEFORyA9IHRoaXMudHJhbnNsYXRlLmdldE9iamVjdExhbmcocmVzKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuZ2xvYmFsU2VydmljZS5zZWFyY2hSZWxhdGVkLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpLnN1YnNjcmliZSgocmVzKSA9PiB7XG4gICAgICBpZiAocmVzICYmIHJlcy5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy5maWx0ZXJlZE9wdGlvbnMgPSByZXM7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLmdsb2JhbFNlcnZpY2UuZ2V0SXRlbXNDaGlsZHJlbi5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKS5zdWJzY3JpYmUoKHJlczogVHJlZU1vZGVsW10pID0+IHtcbiAgICAgIGlmIChyZXMgJiYgcmVzLmxlbmd0aCkge1xuICAgICAgICBjb25zdCByZXNOb3RFeGlzdHMgPSByZXMuZmlsdGVyKHIgPT4gIXRoaXMudHJlZURhdGEuc29tZSh0ID0+IHIucm9vdElkID09IHQucm9vdElkKSk7XG4gICAgICAgIHRoaXMudHJlZURhdGEgPSBbLi4udGhpcy50cmVlRGF0YSwgLi4ucmVzTm90RXhpc3RzXTtcblxuICAgICAgICBpZiAoKHJlc1swXS5wYXJlbnRJZCAmJiByZXNbMF0ucGFyZW50SWQgIT09IHRoaXMuZ3VpZEhlbHBlci5lbXB0eSkgJiYgKCF0aGlzLmV4cGFuZFRvQ2hpbGROb2RlLmxlbmd0aCB8fCAodGhpcy5leHBhbmRUb0NoaWxkTm9kZS5zb21lKHggPT4geCAhPT0gcmVzWzBdLnBhcmVudElkKSkpKSB7XG4gICAgICAgICAgbGV0IF90ZW1wSXRlbXMgPSBbLi4udGhpcy5leHBhbmRUb0NoaWxkTm9kZV07XG4gICAgICAgICAgX3RlbXBJdGVtcy5wdXNoKHJlc1swXS5wYXJlbnRJZCk7XG4gICAgICAgICAgdGhpcy5leHBhbmRUb0NoaWxkTm9kZSA9IF90ZW1wSXRlbXM7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5pdGVtUGFyZW50U2VhcmNoKSB7XG4gICAgICAgICAgY29uc3QgYXJyID0gcmVzIHx8IFtdO1xuICAgICAgICAgIGFyci5wb3AoKTtcbiAgICAgICAgICBhcnIuZm9yRWFjaCh4ID0+IHtcbiAgICAgICAgICAgIHRoaXMuZXhwYW5kVG9DaGlsZE5vZGUucHVzaCh4LnJvb3RJZCk7XG4gICAgICAgICAgfSlcblxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaXRlbVNlYXJjaGVkKSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RJdGVtU2VhcmNoZWQodGhpcy5pdGVtU2VhcmNoZWQpO1xuICAgICAgICAgIHRoaXMuaXRlbVBhcmVudFNlYXJjaCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLm15Q29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShkZWJvdW5jZVRpbWUoMTAwMCksIHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKS5zdWJzY3JpYmUoKHZhbCkgPT4ge1xuICAgICAgdGhpcy5pc0lucHV0VmFsdWUgPSB0cnVlO1xuICAgICAgdGhpcy5vblNlYXJjaFJlbGF0ZWQodmFsKTtcbiAgICB9KTtcblxuICAgIHRoaXMuaXRlbVR5cGUgPSB0aGlzLmdldERhdGFUeXBlSWQodGhpcy5tb2R1bGVJZCk7XG4gIH1cblxuXG4gIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpIHtcbiAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIGdldERhdGFUeXBlSWQobW9kdWxlSWQ6IG51bWJlcikge1xuICAgIGxldCBpdGVtVHlwZTtcbiAgICBzd2l0Y2ggKG1vZHVsZUlkKSB7XG4gICAgICBjYXNlIE1vZHVsZVR5cGUuZG9jdW1lbnRQcm9jZXNzOlxuICAgICAgICBpdGVtVHlwZSA9IHRoaXMuZGF0YVR5cGUucHJvY2VzcztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIE1vZHVsZVR5cGUuZGV2aWF0aW9uOlxuICAgICAgICBpdGVtVHlwZSA9IHRoaXMuZGF0YVR5cGUuZGV2aWF0aW9uO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgTW9kdWxlVHlwZS5jaGVja2xpc3Q6XG4gICAgICAgIGl0ZW1UeXBlID0gdGhpcy5kYXRhVHlwZS5jaGVja2xpc3Q7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBNb2R1bGVUeXBlLnJpc2s6XG4gICAgICAgIGl0ZW1UeXBlID0gdGhpcy5kYXRhVHlwZS5yaXNrO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGl0ZW1UeXBlID0gdGhpcy5kYXRhVHlwZS5kb2N1bWVudDtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHJldHVybiBpdGVtVHlwZTtcbiAgfVxuXG4gIHNldFJlc3VsdEhlaWdodChhcnI/OiBJU2VsZWN0T25lSXRlbVtdKSB7XG4gICAgbGV0IG1heEhlaWdodCA9IDQ4NDtcbiAgICBjb25zdCBwb3B1cF9jb250ZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgncW1zbGliX3JlbGF0ZWRfcG9wdXBfY29udGVudCcpWzBdIGFzIEhUTUxFbGVtZW50O1xuICAgIGNvbnN0IGxpbmVfX2RpdmlkZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdsaW5lX19kaXZpZGVyJylbMF0gYXMgSFRNTEVsZW1lbnQ7XG4gICAgaWYgKHBvcHVwX2NvbnRlbnQgJiYgbGluZV9fZGl2aWRlcikge1xuICAgICAgbWF4SGVpZ2h0ID0gdGhpcy5nZXRPZmZzZXRIZWlnaHQocG9wdXBfY29udGVudCwgdHJ1ZSkgKyB0aGlzLmdldE9mZnNldEhlaWdodChsaW5lX19kaXZpZGVyLCB0cnVlKSAqIDI7XG4gICAgfVxuXG4gICAgY29uc3QgY29udGVudFJlc3VsdCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2Nkay12aXJ0dWFsLXNjcm9sbC1jb250ZW50LXdyYXBwZXInKVswXSBhcyBIVE1MRWxlbWVudDtcbiAgICBjb25zdCB2aWV3cmVwb3J0cyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3JlbGF0ZWQtdmlld3BvcnQnKVswXSBhcyBIVE1MRWxlbWVudDtcblxuICAgIGlmICh2aWV3cmVwb3J0cykge1xuICAgICAgaWYgKGNvbnRlbnRSZXN1bHQub2Zmc2V0SGVpZ2h0IDw9IG1heEhlaWdodCkge1xuICAgICAgICB2aWV3cmVwb3J0cy5zdHlsZS5oZWlnaHQgPSBgJHtjb250ZW50UmVzdWx0Lm9mZnNldEhlaWdodH1weGA7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgdmlld3JlcG9ydHMuc3R5bGUuaGVpZ2h0ID0gYCR7bWF4SGVpZ2h0fXB4YDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBvblNlYXJjaFJlbGF0ZWQoX3ZhbDogYW55KSB7XG4gICAgdGhpcy5maWx0ZXJlZE9wdGlvbnMgPSBbXTtcbiAgICBpZiAodHlwZW9mIChfdmFsKSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIHRoaXMubXlDb250cm9sLnNldFZhbHVlKCcnKTtcbiAgICB9XG4gICAgZWxzZSBpZiAodHlwZW9mIChfdmFsKSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGlmICghIV92YWwpIHtcbiAgICAgICAgdGhpcy5vblNlYXJjaC5lbWl0KF92YWwpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGdldE1vZHVsZUZpbHRlcmVkT3B0aW9ucygpIHtcbiAgICBpZiAodGhpcy5maWx0ZXJlZE9wdGlvbnMubGVuZ3RoICYmIHRoaXMuZGlzYWJsZWRMaXN0Lmxlbmd0aCkge1xuICAgICAgY29uc3QgY3Vyck5vZGUgPSB0aGlzLmRpc2FibGVkTGlzdFt0aGlzLmRpc2FibGVkTGlzdC5sZW5ndGggLSAxXTtcbiAgICAgIGNvbnN0IGlkeFBhcmVudCA9IHRoaXMuZGlzYWJsZWRMaXN0Lmxlbmd0aCA+PSAyID8gdGhpcy5kaXNhYmxlZExpc3QubGVuZ3RoIC0gMiA6ICcnO1xuICAgICAgY29uc3QgcGFyZW50Tm9kZSA9IGlkeFBhcmVudCAhPT0gJycgPyB0aGlzLmRpc2FibGVkTGlzdFtpZHhQYXJlbnRdIDogJyc7XG5cbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5maWx0ZXJlZE9wdGlvbnMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgY29uc3Qgc2Vjb25kRWwgPSB0aGlzLmZpbHRlcmVkT3B0aW9uc1tqXTtcblxuICAgICAgICBpZiAoc2Vjb25kRWwuaWQ/LnRvTG93ZXJDYXNlKCkgPT09IGN1cnJOb2RlPy50b0xvd2VyQ2FzZSgpICYmIChwYXJlbnROb2RlPy50b0xvd2VyQ2FzZSgpID09PSBzZWNvbmRFbC5wYXJlbnRJZD8udG9Mb3dlckNhc2UoKSkpIHtcbiAgICAgICAgICB0aGlzLmZpbHRlcmVkT3B0aW9ucy5zcGxpY2UoaiwgMSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuXG4gICAgfVxuICAgIHJldHVybiB0aGlzLmZpbHRlcmVkT3B0aW9ucztcbiAgfVxuXG4gIGRpc3BsYXlSZWxhdGVkKHJlbGF0ZWQ/OiBJU2VsZWN0T25lSXRlbSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHJlbGF0ZWQgPyByZWxhdGVkLml0ZW1OYW1lIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgc2VsZWN0SXRlbVNlYXJjaGVkKGl0ZW06IElTZWxlY3RPbmVJdGVtKSB7XG5cbiAgICAvLyByZXNldCB0byByb290XG4gICAgdGhpcy5jaGVja2VkTm9kZUxpc3QgPSBbXTtcbiAgICB0aGlzLml0ZW1TZWFyY2hlZCA9IGl0ZW07XG5cbiAgICBsZXQgcG9zaXRpb24gPSAtMTtcbiAgICBsZXQgbm9kZTogYW55O1xuICAgIGxldCB0eXBlSWQ6IG51bWJlcjtcbiAgICBsZXQgdHJlZU5vZGVEdXA6IGFueTtcblxuICAgIGlmICh0aGlzLnRyZWVDb25maWcuY2FuSGF2ZUR1cElkKSB7XG4gICAgICBwb3NpdGlvbiA9IHRoaXMudHJlZURhdGEuZmluZEluZGV4KHggPT4ge1xuICAgICAgICByZXR1cm4geC5yb290SWQgPT09IGl0ZW0ucGFyZW50SWQgJiYgeC5jaGlsZElkID09PSBpdGVtLmlkO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHBvc2l0aW9uID0gdGhpcy50cmVlRGF0YS5maW5kSW5kZXgoeCA9PiB7XG4gICAgICAgIHJldHVybiB4LnJvb3RJZCA9PT0gaXRlbS5pZDtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChwb3NpdGlvbiA8IDApIHtcbiAgICAgIHRoaXMuaXRlbVBhcmVudFNlYXJjaCA9IHRydWU7XG4gICAgICB0aGlzLm9uRXhwYW5kRm9sZGVyLmVtaXQoe1xuICAgICAgICBub2RlOiB7XG4gICAgICAgICAgaWQ6IGl0ZW0uaWQsXG4gICAgICAgICAgaXRlbU5hbWU6ICcnLFxuICAgICAgICAgIGl0ZW1UeXBlOiAwLFxuICAgICAgICAgIHN0YXR1c05hbWU6ICcnLFxuICAgICAgICAgIHBhcmVudElkOiAnJyxcbiAgICAgICAgICBwYXJlbnROYW1lOiAnJ1xuICAgICAgICB9LCBpc0V4cGFuZDogZmFsc2VcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaXRlbVNlYXJjaGVkID0gbnVsbDtcbiAgICB9XG5cbiAgICB0eXBlSWQgPSBpdGVtLml0ZW1UeXBlO1xuICAgIG5vZGUgPSB0aGlzLnRyZWVEYXRhW3Bvc2l0aW9uXTtcblxuICAgIHRoaXMuY2hlY2tlZE5vZGVMaXN0LnB1c2goe1xuICAgICAgbW9kdWxlSWQ6IHRoaXMubW9kdWxlSWQsXG4gICAgICBpZDogdGhpcy50cmVlQ29uZmlnLmNhbkhhdmVEdXBJZCA/IG5vZGUuY2hpbGRJZCA6IG5vZGUucm9vdElkLFxuICAgICAgaXRlbU5hbWU6IHRoaXMudHJlZUNvbmZpZy5jYW5IYXZlRHVwSWQgPyBub2RlLmNoaWxkTmFtZSA6IG5vZGUucm9vdE5hbWUgfHwgbm9kZS5zdWJOYW1lLFxuICAgICAgaXRlbVR5cGU6IHR5cGVJZCxcbiAgICAgIGl0ZW1OdW1iZXJJZDogaXRlbS5pdGVtTnVtYmVySWQsXG4gICAgICBsZXZlbFR5cGU6IGl0ZW0ubGV2ZWxUeXBlLFxuICAgICAgcGFyZW50SWQ6IG5vZGUucm9vdElkLFxuICAgICAgcGFyZW50TmFtZTogbm9kZS5yb290TmFtZVxuICAgIH0pO1xuXG4gICAgdGhpcy5zZWxlY3RlZERhdGEgPSBbXTtcbiAgICB0aGlzLnNlbGVjdGVkRGF0YS5wdXNoKG5vZGUpO1xuXG5cbiAgICBpZiAodGhpcy50cmVlQ29uZmlnLmNhbkhhdmVEdXBJZCkge1xuICAgICAgdHJlZU5vZGVEdXAgPSB7XG4gICAgICAgIGlkOiBub2RlLmNoaWxkSWQsXG4gICAgICAgIG5hbWU6ICEhbm9kZS5yb290SWQgPyBub2RlLnN1Yk5hbWUgOiBub2RlLnJvb3ROYW1lLFxuICAgICAgICBjaGlsZHJlbjogW10sXG4gICAgICAgIHBhcmVudElkOiBub2RlLnJvb3RJZFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdCB0cmVlTm9kZSA9IHtcbiAgICAgIGlkOiBub2RlLnJvb3RJZCxcbiAgICAgIG5hbWU6ICEhbm9kZS5yb290SWQgPyBub2RlLnN1Yk5hbWUgOiBub2RlLnJvb3ROYW1lLFxuICAgICAgY2hpbGRyZW46IFtdLFxuICAgICAgcGFyZW50SWQ6IG5vZGUucGFyZW50SWRcbiAgICB9O1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmRhdGFUcmVlcy50b0FycmF5KClbMF0udG9kb0ZvbGRlclNlbGVjdGlvbihbdGhpcy50cmVlQ29uZmlnLmNhbkhhdmVEdXBJZCA/IHRyZWVOb2RlRHVwIDogdHJlZU5vZGVdKTtcbiAgICAgIHRoaXMuZXhwYW5kQW5kU2Nyb2xsVG9Ob2RlKHRoaXMudHJlZUNvbmZpZy5jYW5IYXZlRHVwSWQgPyB0cmVlTm9kZUR1cCA6IHRyZWVOb2RlLCBub2RlKTtcbiAgICB9LCA1MDApO1xuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgZXhwYW5kQW5kU2Nyb2xsVG9Ob2RlKHRyZWVOb2RlOiBUcmVlTm9kZSwgbm9kZTogVHJlZU1vZGVsKSB7XG4gICAgbGV0IHBhcmVudDtcbiAgICBsZXQgcGFyZW50TGlzdCA9IFtdO1xuICAgIGlmICh0aGlzLnRyZWVDb25maWcuY2FuSGF2ZUR1cElkKSB7XG4gICAgICBwYXJlbnQgPSB0aGlzLnRyZWVEYXRhLmZpbmQoeCA9PiB4LnJvb3RJZCA9PT0gbm9kZS5yb290SWQgJiYgeC5jaGlsZElkID09PSBub2RlLmNoaWxkSWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBwYXJlbnQgPSB0aGlzLnRyZWVEYXRhLmZpbmQoeCA9PiB4LnJvb3RJZCA9PT0gbm9kZS5wYXJlbnRJZCk7XG4gICAgfVxuXG4gICAgaWYgKHBhcmVudCkge1xuICAgICAgcGFyZW50TGlzdC5wdXNoKHtcbiAgICAgICAgaWQ6IHBhcmVudC5yb290SWQsXG4gICAgICAgIGl0ZW1OYW1lOiBwYXJlbnQucm9vdE5hbWUsXG4gICAgICAgIHBhcmVudElkOiBwYXJlbnQucGFyZW50SWRcbiAgICAgIH0pO1xuICAgICAgcGFyZW50TGlzdCA9IHRoaXMuZ2V0UGFyZW50TGluZU9mTm9kZShwYXJlbnRMaXN0LCBwYXJlbnQpO1xuICAgIH1cbiAgICBwYXJlbnRMaXN0LnVuc2hpZnQodHJlZU5vZGUpO1xuXG4gICAgcGFyZW50TGlzdC5yZXZlcnNlKCkuZm9yRWFjaCh4ID0+IHtcbiAgICAgIHRoaXMuZm9jdXNFZGl0SXRlbSh4KTtcbiAgICB9KTtcblxuICB9XG5cbiAgZ2V0UGFyZW50TGluZU9mTm9kZShsaXN0UGFyZW50LCBub2RlOiBUcmVlTW9kZWwpIHtcbiAgICBsZXQgcGFyZW50O1xuICAgIHBhcmVudCA9IHRoaXMudHJlZURhdGEuZmluZCh4ID0+IHgucm9vdElkID09PSBub2RlLnBhcmVudElkKTtcblxuICAgIGlmIChwYXJlbnQpIHtcbiAgICAgIGxpc3RQYXJlbnQucHVzaCh7XG4gICAgICAgIGlkOiBwYXJlbnQucm9vdElkLFxuICAgICAgICBpdGVtTmFtZTogcGFyZW50LnJvb3ROYW1lLFxuICAgICAgICBwYXJlbnRJZDogcGFyZW50LnBhcmVudElkXG4gICAgICB9KTtcbiAgICAgIHRoaXMuZ2V0UGFyZW50TGluZU9mTm9kZShsaXN0UGFyZW50LCBwYXJlbnQpO1xuICAgIH1cblxuICAgIHJldHVybiBsaXN0UGFyZW50O1xuICB9XG5cbiAgZm9jdXNFZGl0SXRlbShzZWxlY3RlZE9wdGlvbikge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmRhdGFUcmVlcy50b0FycmF5KClbMF0uZ2V0Tm9kZUJ5SWRBbmRQYXJlbnRJZChzZWxlY3RlZE9wdGlvbi5pZCwgc2VsZWN0ZWRPcHRpb24ucGFyZW50SWQpO1xuXG4gICAgaWYgKG5vZGUpIHtcbiAgICAgIHRoaXMuZGF0YVRyZWVzLnRvQXJyYXkoKVswXS5leHBhbmROb2RlKG5vZGUpO1xuICAgICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGBfJHtub2RlLnBhcmVudElkID8gbm9kZS5wYXJlbnRJZC50b0xvd2VyQ2FzZSgpIDogJyd9XyR7bm9kZS5pZC50b0xvd2VyQ2FzZSgpfV8ke25vZGUubGV2ZWx9YCk7XG5cbiAgICAgIGlmIChlbGVtZW50KSB7XG4gICAgICAgIGVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG9uQ2xvc2VDbGljaygpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkRm9sZGVyID0gbnVsbDtcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgpO1xuICB9O1xuXG4gIG9uQWRkQ2xpY2soKSB7XG4gICAgdGhpcy5zZWxlY3RlZEZvbGRlciA9IG51bGw7XG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UodGhpcy5jaGVja2VkTm9kZUxpc3QpO1xuICB9XG5cbiAgZ2V0T2Zmc2V0SGVpZ2h0KGVsZW1lbnQ6IEhUTUxFbGVtZW50LCBpbmNsdWRlTWFyZ2luOiBib29sZWFuKTogbnVtYmVyIHtcbiAgICBsZXQgZWxtSGVpZ2h0ID0gMCwgZWxtTWFyZ2luID0gMDtcblxuICAgIGVsbUhlaWdodCA9IGVsZW1lbnQub2Zmc2V0SGVpZ2h0O1xuICAgIGlmIChpbmNsdWRlTWFyZ2luKSB7XG4gICAgICBjb25zdCBzdHlsZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpO1xuICAgICAgZWxtTWFyZ2luID0gcGFyc2VGbG9hdChzdHlsZS5tYXJnaW5Ub3AucmVwbGFjZSgncHgnLCAnJykpICsgcGFyc2VGbG9hdChzdHlsZS5tYXJnaW5Cb3R0b20ucmVwbGFjZSgncHgnLCAnJykpO1xuICAgIH1cblxuICAgIHJldHVybiAoZWxtSGVpZ2h0ICsgZWxtTWFyZ2luKTtcbiAgfVxuXG4gIGdldEl0ZW1DaGlwTmFtZShpdGVtOiBTZWxlY3RlZE5vZGUpIHtcbiAgICBpZiAoaXRlbS5pdGVtVHlwZSA9PT0gRGF0YVR5cGUuY2hlY2tsaXN0IHx8IGl0ZW0uaXRlbVR5cGUgPT09IERhdGFUeXBlLmRldmlhdGlvbikge1xuICAgICAgcmV0dXJuIChpdGVtLnBhcmVudE5hbWUgJiYgaXRlbS5pdGVtTmFtZSAhPT0gaXRlbS5wYXJlbnROYW1lKSA/IGAke2l0ZW0ucGFyZW50TmFtZX0vJHtpdGVtLml0ZW1OYW1lfWAgOiBpdGVtLml0ZW1OYW1lO1xuICAgIH1cbiAgICByZXR1cm4gaXRlbS5pdGVtTmFtZTtcbiAgfVxuXG4gIGlzRWxsaXBzaXNBY3RpdmUoZTogSFRNTEVsZW1lbnQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZSA/IChlLmNsaWVudFdpZHRoIDwgZS5zY3JvbGxXaWR0aCkgOiBmYWxzZTtcbiAgfVxuXG4gIGdldE5vZGVJY29uKGl0ZW06IElTZWxlY3RPbmVJdGVtKSB7XG4gICAgc3dpdGNoIChpdGVtLml0ZW1UeXBlKSB7XG4gICAgICBjYXNlIERhdGFUeXBlLmZvbGRlcjoge1xuICAgICAgICBzd2l0Y2ggKGl0ZW0ubGV2ZWxUeXBlKSB7XG4gICAgICAgICAgY2FzZSBEb2N1bWVudE5vZGVUeXBlLkRlcGFydG1lbnRGb2xkZXI6XG4gICAgICAgICAgICByZXR1cm4gJ2RlcGFydG1lbnRfZm9sZGVyX291dGxpbmVkJztcbiAgICAgICAgICBjYXNlIERvY3VtZW50Tm9kZVR5cGUuUmVnaW9uYWxGb2xkZXI6XG4gICAgICAgICAgICByZXR1cm4gJ3JlZ2lvbmFsX2ZvbGRlcl9vdXRsaW5lZCc7XG4gICAgICAgICAgY2FzZSBEb2N1bWVudE5vZGVUeXBlLlRvcEZvbGRlcjpcbiAgICAgICAgICAgIHJldHVybiAnZW50ZXJwcmlzZV9mb2xkZXJfb3V0bGluZWQnO1xuICAgICAgICAgIGNhc2UgRG9jdW1lbnROb2RlVHlwZS5Gb2xkZXI6XG4gICAgICAgICAgICByZXR1cm4gJ2xvY2FsX2ZvbGRlcl9vdXRsaW5lZCc7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiAnZm9sZGVyX291dGxpbmVkJztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY2FzZSBEYXRhVHlwZS5kb2N1bWVudDoge1xuICAgICAgICBzd2l0Y2ggKGl0ZW0ubGV2ZWxUeXBlKSB7XG4gICAgICAgICAgY2FzZSBEb2N1bWVudE5vZGVUeXBlLkRlcGFydG1lbnRGb2xkZXI6XG4gICAgICAgICAgICByZXR1cm4gJ2RvY3VtZW50X2RlcGFydG1lbnQnO1xuICAgICAgICAgIGNhc2UgRG9jdW1lbnROb2RlVHlwZS5SZWdpb25hbEZvbGRlcjpcbiAgICAgICAgICAgIHJldHVybiAnZG9jdW1lbnRfcmVnaW9uYWwnO1xuICAgICAgICAgIGNhc2UgRG9jdW1lbnROb2RlVHlwZS5Ub3BGb2xkZXI6XG4gICAgICAgICAgICByZXR1cm4gJ2RvY3VtZW50X2VudGVycHJpc2UnO1xuICAgICAgICAgIGNhc2UgRG9jdW1lbnROb2RlVHlwZS5Gb2xkZXI6XG4gICAgICAgICAgICByZXR1cm4gJ2RvY3VtZW50X2xvY2FsJztcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuICdkb2N1bWVudCc7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNhc2UgRGF0YVR5cGUuYXJlYTpcbiAgICAgICAgcmV0dXJuICdwcm9jZXNzX2FyZWFfb3V0bGluZWQnO1xuICAgICAgY2FzZSBEYXRhVHlwZS5wcm9jZXNzOlxuICAgICAgICByZXR1cm4gJ3Byb2Nlc3MnO1xuICAgICAgY2FzZSBEYXRhVHlwZS5kZXZpYXRpb246XG4gICAgICAgIHJldHVybiAnZGV2aWF0aW9uJztcbiAgICAgIGNhc2UgRGF0YVR5cGUuY2hlY2tsaXN0OlxuICAgICAgICByZXR1cm4gJ2NoZWNrbGlzdCc7XG4gICAgICBjYXNlIERhdGFUeXBlLnJpc2s6XG4gICAgICAgIHJldHVybiAncmlzayc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJ2ZvbGRlcl9vdXRsaW5lZCc7XG4gICAgfVxuICB9XG5cbiAgZ2V0UGFyZW50TmFtZShpdGVtOiBJU2VsZWN0T25lSXRlbSkge1xuICAgIGlmIChpdGVtLml0ZW1UeXBlID09PSB0aGlzLmRhdGFUeXBlLmNoZWNrbGlzdCB8fCBpdGVtLml0ZW1UeXBlID09PSB0aGlzLmRhdGFUeXBlLmRldmlhdGlvbikge1xuICAgICAgcmV0dXJuIGl0ZW0ucGFyZW50TmFtZTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBnZXRJdGVtSWQoaXRlbTogSVNlbGVjdE9uZUl0ZW0pIHtcbiAgICBpZiAoaXRlbS5pdGVtVHlwZSA9PT0gdGhpcy5kYXRhVHlwZS5wcm9jZXNzKSB7XG4gICAgICByZXR1cm4gYCR7dGhpcy5MQU5HLlBST0NFU1NfSUR9OiAke2l0ZW0uaXRlbU51bWJlcklkfTsgJHtpdGVtLnN0YXR1c05hbWV9YDtcbiAgICB9XG4gICAgZWxzZSBpZiAoaXRlbS5pdGVtVHlwZSA9PT0gdGhpcy5kYXRhVHlwZS5kb2N1bWVudCkge1xuICAgICAgcmV0dXJuIGAke3RoaXMuTEFORy5ET0NVTUVOVF9JRH06ICR7aXRlbS5pdGVtTnVtYmVySWR9OyAke2l0ZW0uc3RhdHVzTmFtZX1gO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHNlbGVjdE5vZGVUcmVlRXZlbnQobm9kZSkge1xuICAgIGlmIChub2RlLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGxldCBwb3NpdGlvbiA9IC0xO1xuICAgIGxldCBwYXJlbnROYW1lID0gJyc7XG4gICAgbGV0IGl0ZW1OdW1iZXJJZCA9ICcnO1xuXG4gICAgcG9zaXRpb24gPSAhbm9kZS5leHBhbmRhYmxlID8gdGhpcy50cmVlRGF0YS5maW5kSW5kZXgocCA9PiBwLmNoaWxkSWQgPT09IG5vZGUuaWQgJiYgcC5yb290SWQgPT09IG5vZGUucGFyZW50SWQpIDpcbiAgICAgIHRoaXMudHJlZURhdGEuZmluZEluZGV4KHAgPT4gcC5yb290SWQgPT09IG5vZGUuaWQpO1xuICAgIHBhcmVudE5hbWUgPSB0aGlzLnRyZWVEYXRhW3Bvc2l0aW9uXS5wYXJlbnRJZCA/IHRoaXMudHJlZURhdGFbcG9zaXRpb25dLnN1Yk5hbWUgOiB0aGlzLnRyZWVEYXRhW3Bvc2l0aW9uXS5yb290TmFtZTtcbiAgICBpdGVtTnVtYmVySWQgPSB0aGlzLnRyZWVEYXRhW3Bvc2l0aW9uXT8uZGlzcGxheUlkPy50b1N0cmluZygpO1xuXG4gICAgdGhpcy5jaGVja2VkTm9kZUxpc3QgPSBbXTtcbiAgICB0aGlzLmNoZWNrZWROb2RlTGlzdC5wdXNoKHtcbiAgICAgIG1vZHVsZUlkOiB0aGlzLm1vZHVsZUlkLFxuICAgICAgaWQ6IG5vZGUuaWQsXG4gICAgICBpdGVtTmFtZTogbm9kZS5uYW1lLFxuICAgICAgaXRlbVR5cGU6IG5vZGUuaXRlbVR5cGUsXG4gICAgICBwYXJlbnRJZDogbm9kZS5wYXJlbnRJZCxcbiAgICAgIHBhcmVudE5hbWU6IHBhcmVudE5hbWUsXG4gICAgICBpdGVtTnVtYmVySWQ6IGl0ZW1OdW1iZXJJZCxcbiAgICAgIGxldmVsVHlwZTogbm9kZS5sZXZlbFR5cGVcbiAgICB9KTtcblxuICAgIHRoaXMuc2VsZWN0ZWREYXRhID0gW107XG4gICAgdGhpcy5zZWxlY3RlZERhdGEucHVzaChub2RlKTtcbiAgfVxuXG5cbiAgbm9kZUV4cGFuZEV2ZW50KG5vZGUpIHtcbiAgICB0aGlzLm9uRXhwYW5kRm9sZGVyLmVtaXQoe1xuICAgICAgbm9kZToge1xuICAgICAgICBpZDogbm9kZS5pZCxcbiAgICAgICAgaXRlbU5hbWU6ICcnLFxuICAgICAgICBpdGVtVHlwZTogMCxcbiAgICAgICAgc3RhdHVzTmFtZTogJycsXG4gICAgICAgIHBhcmVudElkOiAnJyxcbiAgICAgICAgcGFyZW50TmFtZTogJydcbiAgICAgIH0sIGlzRXhwYW5kOiB0cnVlXG4gICAgfSk7XG4gIH1cblxuICByZW1vdmVDaGVja2VkTm9kZUxpc3QoKSB7XG4gICAgY29uc3QgaXRlbTogVHJlZUZsYXROb2RlID0gbnVsbDtcbiAgICB0aGlzLmNoZWNrZWROb2RlTGlzdCA9IFtdO1xuICAgIHRoaXMuc2VsZWN0ZWREYXRhID0gWy4uLltdLCBpdGVtXTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRhID0gW107XG4gICAgfSwgNTAwKTtcbiAgfVxuXG4gIG5vZGVDb25kZW5zZWRFdmVudChpZDogc3RyaW5nKSB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmV4cGFuZFRvQ2hpbGROb2RlLmZpbmRJbmRleCh4ID0+IHgudG9Mb3dlckNhc2UoKSA9PT0gaWQudG9Mb3dlckNhc2UoKSk7XG4gICAgaWYgKGluZGV4ID49IDApIHtcbiAgICAgIHRoaXMuZXhwYW5kVG9DaGlsZE5vZGUuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxoMiBtYXQtZGlhbG9nLXRpdGxlPlxuICA8c3Bhbj57eyBtb2R1bGVOYW1lIH19PC9zcGFuPlxuICA8YnV0dG9uIHFtcy1idG4taWNvbiBjbGFzcz1cImNsb3NlLWJ0blwiIChjbGljayk9XCJvbkNsb3NlQ2xpY2soKVwiPlxuICAgIDxtYXQtaWNvbiBtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XG4gIDwvYnV0dG9uPlxuPC9oMj5cbjxtYXQtZGlhbG9nLWNvbnRlbnQ+XG4gIDxtYXQtYXV0b2NvbXBsZXRlIG1hdC1hdXRvY29tcGxldGUgYXV0b0FjdGl2ZUZpcnN0T3B0aW9uICNhdXRvPVwibWF0QXV0b2NvbXBsZXRlXCI+XG4gICAgPGRpdiBjbGFzcz1cInNlYXJjaF9fbW9kdWxlLXJlc3VsdFwiICpuZ0lmPVwiZmlsdGVyZWRPcHRpb25zLmxlbmd0aFwiPlxuICAgICAgPG1hdC1vcHRpb24gY2xhc3M9XCJzZWFyY2hfX29wdGlvblwiICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgZ2V0TW9kdWxlRmlsdGVyZWRPcHRpb25zKClcIiBbdmFsdWVdPVwib3B0aW9uXCJcbiAgICAgICAgKGNsaWNrKT1cInNlbGVjdEl0ZW1TZWFyY2hlZChvcHRpb24pXCI+XG4gICAgICAgIDxxbXMtbGlzdC1pdGVtIGNsYXNzPVwiaXRlbS1zdWdnZXN0aW9uXCIgdHlwZT1cImltYWdlLXNxdWFyZVwiPlxuICAgICAgICAgIDxtYXQtaWNvbiBsZWFkaW5nLWljb24gdHlwZT1cImltYWdlLXNxdWFyZVwiIFtzdmdJY29uXT1cImdldE5vZGVJY29uKG9wdGlvbilcIj48L21hdC1pY29uPlxuICAgICAgICAgIDxkaXYgcW1zLWxpc3QtaGVhZGVyPlxuICAgICAgICAgICAgPGRpdiBxbXMtbGluZSB0eXBlPVwiY2FwdGlvblwiIHFtcy10b29sLXRpcD1cInt7XG4gICAgICAgICAgICAgICAgICBpc0VsbGlwc2lzQWN0aXZlKHNlYXJjaEl0ZW1SZXN1bHQpID8gb3B0aW9uLnBhcmVudE5hbWUgOiAnJ1xuICAgICAgICAgICAgICAgIH19XCIgbW9kZT1cImRhcmtcIiAqbmdJZj1cImdldFBhcmVudE5hbWUob3B0aW9uKVwiPlxuICAgICAgICAgICAgICA8c3BhbiAjc2VhcmNoSXRlbVJlc3VsdCBjbGFzcz1cInNlYXJjaF9fcmVzdWx0X19wYXJlbnQtbmFtZVwiPlxuICAgICAgICAgICAgICAgIHt7IG9wdGlvbi5wYXJlbnROYW1lIH19XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBxbXMtbGluZSB0eXBlPVwic3VidGl0bGVcIiBjbGFzcz1cInNlYXJjaF9fb3B0aW9uLW5hbWVcIj5cbiAgICAgICAgICAgICAge3sgb3B0aW9uLml0ZW1OYW1lIH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXB0aW9uXCIgKm5nSWY9XCJvcHRpb24uYnJlYWRjdW1icyAmJiBvcHRpb24uYnJlYWRjdW1icy5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgPHFtcy1icmVhZGNydW1iIGNsYXNzPVwiYnJlYWRjcnVtYi1jb250YWluZXJcIiB0eXBlPVwidGFibGVcIiBudW1EaXNwbGF5SXRlbT1cIjFcIiBbbm9kZXNdPVwib3B0aW9uLmJyZWFkY3VtYnNcIj5cbiAgICAgICAgICAgICAgPC9xbXMtYnJlYWRjcnVtYj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgcW1zLWxpbmUgY29sb3I9XCJkZWZhdWx0LXN1YnRpdGxlXCIgKm5nSWY9XCJnZXRJdGVtSWQob3B0aW9uKVwiPlxuICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIm1hdGVyaWFsLWljb25zLW91dGxpbmVkIHNlYXJjaF9fZGVzY3JpcHRpb24taWNvblwiPlxuICAgICAgICAgICAgICAgIGxvY2FsX29mZmVyXG4gICAgICAgICAgICAgIDwvbWF0LWljb24+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICB7eyBnZXRJdGVtSWQob3B0aW9uKSB9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3Ftcy1saXN0LWl0ZW0+XG4gICAgICA8L21hdC1vcHRpb24+XG4gICAgPC9kaXY+XG4gIDwvbWF0LWF1dG9jb21wbGV0ZT5cblxuICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgPGRpdiBjbGFzcz1cInFtcy1zY3JvbGxiYXIgY29sLTEyIHFtc2xpYl9yZWxhdGVkX3BvcHVwX2NvbnRlbnQgcGFuZWxfX2NvbnRlbnRfaXRlbVwiPlxuICAgICAgPG1hdC1leHBhbnNpb24tcGFuZWwgaGlkZVRvZ2dsZSBpZD1cInFtc2xpYl9yZWxhdGVkX3BvcHVwX2NvbW1vbl8wMDFcIiBbZXhwYW5kZWRdPVwiaXNDb21tb25FeHBhbmRlZFwiXG4gICAgICAgIChvcGVuZWQpPVwiaXNDb21tb25FeHBhbmRlZCA9IHRydWVcIiAoY2xvc2VkKT1cImlzQ29tbW9uRXhwYW5kZWQgPSBmYWxzZVwiIGNsYXNzPVwicGFuZWwtdHJlZVwiPlxuICAgICAgICA8ZGl2IGlkPVwicW1zbGliX3JlbGF0ZWRfcG9wdXBfY29tbW9uXzAwMlwiPlxuICAgICAgICAgIDxxbXMtdHJlZSBbdHJlZURhdGFdPVwidHJlZURhdGFcIiBbdHJlZUNvbmZpZ109XCJ0cmVlQ29uZmlnXCIgW3NlbGVjdGVkRGF0YV09XCJzZWxlY3RlZERhdGFcIlxuICAgICAgICAgICAgW3NlbGVjdGVkUmlza0RhdGFdPVwic2VsZWN0ZWRSaXNrRGF0YVwiIFtkaXNhYmxlZExpc3RdPVwiZGlzYWJsZWRMaXN0XCJcbiAgICAgICAgICAgIChzZWxlY3ROb2RlRXZlbnQpPVwic2VsZWN0Tm9kZVRyZWVFdmVudCgkZXZlbnQpXCIgKG5vZGVFeHBhbmRFdmVudCk9XCJub2RlRXhwYW5kRXZlbnQoJGV2ZW50KVwiXG4gICAgICAgICAgICBbZXhwYW5kT25UaXRsZUNsaWNrXT1cImZhbHNlXCIgW2V4cGFuZFRvQ2hpbGROb2RlXT1cImV4cGFuZFRvQ2hpbGROb2RlXCJcbiAgICAgICAgICAgIChub2RlQ29uZGVuc2VkRXZlbnQpPVwibm9kZUNvbmRlbnNlZEV2ZW50KCRldmVudClcIj48L3Ftcy10cmVlPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L21hdC1kaWFsb2ctY29udGVudD5cbjxtYXQtZGlhbG9nLWFjdGlvbnM+XG4gIDxidXR0b24gcW1zLWJ0bi10ZXh0IChjbGljayk9XCJvbkNsb3NlQ2xpY2soKVwiPlxuICAgIHt7IExBTkcuQ0FOQ0VMIH19XG4gIDwvYnV0dG9uPlxuICA8YnV0dG9uIHFtcy1idG4gKGNsaWNrKT1cIm9uQWRkQ2xpY2soKVwiPlxuICAgIHt7IExBTkcuQUREIH19IHt7IGNoZWNrZWROb2RlTGlzdD8ubGVuZ3RoID8gJygnICsgY2hlY2tlZE5vZGVMaXN0Py5sZW5ndGggKyAnKScgOiAnJ319XG4gIDwvYnV0dG9uPlxuPC9tYXQtZGlhbG9nLWFjdGlvbnM+Il19
|