qms-angular 1.1.58 → 1.1.60
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/bundles/qms-angular.umd.js +58 -48
- package/bundles/qms-angular.umd.js.map +1 -1
- package/esm2015/lib/components/related/list-other-related/list-related.component.js +2 -2
- package/esm2015/lib/components/select-access-dialog/model/select-access-config.model.js +2 -1
- package/esm2015/lib/components/select-access-dialog/select-access-dialog.component.js +7 -4
- package/esm2015/lib/components/select-process-data-tree/select-process-data-tree.component.js +11 -6
- package/fesm2015/qms-angular.js +17 -8
- package/fesm2015/qms-angular.js.map +1 -1
- package/lib/components/select-access-dialog/model/select-access-config.model.d.ts +1 -0
- package/package.json +1 -1
- package/qms-angular.metadata.json +1 -1
@@ -128,7 +128,7 @@ export class RelatedListComponent {
|
|
128
128
|
RelatedListComponent.decorators = [
|
129
129
|
{ type: Component, args: [{
|
130
130
|
selector: 'qms-related-list',
|
131
|
-
template: "<div class=\"container list-related\">\n <div class=\"list-related__title\">\n <strong>{{ title }}</strong>\n </div>\n <div
|
131
|
+
template: "<div class=\"container list-related\">\r\n <div class=\"list-related__title\">\r\n <strong>{{ title }}</strong>\r\n </div>\r\n <div class=\"list-related__body\" *ngFor=\"let item of relatedData; let i = index\">\r\n <div class=\"list-related__body-parent\">\r\n <qms-list-item type=\"image-square\">\r\n <mat-icon type=\"image-square\" leading-icon [svgIcon]=\"getNodeIcon(item)\"></mat-icon>\r\n <div qms-list-header>\r\n <div qms-line (click)=\"onItemClick(item)\" type=\"caption\" *ngIf=\"canShowParent(item)\">\r\n {{ item?.parentName }}\r\n </div>\r\n <div qms-line (click)=\"onItemClick(item)\" type=\"subtitle\">\r\n {{ item.itemName }}\r\n </div>\r\n </div>\r\n <div qms-line *ngIf=\"item.breadcumbs && item.breadcumbs.length\">\r\n <qms-breadcrumb class=\"breadcrumb-container\" type=\"table\" numDisplayItem=\"1\" [nodes]=\"item.breadcumbs\">\r\n </qms-breadcrumb>\r\n </div>\r\n <div qms-line color=\"default-subtitle\" *ngIf=\"item?.displayId\">\r\n <ng-container *ngIf=\"item?.displayId\">\r\n <span>\r\n <mat-icon class=\"material-icons-outlined\"> local_offer </mat-icon>\r\n </span>\r\n ID:\r\n {{ item?.displayId }}\r\n </ng-container>\r\n <ng-container *ngIf=\"item.statusName\">\r\n {{ getItemStatus(item) }}\r\n </ng-container>\r\n </div>\r\n <button qms-btn-icon color=\"light\" mode=\"dark\"\r\n *ngIf=\"!isNotEditedItem && (item.canRemove === undefined || item.canRemove)\" (click)=\"removeItem(i)\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </qms-list-item>\r\n </div>\r\n </div>\r\n</div>",
|
132
132
|
encapsulation: ViewEncapsulation.None,
|
133
133
|
styles: [".list-related{font-family:Open Sans;font-style:normal;font-weight:400;color:var(--default-color)}.list-related .list-related__title{font-weight:600;font-size:.875rem;line-height:22px;margin-bottom:1rem}.list-related .list-related__body .list-related__body-parent{min-height:48px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #ddd}.list-related .list-related__body .list-related__body-parent .qms-list-item{height:unset!important}.list-related .list-related__body .list-related__body-parent .qms-list-item.mat-2-line.image-item{height:auto}.list-related .list-related__body .list-related__body-parent .qms-list-item.image-item .qms-list-item-content{margin:0}.list-related .list-related__body .list-related__body-parent .wrap-image.image-square,.list-related .list-related__body .list-related__body-parent .wrap-image.image-square img{background:transparent;margin:auto;height:24px;width:24px}.list-related .list-related__body .list-related__body-parent .qms-list-item.image-item .qms-list-text,.list-related .list-related__body .list-related__body-parent .qms-list-item.image-item .trailing-box{margin-left:1.5rem;border-bottom:none;padding-bottom:7px;padding-top:7px}.list-related .list-related__body .list-related__body-parent .qms-list-item.image-item .qms-list-text .material-icons-outlined,.list-related .list-related__body .list-related__body-parent .qms-list-item.image-item .trailing-box .material-icons-outlined{font-size:13px;height:13px;width:13px}.list-related .list-related__body .list-related__body-parent .block{font-weight:400;font-size:1rem;line-height:28px;display:flex;align-items:center}.list-related .list-related__body .list-related__body-parent .block .title{margin-left:1.5rem;padding-top:5px;padding-bottom:5px}.list-related .list-related__body .list-related__body-parent .block .title .caption{color:rgba(0,0,0,.6);font-size:.75rem;line-height:22px}.list-related .list-related__body .list-related__body-parent .block mat-icon{color:rgba(0,0,0,.6);padding:0}.list-related .list-related__body .list-related__body-parent .block button.qms-btn-icon{width:40px;height:40px;line-height:40px}.list-related .list-related__body .list-related__body-child{font-weight:400;font-size:.875rem;line-height:22px}.list-related .list-related__body .list-related__body-child .default{min-height:48px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #ddd}.list-related .list-related__body .list-related__body-child .default .title{margin-left:3rem}.list-related .list-related__body .list-related__body-child .default .group-button{margin-right:2rem;display:flex}.list-related .list-related__body .remain{font-weight:600;font-size:.875rem;line-height:22px;display:flex;align-items:center;justify-content:space-between;background-color:#fafafa;color:var(--primary);min-height:48px;border-bottom:1px solid #ddd}.list-related .list-related__body .remain .title{margin-left:3rem}.list-related .list-related__body .qms-line{display:flex;align-items:center}.list-related .list-related__body .breadcrumb-container .qms-breadcrumb-item{cursor:inherit;line-height:16px;font-size:.75rem;color:rgba(0,0,0,.6);font-weight:400;line-height:22px;margin:0}.list-related .list-related__body .trailing-box{display:flex;align-items:center}.list-related .list-related__body .trailing-box button{height:24px;width:24px;line-height:24px}.label-green,.label-red,.label-yellow{font-family:Open Sans;font-style:normal;font-weight:600;display:inline-block;text-align:center;margin-left:1rem;width:24px;height:24px;font-size:.75rem;border-radius:1px}.label-red{background-color:var(--secondary);color:#fff}.label-yellow{background-color:var(--risk-yellow);color:rgba(0,0,0,.87)}.label-green{background-color:var(--risk-green);color:#fff}.cursor{cursor:pointer}"]
|
134
134
|
},] }
|
@@ -145,4 +145,4 @@ RelatedListComponent.propDecorators = {
|
|
145
145
|
updateData: [{ type: Output }],
|
146
146
|
onItemSelect: [{ type: Output }]
|
147
147
|
};
|
148
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1yZWxhdGVkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Ftcy1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9yZWxhdGVkL2xpc3Qtb3RoZXItcmVsYXRlZC9saXN0LXJlbGF0ZWQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFVLEtBQUssRUFBcUIsTUFBTSxFQUFpQixpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwSSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBRXZFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQVEvRCxNQUFNLE9BQU8sb0JBQW9CO0lBZ0IvQixZQUNVLFlBQTBCLEVBQzNCLFNBQWtDLEVBQ2pDLFlBQTZCLEVBQzdCLGNBQXNDO1FBSHRDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzNCLGNBQVMsR0FBVCxTQUFTLENBQXlCO1FBQ2pDLGlCQUFZLEdBQVosWUFBWSxDQUFpQjtRQUM3QixtQkFBYyxHQUFkLGNBQWMsQ0FBd0I7UUFoQmhELGdCQUFXLEdBQW9CLEVBQUUsQ0FBQztRQUNsQyxhQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3BCLCtEQUEr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QUFzQjs7O21CQW9CNUIsS0FBSzt5QkFDTCxLQUFLO3lCQUNMLE1BQU07MkJBQ04sTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbmplY3QsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBNYXRJY29uUmVnaXN0cnkgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvblwiO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSBcIkBhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXJcIjtcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XG5pbXBvcnQgeyBUcmFuc2xhdGVMaWJyYXJ5U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3RyYW5zbGF0aW9uLXJlZ2lzdHJ5LnNlcnZpY2UnO1xuaW1wb3J0IHsgUU1TSWNvblJlZ2lzdHJ5U2VydmljZSB9IGZyb20gXCIuLi8uLi9hcHAtaWNvbi9pY29uLXJlZ2lzdHJ5LnNlcnZpY2VcIjtcbmltcG9ydCB7IERvY3VtZW50Tm9kZVR5cGUgfSBmcm9tIFwiLi4vY29tbW9uL2RvY3VtZW50LWZvbGRlci10eXBlLmVudW1cIjtcbmltcG9ydCB7IElSZWxhdGVkLCBSZWxhdGVkRGF0YSB9IGZyb20gXCIuLi9tb2RlbC9yZWxhdGVkLWRhdGEubW9kZWxcIjtcbmltcG9ydCB7IERhdGFUeXBlIH0gZnJvbSBcIi4uLy4uLy4uL2NvbW1vbi9lbnVtL2RhdGEtdHlwZS5lbnVtXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3Ftcy1yZWxhdGVkLWxpc3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vbGlzdC1yZWxhdGVkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbGlzdC1yZWxhdGVkLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgUmVsYXRlZExpc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIExBTkc6IGFueTtcbiAgdGl0bGU6IHN0cmluZztcbiAgaXNOb3RFZGl0ZWRJdGVtOiBib29sZWFuO1xuICByZWxhdGVkRGF0YTogQXJyYXk8SVJlbGF0ZWQ+ID0gW107XG4gIGRhdGFUeXBlID0gRGF0YVR5cGU7XG4gIC8vIGltYWdlUHJvY2VzcyA9ICcuLi9xbXMtYW5ndWxhci9zcmMvYXNzZXRzL2ltYWdlcy91bmlvbi5zdmcnO1xuICBpbWFnZVByb2Nlc3MgPSAnZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlCM2FXUjBhRDBpTVRnaUlHaGxhV2RvZEQwaU1Ua2lJSFpwWlhkQ2IzZzlJakFnTUNBeE9DQXhPU0lnWm1sc2JEMGlibTl1WlNJZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWo0TkNqeHdZWFJvSUdacGJHd3RjblZzWlQwaVpYWmxibTlrWkNJZ1kyeHBjQzF5ZFd4bFBTSmxkbVZ1YjJSa0lpQmtQU0pOTUNBd0xqVldOaTQxU0RKV01UWXVOVWd4TWxZeE9DNDFTREU0VmpFeUxqVklNVEpXTVRRdU5VZzBWall1TlVnMlZqUXVOVWd4TWxZMkxqVklNVGhXTUM0MVNERXlWakl1TlVnMlZqQXVOVWd3V2swMElESXVOVlkwTGpWSU1sWXlMalZJTkZwTk1UWWdNaTQxVmpRdU5VZ3hORll5TGpWSU1UWmFUVEUySURFMkxqVldNVFF1TlVneE5GWXhOaTQxU0RFMldpSWdabWxzYkQwaVlteGhZMnNpSUdacGJHd3RiM0JoWTJsMGVUMGlNQzQySWk4K0RRbzhMM04yWno0TkNnPT0nO1xuXG4gIEBJbnB1dCgpIGRhdGE6IFJlbGF0ZWREYXRhO1xuICBASW5wdXQoKSBzaG93U3RhdHVzOiBib29sZWFuO1xuICBAT3V0cHV0KCkgdXBkYXRlRGF0YTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIG9uSXRlbVNlbGVjdDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGRvbVNhbml0aXplcjogRG9tU2FuaXRpemVyLFxuICAgIHB1YmxpYyB0cmFuc2xhdGU6IFRyYW5zbGF0ZUxpYnJhcnlTZXJ2aWNlLFxuICAgIHByaXZhdGUgaWNvblJlZ2lzdHJ5OiBNYXRJY29uUmVnaXN0cnksXG4gICAgcHJpdmF0ZSBhcHBJY29uU2VydmljZTogUU1TSWNvblJlZ2lzdHJ5U2VydmljZVxuICApIHtcbiAgICBhcHBJY29uU2VydmljZS5yZWdpc3RlclByb2Nlc3NJY29uKGljb25SZWdpc3RyeSwgZG9tU2FuaXRpemVyKTtcbiAgICBhcHBJY29uU2VydmljZS5yZWdpc3RlclByb2Nlc3NBcmVhSWNvbihpY29uUmVnaXN0cnksIGRvbVNhbml0aXplcik7XG4gICAgYXBwSWNvblNlcnZpY2UucmVnaXN0ZXJEb2N1bWVudEljb24oaWNvblJlZ2lzdHJ5LCBkb21TYW5pdGl6ZXIpO1xuICAgIGFwcEljb25TZXJ2aWNlLnJlZ2lzdGVyRm9sZGVySWNvbihpY29uUmVnaXN0cnksIGRvbVNhbml0aXplcik7XG4gICAgYXBwSWNvblNlcnZpY2UucmVnaXN0ZXJEZXZpYXRpb25JY29uKGljb25SZWdpc3RyeSwgZG9tU2FuaXRpemVyKTtcbiAgICBhcHBJY29uU2VydmljZS5yZWdpc3RlckNoZWNrbGlzdEljb24oaWNvblJlZ2lzdHJ5LCBkb21TYW5pdGl6ZXIpO1xuICAgIGFwcEljb25TZXJ2aWNlLnJlZ2lzdGVyUmlza0ljb24oaWNvblJlZ2lzdHJ5LCBkb21TYW5pdGl6ZXIpO1xuICAgIGFwcEljb25TZXJ2aWNlLnJlZ2lzdGVyUHJvY2Vzc0ludGVyY29ubmVjdGVkSWNvbihpY29uUmVnaXN0cnksIGRvbVNhbml0aXplcik7XG4gICAgYXBwSWNvblNlcnZpY2UucmVnaXN0ZXJDb21wbGlhbmNlSWNvbihpY29uUmVnaXN0cnksIGRvbVNhbml0aXplcik7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXMuZGF0YSAmJiBKU09OLnN0cmluZ2lmeShjaGFuZ2VzLmRhdGEuY3VycmVudFZhbHVlKSAhPT0gSlNPTi5zdHJpbmdpZnkoY2hhbmdlcy5kYXRhLnByZXZpb3VzVmFsdWUpKSB7XG4gICAgICB0aGlzLnJlbGF0ZWREYXRhID0gW107XG4gICAgICB0aGlzLnRpdGxlID0gY2hhbmdlcy5kYXRhLmN1cnJlbnRWYWx1ZS50aXRsZTtcbiAgICAgIHRoaXMuaXNOb3RFZGl0ZWRJdGVtID0gY2hhbmdlcy5kYXRhLmN1cnJlbnRWYWx1ZVsnaXNOb3RFZGl0ZWRJdGVtJ10gPz8gZmFsc2U7XG4gICAgICB0aGlzLnJlbGF0ZWREYXRhID0gWy4uLmNoYW5nZXMuZGF0YS5jdXJyZW50VmFsdWUuZGF0YV07XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy50aXRsZSA9IHRoaXMuZGF0YS50aXRsZTtcbiAgICB0aGlzLmlzTm90RWRpdGVkSXRlbSA9IHRoaXMuZGF0YVsnaXNOb3RFZGl0ZWRJdGVtJ10gPz8gZmFsc2U7XG4gICAgdGhpcy5yZWxhdGVkRGF0YSA9IHRoaXMuZGF0YS5kYXRhO1xuXG4gICAgdGhpcy50cmFuc2xhdGUuZ2V0TGFuZ3VhZ2VTdWJqZWN0JC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xuICAgICAgaWYgKHJlcykge1xuICAgICAgICB0aGlzLkxBTkcgPSB0aGlzLnRyYW5zbGF0ZS5nZXRPYmplY3RMYW5nKHJlcyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLm5nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMubmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICB9XG5cbiAgZ2V0SW1hZ2VQYXRoKCkge1xuICAgIHJldHVybiB0aGlzLmRvbVNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmwodGhpcy5pbWFnZVByb2Nlc3MpIGFzIHN0cmluZztcbiAgfVxuXG4gIHJlbW92ZUl0ZW0oaW5kZXg6IG51bWJlcikge1xuICAgIHRoaXMudXBkYXRlRGF0YS5lbWl0KGluZGV4KTtcbiAgfVxuXG4gIG9uQ2xvc2VDbGljaygpOiB2b2lkIHtcblxuICB9XG5cbiAgb25JdGVtQ2xpY2soaXRlbTogYW55KTogdm9pZCB7XG4gICAgaWYgKHRoaXMub25JdGVtU2VsZWN0KVxuICAgICAgdGhpcy5vbkl0ZW1TZWxlY3QuZW1pdChpdGVtKTtcbiAgfVxuXG4gIG9uSXRlbUJyZWFkY3J1bWJDbGljayhldmVudDogYW55KSB7XG4gICAgaWYgKHRoaXMub25JdGVtU2VsZWN0KVxuICAgICAgdGhpcy5vbkl0ZW1TZWxlY3QuZW1pdChldmVudCk7XG4gIH1cblxuICBnZXRJdGVtU3RhdHVzKGl0ZW06IGFueSkge1xuICAgIHJldHVybiAodGhpcy5zaG93U3RhdHVzICYmIGl0ZW0/LnN0YXR1c05hbWUpID8gYCwgJHtpdGVtPy5zdGF0dXNOYW1lfWAgOiAnJztcbiAgfVxuXG4gIGdldE5vZGVJY29uKGl0ZW0pIHtcbiAgICBzd2l0Y2ggKGl0ZW0uaXRlbVR5cGUpIHtcbiAgICAgIGNhc2UgRGF0YVR5cGUuZm9sZGVyOiB7XG4gICAgICAgIHN3aXRjaCAoaXRlbS5sZXZlbFR5cGUpIHtcbiAgICAgICAgICBjYXNlIERvY3VtZW50Tm9kZVR5cGUuRGVwYXJ0bWVudEZvbGRlcjpcbiAgICAgICAgICAgIHJldHVybiAnZGVwYXJ0bWVudF9mb2xkZXJfb3V0bGluZWQnO1xuICAgICAgICAgIGNhc2UgRG9jdW1lbnROb2RlVHlwZS5SZWdpb25hbEZvbGRlcjpcbiAgICAgICAgICAgIHJldHVybiAncmVnaW9uYWxfZm9sZGVyX291dGxpbmVkJztcbiAgICAgICAgICBjYXNlIERvY3VtZW50Tm9kZVR5cGUuVG9wRm9sZGVyOlxuICAgICAgICAgICAgcmV0dXJuICdlbnRlcnByaXNlX2ZvbGRlcl9vdXRsaW5lZCc7XG4gICAgICAgICAgY2FzZSBEb2N1bWVudE5vZGVUeXBlLkZvbGRlcjpcbiAgICAgICAgICAgIHJldHVybiAnbG9jYWxfZm9sZGVyX291dGxpbmVkJztcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuICdmb2xkZXJfb3V0bGluZWQnO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjYXNlIERhdGFUeXBlLmRvY3VtZW50OiB7XG4gICAgICAgIHN3aXRjaCAoaXRlbS5sZXZlbFR5cGUpIHtcbiAgICAgICAgICBjYXNlIERvY3VtZW50Tm9kZVR5cGUuRGVwYXJ0bWVudEZvbGRlcjpcbiAgICAgICAgICAgIHJldHVybiAnZG9jdW1lbnRfZGVwYXJ0bWVudCc7XG4gICAgICAgICAgY2FzZSBEb2N1bWVudE5vZGVUeXBlLlJlZ2lvbmFsRm9sZGVyOlxuICAgICAgICAgICAgcmV0dXJuICdkb2N1bWVudF9yZWdpb25hbCc7XG4gICAgICAgICAgY2FzZSBEb2N1bWVudE5vZGVUeXBlLlRvcEZvbGRlcjpcbiAgICAgICAgICAgIHJldHVybiAnZG9jdW1lbnRfZW50ZXJwcmlzZSc7XG4gICAgICAgICAgY2FzZSBEb2N1bWVudE5vZGVUeXBlLkZvbGRlcjpcbiAgICAgICAgICAgIHJldHVybiAnZG9jdW1lbnRfbG9jYWwnO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gJ2RvY3VtZW50JztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY2FzZSBEYXRhVHlwZS5hcmVhOlxuICAgICAgICByZXR1cm4gJ3Byb2Nlc3NfYXJlYV9vdXRsaW5lZCc7XG4gICAgICBjYXNlIERhdGFUeXBlLnByb2Nlc3M6XG4gICAgICAgIHJldHVybiAncHJvY2Vzcyc7XG4gICAgICBjYXNlIERhdGFUeXBlLmRldmlhdGlvbjpcbiAgICAgICAgcmV0dXJuICdkZXZpYXRpb24nO1xuICAgICAgY2FzZSBEYXRhVHlwZS5jaGVja2xpc3Q6XG4gICAgICAgIHJldHVybiAnY2hlY2tsaXN0JztcbiAgICAgIGNhc2UgRGF0YVR5cGUucmlzazpcbiAgICAgICAgcmV0dXJuICdyaXNrJztcbiAgICAgIGNhc2UgRGF0YVR5cGUucHJvY2Vzc0ludGVyY29ubmVjdGVkOlxuICAgICAgICByZXR1cm4gJ3Byb2Nlc3NfaW50ZXJjb25uZWN0ZWQnO1xuICAgICAgY2FzZSBEYXRhVHlwZS5jb21wbGlhbmNlOlxuICAgICAgICByZXR1cm4gJ2NvbXBsaWFuY2UnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICdmb2xkZXJfb3V0bGluZWQnO1xuICAgIH1cbiAgfVxuXG4gIGNhblNob3dQYXJlbnQoaXRlbSkge1xuICAgIHJldHVybiBpdGVtLml0ZW1UeXBlID09PSB0aGlzLmRhdGFUeXBlLmRldmlhdGlvbiB8fCBpdGVtLml0ZW1UeXBlID09PSB0aGlzLmRhdGFUeXBlLmNoZWNrbGlzdDtcbiAgfVxufVxuIl19
|
148
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1yZWxhdGVkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Ftcy1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9yZWxhdGVkL2xpc3Qtb3RoZXItcmVsYXRlZC9saXN0LXJlbGF0ZWQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFVLEtBQUssRUFBcUIsTUFBTSxFQUFpQixpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwSSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBRXZFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQVEvRCxNQUFNLE9BQU8sb0JBQW9CO0lBZ0IvQixZQUNVLFlBQTBCLEVBQzNCLFNBQWtDLEVBQ2pDLFlBQTZCLEVBQzdCLGNBQXNDO1FBSHRDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzNCLGNBQVMsR0FBVCxTQUFTLENBQXlCO1FBQ2pDLGlCQUFZLEdBQVosWUFBWSxDQUFpQjtRQUM3QixtQkFBYyxHQUFkLGNBQWMsQ0FBd0I7UUFoQmhELGdCQUFXLEdBQW9CLEVBQUUsQ0FBQztRQUNsQyxhQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3BCLCtEQUEr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QUFzQjs7O21CQW9CNUIsS0FBSzt5QkFDTCxLQUFLO3lCQUNMLE1BQU07MkJBQ04sTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbmplY3QsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBNYXRJY29uUmVnaXN0cnkgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvblwiO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSBcIkBhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXJcIjtcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XG5pbXBvcnQgeyBUcmFuc2xhdGVMaWJyYXJ5U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3RyYW5zbGF0aW9uLXJlZ2lzdHJ5LnNlcnZpY2UnO1xuaW1wb3J0IHsgUU1TSWNvblJlZ2lzdHJ5U2VydmljZSB9IGZyb20gXCIuLi8uLi9hcHAtaWNvbi9pY29uLXJlZ2lzdHJ5LnNlcnZpY2VcIjtcbmltcG9ydCB7IERvY3VtZW50Tm9kZVR5cGUgfSBmcm9tIFwiLi4vY29tbW9uL2RvY3VtZW50LWZvbGRlci10eXBlLmVudW1cIjtcbmltcG9ydCB7IElSZWxhdGVkLCBSZWxhdGVkRGF0YSB9IGZyb20gXCIuLi9tb2RlbC9yZWxhdGVkLWRhdGEubW9kZWxcIjtcbmltcG9ydCB7IERhdGFUeXBlIH0gZnJvbSBcIi4uLy4uLy4uL2NvbW1vbi9lbnVtL2RhdGEtdHlwZS5lbnVtXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3Ftcy1yZWxhdGVkLWxpc3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vbGlzdC1yZWxhdGVkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbGlzdC1yZWxhdGVkLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgUmVsYXRlZExpc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIExBTkc6IGFueTtcbiAgdGl0bGU6IHN0cmluZztcbiAgaXNOb3RFZGl0ZWRJdGVtOiBib29sZWFuO1xuICByZWxhdGVkRGF0YTogQXJyYXk8SVJlbGF0ZWQ+ID0gW107XG4gIGRhdGFUeXBlID0gRGF0YVR5cGU7XG4gIC8vIGltYWdlUHJvY2VzcyA9ICcuLi9xbXMtYW5ndWxhci9zcmMvYXNzZXRzL2ltYWdlcy91bmlvbi5zdmcnO1xuICBpbWFnZVByb2Nlc3MgPSAnZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlCM2FXUjBhRDBpTVRnaUlHaGxhV2RvZEQwaU1Ua2lJSFpwWlhkQ2IzZzlJakFnTUNBeE9DQXhPU0lnWm1sc2JEMGlibTl1WlNJZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWo0TkNqeHdZWFJvSUdacGJHd3RjblZzWlQwaVpYWmxibTlrWkNJZ1kyeHBjQzF5ZFd4bFBTSmxkbVZ1YjJSa0lpQmtQU0pOTUNBd0xqVldOaTQxU0RKV01UWXVOVWd4TWxZeE9DNDFTREU0VmpFeUxqVklNVEpXTVRRdU5VZzBWall1TlVnMlZqUXVOVWd4TWxZMkxqVklNVGhXTUM0MVNERXlWakl1TlVnMlZqQXVOVWd3V2swMElESXVOVlkwTGpWSU1sWXlMalZJTkZwTk1UWWdNaTQxVmpRdU5VZ3hORll5TGpWSU1UWmFUVEUySURFMkxqVldNVFF1TlVneE5GWXhOaTQxU0RFMldpSWdabWxzYkQwaVlteGhZMnNpSUdacGJHd3RiM0JoWTJsMGVUMGlNQzQySWk4K0RRbzhMM04yWno0TkNnPT0nO1xuXG4gIEBJbnB1dCgpIGRhdGE6IFJlbGF0ZWREYXRhO1xuICBASW5wdXQoKSBzaG93U3RhdHVzOiBib29sZWFuO1xuICBAT3V0cHV0KCkgdXBkYXRlRGF0YTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIG9uSXRlbVNlbGVjdDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGRvbVNhbml0aXplcjogRG9tU2FuaXRpemVyLFxuICAgIHB1YmxpYyB0cmFuc2xhdGU6IFRyYW5zbGF0ZUxpYnJhcnlTZXJ2aWNlLFxuICAgIHByaXZhdGUgaWNvblJlZ2lzdHJ5OiBNYXRJY29uUmVnaXN0cnksXG4gICAgcHJpdmF0ZSBhcHBJY29uU2VydmljZTogUU1TSWNvblJlZ2lzdHJ5U2VydmljZVxuICApIHtcbiAgICBhcHBJY29uU2VydmljZS5yZWdpc3RlclByb2Nlc3NJY29uKGljb25SZWdpc3RyeSwgZG9tU2FuaXRpemVyKTtcbiAgICBhcHBJY29uU2VydmljZS5yZWdpc3RlclByb2Nlc3NBcmVhSWNvbihpY29uUmVnaXN0cnksIGRvbVNhbml0aXplcik7XG4gICAgYXBwSWNvblNlcnZpY2UucmVnaXN0ZXJEb2N1bWVudEljb24oaWNvblJlZ2lzdHJ5LCBkb21TYW5pdGl6ZXIpO1xuICAgIGFwcEljb25TZXJ2aWNlLnJlZ2lzdGVyRm9sZGVySWNvbihpY29uUmVnaXN0cnksIGRvbVNhbml0aXplcik7XG4gICAgYXBwSWNvblNlcnZpY2UucmVnaXN0ZXJEZXZpYXRpb25JY29uKGljb25SZWdpc3RyeSwgZG9tU2FuaXRpemVyKTtcbiAgICBhcHBJY29uU2VydmljZS5yZWdpc3RlckNoZWNrbGlzdEljb24oaWNvblJlZ2lzdHJ5LCBkb21TYW5pdGl6ZXIpO1xuICAgIGFwcEljb25TZXJ2aWNlLnJlZ2lzdGVyUmlza0ljb24oaWNvblJlZ2lzdHJ5LCBkb21TYW5pdGl6ZXIpO1xuICAgIGFwcEljb25TZXJ2aWNlLnJlZ2lzdGVyUHJvY2Vzc0ludGVyY29ubmVjdGVkSWNvbihpY29uUmVnaXN0cnksIGRvbVNhbml0aXplcik7XG4gICAgYXBwSWNvblNlcnZpY2UucmVnaXN0ZXJDb21wbGlhbmNlSWNvbihpY29uUmVnaXN0cnksIGRvbVNhbml0aXplcik7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXMuZGF0YSAmJiBKU09OLnN0cmluZ2lmeShjaGFuZ2VzLmRhdGEuY3VycmVudFZhbHVlKSAhPT0gSlNPTi5zdHJpbmdpZnkoY2hhbmdlcy5kYXRhLnByZXZpb3VzVmFsdWUpKSB7XG4gICAgICB0aGlzLnJlbGF0ZWREYXRhID0gW107XG4gICAgICB0aGlzLnRpdGxlID0gY2hhbmdlcy5kYXRhLmN1cnJlbnRWYWx1ZS50aXRsZTtcbiAgICAgIHRoaXMuaXNOb3RFZGl0ZWRJdGVtID0gY2hhbmdlcy5kYXRhLmN1cnJlbnRWYWx1ZVsnaXNOb3RFZGl0ZWRJdGVtJ10gPz8gZmFsc2U7XG4gICAgICB0aGlzLnJlbGF0ZWREYXRhID0gWy4uLmNoYW5nZXMuZGF0YS5jdXJyZW50VmFsdWUuZGF0YV07XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy50aXRsZSA9IHRoaXMuZGF0YS50aXRsZTtcbiAgICB0aGlzLmlzTm90RWRpdGVkSXRlbSA9IHRoaXMuZGF0YVsnaXNOb3RFZGl0ZWRJdGVtJ10gPz8gZmFsc2U7XG4gICAgdGhpcy5yZWxhdGVkRGF0YSA9IHRoaXMuZGF0YS5kYXRhO1xuXG4gICAgdGhpcy50cmFuc2xhdGUuZ2V0TGFuZ3VhZ2VTdWJqZWN0JC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xuICAgICAgaWYgKHJlcykge1xuICAgICAgICB0aGlzLkxBTkcgPSB0aGlzLnRyYW5zbGF0ZS5nZXRPYmplY3RMYW5nKHJlcyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLm5nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMubmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICB9XG5cbiAgZ2V0SW1hZ2VQYXRoKCkge1xuICAgIHJldHVybiB0aGlzLmRvbVNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmwodGhpcy5pbWFnZVByb2Nlc3MpIGFzIHN0cmluZztcbiAgfVxuXG4gIHJlbW92ZUl0ZW0oaW5kZXg6IG51bWJlcikge1xuICAgIHRoaXMudXBkYXRlRGF0YS5lbWl0KGluZGV4KTtcbiAgfVxuXG4gIG9uQ2xvc2VDbGljaygpOiB2b2lkIHtcblxuICB9XG5cbiAgb25JdGVtQ2xpY2soaXRlbTogYW55KTogdm9pZCB7XG4gICAgaWYgKHRoaXMub25JdGVtU2VsZWN0KVxuICAgICAgdGhpcy5vbkl0ZW1TZWxlY3QuZW1pdChpdGVtKTtcbiAgfVxuXG4gIG9uSXRlbUJyZWFkY3J1bWJDbGljayhldmVudDogYW55KSB7XG4gICAgaWYgKHRoaXMub25JdGVtU2VsZWN0KVxuICAgICAgdGhpcy5vbkl0ZW1TZWxlY3QuZW1pdChldmVudCk7XG4gIH1cblxuICBnZXRJdGVtU3RhdHVzKGl0ZW06IGFueSkge1xuICAgIHJldHVybiAodGhpcy5zaG93U3RhdHVzICYmIGl0ZW0/LnN0YXR1c05hbWUpID8gYCwgJHtpdGVtPy5zdGF0dXNOYW1lfWAgOiAnJztcbiAgfVxuXG4gIGdldE5vZGVJY29uKGl0ZW0pIHtcbiAgICBzd2l0Y2ggKGl0ZW0uaXRlbVR5cGUpIHtcbiAgICAgIGNhc2UgRGF0YVR5cGUuZm9sZGVyOiB7XG4gICAgICAgIHN3aXRjaCAoaXRlbS5sZXZlbFR5cGUpIHtcbiAgICAgICAgICBjYXNlIERvY3VtZW50Tm9kZVR5cGUuRGVwYXJ0bWVudEZvbGRlcjpcbiAgICAgICAgICAgIHJldHVybiAnZGVwYXJ0bWVudF9mb2xkZXJfb3V0bGluZWQnO1xuICAgICAgICAgIGNhc2UgRG9jdW1lbnROb2RlVHlwZS5SZWdpb25hbEZvbGRlcjpcbiAgICAgICAgICAgIHJldHVybiAncmVnaW9uYWxfZm9sZGVyX291dGxpbmVkJztcbiAgICAgICAgICBjYXNlIERvY3VtZW50Tm9kZVR5cGUuVG9wRm9sZGVyOlxuICAgICAgICAgICAgcmV0dXJuICdlbnRlcnByaXNlX2ZvbGRlcl9vdXRsaW5lZCc7XG4gICAgICAgICAgY2FzZSBEb2N1bWVudE5vZGVUeXBlLkZvbGRlcjpcbiAgICAgICAgICAgIHJldHVybiAnbG9jYWxfZm9sZGVyX291dGxpbmVkJztcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuICdmb2xkZXJfb3V0bGluZWQnO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjYXNlIERhdGFUeXBlLmRvY3VtZW50OiB7XG4gICAgICAgIHN3aXRjaCAoaXRlbS5sZXZlbFR5cGUpIHtcbiAgICAgICAgICBjYXNlIERvY3VtZW50Tm9kZVR5cGUuRGVwYXJ0bWVudEZvbGRlcjpcbiAgICAgICAgICAgIHJldHVybiAnZG9jdW1lbnRfZGVwYXJ0bWVudCc7XG4gICAgICAgICAgY2FzZSBEb2N1bWVudE5vZGVUeXBlLlJlZ2lvbmFsRm9sZGVyOlxuICAgICAgICAgICAgcmV0dXJuICdkb2N1bWVudF9yZWdpb25hbCc7XG4gICAgICAgICAgY2FzZSBEb2N1bWVudE5vZGVUeXBlLlRvcEZvbGRlcjpcbiAgICAgICAgICAgIHJldHVybiAnZG9jdW1lbnRfZW50ZXJwcmlzZSc7XG4gICAgICAgICAgY2FzZSBEb2N1bWVudE5vZGVUeXBlLkZvbGRlcjpcbiAgICAgICAgICAgIHJldHVybiAnZG9jdW1lbnRfbG9jYWwnO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gJ2RvY3VtZW50JztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY2FzZSBEYXRhVHlwZS5hcmVhOlxuICAgICAgICByZXR1cm4gJ3Byb2Nlc3NfYXJlYV9vdXRsaW5lZCc7XG4gICAgICBjYXNlIERhdGFUeXBlLnByb2Nlc3M6XG4gICAgICAgIHJldHVybiAncHJvY2Vzcyc7XG4gICAgICBjYXNlIERhdGFUeXBlLmRldmlhdGlvbjpcbiAgICAgICAgcmV0dXJuICdkZXZpYXRpb24nO1xuICAgICAgY2FzZSBEYXRhVHlwZS5jaGVja2xpc3Q6XG4gICAgICAgIHJldHVybiAnY2hlY2tsaXN0JztcbiAgICAgIGNhc2UgRGF0YVR5cGUucmlzazpcbiAgICAgICAgcmV0dXJuICdyaXNrJztcbiAgICAgIGNhc2UgRGF0YVR5cGUucHJvY2Vzc0ludGVyY29ubmVjdGVkOlxuICAgICAgICByZXR1cm4gJ3Byb2Nlc3NfaW50ZXJjb25uZWN0ZWQnO1xuICAgICAgY2FzZSBEYXRhVHlwZS5jb21wbGlhbmNlOlxuICAgICAgICByZXR1cm4gJ2NvbXBsaWFuY2UnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICdmb2xkZXJfb3V0bGluZWQnO1xuICAgIH1cbiAgfVxuXG4gIGNhblNob3dQYXJlbnQoaXRlbSkge1xuICAgIHJldHVybiBpdGVtLml0ZW1UeXBlID09PSB0aGlzLmRhdGFUeXBlLmRldmlhdGlvbiB8fCBpdGVtLml0ZW1UeXBlID09PSB0aGlzLmRhdGFUeXBlLmNoZWNrbGlzdDtcbiAgfVxufVxuIl19
|
@@ -17,6 +17,7 @@ export class QMSSelectAccessDialog {
|
|
17
17
|
this.formatTooltip = null;
|
18
18
|
this.formatMsgDisable = null;
|
19
19
|
this.maxWidthNode = 510;
|
20
|
+
this.skipFirstAskingScreen = false;
|
20
21
|
}
|
21
22
|
}
|
22
|
-
//# sourceMappingURL=data:application/json;base64,
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWFjY2Vzcy1jb25maWcubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9xbXMtYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvc2VsZWN0LWFjY2Vzcy1kaWFsb2cvbW9kZWwvc2VsZWN0LWFjY2Vzcy1jb25maWcubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUErQiw2QkFBNkIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzFHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRTNELE1BQU0sT0FBTyxxQkFBcUI7SUFrQmhDO1FBQ0UsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQztRQUMvQixJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUM7UUFDbkMsSUFBSSxDQUFDLHVCQUF1QixHQUFHLEtBQUssQ0FBQztRQUNyQyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsS0FBSyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxLQUFLLENBQUM7UUFDcEMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLG1CQUFtQixFQUFFLENBQUM7UUFDdEMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksNkJBQTZCLEVBQUUsQ0FBQztRQUNoRSxJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsUUFBUSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxLQUFLLENBQUM7UUFDakMsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7UUFDMUIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztRQUM3QixJQUFJLENBQUMsWUFBWSxHQUFHLEdBQUcsQ0FBQztRQUN4QixJQUFJLENBQUMscUJBQXFCLEdBQUcsS0FBSyxDQUFBO0lBQ3BDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1vZGVEZXBhcnRtZW50VHJlZWVWaWV3RW51bSwgUU1TU2VsZWN0RGVwYXJ0bWVudFRyZWVDb25maWcgfSBmcm9tIFwiLi4vLi4vc2VsZWN0LWRlcGFydG1lbnQtdHJlZVwiO1xyXG5pbXBvcnQgeyBRTVNTZWxlY3RBY2Nlc3NEYXRhIH0gZnJvbSBcIi4vc2VsZWN0LWFjY2Vzcy1kYXRhXCI7XHJcblxyXG5leHBvcnQgY2xhc3MgUU1TU2VsZWN0QWNjZXNzRGlhbG9nIHtcclxuICBlbmFibGVTZWxlY3RQZXJzb246IGJvb2xlYW47XHJcbiAgZW5hYmxlU2VsZWN0VXNlckdyb3VwOiBib29sZWFuO1xyXG4gIGVuYWJsZVNlbGVjdERlcGFydG1lbnQ6IGJvb2xlYW47XHJcbiAgbW9kZVNlbGVjdE9uZVBlcnNvbjogYm9vbGVhbjtcclxuICBtb2RlU2VsZWN0T25lRGVwYXJ0bWVudDogYm9vbGVhbjtcclxuICBtb2RlU2VsZWN0T25lVXNlckdyb3VwOiBib29sZWFuO1xyXG4gIHRpdGxlRGlhbG9nOiBzdHJpbmc7XHJcbiAgdGl0bGVSZXN1bHQ6IHN0cmluZztcclxuICBkYXRhOiBRTVNTZWxlY3RBY2Nlc3NEYXRhO1xyXG4gIHNpemVVcGRhdGVEZWZhdWx0OiBzdHJpbmc7XHJcbiAgdHJlZURlcGFydG1lbnRDb25maWc6IFFNU1NlbGVjdERlcGFydG1lbnRUcmVlQ29uZmlnO1xyXG4gIGRpc2FibGVTZWxlY3RlZExpc3Q6IGJvb2xlYW47XHJcbiAgZm9ybWF0VG9vbHRpcD8oaXRlbSk6IHN0cmluZztcclxuICBmb3JtYXRNc2dEaXNhYmxlPyhpdGVtOiBhbnkpOiBzdHJpbmc7XHJcbiAgbWF4V2lkdGhOb2RlPzogbnVtYmVyO1xyXG4gIHNraXBGaXJzdEFza2luZ1NjcmVlbj86IGJvb2xlYW47XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgdGhpcy5lbmFibGVTZWxlY3RQZXJzb24gPSB0cnVlO1xyXG4gICAgdGhpcy5lbmFibGVTZWxlY3RVc2VyR3JvdXAgPSB0cnVlO1xyXG4gICAgdGhpcy5lbmFibGVTZWxlY3REZXBhcnRtZW50ID0gdHJ1ZTtcclxuICAgIHRoaXMubW9kZVNlbGVjdE9uZURlcGFydG1lbnQgPSBmYWxzZTtcclxuICAgIHRoaXMubW9kZVNlbGVjdE9uZVBlcnNvbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5tb2RlU2VsZWN0T25lVXNlckdyb3VwID0gZmFsc2U7XHJcbiAgICB0aGlzLmRhdGEgPSBuZXcgUU1TU2VsZWN0QWNjZXNzRGF0YSgpO1xyXG4gICAgdGhpcy50cmVlRGVwYXJ0bWVudENvbmZpZyA9IG5ldyBRTVNTZWxlY3REZXBhcnRtZW50VHJlZUNvbmZpZygpO1xyXG4gICAgdGhpcy50aXRsZURpYWxvZyA9ICcnO1xyXG4gICAgdGhpcy50aXRsZVJlc3VsdCA9ICcnO1xyXG4gICAgdGhpcy5zaXplVXBkYXRlRGVmYXVsdCA9ICcxMDI0cHgnO1xyXG4gICAgdGhpcy5kaXNhYmxlU2VsZWN0ZWRMaXN0ID0gZmFsc2U7XHJcbiAgICB0aGlzLmZvcm1hdFRvb2x0aXAgPSBudWxsO1xyXG4gICAgdGhpcy5mb3JtYXRNc2dEaXNhYmxlID0gbnVsbDtcclxuICAgIHRoaXMubWF4V2lkdGhOb2RlID0gNTEwO1xyXG4gICAgdGhpcy5za2lwRmlyc3RBc2tpbmdTY3JlZW4gPSBmYWxzZVxyXG4gIH1cclxufVxyXG4iXX0=
|
@@ -162,11 +162,14 @@ export class QMSSelectAccessDialogComponent {
|
|
162
162
|
}
|
163
163
|
};
|
164
164
|
for (let item in this.dialogData) {
|
165
|
-
if (!!this.dialogData[item] && optionObj[item]) {
|
165
|
+
if (!!this.dialogData[item] && optionObj[item] && !this.dialogData.skipFirstAskingScreen) {
|
166
|
+
this.options.push(optionObj[item]);
|
167
|
+
}
|
168
|
+
if (this.dialogData.skipFirstAskingScreen && optionObj[item]) {
|
166
169
|
this.options.push(optionObj[item]);
|
167
170
|
}
|
168
171
|
}
|
169
|
-
if (this.options.length === 1) {
|
172
|
+
if (this.options.length === 1 || this.dialogData.skipFirstAskingScreen) {
|
170
173
|
this.dialogRef.updateSize(this.dialogData.sizeUpdateDefault);
|
171
174
|
this.optionSelect.setValue(this.options[0].type);
|
172
175
|
const event$ = new MatSelectChange(null, this.options[0].type);
|
@@ -563,7 +566,7 @@ export class QMSSelectAccessDialogComponent {
|
|
563
566
|
QMSSelectAccessDialogComponent.decorators = [
|
564
567
|
{ type: Component, args: [{
|
565
568
|
selector: 'qms-select-access-dialog',
|
566
|
-
template: "<div qms-dialog-container-v2 class=\"select-access-dialog-container\">\n <div qms-dialog-header>\n <div class=\"access-dialog-header mb-2\">\n <span class=\"header-title\">{{dialogData.titleDialog || LANG.SELECT_ACCESS}}</span>\n <button matDialogClose class=\"btn-close-dialog\" qms-btn-icon color=\"light\">\n <mat-icon class=\"mat-icons-outlined\">close</mat-icon>\n </button>\n </div>\n </div>\n <div [class.active]=\"optionSelect.value !== null\" qms-dialog-content class=\"qms-dialog-content\">\n <div class=\"access-dialog-wraper\">\n <mat-form-field *ngIf=\"options.length > 1\" qms-form qms-select-input class=\"field-select-option w-100\"\n appearance=\"fill\">\n <mat-label qms-select-input>{{LANG.TYPE}}</mat-label>\n <mat-select (selectionChange)=\"onSelectionTypeChange($event)\" [formControl]=\"optionSelect\" placeholder=\"Select\"\n disableOptionCentering #singleSelect panelClass=\"qms-select-panel\" qms-select>\n\n <mat-option *ngFor=\"let item of options\" [value]=\"item.type\">\n {{ LANG[item.displayName] }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n <div class=\"body-dialog-container\">\n <!-- Person Access -->\n <div class=\"option-selected-content\">\n <ng-container *ngIf=\"optionSelect.value === OPTION_ENUM.PERSON\">\n <form *ngIf=\"personForm\" [formGroup]=\"personForm\">\n <mat-dialog-content>\n <div class=\"group-filter-person-option\">\n <mat-form-field *ngIf=\"optionFilterPersonDataGlobal.userGroups.length\" qms-form qms-select-input\n class=\"w-100\" appearance=\"fill\">\n <mat-label qms-select-input>{{LANG.ROLE}}</mat-label>\n <mat-select panelClass=\"qms-select-panel\" qms-select formControlName=\"userGroup\"\n disableOptionCentering>\n <mat-select-trigger>\n {{personForm.controls['userGroup'].value?.name || ''}}\n </mat-select-trigger>\n <mat-option>\n <ngx-mat-select-search formControlName=\"userGroupFilter\" placeholderLabel=\"{{ LANG.ROLE }}\"\n noEntriesFoundLabel=\"\">\n </ngx-mat-select-search>\n </mat-option>\n <mat-option mode=\"dark\" class=\"opt-check-icon\"\n *ngFor=\"let item of filteredSearchTextBox.userGroup.value\" [value]=\"item\">\n <span qms-elipsify position=\"top\" mode=\"dark\" class=\"text-option-content\">{{ item.name }}</span>\n <mat-icon class=\"check-icon\"\n *ngIf=\"personForm.controls['userGroup'].value?.id == item.id\">check</mat-icon>\n </mat-option>\n </mat-select>\n <span [@inOutAnimation] (click)=\"personForm.get('userGroup').setValue('')\" class=\"pointer \"\n matSuffix aria-label=\"Clear\" *ngIf=\"personForm.get('userGroup').value && !getLoading$.value\">\n <mat-icon>close</mat-icon>\n </span>\n </mat-form-field>\n <!-- input field department filter person -->\n <mat-form-field *ngIf=\"optionFilterPersonDataGlobal.departments.length\"\n class=\"w-100 input-select-option\" qms-form qms-select-input>\n <mat-label>{{LANG.DEPARTMENT_UNIT}}</mat-label>\n <mat-select panelClass=\"qms-select-panel\" qms-select disableOptionCentering\n formControlName=\"department\">\n <mat-select-trigger>\n {{personForm.controls['department'].value?.name || ''}}\n </mat-select-trigger>\n <mat-option>\n <ngx-mat-select-search formControlName=\"departmentFilter\"\n [placeholderLabel]=\"LANG.DEPARTMENT_UNIT\" noEntriesFoundLabel=\"\">\n </ngx-mat-select-search>\n </mat-option>\n <mat-option class=\"opt-check-icon\" *ngFor=\"let item of filteredSearchTextBox.department.value\"\n [value]=\"item\">\n <span qms-elipsify mode=\"dark\" position=\"top\" class=\"text-option-content\">{{ item.name }}</span>\n <mat-icon class=\"check-icon\"\n *ngIf=\"personForm.controls['department'].value?.id == item.id\">check</mat-icon>\n </mat-option>\n </mat-select>\n <span (click)=\"setFormControlValue(['recursive','department'], [false,''])\" [@inOutAnimation]\n class=\"pointer\" matSuffix aria-label=\"Clear\"\n *ngIf=\"personForm.get('department').value && !getLoading$.value\">\n <mat-icon>close</mat-icon>\n </span>\n </mat-form-field>\n </div>\n\n <mat-slide-toggle [@inOutAnimation] *ngIf=\"personForm.controls['department'].value\"\n class=\"w-100 slide-toggle\" formControlName=\"recursive\" color=\"default\" qms-group-options>\n <span class=\"text-label\">{{LANG.INCLUDE_SUB_DEPARTMENTS}}</span>\n </mat-slide-toggle>\n\n <mat-form-field class=\"w-100\" appearance=\"fill\" qms-form qms-search-field>\n <input matInput appearance=\"off\" [placeholder]=\"LANG.SEARCH_WITH_NAME\" formControlName=\"keyword\"\n type=\"text\" autocomplete=\"off\" />\n <button *ngIf=\"!getLoading$.value\" qms-btn-icon color=\"light\" [@inOutAnimation]\n (click)=\"onSearchPersonFreeText()\" class=\"pointer me-1\" matSuffix aria-label=\"Search\">\n <mat-icon>search</mat-icon>\n </button>\n <mat-progress-spinner [@inOutAnimation] *ngIf=\"getLoading$.value\" matSuffix mode=\"indeterminate\"\n diameter=\"20\"></mat-progress-spinner>\n <span [@inOutAnimation] (click)=\"personForm.get('keyword').setValue('')\"\n class=\"pointer btn-icon-clear d-flex justify-content-center align-items-center \" matSuffix\n aria-label=\"Clear\" *ngIf=\"personForm.get('keyword').value && !getLoading$.value\">\n <button qms-btn-icon color=\"light\">\n <mat-icon>close</mat-icon>\n </button>\n </span>\n </mat-form-field>\n <button (click)=\"onFilterPerson()\" qms-btn-outlined class=\"w-100 my-1\">\n {{LANG.FILTER}}\n </button>\n </mat-dialog-content>\n\n <mat-dialog-content class=\"items-list\">\n <div qms-scrollbar>\n <div class=\"item\">\n <mat-checkbox [@inOutAnimation]\n *ngIf=\"!getLoading$.value && personFiltered.length && !dialogData.modeSelectOnePerson\"\n [disabled]=\"isDisabledSelectAll(OPTION_ENUM.PERSON)\" #checkPerson class=\"w-100 mb-1 checkbox-all\"\n (click)=\"personFiltered.length && onCheckAll(OPTION_ENUM.PERSON,checkPerson)\"\n [checked]=\"isCheckAll(OPTION_ENUM.PERSON)\" [indeterminate]=\"isIndeterminate(OPTION_ENUM.PERSON)\"\n color=\"default\" qms-group-options>\n <span class=\"text-label header-title\">{{LANG.CHOOSE_ALL}} </span>\n <span>(<b>{{personFiltered.length}}</b>)</span>\n </mat-checkbox>\n </div>\n <mat-divider class=\"mx-auto\"></mat-divider>\n <ng-container *ngIf=\"getLoading$.value; then loading\">\n </ng-container>\n <div [@inOutAnimation] *ngIf=\"personFiltered.length && !getLoading$.value\" [@listAnimation]\n class=\"item-list-wrapper\">\n <div class=\"item mt-1\" [@inOutAnimation]\n *ngFor=\"let employee of personFiltered; trackBy: trackByFn\">\n <ng-container\n [ngTemplateOutlet]=\"dialogData.modeSelectOnePerson ?itemWithoutCheckboxTemplate : itemCheckboxTemplate\"\n [ngTemplateOutletContext]=\"{item: employee, type: OPTION_ENUM.PERSON}\">\n </ng-container>\n </div>\n </div>\n <div [@inOutAnimation] *ngIf=\"!personFiltered.length && !getLoading$.value\"\n class=\"item-list-wrapper no-result\">\n <ng-container *ngTemplateOutlet=\"noResult\"></ng-container>\n </div>\n <mat-divider class=\"mx-auto\"></mat-divider>\n <qms-paginator overlayPanelClass=\"select-access-paginator\" #pagingPerson\n *ngIf=\"getPerson$.value.length > 10\" [length]=\"getPerson$.value.length\" [numHidden]=\"0\"\n [pageSize]=\"getPerson$.value.pageSize\" [pageSizeOptions]=\"PAGE_SIZE_OPTION\"\n (page)='onPaginatorEvent($event, OPTION_ENUM.PERSON)' [size]='PAGINATION_SIZE.medium'>\n </qms-paginator>\n </div>\n </mat-dialog-content>\n </form>\n </ng-container>\n\n <!-- UserGroup Access -->\n <ng-container *ngIf=\"optionSelect.value === OPTION_ENUM.USER_GROUP\">\n <div>\n <mat-dialog-content>\n <form (submit)=\"onFilterUserGroup()\">\n <mat-form-field class=\"w-100\" qms-form qms-search-field>\n <input [formControl]=\"userGroupForm\" matInput type=\"text\" autocomplete=\"off\"\n placeholder=\"User group\" />\n <button [@inOutAnimation] *ngIf=\"!getLoading$.value\" type=\"submit\" qms-btn-icon color=\"light\"\n matSuffix>\n <mat-icon>search</mat-icon>\n </button>\n <mat-progress-spinner [@inOutAnimation] *ngIf=\"getLoading$.value\" matSuffix mode=\"indeterminate\"\n diameter=\"20\"></mat-progress-spinner>\n <div [@inOutAnimation] *ngIf=\"!!userGroupForm.value && !getLoading$.value\" matSuffix\n qms-input-clear>\n <button (click)=\"userGroupForm.setValue('')\" qms-btn-icon color=\"light\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n </mat-form-field>\n </form>\n </mat-dialog-content>\n <mat-dialog-content class=\"items-list\">\n <div qms-scrollbar>\n <div class=\"item\">\n <mat-checkbox [@inOutAnimation]\n *ngIf=\"!getLoading$.value && (userGroupFiltered.length && !dialogData.modeSelectOneUserGroup)\"\n [disabled]=\"isDisabledSelectAll(OPTION_ENUM.USER_GROUP)\" #checkUserGroup\n class=\"w-100 checkbox-all mb-1\" color=\"default\" [checked]=\"isCheckAll(OPTION_ENUM.USER_GROUP)\"\n [indeterminate]=\"isIndeterminate(OPTION_ENUM.USER_GROUP)\"\n (click)=\"userGroupFiltered.length && onCheckAll(OPTION_ENUM.USER_GROUP,checkUserGroup)\"\n qms-group-options>\n <span class=\"text-label header-title\">{{LANG.CHOOSE_ALL}}</span>\n <span>(<b>{{userGroupFiltered.length}}</b>)</span>\n </mat-checkbox>\n </div>\n <mat-divider class=\"mx-auto\"></mat-divider>\n <ng-container *ngIf=\"getLoading$.value;then loading\">\n </ng-container>\n <div *ngIf=\"userGroupFiltered.length && !getLoading$.value\" [@listAnimation]\n class=\"item-list-wrapper\">\n <div [@inOutAnimation] class=\"item mt-1\" *ngFor=\"let userGroup of userGroupFiltered\">\n <ng-container\n [ngTemplateOutlet]=\"dialogData.modeSelectOneUserGroup ? itemWithoutCheckboxTemplate : itemCheckboxTemplate\"\n [ngTemplateOutletContext]=\"{item: userGroup,type: OPTION_ENUM.USER_GROUP}\">\n </ng-container>\n </div>\n </div>\n <div [@inOutAnimation] *ngIf=\"!userGroupFiltered.length && !getLoading$.value\"\n class=\"item-list-wrapper no-result\">\n <ng-container *ngTemplateOutlet=\"noResult\"></ng-container>\n </div>\n <mat-divider class=\"mx-auto\"></mat-divider>\n <qms-paginator overlayPanelClass=\"select-access-paginator\" #pagingUserGroup class=\"my-1\"\n *ngIf=\"getUserGroup$.value.length > 10 \" [length]=\"getUserGroup$.value.length\" [numHidden]=\"0\"\n [pageSize]=\"getUserGroup$.value.pageSize\" [pageSizeOptions]=\"PAGE_SIZE_OPTION\"\n (page)='onPaginatorEvent($event, OPTION_ENUM.USER_GROUP)' [size]='PAGINATION_SIZE.medium'>\n </qms-paginator>\n </div>\n </mat-dialog-content>\n </div>\n </ng-container>\n\n <!-- Department Access -->\n <ng-container\n *ngIf=\"optionSelect.value === OPTION_ENUM.DEPARTMENT && getLoading$.value; then loading\"></ng-container>\n <ng-container *ngIf=\"optionSelect.value === OPTION_ENUM.DEPARTMENT && !getLoading$.value\"\n class=\"person-access\">\n <qms-select-department-tree #tree [rowsSkeleton]=\"8\" [config]=\"dialogData.treeDepartmentConfig\"\n [maxWidthNode]=\"dialogData.maxWidthNode\" (onSearchEvent)=\"onSearchDepartmentEvent.emit($event)\"\n (onValueChangeEvent)=\"onResultDepartmentChange($event)\"\n (selectionNodeChangeEvent)=\"onSelectionNodeDepartmentChange($event)\"\n (onPagingSearchEvent)=\"onPaginatorEvent($event, OPTION_ENUM.DEPARTMENT)\">\n </qms-select-department-tree>\n </ng-container>\n </div>\n </div>\n </div>\n\n <div *ngIf=\"optionSelect.value !== null\" class=\"result-wrapper\">\n <div class=\"result-selected-container\">\n <div [@inOutAnimation] *ngIf=\"(options.length === 1) || (options.length > 1 && optionSelect.value !== null)\"\n class=\"header-title result-header\">\n <span>\n {{\n dialogData.titleResult || LANG.RESULTS}}\n <span *ngIf=\"options.length === 1 && hasItemSelected()\">\n ({{getResultTabActive().length}})\n </span>\n </span>\n </div>\n <div class=\"result-body\">\n <!-- Result Person -->\n <ng-container *ngIf=\"checkExistOptionSelect(OPTION_ENUM.PERSON)\"\n [ngTemplateOutlet]=\"options?.length == 1 ? listChip : viewResultCollapse\"\n [ngTemplateOutletContext]=\"{data:resultAccess.persons, type:OPTION_ENUM.PERSON, title:LANG.PERSON}\">\n </ng-container>\n <!-- Result User group -->\n <ng-container *ngIf=\"checkExistOptionSelect(OPTION_ENUM.USER_GROUP)\"\n [ngTemplateOutlet]=\"options?.length == 1 ? listChip : viewResultCollapse\"\n [ngTemplateOutletContext]=\"{data:resultAccess.userGroups, type:OPTION_ENUM.USER_GROUP, title:LANG.USER_GROUP}\">\n </ng-container>\n <!-- Result Department -->\n <ng-container *ngIf=\"checkExistOptionSelect(OPTION_ENUM.DEPARTMENT)\"\n [ngTemplateOutlet]=\"options?.length == 1 ? listChip : viewResultCollapse\"\n [ngTemplateOutletContext]=\"{data: resultAccess.departments, type:OPTION_ENUM.DEPARTMENT, title:LANG.DEPARTMENT}\">\n </ng-container>\n </div>\n </div>\n </div>\n </div>\n <mat-divider class=\"mx-auto\"></mat-divider>\n <div qms-dialog-footer class=\"confirm__button__groups\" [class.none-option]=\"optionSelect.value === null\">\n <button *ngIf=\"optionSelect.value !== null\" [disabled]=\"!hasItemSelected()\" class=\"btn-add\"\n [class.qms-btn-disabled]=\"!hasItemSelected()\" [mat-dialog-close]=\"resultAccess\" qms-btn>\n <span>{{LANG.ADD}}</span>\n </button>\n <button qms-btn-text mat-dialog-close>\n {{LANG.CANCEL}}\n </button>\n </div>\n</div>\n\n<!-- Template -->\n<ng-template #noResult>\n <svg width=\"89\" height=\"130\" viewBox=\"0 0 89 88\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect x=\"0.5\" width=\"88\" height=\"88\" rx=\"44\" fill=\"white\" />\n <rect x=\"0.5\" width=\"88\" height=\"88\" rx=\"44\" fill=\"#0163B2\" fill-opacity=\"0.12\" />\n <path\n d=\"M44.5 56.6936L58.096 64.8996L54.488 49.4336L66.5 39.0276L50.682 37.6856L44.5 23.0996L38.318 37.6856L22.5 39.0276L34.512 49.4336L30.904 64.8996L44.5 56.6936Z\"\n fill=\"#0163B3\" />\n <text x=\"10\" y=\"105\" fill=\"#0163B2\">{{LANG.NO_RESULT}}</text>\n </svg>\n</ng-template>\n\n<!-- Template list chip -->\n<ng-template #listChip let-data=\"data\" let-type=\"type\">\n <mat-chip-list [@inOutAnimation] *ngIf=\"data?.length\" class=\"panel__item qms-scrollbar\">\n <div [@inOutAnimation_2] *ngFor=\"let item of data; let i = index\">\n <mat-chip (click)=\"onScollToNodeTreeDepartment(item)\" [@updateItemAnimation]\n *qmsContentChanges=\"item.children?.length\" class=\"chip-item-result\" qms-chip [removable]=\"true\">\n <span qms-chip-body>\n <span [qms-tool-tip]=\"generateTooltip(item)\" position=\"top\" mode=\"dark\" class=\"text-label\">\n {{item.name}}\n <span *ngIf=\"item.subName\">({{ item.subName }})</span>\n </span>\n <span class=\"chip-item-children__count ms-1\" *ngIf=\"item?.children && item?.isGroup\">\n {{item.children.length}}/{{item.childCount}}\n </span>\n </span>\n <mat-icon *ngIf=\"allowRemove(type, item)\" (click)=\"onRemoveChip(type,item, i)\"\n class=\"remove-chip-icon\">cancel</mat-icon>\n <mat-icon *ngIf=\"!allowRemove(type, item) && dialogData.formatMsgDisable\" position=\"top\" mode=\"dark\"\n [qms-tool-tip]=\"dialogData.formatMsgDisable(item)\" class=\"remove-chip-icon\">info_i</mat-icon>\n </mat-chip>\n </div>\n </mat-chip-list>\n</ng-template>\n\n<!-- Template result with collapse -->\n<ng-template #viewResultCollapse let-title=\"title\" let-data=\"data\" let-type=\"type\">\n <mat-expansion-panel qms-expansion [expanded]=\"optionSelect.value === type\">\n <mat-expansion-panel-header>\n <div class=\"title-content\">\n <div class=\"qms-list-text\">\n <div qms-line color=\"default-subtitle\">{{title}}\n <span class=\"fw-600\">\n ({{data?.length}})\n </span>\n </div>\n </div>\n </div>\n </mat-expansion-panel-header>\n <ng-container [ngTemplateOutlet]=\"listChip\" [ngTemplateOutletContext]=\"{data: data,type: type}\">\n </ng-container>\n </mat-expansion-panel>\n</ng-template>\n\n<!-- Template row without checkbox -->\n<ng-template #itemWithoutCheckboxTemplate let-item=\"item\" let-type=\"type\">\n <div (click)=\"onSelectItem(type,item)\" class=\"item-without-checkbox w-100\" [class.active]=\"item.selected\">\n <div class=\"item-content\">\n <div class=\"text-label\">\n <span class=\"text-label label-item fs-14 \">\n {{ item.name }}\n </span>\n <span *ngIf=\"item.subName\" class=\"ms-1 sub-label\">({{item.subName}})</span>\n </div>\n <small *ngIf=\"item.helpText\" class=\"text-help px-1 fs-12 sub-label\">{{ item.helpText }}</small>\n </div>\n <div class=\"item-state\">\n <mat-icon [@inOutAnimation] *ngIf=\"item.selected\">check</mat-icon>\n </div>\n </div>\n</ng-template>\n\n<!-- Template checkbox -->\n<ng-template #itemCheckboxTemplate let-item=\"item\" let-type=\"type\">\n <mat-checkbox [disabled]=\"!allowRemove(type, item)\" [checked]=\"item.selected\" (click)=\"onSelectItem(type,item)\"\n class=\"w-100\" color=\"default\" qms-group-options>\n <div class=\"text-label\">\n <span class=\"text-label label-item fs-14 \">\n {{ item.name }}\n </span>\n <span *ngIf=\"item.subName\" class=\"ms-1 sub-label\">({{item.subName}})</span>\n </div>\n <small *ngIf=\"item.helpText\" class=\"text-help px-1 fs-12 sub-label\">{{ item.helpText }}</small>\n </mat-checkbox>\n</ng-template>\n\n<!-- Template loading -->\n<ng-template #loading>\n <div class=\"qms-loading-container\">\n <div class=\"qms-loader\" *ngFor=\"let item of arrSkeleton\">\n <div class=\"qms-loader__wrapper\">\n <div class=\"row-loader\">\n </div>\n </div>\n </div>\n </div>\n</ng-template>",
|
569
|
+
template: "<div qms-dialog-container-v2 class=\"select-access-dialog-container\">\n <div qms-dialog-header>\n <div class=\"access-dialog-header mb-2\">\n <span class=\"header-title\">{{dialogData.titleDialog || LANG.SELECT_ACCESS}}</span>\n <button matDialogClose class=\"btn-close-dialog\" qms-btn-icon color=\"light\">\n <mat-icon class=\"mat-icons-outlined\">close</mat-icon>\n </button>\n </div>\n </div>\n <div [class.active]=\"optionSelect.value !== null\" qms-dialog-content class=\"qms-dialog-content\">\n <div class=\"access-dialog-wraper\">\n <mat-form-field *ngIf=\"options.length > 1\" qms-form qms-select-input class=\"field-select-option w-100\"\n appearance=\"fill\">\n <mat-label qms-select-input>{{LANG.TYPE}}</mat-label>\n <mat-select (selectionChange)=\"onSelectionTypeChange($event)\" [formControl]=\"optionSelect\" placeholder=\"Select\"\n disableOptionCentering #singleSelect panelClass=\"qms-select-panel\" qms-select>\n\n <mat-option *ngFor=\"let item of options\" [value]=\"item.type\">\n {{ LANG[item.displayName] }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n <div class=\"body-dialog-container\">\n <!-- Person Access -->\n <div class=\"option-selected-content\">\n <ng-container *ngIf=\"optionSelect.value === OPTION_ENUM.PERSON\">\n <form *ngIf=\"personForm\" [formGroup]=\"personForm\">\n <mat-dialog-content>\n <div class=\"group-filter-person-option\">\n <mat-form-field *ngIf=\"optionFilterPersonDataGlobal.userGroups.length\" qms-form qms-select-input\n class=\"w-100\" appearance=\"fill\">\n <mat-label qms-select-input>{{LANG.ROLE}}</mat-label>\n <mat-select panelClass=\"qms-select-panel\" qms-select formControlName=\"userGroup\"\n disableOptionCentering>\n <mat-select-trigger>\n {{personForm.controls['userGroup'].value?.name || ''}}\n </mat-select-trigger>\n <mat-option>\n <ngx-mat-select-search formControlName=\"userGroupFilter\" placeholderLabel=\"{{ LANG.ROLE }}\"\n noEntriesFoundLabel=\"\">\n </ngx-mat-select-search>\n </mat-option>\n <mat-option mode=\"dark\" class=\"opt-check-icon\"\n *ngFor=\"let item of filteredSearchTextBox.userGroup.value\" [value]=\"item\">\n <span qms-elipsify position=\"top\" mode=\"dark\" class=\"text-option-content\">{{ item.name }}</span>\n <mat-icon class=\"check-icon\"\n *ngIf=\"personForm.controls['userGroup'].value?.id == item.id\">check</mat-icon>\n </mat-option>\n </mat-select>\n <span [@inOutAnimation] (click)=\"personForm.get('userGroup').setValue('')\" class=\"pointer \"\n matSuffix aria-label=\"Clear\" *ngIf=\"personForm.get('userGroup').value && !getLoading$.value\">\n <mat-icon>close</mat-icon>\n </span>\n </mat-form-field>\n <!-- input field department filter person -->\n <mat-form-field *ngIf=\"optionFilterPersonDataGlobal.departments.length\"\n class=\"w-100 input-select-option\" qms-form qms-select-input>\n <mat-label>{{LANG.DEPARTMENT_UNIT}}</mat-label>\n <mat-select panelClass=\"qms-select-panel\" qms-select disableOptionCentering\n formControlName=\"department\">\n <mat-select-trigger>\n {{personForm.controls['department'].value?.name || ''}}\n </mat-select-trigger>\n <mat-option>\n <ngx-mat-select-search formControlName=\"departmentFilter\"\n [placeholderLabel]=\"LANG.DEPARTMENT_UNIT\" noEntriesFoundLabel=\"\">\n </ngx-mat-select-search>\n </mat-option>\n <mat-option class=\"opt-check-icon\" *ngFor=\"let item of filteredSearchTextBox.department.value\"\n [value]=\"item\">\n <span qms-elipsify mode=\"dark\" position=\"top\" class=\"text-option-content\">{{ item.name }}</span>\n <mat-icon class=\"check-icon\"\n *ngIf=\"personForm.controls['department'].value?.id == item.id\">check</mat-icon>\n </mat-option>\n </mat-select>\n <span (click)=\"setFormControlValue(['recursive','department'], [false,''])\" [@inOutAnimation]\n class=\"pointer\" matSuffix aria-label=\"Clear\"\n *ngIf=\"personForm.get('department').value && !getLoading$.value\">\n <mat-icon>close</mat-icon>\n </span>\n </mat-form-field>\n </div>\n\n <mat-slide-toggle [@inOutAnimation] *ngIf=\"personForm.controls['department'].value\"\n class=\"w-100 slide-toggle\" formControlName=\"recursive\" color=\"default\" qms-group-options>\n <span class=\"text-label\">{{LANG.INCLUDE_SUB_DEPARTMENTS}}</span>\n </mat-slide-toggle>\n\n <mat-form-field class=\"w-100\" appearance=\"fill\" qms-form qms-search-field>\n <input matInput appearance=\"off\" [placeholder]=\"LANG.SEARCH_WITH_NAME\" formControlName=\"keyword\"\n type=\"text\" autocomplete=\"off\" />\n <button *ngIf=\"!getLoading$.value\" qms-btn-icon color=\"light\" [@inOutAnimation]\n (click)=\"onSearchPersonFreeText()\" class=\"pointer me-1\" matSuffix aria-label=\"Search\">\n <mat-icon>search</mat-icon>\n </button>\n <mat-progress-spinner [@inOutAnimation] *ngIf=\"getLoading$.value\" matSuffix mode=\"indeterminate\"\n diameter=\"20\"></mat-progress-spinner>\n <span [@inOutAnimation] (click)=\"personForm.get('keyword').setValue('')\"\n class=\"pointer btn-icon-clear d-flex justify-content-center align-items-center \" matSuffix\n aria-label=\"Clear\" *ngIf=\"personForm.get('keyword').value && !getLoading$.value\">\n <button qms-btn-icon color=\"light\">\n <mat-icon>close</mat-icon>\n </button>\n </span>\n </mat-form-field>\n <button (click)=\"onFilterPerson()\" qms-btn-outlined class=\"w-100 my-1\">\n {{LANG.FILTER}}\n </button>\n </mat-dialog-content>\n\n <mat-dialog-content class=\"items-list\">\n <div qms-scrollbar>\n <div class=\"item\">\n <mat-checkbox [@inOutAnimation]\n *ngIf=\"!getLoading$.value && personFiltered.length && !dialogData.modeSelectOnePerson\"\n [disabled]=\"isDisabledSelectAll(OPTION_ENUM.PERSON)\" #checkPerson class=\"w-100 mb-1 checkbox-all\"\n (click)=\"personFiltered.length && onCheckAll(OPTION_ENUM.PERSON,checkPerson)\"\n [checked]=\"isCheckAll(OPTION_ENUM.PERSON)\" [indeterminate]=\"isIndeterminate(OPTION_ENUM.PERSON)\"\n color=\"default\" qms-group-options>\n <span class=\"text-label header-title\">{{LANG.CHOOSE_ALL}} </span>\n <span>(<b>{{personFiltered.length}}</b>)</span>\n </mat-checkbox>\n </div>\n <mat-divider class=\"mx-auto\"></mat-divider>\n <ng-container *ngIf=\"getLoading$.value; then loading\">\n </ng-container>\n <div [@inOutAnimation] *ngIf=\"personFiltered.length && !getLoading$.value\" [@listAnimation]\n class=\"item-list-wrapper\">\n <div class=\"item mt-1\" [@inOutAnimation]\n *ngFor=\"let employee of personFiltered; trackBy: trackByFn\">\n <ng-container\n [ngTemplateOutlet]=\"dialogData.modeSelectOnePerson ?itemWithoutCheckboxTemplate : itemCheckboxTemplate\"\n [ngTemplateOutletContext]=\"{item: employee, type: OPTION_ENUM.PERSON}\">\n </ng-container>\n </div>\n </div>\n <div [@inOutAnimation] *ngIf=\"!personFiltered.length && !getLoading$.value\"\n class=\"item-list-wrapper no-result\">\n <ng-container *ngTemplateOutlet=\"noResult\"></ng-container>\n </div>\n <mat-divider class=\"mx-auto\"></mat-divider>\n <qms-paginator overlayPanelClass=\"select-access-paginator\" #pagingPerson\n *ngIf=\"getPerson$.value.length > 10\" [length]=\"getPerson$.value.length\" [numHidden]=\"0\"\n [pageSize]=\"getPerson$.value.pageSize\" [pageSizeOptions]=\"PAGE_SIZE_OPTION\"\n (page)='onPaginatorEvent($event, OPTION_ENUM.PERSON)' [size]='PAGINATION_SIZE.medium'>\n </qms-paginator>\n </div>\n </mat-dialog-content>\n </form>\n </ng-container>\n\n <!-- UserGroup Access -->\n <ng-container *ngIf=\"optionSelect.value === OPTION_ENUM.USER_GROUP\">\n <div>\n <mat-dialog-content>\n <form (submit)=\"onFilterUserGroup()\">\n <mat-form-field class=\"w-100\" qms-form qms-search-field>\n <input [formControl]=\"userGroupForm\" matInput type=\"text\" autocomplete=\"off\"\n placeholder=\"User group\" />\n <button [@inOutAnimation] *ngIf=\"!getLoading$.value\" type=\"submit\" qms-btn-icon color=\"light\"\n matSuffix>\n <mat-icon>search</mat-icon>\n </button>\n <mat-progress-spinner [@inOutAnimation] *ngIf=\"getLoading$.value\" matSuffix mode=\"indeterminate\"\n diameter=\"20\"></mat-progress-spinner>\n <div [@inOutAnimation] *ngIf=\"!!userGroupForm.value && !getLoading$.value\" matSuffix\n qms-input-clear>\n <button (click)=\"userGroupForm.setValue('')\" qms-btn-icon color=\"light\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n </mat-form-field>\n </form>\n </mat-dialog-content>\n <mat-dialog-content class=\"items-list\">\n <div qms-scrollbar>\n <div class=\"item\">\n <mat-checkbox [@inOutAnimation]\n *ngIf=\"!getLoading$.value && (userGroupFiltered.length && !dialogData.modeSelectOneUserGroup)\"\n [disabled]=\"isDisabledSelectAll(OPTION_ENUM.USER_GROUP)\" #checkUserGroup\n class=\"w-100 checkbox-all mb-1\" color=\"default\" [checked]=\"isCheckAll(OPTION_ENUM.USER_GROUP)\"\n [indeterminate]=\"isIndeterminate(OPTION_ENUM.USER_GROUP)\"\n (click)=\"userGroupFiltered.length && onCheckAll(OPTION_ENUM.USER_GROUP,checkUserGroup)\"\n qms-group-options>\n <span class=\"text-label header-title\">{{LANG.CHOOSE_ALL}}</span>\n <span>(<b>{{userGroupFiltered.length}}</b>)</span>\n </mat-checkbox>\n </div>\n <mat-divider class=\"mx-auto\"></mat-divider>\n <ng-container *ngIf=\"getLoading$.value;then loading\">\n </ng-container>\n <div *ngIf=\"userGroupFiltered.length && !getLoading$.value\" [@listAnimation]\n class=\"item-list-wrapper\">\n <div [@inOutAnimation] class=\"item mt-1\" *ngFor=\"let userGroup of userGroupFiltered\">\n <ng-container\n [ngTemplateOutlet]=\"dialogData.modeSelectOneUserGroup ? itemWithoutCheckboxTemplate : itemCheckboxTemplate\"\n [ngTemplateOutletContext]=\"{item: userGroup,type: OPTION_ENUM.USER_GROUP}\">\n </ng-container>\n </div>\n </div>\n <div [@inOutAnimation] *ngIf=\"!userGroupFiltered.length && !getLoading$.value\"\n class=\"item-list-wrapper no-result\">\n <ng-container *ngTemplateOutlet=\"noResult\"></ng-container>\n </div>\n <mat-divider class=\"mx-auto\"></mat-divider>\n <qms-paginator overlayPanelClass=\"select-access-paginator\" #pagingUserGroup class=\"my-1\"\n *ngIf=\"getUserGroup$.value.length > 10 \" [length]=\"getUserGroup$.value.length\" [numHidden]=\"0\"\n [pageSize]=\"getUserGroup$.value.pageSize\" [pageSizeOptions]=\"PAGE_SIZE_OPTION\"\n (page)='onPaginatorEvent($event, OPTION_ENUM.USER_GROUP)' [size]='PAGINATION_SIZE.medium'>\n </qms-paginator>\n </div>\n </mat-dialog-content>\n </div>\n </ng-container>\n\n <!-- Department Access -->\n <ng-container\n *ngIf=\"optionSelect.value === OPTION_ENUM.DEPARTMENT && getLoading$.value; then loading\"></ng-container>\n <ng-container *ngIf=\"optionSelect.value === OPTION_ENUM.DEPARTMENT && !getLoading$.value\"\n class=\"person-access\">\n <qms-select-department-tree #tree [rowsSkeleton]=\"8\" [config]=\"dialogData.treeDepartmentConfig\"\n [maxWidthNode]=\"dialogData.maxWidthNode\" (onSearchEvent)=\"onSearchDepartmentEvent.emit($event)\"\n (onValueChangeEvent)=\"onResultDepartmentChange($event)\"\n (selectionNodeChangeEvent)=\"onSelectionNodeDepartmentChange($event)\"\n (onPagingSearchEvent)=\"onPaginatorEvent($event, OPTION_ENUM.DEPARTMENT)\">\n </qms-select-department-tree>\n </ng-container>\n </div>\n </div>\n </div>\n\n <div *ngIf=\"optionSelect.value !== null\" class=\"result-wrapper\">\n <div class=\"result-selected-container\">\n <div [@inOutAnimation] *ngIf=\"(options.length === 1) || (options.length > 1 && optionSelect.value !== null)\"\n class=\"header-title result-header\">\n <span>\n {{\n dialogData.titleResult || LANG.RESULTS}}\n <span *ngIf=\"options.length === 1 && hasItemSelected()\">\n ({{getResultTabActive().length}})\n </span>\n </span>\n </div>\n <div class=\"result-body\">\n <!-- Result Person -->\n <ng-container *ngIf=\"checkExistOptionSelect(OPTION_ENUM.PERSON)\"\n [ngTemplateOutlet]=\"options?.length == 1 ? listChip : viewResultCollapse\"\n [ngTemplateOutletContext]=\"{data:resultAccess.persons, type:OPTION_ENUM.PERSON, title:LANG.PERSON}\">\n </ng-container>\n <!-- Result User group -->\n <ng-container *ngIf=\"checkExistOptionSelect(OPTION_ENUM.USER_GROUP)\"\n [ngTemplateOutlet]=\"options?.length == 1 ? listChip : viewResultCollapse\"\n [ngTemplateOutletContext]=\"{data:resultAccess.userGroups, type:OPTION_ENUM.USER_GROUP, title:LANG.USER_GROUP}\">\n </ng-container>\n <!-- Result Department -->\n <ng-container *ngIf=\"checkExistOptionSelect(OPTION_ENUM.DEPARTMENT)\"\n [ngTemplateOutlet]=\"options?.length == 1 ? listChip : viewResultCollapse\"\n [ngTemplateOutletContext]=\"{data: resultAccess.departments, type:OPTION_ENUM.DEPARTMENT, title:LANG.DEPARTMENT}\">\n </ng-container>\n </div>\n </div>\n </div>\n </div>\n <mat-divider class=\"mx-auto\"></mat-divider>\n <div qms-dialog-footer class=\"confirm__button__groups\" [class.none-option]=\"optionSelect.value === null\">\n <button *ngIf=\"optionSelect.value !== null\"\n [disabled]=\"!hasItemSelected() && !dialogData.treeDepartmentConfig.canAddNullResult\" class=\"btn-add\"\n [class.qms-btn-disabled]=\"!hasItemSelected() && !dialogData.treeDepartmentConfig.canAddNullResult\"\n [mat-dialog-close]=\"resultAccess\" qms-btn>\n <span>{{LANG.ADD}}</span>\n </button>\n <button qms-btn-text mat-dialog-close>\n {{LANG.CANCEL}}\n </button>\n </div>\n</div>\n\n<!-- Template -->\n<ng-template #noResult>\n <svg width=\"89\" height=\"130\" viewBox=\"0 0 89 88\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect x=\"0.5\" width=\"88\" height=\"88\" rx=\"44\" fill=\"white\" />\n <rect x=\"0.5\" width=\"88\" height=\"88\" rx=\"44\" fill=\"#0163B2\" fill-opacity=\"0.12\" />\n <path\n d=\"M44.5 56.6936L58.096 64.8996L54.488 49.4336L66.5 39.0276L50.682 37.6856L44.5 23.0996L38.318 37.6856L22.5 39.0276L34.512 49.4336L30.904 64.8996L44.5 56.6936Z\"\n fill=\"#0163B3\" />\n <text x=\"10\" y=\"105\" fill=\"#0163B2\">{{LANG.NO_RESULT}}</text>\n </svg>\n</ng-template>\n\n<!-- Template list chip -->\n<ng-template #listChip let-data=\"data\" let-type=\"type\">\n <mat-chip-list [@inOutAnimation] *ngIf=\"data?.length\" class=\"panel__item qms-scrollbar\">\n <div [@inOutAnimation_2] *ngFor=\"let item of data; let i = index\">\n <mat-chip (click)=\"onScollToNodeTreeDepartment(item)\" [@updateItemAnimation]\n *qmsContentChanges=\"item.children?.length\" class=\"chip-item-result\" qms-chip [removable]=\"true\">\n <span qms-chip-body>\n <span [qms-tool-tip]=\"generateTooltip(item)\" position=\"top\" mode=\"dark\" class=\"text-label\">\n {{item.name}}\n <span *ngIf=\"item.subName\">({{ item.subName }})</span>\n </span>\n <span class=\"chip-item-children__count ms-1\" *ngIf=\"item?.children && item?.isGroup\">\n {{item.children.length}}/{{item.childCount}}\n </span>\n </span>\n <mat-icon *ngIf=\"allowRemove(type, item)\" (click)=\"onRemoveChip(type,item, i)\"\n class=\"remove-chip-icon\">cancel</mat-icon>\n <mat-icon *ngIf=\"!allowRemove(type, item) && dialogData.formatMsgDisable\" position=\"top\" mode=\"dark\"\n [qms-tool-tip]=\"dialogData.formatMsgDisable(item)\" class=\"remove-chip-icon\">info_i</mat-icon>\n </mat-chip>\n </div>\n </mat-chip-list>\n</ng-template>\n\n<!-- Template result with collapse -->\n<ng-template #viewResultCollapse let-title=\"title\" let-data=\"data\" let-type=\"type\">\n <mat-expansion-panel qms-expansion [expanded]=\"optionSelect.value === type\">\n <mat-expansion-panel-header>\n <div class=\"title-content\">\n <div class=\"qms-list-text\">\n <div qms-line color=\"default-subtitle\">{{title}}\n <span class=\"fw-600\">\n ({{data?.length}})\n </span>\n </div>\n </div>\n </div>\n </mat-expansion-panel-header>\n <ng-container [ngTemplateOutlet]=\"listChip\" [ngTemplateOutletContext]=\"{data: data,type: type}\">\n </ng-container>\n </mat-expansion-panel>\n</ng-template>\n\n<!-- Template row without checkbox -->\n<ng-template #itemWithoutCheckboxTemplate let-item=\"item\" let-type=\"type\">\n <div (click)=\"onSelectItem(type,item)\" class=\"item-without-checkbox w-100\" [class.active]=\"item.selected\">\n <div class=\"item-content\">\n <div class=\"text-label\">\n <span class=\"text-label label-item fs-14 \">\n {{ item.name }}\n </span>\n <span *ngIf=\"item.subName\" class=\"ms-1 sub-label\">({{item.subName}})</span>\n </div>\n <small *ngIf=\"item.helpText\" class=\"text-help px-1 fs-12 sub-label\">{{ item.helpText }}</small>\n </div>\n <div class=\"item-state\">\n <mat-icon [@inOutAnimation] *ngIf=\"item.selected\">check</mat-icon>\n </div>\n </div>\n</ng-template>\n\n<!-- Template checkbox -->\n<ng-template #itemCheckboxTemplate let-item=\"item\" let-type=\"type\">\n <mat-checkbox [disabled]=\"!allowRemove(type, item)\" [checked]=\"item.selected\" (click)=\"onSelectItem(type,item)\"\n class=\"w-100\" color=\"default\" qms-group-options>\n <div class=\"text-label\">\n <span class=\"text-label label-item fs-14 \">\n {{ item.name }}\n </span>\n <span *ngIf=\"item.subName\" class=\"ms-1 sub-label\">({{item.subName}})</span>\n </div>\n <small *ngIf=\"item.helpText\" class=\"text-help px-1 fs-12 sub-label\">{{ item.helpText }}</small>\n </mat-checkbox>\n</ng-template>\n\n<!-- Template loading -->\n<ng-template #loading>\n <div class=\"qms-loading-container\">\n <div class=\"qms-loader\" *ngFor=\"let item of arrSkeleton\">\n <div class=\"qms-loader__wrapper\">\n <div class=\"row-loader\">\n </div>\n </div>\n </div>\n </div>\n</ng-template>",
|
567
570
|
animations: [SelectAccessAnimationTrigger],
|
568
571
|
providers: [
|
569
572
|
{
|
@@ -590,4 +593,4 @@ QMSSelectAccessDialogComponent.propDecorators = {
|
|
590
593
|
pagingUserGroup: [{ type: ViewChild, args: ['pagingUserGroup',] }]
|
591
594
|
};
|
592
595
|
export { ɵ0 };
|
593
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWFjY2Vzcy1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcW1zLWFuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL3NlbGVjdC1hY2Nlc3MtZGlhbG9nL3NlbGVjdC1hY2Nlc3MtZGlhbG9nLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBSUwsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUdOLFNBQVMsRUFDVCxpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQWEsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRSxPQUFPLEVBQUUsNEJBQTRCLEVBQTZCLE1BQU0sNEJBQTRCLENBQUM7QUFDckcsT0FBTyxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUV6RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxLQUFLLENBQUMsTUFBTSxRQUFRLENBQUM7QUFDNUIsT0FBTyxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEQsT0FBTyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUd6RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUN0RixPQUFPLEVBQUUsY0FBYyxFQUF5QixNQUFNLGtCQUFrQixDQUFDO0FBRXpFLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLDREQUE0RCxDQUFDO0FBQzNHLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRTVFLE9BQU8sRUFBOEIsb0JBQW9C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LHVCQWtIekIsTUFBTSxTQUFDLGVBQWU7WUE1SGxCLHVCQUF1QjtZQVZ2QixXQUFXO1lBVGxCLGlCQUFpQjs7O21CQW9GaEIsU0FBUyxTQUFDLE1BQU0sRUFBRTtvQkFDakIsSUFBSSxFQUFFLDZCQUE2QjtpQkFDcEM7MkJBZ0JBLFNBQVMsU0FBQyxjQUFjOzhCQUN4QixTQUFTLFNBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50Q2hlY2tlZCxcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbmplY3QsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Db250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNQVRfQ0hFQ0tCT1hfREVGQVVMVF9PUFRJT05TLCBNYXRDaGVja2JveERlZmF1bHRPcHRpb25zIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hlY2tib3gnO1xuaW1wb3J0IHsgTUFUX0RJQUxPR19EQVRBLCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgUGFnZUV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yJztcbmltcG9ydCB7IE1hdFNlbGVjdENoYW5nZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NlbGVjdCc7XG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgUU1TRmxhdE5vZGVUcmVlIH0gZnJvbSAnLi4vLi4vY29tbW9uL21vZGVscy9xbXMtZmxhdC1ub2RlLm1vZGVsJztcbmltcG9ydCB7IFFNU1RyZWVOb2RlIH0gZnJvbSAnLi4vLi4vY29tbW9uL21vZGVscy9xbXMtdHJlZS1ub2RlLm1vZGVsJztcbmltcG9ydCB7IFRyYW5zbGF0ZUxpYnJhcnlTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3RyYW5zbGF0aW9uLXJlZ2lzdHJ5LnNlcnZpY2VcIjtcbmltcG9ydCB7IFBhZ2luYXRpb25TaXplLCBRTVNQYWdpbmF0b3JDb21wb25lbnQgfSBmcm9tICcuLi9xbXMtcGFnaW5hdG9yJztcbmltcG9ydCB7IElTZWxlY3Rpb25Ob2RlQ2hhbmdlLCBRTVNEZXBhcnRtZW50UGFnaW5nTW9kZWwgfSBmcm9tICcuLi9zZWxlY3QtZGVwYXJ0bWVudC10cmVlJztcbmltcG9ydCB7IFNlbGVjdERlcGFydG1lbnRUcmVlQ29tcG9uZW50IH0gZnJvbSAnLi4vc2VsZWN0LWRlcGFydG1lbnQtdHJlZS9zZWxlY3QtZGVwYXJ0bWVudC10cmVlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTZWxlY3RBY2Nlc3NBbmltYXRpb25UcmlnZ2VyIH0gZnJvbSAnLi9jb21tb24vYW5pbWF0aW9uJztcbmltcG9ydCB7IE9wdGlvblNlbGVjdEFjY2Vzc0VudW0gfSBmcm9tICcuL2NvbW1vbi9vcHRpb24tc2VsZWN0LWFjY2Vzcy5lbnVtJztcbmltcG9ydCB7IFFNU0FjY2Vzc0l0ZW0gfSBmcm9tICcuL21vZGVsL2FjY2Vzcy1pdGVtLm1vZGVsJztcbmltcG9ydCB7IFFNU0FjY2Vzc1BhZ2luZ0NoYW5nZU1vZGVsLCBRTVNBY2Nlc3NQYWdpbmdNb2RlbCB9IGZyb20gJy4vbW9kZWwvYWNjZXNzLXBhZ2luZy5tb2RlbCc7XG5pbXBvcnQgeyBGaWx0ZXJQZXJzb25Nb2RlbCB9IGZyb20gJy4vbW9kZWwvZmlsdGVyLXBlcnNvbi5tb2RlbCc7XG5pbXBvcnQgeyBPcHRpb25TZWxlY3RBY2Nlc3NNb2RlbCB9IGZyb20gJy4vbW9kZWwvb3B0aW9uLXNlbGVjdC1hY2Nlc3MubW9kZWwnO1xuaW1wb3J0IHsgUU1TU2VsZWN0QWNjZXNzRGlhbG9nIH0gZnJvbSAnLi9tb2RlbC9zZWxlY3QtYWNjZXNzLWNvbmZpZy5tb2RlbCc7XG5pbXBvcnQgeyBRTVNTZWxlY3RBY2Nlc3NSZXN1bHQgfSBmcm9tICcuL21vZGVsL3NlbGVjdC1hY2Nlc3MtZGF0YSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3Ftcy1zZWxlY3QtYWNjZXNzLWRpYWxvZycsXG4gIHRlbXBsYXRlVXJsOiAnLi9zZWxlY3QtYWNjZXNzLWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NlbGVjdC1hY2Nlc3MtZGlhbG9nLmNvbXBvbmVudC5zY3NzJ10sXG4gIGFuaW1hdGlvbnM6IFtTZWxlY3RBY2Nlc3NBbmltYXRpb25UcmlnZ2VyXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTUFUX0NIRUNLQk9YX0RFRkFVTFRfT1BUSU9OUyxcbiAgICAgIHVzZVZhbHVlOiB7XG4gICAgICAgIGNsaWNrQWN0aW9uOiAnbm9vcCdcbiAgICAgIH0gYXMgTWF0Q2hlY2tib3hEZWZhdWx0T3B0aW9uc1xuICAgIH1cbiAgXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBRTVNTZWxlY3RBY2Nlc3NEaWFsb2dDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCwgQWZ0ZXJDb250ZW50SW5pdCwgQWZ0ZXJDb250ZW50Q2hlY2tlZCB7XG4gIG5nVW5zdWJjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIExBTkc6IGFueTtcbiAgb3B0aW9uU2VsZWN0ID0gbmV3IEZvcm1Db250cm9sKCk7XG4gIE9QVElPTl9FTlVNID0gT3B0aW9uU2VsZWN0QWNjZXNzRW51bTtcbiAgb3B0aW9uczogT3B0aW9uU2VsZWN0QWNjZXNzTW9kZWxbXSA9IFtdO1xuXG4gIHByaXZhdGUgX2RlcGFydG1lbnRTZWxlY3RlZDogUU1TVHJlZU5vZGVbXSA9IFtdO1xuICBnZXQgc2VsZWN0ZWREZXBhcnRtZW50cygpIHtcbiAgICBjb25zdCBkZXBhcnRtZW50U2VsZWN0ZWQ6IFFNU0ZsYXROb2RlVHJlZVtdID0gW107XG4gICAgdGhpcy5fZGVwYXJ0bWVudFNlbGVjdGVkLmZvckVhY2goeCA9PiB7XG4gICAgICBkZXBhcnRtZW50U2VsZWN0ZWQucHVzaCh7XG4gICAgICAgIGlkOiB4LmlkLFxuICAgICAgICBncm91cElkOiB4Lmdyb3VwSWQsXG4gICAgICAgIGlzR3JvdXA6IHguaXNHcm91cFxuICAgICAgfSBhcyBRTVNGbGF0Tm9kZVRyZWUpO1xuICAgICAgaWYgKCF4LmNoaWxkcmVuPy5sZW5ndGgpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGRlcGFydG1lbnRTZWxlY3RlZC5wdXNoKC4uLih4LmNoaWxkcmVuLm1hcChpdGVtID0+ICh7XG4gICAgICAgIGlkOiBpdGVtLmlkLFxuICAgICAgICBncm91cElkOiBpdGVtLmdyb3VwSWQsXG4gICAgICAgIGlzR3JvdXA6IGl0ZW0uaXNHcm91cFxuICAgICAgfSBhcyBRTVNGbGF0Tm9kZVRyZWUpKSkpO1xuICAgIH0pO1xuICAgIHJldHVybiBkZXBhcnRtZW50U2VsZWN0ZWQgfHwgW107XG4gIH1cblxuICBwdWJsaWMgcGVyc29uRm9ybTogRm9ybUdyb3VwO1xuICBwdWJsaWMgdXNlckdyb3VwRm9ybSA9IG5ldyBGb3JtQ29udHJvbCgnJylcbiAgcHVibGljIGdldExvYWRpbmckID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIG9uU2VhcmNoUGVyc29uRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPEZpbHRlclBlcnNvbk1vZGVsPigpO1xuICBvblNlYXJjaFBlcnNvbkZyZWVUZXh0RXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIG9uU2VhcmNoVXNlckdyb3VwRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgb25TZWFyY2hEZXBhcnRtZW50RXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIG9uUGFnaW5nRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPFFNU0FjY2Vzc1BhZ2luZ0NoYW5nZU1vZGVsPigpO1xuICBvblNlbGVjdE9wdGlvbkNoYW5nZSQgPSBuZXcgU3ViamVjdDxNYXRTZWxlY3RDaGFuZ2U+KCk7XG4gIHRyZWVEZXBhcnRtZW50OiBTZWxlY3REZXBhcnRtZW50VHJlZUNvbXBvbmVudFxuICBAVmlld0NoaWxkKCd0cmVlJywge1xuICAgIHJlYWQ6IFNlbGVjdERlcGFydG1lbnRUcmVlQ29tcG9uZW50XG4gIH0pIHNldCB0cmVlKGRhdGE6IFNlbGVjdERlcGFydG1lbnRUcmVlQ29tcG9uZW50KSB7XG4gICAgdGhpcy50cmVlRGVwYXJ0bWVudCA9IGRhdGE7XG5cbiAgICBjb25zdCBncm91cHMgPSB0aGlzLnJlc3VsdEFjY2Vzcy5kZXBhcnRtZW50cy5maWx0ZXIoeCA9PiB4LmlzR3JvdXApO1xuICAgIGlmIChncm91cHMubGVuZ3RoKVxuICAgICAgZ3JvdXBzLmZvckVhY2goZ3JvdXAgPT4ge1xuICAgICAgICBpZiAoIWdyb3VwLmNoaWxkQ291bnQpIHtcbiAgICAgICAgICBpZiAoIXRoaXMudHJlZURlcGFydG1lbnQpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgY29uc3Qgbm9kZSA9IHRoaXMudHJlZURlcGFydG1lbnQudHJlZUNvbnRyb2wuZGF0YU5vZGVzLmZpbmQoeCA9PiB4LmlkID09IGdyb3VwLmlkKTtcbiAgICAgICAgICBpZiAobm9kZSlcbiAgICAgICAgICAgIGdyb3VwLmNoaWxkQ291bnQgPSB0aGlzLnRyZWVEZXBhcnRtZW50LmdldExpc3RDaGlsZHJlbk9mTm9kZShub2RlKS5sZW5ndGg7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgQFZpZXdDaGlsZCgncGFnaW5nUGVyc29uJykgcGFnaW5nUGVyc29uOiBRTVNQYWdpbmF0b3JDb21wb25lbnQ7XG4gIEBWaWV3Q2hpbGQoJ3BhZ2luZ1VzZXJHcm91cCcpIHBhZ2luZ1VzZXJHcm91cDogUU1TUGFnaW5hdG9yQ29tcG9uZW50O1xuXG4gIC8qKiBsaXN0IGZpbHRlcmVkIGJ5IHNlYXJjaCBrZXl3b3JkICovXG4gIG9wdGlvbkZpbHRlclBlcnNvbkRhdGFHbG9iYWw6IHtcbiAgICBkZXBhcnRtZW50czogUU1TRmxhdE5vZGVUcmVlW10sXG4gICAgdXNlckdyb3VwczogUU1TQWNjZXNzSXRlbVtdXG4gIH0gPSB7XG4gICAgICBkZXBhcnRtZW50czogW10sXG4gICAgICB1c2VyR3JvdXBzOiBbXVxuICAgIH07XG5cbiAgcHVibGljIGZpbHRlcmVkU2VhcmNoVGV4dEJveCA9IHtcbiAgICBkZXBhcnRtZW50OiBuZXcgQmVoYXZpb3JTdWJqZWN0PFFNU0ZsYXROb2RlVHJlZVtdPihbXSksXG4gICAgdXNlckdyb3VwOiBuZXcgQmVoYXZpb3JTdWJqZWN0PFFNU0FjY2Vzc0l0ZW1bXT4oW10pLFxuICB9XG4gIGdldFBlcnNvbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFFNU0FjY2Vzc1BhZ2luZ01vZGVsPFFNU0FjY2Vzc0l0ZW0+PihuZXcgUU1TQWNjZXNzUGFnaW5nTW9kZWw8UU1TQWNjZXNzSXRlbT4oKSk7XG4gIGdldCBwZXJzb25GaWx0ZXJlZCgpIHtcbiAgICBjb25zdCBwZXJzb25zID0gdGhpcy5nZXRQZXJzb24kLnZhbHVlO1xuICAgIGNvbnN0IGlkcyA9IHRoaXMucmVzdWx0QWNjZXNzLnBlcnNvbnMubWFwKHggPT4geC5pZCk7XG4gICAgcGVyc29ucy5kYXRhPy5mb3JFYWNoKHggPT4geC5zZWxlY3RlZCA9IGlkcy5pbmNsdWRlcyh4LmlkKSk7XG4gICAgcmV0dXJuIHBlcnNvbnMuZGF0YSB8fCBbXTtcbiAgfVxuXG4gIGdldFVzZXJHcm91cCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFFNU0FjY2Vzc1BhZ2luZ01vZGVsPFFNU0FjY2Vzc0l0ZW0+PihuZXcgUU1TQWNjZXNzUGFnaW5nTW9kZWw8UU1TQWNjZXNzSXRlbT4oKSk7XG4gIGdldCB1c2VyR3JvdXBGaWx0ZXJlZCgpIHtcbiAgICBjb25zdCB1c2VyR3JvdXBzID0gdGhpcy5nZXRVc2VyR3JvdXAkLnZhbHVlO1xuICAgIGNvbnN0IGlkcyA9IHRoaXMucmVzdWx0QWNjZXNzLnVzZXJHcm91cHMubWFwKHggPT4geC5pZCk7XG4gICAgdXNlckdyb3Vwcy5kYXRhPy5mb3JFYWNoKHggPT4geC5zZWxlY3RlZCA9IGlkcy5pbmNsdWRlcyh4LmlkKSk7XG4gICAgcmV0dXJuIHVzZXJHcm91cHMuZGF0YSB8fCBbXTtcbiAgfTtcblxuICBQQUdJTkFUSU9OX1NJWkUgPSBQYWdpbmF0aW9uU2l6ZTtcbiAgUEFHRV9TSVpFX09QVElPTjogbnVtYmVyW10gPSBbNSwgMTAsIDE1LCAyMCwgMjUsIDEwMF07XG4gIHJlc3VsdEFjY2VzcyA9IG5ldyBRTVNTZWxlY3RBY2Nlc3NSZXN1bHQoKTtcbiAgYXJyU2tlbGV0b24gPSBuZXcgQXJyYXkoOCkuZmlsbCgwKTtcbiAgLy9wcmV2ZW50IGV2ZW50IHBhZ2luZyB3aGVuIHNlYXJjaCBlbWl0IHNlYXJjaCBldmVudFxuICBnZXRTZWFyY2hpbmckID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxRTVNTZWxlY3RBY2Nlc3NEaWFsb2dDb21wb25lbnQ+LFxuICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgZGlhbG9nRGF0YTogUU1TU2VsZWN0QWNjZXNzRGlhbG9nLFxuICAgIHB1YmxpYyB0cmFuc2xhdGU6IFRyYW5zbGF0ZUxpYnJhcnlTZXJ2aWNlLFxuICAgIHByaXZhdGUgX2ZiOiBGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZlxuICApIHtcbiAgICB0aGlzLl9pbml0UmVzdWx0QWNjZXNzKCk7XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudENoZWNrZWQoKTogdm9pZCB7XG4gICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnRyYW5zbGF0ZS5nZXRMYW5ndWFnZVN1YmplY3QkLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSkuc3Vic2NyaWJlKChyZXMpID0+IHtcbiAgICAgIGlmIChyZXMpIHtcbiAgICAgICAgdGhpcy5MQU5HID0gdGhpcy50cmFuc2xhdGUuZ2V0T2JqZWN0TGFuZyhyZXMpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMuX2J1aWxkT3B0aW9uU2VsZWN0KCk7XG4gICAgdGhpcy5nZXRMb2FkaW5nJC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcbiAgICAgICAgaWYgKHJlc3BvbnNlKSB7XG4gICAgICAgICAgdGhpcy5wZXJzb25Gb3JtICYmIHRoaXMucGVyc29uRm9ybS5kaXNhYmxlKCk7XG4gICAgICAgICAgdGhpcy51c2VyR3JvdXBGb3JtICYmIHRoaXMudXNlckdyb3VwRm9ybS5kaXNhYmxlKCk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucGVyc29uRm9ybSAmJiB0aGlzLnBlcnNvbkZvcm0uZW5hYmxlKCk7XG4gICAgICAgIHRoaXMudXNlckdyb3VwRm9ybSAmJiB0aGlzLnVzZXJHcm91cEZvcm0uZW5hYmxlKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMubmdVbnN1YmNyaWJlLm5leHQoKTtcbiAgICB0aGlzLm5nVW5zdWJjcmliZS5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfYnVpbGRPcHRpb25TZWxlY3QoKSB7XG4gICAgY29uc3Qgb3B0aW9uT2JqID0ge1xuICAgICAgZW5hYmxlU2VsZWN0RGVwYXJ0bWVudDoge1xuICAgICAgICBkaXNwbGF5TmFtZTogJ0RFUEFSVE1FTlQnLFxuICAgICAgICB0eXBlOiB0aGlzLk9QVElPTl9FTlVNLkRFUEFSVE1FTlRcbiAgICAgIH0sXG4gICAgICBlbmFibGVTZWxlY3RQZXJzb246IHtcbiAgICAgICAgZGlzcGxheU5hbWU6ICdQRVJTT04nLFxuICAgICAgICB0eXBlOiB0aGlzLk9QVElPTl9FTlVNLlBFUlNPTlxuICAgICAgfSxcbiAgICAgIGVuYWJsZVNlbGVjdFVzZXJHcm91cDoge1xuICAgICAgICBkaXNwbGF5TmFtZTogJ1VTRVJfR1JPVVAnLFxuICAgICAgICB0eXBlOiB0aGlzLk9QVElPTl9FTlVNLlVTRVJfR1JPVVBcbiAgICAgIH1cbiAgICB9XG4gICAgZm9yIChsZXQgaXRlbSBpbiB0aGlzLmRpYWxvZ0RhdGEpIHtcbiAgICAgIGlmICghIXRoaXMuZGlhbG9nRGF0YVtpdGVtXSAmJiBvcHRpb25PYmpbaXRlbV0pIHtcbiAgICAgICAgdGhpcy5vcHRpb25zLnB1c2gob3B0aW9uT2JqW2l0ZW1dKVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAodGhpcy5vcHRpb25zLmxlbmd0aCA9PT0gMSkge1xuICAgICAgdGhpcy5kaWFsb2dSZWYudXBkYXRlU2l6ZSh0aGlzLmRpYWxvZ0RhdGEuc2l6ZVVwZGF0ZURlZmF1bHQpO1xuICAgICAgdGhpcy5vcHRpb25TZWxlY3Quc2V0VmFsdWUodGhpcy5vcHRpb25zWzBdLnR5cGUpO1xuICAgICAgY29uc3QgZXZlbnQkID0gbmV3IE1hdFNlbGVjdENoYW5nZShudWxsLCB0aGlzLm9wdGlvbnNbMF0udHlwZSk7XG4gICAgICB0aGlzLm9uU2VsZWN0aW9uVHlwZUNoYW5nZShldmVudCQpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2luaXRSZXN1bHRBY2Nlc3MoKSB7XG4gICAgdGhpcy5yZXN1bHRBY2Nlc3MgPSBfLmNsb25lRGVlcCh7XG4gICAgICAuLi50aGlzLmRpYWxvZ0RhdGEuZGF0YS5zZWxlY3RlZERhdGEsXG4gICAgICBkZXBhcnRtZW50czogW11cbiAgICB9IGFzIFFNU1NlbGVjdEFjY2Vzc1Jlc3VsdCk7XG4gICAgLy8gaW5pdCBncm91cCBzZWxlY3RlZCBkZXBhcnRtZW50XG4gICAgdGhpcy5fZGVwYXJ0bWVudFNlbGVjdGVkID0gXy5jbG9uZURlZXAodGhpcy5kaWFsb2dEYXRhLmRhdGEuc2VsZWN0ZWREYXRhLmRlcGFydG1lbnRzKTtcbiAgICBjb25zdCBncm91cHMgPSBbXTtcbiAgICBjb25zdCBzaW5nbGVJdGVtID0gW107XG5cbiAgICB0aGlzLl9kZXBhcnRtZW50U2VsZWN0ZWQuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgIGlmIChpdGVtLmlzR3JvdXApIHtcbiAgICAgICAgZ3JvdXBzLnB1c2goaXRlbSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKCFpdGVtLmdyb3VwSWQpIHtcbiAgICAgICAgc2luZ2xlSXRlbS5wdXNoKGl0ZW0pO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICghdGhpcy5fZGVwYXJ0bWVudFNlbGVjdGVkLnNvbWUoeCA9PiB4LmlkID09IGl0ZW0uZ3JvdXBJZCkpIHtcbiAgICAgICAgaXRlbS5ncm91cElkID0gbnVsbDtcbiAgICAgICAgc2luZ2xlSXRlbS5wdXNoKGl0ZW0pXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGdyb3Vwcy5mb3JFYWNoKGdyb3VwID0+IHtcbiAgICAgIGNvbnN0IGNoaWxkID0gdGhpcy5fZGVwYXJ0bWVudFNlbGVjdGVkLmZpbHRlcihpdGVtID0+IGl0ZW0uZ3JvdXBJZCA9PSBncm91cC5pZCk7XG4gICAgICBncm91cC5jaGlsZHJlbiA9IGNoaWxkO1xuICAgIH0pO1xuICAgIHRoaXMucmVzdWx0QWNjZXNzLmRlcGFydG1lbnRzID0gWy4uLmdyb3VwcywgLi4uc2luZ2xlSXRlbV07XG4gIH1cblxuICBwcml2YXRlIF9maWx0ZXJPcHRpb25QZXJzb25DaGFuZ2UoKSB7XG4gICAgLy8gRmlsdGVyIHBlcnNvbiBieSByb2xlc1xuICAgIHRoaXMucGVyc29uRm9ybS5nZXQoJ3VzZXJHcm91cEZpbHRlcicpLnZhbHVlQ2hhbmdlc1xuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSwgZGVib3VuY2VUaW1lKDUwMCkpXG4gICAgICAuc3Vic2NyaWJlKGtleXdvcmQgPT4ge1xuICAgICAgICBpZiAoIXRoaXMub3B0aW9uRmlsdGVyUGVyc29uRGF0YUdsb2JhbC51c2VyR3JvdXBzLmxlbmd0aCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWtleXdvcmQpIHtcbiAgICAgICAgICB0aGlzLmZpbHRlcmVkU2VhcmNoVGV4dEJveC51c2VyR3JvdXAubmV4dCh0aGlzLm9wdGlvbkZpbHRlclBlcnNvbkRhdGFHbG9iYWwudXNlckdyb3Vwcyk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJlc3VsdEZpbHRlciA9IHRoaXMub3B0aW9uRmlsdGVyUGVyc29uRGF0YUdsb2JhbC51c2VyR3JvdXBzLmZpbHRlcih1c2VyR3JvdXAgPT4gdXNlckdyb3VwLm5hbWUudG9Mb2NhbGVMb3dlckNhc2UoKS5pbmNsdWRlcyhrZXl3b3JkLnRvTG9jYWxlTG93ZXJDYXNlKCkpKTtcbiAgICAgICAgdGhpcy5maWx0ZXJlZFNlYXJjaFRleHRCb3gudXNlckdyb3VwLm5leHQocmVzdWx0RmlsdGVyKTtcbiAgICAgIH0pO1xuICAgIC8vIEZpbHRlciBwZXJzb24gYnkgZGVwYXJ0bWVudHNcbiAgICB0aGlzLnBlcnNvbkZvcm0uZ2V0KCdkZXBhcnRtZW50RmlsdGVyJykudmFsdWVDaGFuZ2VzXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3ViY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIGlmICghdGhpcy5vcHRpb25GaWx0ZXJQZXJzb25EYXRhR2xvYmFsLmRlcGFydG1lbnRzKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGxldCBzZWFyY2ggPSB0aGlzLnBlcnNvbkZvcm0uZ2V0KCdkZXBhcnRtZW50RmlsdGVyJykudmFsdWU7XG4gICAgICAgIGlmICghc2VhcmNoKSB7XG4gICAgICAgICAgdGhpcy5maWx0ZXJlZFNlYXJjaFRleHRCb3guZGVwYXJ0bWVudC5uZXh0KHRoaXMub3B0aW9uRmlsdGVyUGVyc29uRGF0YUdsb2JhbC5kZXBhcnRtZW50cy5zbGljZSgpKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgc2VhcmNoID0gc2VhcmNoLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIHRoaXMuZmlsdGVyZWRTZWFyY2hUZXh0Qm94LmRlcGFydG1lbnQubmV4dChcbiAgICAgICAgICB0aGlzLm9wdGlvbkZpbHRlclBlcnNvbkRhdGFHbG9iYWwuZGVwYXJ0bWVudHMuZmlsdGVyKHggPT4geC5uYW1lLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihzZWFyY2gpID4gLTEpXG4gICAgICAgICk7XG4gICAgICB9KTtcbiAgfVxuXG4gIGdldFJlc3VsdFRhYkFjdGl2ZSgpIHtcbiAgICBjb25zdCByZXN1bHRPYmogPSB7XG4gICAgICAwOiB0aGlzLnJlc3VsdEFjY2Vzcy5wZXJzb25zLFxuICAgICAgMTogdGhpcy5yZXN1bHRBY2Nlc3MudXNlckdyb3VwcyxcbiAgICAgIDI6IHRoaXMucmVzdWx0QWNjZXNzLmRlcGFydG1lbnRzXG4gICAgfVxuICAgIHJldHVybiByZXN1bHRPYmpbdGhpcy5vcHRpb25TZWxlY3QudmFsdWVdO1xuICB9XG5cbiAgcHVibGljIGNoZWNrRXhpc3RPcHRpb25TZWxlY3Qob3B0aW9uOiBPcHRpb25TZWxlY3RBY2Nlc3NFbnVtKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5vcHRpb25zLmZpbmQoaXRlbSA9PiBpdGVtLnR5cGUgPT09IG9wdGlvbik7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkUGVyc29uRm9ybSgpIHtcbiAgICB0aGlzLnBlcnNvbkZvcm0gPSB0aGlzLl9mYi5ncm91cCh7XG4gICAgICB1c2VyR3JvdXA6IFtdLFxuICAgICAgZGVwYXJ0bWVudDogW10sXG4gICAgICBkZXBhcnRtZW50RmlsdGVyOiBbJyddLFxuICAgICAgcmVjdXJzaXZlOiBbe1xuICAgICAgICB2YWx1ZTogZmFsc2UsIGRpc2FibGVkOiB0cnVlXG4gICAgICB9XSxcbiAgICAgIGtleXdvcmQ6IFsnJ10sXG4gICAgICB1c2VyR3JvdXBGaWx0ZXI6IFsnJ10sXG4gICAgICBleGNsdWRlZFF1aXREZXBhcnRtZW50SWQ6IFt0cnVlXVxuICAgIH0pO1xuICB9XG5cblxuICBvbkZpbHRlclBlcnNvbigpIHtcbiAgICB0aGlzLmdldExvYWRpbmckLm5leHQodHJ1ZSk7XG4gICAgY29uc3QgZm9ybVZhbHVlID0gdGhpcy5wZXJzb25Gb3JtLmdldFJhd1ZhbHVlKCk7XG4gICAgY29uc3QgZmlsdGVyRGF0YTogRmlsdGVyUGVyc29uTW9kZWwgPSB7XG4gICAgICBkZXBhcnRtZW50SWQ6IGZvcm1WYWx1ZS5kZXBhcnRtZW50Py5pZCxcbiAgICAgIHVzZXJHcm91cElkOiBmb3JtVmFsdWUudXNlckdyb3VwPy5pZCxcbiAgICAgIGtleXdvcmQ6IGZvcm1WYWx1ZS5rZXl3b3JkLFxuICAgICAgcmVjdXJzaXZlOiBmb3JtVmFsdWUucmVjdXJzaXZlXG4gICAgfTtcbiAgICB0aGlzLmdldFNlYXJjaGluZyQubmV4dCh0cnVlKTtcbiAgICB0aGlzLl9yZXNldFBhZ2luZ2F0b3IodGhpcy5wYWdpbmdQZXJzb24pO1xuICAgIHRoaXMub25TZWFyY2hQZXJzb25FdmVudC5lbWl0KGZpbHRlckRhdGEpO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVzZXRQYWdpbmdhdG9yKHBhZ2luYXRvcjogUU1TUGFnaW5hdG9yQ29tcG9uZW50KSB7XG4gICAgaWYgKCFwYWdpbmF0b3IpXG4gICAgICByZXR1cm47XG4gICAgcGFnaW5hdG9yLmNoYW5nZVBhZ2UoMCk7XG4gICAgcGFnaW5hdG9yLnJlbmRlckRpc3BsYXlOdW1iZXJPZnBhZ2VzKCk7XG4gIH1cblxuICBvblNlYXJjaFBlcnNvbkZyZWVUZXh0KCkge1xuICAgIHRoaXMuZ2V0TG9hZGluZyQubmV4dCh0cnVlKTtcbiAgICB0aGlzLmdldFNlYXJjaGluZyQubmV4dCh0cnVlKTtcbiAgICB0aGlzLm9uU2VhcmNoUGVyc29uRnJlZVRleHRFdmVudC5lbWl0KHRoaXMucGVyc29uRm9ybS5nZXQoJ2tleXdvcmQnKS52YWx1ZSk7XG4gICAgdGhpcy5fcmVzZXRQYWdpbmdhdG9yKHRoaXMucGFnaW5nUGVyc29uKTtcbiAgfVxuXG4gIG9uRmlsdGVyVXNlckdyb3VwKCkge1xuICAgIHRoaXMuZ2V0TG9hZGluZyQubmV4dCh0cnVlKTtcbiAgICB0aGlzLmdldFNlYXJjaGluZyQubmV4dCh0cnVlKTtcbiAgICB0aGlzLl9yZXNldFBhZ2luZ2F0b3IodGhpcy5wYWdpbmdVc2VyR3JvdXApO1xuICAgIHRoaXMub25TZWFyY2hVc2VyR3JvdXBFdmVudC5lbWl0KHRoaXMudXNlckdyb3VwRm9ybS52YWx1ZSk7XG4gIH1cblxuICBvblNlbGVjdEl0ZW0odHlwZTogT3B0aW9uU2VsZWN0QWNjZXNzRW51bSwgaXRlbTogUU1TQWNjZXNzSXRlbSkge1xuICAgIGlmICghdGhpcy5hbGxvd1JlbW92ZSh0eXBlLCBpdGVtKSlcbiAgICAgIHJldHVybjtcbiAgICBpdGVtLnNlbGVjdGVkID0gIWl0ZW0uc2VsZWN0ZWQ7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlIE9wdGlvblNlbGVjdEFjY2Vzc0VudW0uUEVSU09OOlxuICAgICAgICB7XG4gICAgICAgICAgaWYgKHRoaXMuZGlhbG9nRGF0YS5tb2RlU2VsZWN0T25lUGVyc29uKSB7XG4gICAgICAgICAgICB0aGlzLnJlc3VsdEFjY2Vzcy5wZXJzb25zID0gaXRlbS5zZWxlY3RlZCA/IFtpdGVtXSA6IFtdO1xuICAgICAgICAgICAgdGhpcy5wZXJzb25GaWx0ZXJlZC5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICBpZiAoaXRlbS5pZCAhPT0gaXRlbS5pZCkge1xuICAgICAgICAgICAgICAgIGl0ZW0uc2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChpdGVtLnNlbGVjdGVkKSB7XG4gICAgICAgICAgICB0aGlzLnJlc3VsdEFjY2Vzcy5wZXJzb25zLnB1c2goaXRlbSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IGluZGV4SXRlbSA9IHRoaXMucmVzdWx0QWNjZXNzLnBlcnNvbnMuZmluZEluZGV4KHggPT4geC5pZCA9PT0gaXRlbS5pZCk7XG4gICAgICAgICAgaW5kZXhJdGVtID4gLTEgJiYgdGhpcy5yZXN1bHRBY2Nlc3MucGVyc29ucy5zcGxpY2UoaW5kZXhJdGVtLCAxKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgT3B0aW9uU2VsZWN0QWNjZXNzRW51bS5VU0VSX0dST1VQOlxuICAgICAgICB7XG4gICAgICAgICAgaWYgKHRoaXMuZGlhbG9nRGF0YS5tb2RlU2VsZWN0T25lVXNlckdyb3VwKSB7XG4gICAgICAgICAgICB0aGlzLnJlc3VsdEFjY2Vzcy51c2VyR3JvdXBzID0gaXRlbS5zZWxlY3RlZCA/IFtpdGVtXSA6IFtdO1xuICAgICAgICAgICAgdGhpcy51c2VyR3JvdXBGaWx0ZXJlZC5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICBpZiAoaXRlbS5pZCAhPT0gaXRlbS5pZCkge1xuICAgICAgICAgICAgICAgIGl0ZW0uc2VsZWN0ZWQgPSBmYWxzZVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGl0ZW0uc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgIHRoaXMucmVzdWx0QWNjZXNzLnVzZXJHcm91cHMucHVzaChpdGVtKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBpbmRleEl0ZW0gPSB0aGlzLnJlc3VsdEFjY2Vzcy51c2VyR3JvdXBzLmZpbmRJbmRleCh4ID0+IHguaWQgPT09IGl0ZW0uaWQpO1xuICAgICAgICAgIGluZGV4SXRlbSA+IC0xICYmIHRoaXMucmVzdWx0QWNjZXNzLnVzZXJHcm91cHMuc3BsaWNlKGluZGV4SXRlbSwgMSk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgb25SZW1vdmVDaGlwKHR5cGU6IE9wdGlvblNlbGVjdEFjY2Vzc0VudW0sIGl0ZW0sIGluZGV4KSB7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlIHRoaXMuT1BUSU9OX0VOVU0uUEVSU09OOlxuICAgICAgICB0aGlzLnJlc3VsdEFjY2Vzcy5wZXJzb25zLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgIGlmICh0aGlzLnBlcnNvbkZpbHRlcmVkW2luZGV4XSkge1xuICAgICAgICAgIHRoaXMucGVyc29uRmlsdGVyZWRbaW5kZXhdLnNlbGVjdGVkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIHRoaXMuT1BUSU9OX0VOVU0uVVNFUl9HUk9VUDpcbiAgICAgICAgdGhpcy5yZXN1bHRBY2Nlc3MudXNlckdyb3Vwcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICBpZiAodGhpcy51c2VyR3JvdXBGaWx0ZXJlZFtpbmRleF0pIHtcbiAgICAgICAgICB0aGlzLnVzZXJHcm91cEZpbHRlcmVkW2luZGV4XS5zZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSB0aGlzLk9QVElPTl9FTlVNLkRFUEFSVE1FTlQ6XG4gICAgICAgIHRoaXMucmVzdWx0QWNjZXNzLmRlcGFydG1lbnRzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgIHRoaXMuX2RlcGFydG1lbnRTZWxlY3RlZCA9IF8uY2xvbmVEZWVwKHRoaXMucmVzdWx0QWNjZXNzLmRlcGFydG1lbnRzKTtcbiAgICAgICAgaWYgKCF0aGlzLnRyZWVEZXBhcnRtZW50KVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgdGhpcy50cmVlRGVwYXJ0bWVudC5vblJlbW92ZU5vZGUoaXRlbS5pZCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIG9uU2VsZWN0aW9uVHlwZUNoYW5nZShldmVudDogTWF0U2VsZWN0Q2hhbmdlKSB7XG4gICAgc3dpdGNoIChldmVudC52YWx1ZSkge1xuICAgICAgY2FzZSB0aGlzLk9QVElPTl9FTlVNLlBFUlNPTjpcbiAgICAgICAgdGhpcy5idWlsZFBlcnNvbkZvcm0oKTtcbiAgICAgICAgdGhpcy5fZmlsdGVyT3B0aW9uUGVyc29uQ2hhbmdlKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSB0aGlzLk9QVElPTl9FTlVNLkRFUEFSVE1FTlQ6XG4gICAgICAgIHRoaXMuZGlhbG9nRGF0YS50cmVlRGVwYXJ0bWVudENvbmZpZy5zZWxlY3RlZExpc3QgPSB0aGlzLnNlbGVjdGVkRGVwYXJ0bWVudHM7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICB0aGlzLmdldExvYWRpbmckLm5leHQodHJ1ZSk7XG4gICAgdGhpcy5kaWFsb2dSZWYudXBkYXRlU2l6ZSh0aGlzLmRpYWxvZ0RhdGEuc2l6ZVVwZGF0ZURlZmF1bHQpO1xuICAgIHRoaXMub25TZWxlY3RPcHRpb25DaGFuZ2UkLm5leHQoZXZlbnQpO1xuICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgc2V0Rm9ybUNvbnRyb2xWYWx1ZShmb3JtQ29udHJvbE5hbWVzOiBzdHJpbmdbXSwgdmFsdWVzKSB7XG4gICAgZm9ybUNvbnRyb2xOYW1lcy5mb3JFYWNoKChjb250cm9sTmFtZSwgX2luZGV4KSA9PiB7XG4gICAgICB0aGlzLnBlcnNvbkZvcm0uZ2V0KGNvbnRyb2xOYW1lKT8uc2V0VmFsdWUodmFsdWVzW19pbmRleF0pO1xuICAgIH0pXG4gIH1cblxuICBpc0NoZWNrQWxsKHR5cGU6IE9wdGlvblNlbGVjdEFjY2Vzc0VudW0pIHtcbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgdGhpcy5PUFRJT05fRU5VTS5QRVJTT046XG4gICAgICAgIHJldHVybiAhdGhpcy5kaWFsb2dEYXRhLm1vZGVTZWxlY3RPbmVQZXJzb24gJiYgdGhpcy5wZXJzb25GaWx0ZXJlZC5sZW5ndGggJiYgdGhpcy5wZXJzb25GaWx0ZXJlZC5ldmVyeSh4ID0+IHguc2VsZWN0ZWQpO1xuICAgICAgY2FzZSB0aGlzLk9QVElPTl9FTlVNLlVTRVJfR1JPVVA6XG4gICAgICAgIHJldHVybiAhdGhpcy5kaWFsb2dEYXRhLm1vZGVTZWxlY3RPbmVVc2VyR3JvdXAgJiYgdGhpcy51c2VyR3JvdXBGaWx0ZXJlZC5sZW5ndGggJiYgdGhpcy51c2VyR3JvdXBGaWx0ZXJlZC5ldmVyeSh4ID0+IHguc2VsZWN0ZWQpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGlzRGlzYWJsZWRTZWxlY3RBbGwodHlwZTogT3B0aW9uU2VsZWN0QWNjZXNzRW51bSkge1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSBPcHRpb25TZWxlY3RBY2Nlc3NFbnVtLlBFUlNPTjogcmV0dXJuICF0aGlzLnBlcnNvbkZpbHRlcmVkLmxlbmd0aCB8fCB0aGlzLnBlcnNvbkZpbHRlcmVkLmV2ZXJ5KHggPT4gIXRoaXMuYWxsb3dSZW1vdmUodHlwZSwgeCkpXG4gICAgICBjYXNlIE9wdGlvblNlbGVjdEFjY2Vzc0VudW0uVVNFUl9HUk9VUDogcmV0dXJuICF0aGlzLnVzZXJHcm91cEZpbHRlcmVkLmxlbmd0aCB8fCB0aGlzLnVzZXJHcm91cEZpbHRlcmVkLmV2ZXJ5KHggPT4gIXRoaXMuYWxsb3dSZW1vdmUodHlwZSwgeCkpXG4gICAgICBkZWZhdWx0OiByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgaXNJbmRldGVybWluYXRlKHR5cGU6IE9wdGlvblNlbGVjdEFjY2Vzc0VudW0pIHtcbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgdGhpcy5PUFRJT05fRU5VTS5QRVJTT046XG4gICAgICAgIHJldHVybiAhdGhpcy5kaWFsb2dEYXRhLm1vZGVTZWxlY3RPbmVQZXJzb24gJiYgIXRoaXMuaXNDaGVja0FsbCh0eXBlKSAmJiB0aGlzLnBlcnNvbkZpbHRlcmVkPy5zb21lKHggPT4geC5zZWxlY3RlZCk7XG4gICAgICBjYXNlIHRoaXMuT1BUSU9OX0VOVU0uVVNFUl9HUk9VUDpcbiAgICAgICAgcmV0dXJuICF0aGlzLmRpYWxvZ0RhdGEubW9kZVNlbGVjdE9uZVVzZXJHcm91cCAmJiAhdGhpcy5pc0NoZWNrQWxsKHR5cGUpICYmIHRoaXMudXNlckdyb3VwRmlsdGVyZWQ/LnNvbWUoeCA9PiB4LnNlbGVjdGVkKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBvbkNoZWNrQWxsKHR5cGU6IE9wdGlvblNlbGVjdEFjY2Vzc0VudW0sICRldmVudCkge1xuICAgIGlmICh0aGlzLmlzRGlzYWJsZWRTZWxlY3RBbGwodHlwZSkpXG4gICAgICByZXR1cm47XG4gICAgJGV2ZW50LmNoZWNrZWQgPSAhJGV2ZW50LmNoZWNrZWQ7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlIHRoaXMuT1BUSU9OX0VOVU0uUEVSU09OOiB7XG4gICAgICAgIGlmICh0aGlzLmRpYWxvZ0RhdGEubW9kZVNlbGVjdE9uZVBlcnNvbikge1xuICAgICAgICAgICRldmVudC5jaGVja2VkID0gZmFsc2U7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5wZXJzb25GaWx0ZXJlZC5sZW5ndGgpXG4gICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgIHRoaXMucGVyc29uRmlsdGVyZWQuZmlsdGVyKHggPT4gdGhpcy5hbGxvd1JlbW92ZSh0eXBlLCB4KSkuZm9yRWFjaCh4ID0+IHguc2VsZWN0ZWQgPSAkZXZlbnQuY2hlY2tlZCk7XG4gICAgICAgIGNvbnN0IGlkRmlsdGVyZWQgPSB0aGlzLnBlcnNvbkZpbHRlcmVkLm1hcCh4ID0+IHguaWQpO1xuICAgICAgICBpZiAoJGV2ZW50LmNoZWNrZWQpIHtcbiAgICAgICAgICBjb25zdCBpZFBlcnNvblNlbGVjdGVkID0gdGhpcy5yZXN1bHRBY2Nlc3MucGVyc29ucy5tYXAoeCA9PiB4LmlkKTtcbiAgICAgICAgICB0aGlzLnJlc3VsdEFjY2Vzcy5wZXJzb25zID0gWy4uLnRoaXMucmVzdWx0QWNjZXNzLnBlcnNvbnMsIC4uLnRoaXMucGVyc29uRmlsdGVyZWQuZmlsdGVyKHggPT4gdGhpcy5hbGxvd1JlbW92ZSh0eXBlLCB4KSAmJiAhaWRQZXJzb25TZWxlY3RlZC5pbmNsdWRlcyh4LmlkKSldO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJlc3VsdEFjY2Vzcy5wZXJzb25zID0gdGhpcy5yZXN1bHRBY2Nlc3MucGVyc29ucy5maWx0ZXIoeCA9PiAhdGhpcy5hbGxvd1JlbW92ZSh0eXBlLCB4KSB8fCAhaWRGaWx0ZXJlZC5pbmNsdWRlcyh4LmlkKSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSB0aGlzLk9QVElPTl9FTlVNLlVTRVJfR1JPVVA6IHtcbiAgICAgICAgaWYgKHRoaXMuZGlhbG9nRGF0YS5tb2RlU2VsZWN0T25lVXNlckdyb3VwKSB7XG4gICAgICAgICAgJGV2ZW50LmNoZWNrZWQgPSBmYWxzZTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdXNlckdyb3VwUGFnaW5nID0gdGhpcy51c2VyR3JvdXBGaWx0ZXJlZDtcbiAgICAgICAgdXNlckdyb3VwUGFnaW5nLmZpbHRlcih4ID0+IHRoaXMuYWxsb3dSZW1vdmUodHlwZSwgeCkpLmZvckVhY2goeCA9PiB4LnNlbGVjdGVkID0gJGV2ZW50LmNoZWNrZWQpO1xuICAgICAgICBjb25zdCBpZEZpbHRlcmVkID0gdXNlckdyb3VwUGFnaW5nLm1hcCh4ID0+IHguaWQpO1xuICAgICAgICBpZiAoJGV2ZW50LmNoZWNrZWQpIHtcbiAgICAgICAgICBjb25zdCBpZFNlbGVjdGVkID0gdGhpcy5yZXN1bHRBY2Nlc3MudXNlckdyb3Vwcy5tYXAoeCA9PiB4LmlkKTtcbiAgICAgICAgICB0aGlzLnJlc3VsdEFjY2Vzcy51c2VyR3JvdXBzID0gWy4uLnRoaXMucmVzdWx0QWNjZXNzLnVzZXJHcm91cHMsIC4uLnVzZXJHcm91cFBhZ2luZy5maWx0ZXIoeCA9PiB0aGlzLmFsbG93UmVtb3ZlKHR5cGUsIHgpICYmICFpZFNlbGVjdGVkLmluY2x1ZGVzKHguaWQpKV07XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucmVzdWx0QWNjZXNzLnVzZXJHcm91cHMgPSB0aGlzLnJlc3VsdEFjY2Vzcy51c2VyR3JvdXBzLmZpbHRlcih4ID0+ICF0aGlzLmFsbG93UmVtb3ZlKHR5cGUsIHgpIHx8ICFpZEZpbHRlcmVkLmluY2x1ZGVzKHguaWQpKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgb25TZWxlY3Rpb25Ob2RlRGVwYXJ0bWVudENoYW5nZSh7IGFkZGVkLCByZW1vdmVkLCB1cGRhdGVkIH06IElTZWxlY3Rpb25Ob2RlQ2hhbmdlPFFNU1RyZWVOb2RlPikge1xuICAgIGlmIChhZGRlZC5sZW5ndGgpIHtcbiAgICAgIGFkZGVkLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgIGlmICh0aGlzLnJlc3VsdEFjY2Vzcy5kZXBhcnRtZW50cy5zb21lKHggPT4geC5pZCA9PT0gaXRlbS5pZCkpXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB0aGlzLnJlc3VsdEFjY2Vzcy5kZXBhcnRtZW50cy5wdXNoKGl0ZW0pO1xuICAgICAgfSk7XG4gICAgfVxuICAgIGlmIChyZW1vdmVkLmxlbmd0aCkge1xuICAgICAgcmVtb3ZlZC5mb3JFYWNoKHggPT4ge1xuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMucmVzdWx0QWNjZXNzLmRlcGFydG1lbnRzLmZpbmRJbmRleChpdGVtID0+IGl0ZW0uaWQgPT09IHguaWQpO1xuICAgICAgICBpZiAoaW5kZXggPCAwKVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgdGhpcy5yZXN1bHRBY2Nlc3MuZGVwYXJ0bWVudHMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAodXBkYXRlZC5sZW5ndGgpIHtcbiAgICAgIHVwZGF0ZWQuZm9yRWFjaCh4ID0+IHtcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnJlc3VsdEFjY2Vzcy5kZXBhcnRtZW50cy5maW5kSW5kZXgoaXRlbSA9PiBpdGVtLmlkID09IHguaWQpO1xuICAgICAgICBpZiAoaW5kZXggPCAwKVxuICAgICAgICAgIHJldHVybjtcblxuICAgICAgICBjb25zdCBkZXBhcnRtZW50cyA9IHRoaXMucmVzdWx0QWNjZXNzLmRlcGFydG1lbnRzLmZpbmQoaXRlbSA9PiBpdGVtLmlkID09IHguaWQpO1xuICAgICAgICBpZiAoIWRlcGFydG1lbnRzKVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgZGVwYXJ0bWVudHMuY2hpbGRyZW4gPSB4LmNoaWxkcmVuO1xuICAgICAgICBkZXBhcnRtZW50cy5jaGlsZENvdW50ID0geC5jaGlsZENvdW50O1xuXG4gICAgICAgIGlmIChkZXBhcnRtZW50cy5jaGlsZHJlbi5sZW5ndGgpXG4gICAgICAgICAgZGVwYXJ0bWVudHMuY2hpbGRyZW4uZm9yRWFjaCh4ID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5yZXN1bHRBY2Nlc3MuZGVwYXJ0bWVudHMuZmluZEluZGV4KGl0ZW0gPT4gaXRlbS5pZCA9PT0geC5pZCk7XG4gICAgICAgICAgICBpZiAoaW5kZXggPiAtMSlcbiAgICAgICAgICAgICAgdGhpcy5yZXN1bHRBY2Nlc3MuZGVwYXJ0bWVudHMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICAgIHRoaXMucmVzdWx0QWNjZXNzLmRlcGFydG1lbnRzLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICBpZiAoISFpdGVtLmNoaWxkcmVuKVxuICAgICAgICBpdGVtLmNoaWxkcmVuID0gaXRlbS5jaGlsZHJlbi5maWx0ZXIoKHgsIGluZGV4KSA9PiBpbmRleCA9PT0gaXRlbS5jaGlsZHJlbi5maW5kSW5kZXgoX3ggPT4geC5pZCA9PT0gX3guaWQpKTtcbiAgICB9KTtcbiAgICB0aGlzLl9kZXBhcnRtZW50U2VsZWN0ZWQgPSBfLmNsb25lRGVlcCh0aGlzLnJlc3VsdEFjY2Vzcy5kZXBhcnRtZW50cyk7XG4gICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBvblNjb2xsVG9Ob2RlVHJlZURlcGFydG1lbnQobm9kZTogUU1TVHJlZU5vZGUpIHtcbiAgICB0aGlzLm9wdGlvblNlbGVjdC52YWx1ZSA9PT0gdGhpcy5PUFRJT05fRU5VTS5ERVBBUlRNRU5UICYmIHRoaXMudHJlZURlcGFydG1lbnQuc2Nyb2xsVG9Ob2RlKG5vZGUuaWQpXG4gIH1cblxuICB0cmFja0J5Rm4oaW5kZXgsIGl0ZW0pIHtcbiAgICByZXR1cm4gaW5kZXg7XG4gIH1cblxuICB1cGRhdGVQZXJzb25GaWx0ZXIoZGF0YTogUU1TQWNjZXNzUGFnaW5nTW9kZWw8UU1TQWNjZXNzSXRlbT4pIHtcbiAgICB0aGlzLmdldFBlcnNvbiQubmV4dChkYXRhKTtcbiAgICB0aGlzLmdldExvYWRpbmckLm5leHQoZmFsc2UpO1xuICAgIHRoaXMuZ2V0U2VhcmNoaW5nJC5uZXh0KGZhbHNlKTtcbiAgfVxuXG4gIHVwZGF0ZVVzZXJHcm91cEZpbHRlcihkYXRhOiBRTVNBY2Nlc3NQYWdpbmdNb2RlbDxRTVNBY2Nlc3NJdGVtPikge1xuICAgIHRoaXMuZ2V0VXNlckdyb3VwJC5uZXh0KGRhdGEpO1xuICAgIHRoaXMuZ2V0TG9hZGluZyQubmV4dChmYWxzZSk7XG4gICAgdGhpcy5nZXRTZWFyY2hpbmckLm5leHQoZmFsc2UpO1xuICB9XG5cbiAgb25QYWdpbmF0b3JFdmVudCh2YWw6IFBhZ2VFdmVudCwgdHlwZTogT3B0aW9uU2VsZWN0QWNjZXNzRW51bSkge1xuICAgIGlmICh0aGlzLmdldFNlYXJjaGluZyQudmFsdWUpXG4gICAgICByZXR1cm47XG4gICAgdGhpcy5nZXRMb2FkaW5nJC5uZXh0KHRoaXMub3B0aW9uU2VsZWN0LnZhbHVlICE9PSB0aGlzLk9QVElPTl9FTlVNLkRFUEFSVE1FTlQpO1xuICAgIHRoaXMub25QYWdpbmdFdmVudC5lbWl0KHtcbiAgICAgIC4uLnZhbCxcbiAgICAgIHR5cGU6IHR5cGVcbiAgICB9KTtcbiAgfVxuXG4gIG9uUmVzdWx0RGVwYXJ0bWVudENoYW5nZShldmVudDogUU1TVHJlZU5vZGVbXSkge1xuICAgIC8vIHRoaXMucmVzdWx0QWNjZXNzLmRlcGFydG1lbnRzID0gZXZlbnQ7XG4gIH1cblxuICB1cGRhdGVSZXN1bHRTZWFyY2hEZXBhcnRtZW50KGRhdGE6IFFNU0FjY2Vzc1BhZ2luZ01vZGVsPFFNU0ZsYXROb2RlVHJlZT4gPSBuZXcgUU1TQWNjZXNzUGFnaW5nTW9kZWw8UU1TRmxhdE5vZGVUcmVlPigpKSB7XG4gICAgaWYgKCF0aGlzLnRyZWVEZXBhcnRtZW50KVxuICAgICAgcmV0dXJuO1xuICAgIGRhdGEgPSBkYXRhIGFzIFFNU0RlcGFydG1lbnRQYWdpbmdNb2RlbDxRTVNGbGF0Tm9kZVRyZWU+O1xuICAgIGlmICh0aGlzLmRpYWxvZ0RhdGEuZGlzYWJsZVNlbGVjdGVkTGlzdCkge1xuICAgICAgZGF0YS5kYXRhLmZvckVhY2goeCA9PiB4LmRpc2FibGVkID0gIXRoaXMuYWxsb3dSZW1vdmUoT3B0aW9uU2VsZWN0QWNjZXNzRW51bS5ERVBBUlRNRU5ULCB4KSk7XG4gICAgfVxuICAgIHRoaXMudHJlZURlcGFydG1lbnQuc2V0UmVzdWx0U2VhcmNoKGRhdGEpO1xuICB9XG5cbiAgZ2VuZXJhdGVUb29sdGlwKG5vZGU6IGFueSkge1xuICAgIGlmICh0aGlzLmRpYWxvZ0RhdGE/LmZvcm1hdFRvb2x0aXApXG4gICAgICByZXR1cm4gdGhpcy5kaWFsb2dEYXRhLmZvcm1hdFRvb2x0aXAobm9kZSk7XG4gICAgcmV0dXJuIChub2RlPy5pc0dyb3VwKSA/IHRoaXMuZm9ybWF0U3RyaW5nKHRoaXMuTEFORy5UT09MVElQX0lOQ0xVREVfU1VCX0RFUEFSVE1FTlQsIG5vZGUubmFtZSwgbm9kZS5jaGlsZHJlbj8ubGVuZ3RoLnRvU3RyaW5nKCkpIDogKGAke25vZGUubmFtZX0gJHtub2RlPy5zdWJOYW1lID8gYC0gKCR7bm9kZS5zdWJOYW1lfSlgIDogJyd9YCk7XG4gIH1cblxuICBwcml2YXRlIGZvcm1hdFN0cmluZyguLi5yZXBsYWNlbWVudHM6IHN0cmluZ1tdKTogc3RyaW5nIHtcbiAgICBsZXQgcmVzdWx0ID0gYXJndW1lbnRzWzBdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aCAtIDE7IGkrKykge1xuICAgICAgY29uc3QgcmVnID0gbmV3IFJlZ0V4cChgXFxcXHske2l9XFxcXH1gLCAnZ20nKTtcbiAgICAgIHJlc3VsdCA9IHJlc3VsdC5yZXBsYWNlKHJlZywgYXJndW1lbnRzW2kgKyAxXSk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBoYXNJdGVtU2VsZWN0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMucmVzdWx0QWNjZXNzKS5zb21lKGtleSA9PiAhIXRoaXMucmVzdWx0QWNjZXNzW2tleV0/Lmxlbmd0aClcbiAgfVxuXG4gIHVwZGF0ZURlcGFydG1lbnQoZGF0YTogUU1TVHJlZU5vZGVbXSA9IFtdKSB7XG4gICAgdGhpcy5nZXRMb2FkaW5nJC5uZXh0KGZhbHNlKTtcblxuICAgIGlmICh0aGlzLmRpYWxvZ0RhdGEuZGlzYWJsZVNlbGVjdGVkTGlzdCkge1xuICAgICAgZGF0YS5mb3JFYWNoKGl0ZW0gPT4gaXRlbS5kaXNhYmxlZCA9ICF0aGlzLmFsbG93UmVtb3ZlKE9wdGlvblNlbGVjdEFjY2Vzc0VudW0uREVQQVJUTUVOVCwgaXRlbSkpO1xuICAgIH1cbiAgICB0aGlzLmRpYWxvZ0RhdGEudHJlZURlcGFydG1lbnRDb25maWcudHJlZURhdGEgPSBfLmNsb25lRGVlcChkYXRhKTtcbiAgfVxuXG4gIHVwZGF0ZU9wdGlvblBlcnNvbkZpbHRlcihkZXBhcnRtZW50RmlsdGVyOiBRTVNGbGF0Tm9kZVRyZWVbXSA9IFtdLCB1c2VyR3JvdXBGaWx0ZXI6IFFNU0FjY2Vzc0l0ZW1bXSA9IFtdKSB7XG4gICAgdGhpcy5vcHRpb25GaWx0ZXJQZXJzb25EYXRhR2xvYmFsLmRlcGFydG1lbnRzID0gZGVwYXJ0bWVudEZpbHRlcjtcbiAgICB0aGlzLm9wdGlvbkZpbHRlclBlcnNvbkRhdGFHbG9iYWwudXNlckdyb3VwcyA9IHVzZXJHcm91cEZpbHRlcjtcbiAgICB0aGlzLmZpbHRlcmVkU2VhcmNoVGV4dEJveC5kZXBhcnRtZW50Lm5leHQoZGVwYXJ0bWVudEZpbHRlcik7XG4gICAgdGhpcy5maWx0ZXJlZFNlYXJjaFRleHRCb3gudXNlckdyb3VwLm5leHQodXNlckdyb3VwRmlsdGVyKTtcbiAgfVxuXG4gIHNldERlZmF1bHRQYWdlU2l6ZU9wdGlvbihkYXRhOiBudW1iZXJbXSkge1xuICAgIHRoaXMuUEFHRV9TSVpFX09QVElPTiA9IGRhdGE7XG4gIH1cbiAgYWxsb3dSZW1vdmUgPSAodHlwZTogT3B0aW9uU2VsZWN0QWNjZXNzRW51bSwgaXRlbTogYW55KTogYm9vbGVhbiA9PiB7XG4gICAgaWYgKCF0aGlzLmRpYWxvZ0RhdGEuZGlzYWJsZVNlbGVjdGVkTGlzdClcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIGNvbnN0IHsgcGVyc29ucywgZGVwYXJ0bWVudHMsIHVzZXJHcm91cHMgfSA9IHRoaXMuZGlhbG9nRGF0YS5kYXRhLnNlbGVjdGVkRGF0YTtcbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgT3B0aW9uU2VsZWN0QWNjZXNzRW51bS5QRVJTT046IHJldHVybiAhcGVyc29ucy5zb21lKHggPT4geC5pZCA9PSBpdGVtLmlkKVxuICAgICAgY2FzZSBPcHRpb25TZWxlY3RBY2Nlc3NFbnVtLkRFUEFSVE1FTlQ6IHJldHVybiAhZGVwYXJ0bWVudHMuc29tZSh4ID0+IHguaWQgPT0gaXRlbS5pZClcbiAgICAgIGNhc2UgT3B0aW9uU2VsZWN0QWNjZXNzRW51bS5VU0VSX0dST1VQOiByZXR1cm4gIXVzZXJHcm91cHMuc29tZSh4ID0+IHguaWQgPT0gaXRlbS5pZClcbiAgICAgIGRlZmF1bHQ6IHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxufVxuXG4iXX0=
|
596
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWFjY2Vzcy1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcW1zLWFuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL3NlbGVjdC1hY2Nlc3MtZGlhbG9nL3NlbGVjdC1hY2Nlc3MtZGlhbG9nLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBSUwsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUdOLFNBQVMsRUFDVCxpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQWEsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRSxPQUFPLEVBQUUsNEJBQTRCLEVBQTZCLE1BQU0sNEJBQTRCLENBQUM7QUFDckcsT0FBTyxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUV6RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxLQUFLLENBQUMsTUFBTSxRQUFRLENBQUM7QUFDNUIsT0FBTyxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEQsT0FBTyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUd6RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUN0RixPQUFPLEVBQUUsY0FBYyxFQUF5QixNQUFNLGtCQUFrQixDQUFDO0FBRXpFLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLDREQUE0RCxDQUFDO0FBQzNHLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRTVFLE9BQU8sRUFBOEIsb0JBQW9C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QUFRLEVBQUUsMEJBQTBCO2dCQUNwQyx1Z3FCQUFvRDtnQkFFcEQsVUFBVSxFQUFFLENBQUMsNEJBQTRCLENBQUM7Z0JBQzFDLFNBQVMsRUFBRTtvQkFDVDt3QkFDRSxPQUFPLEVBQUUsNEJBQTRCO3dCQUNyQyxRQUFRLElBRXNCO3FCQUMvQjtpQkFDRjtnQkFDRCxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTs7YUFDdEM7OztZQW5DeUIsWUFBWTtZQWtCN0IscUJBQXFCLHVCQWtIekIsTUFBTSxTQUFDLGVBQWU7WUE1SGxCLHVCQUF1QjtZQVZ2QixXQUFXO1lBVGxCLGlCQUFpQjs7O21CQW9GaEIsU0FBUyxTQUFDLE1BQU0sRUFBRTtvQkFDakIsSUFBSSxFQUFFLDZCQUE2QjtpQkFDcEM7MkJBZ0JBLFNBQVMsU0FBQyxjQUFjOzhCQUN4QixTQUFTLFNBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBBZnRlckNvbnRlbnRDaGVja2VkLFxyXG4gIEFmdGVyQ29udGVudEluaXQsXHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIEluamVjdCxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIFZpZXdDaGlsZCxcclxuICBWaWV3RW5jYXBzdWxhdGlvblxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTUFUX0NIRUNLQk9YX0RFRkFVTFRfT1BUSU9OUywgTWF0Q2hlY2tib3hEZWZhdWx0T3B0aW9ucyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoZWNrYm94JztcclxuaW1wb3J0IHsgTUFUX0RJQUxPR19EQVRBLCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBQYWdlRXZlbnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3InO1xyXG5pbXBvcnQgeyBNYXRTZWxlY3RDaGFuZ2UgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3QnO1xyXG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgUU1TRmxhdE5vZGVUcmVlIH0gZnJvbSAnLi4vLi4vY29tbW9uL21vZGVscy9xbXMtZmxhdC1ub2RlLm1vZGVsJztcclxuaW1wb3J0IHsgUU1TVHJlZU5vZGUgfSBmcm9tICcuLi8uLi9jb21tb24vbW9kZWxzL3Ftcy10cmVlLW5vZGUubW9kZWwnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVMaWJyYXJ5U2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy90cmFuc2xhdGlvbi1yZWdpc3RyeS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFBhZ2luYXRpb25TaXplLCBRTVNQYWdpbmF0b3JDb21wb25lbnQgfSBmcm9tICcuLi9xbXMtcGFnaW5hdG9yJztcclxuaW1wb3J0IHsgSVNlbGVjdGlvbk5vZGVDaGFuZ2UsIFFNU0RlcGFydG1lbnRQYWdpbmdNb2RlbCB9IGZyb20gJy4uL3NlbGVjdC1kZXBhcnRtZW50LXRyZWUnO1xyXG5pbXBvcnQgeyBTZWxlY3REZXBhcnRtZW50VHJlZUNvbXBvbmVudCB9IGZyb20gJy4uL3NlbGVjdC1kZXBhcnRtZW50LXRyZWUvc2VsZWN0LWRlcGFydG1lbnQtdHJlZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTZWxlY3RBY2Nlc3NBbmltYXRpb25UcmlnZ2VyIH0gZnJvbSAnLi9jb21tb24vYW5pbWF0aW9uJztcclxuaW1wb3J0IHsgT3B0aW9uU2VsZWN0QWNjZXNzRW51bSB9IGZyb20gJy4vY29tbW9uL29wdGlvbi1zZWxlY3QtYWNjZXNzLmVudW0nO1xyXG5pbXBvcnQgeyBRTVNBY2Nlc3NJdGVtIH0gZnJvbSAnLi9tb2RlbC9hY2Nlc3MtaXRlbS5tb2RlbCc7XHJcbmltcG9ydCB7IFFNU0FjY2Vzc1BhZ2luZ0NoYW5nZU1vZGVsLCBRTVNBY2Nlc3NQYWdpbmdNb2RlbCB9IGZyb20gJy4vbW9kZWwvYWNjZXNzLXBhZ2luZy5tb2RlbCc7XHJcbmltcG9ydCB7IEZpbHRlclBlcnNvbk1vZGVsIH0gZnJvbSAnLi9tb2RlbC9maWx0ZXItcGVyc29uLm1vZGVsJztcclxuaW1wb3J0IHsgT3B0aW9uU2VsZWN0QWNjZXNzTW9kZWwgfSBmcm9tICcuL21vZGVsL29wdGlvbi1zZWxlY3QtYWNjZXNzLm1vZGVsJztcclxuaW1wb3J0IHsgUU1TU2VsZWN0QWNjZXNzRGlhbG9nIH0gZnJvbSAnLi9tb2RlbC9zZWxlY3QtYWNjZXNzLWNvbmZpZy5tb2RlbCc7XHJcbmltcG9ydCB7IFFNU1NlbGVjdEFjY2Vzc1Jlc3VsdCB9IGZyb20gJy4vbW9kZWwvc2VsZWN0LWFjY2Vzcy1kYXRhJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAncW1zLXNlbGVjdC1hY2Nlc3MtZGlhbG9nJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vc2VsZWN0LWFjY2Vzcy1kaWFsb2cuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3NlbGVjdC1hY2Nlc3MtZGlhbG9nLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgYW5pbWF0aW9uczogW1NlbGVjdEFjY2Vzc0FuaW1hdGlvblRyaWdnZXJdLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBNQVRfQ0hFQ0tCT1hfREVGQVVMVF9PUFRJT05TLFxyXG4gICAgICB1c2VWYWx1ZToge1xyXG4gICAgICAgIGNsaWNrQWN0aW9uOiAnbm9vcCdcclxuICAgICAgfSBhcyBNYXRDaGVja2JveERlZmF1bHRPcHRpb25zXHJcbiAgICB9XHJcbiAgXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBRTVNTZWxlY3RBY2Nlc3NEaWFsb2dDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCwgQWZ0ZXJDb250ZW50SW5pdCwgQWZ0ZXJDb250ZW50Q2hlY2tlZCB7XHJcbiAgbmdVbnN1YmNyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICBMQU5HOiBhbnk7XHJcbiAgb3B0aW9uU2VsZWN0ID0gbmV3IEZvcm1Db250cm9sKCk7XHJcbiAgT1BUSU9OX0VOVU0gPSBPcHRpb25TZWxlY3RBY2Nlc3NFbnVtO1xyXG4gIG9wdGlvbnM6IE9wdGlvblNlbGVjdEFjY2Vzc01vZGVsW10gPSBbXTtcclxuXHJcbiAgcHJpdmF0ZSBfZGVwYXJ0bWVudFNlbGVjdGVkOiBRTVNUcmVlTm9kZVtdID0gW107XHJcbiAgZ2V0IHNlbGVjdGVkRGVwYXJ0bWVudHMoKSB7XHJcbiAgICBjb25zdCBkZXBhcnRtZW50U2VsZWN0ZWQ6IFFNU0ZsYXROb2RlVHJlZVtdID0gW107XHJcbiAgICB0aGlzLl9kZXBhcnRtZW50U2VsZWN0ZWQuZm9yRWFjaCh4ID0+IHtcclxuICAgICAgZGVwYXJ0bWVudFNlbGVjdGVkLnB1c2goe1xyXG4gICAgICAgIGlkOiB4LmlkLFxyXG4gICAgICAgIGdyb3VwSWQ6IHguZ3JvdXBJZCxcclxuICAgICAgICBpc0dyb3VwOiB4LmlzR3JvdXBcclxuICAgICAgfSBhcyBRTVNGbGF0Tm9kZVRyZWUpO1xyXG4gICAgICBpZiAoIXguY2hpbGRyZW4/Lmxlbmd0aClcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIGRlcGFydG1lbnRTZWxlY3RlZC5wdXNoKC4uLih4LmNoaWxkcmVuLm1hcChpdGVtID0+ICh7XHJcbiAgICAgICAgaWQ6IGl0ZW0uaWQsXHJcbiAgICAgICAgZ3JvdXBJZDogaXRlbS5ncm91cElkLFxyXG4gICAgICAgIGlzR3JvdXA6IGl0ZW0uaXNHcm91cFxyXG4gICAgICB9IGFzIFFNU0ZsYXROb2RlVHJlZSkpKSk7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBkZXBhcnRtZW50U2VsZWN0ZWQgfHwgW107XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcGVyc29uRm9ybTogRm9ybUdyb3VwO1xyXG4gIHB1YmxpYyB1c2VyR3JvdXBGb3JtID0gbmV3IEZvcm1Db250cm9sKCcnKVxyXG4gIHB1YmxpYyBnZXRMb2FkaW5nJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIG9uU2VhcmNoUGVyc29uRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPEZpbHRlclBlcnNvbk1vZGVsPigpO1xyXG4gIG9uU2VhcmNoUGVyc29uRnJlZVRleHRFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBvblNlYXJjaFVzZXJHcm91cEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcbiAgb25TZWFyY2hEZXBhcnRtZW50RXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgb25QYWdpbmdFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8UU1TQWNjZXNzUGFnaW5nQ2hhbmdlTW9kZWw+KCk7XHJcbiAgb25TZWxlY3RPcHRpb25DaGFuZ2UkID0gbmV3IFN1YmplY3Q8TWF0U2VsZWN0Q2hhbmdlPigpO1xyXG4gIHRyZWVEZXBhcnRtZW50OiBTZWxlY3REZXBhcnRtZW50VHJlZUNvbXBvbmVudFxyXG4gIEBWaWV3Q2hpbGQoJ3RyZWUnLCB7XHJcbiAgICByZWFkOiBTZWxlY3REZXBhcnRtZW50VHJlZUNvbXBvbmVudFxyXG4gIH0pIHNldCB0cmVlKGRhdGE6IFNlbGVjdERlcGFydG1lbnRUcmVlQ29tcG9uZW50KSB7XHJcbiAgICB0aGlzLnRyZWVEZXBhcnRtZW50ID0gZGF0YTtcclxuXHJcbiAgICBjb25zdCBncm91cHMgPSB0aGlzLnJlc3VsdEFjY2Vzcy5kZXBhcnRtZW50cy5maWx0ZXIoeCA9PiB4LmlzR3JvdXApO1xyXG4gICAgaWYgKGdyb3Vwcy5sZW5ndGgpXHJcbiAgICAgIGdyb3Vwcy5mb3JFYWNoKGdyb3VwID0+IHtcclxuICAgICAgICBpZiAoIWdyb3VwLmNoaWxkQ291bnQpIHtcclxuICAgICAgICAgIGlmICghdGhpcy50cmVlRGVwYXJ0bWVudClcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgY29uc3Qgbm9kZSA9IHRoaXMudHJlZURlcGFydG1lbnQudHJlZUNvbnRyb2wuZGF0YU5vZGVzLmZpbmQoeCA9PiB4LmlkID09IGdyb3VwLmlkKTtcclxuICAgICAgICAgIGlmIChub2RlKVxyXG4gICAgICAgICAgICBncm91cC5jaGlsZENvdW50ID0gdGhpcy50cmVlRGVwYXJ0bWVudC5nZXRMaXN0Q2hpbGRyZW5PZk5vZGUobm9kZSkubGVuZ3RoO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBAVmlld0NoaWxkKCdwYWdpbmdQZXJzb24nKSBwYWdpbmdQZXJzb246IFFNU1BhZ2luYXRvckNvbXBvbmVudDtcclxuICBAVmlld0NoaWxkKCdwYWdpbmdVc2VyR3JvdXAnKSBwYWdpbmdVc2VyR3JvdXA6IFFNU1BhZ2luYXRvckNvbXBvbmVudDtcclxuXHJcbiAgLyoqIGxpc3QgZmlsdGVyZWQgYnkgc2VhcmNoIGtleXdvcmQgKi9cclxuICBvcHRpb25GaWx0ZXJQZXJzb25EYXRhR2xvYmFsOiB7XHJcbiAgICBkZXBhcnRtZW50czogUU1TRmxhdE5vZGVUcmVlW10sXHJcbiAgICB1c2VyR3JvdXBzOiBRTVNBY2Nlc3NJdGVtW11cclxuICB9ID0ge1xyXG4gICAgICBkZXBhcnRtZW50czogW10sXHJcbiAgICAgIHVzZXJHcm91cHM6IFtdXHJcbiAgICB9O1xyXG5cclxuICBwdWJsaWMgZmlsdGVyZWRTZWFyY2hUZXh0Qm94ID0ge1xyXG4gICAgZGVwYXJ0bWVudDogbmV3IEJlaGF2aW9yU3ViamVjdDxRTVNGbGF0Tm9kZVRyZWVbXT4oW10pLFxyXG4gICAgdXNlckdyb3VwOiBuZXcgQmVoYXZpb3JTdWJqZWN0PFFNU0FjY2Vzc0l0ZW1bXT4oW10pLFxyXG4gIH1cclxuICBnZXRQZXJzb24kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxRTVNBY2Nlc3NQYWdpbmdNb2RlbDxRTVNBY2Nlc3NJdGVtPj4obmV3IFFNU0FjY2Vzc1BhZ2luZ01vZGVsPFFNU0FjY2Vzc0l0ZW0+KCkpO1xyXG4gIGdldCBwZXJzb25GaWx0ZXJlZCgpIHtcclxuICAgIGNvbnN0IHBlcnNvbnMgPSB0aGlzLmdldFBlcnNvbiQudmFsdWU7XHJcbiAgICBjb25zdCBpZHMgPSB0aGlzLnJlc3VsdEFjY2Vzcy5wZXJzb25zLm1hcCh4ID0+IHguaWQpO1xyXG4gICAgcGVyc29ucy5kYXRhPy5mb3JFYWNoKHggPT4geC5zZWxlY3RlZCA9IGlkcy5pbmNsdWRlcyh4LmlkKSk7XHJcbiAgICByZXR1cm4gcGVyc29ucy5kYXRhIHx8IFtdO1xyXG4gIH1cclxuXHJcbiAgZ2V0VXNlckdyb3VwJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8UU1TQWNjZXNzUGFnaW5nTW9kZWw8UU1TQWNjZXNzSXRlbT4+KG5ldyBRTVNBY2Nlc3NQYWdpbmdNb2RlbDxRTVNBY2Nlc3NJdGVtPigpKTtcclxuICBnZXQgdXNlckdyb3VwRmlsdGVyZWQoKSB7XHJcbiAgICBjb25zdCB1c2VyR3JvdXBzID0gdGhpcy5nZXRVc2VyR3JvdXAkLnZhbHVlO1xyXG4gICAgY29uc3QgaWRzID0gdGhpcy5yZXN1bHRBY2Nlc3MudXNlckdyb3Vwcy5tYXAoeCA9PiB4LmlkKTtcclxuICAgIHVzZXJHcm91cHMuZGF0YT8uZm9yRWFjaCh4ID0+IHguc2VsZWN0ZWQgPSBpZHMuaW5jbHVkZXMoeC5pZCkpO1xyXG4gICAgcmV0dXJuIHVzZXJHcm91cHMuZGF0YSB8fCBbXTtcclxuICB9O1xyXG5cclxuICBQQUdJTkFUSU9OX1NJWkUgPSBQYWdpbmF0aW9uU2l6ZTtcclxuICBQQUdFX1NJWkVfT1BUSU9OOiBudW1iZXJbXSA9IFs1LCAxMCwgMTUsIDIwLCAyNSwgMTAwXTtcclxuICByZXN1bHRBY2Nlc3MgPSBuZXcgUU1TU2VsZWN0QWNjZXNzUmVzdWx0KCk7XHJcbiAgYXJyU2tlbGV0b24gPSBuZXcgQXJyYXkoOCkuZmlsbCgwKTtcclxuICAvL3ByZXZlbnQgZXZlbnQgcGFnaW5nIHdoZW4gc2VhcmNoIGVtaXQgc2VhcmNoIGV2ZW50XHJcbiAgZ2V0U2VhcmNoaW5nJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8UU1TU2VsZWN0QWNjZXNzRGlhbG9nQ29tcG9uZW50PixcclxuICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgZGlhbG9nRGF0YTogUU1TU2VsZWN0QWNjZXNzRGlhbG9nLFxyXG4gICAgcHVibGljIHRyYW5zbGF0ZTogVHJhbnNsYXRlTGlicmFyeVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9mYjogRm9ybUJ1aWxkZXIsXHJcbiAgICBwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZlxyXG4gICkge1xyXG4gICAgdGhpcy5faW5pdFJlc3VsdEFjY2VzcygpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlckNvbnRlbnRDaGVja2VkKCk6IHZvaWQge1xyXG4gICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnRyYW5zbGF0ZS5nZXRMYW5ndWFnZVN1YmplY3QkLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSkuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgaWYgKHJlcykge1xyXG4gICAgICAgIHRoaXMuTEFORyA9IHRoaXMudHJhbnNsYXRlLmdldE9iamVjdExhbmcocmVzKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLl9idWlsZE9wdGlvblNlbGVjdCgpO1xyXG4gICAgdGhpcy5nZXRMb2FkaW5nJC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJjcmliZSkpXHJcbiAgICAgIC5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xyXG4gICAgICAgIGlmIChyZXNwb25zZSkge1xyXG4gICAgICAgICAgdGhpcy5wZXJzb25Gb3JtICYmIHRoaXMucGVyc29uRm9ybS5kaXNhYmxlKCk7XHJcbiAgICAgICAgICB0aGlzLnVzZXJHcm91cEZvcm0gJiYgdGhpcy51c2VyR3JvdXBGb3JtLmRpc2FibGUoKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5wZXJzb25Gb3JtICYmIHRoaXMucGVyc29uRm9ybS5lbmFibGUoKTtcclxuICAgICAgICB0aGlzLnVzZXJHcm91cEZvcm0gJiYgdGhpcy51c2VyR3JvdXBGb3JtLmVuYWJsZSgpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5uZ1Vuc3ViY3JpYmUubmV4dCgpO1xyXG4gICAgdGhpcy5uZ1Vuc3ViY3JpYmUuY29tcGxldGUoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2J1aWxkT3B0aW9uU2VsZWN0KCkge1xyXG4gICAgY29uc3Qgb3B0aW9uT2JqID0ge1xyXG4gICAgICBlbmFibGVTZWxlY3REZXBhcnRtZW50OiB7XHJcbiAgICAgICAgZGlzcGxheU5hbWU6ICdERVBBUlRNRU5UJyxcclxuICAgICAgICB0eXBlOiB0aGlzLk9QVElPTl9FTlVNLkRFUEFSVE1FTlRcclxuICAgICAgfSxcclxuICAgICAgZW5hYmxlU2VsZWN0UGVyc29uOiB7XHJcbiAgICAgICAgZGlzcGxheU5hbWU6ICdQRVJTT04nLFxyXG4gICAgICAgIHR5cGU6IHRoaXMuT1BUSU9OX0VOVU0uUEVSU09OXHJcbiAgICAgIH0sXHJcbiAgICAgIGVuYWJsZVNlbGVjdFVzZXJHcm91cDoge1xyXG4gICAgICAgIGRpc3BsYXlOYW1lOiAnVVNFUl9HUk9VUCcsXHJcbiAgICAgICAgdHlwZTogdGhpcy5PUFRJT05fRU5VTS5VU0VSX0dST1VQXHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBmb3IgKGxldCBpdGVtIGluIHRoaXMuZGlhbG9nRGF0YSkge1xyXG4gICAgICBpZiAoISF0aGlzLmRpYWxvZ0RhdGFbaXRlbV0gJiYgb3B0aW9uT2JqW2l0ZW1dICYmICF0aGlzLmRpYWxvZ0RhdGEuc2tpcEZpcnN0QXNraW5nU2NyZWVuKSB7XHJcbiAgICAgICAgdGhpcy5vcHRpb25zLnB1c2gob3B0aW9uT2JqW2l0ZW1dKVxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhpcy5kaWFsb2dEYXRhLnNraXBGaXJzdEFza2luZ1NjcmVlbiAmJiBvcHRpb25PYmpbaXRlbV0pIHtcclxuICAgICAgICB0aGlzLm9wdGlvbnMucHVzaChvcHRpb25PYmpbaXRlbV0pXHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLmxlbmd0aCA9PT0gMSB8fCB0aGlzLmRpYWxvZ0RhdGEuc2tpcEZpcnN0QXNraW5nU2NyZWVuKSB7XHJcbiAgICAgIHRoaXMuZGlhbG9nUmVmLnVwZGF0ZVNpemUodGhpcy5kaWFsb2dEYXRhLnNpemVVcGRhdGVEZWZhdWx0KTtcclxuICAgICAgdGhpcy5vcHRpb25TZWxlY3Quc2V0VmFsdWUodGhpcy5vcHRpb25zWzBdLnR5cGUpO1xyXG4gICAgICBjb25zdCBldmVudCQgPSBuZXcgTWF0U2VsZWN0Q2hhbmdlKG51bGwsIHRoaXMub3B0aW9uc1swXS50eXBlKTtcclxuICAgICAgdGhpcy5vblNlbGVjdGlvblR5cGVDaGFuZ2UoZXZlbnQkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2luaXRSZXN1bHRBY2Nlc3MoKSB7XHJcbiAgICB0aGlzLnJlc3VsdEFjY2VzcyA9IF8uY2xvbmVEZWVwKHtcclxuICAgICAgLi4udGhpcy5kaWFsb2dEYXRhLmRhdGEuc2VsZWN0ZWREYXRhLFxyXG4gICAgICBkZXBhcnRtZW50czogW11cclxuICAgIH0gYXMgUU1TU2VsZWN0QWNjZXNzUmVzdWx0KTtcclxuICAgIC8vIGluaXQgZ3JvdXAgc2VsZWN0ZWQgZGVwYXJ0bWVudFxyXG4gICAgdGhpcy5fZGVwYXJ0bWVudFNlbGVjdGVkID0gXy5jbG9uZURlZXAodGhpcy5kaWFsb2dEYXRhLmRhdGEuc2VsZWN0ZWREYXRhLmRlcGFydG1lbnRzKTtcclxuICAgIGNvbnN0IGdyb3VwcyA9IFtdO1xyXG4gICAgY29uc3Qgc2luZ2xlSXRlbSA9IFtdO1xyXG5cclxuICAgIHRoaXMuX2RlcGFydG1lbnRTZWxlY3RlZC5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICBpZiAoaXRlbS5pc0dyb3VwKSB7XHJcbiAgICAgICAgZ3JvdXBzLnB1c2goaXRlbSk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoIWl0ZW0uZ3JvdXBJZCkge1xyXG4gICAgICAgIHNpbmdsZUl0ZW0ucHVzaChpdGVtKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICghdGhpcy5fZGVwYXJ0bWVudFNlbGVjdGVkLnNvbWUoeCA9PiB4LmlkID09IGl0ZW0uZ3JvdXBJZCkpIHtcclxuICAgICAgICBpdGVtLmdyb3VwSWQgPSBudWxsO1xyXG4gICAgICAgIHNpbmdsZUl0ZW0ucHVzaChpdGVtKVxyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgZ3JvdXBzLmZvckVhY2goZ3JvdXAgPT4ge1xyXG4gICAgICBjb25zdCBjaGlsZCA9IHRoaXMuX2RlcGFydG1lbnRTZWxlY3RlZC5maWx0ZXIoaXRlbSA9PiBpdGVtLmdyb3VwSWQgPT0gZ3JvdXAuaWQpO1xyXG4gICAgICBncm91cC5jaGlsZHJlbiA9IGNoaWxkO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLnJlc3VsdEFjY2Vzcy5kZXBhcnRtZW50cyA9IFsuLi5ncm91cHMsIC4uLnNpbmdsZUl0ZW1dO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZmlsdGVyT3B0aW9uUGVyc29uQ2hhbmdlKCkge1xyXG4gICAgLy8gRmlsdGVyIHBlcnNvbiBieSByb2xlc1xyXG4gICAgdGhpcy5wZXJzb25Gb3JtLmdldCgndXNlckdyb3VwRmlsdGVyJykudmFsdWVDaGFuZ2VzXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJjcmliZSksIGRlYm91bmNlVGltZSg1MDApKVxyXG4gICAgICAuc3Vic2NyaWJlKGtleXdvcmQgPT4ge1xyXG4gICAgICAgIGlmICghdGhpcy5vcHRpb25GaWx0ZXJQZXJzb25EYXRhR2xvYmFsLnVzZXJHcm91cHMubGVuZ3RoKSB7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICgha2V5d29yZCkge1xyXG4gICAgICAgICAgdGhpcy5maWx0ZXJlZFNlYXJjaFRleHRCb3gudXNlckdyb3VwLm5leHQodGhpcy5vcHRpb25GaWx0ZXJQZXJzb25EYXRhR2xvYmFsLnVzZXJHcm91cHMpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCByZXN1bHRGaWx0ZXIgPSB0aGlzLm9wdGlvbkZpbHRlclBlcnNvbkRhdGFHbG9iYWwudXNlckdyb3Vwcy5maWx0ZXIodXNlckdyb3VwID0+IHVzZXJHcm91cC5uYW1lLnRvTG9jYWxlTG93ZXJDYXNlKCkuaW5jbHVkZXMoa2V5d29yZC50b0xvY2FsZUxvd2VyQ2FzZSgpKSk7XHJcbiAgICAgICAgdGhpcy5maWx0ZXJlZFNlYXJjaFRleHRCb3gudXNlckdyb3VwLm5leHQocmVzdWx0RmlsdGVyKTtcclxuICAgICAgfSk7XHJcbiAgICAvLyBGaWx0ZXIgcGVyc29uIGJ5IGRlcGFydG1lbnRzXHJcbiAgICB0aGlzLnBlcnNvbkZvcm0uZ2V0KCdkZXBhcnRtZW50RmlsdGVyJykudmFsdWVDaGFuZ2VzXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJjcmliZSkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIGlmICghdGhpcy5vcHRpb25GaWx0ZXJQZXJzb25EYXRhR2xvYmFsLmRlcGFydG1lbnRzKSB7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBzZWFyY2ggPSB0aGlzLnBlcnNvbkZvcm0uZ2V0KCdkZXBhcnRtZW50RmlsdGVyJykudmFsdWU7XHJcbiAgICAgICAgaWYgKCFzZWFyY2gpIHtcclxuICAgICAgICAgIHRoaXMuZmlsdGVyZWRTZWFyY2hUZXh0Qm94LmRlcGFydG1lbnQubmV4dCh0aGlzLm9wdGlvbkZpbHRlclBlcnNvbkRhdGFHbG9iYWwuZGVwYXJ0bWVudHMuc2xpY2UoKSk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHNlYXJjaCA9IHNlYXJjaC50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICAgIHRoaXMuZmlsdGVyZWRTZWFyY2hUZXh0Qm94LmRlcGFydG1lbnQubmV4dChcclxuICAgICAgICAgIHRoaXMub3B0aW9uRmlsdGVyUGVyc29uRGF0YUdsb2JhbC5kZXBhcnRtZW50cy5maWx0ZXIoeCA9PiB4Lm5hbWUudG9Mb3dlckNhc2UoKS5pbmRleE9mKHNlYXJjaCkgPiAtMSlcclxuICAgICAgICApO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldFJlc3VsdFRhYkFjdGl2ZSgpIHtcclxuICAgIGNvbnN0IHJlc3VsdE9iaiA9IHtcclxuICAgICAgMDogdGhpcy5yZXN1bHRBY2Nlc3MucGVyc29ucyxcclxuICAgICAgMTogdGhpcy5yZXN1bHRBY2Nlc3MudXNlckdyb3VwcyxcclxuICAgICAgMjogdGhpcy5yZXN1bHRBY2Nlc3MuZGVwYXJ0bWVudHNcclxuICAgIH1cclxuICAgIHJldHVybiByZXN1bHRPYmpbdGhpcy5vcHRpb25TZWxlY3QudmFsdWVdO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNoZWNrRXhpc3RPcHRpb25TZWxlY3Qob3B0aW9uOiBPcHRpb25TZWxlY3RBY2Nlc3NFbnVtKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gISF0aGlzLm9wdGlvbnMuZmluZChpdGVtID0+IGl0ZW0udHlwZSA9PT0gb3B0aW9uKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYnVpbGRQZXJzb25Gb3JtKCkge1xyXG4gICAgdGhpcy5wZXJzb25Gb3JtID0gdGhpcy5fZmIuZ3JvdXAoe1xyXG4gICAgICB1c2VyR3JvdXA6IFtdLFxyXG4gICAgICBkZXBhcnRtZW50OiBbXSxcclxuICAgICAgZGVwYXJ0bWVudEZpbHRlcjogWycnXSxcclxuICAgICAgcmVjdXJzaXZlOiBbe1xyXG4gICAgICAgIHZhbHVlOiBmYWxzZSwgZGlzYWJsZWQ6IHRydWVcclxuICAgICAgfV0sXHJcbiAgICAgIGtleXdvcmQ6IFsnJ10sXHJcbiAgICAgIHVzZXJHcm91cEZpbHRlcjogWycnXSxcclxuICAgICAgZXhjbHVkZWRRdWl0RGVwYXJ0bWVudElkOiBbdHJ1ZV1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcblxyXG4gIG9uRmlsdGVyUGVyc29uKCkge1xyXG4gICAgdGhpcy5nZXRMb2FkaW5nJC5uZXh0KHRydWUpO1xyXG4gICAgY29uc3QgZm9ybVZhbHVlID0gdGhpcy5wZXJzb25Gb3JtLmdldFJhd1ZhbHVlKCk7XHJcbiAgICBjb25zdCBmaWx0ZXJEYXRhOiBGaWx0ZXJQZXJzb25Nb2RlbCA9IHtcclxuICAgICAgZGVwYXJ0bWVudElkOiBmb3JtVmFsdWUuZGVwYXJ0bWVudD8uaWQsXHJcbiAgICAgIHVzZXJHcm91cElkOiBmb3JtVmFsdWUudXNlckdyb3VwPy5pZCxcclxuICAgICAga2V5d29yZDogZm9ybVZhbHVlLmtleXdvcmQsXHJcbiAgICAgIHJlY3Vyc2l2ZTogZm9ybVZhbHVlLnJlY3Vyc2l2ZVxyXG4gICAgfTtcclxuICAgIHRoaXMuZ2V0U2VhcmNoaW5nJC5uZXh0KHRydWUpO1xyXG4gICAgdGhpcy5fcmVzZXRQYWdpbmdhdG9yKHRoaXMucGFnaW5nUGVyc29uKTtcclxuICAgIHRoaXMub25TZWFyY2hQZXJzb25FdmVudC5lbWl0KGZpbHRlckRhdGEpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfcmVzZXRQYWdpbmdhdG9yKHBhZ2luYXRvcjogUU1TUGFnaW5hdG9yQ29tcG9uZW50KSB7XHJcbiAgICBpZiAoIXBhZ2luYXRvcilcclxuICAgICAgcmV0dXJuO1xyXG4gICAgcGFnaW5hdG9yLmNoYW5nZVBhZ2UoMCk7XHJcbiAgICBwYWdpbmF0b3IucmVuZGVyRGlzcGxheU51bWJlck9mcGFnZXMoKTtcclxuICB9XHJcblxyXG4gIG9uU2VhcmNoUGVyc29uRnJlZVRleHQoKSB7XHJcbiAgICB0aGlzLmdldExvYWRpbmckLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLmdldFNlYXJjaGluZyQubmV4dCh0cnVlKTtcclxuICAgIHRoaXMub25TZWFyY2hQZXJzb25GcmVlVGV4dEV2ZW50LmVtaXQodGhpcy5wZXJzb25Gb3JtLmdldCgna2V5d29yZCcpLnZhbHVlKTtcclxuICAgIHRoaXMuX3Jlc2V0UGFnaW5nYXRvcih0aGlzLnBhZ2luZ1BlcnNvbik7XHJcbiAgfVxyXG5cclxuICBvbkZpbHRlclVzZXJHcm91cCgpIHtcclxuICAgIHRoaXMuZ2V0TG9hZGluZyQubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuZ2V0U2VhcmNoaW5nJC5uZXh0KHRydWUpO1xyXG4gICAgdGhpcy5fcmVzZXRQYWdpbmdhdG9yKHRoaXMucGFnaW5nVXNlckdyb3VwKTtcclxuICAgIHRoaXMub25TZWFyY2hVc2VyR3JvdXBFdmVudC5lbWl0KHRoaXMudXNlckdyb3VwRm9ybS52YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBvblNlbGVjdEl0ZW0odHlwZTogT3B0aW9uU2VsZWN0QWNjZXNzRW51bSwgaXRlbTogUU1TQWNjZXNzSXRlbSkge1xyXG4gICAgaWYgKCF0aGlzLmFsbG93UmVtb3ZlKHR5cGUsIGl0ZW0pKVxyXG4gICAgICByZXR1cm47XHJcbiAgICBpdGVtLnNlbGVjdGVkID0gIWl0ZW0uc2VsZWN0ZWQ7XHJcbiAgICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgICAgY2FzZSBPcHRpb25TZWxlY3RBY2Nlc3NFbnVtLlBFUlNPTjpcclxuICAgICAgICB7XHJcbiAgICAgICAgICBpZiAodGhpcy5kaWFsb2dEYXRhLm1vZGVTZWxlY3RPbmVQZXJzb24pIHtcclxuICAgICAgICAgICAgdGhpcy5yZXN1bHRBY2Nlc3MucGVyc29ucyA9IGl0ZW0uc2VsZWN0ZWQgPyBbaXRlbV0gOiBbXTtcclxuICAgICAgICAgICAgdGhpcy5wZXJzb25GaWx0ZXJlZC5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgICAgICAgIGlmIChpdGVtLmlkICE9PSBpdGVtLmlkKSB7XHJcbiAgICAgICAgICAgICAgICBpdGVtLnNlbGVjdGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKGl0ZW0uc2VsZWN0ZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5yZXN1bHRBY2Nlc3MucGVyc29ucy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjb25zdCBpbmRleEl0ZW0gPSB0aGlzLnJlc3VsdEFjY2Vzcy5wZXJzb25zLmZpbmRJbmRleCh4ID0+IHguaWQgPT09IGl0ZW0uaWQpO1xyXG4gICAgICAgICAgaW5kZXhJdGVtID4gLTEgJiYgdGhpcy5yZXN1bHRBY2Nlc3MucGVyc29ucy5zcGxpY2UoaW5kZXhJdGVtLCAxKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgT3B0aW9uU2VsZWN0QWNjZXNzRW51bS5VU0VSX0dST1VQOlxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGlmICh0aGlzLmRpYWxvZ0RhdGEubW9kZVNlbGVjdE9uZVVzZXJHcm91cCkge1xyXG4gICAgICAgICAgICB0aGlzLnJlc3VsdEFjY2Vzcy51c2VyR3JvdXBzID0gaXRlbS5zZWxlY3RlZCA/IFtpdGVtXSA6IFtdO1xyXG4gICAgICAgICAgICB0aGlzLnVzZXJHcm91cEZpbHRlcmVkLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKGl0ZW0uaWQgIT09IGl0ZW0uaWQpIHtcclxuICAgICAgICAgICAgICAgIGl0ZW0uc2VsZWN0ZWQgPSBmYWxzZVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChpdGVtLnNlbGVjdGVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVzdWx0QWNjZXNzLnVzZXJHcm91cHMucHVzaChpdGVtKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjb25zdCBpbmRleEl0ZW0gPSB0aGlzLnJlc3VsdEFjY2Vzcy51c2VyR3JvdXBzLmZpbmRJbmRleCh4ID0+IHguaWQgPT09IGl0ZW0uaWQpO1xyXG4gICAgICAgICAgaW5kZXhJdGVtID4gLTEgJiYgdGhpcy5yZXN1bHRBY2Nlc3MudXNlckdyb3Vwcy5zcGxpY2UoaW5kZXhJdGVtLCAxKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25SZW1vdmVDaGlwKHR5cGU6IE9wdGlvblNlbGVjdEFjY2Vzc0VudW0sIGl0ZW0sIGluZGV4KSB7XHJcbiAgICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgICAgY2FzZSB0aGlzLk9QVElPTl9FTlVNLlBFUlNPTjpcclxuICAgICAgICB0aGlzLnJlc3VsdEFjY2Vzcy5wZXJzb25zLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgaWYgKHRoaXMucGVyc29uRmlsdGVyZWRbaW5kZXhdKSB7XHJcbiAgICAgICAgICB0aGlzLnBlcnNvbkZpbHRlcmVkW2luZGV4XS5zZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSB0aGlzLk9QVElPTl9FTlVNLlVTRVJfR1JPVVA6XHJcbiAgICAgICAgdGhpcy5yZXN1bHRBY2Nlc3MudXNlckdyb3Vwcy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgIGlmICh0aGlzLnVzZXJHcm91cEZpbHRlcmVkW2luZGV4XSkge1xyXG4gICAgICAgICAgdGhpcy51c2VyR3JvdXBGaWx0ZXJlZFtpbmRleF0uc2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgdGhpcy5PUFRJT05fRU5VTS5ERVBBUlRNRU5UOlxyXG4gICAgICAgIHRoaXMucmVzdWx0QWNjZXNzLmRlcGFydG1lbnRzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgdGhpcy5fZGVwYXJ0bWVudFNlbGVjdGVkID0gXy5jbG9uZURlZXAodGhpcy5yZXN1bHRBY2Nlc3MuZGVwYXJ0bWVudHMpO1xyXG4gICAgICAgIGlmICghdGhpcy50cmVlRGVwYXJ0bWVudClcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB0aGlzLnRyZWVEZXBhcnRtZW50Lm9uUmVtb3ZlTm9kZShpdGVtLmlkKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblNlbGVjdGlvblR5cGVDaGFuZ2UoZXZlbnQ6IE1hdFNlbGVjdENoYW5nZSkge1xyXG4gICAgc3dpdGNoIChldmVudC52YWx1ZSkge1xyXG4gICAgICBjYXNlIHRoaXMuT1BUSU9OX0VOVU0uUEVSU09OOlxyXG4gICAgICAgIHRoaXMuYnVpbGRQZXJzb25Gb3JtKCk7XHJcbiAgICAgICAgdGhpcy5fZmlsdGVyT3B0aW9uUGVyc29uQ2hhbmdlKCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgdGhpcy5PUFRJT05fRU5VTS5ERVBBUlRNRU5UOlxyXG4gICAgICAgIHRoaXMuZGlhbG9nRGF0YS50cmVlRGVwYXJ0bWVudENvbmZpZy5zZWxlY3RlZExpc3QgPSB0aGlzLnNlbGVjdGVkRGVwYXJ0bWVudHM7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgICB0aGlzLmdldExvYWRpbmckLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLmRpYWxvZ1JlZi51cGRhdGVTaXplKHRoaXMuZGlhbG9nRGF0YS5zaXplVXBkYXRlRGVmYXVsdCk7XHJcbiAgICB0aGlzLm9uU2VsZWN0T3B0aW9uQ2hhbmdlJC5uZXh0KGV2ZW50KTtcclxuICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgc2V0Rm9ybUNvbnRyb2xWYWx1ZShmb3JtQ29udHJvbE5hbWVzOiBzdHJpbmdbXSwgdmFsdWVzKSB7XHJcbiAgICBmb3JtQ29udHJvbE5hbWVzLmZvckVhY2goKGNvbnRyb2xOYW1lLCBfaW5kZXgpID0+IHtcclxuICAgICAgdGhpcy5wZXJzb25Gb3JtLmdldChjb250cm9sTmFtZSk/LnNldFZhbHVlKHZhbHVlc1tfaW5kZXhdKTtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBpc0NoZWNrQWxsKHR5cGU6IE9wdGlvblNlbGVjdEFjY2Vzc0VudW0pIHtcclxuICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICBjYXNlIHRoaXMuT1BUSU9OX0VOVU0uUEVSU09OOlxyXG4gICAgICAgIHJldHVybiAhdGhpcy5kaWFsb2dEYXRhLm1vZGVTZWxlY3RPbmVQZXJzb24gJiYgdGhpcy5wZXJzb25GaWx0ZXJlZC5sZW5ndGggJiYgdGhpcy5wZXJzb25GaWx0ZXJlZC5ldmVyeSh4ID0+IHguc2VsZWN0ZWQpO1xyXG4gICAgICBjYXNlIHRoaXMuT1BUSU9OX0VOVU0uVVNFUl9HUk9VUDpcclxuICAgICAgICByZXR1cm4gIXRoaXMuZGlhbG9nRGF0YS5tb2RlU2VsZWN0T25lVXNlckdyb3VwICYmIHRoaXMudXNlckdyb3VwRmlsdGVyZWQubGVuZ3RoICYmIHRoaXMudXNlckdyb3VwRmlsdGVyZWQuZXZlcnkoeCA9PiB4LnNlbGVjdGVkKTtcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpc0Rpc2FibGVkU2VsZWN0QWxsKHR5cGU6IE9wdGlvblNlbGVjdEFjY2Vzc0VudW0pIHtcclxuICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICBjYXNlIE9wdGlvblNlbGVjdEFjY2Vzc0VudW0uUEVSU09OOiByZXR1cm4gIXRoaXMucGVyc29uRmlsdGVyZWQubGVuZ3RoIHx8IHRoaXMucGVyc29uRmlsdGVyZWQuZXZlcnkoeCA9PiAhdGhpcy5hbGxvd1JlbW92ZSh0eXBlLCB4KSlcclxuICAgICAgY2FzZSBPcHRpb25TZWxlY3RBY2Nlc3NFbnVtLlVTRVJfR1JPVVA6IHJldHVybiAhdGhpcy51c2VyR3JvdXBGaWx0ZXJlZC5sZW5ndGggfHwgdGhpcy51c2VyR3JvdXBGaWx0ZXJlZC5ldmVyeSh4ID0+ICF0aGlzLmFsbG93UmVtb3ZlKHR5cGUsIHgpKVxyXG4gICAgICBkZWZhdWx0OiByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpc0luZGV0ZXJtaW5hdGUodHlwZTogT3B0aW9uU2VsZWN0QWNjZXNzRW51bSkge1xyXG4gICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgIGNhc2UgdGhpcy5PUFRJT05fRU5VTS5QRVJTT046XHJcbiAgICAgICAgcmV0dXJuICF0aGlzLmRpYWxvZ0RhdGEubW9kZVNlbGVjdE9uZVBlcnNvbiAmJiAhdGhpcy5pc0NoZWNrQWxsKHR5cGUpICYmIHRoaXMucGVyc29uRmlsdGVyZWQ/LnNvbWUoeCA9PiB4LnNlbGVjdGVkKTtcclxuICAgICAgY2FzZSB0aGlzLk9QVElPTl9FTlVNLlVTRVJfR1JPVVA6XHJcbiAgICAgICAgcmV0dXJuICF0aGlzLmRpYWxvZ0RhdGEubW9kZVNlbGVjdE9uZVVzZXJHcm91cCAmJiAhdGhpcy5pc0NoZWNrQWxsKHR5cGUpICYmIHRoaXMudXNlckdyb3VwRmlsdGVyZWQ/LnNvbWUoeCA9PiB4LnNlbGVjdGVkKTtcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkNoZWNrQWxsKHR5cGU6IE9wdGlvblNlbGVjdEFjY2Vzc0VudW0sICRldmVudCkge1xyXG4gICAgaWYgKHRoaXMuaXNEaXNhYmxlZFNlbGVjdEFsbCh0eXBlKSlcclxuICAgICAgcmV0dXJuO1xyXG4gICAgJGV2ZW50LmNoZWNrZWQgPSAhJGV2ZW50LmNoZWNrZWQ7XHJcbiAgICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgICAgY2FzZSB0aGlzLk9QVElPTl9FTlVNLlBFUlNPTjoge1xyXG4gICAgICAgIGlmICh0aGlzLmRpYWxvZ0RhdGEubW9kZVNlbGVjdE9uZVBlcnNvbikge1xyXG4gICAgICAgICAgJGV2ZW50LmNoZWNrZWQgPSBmYWxzZTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCF0aGlzLnBlcnNvbkZpbHRlcmVkLmxlbmd0aClcclxuICAgICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgICAgdGhpcy5wZXJzb25GaWx0ZXJlZC5maWx0ZXIoeCA9PiB0aGlzLmFsbG93UmVtb3ZlKHR5cGUsIHgpKS5mb3JFYWNoKHggPT4geC5zZWxlY3RlZCA9ICRldmVudC5jaGVja2VkKTtcclxuICAgICAgICBjb25zdCBpZEZpbHRlcmVkID0gdGhpcy5wZXJzb25GaWx0ZXJlZC5tYXAoeCA9PiB4LmlkKTtcclxuICAgICAgICBpZiAoJGV2ZW50LmNoZWNrZWQpIHtcclxuICAgICAgICAgIGNvbnN0IGlkUGVyc29uU2VsZWN0ZWQgPSB0aGlzLnJlc3VsdEFjY2Vzcy5wZXJzb25zLm1hcCh4ID0+IHguaWQpO1xyXG4gICAgICAgICAgdGhpcy5yZXN1bHRBY2Nlc3MucGVyc29ucyA9IFsuLi50aGlzLnJlc3VsdEFjY2Vzcy5wZXJzb25zLCAuLi50aGlzLnBlcnNvbkZpbHRlcmVkLmZpbHRlcih4ID0+IHRoaXMuYWxsb3dSZW1vdmUodHlwZSwgeCkgJiYgIWlkUGVyc29uU2VsZWN0ZWQuaW5jbHVkZXMoeC5pZCkpXTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5yZXN1bHRBY2Nlc3MucGVyc29ucyA9IHRoaXMucmVzdWx0QWNjZXNzLnBlcnNvbnMuZmlsdGVyKHggPT4gIXRoaXMuYWxsb3dSZW1vdmUodHlwZSwgeCkgfHwgIWlkRmlsdGVyZWQuaW5jbHVkZXMoeC5pZCkpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgdGhpcy5PUFRJT05fRU5VTS5VU0VSX0dST1VQOiB7XHJcbiAgICAgICAgaWYgKHRoaXMuZGlhbG9nRGF0YS5tb2RlU2VsZWN0T25lVXNlckdyb3VwKSB7XHJcbiAgICAgICAgICAkZXZlbnQuY2hlY2tlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCB1c2VyR3JvdXBQYWdpbmcgPSB0aGlzLnVzZXJHcm91cEZpbHRlcmVkO1xyXG4gICAgICAgIHVzZXJHcm91cFBhZ2luZy5maWx0ZXIoeCA9PiB0aGlzLmFsbG93UmVtb3ZlKHR5cGUsIHgpKS5mb3JFYWNoKHggPT4geC5zZWxlY3RlZCA9ICRldmVudC5jaGVja2VkKTtcclxuICAgICAgICBjb25zdCBpZEZpbHRlcmVkID0gdXNlckdyb3VwUGFnaW5nLm1hcCh4ID0+IHguaWQpO1xyXG4gICAgICAgIGlmICgkZXZlbnQuY2hlY2tlZCkge1xyXG4gICAgICAgICAgY29uc3QgaWRTZWxlY3RlZCA9IHRoaXMucmVzdWx0QWNjZXNzLnVzZXJHcm91cHMubWFwKHggPT4geC5pZCk7XHJcbiAgICAgICAgICB0aGlzLnJlc3VsdEFjY2Vzcy51c2VyR3JvdXBzID0gWy4uLnRoaXMucmVzdWx0QWNjZXNzLnVzZXJHcm91cHMsIC4uLnVzZXJHcm91cFBhZ2luZy5maWx0ZXIoeCA9PiB0aGlzLmFsbG93UmVtb3ZlKHR5cGUsIHgpICYmICFpZFNlbGVjdGVkLmluY2x1ZGVzKHguaWQpKV07XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMucmVzdWx0QWNjZXNzLnVzZXJHcm91cHMgPSB0aGlzLnJlc3VsdEFjY2Vzcy51c2VyR3JvdXBzLmZpbHRlcih4ID0+ICF0aGlzLmFsbG93UmVtb3ZlKHR5cGUsIHgpIHx8ICFpZEZpbHRlcmVkLmluY2x1ZGVzKHguaWQpKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uU2VsZWN0aW9uTm9kZURlcGFydG1lbnRDaGFuZ2UoeyBhZGRlZCwgcmVtb3ZlZCwgdXBkYXRlZCB9OiBJU2VsZWN0aW9uTm9kZUNoYW5nZTxRTVNUcmVlTm9kZT4pIHtcclxuICAgIGlmIChhZGRlZC5sZW5ndGgpIHtcclxuICAgICAgYWRkZWQuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICBpZiAodGhpcy5yZXN1bHRBY2Nlc3MuZGVwYXJ0bWVudHMuc29tZSh4ID0+IHguaWQgPT09IGl0ZW0uaWQpKVxyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIHRoaXMucmVzdWx0QWNjZXNzLmRlcGFydG1lbnRzLnB1c2goaXRlbSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgaWYgKHJlbW92ZWQubGVuZ3RoKSB7XHJcbiAgICAgIHJlbW92ZWQuZm9yRWFjaCh4ID0+IHtcclxuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMucmVzdWx0QWNjZXNzLmRlcGFydG1lbnRzLmZpbmRJbmRleChpdGVtID0+IGl0ZW0uaWQgPT09IHguaWQpO1xyXG4gICAgICAgIGlmIChpbmRleCA8IDApXHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgdGhpcy5yZXN1bHRBY2Nlc3MuZGVwYXJ0bWVudHMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBpZiAodXBkYXRlZC5sZW5ndGgpIHtcclxuICAgICAgdXBkYXRlZC5mb3JFYWNoKHggPT4ge1xyXG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5yZXN1bHRBY2Nlc3MuZGVwYXJ0bWVudHMuZmluZEluZGV4KGl0ZW0gPT4gaXRlbS5pZCA9PSB4LmlkKTtcclxuICAgICAgICBpZiAoaW5kZXggPCAwKVxyXG4gICAgICAgICAgcmV0dXJuO1xyXG5cclxuICAgICAgICBjb25zdCBkZXBhcnRtZW50cyA9IHRoaXMucmVzdWx0QWNjZXNzLmRlcGFydG1lbnRzLmZpbmQoaXRlbSA9PiBpdGVtLmlkID09IHguaWQpO1xyXG4gICAgICAgIGlmICghZGVwYXJ0bWVudHMpXHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgZGVwYXJ0bWVudHMuY2hpbGRyZW4gPSB4LmNoaWxkcmVuO1xyXG4gICAgICAgIGRlcGFydG1lbnRzLmNoaWxkQ291bnQgPSB4LmNoaWxkQ291bnQ7XHJcblxyXG4gICAgICAgIGlmIChkZXBhcnRtZW50cy5jaGlsZHJlbi5sZW5ndGgpXHJcbiAgICAgICAgICBkZXBhcnRtZW50cy5jaGlsZHJlbi5mb3JFYWNoKHggPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMucmVzdWx0QWNjZXNzLmRlcGFydG1lbnRzLmZpbmRJbmRleChpdGVtID0+IGl0ZW0uaWQgPT09IHguaWQpO1xyXG4gICAgICAgICAgICBpZiAoaW5kZXggPiAtMSlcclxuICAgICAgICAgICAgICB0aGlzLnJlc3VsdEFjY2Vzcy5kZXBhcnRtZW50cy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIHRoaXMucmVzdWx0QWNjZXNzLmRlcGFydG1lbnRzLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgIGlmICghIWl0ZW0uY2hpbGRyZW4pXHJcbiAgICAgICAgaXRlbS5jaGlsZHJlbiA9IGl0ZW0uY2hpbGRyZW4uZmlsdGVyKCh4LCBpbmRleCkgPT4gaW5kZXggPT09IGl0ZW0uY2hpbGRyZW4uZmluZEluZGV4KF94ID0+IHguaWQgPT09IF94LmlkKSk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuX2RlcGFydG1lbnRTZWxlY3RlZCA9IF8uY2xvbmVEZWVwKHRoaXMucmVzdWx0QWNjZXNzLmRlcGFydG1lbnRzKTtcclxuICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgb25TY29sbFRvTm9kZVRyZWVEZXBhcnRtZW50KG5vZGU6IFFNU1RyZWVOb2RlKSB7XHJcbiAgICB0aGlzLm9wdGlvblNlbGVjdC52YWx1ZSA9PT0gdGhpcy5PUFRJT05fRU5VTS5ERVBBUlRNRU5UICYmIHRoaXMudHJlZURlcGFydG1lbnQuc2Nyb2xsVG9Ob2RlKG5vZGUuaWQpXHJcbiAgfVxyXG5cclxuICB0cmFja0J5Rm4oaW5kZXgsIGl0ZW0pIHtcclxuICAgIHJldHVybiBpbmRleDtcclxuICB9XHJcblxyXG4gIHVwZGF0ZVBlcnNvbkZpbHRlcihkYXRhOiBRTVNBY2Nlc3NQYWdpbmdNb2RlbDxRTVNBY2Nlc3NJdGVtPikge1xyXG4gICAgdGhpcy5nZXRQZXJzb24kLm5leHQoZGF0YSk7XHJcbiAgICB0aGlzLmdldExvYWRpbmckLm5leHQoZmFsc2UpO1xyXG4gICAgdGhpcy5nZXRTZWFyY2hpbmckLm5leHQoZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlVXNlckdyb3VwRmlsdGVyKGRhdGE6IFFNU0FjY2Vzc1BhZ2luZ01vZGVsPFFNU0FjY2Vzc0l0ZW0+KSB7XHJcbiAgICB0aGlzLmdldFVzZXJHcm91cCQubmV4dChkYXRhKTtcclxuICAgIHRoaXMuZ2V0TG9hZGluZyQubmV4dChmYWxzZSk7XHJcbiAgICB0aGlzLmdldFNlYXJjaGluZyQubmV4dChmYWxzZSk7XHJcbiAgfVxyXG5cclxuICBvblBhZ2luYXRvckV2ZW50KHZhbDogUGFnZUV2ZW50LCB0eXBlOiBPcHRpb25TZWxlY3RBY2Nlc3NFbnVtKSB7XHJcbiAgICBpZiAodGhpcy5nZXRTZWFyY2hpbmckLnZhbHVlKVxyXG4gICAgICByZXR1cm47XHJcbiAgICB0aGlzLmdldExvYWRpbmckLm5leHQodGhpcy5vcHRpb25TZWxlY3QudmFsdWUgIT09IHRoaXMuT1BUSU9OX0VOVU0uREVQQVJUTUVOVCk7XHJcbiAgICB0aGlzLm9uUGFnaW5nRXZlbnQuZW1pdCh7XHJcbiAgICAgIC4uLnZhbCxcclxuICAgICAgdHlwZTogdHlwZVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvblJlc3VsdERlcGFydG1lbnRDaGFuZ2UoZXZlbnQ6IFFNU1RyZWVOb2RlW10pIHtcclxuICAgIC8vIHRoaXMucmVzdWx0QWNjZXNzLmRlcGFydG1lbnRzID0gZXZlbnQ7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVSZXN1bHRTZWFyY2hEZXBhcnRtZW50KGRhdGE6IFFNU0FjY2Vzc1BhZ2luZ01vZGVsPFFNU0ZsYXROb2RlVHJlZT4gPSBuZXcgUU1TQWNjZXNzUGFnaW5nTW9kZWw8UU1TRmxhdE5vZGVUcmVlPigpKSB7XHJcbiAgICBpZiAoIXRoaXMudHJlZURlcGFydG1lbnQpXHJcbiAgICAgIHJldHVybjtcclxuICAgIGRhdGEgPSBkYXRhIGFzIFFNU0RlcGFydG1lbnRQYWdpbmdNb2RlbDxRTVNGbGF0Tm9kZVRyZWU+O1xyXG4gICAgaWYgKHRoaXMuZGlhbG9nRGF0YS5kaXNhYmxlU2VsZWN0ZWRMaXN0KSB7XHJcbiAgICAgIGRhdGEuZGF0YS5mb3JFYWNoKHggPT4geC5kaXNhYmxlZCA9ICF0aGlzLmFsbG93UmVtb3ZlKE9wdGlvblNlbGVjdEFjY2Vzc0VudW0uREVQQVJUTUVOVCwgeCkpO1xyXG4gICAgfVxyXG4gICAgdGhpcy50cmVlRGVwYXJ0bWVudC5zZXRSZXN1bHRTZWFyY2goZGF0YSk7XHJcbiAgfVxyXG5cclxuICBnZW5lcmF0ZVRvb2x0aXAobm9kZTogYW55KSB7XHJcbiAgICBpZiAodGhpcy5kaWFsb2dEYXRhPy5mb3JtYXRUb29sdGlwKVxyXG4gICAgICByZXR1cm4gdGhpcy5kaWFsb2dEYXRhLmZvcm1hdFRvb2x0aXAobm9kZSk7XHJcbiAgICByZXR1cm4gKG5vZGU/LmlzR3JvdXApID8gdGhpcy5mb3JtYXRTdHJpbmcodGhpcy5MQU5HLlRPT0xUSVBfSU5DTFVERV9TVUJfREVQQVJUTUVOVCwgbm9kZS5uYW1lLCBub2RlLmNoaWxkcmVuPy5sZW5ndGgudG9TdHJpbmcoKSkgOiAoYCR7bm9kZS5uYW1lfSAke25vZGU/LnN1Yk5hbWUgPyBgLSAoJHtub2RlLnN1Yk5hbWV9KWAgOiAnJ31gKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZm9ybWF0U3RyaW5nKC4uLnJlcGxhY2VtZW50czogc3RyaW5nW10pOiBzdHJpbmcge1xyXG4gICAgbGV0IHJlc3VsdCA9IGFyZ3VtZW50c1swXTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aCAtIDE7IGkrKykge1xyXG4gICAgICBjb25zdCByZWcgPSBuZXcgUmVnRXhwKGBcXFxceyR7aX1cXFxcfWAsICdnbScpO1xyXG4gICAgICByZXN1bHQgPSByZXN1bHQucmVwbGFjZShyZWcsIGFyZ3VtZW50c1tpICsgMV0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIGhhc0l0ZW1TZWxlY3RlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLnJlc3VsdEFjY2Vzcykuc29tZShrZXkgPT4gISF0aGlzLnJlc3VsdEFjY2Vzc1trZXldPy5sZW5ndGgpXHJcbiAgfVxyXG5cclxuICB1cGRhdGVEZXBhcnRtZW50KGRhdGE6IFFNU1RyZWVOb2RlW10gPSBbXSkge1xyXG4gICAgdGhpcy5nZXRMb2FkaW5nJC5uZXh0KGZhbHNlKTtcclxuXHJcbiAgICBpZiAodGhpcy5kaWFsb2dEYXRhLmRpc2FibGVTZWxlY3RlZExpc3QpIHtcclxuICAgICAgZGF0YS5mb3JFYWNoKGl0ZW0gPT4gaXRlbS5kaXNhYmxlZCA9ICF0aGlzLmFsbG93UmVtb3ZlKE9wdGlvblNlbGVjdEFjY2Vzc0VudW0uREVQQVJUTUVOVCwgaXRlbSkpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5kaWFsb2dEYXRhLnRyZWVEZXBhcnRtZW50Q29uZmlnLnRyZWVEYXRhID0gXy5jbG9uZURlZXAoZGF0YSk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVPcHRpb25QZXJzb25GaWx0ZXIoZGVwYXJ0bWVudEZpbHRlcjogUU1TRmxhdE5vZGVUcmVlW10gPSBbXSwgdXNlckdyb3VwRmlsdGVyOiBRTVNBY2Nlc3NJdGVtW10gPSBbXSkge1xyXG4gICAgdGhpcy5vcHRpb25GaWx0ZXJQZXJzb25EYXRhR2xvYmFsLmRlcGFydG1lbnRzID0gZGVwYXJ0bWVudEZpbHRlcjtcclxuICAgIHRoaXMub3B0aW9uRmlsdGVyUGVyc29uRGF0YUdsb2JhbC51c2VyR3JvdXBzID0gdXNlckdyb3VwRmlsdGVyO1xyXG4gICAgdGhpcy5maWx0ZXJlZFNlYXJjaFRleHRCb3guZGVwYXJ0bWVudC5uZXh0KGRlcGFydG1lbnRGaWx0ZXIpO1xyXG4gICAgdGhpcy5maWx0ZXJlZFNlYXJjaFRleHRCb3gudXNlckdyb3VwLm5leHQodXNlckdyb3VwRmlsdGVyKTtcclxuICB9XHJcblxyXG4gIHNldERlZmF1bHRQYWdlU2l6ZU9wdGlvbihkYXRhOiBudW1iZXJbXSkge1xyXG4gICAgdGhpcy5QQUdFX1NJWkVfT1BUSU9OID0gZGF0YTtcclxuICB9XHJcbiAgYWxsb3dSZW1vdmUgPSAodHlwZTogT3B0aW9uU2VsZWN0QWNjZXNzRW51bSwgaXRlbTogYW55KTogYm9vbGVhbiA9PiB7XHJcbiAgICBpZiAoIXRoaXMuZGlhbG9nRGF0YS5kaXNhYmxlU2VsZWN0ZWRMaXN0KVxyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIGNvbnN0IHsgcGVyc29ucywgZGVwYXJ0bWVudHMsIHVzZXJHcm91cHMgfSA9IHRoaXMuZGlhbG9nRGF0YS5kYXRhLnNlbGVjdGVkRGF0YTtcclxuICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICBjYXNlIE9wdGlvblNlbGVjdEFjY2Vzc0VudW0uUEVSU09OOiByZXR1cm4gIXBlcnNvbnMuc29tZSh4ID0+IHguaWQgPT0gaXRlbS5pZClcclxuICAgICAgY2FzZSBPcHRpb25TZWxlY3RBY2Nlc3NFbnVtLkRFUEFSVE1FTlQ6IHJldHVybiAhZGVwYXJ0bWVudHMuc29tZSh4ID0+IHguaWQgPT0gaXRlbS5pZClcclxuICAgICAgY2FzZSBPcHRpb25TZWxlY3RBY2Nlc3NFbnVtLlVTRVJfR1JPVVA6IHJldHVybiAhdXNlckdyb3Vwcy5zb21lKHggPT4geC5pZCA9PSBpdGVtLmlkKVxyXG4gICAgICBkZWZhdWx0OiByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbiJdfQ==
|