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
@@ -255,7 +255,7 @@ export class SelectProcessDataComponent {
|
|
255
255
|
clickAction: 'noop'
|
256
256
|
}
|
257
257
|
}
|
258
|
-
], viewQueries: [{ propertyName: "treeProcessData", first: true, predicate: ["treeProcessData"], descendants: true }], ngImport: i0, template: "<div class=\"qms-select-department\">\n <div class=\"header-dialog mb-2\">\n <span>{{popupData.headerName}}</span>\n <button matDialogClose class=\"btn-close-dialog\" color=\"light\" qms-btn-icon>\n <mat-icon>close</mat-icon>\n </button>\n </div>\n <div>\n <div class=\"qms-scrollbar\">\n <div>\n <qms-select-process-data-tree #treeProcessData customClass=\"custom-department-tree\"\n [height]=\"popupData.config.isMobile ? '38vh' : '50vh'\" [rowsSkeleton]=\"9\" [config]=\"popupData.config\"\n (onSearchEvent)=\"onSearchEvent.emit($event)\" (onValueChangeEvent)=\"onResultDepartmentChange($event)\"\n (onPagingSearchEvent)=\"onPagingEvent.emit($event)\" (onCheckNodeEvent)=\"onCheckNodeEvent.emit($event)\"\n (onExpandNodeEvent)=\"onExpandNodeEvent.emit($event)\" (onLoadMoreEvent)=\"onLoadMoreEvent.emit()\"\n (onCheckAllItemSearchEvent)=\"onCheckAllItemSearchEvent.emit($event)\"\n (onCheckItemSearchEvent)=\"onCheckItemSearchEvent.emit($event)\"\n (toggleIncludeChildEvent)=\"toggleIncludeChildEvent.emit($event)\">\n </qms-select-process-data-tree>\n </div>\n </div>\n <div class=\"line__divider\"></div>\n <div [@heightAnimation] *ngIf=\"treeProcessData && !!treeProcessData.resultSelected.length\" class=\" pr-0 pe-0\">\n <div class=\"header-title\">{{LANG.RESULTS}}</div>\n <div class=\"result-content pr-0 pe-0\">\n <mat-chip-set class=\"panel__item qms-scrollbar\">\n <div [@inOutAnimation_2] [id]=\"'item-result-'+item.id\" *ngFor=\"let item of treeProcessData.resultSelected\">\n <mat-chip [@updateItemAnimation] *qmsContentChanges=\"item.children?.length\"\n [qms-tool-tip]=\"generateTootip(item)\" position=\"top\" mode=\"dark\" qms-chip [removable]=\"true\">\n <span (click)=\"onScrollToNode(item)\" qms-chip-body>\n <span class=\"related__item__content_name\" #itemName>\n <span>{{item.name}}</span>\n <span class=\"select__include-children__count\" *ngIf=\"!!item?.isGroup && !popupData.config.lazy\">\n {{item.children.length}}/{{item.childCount}}\n </span>\n <span class=\"select__include-children__count\" *ngIf=\"!!item?.isGroup && popupData.config.lazy\">\n {{item.selectedChildCount}}/{{item.childCount}}\n </span>\n </span>\n </span>\n\n <button (click)=\"onRemoveNode(item)\" matChipRemove *ngIf=\"!isNodeLoading(item.id); else loadingSpinner\">\n <mat-icon>cancel</mat-icon>\n </button>\n\n\n </mat-chip>\n </div>\n </mat-chip-set>\n </div>\n </div>\n <mat-divider *ngIf=\"treeProcessData && !!treeProcessData.resultSelected.length\" class=\"mx-auto\"></mat-divider>\n <div class=\"confirm__button__groups\">\n <button (click)=\"onCloseDialog()\" class=\"btn-add\"\n [disabled]=\"!resultSelected.length && !popupData.config.canAddNullResult\"\n [class.qms-btn-disabled]=\"!resultSelected.length && !popupData.config.canAddNullResult\" qms-btn>\n <span>{{LANG.ADD}}</span>\n <span>\n ({{treeProcessData.resultSelected.length}})\n </span>\n </button>\n <button qms-btn-text mat-dialog-close>\n Cancel\n </button>\n </div>\n </div>\n</div>\n\n<!-- Loading spinner -->\n<ng-template #loadingSpinner>\n <div class=\"qms-spinner-wrapper\">\n <div class=\"qms-spinner center\">\n <mat-spinner [diameter]=\"20\" [strokeWidth]=\"2\"></mat-spinner>\n </div>\n </div>\n</ng-template>", styles: [".qms-select-department{font-family:Open Sans,sans-serif}.qms-select-department .cursor-pointer{cursor:pointer}.qms-select-department .ml-5{margin-left:10px}.qms-select-department .padding-5{padding:5px}.qms-select-department .header-dialog{display:flex;justify-content:space-between;align-items:center;font-weight:600;font-size:16px}.qms-select-department .input__field{display:flex;align-items:center;position:relative}.qms-select-department .input__field input.input-search{width:100%;padding:10px;outline:none;border:none;background:var(--background-input-text)}.qms-select-department .input__field .btn-search{cursor:pointer;vertical-align:middle;position:absolute;top:50%;right:10px;transform:translateY(-50%)}.qms-select-department .line__divider{border-bottom:1px solid #ccc;height:1px;margin-top:10px;min-width:300px;max-width:100%}.qms-select-department .mat-expansion-panel-header{height:30px;font-size:12px;letter-spacing:1px;font-family:Raleway;font-weight:600;padding:0}.qms-select-department .mat-expansion-panel-header .mat-expansion-panel-header-title{align-items:center;margin-left:12px}.qms-select-department .mat-expansion-panel:not([class*=mat-elevation-z]){box-shadow:none}.qms-select-department .panel__item{max-height:175px;margin-top:4px;overflow-x:hidden;overflow-y:auto;padding-right:5px;width:100%;display:block}.qms-select-department .panel__item .related__item__inline{max-width:100%}.qms-select-department .panel__item ::ng-deep .mat-chip-list-wrapper{margin:0 -4px!important}.qms-select-department .panel__item .select__toggle-include{width:100%}.qms-select-department .panel__item .select__toggle-include.toggle-include-child .mat-mdc-slide-toggle.qms-group-options .mat-slide-toggle-thumb{background-color:#5a5a5a!important}.qms-select-department .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}.qms-select-department .panel__item .related__item__content .mat-icon{color:var(--related-mat-icon-color);font-size:24px}.qms-select-department .header-title{font-weight:600;color:#000000de}.qms-select-department .result-content{padding-right:0!important}.qms-select-department .result-content .mat-chip-list{min-height:40px}.qms-select-department .result-content .mat-chip-list .mat-icon{color:#0000004d!important;cursor:pointer}.qms-select-department .result-content .mat-chip-list .mat-icon:hover{color:#000!important}.qms-select-department .result-content span.related__item__content_name{min-width:calc(100% - 13px);max-width:250px;display:flex;align-items:center}.qms-select-department .result-content span.related__item__content_name>span:nth-child(1){display:inline-block;margin-right:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:200px}.qms-select-department .result-content span.related__item__content_name .select__include-children__count{font-size:.75rem;color:#00000080;font-weight:600;line-height:16px}.qms-select-department .text-name{position:relative;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;cursor:pointer;width:100%}.qms-select-department ::ng-deep .mat-mdc-checkbox.qms-group-options.flex-direction-row .mat-checkbox-layout{white-space:normal}.qms-select-department ::ng-deep .mat-mdc-checkbox.qms-group-options.flex-direction-row .mat-checkbox-label{flex-direction:row;align-items:center;position:relative;padding-bottom:2px}.qms-select-department .confirm__button__groups .btn-add>.qms-btn-wrapper{display:flex;justify-content:center;align-items:center}.qms-select-department ::ng-deep .custom-department-tree .qms-view-search-result{height:100%!important}.qms-select-department ::ng-deep .custom-department-tree .qms-view-search-result .result{max-height:calc(100% - 80px)!important}.qms-select-department ::ng-deep .custom-department-tree .loading-container{height:calc(100% - 40px)!important}.qms-select-department ::ng-deep .btn-close-dialog.qms-btn-icon:focus:not(:hover){background-color:unset!important;color:unset!important}.qms-spinner-wrapper{display:inline-block;width:22px;height:22px}.qms-spinner-wrapper .qms-spinner{font-size:20px;width:1em;height:1em;position:absolute;right:5px;top:50%;transform:translateY(-50%)}.qms-spinner-wrapper .qms-spinner .mat-mdc-progress-spinner circle{stroke:#1b75be!important}@media screen and (max-width: 600px){::ng-deep .cdk-global-overlay-wrapper{justify-content:center!important;width:100vw}.header-title{font-size:14px}.related__item__content_name{font-size:12px!important}}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.QMSInputChipDirective, selector: "mat-chip[qms-chip]", inputs: ["selected"] }, { kind: "directive", type: i5.QMSChipBodyDirective, selector: "[qms-chip-body]" }, { kind: "directive", type: i6.QMSToolTipRendererDirective, selector: "[qms-tool-tip]", inputs: ["showToolTip", "mode", "qms-tool-tip", "contentTemplate", "position"] }, { kind: "directive", type: i7.QMSContentChangesDirective, selector: "[qmsContentChanges]", inputs: ["qmsContentChanges"] }, { kind: "component", type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "component", type: i9.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: i9.QMSButtonIcon, selector: "button[qms-btn-icon]", inputs: ["disabled", "color", "active"], exportAs: ["qmsButtonIcon"] }, { kind: "component", type: i10.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i11.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["role", "id", "aria-label", "aria-description", "value", "color", "removable", "highlighted", "disableRipple", "disabled", "tabIndex"], outputs: ["removed", "destroyed"], exportAs: ["matChip"] }, { kind: "directive", type: i11.MatChipRemove, selector: "[matChipRemove]" }, { kind: "component", type: i11.MatChipSet, selector: "mat-chip-set", inputs: ["disabled", "role", "tabIndex"] }, { kind: "component", type: i12.SelectProcessDataTreeComponent, selector: "qms-select-process-data-tree", inputs: ["rowsSkeleton", "height", "config"], outputs: ["onSearchEvent", "onPagingSearchEvent", "onValueChangeEvent", "selectionNodeChangeEvent", "onCheckNodeEvent", "onExpandNodeEvent", "onLoadMoreEvent", "onCheckItemSearchEvent", "onCheckAllItemSearchEvent", "toggleIncludeChildEvent"] }, { kind: "component", type: i13.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }], animations: [SelectDepartmentAnimationTrigger] }); }
|
258
|
+
], viewQueries: [{ propertyName: "treeProcessData", first: true, predicate: ["treeProcessData"], descendants: true }], ngImport: i0, template: "<div class=\"qms-select-department\">\n <div class=\"header-dialog mb-2\">\n <span>{{popupData.headerName}}</span>\n <button matDialogClose class=\"btn-close-dialog\" color=\"light\" qms-btn-icon>\n <mat-icon>close</mat-icon>\n </button>\n </div>\n <div>\n <div class=\"qms-scrollbar\">\n <div>\n <qms-select-process-data-tree #treeProcessData customClass=\"custom-department-tree\"\n [height]=\"popupData.config.isMobile ? '38vh' : '50vh'\" [rowsSkeleton]=\"9\" [config]=\"popupData.config\"\n (onSearchEvent)=\"onSearchEvent.emit($event)\" (onValueChangeEvent)=\"onResultDepartmentChange($event)\"\n (onPagingSearchEvent)=\"onPagingEvent.emit($event)\" (onCheckNodeEvent)=\"onCheckNodeEvent.emit($event)\"\n (onExpandNodeEvent)=\"onExpandNodeEvent.emit($event)\" (onLoadMoreEvent)=\"onLoadMoreEvent.emit()\"\n (onCheckAllItemSearchEvent)=\"onCheckAllItemSearchEvent.emit($event)\"\n (onCheckItemSearchEvent)=\"onCheckItemSearchEvent.emit($event)\"\n (toggleIncludeChildEvent)=\"toggleIncludeChildEvent.emit($event)\">\n </qms-select-process-data-tree>\n </div>\n </div>\n <div class=\"line__divider\"></div>\n <div [@heightAnimation] *ngIf=\"treeProcessData && !!treeProcessData.resultSelected.length\" class=\" pr-0 pe-0\">\n <div class=\"header-title\">{{LANG.RESULTS}}</div>\n <div class=\"result-content pr-0 pe-0\">\n <mat-chip-set class=\"panel__item qms-scrollbar\">\n <div [@inOutAnimation_2] [id]=\"'item-result-'+item.id\" *ngFor=\"let item of treeProcessData.resultSelected\">\n <mat-chip [@updateItemAnimation] *qmsContentChanges=\"item.children?.length\"\n [qms-tool-tip]=\"generateTootip(item)\" position=\"top\" mode=\"dark\" qms-chip [removable]=\"true\">\n <span (click)=\"onScrollToNode(item)\" qms-chip-body>\n <span class=\"related__item__content_name\" #itemName>\n <span>{{item.name}}</span>\n <span class=\"select__include-children__count\" *ngIf=\"!!item?.isGroup && !popupData.config.lazy\">\n {{item.children.length}}/{{item.childCount}}\n </span>\n <span class=\"select__include-children__count\" *ngIf=\"!!item?.isGroup && popupData.config.lazy\">\n {{item.selectedChildCount}}/{{item.childCount}}\n </span>\n </span>\n </span>\n\n <button (click)=\"onRemoveNode(item)\" matChipRemove *ngIf=\"!isNodeLoading(item.id); else loadingSpinner\">\n <mat-icon>cancel</mat-icon>\n </button>\n\n\n </mat-chip>\n </div>\n </mat-chip-set>\n </div>\n </div>\n <mat-divider *ngIf=\"treeProcessData && !!treeProcessData.resultSelected.length\" class=\"mx-auto\"></mat-divider>\n <div class=\"confirm__button__groups\">\n <button (click)=\"onCloseDialog()\" class=\"btn-add\"\n [disabled]=\"!resultSelected.length && !popupData.config.canAddNullResult\"\n [class.qms-btn-disabled]=\"!resultSelected.length && !popupData.config.canAddNullResult\" qms-btn>\n <span>{{LANG.ADD}}</span>\n <span>\n ({{treeProcessData.resultSelected.length}})\n </span>\n </button>\n <button qms-btn-text mat-dialog-close>\n Cancel\n </button>\n </div>\n </div>\n</div>\n\n<!-- Loading spinner -->\n<ng-template #loadingSpinner>\n <div class=\"qms-spinner-wrapper\">\n <div class=\"qms-spinner center\">\n <mat-spinner [diameter]=\"20\" [strokeWidth]=\"2\"></mat-spinner>\n </div>\n </div>\n</ng-template>", styles: [".qms-select-department{font-family:Open Sans,sans-serif}.qms-select-department .cursor-pointer{cursor:pointer}.qms-select-department .ml-5{margin-left:10px}.qms-select-department .padding-5{padding:5px}.qms-select-department .header-dialog{display:flex;justify-content:space-between;align-items:center;font-weight:600;font-size:16px}.qms-select-department .input__field{display:flex;align-items:center;position:relative}.qms-select-department .input__field input.input-search{width:100%;padding:10px;outline:none;border:none;background:var(--background-input-text)}.qms-select-department .input__field .btn-search{cursor:pointer;vertical-align:middle;position:absolute;top:50%;right:10px;transform:translateY(-50%)}.qms-select-department .line__divider{border-bottom:1px solid #ccc;height:1px;margin-top:10px;min-width:300px;max-width:100%}.qms-select-department .mat-expansion-panel-header{height:30px;font-size:12px;letter-spacing:1px;font-family:Raleway;font-weight:600;padding:0}.qms-select-department .mat-expansion-panel-header .mat-expansion-panel-header-title{align-items:center;margin-left:12px}.qms-select-department .mat-expansion-panel:not([class*=mat-elevation-z]){box-shadow:none}.qms-select-department .panel__item{max-height:175px;margin-top:4px;overflow-x:hidden;overflow-y:auto;padding-right:5px;width:100%;display:block}.qms-select-department .panel__item .related__item__inline{max-width:100%}.qms-select-department .panel__item ::ng-deep .mat-chip-list-wrapper{margin:0 -4px!important}.qms-select-department .panel__item .select__toggle-include{width:100%}.qms-select-department .panel__item .select__toggle-include.toggle-include-child .mat-mdc-slide-toggle.qms-group-options .mat-slide-toggle-thumb{background-color:#5a5a5a!important}.qms-select-department .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}.qms-select-department .panel__item .related__item__content .mat-icon{color:var(--related-mat-icon-color);font-size:24px}.qms-select-department .header-title{font-weight:600;color:#000000de}.qms-select-department .result-content{padding-right:0!important}.qms-select-department .result-content .mat-chip-list{min-height:40px}.qms-select-department .result-content .mat-chip-list .mat-icon{color:#0000004d!important;cursor:pointer}.qms-select-department .result-content .mat-chip-list .mat-icon:hover{color:#000!important}.qms-select-department .result-content span.related__item__content_name{min-width:calc(100% - 13px);display:flex;align-items:center}.qms-select-department .result-content span.related__item__content_name>span:nth-child(1){display:inline-block;margin-right:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:200px}.qms-select-department .result-content span.related__item__content_name .select__include-children__count{font-size:.75rem;color:#00000080;font-weight:600;line-height:16px}.qms-select-department .text-name{position:relative;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;cursor:pointer;width:100%}.qms-select-department ::ng-deep .mat-mdc-checkbox.qms-group-options.flex-direction-row .mat-checkbox-layout{white-space:normal}.qms-select-department ::ng-deep .mat-mdc-checkbox.qms-group-options.flex-direction-row .mat-checkbox-label{flex-direction:row;align-items:center;position:relative;padding-bottom:2px}.qms-select-department .confirm__button__groups .btn-add>.qms-btn-wrapper{display:flex;justify-content:center;align-items:center}.qms-select-department ::ng-deep .custom-department-tree .qms-view-search-result{height:100%!important}.qms-select-department ::ng-deep .custom-department-tree .qms-view-search-result .result{max-height:calc(100% - 80px)!important}.qms-select-department ::ng-deep .custom-department-tree .loading-container{height:calc(100% - 40px)!important}.qms-select-department ::ng-deep .btn-close-dialog.qms-btn-icon:focus:not(:hover){background-color:unset!important;color:unset!important}.qms-spinner-wrapper{display:inline-block;width:22px;height:22px}.qms-spinner-wrapper .qms-spinner{font-size:20px;width:1em;height:1em;position:absolute;right:5px;top:50%;transform:translateY(-50%)}.qms-spinner-wrapper .qms-spinner .mat-mdc-progress-spinner circle{stroke:#1b75be!important}@media screen and (max-width: 600px){::ng-deep .cdk-global-overlay-wrapper{justify-content:center!important;width:100vw}.header-title{font-size:14px}.related__item__content_name{font-size:12px!important}}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.QMSInputChipDirective, selector: "mat-chip[qms-chip]", inputs: ["selected"] }, { kind: "directive", type: i5.QMSChipBodyDirective, selector: "[qms-chip-body]" }, { kind: "directive", type: i6.QMSToolTipRendererDirective, selector: "[qms-tool-tip]", inputs: ["showToolTip", "mode", "qms-tool-tip", "contentTemplate", "position"] }, { kind: "directive", type: i7.QMSContentChangesDirective, selector: "[qmsContentChanges]", inputs: ["qmsContentChanges"] }, { kind: "component", type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "component", type: i9.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: i9.QMSButtonIcon, selector: "button[qms-btn-icon]", inputs: ["disabled", "color", "active"], exportAs: ["qmsButtonIcon"] }, { kind: "component", type: i10.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i11.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["role", "id", "aria-label", "aria-description", "value", "color", "removable", "highlighted", "disableRipple", "disabled", "tabIndex"], outputs: ["removed", "destroyed"], exportAs: ["matChip"] }, { kind: "directive", type: i11.MatChipRemove, selector: "[matChipRemove]" }, { kind: "component", type: i11.MatChipSet, selector: "mat-chip-set", inputs: ["disabled", "role", "tabIndex"] }, { kind: "component", type: i12.SelectProcessDataTreeComponent, selector: "qms-select-process-data-tree", inputs: ["rowsSkeleton", "height", "config"], outputs: ["onSearchEvent", "onPagingSearchEvent", "onValueChangeEvent", "selectionNodeChangeEvent", "onCheckNodeEvent", "onExpandNodeEvent", "onLoadMoreEvent", "onCheckItemSearchEvent", "onCheckAllItemSearchEvent", "toggleIncludeChildEvent"] }, { kind: "component", type: i13.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }], animations: [SelectDepartmentAnimationTrigger] }); }
|
259
259
|
}
|
260
260
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SelectProcessDataComponent, decorators: [{
|
261
261
|
type: Component,
|
@@ -266,7 +266,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
266
266
|
clickAction: 'noop'
|
267
267
|
}
|
268
268
|
}
|
269
|
-
], animations: [SelectDepartmentAnimationTrigger], template: "<div class=\"qms-select-department\">\n <div class=\"header-dialog mb-2\">\n <span>{{popupData.headerName}}</span>\n <button matDialogClose class=\"btn-close-dialog\" color=\"light\" qms-btn-icon>\n <mat-icon>close</mat-icon>\n </button>\n </div>\n <div>\n <div class=\"qms-scrollbar\">\n <div>\n <qms-select-process-data-tree #treeProcessData customClass=\"custom-department-tree\"\n [height]=\"popupData.config.isMobile ? '38vh' : '50vh'\" [rowsSkeleton]=\"9\" [config]=\"popupData.config\"\n (onSearchEvent)=\"onSearchEvent.emit($event)\" (onValueChangeEvent)=\"onResultDepartmentChange($event)\"\n (onPagingSearchEvent)=\"onPagingEvent.emit($event)\" (onCheckNodeEvent)=\"onCheckNodeEvent.emit($event)\"\n (onExpandNodeEvent)=\"onExpandNodeEvent.emit($event)\" (onLoadMoreEvent)=\"onLoadMoreEvent.emit()\"\n (onCheckAllItemSearchEvent)=\"onCheckAllItemSearchEvent.emit($event)\"\n (onCheckItemSearchEvent)=\"onCheckItemSearchEvent.emit($event)\"\n (toggleIncludeChildEvent)=\"toggleIncludeChildEvent.emit($event)\">\n </qms-select-process-data-tree>\n </div>\n </div>\n <div class=\"line__divider\"></div>\n <div [@heightAnimation] *ngIf=\"treeProcessData && !!treeProcessData.resultSelected.length\" class=\" pr-0 pe-0\">\n <div class=\"header-title\">{{LANG.RESULTS}}</div>\n <div class=\"result-content pr-0 pe-0\">\n <mat-chip-set class=\"panel__item qms-scrollbar\">\n <div [@inOutAnimation_2] [id]=\"'item-result-'+item.id\" *ngFor=\"let item of treeProcessData.resultSelected\">\n <mat-chip [@updateItemAnimation] *qmsContentChanges=\"item.children?.length\"\n [qms-tool-tip]=\"generateTootip(item)\" position=\"top\" mode=\"dark\" qms-chip [removable]=\"true\">\n <span (click)=\"onScrollToNode(item)\" qms-chip-body>\n <span class=\"related__item__content_name\" #itemName>\n <span>{{item.name}}</span>\n <span class=\"select__include-children__count\" *ngIf=\"!!item?.isGroup && !popupData.config.lazy\">\n {{item.children.length}}/{{item.childCount}}\n </span>\n <span class=\"select__include-children__count\" *ngIf=\"!!item?.isGroup && popupData.config.lazy\">\n {{item.selectedChildCount}}/{{item.childCount}}\n </span>\n </span>\n </span>\n\n <button (click)=\"onRemoveNode(item)\" matChipRemove *ngIf=\"!isNodeLoading(item.id); else loadingSpinner\">\n <mat-icon>cancel</mat-icon>\n </button>\n\n\n </mat-chip>\n </div>\n </mat-chip-set>\n </div>\n </div>\n <mat-divider *ngIf=\"treeProcessData && !!treeProcessData.resultSelected.length\" class=\"mx-auto\"></mat-divider>\n <div class=\"confirm__button__groups\">\n <button (click)=\"onCloseDialog()\" class=\"btn-add\"\n [disabled]=\"!resultSelected.length && !popupData.config.canAddNullResult\"\n [class.qms-btn-disabled]=\"!resultSelected.length && !popupData.config.canAddNullResult\" qms-btn>\n <span>{{LANG.ADD}}</span>\n <span>\n ({{treeProcessData.resultSelected.length}})\n </span>\n </button>\n <button qms-btn-text mat-dialog-close>\n Cancel\n </button>\n </div>\n </div>\n</div>\n\n<!-- Loading spinner -->\n<ng-template #loadingSpinner>\n <div class=\"qms-spinner-wrapper\">\n <div class=\"qms-spinner center\">\n <mat-spinner [diameter]=\"20\" [strokeWidth]=\"2\"></mat-spinner>\n </div>\n </div>\n</ng-template>", styles: [".qms-select-department{font-family:Open Sans,sans-serif}.qms-select-department .cursor-pointer{cursor:pointer}.qms-select-department .ml-5{margin-left:10px}.qms-select-department .padding-5{padding:5px}.qms-select-department .header-dialog{display:flex;justify-content:space-between;align-items:center;font-weight:600;font-size:16px}.qms-select-department .input__field{display:flex;align-items:center;position:relative}.qms-select-department .input__field input.input-search{width:100%;padding:10px;outline:none;border:none;background:var(--background-input-text)}.qms-select-department .input__field .btn-search{cursor:pointer;vertical-align:middle;position:absolute;top:50%;right:10px;transform:translateY(-50%)}.qms-select-department .line__divider{border-bottom:1px solid #ccc;height:1px;margin-top:10px;min-width:300px;max-width:100%}.qms-select-department .mat-expansion-panel-header{height:30px;font-size:12px;letter-spacing:1px;font-family:Raleway;font-weight:600;padding:0}.qms-select-department .mat-expansion-panel-header .mat-expansion-panel-header-title{align-items:center;margin-left:12px}.qms-select-department .mat-expansion-panel:not([class*=mat-elevation-z]){box-shadow:none}.qms-select-department .panel__item{max-height:175px;margin-top:4px;overflow-x:hidden;overflow-y:auto;padding-right:5px;width:100%;display:block}.qms-select-department .panel__item .related__item__inline{max-width:100%}.qms-select-department .panel__item ::ng-deep .mat-chip-list-wrapper{margin:0 -4px!important}.qms-select-department .panel__item .select__toggle-include{width:100%}.qms-select-department .panel__item .select__toggle-include.toggle-include-child .mat-mdc-slide-toggle.qms-group-options .mat-slide-toggle-thumb{background-color:#5a5a5a!important}.qms-select-department .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}.qms-select-department .panel__item .related__item__content .mat-icon{color:var(--related-mat-icon-color);font-size:24px}.qms-select-department .header-title{font-weight:600;color:#000000de}.qms-select-department .result-content{padding-right:0!important}.qms-select-department .result-content .mat-chip-list{min-height:40px}.qms-select-department .result-content .mat-chip-list .mat-icon{color:#0000004d!important;cursor:pointer}.qms-select-department .result-content .mat-chip-list .mat-icon:hover{color:#000!important}.qms-select-department .result-content span.related__item__content_name{min-width:calc(100% - 13px);
|
269
|
+
], animations: [SelectDepartmentAnimationTrigger], template: "<div class=\"qms-select-department\">\n <div class=\"header-dialog mb-2\">\n <span>{{popupData.headerName}}</span>\n <button matDialogClose class=\"btn-close-dialog\" color=\"light\" qms-btn-icon>\n <mat-icon>close</mat-icon>\n </button>\n </div>\n <div>\n <div class=\"qms-scrollbar\">\n <div>\n <qms-select-process-data-tree #treeProcessData customClass=\"custom-department-tree\"\n [height]=\"popupData.config.isMobile ? '38vh' : '50vh'\" [rowsSkeleton]=\"9\" [config]=\"popupData.config\"\n (onSearchEvent)=\"onSearchEvent.emit($event)\" (onValueChangeEvent)=\"onResultDepartmentChange($event)\"\n (onPagingSearchEvent)=\"onPagingEvent.emit($event)\" (onCheckNodeEvent)=\"onCheckNodeEvent.emit($event)\"\n (onExpandNodeEvent)=\"onExpandNodeEvent.emit($event)\" (onLoadMoreEvent)=\"onLoadMoreEvent.emit()\"\n (onCheckAllItemSearchEvent)=\"onCheckAllItemSearchEvent.emit($event)\"\n (onCheckItemSearchEvent)=\"onCheckItemSearchEvent.emit($event)\"\n (toggleIncludeChildEvent)=\"toggleIncludeChildEvent.emit($event)\">\n </qms-select-process-data-tree>\n </div>\n </div>\n <div class=\"line__divider\"></div>\n <div [@heightAnimation] *ngIf=\"treeProcessData && !!treeProcessData.resultSelected.length\" class=\" pr-0 pe-0\">\n <div class=\"header-title\">{{LANG.RESULTS}}</div>\n <div class=\"result-content pr-0 pe-0\">\n <mat-chip-set class=\"panel__item qms-scrollbar\">\n <div [@inOutAnimation_2] [id]=\"'item-result-'+item.id\" *ngFor=\"let item of treeProcessData.resultSelected\">\n <mat-chip [@updateItemAnimation] *qmsContentChanges=\"item.children?.length\"\n [qms-tool-tip]=\"generateTootip(item)\" position=\"top\" mode=\"dark\" qms-chip [removable]=\"true\">\n <span (click)=\"onScrollToNode(item)\" qms-chip-body>\n <span class=\"related__item__content_name\" #itemName>\n <span>{{item.name}}</span>\n <span class=\"select__include-children__count\" *ngIf=\"!!item?.isGroup && !popupData.config.lazy\">\n {{item.children.length}}/{{item.childCount}}\n </span>\n <span class=\"select__include-children__count\" *ngIf=\"!!item?.isGroup && popupData.config.lazy\">\n {{item.selectedChildCount}}/{{item.childCount}}\n </span>\n </span>\n </span>\n\n <button (click)=\"onRemoveNode(item)\" matChipRemove *ngIf=\"!isNodeLoading(item.id); else loadingSpinner\">\n <mat-icon>cancel</mat-icon>\n </button>\n\n\n </mat-chip>\n </div>\n </mat-chip-set>\n </div>\n </div>\n <mat-divider *ngIf=\"treeProcessData && !!treeProcessData.resultSelected.length\" class=\"mx-auto\"></mat-divider>\n <div class=\"confirm__button__groups\">\n <button (click)=\"onCloseDialog()\" class=\"btn-add\"\n [disabled]=\"!resultSelected.length && !popupData.config.canAddNullResult\"\n [class.qms-btn-disabled]=\"!resultSelected.length && !popupData.config.canAddNullResult\" qms-btn>\n <span>{{LANG.ADD}}</span>\n <span>\n ({{treeProcessData.resultSelected.length}})\n </span>\n </button>\n <button qms-btn-text mat-dialog-close>\n Cancel\n </button>\n </div>\n </div>\n</div>\n\n<!-- Loading spinner -->\n<ng-template #loadingSpinner>\n <div class=\"qms-spinner-wrapper\">\n <div class=\"qms-spinner center\">\n <mat-spinner [diameter]=\"20\" [strokeWidth]=\"2\"></mat-spinner>\n </div>\n </div>\n</ng-template>", styles: [".qms-select-department{font-family:Open Sans,sans-serif}.qms-select-department .cursor-pointer{cursor:pointer}.qms-select-department .ml-5{margin-left:10px}.qms-select-department .padding-5{padding:5px}.qms-select-department .header-dialog{display:flex;justify-content:space-between;align-items:center;font-weight:600;font-size:16px}.qms-select-department .input__field{display:flex;align-items:center;position:relative}.qms-select-department .input__field input.input-search{width:100%;padding:10px;outline:none;border:none;background:var(--background-input-text)}.qms-select-department .input__field .btn-search{cursor:pointer;vertical-align:middle;position:absolute;top:50%;right:10px;transform:translateY(-50%)}.qms-select-department .line__divider{border-bottom:1px solid #ccc;height:1px;margin-top:10px;min-width:300px;max-width:100%}.qms-select-department .mat-expansion-panel-header{height:30px;font-size:12px;letter-spacing:1px;font-family:Raleway;font-weight:600;padding:0}.qms-select-department .mat-expansion-panel-header .mat-expansion-panel-header-title{align-items:center;margin-left:12px}.qms-select-department .mat-expansion-panel:not([class*=mat-elevation-z]){box-shadow:none}.qms-select-department .panel__item{max-height:175px;margin-top:4px;overflow-x:hidden;overflow-y:auto;padding-right:5px;width:100%;display:block}.qms-select-department .panel__item .related__item__inline{max-width:100%}.qms-select-department .panel__item ::ng-deep .mat-chip-list-wrapper{margin:0 -4px!important}.qms-select-department .panel__item .select__toggle-include{width:100%}.qms-select-department .panel__item .select__toggle-include.toggle-include-child .mat-mdc-slide-toggle.qms-group-options .mat-slide-toggle-thumb{background-color:#5a5a5a!important}.qms-select-department .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}.qms-select-department .panel__item .related__item__content .mat-icon{color:var(--related-mat-icon-color);font-size:24px}.qms-select-department .header-title{font-weight:600;color:#000000de}.qms-select-department .result-content{padding-right:0!important}.qms-select-department .result-content .mat-chip-list{min-height:40px}.qms-select-department .result-content .mat-chip-list .mat-icon{color:#0000004d!important;cursor:pointer}.qms-select-department .result-content .mat-chip-list .mat-icon:hover{color:#000!important}.qms-select-department .result-content span.related__item__content_name{min-width:calc(100% - 13px);display:flex;align-items:center}.qms-select-department .result-content span.related__item__content_name>span:nth-child(1){display:inline-block;margin-right:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:200px}.qms-select-department .result-content span.related__item__content_name .select__include-children__count{font-size:.75rem;color:#00000080;font-weight:600;line-height:16px}.qms-select-department .text-name{position:relative;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;cursor:pointer;width:100%}.qms-select-department ::ng-deep .mat-mdc-checkbox.qms-group-options.flex-direction-row .mat-checkbox-layout{white-space:normal}.qms-select-department ::ng-deep .mat-mdc-checkbox.qms-group-options.flex-direction-row .mat-checkbox-label{flex-direction:row;align-items:center;position:relative;padding-bottom:2px}.qms-select-department .confirm__button__groups .btn-add>.qms-btn-wrapper{display:flex;justify-content:center;align-items:center}.qms-select-department ::ng-deep .custom-department-tree .qms-view-search-result{height:100%!important}.qms-select-department ::ng-deep .custom-department-tree .qms-view-search-result .result{max-height:calc(100% - 80px)!important}.qms-select-department ::ng-deep .custom-department-tree .loading-container{height:calc(100% - 40px)!important}.qms-select-department ::ng-deep .btn-close-dialog.qms-btn-icon:focus:not(:hover){background-color:unset!important;color:unset!important}.qms-spinner-wrapper{display:inline-block;width:22px;height:22px}.qms-spinner-wrapper .qms-spinner{font-size:20px;width:1em;height:1em;position:absolute;right:5px;top:50%;transform:translateY(-50%)}.qms-spinner-wrapper .qms-spinner .mat-mdc-progress-spinner circle{stroke:#1b75be!important}@media screen and (max-width: 600px){::ng-deep .cdk-global-overlay-wrapper{justify-content:center!important;width:100vw}.header-title{font-size:14px}.related__item__content_name{font-size:12px!important}}\n"] }]
|
270
270
|
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.MatDialogRef }, { type: i14.SelectDepartmentPopupData, decorators: [{
|
271
271
|
type: Inject,
|
272
272
|
args: [MAT_DIALOG_DATA]
|
@@ -290,4 +290,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
290
290
|
}], toggleIncludeChildEvent: [{
|
291
291
|
type: Output
|
292
292
|
}] } });
|
293
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LXByb2Nlc3MtZGF0YS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9xbXMtYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvc2VsZWN0LXByb2Nlc3MtZGF0YS9zZWxlY3QtcHJvY2Vzcy1kYXRhLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Ftcy1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9zZWxlY3QtcHJvY2Vzcy1kYXRhL3NlbGVjdC1wcm9jZXNzLWRhdGEuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFvQyxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBcUIsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4SSxPQUFPLEVBQTZCLDRCQUE0QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDckcsT0FBTyxFQUFnQixlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUV6RSxPQUFPLEtBQUssQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUM1QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUszQyxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN6RixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7OztBQWlCakUsTUFBTSxPQUFPLDBCQUEwQjtJQWlCckMsSUFBSSxjQUFjO1FBQ2hCLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxpQkFBaUIsQ0FBQztJQUMxRSxDQUFDO0lBRUQsWUFDVSxLQUF3QixFQUN4QixTQUFtRCxFQUMxQixJQUErQixFQUN6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Z0NBQ1IsV0FBVyxFQUFFLE1BQU07NkJBQ1M7eUJBQy9CO3FCQUNGLGNBQ1csQ0FBQyxnQ0FBZ0MsQ0FBQzs7MEJBMEIzQyxNQUFNOzJCQUFDLGVBQWU7K0VBckJLLGVBQWU7c0JBQTVDLFNBQVM7dUJBQUMsaUJBQWlCO2dCQUNsQixhQUFhO3NCQUF0QixNQUFNO2dCQUlHLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csZ0JBQWdCO3NCQUF6QixNQUFNO2dCQUNHLGlCQUFpQjtzQkFBMUIsTUFBTTtnQkFDRyxlQUFlO3NCQUF4QixNQUFNO2dCQUNHLHNCQUFzQjtzQkFBL0IsTUFBTTtnQkFDRyx5QkFBeUI7c0JBQWxDLE1BQU07Z0JBQ0csdUJBQXVCO3NCQUFoQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbmplY3QsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0Q2hlY2tib3hEZWZhdWx0T3B0aW9ucywgTUFUX0NIRUNLQk9YX0RFRkFVTFRfT1BUSU9OUyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoZWNrYm94JztcbmltcG9ydCB7IE1hdERpYWxvZ1JlZiwgTUFUX0RJQUxPR19EQVRBIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IFBhZ2VFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBRTVNGbGF0Tm9kZVRyZWUgfSBmcm9tICcuLi8uLi9jb21tb24vbW9kZWxzL3Ftcy1mbGF0LW5vZGUubW9kZWwnO1xuaW1wb3J0IHsgUU1TVHJlZU5vZGUgfSBmcm9tICcuLi8uLi9jb21tb24vbW9kZWxzL3Ftcy10cmVlLW5vZGUubW9kZWwnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTGlicmFyeVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cmFuc2xhdGlvbi1yZWdpc3RyeS5zZXJ2aWNlJztcbmltcG9ydCB7IERlcGFydG1lbnRTZWFyY2hSZXN1bHRNb2RlbCwgUU1TRGVwYXJ0bWVudFBhZ2luZ01vZGVsIH0gZnJvbSAnLi4vc2VsZWN0LWRlcGFydG1lbnQtdHJlZSc7XG5pbXBvcnQgeyBTZWxlY3REZXBhcnRtZW50QW5pbWF0aW9uVHJpZ2dlciB9IGZyb20gJy4uL3NlbGVjdC1kZXBhcnRtZW50L2NvbW1vbi9hbmltYXRpb24nO1xuaW1wb3J0IHsgU2VsZWN0RGVwYXJ0bWVudFBvcHVwRGF0YSB9IGZyb20gJy4uL3NlbGVjdC1kZXBhcnRtZW50JztcbmltcG9ydCB7IFNlbGVjdFByb2Nlc3NEYXRhVHJlZUNvbXBvbmVudCB9IGZyb20gJy4uL3NlbGVjdC1wcm9jZXNzLWRhdGEtdHJlZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3Ftcy1zZWxlY3QtcHJvY2Vzcy1kYXRhJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NlbGVjdC1wcm9jZXNzLWRhdGEuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zZWxlY3QtcHJvY2Vzcy1kYXRhLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE1BVF9DSEVDS0JPWF9ERUZBVUxUX09QVElPTlMsXG4gICAgICB1c2VWYWx1ZToge1xuICAgICAgICBjbGlja0FjdGlvbjogJ25vb3AnXG4gICAgICB9IGFzIE1hdENoZWNrYm94RGVmYXVsdE9wdGlvbnNcbiAgICB9XG4gIF0sXG4gIGFuaW1hdGlvbnM6IFtTZWxlY3REZXBhcnRtZW50QW5pbWF0aW9uVHJpZ2dlcl1cbn0pXG5leHBvcnQgY2xhc3MgU2VsZWN0UHJvY2Vzc0RhdGFDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCB7XG4gIG5nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBMQU5HOiBhbnk7XG4gIEBWaWV3Q2hpbGQoJ3RyZWVQcm9jZXNzRGF0YScpIHRyZWVQcm9jZXNzRGF0YTogU2VsZWN0UHJvY2Vzc0RhdGFUcmVlQ29tcG9uZW50O1xuICBAT3V0cHV0KCkgb25QYWdpbmdFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8UGFnZUV2ZW50PigpO1xuICBwb3B1cERhdGEgPSBuZXcgU2VsZWN0RGVwYXJ0bWVudFBvcHVwRGF0YSgpO1xuICByZXN1bHRTZWxlY3RlZDogUU1TVHJlZU5vZGVbXSA9IFtdO1xuXG4gIEBPdXRwdXQoKSBvblNlYXJjaEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKSBvbkNoZWNrTm9kZUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxRTVNGbGF0Tm9kZVRyZWU+KCk7XG4gIEBPdXRwdXQoKSBvbkV4cGFuZE5vZGVFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8UU1TRmxhdE5vZGVUcmVlPigpO1xuICBAT3V0cHV0KCkgb25Mb2FkTW9yZUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgb25DaGVja0l0ZW1TZWFyY2hFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8eyBzdGF0ZTogYm9vbGVhbiwgaXRlbTogRGVwYXJ0bWVudFNlYXJjaFJlc3VsdE1vZGVsIH0+KCk7XG4gIEBPdXRwdXQoKSBvbkNoZWNrQWxsSXRlbVNlYXJjaEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICBAT3V0cHV0KCkgdG9nZ2xlSW5jbHVkZUNoaWxkRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIHJlc3VsdFNlYXJjaDogUU1TRmxhdE5vZGVUcmVlW10gPSBbXTtcbiAgaXNBY3RpdmVWaWV3U2VhcmNoOiBib29sZWFuID0gZmFsc2U7XG4gIGdldCBpc0luY2x1ZGVDaGlsZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLnRyZWVQcm9jZXNzRGF0YSAmJiB0aGlzLnRyZWVQcm9jZXNzRGF0YS5pc0luY2x1ZGVDaGlsZHJlbjtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8U2VsZWN0UHJvY2Vzc0RhdGFDb21wb25lbnQ+LFxuICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwcml2YXRlIGRhdGE6IFNlbGVjdERlcGFydG1lbnRQb3B1cERhdGEsXG4gICAgcHVibGljIHRyYW5zOiBUcmFuc2xhdGVMaWJyYXJ5U2VydmljZVxuICApIHtcbiAgICB0aGlzLnRyYW5zLmdldExhbmd1YWdlU3ViamVjdCQucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSkuc3Vic2NyaWJlKChyZXMpID0+IHtcbiAgICAgIGlmIChyZXMpIHtcbiAgICAgICAgdGhpcy5MQU5HID0gdGhpcy50cmFucy5nZXRPYmplY3RMYW5nKHJlcyk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgLy8gSW5pdCBwb3B1cCBkYXRhXG4gICAgdGhpcy5wb3B1cERhdGEgPSBfLmNsb25lRGVlcCh0aGlzLmRhdGEpO1xuICB9XG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIG9uQ2xvc2VEaWFsb2coKTogdm9pZCB7XG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UodGhpcy50cmVlUHJvY2Vzc0RhdGEucmVzdWx0U2VsZWN0ZWQpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLm5nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMubmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICB9XG5cbiAgZ2V0IGN1cnJlbnRUcmVlRGF0YSgpOiBRTVNUcmVlTm9kZVtdIHtcbiAgICByZXR1cm4gdGhpcy50cmVlUHJvY2Vzc0RhdGEgPyB0aGlzLnRyZWVQcm9jZXNzRGF0YS5jdXJyZW50VHJlZURhdGEgOiBbXTtcbiAgfVxuXG4gIGRpc3BsYXlXaGVuU2VsZWN0RGVwYXJ0bWVudE9wdGlvbigkZXZlbnQ6IGFueSk6IHN0cmluZyB8IG51bGwge1xuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIG9uU2Nyb2xsVG9Ob2RlKG5vZGU6IFFNU1RyZWVOb2RlKSB7XG4gICAgLy8gdGhpcy50cmVlUHJvY2Vzc0RhdGEuc2Nyb2xsVG9Ob2RlKG5vZGUuaWQpO1xuICB9XG5cbiAgb25SZW1vdmVOb2RlKG5vZGU6IFFNU1RyZWVOb2RlKSB7XG4gICAgdGhpcy50cmVlUHJvY2Vzc0RhdGEub25SZW1vdmVOb2RlKG5vZGUuaWQpO1xuICB9XG5cbiAgLyoqXG4gKiBHZXRzIGEgbGlzdCBvZiB0aGUgZGF0YSBub2RlJ3Mgc3VidHJlZSBvZiBkZXNjZW5kZW50IGRhdGEgbm9kZXMuXG4gKi9cbiAgZ2V0Q2hpbGRyZW5Ob2RlKG5vZGU6IFFNU0ZsYXROb2RlVHJlZSkge1xuICAgIHJldHVybiB0aGlzLnRyZWVQcm9jZXNzRGF0YS5nZXRMaXN0Q2hpbGRyZW5PZk5vZGUobm9kZSk7XG4gIH1cblxuICBvblJlc3VsdERlcGFydG1lbnRDaGFuZ2UoZGF0YTogUU1TVHJlZU5vZGVbXSkge1xuICAgIHRoaXMucmVzdWx0U2VsZWN0ZWQgPSBkYXRhLm1hcChpdGVtID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLml0ZW0sXG4gICAgICAgIHRvb2x0aXA6IHRoaXMuZ2VuZXJhdGVUb290aXAoaXRlbSlcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGRlZmF1bHRGb3JtYXRUb29sdGlwTm9kZShub2RlOiBRTVNUcmVlTm9kZSkge1xuICAgIHJldHVybiBub2RlLmlzR3JvdXAgPyB0aGlzLmZvcm1hdFN0cmluZyh0aGlzLnBvcHVwRGF0YS5jb25maWcudG9vbHRpcEluY2x1ZGVMYWJlbCA/IHRoaXMucG9wdXBEYXRhLmNvbmZpZy50b29sdGlwSW5jbHVkZUxhYmVsIDogdGhpcy5MQU5HLlRPT0xUSVBfSU5DTFVERV9TVUJfREVQQVJUTUVOVCwgbm9kZS5uYW1lLCBub2RlLmNoaWxkcmVuLmxlbmd0aC50b1N0cmluZygpKSA6IG5vZGUubmFtZTtcbiAgfVxuXG4gIGdlbmVyYXRlVG9vdGlwKG5vZGU6IFFNU1RyZWVOb2RlKSB7XG4gICAgcmV0dXJuICEhdGhpcy5wb3B1cERhdGEuZm9ybWF0VG9vbHRpcEl0ZW1SZXN1bHQgPyB0aGlzLnBvcHVwRGF0YS5mb3JtYXRUb29sdGlwSXRlbVJlc3VsdChub2RlKSA6IHRoaXMuZGVmYXVsdEZvcm1hdFRvb2x0aXBOb2RlKG5vZGUpXG4gIH1cblxuICB1cGRhdGVSZXN1bHRTZWFyY2goZGF0YTogUU1TRGVwYXJ0bWVudFBhZ2luZ01vZGVsPFFNU0ZsYXROb2RlVHJlZT4pIHtcbiAgICBpZiAoIXRoaXMudHJlZVByb2Nlc3NEYXRhKVxuICAgICAgcmV0dXJuO1xuICAgIHRoaXMudHJlZVByb2Nlc3NEYXRhLnNldFJlc3VsdFNlYXJjaChkYXRhKTtcbiAgfVxuXG4gIHByaXZhdGUgZm9ybWF0U3RyaW5nKC4uLnJlcGxhY2VtZW50czogc3RyaW5nW10pOiBzdHJpbmcge1xuICAgIGxldCByZXN1bHQgPSBhcmd1bWVudHNbMF07XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgICBjb25zdCByZWcgPSBuZXcgUmVnRXhwKGBcXFxceyR7aX1cXFxcfWAsICdnbScpO1xuICAgICAgcmVzdWx0ID0gcmVzdWx0LnJlcGxhY2UocmVnLCBhcmd1bWVudHNbaSArIDFdKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuICAvKipcbiAgICAgICAqIFRoaXMgZnVuY3Rpb24gdXNlIGZvciBsYXp5IGxvYWQgY2hpbGRyZW4gb2Ygbm9kZVxuICAgICAgICogQHBhcmFtIG5vZGUgbm9kZSB1cGRhdGVcbiAgICAgICAqIEBwYXJhbSBkYXRhIGxpc3QgY2hpbGRyZW4gdG8gdXBkYXRlIG5vZGUuXG4gICAgICAgKiBAcGFyYW0gbW9kZSBkZWZhdWx0IGlzIHVwZGF0ZSB0aGF0IHJlcGxhY2UgY3VycmVudCBsaXN0IGNoaWxkcmVuIGJ5IG5ldyBsaXN0IGNoaWxkcmVuICwgaWYgbW9kZSA9ICdpbnNlcnQnIHdpbGwgaW5zZXJ0IG5ldyB2YWx1ZSB0byBsaXN0IGNoaWxkcmVuIGV4aXN0ZWQgYmVmb3JlLlxuICAqL1xuICB1cGRhdGVDaGlsZE9mTm9kZShub2RlOiBRTVNGbGF0Tm9kZVRyZWUsIGRhdGE6IFFNU0ZsYXROb2RlVHJlZVtdLCBtb2RlOiAnaW5zZXJ0JyB8ICd1cGRhdGUnID0gJ3VwZGF0ZScpIHtcbiAgICB0aGlzLnRyZWVQcm9jZXNzRGF0YS51cGRhdGVDaGlsZE9mTm9kZShub2RlLCBkYXRhLCBtb2RlKTtcbiAgfVxuXG4gIGFkZFJvb3RUcmVlKGRhdGE6IFFNU0ZsYXROb2RlVHJlZVtdID0gW10pIHtcbiAgICB0aGlzLnRyZWVQcm9jZXNzRGF0YS5hZGRSb290VHJlZShkYXRhKTtcbiAgfVxuXG4gIC8qKlxuICogVGhpcyBmdW5jdGlvbiBoYW5kbGUgY2hlY2sgbm9kZSBvZiB0cmVlXG4gKiBAcGFyYW0gbm9kZSBub2RlIG9mIHRyZWVcbiAqIEBwYXJhbSBjYWxsYmFjayBkbyBzb21ldGhpbmcgYmVmb3JlIGhhbmRsZSBjaGVjayBub2RlXG4gKiBAcmV0dXJuc1xuICovXG4gIG9uQmVmb3JlQ2hlY2tOb2RlKG5vZGU6IFFNU0ZsYXROb2RlVHJlZSwgY2FsbGJhY2s/OiAobm9kZTogUU1TRmxhdE5vZGVUcmVlKSA9PiB2b2lkIHwgUHJvbWlzZTx2b2lkPikge1xuICAgIHJldHVybiB0aGlzLnRyZWVQcm9jZXNzRGF0YS5vbkJlZm9yZUNoZWNrTm9kZShub2RlLCBjYWxsYmFjayk7XG4gIH1cblxuICBoYW5kbGVDaGVja05vZGUobm9kZTogUU1TRmxhdE5vZGVUcmVlKSB7XG4gICAgaWYgKCF0aGlzLnRyZWVQcm9jZXNzRGF0YSlcbiAgICAgIHJldHVybjtcbiAgICB0aGlzLnRyZWVQcm9jZXNzRGF0YS5oYW5kbGVDaGVja05vZGUobm9kZSlcbiAgfVxuXG4gIC8qKlxuICogVGhpcyBtZXRob2QgdXNlIGZvciBsYXp5IG1vZGUsIGRvIHNvbWUgdGhpbmcgYmVmb3JlIGluaXQgbGlzdCBub2RlIHNlbGVjdGVkXG4gKiBAcGFyYW0gY2FsbGJhY2tcbiAqIEByZXR1cm5zXG4gKi9cbiAgYXN5bmMgb25CZWZvcmVJbml0Tm9kZVNlbGVjdGVkKGNhbGxiYWNrPzogKCkgPT4gdm9pZCB8IFByb21pc2U8dm9pZD4pIHtcbiAgICBpZiAoIXRoaXMudHJlZVByb2Nlc3NEYXRhKVxuICAgICAgcmV0dXJuO1xuICAgIGlmICghIWNhbGxiYWNrKVxuICAgICAgYXdhaXQgdGhpcy50cmVlUHJvY2Vzc0RhdGEub25CZWZvcmVJbml0Tm9kZVNlbGVjdGVkKGNhbGxiYWNrKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgbm9kZSBieSBpZCBvZiBub2RlXG4gICAqIEBwYXJhbSBub2RlSWQgaWQgb2Ygbm9kZVxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgZmluZE5vZGUobm9kZUlkOiBzdHJpbmcpOiBRTVNGbGF0Tm9kZVRyZWUge1xuICAgIGlmICghdGhpcy50cmVlUHJvY2Vzc0RhdGEpXG4gICAgICByZXR1cm47XG4gICAgcmV0dXJuIHRoaXMudHJlZVByb2Nlc3NEYXRhLnRyZWVDb250cm9sLmRhdGFOb2Rlcy5maW5kKG5vZGUgPT4gbm9kZS5pZCA9PT0gbm9kZUlkLnRvU3RyaW5nKCkpO1xuICB9XG5cbiAgLyoqXG4gKiBUaGlzIG1ldGhvZCB1c2UgZm9yIGxhenkgbW9kZSwgZG8gc29tZSB0aGluZyBiZWZvcmUgc2VsZWN0IGFsbCByZXN1bHQgc2VhcmNoXG4gKiBAcGFyYW0gY2FsbGJhY2tcbiAqIEByZXR1cm5zXG4gKi9cbiAgYXN5bmMgb25CZWZvcmVDaGVja0FsbFNlYXJjaChjYWxsYmFjaz86IChkYXRhKSA9PiB2b2lkIHwgUHJvbWlzZTx2b2lkPikge1xuICAgIGlmICghdGhpcy50cmVlUHJvY2Vzc0RhdGEpXG4gICAgICByZXR1cm47XG4gICAgYXdhaXQgdGhpcy50cmVlUHJvY2Vzc0RhdGEub25CZWZvcmVDaGVja0FsbFNlYXJjaChjYWxsYmFjayk7XG4gIH1cblxuICAvKipcbiogVGhpcyBtZXRob2QgdXNlIGZvciBsYXp5IG1vZGUsIGRvIHNvbWUgdGhpbmcgYmVmb3JlIGNoZWNrIGl0ZW0gcmVzdWx0XG4qIEBwYXJhbSBjYWxsYmFja1xuKiBAcmV0dXJuc1xuKi9cbiAgb25CZWZvcmVDaGVja0l0ZW1TZWFyY2goaXRlbTogRGVwYXJ0bWVudFNlYXJjaFJlc3VsdE1vZGVsLCBjYWxsYmFjaz86IChpdGVtOiBEZXBhcnRtZW50U2VhcmNoUmVzdWx0TW9kZWwpID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+KSB7XG4gICAgcmV0dXJuIHRoaXMudHJlZVByb2Nlc3NEYXRhLm9uQmVmb3JlQ2hlY2tJdGVtU2VhcmNoKGl0ZW0sIGNhbGxiYWNrKTtcbiAgfVxuXG4gIHNldExvYWRpbmdTdGF0ZU5vZGUoaXNMb2FkaW5nLCBub2RlSWQ6IHN0cmluZykge1xuICAgICEhdGhpcy50cmVlUHJvY2Vzc0RhdGEgJiYgdGhpcy50cmVlUHJvY2Vzc0RhdGEuc2V0TG9hZGluZ1N0YXRlTm9kZShpc0xvYWRpbmcsIG5vZGVJZCk7XG4gIH1cbiAgLyoqXG4gICAqIFNlbGVjdCBhIHZhbHVlIG9yIGFuIGFycmF5IG9mIHZhbHVlcy5cbiAgICovXG4gIG9uU2VsZWN0Tm9kZSguLi5ub2RlSWRzOiBzdHJpbmdbXSkge1xuICAgIHRoaXMudHJlZVByb2Nlc3NEYXRhLm9uU2VsZWN0Tm9kZSguLi5ub2RlSWRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXNlbGVjdHMgYSB2YWx1ZSBvciBhbiBhcnJheSBvZiB2YWx1ZXMuXG4gICAqL1xuICBvbkRlc2VsZWN0Tm9kZSguLi5ub2RlSWRzOiBzdHJpbmdbXSkge1xuICAgIHRoaXMudHJlZVByb2Nlc3NEYXRhLm9uRGVzZWxlY3ROb2RlKC4uLm5vZGVJZHMpO1xuICB9XG5cbiAgLyoqXG4gICogVG9nZ2xlcyBhIHZhbHVlIGJldHdlZW4gc2VsZWN0ZWQgYW5kIGRlc2VsZWN0ZWQuXG4gICovXG4gIG9uVG9nZ2xlTm9kZShub2RlSWQ6IHN0cmluZykge1xuICAgIHRoaXMudHJlZVByb2Nlc3NEYXRhLm9uVG9nZ2xlTm9kZShub2RlSWQpO1xuICB9XG5cbiAgZ2V0Tm9kZUJ5SWQobm9kZUlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy50cmVlUHJvY2Vzc0RhdGEuZ2V0Tm9kZUJ5SWQobm9kZUlkKTtcbiAgfVxuXG4gIGlzTm9kZUxvYWRpbmcobm9kZUlkOiBzdHJpbmcpIHtcbiAgICBpZiAoIXRoaXMudHJlZVByb2Nlc3NEYXRhKVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLnRyZWVQcm9jZXNzRGF0YS5nZXROb2RlQnlJZChub2RlSWQpO1xuICAgIHJldHVybiAhIW5vZGUgJiYgbm9kZS5pc0xvYWRpbmc7XG4gIH1cblxuICBzZXRMb2FkaW5nTW9yZShzdGF0ZTogYm9vbGVhbikge1xuICAgIGlmICghdGhpcy50cmVlUHJvY2Vzc0RhdGEpXG4gICAgICByZXR1cm47XG4gICAgdGhpcy50cmVlUHJvY2Vzc0RhdGEuZ2V0TG9hZGluZ01vcmUkLm5leHQoc3RhdGUpO1xuICB9XG5cbiAgc2V0TG9hZGluZyhzdGF0ZTogYm9vbGVhbikge1xuICAgIGlmICghdGhpcy50cmVlUHJvY2Vzc0RhdGEpXG4gICAgICByZXR1cm47XG4gICAgdGhpcy50cmVlUHJvY2Vzc0RhdGEuZ2V0TG9hZGluZyQubmV4dChzdGF0ZSk7XG4gIH1cbiAgc2V0TG9hZGluZ05vZGUobm9kZUlkOiBzdHJpbmcsIHN0YXRlOiBib29sZWFuKSB7XG4gICAgaWYgKCF0aGlzLnRyZWVQcm9jZXNzRGF0YSlcbiAgICAgIHJldHVybjtcbiAgICBjb25zdCBub2RlID0gdGhpcy50cmVlUHJvY2Vzc0RhdGEuZ2V0Tm9kZUJ5SWQobm9kZUlkKTtcbiAgICBpZiAoISFub2RlKVxuICAgICAgbm9kZS5pc0xvYWRpbmcgPSBzdGF0ZTtcbiAgfVxuXG4gIHVwZGF0ZVRyZWVEYXRhKGRhdGE6IFFNU1RyZWVOb2RlW10gPSB0aGlzLmN1cnJlbnRUcmVlRGF0YSkge1xuICAgICEhdGhpcy50cmVlUHJvY2Vzc0RhdGEgJiYgdGhpcy50cmVlUHJvY2Vzc0RhdGEudXBkYXRlRGF0YVRyZWUoZGF0YSk7XG4gIH1cblxuICBvbkRlc3Ryb3lMb2FkTW9yZSgpIHtcbiAgICB0aGlzLnRyZWVQcm9jZXNzRGF0YS5vbkRlc3Ryb3lMb2FkTW9yZSgpO1xuICB9XG5cbiAgc2V0U2VsZWN0ZWRMaXN0RGF0YShkYXRhOiBhbnkpIHtcbiAgICB0aGlzLnBvcHVwRGF0YS5jb25maWcuc2VsZWN0ZWRMaXN0ID0gZGF0YTtcbiAgfVxuXG4gIGdldENoZWNrZWRTdGF0dXNOb2RlKG5vZGU6IFFNU0ZsYXROb2RlVHJlZSkge1xuICAgIHJldHVybiB0aGlzLnRyZWVQcm9jZXNzRGF0YS5nZXRDaGVja2VkU3RhdHVzTm9kZShub2RlKTtcbiAgfVxuXG4gIHVwZGF0ZU5vZGVJbmZvcm1hdGlvbihub2RlOiBRTVNGbGF0Tm9kZVRyZWUpIHtcbiAgICByZXR1cm4gdGhpcy50cmVlUHJvY2Vzc0RhdGEudXBkYXRlTm9kZUluZm9ybWF0aW9uKG5vZGUpO1xuICB9XG5cbiAgdXBkYXRlU2VsZWN0ZWRSZXN1bHREYXRhKG5vZGU6IFFNU0ZsYXROb2RlVHJlZSkge1xuICAgIHJldHVybiB0aGlzLnRyZWVQcm9jZXNzRGF0YS51cGRhdGVTZWxlY3RlZFJlc3VsdERhdGEobm9kZSk7XG4gIH1cblxuICBnZXRBbGxQYXJlbnROb2RlKG5vZGU6IFFNU0ZsYXROb2RlVHJlZSkge1xuICAgIHJldHVybiB0aGlzLnRyZWVQcm9jZXNzRGF0YS5nZXRBbGxQYXJlbnROb2RlKG5vZGUpO1xuICB9XG5cbiAgb25DaGVja05vZGUobm9kZTogUU1TRmxhdE5vZGVUcmVlLCBmaXJlRXZlbnRDaGVja05vZGU6IGJvb2xlYW4gPSB0cnVlKSB7XG4gICAgcmV0dXJuIHRoaXMudHJlZVByb2Nlc3NEYXRhLm9uQ2hlY2tOb2RlKG5vZGUsIGZpcmVFdmVudENoZWNrTm9kZSk7XG4gIH1cblxuICBnZXRDaGlsZHJlblNlbGVjdGVkKG5vZGU6IFFNU0ZsYXROb2RlVHJlZSk6IFFNU0ZsYXROb2RlVHJlZVtdIHtcbiAgICByZXR1cm4gdGhpcy50cmVlUHJvY2Vzc0RhdGEuZ2V0Q2hpbGRyZW5TZWxlY3RlZChub2RlKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInFtcy1zZWxlY3QtZGVwYXJ0bWVudFwiPlxuICA8ZGl2IGNsYXNzPVwiaGVhZGVyLWRpYWxvZyBtYi0yXCI+XG4gICAgPHNwYW4+e3twb3B1cERhdGEuaGVhZGVyTmFtZX19PC9zcGFuPlxuICAgIDxidXR0b24gbWF0RGlhbG9nQ2xvc2UgY2xhc3M9XCJidG4tY2xvc2UtZGlhbG9nXCIgY29sb3I9XCJsaWdodFwiIHFtcy1idG4taWNvbj5cbiAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuICA8ZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJxbXMtc2Nyb2xsYmFyXCI+XG4gICAgICA8ZGl2PlxuICAgICAgICA8cW1zLXNlbGVjdC1wcm9jZXNzLWRhdGEtdHJlZSAjdHJlZVByb2Nlc3NEYXRhIGN1c3RvbUNsYXNzPVwiY3VzdG9tLWRlcGFydG1lbnQtdHJlZVwiXG4gICAgICAgICAgW2hlaWdodF09XCJwb3B1cERhdGEuY29uZmlnLmlzTW9iaWxlID8gJzM4dmgnIDogJzUwdmgnXCIgW3Jvd3NTa2VsZXRvbl09XCI5XCIgW2NvbmZpZ109XCJwb3B1cERhdGEuY29uZmlnXCJcbiAgICAgICAgICAob25TZWFyY2hFdmVudCk9XCJvblNlYXJjaEV2ZW50LmVtaXQoJGV2ZW50KVwiIChvblZhbHVlQ2hhbmdlRXZlbnQpPVwib25SZXN1bHREZXBhcnRtZW50Q2hhbmdlKCRldmVudClcIlxuICAgICAgICAgIChvblBhZ2luZ1NlYXJjaEV2ZW50KT1cIm9uUGFnaW5nRXZlbnQuZW1pdCgkZXZlbnQpXCIgKG9uQ2hlY2tOb2RlRXZlbnQpPVwib25DaGVja05vZGVFdmVudC5lbWl0KCRldmVudClcIlxuICAgICAgICAgIChvbkV4cGFuZE5vZGVFdmVudCk9XCJvbkV4cGFuZE5vZGVFdmVudC5lbWl0KCRldmVudClcIiAob25Mb2FkTW9yZUV2ZW50KT1cIm9uTG9hZE1vcmVFdmVudC5lbWl0KClcIlxuICAgICAgICAgIChvbkNoZWNrQWxsSXRlbVNlYXJjaEV2ZW50KT1cIm9uQ2hlY2tBbGxJdGVtU2VhcmNoRXZlbnQuZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgICAob25DaGVja0l0ZW1TZWFyY2hFdmVudCk9XCJvbkNoZWNrSXRlbVNlYXJjaEV2ZW50LmVtaXQoJGV2ZW50KVwiXG4gICAgICAgICAgKHRvZ2dsZUluY2x1ZGVDaGlsZEV2ZW50KT1cInRvZ2dsZUluY2x1ZGVDaGlsZEV2ZW50LmVtaXQoJGV2ZW50KVwiPlxuICAgICAgICA8L3Ftcy1zZWxlY3QtcHJvY2Vzcy1kYXRhLXRyZWU+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibGluZV9fZGl2aWRlclwiPjwvZGl2PlxuICAgIDxkaXYgW0BoZWlnaHRBbmltYXRpb25dICpuZ0lmPVwidHJlZVByb2Nlc3NEYXRhICYmICEhdHJlZVByb2Nlc3NEYXRhLnJlc3VsdFNlbGVjdGVkLmxlbmd0aFwiIGNsYXNzPVwiIHByLTAgcGUtMFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImhlYWRlci10aXRsZVwiPnt7TEFORy5SRVNVTFRTfX08L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyZXN1bHQtY29udGVudCBwci0wIHBlLTBcIj5cbiAgICAgICAgPG1hdC1jaGlwLXNldCBjbGFzcz1cInBhbmVsX19pdGVtIHFtcy1zY3JvbGxiYXJcIj5cbiAgICAgICAgICA8ZGl2IFtAaW5PdXRBbmltYXRpb25fMl0gW2lkXT1cIidpdGVtLXJlc3VsdC0nK2l0ZW0uaWRcIiAqbmdGb3I9XCJsZXQgaXRlbSBvZiB0cmVlUHJvY2Vzc0RhdGEucmVzdWx0U2VsZWN0ZWRcIj5cbiAgICAgICAgICAgIDxtYXQtY2hpcCBbQHVwZGF0ZUl0ZW1BbmltYXRpb25dICpxbXNDb250ZW50Q2hhbmdlcz1cIml0ZW0uY2hpbGRyZW4/Lmxlbmd0aFwiXG4gICAgICAgICAgICAgIFtxbXMtdG9vbC10aXBdPVwiZ2VuZXJhdGVUb290aXAoaXRlbSlcIiBwb3NpdGlvbj1cInRvcFwiIG1vZGU9XCJkYXJrXCIgcW1zLWNoaXAgW3JlbW92YWJsZV09XCJ0cnVlXCI+XG4gICAgICAgICAgICAgIDxzcGFuIChjbGljayk9XCJvblNjcm9sbFRvTm9kZShpdGVtKVwiIHFtcy1jaGlwLWJvZHk+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyZWxhdGVkX19pdGVtX19jb250ZW50X25hbWVcIiAjaXRlbU5hbWU+XG4gICAgICAgICAgICAgICAgICA8c3Bhbj57e2l0ZW0ubmFtZX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZWxlY3RfX2luY2x1ZGUtY2hpbGRyZW5fX2NvdW50XCIgKm5nSWY9XCIhIWl0ZW0/LmlzR3JvdXAgJiYgIXBvcHVwRGF0YS5jb25maWcubGF6eVwiPlxuICAgICAgICAgICAgICAgICAgICB7e2l0ZW0uY2hpbGRyZW4ubGVuZ3RofX0ve3tpdGVtLmNoaWxkQ291bnR9fVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZWxlY3RfX2luY2x1ZGUtY2hpbGRyZW5fX2NvdW50XCIgKm5nSWY9XCIhIWl0ZW0/LmlzR3JvdXAgJiYgcG9wdXBEYXRhLmNvbmZpZy5sYXp5XCI+XG4gICAgICAgICAgICAgICAgICAgIHt7aXRlbS5zZWxlY3RlZENoaWxkQ291bnR9fS97e2l0ZW0uY2hpbGRDb3VudH19XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwib25SZW1vdmVOb2RlKGl0ZW0pXCIgbWF0Q2hpcFJlbW92ZSAqbmdJZj1cIiFpc05vZGVMb2FkaW5nKGl0ZW0uaWQpOyBlbHNlIGxvYWRpbmdTcGlubmVyXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uPmNhbmNlbDwvbWF0LWljb24+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuXG5cbiAgICAgICAgICAgIDwvbWF0LWNoaXA+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbWF0LWNoaXAtc2V0PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPG1hdC1kaXZpZGVyICpuZ0lmPVwidHJlZVByb2Nlc3NEYXRhICYmICEhdHJlZVByb2Nlc3NEYXRhLnJlc3VsdFNlbGVjdGVkLmxlbmd0aFwiIGNsYXNzPVwibXgtYXV0b1wiPjwvbWF0LWRpdmlkZXI+XG4gICAgPGRpdiBjbGFzcz1cImNvbmZpcm1fX2J1dHRvbl9fZ3JvdXBzXCI+XG4gICAgICA8YnV0dG9uIChjbGljayk9XCJvbkNsb3NlRGlhbG9nKClcIiBjbGFzcz1cImJ0bi1hZGRcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiIXJlc3VsdFNlbGVjdGVkLmxlbmd0aCAmJiAhcG9wdXBEYXRhLmNvbmZpZy5jYW5BZGROdWxsUmVzdWx0XCJcbiAgICAgICAgW2NsYXNzLnFtcy1idG4tZGlzYWJsZWRdPVwiIXJlc3VsdFNlbGVjdGVkLmxlbmd0aCAmJiAhcG9wdXBEYXRhLmNvbmZpZy5jYW5BZGROdWxsUmVzdWx0XCIgcW1zLWJ0bj5cbiAgICAgICAgPHNwYW4+e3tMQU5HLkFERH19PC9zcGFuPlxuICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAoe3t0cmVlUHJvY2Vzc0RhdGEucmVzdWx0U2VsZWN0ZWQubGVuZ3RofX0pXG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiBxbXMtYnRuLXRleHQgbWF0LWRpYWxvZy1jbG9zZT5cbiAgICAgICAgQ2FuY2VsXG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPCEtLSBMb2FkaW5nIHNwaW5uZXIgLS0+XG48bmctdGVtcGxhdGUgI2xvYWRpbmdTcGlubmVyPlxuICA8ZGl2IGNsYXNzPVwicW1zLXNwaW5uZXItd3JhcHBlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJxbXMtc3Bpbm5lciBjZW50ZXJcIj5cbiAgICAgIDxtYXQtc3Bpbm5lciBbZGlhbWV0ZXJdPVwiMjBcIiBbc3Ryb2tlV2lkdGhdPVwiMlwiPjwvbWF0LXNwaW5uZXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT4iXX0=
|
293
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LXByb2Nlc3MtZGF0YS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9xbXMtYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvc2VsZWN0LXByb2Nlc3MtZGF0YS9zZWxlY3QtcHJvY2Vzcy1kYXRhLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Ftcy1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9zZWxlY3QtcHJvY2Vzcy1kYXRhL3NlbGVjdC1wcm9jZXNzLWRhdGEuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFvQyxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBcUIsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4SSxPQUFPLEVBQTZCLDRCQUE0QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDckcsT0FBTyxFQUFnQixlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUV6RSxPQUFPLEtBQUssQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUM1QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUszQyxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN6RixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7OztBQWlCakUsTUFBTSxPQUFPLDBCQUEwQjtJQWlCckMsSUFBSSxjQUFjO1FBQ2hCLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxpQkFBaUIsQ0FBQztJQUMxRSxDQUFDO0lBRUQsWUFDVSxLQUF3QixFQUN4QixTQUFtRCxFQUMxQixJQUErQixFQUN6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Z0NBQ1IsV0FBVyxFQUFFLE1BQU07NkJBQ1M7eUJBQy9CO3FCQUNGLGNBQ1csQ0FBQyxnQ0FBZ0MsQ0FBQzs7MEJBMEIzQyxNQUFNOzJCQUFDLGVBQWU7K0VBckJLLGVBQWU7c0JBQTVDLFNBQVM7dUJBQUMsaUJBQWlCO2dCQUNsQixhQUFhO3NCQUF0QixNQUFNO2dCQUlHLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csZ0JBQWdCO3NCQUF6QixNQUFNO2dCQUNHLGlCQUFpQjtzQkFBMUIsTUFBTTtnQkFDRyxlQUFlO3NCQUF4QixNQUFNO2dCQUNHLHNCQUFzQjtzQkFBL0IsTUFBTTtnQkFDRyx5QkFBeUI7c0JBQWxDLE1BQU07Z0JBQ0csdUJBQXVCO3NCQUFoQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbmplY3QsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0Q2hlY2tib3hEZWZhdWx0T3B0aW9ucywgTUFUX0NIRUNLQk9YX0RFRkFVTFRfT1BUSU9OUyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoZWNrYm94JztcbmltcG9ydCB7IE1hdERpYWxvZ1JlZiwgTUFUX0RJQUxPR19EQVRBIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IFBhZ2VFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBRTVNGbGF0Tm9kZVRyZWUgfSBmcm9tICcuLi8uLi9jb21tb24vbW9kZWxzL3Ftcy1mbGF0LW5vZGUubW9kZWwnO1xuaW1wb3J0IHsgUU1TVHJlZU5vZGUgfSBmcm9tICcuLi8uLi9jb21tb24vbW9kZWxzL3Ftcy10cmVlLW5vZGUubW9kZWwnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTGlicmFyeVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cmFuc2xhdGlvbi1yZWdpc3RyeS5zZXJ2aWNlJztcbmltcG9ydCB7IERlcGFydG1lbnRTZWFyY2hSZXN1bHRNb2RlbCwgUU1TRGVwYXJ0bWVudFBhZ2luZ01vZGVsIH0gZnJvbSAnLi4vc2VsZWN0LWRlcGFydG1lbnQtdHJlZSc7XG5pbXBvcnQgeyBTZWxlY3REZXBhcnRtZW50QW5pbWF0aW9uVHJpZ2dlciB9IGZyb20gJy4uL3NlbGVjdC1kZXBhcnRtZW50L2NvbW1vbi9hbmltYXRpb24nO1xuaW1wb3J0IHsgU2VsZWN0RGVwYXJ0bWVudFBvcHVwRGF0YSB9IGZyb20gJy4uL3NlbGVjdC1kZXBhcnRtZW50JztcbmltcG9ydCB7IFNlbGVjdFByb2Nlc3NEYXRhVHJlZUNvbXBvbmVudCB9IGZyb20gJy4uL3NlbGVjdC1wcm9jZXNzLWRhdGEtdHJlZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3Ftcy1zZWxlY3QtcHJvY2Vzcy1kYXRhJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NlbGVjdC1wcm9jZXNzLWRhdGEuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zZWxlY3QtcHJvY2Vzcy1kYXRhLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE1BVF9DSEVDS0JPWF9ERUZBVUxUX09QVElPTlMsXG4gICAgICB1c2VWYWx1ZToge1xuICAgICAgICBjbGlja0FjdGlvbjogJ25vb3AnXG4gICAgICB9IGFzIE1hdENoZWNrYm94RGVmYXVsdE9wdGlvbnNcbiAgICB9XG4gIF0sXG4gIGFuaW1hdGlvbnM6IFtTZWxlY3REZXBhcnRtZW50QW5pbWF0aW9uVHJpZ2dlcl1cbn0pXG5leHBvcnQgY2xhc3MgU2VsZWN0UHJvY2Vzc0RhdGFDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCB7XG4gIG5nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBMQU5HOiBhbnk7XG4gIEBWaWV3Q2hpbGQoJ3RyZWVQcm9jZXNzRGF0YScpIHRyZWVQcm9jZXNzRGF0YTogU2VsZWN0UHJvY2Vzc0RhdGFUcmVlQ29tcG9uZW50O1xuICBAT3V0cHV0KCkgb25QYWdpbmdFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8UGFnZUV2ZW50PigpO1xuICBwb3B1cERhdGEgPSBuZXcgU2VsZWN0RGVwYXJ0bWVudFBvcHVwRGF0YSgpO1xuICByZXN1bHRTZWxlY3RlZDogUU1TVHJlZU5vZGVbXSA9IFtdO1xuXG4gIEBPdXRwdXQoKSBvblNlYXJjaEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKSBvbkNoZWNrTm9kZUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxRTVNGbGF0Tm9kZVRyZWU+KCk7XG4gIEBPdXRwdXQoKSBvbkV4cGFuZE5vZGVFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8UU1TRmxhdE5vZGVUcmVlPigpO1xuICBAT3V0cHV0KCkgb25Mb2FkTW9yZUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgb25DaGVja0l0ZW1TZWFyY2hFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8eyBzdGF0ZTogYm9vbGVhbiwgaXRlbTogRGVwYXJ0bWVudFNlYXJjaFJlc3VsdE1vZGVsIH0+KCk7XG4gIEBPdXRwdXQoKSBvbkNoZWNrQWxsSXRlbVNlYXJjaEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICBAT3V0cHV0KCkgdG9nZ2xlSW5jbHVkZUNoaWxkRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIHJlc3VsdFNlYXJjaDogUU1TRmxhdE5vZGVUcmVlW10gPSBbXTtcbiAgaXNBY3RpdmVWaWV3U2VhcmNoOiBib29sZWFuID0gZmFsc2U7XG4gIGdldCBpc0luY2x1ZGVDaGlsZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLnRyZWVQcm9jZXNzRGF0YSAmJiB0aGlzLnRyZWVQcm9jZXNzRGF0YS5pc0luY2x1ZGVDaGlsZHJlbjtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8U2VsZWN0UHJvY2Vzc0RhdGFDb21wb25lbnQ+LFxuICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwcml2YXRlIGRhdGE6IFNlbGVjdERlcGFydG1lbnRQb3B1cERhdGEsXG4gICAgcHVibGljIHRyYW5zOiBUcmFuc2xhdGVMaWJyYXJ5U2VydmljZVxuICApIHtcbiAgICB0aGlzLnRyYW5zLmdldExhbmd1YWdlU3ViamVjdCQucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSkuc3Vic2NyaWJlKChyZXMpID0+IHtcbiAgICAgIGlmIChyZXMpIHtcbiAgICAgICAgdGhpcy5MQU5HID0gdGhpcy50cmFucy5nZXRPYmplY3RMYW5nKHJlcyk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgLy8gSW5pdCBwb3B1cCBkYXRhXG4gICAgdGhpcy5wb3B1cERhdGEgPSBfLmNsb25lRGVlcCh0aGlzLmRhdGEpO1xuICB9XG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIG9uQ2xvc2VEaWFsb2coKTogdm9pZCB7XG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UodGhpcy50cmVlUHJvY2Vzc0RhdGEucmVzdWx0U2VsZWN0ZWQpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLm5nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMubmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICB9XG5cbiAgZ2V0IGN1cnJlbnRUcmVlRGF0YSgpOiBRTVNUcmVlTm9kZVtdIHtcbiAgICByZXR1cm4gdGhpcy50cmVlUHJvY2Vzc0RhdGEgPyB0aGlzLnRyZWVQcm9jZXNzRGF0YS5jdXJyZW50VHJlZURhdGEgOiBbXTtcbiAgfVxuXG4gIGRpc3BsYXlXaGVuU2VsZWN0RGVwYXJ0bWVudE9wdGlvbigkZXZlbnQ6IGFueSk6IHN0cmluZyB8IG51bGwge1xuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIG9uU2Nyb2xsVG9Ob2RlKG5vZGU6IFFNU1RyZWVOb2RlKSB7XG4gICAgLy8gdGhpcy50cmVlUHJvY2Vzc0RhdGEuc2Nyb2xsVG9Ob2RlKG5vZGUuaWQpO1xuICB9XG5cbiAgb25SZW1vdmVOb2RlKG5vZGU6IFFNU1RyZWVOb2RlKSB7XG4gICAgdGhpcy50cmVlUHJvY2Vzc0RhdGEub25SZW1vdmVOb2RlKG5vZGUuaWQpO1xuICB9XG5cbiAgLyoqXG4gKiBHZXRzIGEgbGlzdCBvZiB0aGUgZGF0YSBub2RlJ3Mgc3VidHJlZSBvZiBkZXNjZW5kZW50IGRhdGEgbm9kZXMuXG4gKi9cbiAgZ2V0Q2hpbGRyZW5Ob2RlKG5vZGU6IFFNU0ZsYXROb2RlVHJlZSkge1xuICAgIHJldHVybiB0aGlzLnRyZWVQcm9jZXNzRGF0YS5nZXRMaXN0Q2hpbGRyZW5PZk5vZGUobm9kZSk7XG4gIH1cblxuICBvblJlc3VsdERlcGFydG1lbnRDaGFuZ2UoZGF0YTogUU1TVHJlZU5vZGVbXSkge1xuICAgIHRoaXMucmVzdWx0U2VsZWN0ZWQgPSBkYXRhLm1hcChpdGVtID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLml0ZW0sXG4gICAgICAgIHRvb2x0aXA6IHRoaXMuZ2VuZXJhdGVUb290aXAoaXRlbSlcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGRlZmF1bHRGb3JtYXRUb29sdGlwTm9kZShub2RlOiBRTVNUcmVlTm9kZSkge1xuICAgIHJldHVybiBub2RlLmlzR3JvdXAgPyB0aGlzLmZvcm1hdFN0cmluZyh0aGlzLnBvcHVwRGF0YS5jb25maWcudG9vbHRpcEluY2x1ZGVMYWJlbCA/IHRoaXMucG9wdXBEYXRhLmNvbmZpZy50b29sdGlwSW5jbHVkZUxhYmVsIDogdGhpcy5MQU5HLlRPT0xUSVBfSU5DTFVERV9TVUJfREVQQVJUTUVOVCwgbm9kZS5uYW1lLCBub2RlLmNoaWxkcmVuLmxlbmd0aC50b1N0cmluZygpKSA6IG5vZGUubmFtZTtcbiAgfVxuXG4gIGdlbmVyYXRlVG9vdGlwKG5vZGU6IFFNU1RyZWVOb2RlKSB7XG4gICAgcmV0dXJuICEhdGhpcy5wb3B1cERhdGEuZm9ybWF0VG9vbHRpcEl0ZW1SZXN1bHQgPyB0aGlzLnBvcHVwRGF0YS5mb3JtYXRUb29sdGlwSXRlbVJlc3VsdChub2RlKSA6IHRoaXMuZGVmYXVsdEZvcm1hdFRvb2x0aXBOb2RlKG5vZGUpXG4gIH1cblxuICB1cGRhdGVSZXN1bHRTZWFyY2goZGF0YTogUU1TRGVwYXJ0bWVudFBhZ2luZ01vZGVsPFFNU0ZsYXROb2RlVHJlZT4pIHtcbiAgICBpZiAoIXRoaXMudHJlZVByb2Nlc3NEYXRhKVxuICAgICAgcmV0dXJuO1xuICAgIHRoaXMudHJlZVByb2Nlc3NEYXRhLnNldFJlc3VsdFNlYXJjaChkYXRhKTtcbiAgfVxuXG4gIHByaXZhdGUgZm9ybWF0U3RyaW5nKC4uLnJlcGxhY2VtZW50czogc3RyaW5nW10pOiBzdHJpbmcge1xuICAgIGxldCByZXN1bHQgPSBhcmd1bWVudHNbMF07XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgICBjb25zdCByZWcgPSBuZXcgUmVnRXhwKGBcXFxceyR7aX1cXFxcfWAsICdnbScpO1xuICAgICAgcmVzdWx0ID0gcmVzdWx0LnJlcGxhY2UocmVnLCBhcmd1bWVudHNbaSArIDFdKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuICAvKipcbiAgICAgICAqIFRoaXMgZnVuY3Rpb24gdXNlIGZvciBsYXp5IGxvYWQgY2hpbGRyZW4gb2Ygbm9kZVxuICAgICAgICogQHBhcmFtIG5vZGUgbm9kZSB1cGRhdGVcbiAgICAgICAqIEBwYXJhbSBkYXRhIGxpc3QgY2hpbGRyZW4gdG8gdXBkYXRlIG5vZGUuXG4gICAgICAgKiBAcGFyYW0gbW9kZSBkZWZhdWx0IGlzIHVwZGF0ZSB0aGF0IHJlcGxhY2UgY3VycmVudCBsaXN0IGNoaWxkcmVuIGJ5IG5ldyBsaXN0IGNoaWxkcmVuICwgaWYgbW9kZSA9ICdpbnNlcnQnIHdpbGwgaW5zZXJ0IG5ldyB2YWx1ZSB0byBsaXN0IGNoaWxkcmVuIGV4aXN0ZWQgYmVmb3JlLlxuICAqL1xuICB1cGRhdGVDaGlsZE9mTm9kZShub2RlOiBRTVNGbGF0Tm9kZVRyZWUsIGRhdGE6IFFNU0ZsYXROb2RlVHJlZVtdLCBtb2RlOiAnaW5zZXJ0JyB8ICd1cGRhdGUnID0gJ3VwZGF0ZScpIHtcbiAgICB0aGlzLnRyZWVQcm9jZXNzRGF0YS51cGRhdGVDaGlsZE9mTm9kZShub2RlLCBkYXRhLCBtb2RlKTtcbiAgfVxuXG4gIGFkZFJvb3RUcmVlKGRhdGE6IFFNU0ZsYXROb2RlVHJlZVtdID0gW10pIHtcbiAgICB0aGlzLnRyZWVQcm9jZXNzRGF0YS5hZGRSb290VHJlZShkYXRhKTtcbiAgfVxuXG4gIC8qKlxuICogVGhpcyBmdW5jdGlvbiBoYW5kbGUgY2hlY2sgbm9kZSBvZiB0cmVlXG4gKiBAcGFyYW0gbm9kZSBub2RlIG9mIHRyZWVcbiAqIEBwYXJhbSBjYWxsYmFjayBkbyBzb21ldGhpbmcgYmVmb3JlIGhhbmRsZSBjaGVjayBub2RlXG4gKiBAcmV0dXJuc1xuICovXG4gIG9uQmVmb3JlQ2hlY2tOb2RlKG5vZGU6IFFNU0ZsYXROb2RlVHJlZSwgY2FsbGJhY2s/OiAobm9kZTogUU1TRmxhdE5vZGVUcmVlKSA9PiB2b2lkIHwgUHJvbWlzZTx2b2lkPikge1xuICAgIHJldHVybiB0aGlzLnRyZWVQcm9jZXNzRGF0YS5vbkJlZm9yZUNoZWNrTm9kZShub2RlLCBjYWxsYmFjayk7XG4gIH1cblxuICBoYW5kbGVDaGVja05vZGUobm9kZTogUU1TRmxhdE5vZGVUcmVlKSB7XG4gICAgaWYgKCF0aGlzLnRyZWVQcm9jZXNzRGF0YSlcbiAgICAgIHJldHVybjtcbiAgICB0aGlzLnRyZWVQcm9jZXNzRGF0YS5oYW5kbGVDaGVja05vZGUobm9kZSlcbiAgfVxuXG4gIC8qKlxuICogVGhpcyBtZXRob2QgdXNlIGZvciBsYXp5IG1vZGUsIGRvIHNvbWUgdGhpbmcgYmVmb3JlIGluaXQgbGlzdCBub2RlIHNlbGVjdGVkXG4gKiBAcGFyYW0gY2FsbGJhY2tcbiAqIEByZXR1cm5zXG4gKi9cbiAgYXN5bmMgb25CZWZvcmVJbml0Tm9kZVNlbGVjdGVkKGNhbGxiYWNrPzogKCkgPT4gdm9pZCB8IFByb21pc2U8dm9pZD4pIHtcbiAgICBpZiAoIXRoaXMudHJlZVByb2Nlc3NEYXRhKVxuICAgICAgcmV0dXJuO1xuICAgIGlmICghIWNhbGxiYWNrKVxuICAgICAgYXdhaXQgdGhpcy50cmVlUHJvY2Vzc0RhdGEub25CZWZvcmVJbml0Tm9kZVNlbGVjdGVkKGNhbGxiYWNrKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgbm9kZSBieSBpZCBvZiBub2RlXG4gICAqIEBwYXJhbSBub2RlSWQgaWQgb2Ygbm9kZVxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgZmluZE5vZGUobm9kZUlkOiBzdHJpbmcpOiBRTVNGbGF0Tm9kZVRyZWUge1xuICAgIGlmICghdGhpcy50cmVlUHJvY2Vzc0RhdGEpXG4gICAgICByZXR1cm47XG4gICAgcmV0dXJuIHRoaXMudHJlZVByb2Nlc3NEYXRhLnRyZWVDb250cm9sLmRhdGFOb2Rlcy5maW5kKG5vZGUgPT4gbm9kZS5pZCA9PT0gbm9kZUlkLnRvU3RyaW5nKCkpO1xuICB9XG5cbiAgLyoqXG4gKiBUaGlzIG1ldGhvZCB1c2UgZm9yIGxhenkgbW9kZSwgZG8gc29tZSB0aGluZyBiZWZvcmUgc2VsZWN0IGFsbCByZXN1bHQgc2VhcmNoXG4gKiBAcGFyYW0gY2FsbGJhY2tcbiAqIEByZXR1cm5zXG4gKi9cbiAgYXN5bmMgb25CZWZvcmVDaGVja0FsbFNlYXJjaChjYWxsYmFjaz86IChkYXRhKSA9PiB2b2lkIHwgUHJvbWlzZTx2b2lkPikge1xuICAgIGlmICghdGhpcy50cmVlUHJvY2Vzc0RhdGEpXG4gICAgICByZXR1cm47XG4gICAgYXdhaXQgdGhpcy50cmVlUHJvY2Vzc0RhdGEub25CZWZvcmVDaGVja0FsbFNlYXJjaChjYWxsYmFjayk7XG4gIH1cblxuICAvKipcbiogVGhpcyBtZXRob2QgdXNlIGZvciBsYXp5IG1vZGUsIGRvIHNvbWUgdGhpbmcgYmVmb3JlIGNoZWNrIGl0ZW0gcmVzdWx0XG4qIEBwYXJhbSBjYWxsYmFja1xuKiBAcmV0dXJuc1xuKi9cbiAgb25CZWZvcmVDaGVja0l0ZW1TZWFyY2goaXRlbTogRGVwYXJ0bWVudFNlYXJjaFJlc3VsdE1vZGVsLCBjYWxsYmFjaz86IChpdGVtOiBEZXBhcnRtZW50U2VhcmNoUmVzdWx0TW9kZWwpID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+KSB7XG4gICAgcmV0dXJuIHRoaXMudHJlZVByb2Nlc3NEYXRhLm9uQmVmb3JlQ2hlY2tJdGVtU2VhcmNoKGl0ZW0sIGNhbGxiYWNrKTtcbiAgfVxuXG4gIHNldExvYWRpbmdTdGF0ZU5vZGUoaXNMb2FkaW5nLCBub2RlSWQ6IHN0cmluZykge1xuICAgICEhdGhpcy50cmVlUHJvY2Vzc0RhdGEgJiYgdGhpcy50cmVlUHJvY2Vzc0RhdGEuc2V0TG9hZGluZ1N0YXRlTm9kZShpc0xvYWRpbmcsIG5vZGVJZCk7XG4gIH1cbiAgLyoqXG4gICAqIFNlbGVjdCBhIHZhbHVlIG9yIGFuIGFycmF5IG9mIHZhbHVlcy5cbiAgICovXG4gIG9uU2VsZWN0Tm9kZSguLi5ub2RlSWRzOiBzdHJpbmdbXSkge1xuICAgIHRoaXMudHJlZVByb2Nlc3NEYXRhLm9uU2VsZWN0Tm9kZSguLi5ub2RlSWRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXNlbGVjdHMgYSB2YWx1ZSBvciBhbiBhcnJheSBvZiB2YWx1ZXMuXG4gICAqL1xuICBvbkRlc2VsZWN0Tm9kZSguLi5ub2RlSWRzOiBzdHJpbmdbXSkge1xuICAgIHRoaXMudHJlZVByb2Nlc3NEYXRhLm9uRGVzZWxlY3ROb2RlKC4uLm5vZGVJZHMpO1xuICB9XG5cbiAgLyoqXG4gICogVG9nZ2xlcyBhIHZhbHVlIGJldHdlZW4gc2VsZWN0ZWQgYW5kIGRlc2VsZWN0ZWQuXG4gICovXG4gIG9uVG9nZ2xlTm9kZShub2RlSWQ6IHN0cmluZykge1xuICAgIHRoaXMudHJlZVByb2Nlc3NEYXRhLm9uVG9nZ2xlTm9kZShub2RlSWQpO1xuICB9XG5cbiAgZ2V0Tm9kZUJ5SWQobm9kZUlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy50cmVlUHJvY2Vzc0RhdGEuZ2V0Tm9kZUJ5SWQobm9kZUlkKTtcbiAgfVxuXG4gIGlzTm9kZUxvYWRpbmcobm9kZUlkOiBzdHJpbmcpIHtcbiAgICBpZiAoIXRoaXMudHJlZVByb2Nlc3NEYXRhKVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLnRyZWVQcm9jZXNzRGF0YS5nZXROb2RlQnlJZChub2RlSWQpO1xuICAgIHJldHVybiAhIW5vZGUgJiYgbm9kZS5pc0xvYWRpbmc7XG4gIH1cblxuICBzZXRMb2FkaW5nTW9yZShzdGF0ZTogYm9vbGVhbikge1xuICAgIGlmICghdGhpcy50cmVlUHJvY2Vzc0RhdGEpXG4gICAgICByZXR1cm47XG4gICAgdGhpcy50cmVlUHJvY2Vzc0RhdGEuZ2V0TG9hZGluZ01vcmUkLm5leHQoc3RhdGUpO1xuICB9XG5cbiAgc2V0TG9hZGluZyhzdGF0ZTogYm9vbGVhbikge1xuICAgIGlmICghdGhpcy50cmVlUHJvY2Vzc0RhdGEpXG4gICAgICByZXR1cm47XG4gICAgdGhpcy50cmVlUHJvY2Vzc0RhdGEuZ2V0TG9hZGluZyQubmV4dChzdGF0ZSk7XG4gIH1cbiAgc2V0TG9hZGluZ05vZGUobm9kZUlkOiBzdHJpbmcsIHN0YXRlOiBib29sZWFuKSB7XG4gICAgaWYgKCF0aGlzLnRyZWVQcm9jZXNzRGF0YSlcbiAgICAgIHJldHVybjtcbiAgICBjb25zdCBub2RlID0gdGhpcy50cmVlUHJvY2Vzc0RhdGEuZ2V0Tm9kZUJ5SWQobm9kZUlkKTtcbiAgICBpZiAoISFub2RlKVxuICAgICAgbm9kZS5pc0xvYWRpbmcgPSBzdGF0ZTtcbiAgfVxuXG4gIHVwZGF0ZVRyZWVEYXRhKGRhdGE6IFFNU1RyZWVOb2RlW10gPSB0aGlzLmN1cnJlbnRUcmVlRGF0YSkge1xuICAgICEhdGhpcy50cmVlUHJvY2Vzc0RhdGEgJiYgdGhpcy50cmVlUHJvY2Vzc0RhdGEudXBkYXRlRGF0YVRyZWUoZGF0YSk7XG4gIH1cblxuICBvbkRlc3Ryb3lMb2FkTW9yZSgpIHtcbiAgICB0aGlzLnRyZWVQcm9jZXNzRGF0YS5vbkRlc3Ryb3lMb2FkTW9yZSgpO1xuICB9XG5cbiAgc2V0U2VsZWN0ZWRMaXN0RGF0YShkYXRhOiBhbnkpIHtcbiAgICB0aGlzLnBvcHVwRGF0YS5jb25maWcuc2VsZWN0ZWRMaXN0ID0gZGF0YTtcbiAgfVxuXG4gIGdldENoZWNrZWRTdGF0dXNOb2RlKG5vZGU6IFFNU0ZsYXROb2RlVHJlZSkge1xuICAgIHJldHVybiB0aGlzLnRyZWVQcm9jZXNzRGF0YS5nZXRDaGVja2VkU3RhdHVzTm9kZShub2RlKTtcbiAgfVxuXG4gIHVwZGF0ZU5vZGVJbmZvcm1hdGlvbihub2RlOiBRTVNGbGF0Tm9kZVRyZWUpIHtcbiAgICByZXR1cm4gdGhpcy50cmVlUHJvY2Vzc0RhdGEudXBkYXRlTm9kZUluZm9ybWF0aW9uKG5vZGUpO1xuICB9XG5cbiAgdXBkYXRlU2VsZWN0ZWRSZXN1bHREYXRhKG5vZGU6IFFNU0ZsYXROb2RlVHJlZSkge1xuICAgIHJldHVybiB0aGlzLnRyZWVQcm9jZXNzRGF0YS51cGRhdGVTZWxlY3RlZFJlc3VsdERhdGEobm9kZSk7XG4gIH1cblxuICBnZXRBbGxQYXJlbnROb2RlKG5vZGU6IFFNU0ZsYXROb2RlVHJlZSkge1xuICAgIHJldHVybiB0aGlzLnRyZWVQcm9jZXNzRGF0YS5nZXRBbGxQYXJlbnROb2RlKG5vZGUpO1xuICB9XG5cbiAgb25DaGVja05vZGUobm9kZTogUU1TRmxhdE5vZGVUcmVlLCBmaXJlRXZlbnRDaGVja05vZGU6IGJvb2xlYW4gPSB0cnVlKSB7XG4gICAgcmV0dXJuIHRoaXMudHJlZVByb2Nlc3NEYXRhLm9uQ2hlY2tOb2RlKG5vZGUsIGZpcmVFdmVudENoZWNrTm9kZSk7XG4gIH1cblxuICBnZXRDaGlsZHJlblNlbGVjdGVkKG5vZGU6IFFNU0ZsYXROb2RlVHJlZSk6IFFNU0ZsYXROb2RlVHJlZVtdIHtcbiAgICByZXR1cm4gdGhpcy50cmVlUHJvY2Vzc0RhdGEuZ2V0Q2hpbGRyZW5TZWxlY3RlZChub2RlKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInFtcy1zZWxlY3QtZGVwYXJ0bWVudFwiPlxuICA8ZGl2IGNsYXNzPVwiaGVhZGVyLWRpYWxvZyBtYi0yXCI+XG4gICAgPHNwYW4+e3twb3B1cERhdGEuaGVhZGVyTmFtZX19PC9zcGFuPlxuICAgIDxidXR0b24gbWF0RGlhbG9nQ2xvc2UgY2xhc3M9XCJidG4tY2xvc2UtZGlhbG9nXCIgY29sb3I9XCJsaWdodFwiIHFtcy1idG4taWNvbj5cbiAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuICA8ZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJxbXMtc2Nyb2xsYmFyXCI+XG4gICAgICA8ZGl2PlxuICAgICAgICA8cW1zLXNlbGVjdC1wcm9jZXNzLWRhdGEtdHJlZSAjdHJlZVByb2Nlc3NEYXRhIGN1c3RvbUNsYXNzPVwiY3VzdG9tLWRlcGFydG1lbnQtdHJlZVwiXG4gICAgICAgICAgW2hlaWdodF09XCJwb3B1cERhdGEuY29uZmlnLmlzTW9iaWxlID8gJzM4dmgnIDogJzUwdmgnXCIgW3Jvd3NTa2VsZXRvbl09XCI5XCIgW2NvbmZpZ109XCJwb3B1cERhdGEuY29uZmlnXCJcbiAgICAgICAgICAob25TZWFyY2hFdmVudCk9XCJvblNlYXJjaEV2ZW50LmVtaXQoJGV2ZW50KVwiIChvblZhbHVlQ2hhbmdlRXZlbnQpPVwib25SZXN1bHREZXBhcnRtZW50Q2hhbmdlKCRldmVudClcIlxuICAgICAgICAgIChvblBhZ2luZ1NlYXJjaEV2ZW50KT1cIm9uUGFnaW5nRXZlbnQuZW1pdCgkZXZlbnQpXCIgKG9uQ2hlY2tOb2RlRXZlbnQpPVwib25DaGVja05vZGVFdmVudC5lbWl0KCRldmVudClcIlxuICAgICAgICAgIChvbkV4cGFuZE5vZGVFdmVudCk9XCJvbkV4cGFuZE5vZGVFdmVudC5lbWl0KCRldmVudClcIiAob25Mb2FkTW9yZUV2ZW50KT1cIm9uTG9hZE1vcmVFdmVudC5lbWl0KClcIlxuICAgICAgICAgIChvbkNoZWNrQWxsSXRlbVNlYXJjaEV2ZW50KT1cIm9uQ2hlY2tBbGxJdGVtU2VhcmNoRXZlbnQuZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgICAob25DaGVja0l0ZW1TZWFyY2hFdmVudCk9XCJvbkNoZWNrSXRlbVNlYXJjaEV2ZW50LmVtaXQoJGV2ZW50KVwiXG4gICAgICAgICAgKHRvZ2dsZUluY2x1ZGVDaGlsZEV2ZW50KT1cInRvZ2dsZUluY2x1ZGVDaGlsZEV2ZW50LmVtaXQoJGV2ZW50KVwiPlxuICAgICAgICA8L3Ftcy1zZWxlY3QtcHJvY2Vzcy1kYXRhLXRyZWU+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibGluZV9fZGl2aWRlclwiPjwvZGl2PlxuICAgIDxkaXYgW0BoZWlnaHRBbmltYXRpb25dICpuZ0lmPVwidHJlZVByb2Nlc3NEYXRhICYmICEhdHJlZVByb2Nlc3NEYXRhLnJlc3VsdFNlbGVjdGVkLmxlbmd0aFwiIGNsYXNzPVwiIHByLTAgcGUtMFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImhlYWRlci10aXRsZVwiPnt7TEFORy5SRVNVTFRTfX08L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyZXN1bHQtY29udGVudCBwci0wIHBlLTBcIj5cbiAgICAgICAgPG1hdC1jaGlwLXNldCBjbGFzcz1cInBhbmVsX19pdGVtIHFtcy1zY3JvbGxiYXJcIj5cbiAgICAgICAgICA8ZGl2IFtAaW5PdXRBbmltYXRpb25fMl0gW2lkXT1cIidpdGVtLXJlc3VsdC0nK2l0ZW0uaWRcIiAqbmdGb3I9XCJsZXQgaXRlbSBvZiB0cmVlUHJvY2Vzc0RhdGEucmVzdWx0U2VsZWN0ZWRcIj5cbiAgICAgICAgICAgIDxtYXQtY2hpcCBbQHVwZGF0ZUl0ZW1BbmltYXRpb25dICpxbXNDb250ZW50Q2hhbmdlcz1cIml0ZW0uY2hpbGRyZW4/Lmxlbmd0aFwiXG4gICAgICAgICAgICAgIFtxbXMtdG9vbC10aXBdPVwiZ2VuZXJhdGVUb290aXAoaXRlbSlcIiBwb3NpdGlvbj1cInRvcFwiIG1vZGU9XCJkYXJrXCIgcW1zLWNoaXAgW3JlbW92YWJsZV09XCJ0cnVlXCI+XG4gICAgICAgICAgICAgIDxzcGFuIChjbGljayk9XCJvblNjcm9sbFRvTm9kZShpdGVtKVwiIHFtcy1jaGlwLWJvZHk+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyZWxhdGVkX19pdGVtX19jb250ZW50X25hbWVcIiAjaXRlbU5hbWU+XG4gICAgICAgICAgICAgICAgICA8c3Bhbj57e2l0ZW0ubmFtZX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZWxlY3RfX2luY2x1ZGUtY2hpbGRyZW5fX2NvdW50XCIgKm5nSWY9XCIhIWl0ZW0/LmlzR3JvdXAgJiYgIXBvcHVwRGF0YS5jb25maWcubGF6eVwiPlxuICAgICAgICAgICAgICAgICAgICB7e2l0ZW0uY2hpbGRyZW4ubGVuZ3RofX0ve3tpdGVtLmNoaWxkQ291bnR9fVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZWxlY3RfX2luY2x1ZGUtY2hpbGRyZW5fX2NvdW50XCIgKm5nSWY9XCIhIWl0ZW0/LmlzR3JvdXAgJiYgcG9wdXBEYXRhLmNvbmZpZy5sYXp5XCI+XG4gICAgICAgICAgICAgICAgICAgIHt7aXRlbS5zZWxlY3RlZENoaWxkQ291bnR9fS97e2l0ZW0uY2hpbGRDb3VudH19XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwib25SZW1vdmVOb2RlKGl0ZW0pXCIgbWF0Q2hpcFJlbW92ZSAqbmdJZj1cIiFpc05vZGVMb2FkaW5nKGl0ZW0uaWQpOyBlbHNlIGxvYWRpbmdTcGlubmVyXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uPmNhbmNlbDwvbWF0LWljb24+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuXG5cbiAgICAgICAgICAgIDwvbWF0LWNoaXA+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbWF0LWNoaXAtc2V0PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPG1hdC1kaXZpZGVyICpuZ0lmPVwidHJlZVByb2Nlc3NEYXRhICYmICEhdHJlZVByb2Nlc3NEYXRhLnJlc3VsdFNlbGVjdGVkLmxlbmd0aFwiIGNsYXNzPVwibXgtYXV0b1wiPjwvbWF0LWRpdmlkZXI+XG4gICAgPGRpdiBjbGFzcz1cImNvbmZpcm1fX2J1dHRvbl9fZ3JvdXBzXCI+XG4gICAgICA8YnV0dG9uIChjbGljayk9XCJvbkNsb3NlRGlhbG9nKClcIiBjbGFzcz1cImJ0bi1hZGRcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiIXJlc3VsdFNlbGVjdGVkLmxlbmd0aCAmJiAhcG9wdXBEYXRhLmNvbmZpZy5jYW5BZGROdWxsUmVzdWx0XCJcbiAgICAgICAgW2NsYXNzLnFtcy1idG4tZGlzYWJsZWRdPVwiIXJlc3VsdFNlbGVjdGVkLmxlbmd0aCAmJiAhcG9wdXBEYXRhLmNvbmZpZy5jYW5BZGROdWxsUmVzdWx0XCIgcW1zLWJ0bj5cbiAgICAgICAgPHNwYW4+e3tMQU5HLkFERH19PC9zcGFuPlxuICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAoe3t0cmVlUHJvY2Vzc0RhdGEucmVzdWx0U2VsZWN0ZWQubGVuZ3RofX0pXG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiBxbXMtYnRuLXRleHQgbWF0LWRpYWxvZy1jbG9zZT5cbiAgICAgICAgQ2FuY2VsXG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPCEtLSBMb2FkaW5nIHNwaW5uZXIgLS0+XG48bmctdGVtcGxhdGUgI2xvYWRpbmdTcGlubmVyPlxuICA8ZGl2IGNsYXNzPVwicW1zLXNwaW5uZXItd3JhcHBlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJxbXMtc3Bpbm5lciBjZW50ZXJcIj5cbiAgICAgIDxtYXQtc3Bpbm5lciBbZGlhbWV0ZXJdPVwiMjBcIiBbc3Ryb2tlV2lkdGhdPVwiMlwiPjwvbWF0LXNwaW5uZXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT4iXX0=
|