tnx-shared 5.1.78 → 5.1.79

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.
Files changed (28) hide show
  1. package/bundles/tnx-shared.umd.js +200 -49
  2. package/bundles/tnx-shared.umd.js.map +1 -1
  3. package/bundles/tnx-shared.umd.min.js +1 -1
  4. package/bundles/tnx-shared.umd.min.js.map +1 -1
  5. package/classes/base/data-form-base.d.ts.map +1 -1
  6. package/congviec/congviec/congviec-dinhkem/congviec-dinhkem.component.d.ts.map +1 -1
  7. package/congviec/congviec/services/congviec-dinhkem.service.d.ts +8 -0
  8. package/congviec/congviec/services/congviec-dinhkem.service.d.ts.map +1 -1
  9. package/esm2015/classes/base/data-form-base.js +4 -2
  10. package/esm2015/components/chat/chat-box/chat-box.component.js +1 -1
  11. package/esm2015/components/chat/chat-send-message-box/chat-send-message-box.component.js +1 -1
  12. package/esm2015/components/crud/advance-search/advance-search.component.js +1 -1
  13. package/esm2015/components/qr-code-generator/qr-code-generator.component.js +2 -2
  14. package/esm2015/components/query-builders/query-builder/query-builder.component.js +1 -1
  15. package/esm2015/components/tn-app-notification/tn-app-notification.component.js +2 -2
  16. package/esm2015/components/tn-tabview/tn-tabview.component.js +1 -1
  17. package/esm2015/components/user-picker/user-picker-box/user-picker-box.component.js +1 -1
  18. package/esm2015/components/vanban-picker/vanban-den-picker/vanban-den-picker.component.js +2 -2
  19. package/esm2015/components/vanban-picker/vanban-di-picker/vanban-di-picker.component.js +2 -2
  20. package/esm2015/components/vanban-picker/vanban-picker-dialog/vanban-picker-dialog.component.js +2 -2
  21. package/esm2015/components/workflow/workflow-picker/workflow-picker.component.js +1 -1
  22. package/esm2015/components/workflow/workflow-setting-new/workflow-setting-new.component.js +1 -1
  23. package/esm2015/congviec/congviec/congviec-dinhkem/congviec-dinhkem.component.js +15 -7
  24. package/esm2015/congviec/congviec/services/congviec-dinhkem.service.js +57 -1
  25. package/fesm2015/tnx-shared.js +84 -20
  26. package/fesm2015/tnx-shared.js.map +1 -1
  27. package/package.json +2 -2
  28. package/tnx-shared.metadata.json +1 -1
@@ -59,7 +59,7 @@ export class VanBanPickerDialogComponent extends ComponentBase {
59
59
  VanBanPickerDialogComponent.decorators = [
60
60
  { type: Component, args: [{
61
61
  selector: 'app-vanban-picker-dialog',
62
- template: "<div style=\"height: 100%\">\n <div style=\"height: 100%\">\n <p-tabView *ngIf=\"useAll\" #tab orientation=\"top\" [styleClass]=\"'tn-tabview-beauty'\"\n [activeIndex]=\"currentTabIndex\" (onChange)=\"onTabChange($event)\">\n <p-tabPanel [leftIcon]=\"'pi pi-exclamation-circle'\" header=\"V\u0103n b\u1EA3n \u0111\u1EBFn\">\n <ng-container *ngTemplateOutlet=\"vbden; context: {}\"></ng-container>\n </p-tabPanel>\n <p-tabPanel [leftIcon]=\"'pi pi-list'\" header=\"V\u0103n b\u1EA3n \u0111i\">\n <ng-container *ngTemplateOutlet=\"vbdi; context: {}\"></ng-container>\n </p-tabPanel>\n </p-tabView>\n <ng-container *ngIf=\"!useAll && control.useVbDen\">\n <ng-container *ngTemplateOutlet=\"vbden; context: {}\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"!useAll && control.useVbDi\">\n <ng-container *ngTemplateOutlet=\"vbdi; context: {}\"></ng-container>\n </ng-container>\n </div>\n</div>\n<ng-template #vbden>\n <app-vanban-den-picker [hiddenPicker]=\"true\" [ids]=\"idVanBanDens\" (onPicked)=\"handlePickedVbDen($event)\"\n (onRemoved)=\"handleRemovedVbDen($event)\"></app-vanban-den-picker>\n</ng-template>\n<ng-template #vbdi>\n <app-vanban-di-picker [hiddenPicker]=\"true\" [ids]=\"idVanBanDis\" (onPicked)=\"handlePickedVbDi($event)\"\n (onRemoved)=\"handleRemovedVbDi($event)\"></app-vanban-di-picker>\n</ng-template>",
62
+ template: "<div style=\"height: 100%\">\r\n <div style=\"height: 100%\">\r\n <p-tabView *ngIf=\"useAll\" #tab orientation=\"top\" [styleClass]=\"'tn-tabview-beauty'\"\r\n [activeIndex]=\"currentTabIndex\" (onChange)=\"onTabChange($event)\">\r\n <p-tabPanel [leftIcon]=\"'pi pi-exclamation-circle'\" header=\"V\u0103n b\u1EA3n \u0111\u1EBFn\">\r\n <ng-container *ngTemplateOutlet=\"vbden; context: {}\"></ng-container>\r\n </p-tabPanel>\r\n <p-tabPanel [leftIcon]=\"'pi pi-list'\" header=\"V\u0103n b\u1EA3n \u0111i\">\r\n <ng-container *ngTemplateOutlet=\"vbdi; context: {}\"></ng-container>\r\n </p-tabPanel>\r\n </p-tabView>\r\n <ng-container *ngIf=\"!useAll && control.useVbDen\">\r\n <ng-container *ngTemplateOutlet=\"vbden; context: {}\"></ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"!useAll && control.useVbDi\">\r\n <ng-container *ngTemplateOutlet=\"vbdi; context: {}\"></ng-container>\r\n </ng-container>\r\n </div>\r\n</div>\r\n<ng-template #vbden>\r\n <app-vanban-den-picker [hiddenPicker]=\"true\" [ids]=\"idVanBanDens\" (onPicked)=\"handlePickedVbDen($event)\"\r\n (onRemoved)=\"handleRemovedVbDen($event)\"></app-vanban-den-picker>\r\n</ng-template>\r\n<ng-template #vbdi>\r\n <app-vanban-di-picker [hiddenPicker]=\"true\" [ids]=\"idVanBanDis\" (onPicked)=\"handlePickedVbDi($event)\"\r\n (onRemoved)=\"handleRemovedVbDi($event)\"></app-vanban-di-picker>\r\n</ng-template>",
63
63
  providers: [ComponentContextService],
64
64
  styles: [".tn-check-box-list.p-grid{margin-bottom:-.5em}.p-col-horizontal{padding:.5em;position:relative}.tn-check-box-list{position:relative}.tn-check-box-list.flex-end{justify-content:flex-end}.tn-check-box-list.flex-center{justify-content:center}"]
65
65
  },] }
@@ -74,4 +74,4 @@ VanBanPickerDialogComponent.propDecorators = {
74
74
  onChanged: [{ type: Output }],
75
75
  onReady: [{ type: Output }]
76
76
  };
77
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFuYmFuLXBpY2tlci1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uL3Byb2plY3RzL3RueC1zaGFyZWQvc3JjL2xpYi8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvdmFuYmFuLXBpY2tlci92YW5iYW4tcGlja2VyLWRpYWxvZy92YW5iYW4tcGlja2VyLWRpYWxvZy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFekYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDekYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBU3pFLE1BQU0sT0FBTywyQkFBNEIsU0FBUSxhQUFhO0lBYTFELFlBQ0ksU0FBbUI7UUFFbkIsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBVlgsY0FBUyxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ3ZELFlBQU8sR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBRTVDLG9CQUFlLEdBQVcsQ0FBQyxDQUFDO1FBRTVCLFdBQU0sR0FBWSxJQUFJLENBQUM7SUFNdkIsQ0FBQztJQUVELFFBQVE7UUFDSixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDO0lBQ2hFLENBQUM7SUFFRCxXQUFXLENBQUMsR0FBRztRQUNYLElBQUksQ0FBQyxlQUFlLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQztJQUNyQyxDQUFDO0lBRUQsaUJBQWlCLENBQUMsSUFBSTtRQUNsQixJQUFJLENBQUMsWUFBWSxHQUFHO1lBQ2hCLEdBQUcsSUFBSSxDQUFDLFlBQVk7WUFDcEIsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1NBQzlELENBQUM7UUFDRixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELGdCQUFnQixDQUFDLElBQUk7UUFDakIsSUFBSSxDQUFDLFdBQVcsR0FBRztZQUNmLEdBQUcsSUFBSSxDQUFDLFdBQVc7WUFDbkIsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1NBQzdELENBQUM7UUFDRixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELGtCQUFrQixDQUFDLElBQUk7UUFDbkIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0UsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxJQUFJO1FBQ2xCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzNFLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQsU0FBUztRQUNMLE1BQU0sS0FBSyxHQUFHO1lBQ1YsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZO1lBQy9CLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVztTQUNoQyxDQUFDO1FBQ0YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVELFVBQVUsQ0FBQyxHQUFRO1FBQ2YsSUFBSSxHQUFHLElBQUksSUFBSSxFQUFFO1lBQ2IsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7U0FDekI7YUFDSTtZQUNELElBQUksQ0FBQyxZQUFZLEdBQUcsR0FBRyxDQUFDLFlBQVksQ0FBQztZQUNyQyxJQUFJLENBQUMsV0FBVyxHQUFHLEdBQUcsQ0FBQyxXQUFXLENBQUM7U0FDdEM7SUFDTCxDQUFDOzs7WUE1RUosU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSwwQkFBMEI7Z0JBQ3BDLHEvQ0FBb0Q7Z0JBRXBELFNBQVMsRUFBRSxDQUFDLHVCQUF1QixDQUFDOzthQUN2Qzs7O1lBWmlDLFFBQVE7OztzQkFlckMsS0FBSzsyQkFDTCxLQUFLOzBCQUNMLEtBQUs7d0JBRUwsTUFBTTtzQkFDTixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEluamVjdG9yLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ29tcG9uZW50Q29udGV4dFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9hcHAtY29udGV4dC9jb21wb25lbnQtY29udGV4dC5zZXJ2aWNlJztcbmltcG9ydCB7IENvbXBvbmVudEJhc2UgfSBmcm9tICcuLi8uLi8uLi9jbGFzc2VzL2Jhc2UvY29tcG9uZW50LWJhc2UnO1xuaW1wb3J0IHsgVmFuQmFuUGlja2VyQ29udHJvbFNjaGVtYSB9IGZyb20gJy4uLy4uLy4uL2NsYXNzZXMvZm9ybS1zY2hlbWEnO1xuXG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYXBwLXZhbmJhbi1waWNrZXItZGlhbG9nJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vdmFuYmFuLXBpY2tlci1kaWFsb2cuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3ZhbmJhbi1waWNrZXItZGlhbG9nLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgcHJvdmlkZXJzOiBbQ29tcG9uZW50Q29udGV4dFNlcnZpY2VdXG59KVxuZXhwb3J0IGNsYXNzIFZhbkJhblBpY2tlckRpYWxvZ0NvbXBvbmVudCBleHRlbmRzIENvbXBvbmVudEJhc2UgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gICAgQElucHV0KCkgY29udHJvbDogVmFuQmFuUGlja2VyQ29udHJvbFNjaGVtYTtcbiAgICBASW5wdXQoKSBpZFZhbkJhbkRlbnM6IHN0cmluZ1tdO1xuICAgIEBJbnB1dCgpIGlkVmFuQmFuRGlzOiBzdHJpbmdbXTtcblxuICAgIEBPdXRwdXQoKSBvbkNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gICAgQE91dHB1dCgpIG9uUmVhZHkgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAgIGN1cnJlbnRUYWJJbmRleDogbnVtYmVyID0gMDtcblxuICAgIHVzZUFsbDogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgX2luamVjdG9yOiBJbmplY3RvclxuICAgICkge1xuICAgICAgICBzdXBlcihfaW5qZWN0b3IpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLnVzZUFsbCA9IHRoaXMuY29udHJvbC51c2VWYkRlbiAmJiB0aGlzLmNvbnRyb2wudXNlVmJEaTtcbiAgICB9XG5cbiAgICBvblRhYkNoYW5nZShldnQpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50VGFiSW5kZXggPSBldnQuaW5kZXg7XG4gICAgfVxuXG4gICAgaGFuZGxlUGlja2VkVmJEZW4oZGF0YSkge1xuICAgICAgICB0aGlzLmlkVmFuQmFuRGVucyA9IFtcbiAgICAgICAgICAgIC4uLnRoaXMuaWRWYW5CYW5EZW5zLFxuICAgICAgICAgICAgLi4uZGF0YS5pZHMuZmlsdGVyKHEgPT4gdGhpcy5pZFZhbkJhbkRlbnMuaW5kZXhPZihxKSA9PSAtMSlcbiAgICAgICAgXTtcbiAgICAgICAgdGhpcy5maXJlRXZlbnQoKTtcbiAgICB9XG5cbiAgICBoYW5kbGVQaWNrZWRWYkRpKGRhdGEpIHtcbiAgICAgICAgdGhpcy5pZFZhbkJhbkRpcyA9IFtcbiAgICAgICAgICAgIC4uLnRoaXMuaWRWYW5CYW5EaXMsXG4gICAgICAgICAgICAuLi5kYXRhLmlkcy5maWx0ZXIocSA9PiB0aGlzLmlkVmFuQmFuRGlzLmluZGV4T2YocSkgPT0gLTEpXG4gICAgICAgIF07XG4gICAgICAgIHRoaXMuZmlyZUV2ZW50KCk7XG4gICAgfVxuXG4gICAgaGFuZGxlUmVtb3ZlZFZiRGVuKGRhdGEpIHtcbiAgICAgICAgdGhpcy5pZFZhbkJhbkRlbnMgPSB0aGlzLmlkVmFuQmFuRGVucy5maWx0ZXIocSA9PiBkYXRhLmlkcy5pbmRleE9mKHEpID09IC0xKTtcbiAgICAgICAgdGhpcy5maXJlRXZlbnQoKTtcbiAgICB9XG5cbiAgICBoYW5kbGVSZW1vdmVkVmJEaShkYXRhKSB7XG4gICAgICAgIHRoaXMuaWRWYW5CYW5EaXMgPSB0aGlzLmlkVmFuQmFuRGlzLmZpbHRlcihxID0+IGRhdGEuaWRzLmluZGV4T2YocSkgPT0gLTEpO1xuICAgICAgICB0aGlzLmZpcmVFdmVudCgpO1xuICAgIH1cblxuICAgIGZpcmVFdmVudCgpIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSB7XG4gICAgICAgICAgICBpZFZhbkJhbkRlbnM6IHRoaXMuaWRWYW5CYW5EZW5zLFxuICAgICAgICAgICAgaWRWYW5CYW5EaXM6IHRoaXMuaWRWYW5CYW5EaXNcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5vbkNoYW5nZWQuZW1pdCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgd3JpdGVWYWx1ZShvYmo6IGFueSk6IHZvaWQge1xuICAgICAgICBpZiAob2JqID09IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMuaWRWYW5CYW5EZW5zID0gW107XG4gICAgICAgICAgICB0aGlzLmlkVmFuQmFuRGlzID0gW107XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmlkVmFuQmFuRGVucyA9IG9iai5pZFZhbkJhbkRlbnM7XG4gICAgICAgICAgICB0aGlzLmlkVmFuQmFuRGlzID0gb2JqLmlkVmFuQmFuRGlzO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFuYmFuLXBpY2tlci1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uL3Byb2plY3RzL3RueC1zaGFyZWQvc3JjL2xpYi8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvdmFuYmFuLXBpY2tlci92YW5iYW4tcGlja2VyLWRpYWxvZy92YW5iYW4tcGlja2VyLWRpYWxvZy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFekYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDekYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBU3pFLE1BQU0sT0FBTywyQkFBNEIsU0FBUSxhQUFhO0lBYTFELFlBQ0ksU0FBbUI7UUFFbkIsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBVlgsY0FBUyxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ3ZELFlBQU8sR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBRTVDLG9CQUFlLEdBQVcsQ0FBQyxDQUFDO1FBRTVCLFdBQU0sR0FBWSxJQUFJLENBQUM7SUFNdkIsQ0FBQztJQUVELFFBQVE7UUFDSixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDO0lBQ2hFLENBQUM7SUFFRCxXQUFXLENBQUMsR0FBRztRQUNYLElBQUksQ0FBQyxlQUFlLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQztJQUNyQyxDQUFDO0lBRUQsaUJBQWlCLENBQUMsSUFBSTtRQUNsQixJQUFJLENBQUMsWUFBWSxHQUFHO1lBQ2hCLEdBQUcsSUFBSSxDQUFDLFlBQVk7WUFDcEIsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1NBQzlELENBQUM7UUFDRixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELGdCQUFnQixDQUFDLElBQUk7UUFDakIsSUFBSSxDQUFDLFdBQVcsR0FBRztZQUNmLEdBQUcsSUFBSSxDQUFDLFdBQVc7WUFDbkIsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1NBQzdELENBQUM7UUFDRixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELGtCQUFrQixDQUFDLElBQUk7UUFDbkIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0UsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxJQUFJO1FBQ2xCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzNFLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQsU0FBUztRQUNMLE1BQU0sS0FBSyxHQUFHO1lBQ1YsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZO1lBQy9CLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVztTQUNoQyxDQUFDO1FBQ0YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVELFVBQVUsQ0FBQyxHQUFRO1FBQ2YsSUFBSSxHQUFHLElBQUksSUFBSSxFQUFFO1lBQ2IsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7U0FDekI7YUFDSTtZQUNELElBQUksQ0FBQyxZQUFZLEdBQUcsR0FBRyxDQUFDLFlBQVksQ0FBQztZQUNyQyxJQUFJLENBQUMsV0FBVyxHQUFHLEdBQUcsQ0FBQyxXQUFXLENBQUM7U0FDdEM7SUFDTCxDQUFDOzs7WUE1RUosU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSwwQkFBMEI7Z0JBQ3BDLHlpREFBb0Q7Z0JBRXBELFNBQVMsRUFBRSxDQUFDLHVCQUF1QixDQUFDOzthQUN2Qzs7O1lBWmlDLFFBQVE7OztzQkFlckMsS0FBSzsyQkFDTCxLQUFLOzBCQUNMLEtBQUs7d0JBRUwsTUFBTTtzQkFDTixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEluamVjdG9yLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IENvbXBvbmVudENvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vYXBwLWNvbnRleHQvY29tcG9uZW50LWNvbnRleHQuc2VydmljZSc7XHJcbmltcG9ydCB7IENvbXBvbmVudEJhc2UgfSBmcm9tICcuLi8uLi8uLi9jbGFzc2VzL2Jhc2UvY29tcG9uZW50LWJhc2UnO1xyXG5pbXBvcnQgeyBWYW5CYW5QaWNrZXJDb250cm9sU2NoZW1hIH0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy9mb3JtLXNjaGVtYSc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2FwcC12YW5iYW4tcGlja2VyLWRpYWxvZycsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vdmFuYmFuLXBpY2tlci1kaWFsb2cuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vdmFuYmFuLXBpY2tlci1kaWFsb2cuY29tcG9uZW50LnNjc3MnXSxcclxuICAgIHByb3ZpZGVyczogW0NvbXBvbmVudENvbnRleHRTZXJ2aWNlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVmFuQmFuUGlja2VyRGlhbG9nQ29tcG9uZW50IGV4dGVuZHMgQ29tcG9uZW50QmFzZSBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gICAgQElucHV0KCkgY29udHJvbDogVmFuQmFuUGlja2VyQ29udHJvbFNjaGVtYTtcclxuICAgIEBJbnB1dCgpIGlkVmFuQmFuRGVuczogc3RyaW5nW107XHJcbiAgICBASW5wdXQoKSBpZFZhbkJhbkRpczogc3RyaW5nW107XHJcblxyXG4gICAgQE91dHB1dCgpIG9uQ2hhbmdlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICAgIEBPdXRwdXQoKSBvblJlYWR5ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gICAgY3VycmVudFRhYkluZGV4OiBudW1iZXIgPSAwO1xyXG5cclxuICAgIHVzZUFsbDogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgX2luamVjdG9yOiBJbmplY3RvclxyXG4gICAgKSB7XHJcbiAgICAgICAgc3VwZXIoX2luamVjdG9yKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICB0aGlzLnVzZUFsbCA9IHRoaXMuY29udHJvbC51c2VWYkRlbiAmJiB0aGlzLmNvbnRyb2wudXNlVmJEaTtcclxuICAgIH1cclxuXHJcbiAgICBvblRhYkNoYW5nZShldnQpIHtcclxuICAgICAgICB0aGlzLmN1cnJlbnRUYWJJbmRleCA9IGV2dC5pbmRleDtcclxuICAgIH1cclxuXHJcbiAgICBoYW5kbGVQaWNrZWRWYkRlbihkYXRhKSB7XHJcbiAgICAgICAgdGhpcy5pZFZhbkJhbkRlbnMgPSBbXHJcbiAgICAgICAgICAgIC4uLnRoaXMuaWRWYW5CYW5EZW5zLFxyXG4gICAgICAgICAgICAuLi5kYXRhLmlkcy5maWx0ZXIocSA9PiB0aGlzLmlkVmFuQmFuRGVucy5pbmRleE9mKHEpID09IC0xKVxyXG4gICAgICAgIF07XHJcbiAgICAgICAgdGhpcy5maXJlRXZlbnQoKTtcclxuICAgIH1cclxuXHJcbiAgICBoYW5kbGVQaWNrZWRWYkRpKGRhdGEpIHtcclxuICAgICAgICB0aGlzLmlkVmFuQmFuRGlzID0gW1xyXG4gICAgICAgICAgICAuLi50aGlzLmlkVmFuQmFuRGlzLFxyXG4gICAgICAgICAgICAuLi5kYXRhLmlkcy5maWx0ZXIocSA9PiB0aGlzLmlkVmFuQmFuRGlzLmluZGV4T2YocSkgPT0gLTEpXHJcbiAgICAgICAgXTtcclxuICAgICAgICB0aGlzLmZpcmVFdmVudCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGhhbmRsZVJlbW92ZWRWYkRlbihkYXRhKSB7XHJcbiAgICAgICAgdGhpcy5pZFZhbkJhbkRlbnMgPSB0aGlzLmlkVmFuQmFuRGVucy5maWx0ZXIocSA9PiBkYXRhLmlkcy5pbmRleE9mKHEpID09IC0xKTtcclxuICAgICAgICB0aGlzLmZpcmVFdmVudCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGhhbmRsZVJlbW92ZWRWYkRpKGRhdGEpIHtcclxuICAgICAgICB0aGlzLmlkVmFuQmFuRGlzID0gdGhpcy5pZFZhbkJhbkRpcy5maWx0ZXIocSA9PiBkYXRhLmlkcy5pbmRleE9mKHEpID09IC0xKTtcclxuICAgICAgICB0aGlzLmZpcmVFdmVudCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGZpcmVFdmVudCgpIHtcclxuICAgICAgICBjb25zdCB2YWx1ZSA9IHtcclxuICAgICAgICAgICAgaWRWYW5CYW5EZW5zOiB0aGlzLmlkVmFuQmFuRGVucyxcclxuICAgICAgICAgICAgaWRWYW5CYW5EaXM6IHRoaXMuaWRWYW5CYW5EaXNcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMub25DaGFuZ2VkLmVtaXQodmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHdyaXRlVmFsdWUob2JqOiBhbnkpOiB2b2lkIHtcclxuICAgICAgICBpZiAob2JqID09IG51bGwpIHtcclxuICAgICAgICAgICAgdGhpcy5pZFZhbkJhbkRlbnMgPSBbXTtcclxuICAgICAgICAgICAgdGhpcy5pZFZhbkJhbkRpcyA9IFtdO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5pZFZhbkJhbkRlbnMgPSBvYmouaWRWYW5CYW5EZW5zO1xyXG4gICAgICAgICAgICB0aGlzLmlkVmFuQmFuRGlzID0gb2JqLmlkVmFuQmFuRGlzO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iXX0=
@@ -155,7 +155,7 @@ WorkflowPickerComponent.decorators = [
155
155
  selector: 'workflow-picker',
156
156
  template: "<crud-form *ngIf=\"readyCrudForm\" #crudForm [(data)]=\"model.data\" [setting]=\"setting\" [context]=\"context\"\r\n [styleClass]=\"'workflow-setting'\" [disableCaching]=\"true\" (onFormReady)=\"_handleFormReady($event)\">\r\n <ng-template #designer>\r\n <div *ngFor=\"let wfCode of model.data._workflowCodes\">\r\n <div class=\"title-workflow\">\r\n Quy tr\u00ECnh {{dicMachinesData[wfCode].ten}} ({{wfCode}})\r\n <span *ngIf=\"wfCode == model.data.workflowCode\" class=\"pi pi-star\" pTooltip=\"\u0110\u00E2y l\u00E0 quy tr\u00ECnh ch\u00EDnh\"\r\n tooltipPosition=\"top\"></span>\r\n </div>\r\n <statemachines-designer #designer [data]=\"dicMachinesData[wfCode]\" [viewOnly]=\"true\">\r\n </statemachines-designer>\r\n </div>\r\n </ng-template>\r\n</crud-form>\r\n<div *ngIf=\"showButtonSave\" class=\"container-button-workflow\">\r\n <button type=\"button\" pButton icon=\"pi pi-save\" class=\"p-button-text\" [label]=\"'L\u01B0u c\u1EA5u h\u00ECnh' | translate\"\r\n (click)=\"_handleSave($event)\"></button>\r\n</div>",
157
157
  providers: [ComponentContextService],
158
- styles: [".title-workflow{font-size:.9em;font-weight:700;padding:1em 0 .5em}.title-workflow .pi-star{color:orange}.container-button-workflow{background:#fff;border-top:1px solid #ddd;bottom:0;padding:.5em;position:-webkit-sticky;position:sticky;text-align:right;z-index:10}"]
158
+ styles: [".title-workflow{font-size:.9em;font-weight:700;padding:1em 0 .5em}.title-workflow .pi-star{color:orange}.container-button-workflow{background:#fff;border-top:1px solid #ddd;bottom:0;padding:.5em;position:sticky;text-align:right;z-index:10}"]
159
159
  },] }
160
160
  ];
161
161
  WorkflowPickerComponent.ctorParameters = () => [
@@ -148,7 +148,7 @@ WorkflowSettingNewComponent.decorators = [
148
148
  selector: 'workflow-setting-new',
149
149
  template: "<crud-form *ngIf=\"readyCrudForm\" #crudForm [(data)]=\"model.data\" [setting]=\"setting\" [context]=\"context\"\r\n [styleClass]=\"'workflow-setting'\" [disableCaching]=\"true\" (onFormReady)=\"_handleFormReady($event)\">\r\n <ng-template #workflowPicker>\r\n <workflow-picker [data]=\"model.data\"></workflow-picker>\r\n </ng-template>\r\n</crud-form>\r\n<ng-template #buttonTemplate>\r\n <div class=\"footer-workflow-setting\">\r\n <button type=\"button\" pButton icon=\"pi pi-save\" class=\"p-button-text\" [label]=\"'FORM.SAVE' | translate\"\r\n (click)=\"_handleSave($event)\"></button>\r\n <button *ngIf=\"model.data.id\" type=\"button\" pButton icon=\"pi pi-trash\" class=\"p-button-danger p-button-text\"\r\n [label]=\"'H\u1EE7y quy tr\u00ECnh' | translate\" (click)=\"handleCancelWorkflow($event)\"></button>\r\n <button type=\"button\" pButton icon=\"pi pi-replay\" class=\"p-button-text p-button-secondary\"\r\n [label]=\"'FORM.CANCEL' | translate\" preventTab (click)=\"_handleCancel($event)\"></button>\r\n </div>\r\n</ng-template>",
150
150
  providers: [ComponentContextService],
151
- styles: [".title-workflow{font-size:.9em;font-weight:700;padding:1em 0 .5em}.title-workflow .pi-star{color:orange}.container-button-workflow{background:#fff;border-top:1px solid #ddd;bottom:0;padding:.5em;position:-webkit-sticky;position:sticky;text-align:right;z-index:10}"]
151
+ styles: [".title-workflow{font-size:.9em;font-weight:700;padding:1em 0 .5em}.title-workflow .pi-star{color:orange}.container-button-workflow{background:#fff;border-top:1px solid #ddd;bottom:0;padding:.5em;position:sticky;text-align:right;z-index:10}"]
152
152
  },] }
153
153
  ];
154
154
  WorkflowSettingNewComponent.ctorParameters = () => [
@@ -60,14 +60,22 @@ export class BaseCongviecDinhkemComponent extends DataListBase {
60
60
  }
61
61
  afterGetData() {
62
62
  return __awaiter(this, void 0, void 0, function* () {
63
- for (const item of this.model.dataSource) {
64
- const detail = (yield this._congViecDinhKemService.getDetailItem(item.serviceCode, item.entity, item.entityKey, item.fieldHienThi)).data;
65
- if (detail.length > 0) {
66
- item.tieuDe = detail[0][item.fieldHienThi];
63
+ const dicGrouped = {};
64
+ this.model.dataSource.forEach(item => {
65
+ if (!dicGrouped[item.serviceCode]) {
66
+ dicGrouped[item.serviceCode] = {};
67
67
  }
68
- else {
69
- item.tieuDe = 'Không tìm thấy bản ghi';
68
+ if (!dicGrouped[item.serviceCode][item.entity]) {
69
+ dicGrouped[item.serviceCode][item.entity] = {
70
+ fieldHienThi: item.fieldHienThi,
71
+ lstId: []
72
+ };
70
73
  }
74
+ dicGrouped[item.serviceCode][item.entity].lstId.push(item.entityKey);
75
+ });
76
+ const dataDisplayName = yield this._congViecDinhKemService.getDetailItems(dicGrouped);
77
+ for (const item of this.model.dataSource) {
78
+ item.tieuDe = dataDisplayName[item.serviceCode][item.entity][item.entityKey];
71
79
  if (item.tenHienThiDoiTuong != null) {
72
80
  item.tenHienThiDoiTuong = item.tenHienThiDoiTuong.trim();
73
81
  item.tenHienThiDoiTuong = item.tenHienThiDoiTuong.substring(0, 1).toUpperCase() + item.tenHienThiDoiTuong.substring(1);
@@ -212,4 +220,4 @@ BaseCongviecDinhkemComponent.propDecorators = {
212
220
  formState: [{ type: Input }],
213
221
  taskId: [{ type: Input }]
214
222
  };
215
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZ3ZpZWMtZGluaGtlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vcHJvamVjdHMvdG54LXNoYXJlZC9zcmMvbGliLyIsInNvdXJjZXMiOlsiY29uZ3ZpZWMvY29uZ3ZpZWMvY29uZ3ZpZWMtZGluaGtlbS9jb25ndmllYy1kaW5oa2VtLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxRQUFRLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsY0FBYyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbkgsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBRS9GLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQVM5RSxNQUFNLE9BQU8sNEJBQTZCLFNBQVEsWUFBWTtJQVcxRCxZQUNJLFFBQWtCLEVBQ1YsbUJBQXVDLEVBQ3ZDLHVCQUErQyxFQUNoRCxlQUFnQztRQUV2QyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFKUix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQW9CO1FBQ3ZDLDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBd0I7UUFDaEQsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBZGxDLGNBQVMsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDO1FBRzdCLGVBQVUsR0FBRyxjQUFjLENBQUM7UUFDNUIsa0JB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TSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUM3QixJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDVCxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDOUM7aUJBQ0k7Z0JBQ0QsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQzthQUN2QjtTQUNKO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQVk7UUFDcEIsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDakMsQ0FBQzs7O1lBOU1KLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUsdUJBQXVCO2dCQUNqQywwaUhBQWdEO2dCQUVoRCxTQUFTLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQzs7YUFDdkM7OztZQWhCK0IsUUFBUTtZQU8vQixrQkFBa0I7WUFDbEIsc0JBQXNCO1lBSnRCLGVBQWU7Ozt3QkFjbkIsS0FBSztxQkFDTCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbmplY3RvciwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRDb250ZXh0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2FwcC1jb250ZXh0L2NvbXBvbmVudC1jb250ZXh0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEYXRhTGlzdEJhc2UgfSBmcm9tICcuLi8uLi8uLi9jbGFzc2VzL2Jhc2UvZGF0YS1saXN0LWJhc2UnO1xyXG5pbXBvcnQgeyBDb2x1bW5TY2hlbWFCYXNlLCBFbnVtRmlsZUxheW91dCwgSGVpZ2h0VHlwZSwgTW9kZWxTY2hlbWEsIE9wZXJhdG9yIH0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy9mb3JtLXNjaGVtYSc7XHJcbmltcG9ydCB7IEZpbGVEYXRhU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMvZmlsZS1leHBsb3Jlci9zZXJ2aWNlcy9maWxlLWRhdGEuc2VydmljZSc7XHJcbmltcG9ydCB7IEdyaWRJbmZvIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2dyaWQtaW5mbyc7XHJcbmltcG9ydCB7IEZvcm1TdGF0ZSB9IGZyb20gJy4uLy4uLy4uL2NsYXNzZXMvY29uc3RhbnRzJztcclxuaW1wb3J0IHsgVmlydHVhbEJhc2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdmlydHVhbC1iYXNlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb25ndmllY0RpbmhrZW1TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvY29uZ3ZpZWMtZGluaGtlbS5zZXJ2aWNlJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnYmFzZS1jb25ndmllYy1kaW5oa2VtJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9jb25ndmllYy1kaW5oa2VtLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL2Nvbmd2aWVjLWRpbmhrZW0uY29tcG9uZW50LnNjc3MnXSxcclxuICAgIHByb3ZpZGVyczogW0NvbXBvbmVudENvbnRleHRTZXJ2aWNlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQmFzZUNvbmd2aWVjRGluaGtlbUNvbXBvbmVudCBleHRlbmRzIERhdGFMaXN0QmFzZSBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgICBASW5wdXQoKSBmb3JtU3RhdGUgPSBGb3JtU3RhdGUuVklFVztcclxuICAgIEBJbnB1dCgpIHRhc2tJZDogYW55O1xyXG5cclxuICAgIHB1YmxpYyBsYXlvdXRGaWxlID0gRW51bUZpbGVMYXlvdXQ7XHJcbiAgICBwdWJsaWMgZW51bUZvcm1TdGF0ZSA9IEZvcm1TdGF0ZTtcclxuXHJcbiAgICBmb3JtTW9kZWw6IGFueSA9IHt9O1xyXG4gICAgc2hvd0F0dGFjaExpbmtCb3ggPSBmYWxzZTtcclxuICAgIHR5cGVkTGluazogc3RyaW5nID0gJyc7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgaW5qZWN0b3I6IEluamVjdG9yLFxyXG4gICAgICAgIHByaXZhdGUgX3ZpcnR1YWxCYXNlU2VydmljZTogVmlydHVhbEJhc2VTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgX2NvbmdWaWVjRGluaEtlbVNlcnZpY2U6IENvbmd2aWVjRGluaGtlbVNlcnZpY2UsXHJcbiAgICAgICAgcHVibGljIGZpbGVEYXRhU2VydmljZTogRmlsZURhdGFTZXJ2aWNlXHJcbiAgICApIHtcclxuICAgICAgICBzdXBlcihpbmplY3Rvcik7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5nLm9iamVjdE5hbWUgPSAnbeG7pWMgxJHDrW5oIGvDqG0nO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZy5iYXNlU2VydmljZSA9IHRoaXMuX2NvbmdWaWVjRGluaEtlbVNlcnZpY2U7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5nLmhpZGRlblNldHRpbmcgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZy5oaWRkZW5TZXR0aW5nUGVybWlzc2lvbiA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5nLmhpZGRlblNldHRpbmdXb3JrZmxvdyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5nLmhpZGRlblNldHRpbmdXb3JrZmxvd05ldyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5nLmhpZGRlblBhZ2VTZXR0aW5nID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnNldHRpbmcuaGlkZGVuQWR2YW5jZVNlYXJjaCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5nLmhpZGRlbkZpbHRlclJvdyA9IHRydWU7XHJcbiAgICAgICAgLy8gdGhpcy5zZXR0aW5nLmhpZGRlbkNoZWNrYm94ID0gdGhpcy5mb3JtU3RhdGUgPT0gRm9ybVN0YXRlLlZJRVc7XHJcbiAgICAgICAgLy8gdGhpcy5zZXR0aW5nLmhpZGRlbkZ1bmN0aW9uQ29sdW1uID0gdGhpcy5mb3JtU3RhdGUgPT0gRm9ybVN0YXRlLlZJRVc7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5nLmZpeEhlaWdodFR5cGVJbkRpYWxvZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZy5oZWlnaHRUeXBlID0gSGVpZ2h0VHlwZS5keW5hbWljO1xyXG5cclxuICAgICAgICB0aGlzLnNldHRpbmcuc2hvd0V4cG9ydFNlbGVjdGVkSXRlbXMgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgdGhpcy5zZXR0aW5nLm1vZGVsU2NoZW1hcyA9IFtcclxuICAgICAgICAgICAgbmV3IE1vZGVsU2NoZW1hKHsgZmllbGQ6ICd0ZW5IaWVuVGhpRG9pVHVvbmcnLCBuYW1lOiAnxJDhu5FpIHTGsOG7o25nJywgZnVsbE5hbWU6ICfEkOG7kWkgdMaw4bujbmcnLCBkZXNjcmlwdGlvbjogJ8SQ4buRaSB0xrDhu6NuZycgfSksXHJcbiAgICAgICAgICAgIG5ldyBNb2RlbFNjaGVtYSh7IGZpZWxkOiAndGlldURlJywgbmFtZTogJ1Rpw6p1IMSR4buBJywgZnVsbE5hbWU6ICdUacOqdSDEkeG7gScsIGRlc2NyaXB0aW9uOiAnVGnDqnUgxJHhu4EnIH0pLFxyXG4gICAgICAgIF07XHJcbiAgICAgICAgdGhpcy5zZXR0aW5nLmNvbHMgPSBbXHJcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAndGlldURlJyxcclxuICAgICAgICAgICAgICAgIGxhYmVsOiAnVGnDqnUgxJHhu4EnLFxyXG4gICAgICAgICAgICAgICAgc2hvd0VkaXRMaW5rOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgZGF0YVR5cGU6ICd0aWV1RGUnXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBuZXcgQ29sdW1uU2NoZW1hQmFzZSh7XHJcbiAgICAgICAgICAgICAgICBmaWVsZDogJ2ZpbGVEaW5oS2VtJyxcclxuICAgICAgICAgICAgICAgIGxhYmVsOiAnRmlsZSDEkcOtbmgga8OobScsXHJcbiAgICAgICAgICAgICAgICBkYXRhVHlwZTogJ2ZpbGVEaW5oS2VtJ1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIF07XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgbW9kaWZ5R3JpZEluZm8oZ3JpZEluZm8/OiBHcmlkSW5mbykge1xyXG4gICAgICAgIGdyaWRJbmZvLmZpbHRlcnMucHVzaChcclxuICAgICAgICAgICAgdGhpcy5uZXdGaWx0ZXIoJ2lkQ29uZ1ZpZWMnLCBPcGVyYXRvci5lcXVhbCwgdGhpcy50YXNrSWQpXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBhZnRlckdldERhdGEoKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIHRoaXMubW9kZWwuZGF0YVNvdXJjZSkge1xyXG4gICAgICAgICAgICBjb25zdCBkZXRhaWwgPSAoYXdhaXQgdGhpcy5fY29uZ1ZpZWNEaW5oS2VtU2VydmljZS5nZXREZXRhaWxJdGVtKGl0ZW0uc2VydmljZUNvZGUsIGl0ZW0uZW50aXR5LCBpdGVtLmVudGl0eUtleSwgaXRlbS5maWVsZEhpZW5UaGkpKS5kYXRhO1xyXG4gICAgICAgICAgICBpZiAoZGV0YWlsLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIGl0ZW0udGlldURlID0gZGV0YWlsWzBdW2l0ZW0uZmllbGRIaWVuVGhpXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGl0ZW0udGlldURlID0gJ0tow7RuZyB0w6xtIHRo4bqleSBi4bqjbiBnaGknO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChpdGVtLnRlbkhpZW5UaGlEb2lUdW9uZyAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICBpdGVtLnRlbkhpZW5UaGlEb2lUdW9uZyA9IGl0ZW0udGVuSGllblRoaURvaVR1b25nLnRyaW0oKTtcclxuICAgICAgICAgICAgICAgIGl0ZW0udGVuSGllblRoaURvaVR1b25nID0gaXRlbS50ZW5IaWVuVGhpRG9pVHVvbmcuc3Vic3RyaW5nKDAsIDEpLnRvVXBwZXJDYXNlKCkgKyBpdGVtLnRlbkhpZW5UaGlEb2lUdW9uZy5zdWJzdHJpbmcoMSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdmlld0xpbmtJdGVtKGV2dCkge1xyXG4gICAgICAgIHRoaXMudmlld1Jhd0xpbmsoZXZ0KTtcclxuICAgIH1cclxuXHJcbiAgICBkZWxldGVMaW5rSXRlbShldnQpIHtcclxuICAgICAgICB0aGlzLl9ub3RpZmllclNlcnZpY2Uuc2hvd0NvbmZpcm0oJ0LhuqFuIGPDsyBjaOG6r2MgY2jhuq9uIG114buRbiBo4buneSDEkcOtbmgga8OobSBi4bqjbiBnaGkgbsOgeT8nKS50aGVuKGFzeW5jIHJzID0+IHtcclxuICAgICAgICAgICAgaWYgKHJzKSB7XHJcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLl9jb25nVmllY0RpbmhLZW1TZXJ2aWNlLmRlbGV0ZShldnQuaWQpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZWxvYWQoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGRlbGV0ZUxpbmtJdGVtTXVsdGlwbGUoZXZ0KSB7XHJcbiAgICAgICAgdGhpcy5fbm90aWZpZXJTZXJ2aWNlLnNob3dDb25maXJtKCdC4bqhbiBjw7MgY2jhuq9jIGNo4bqvbiBtdeG7kW4gaOG7p3kgxJHDrW5oIGvDqG0gYuG6o24gZ2hpIG7DoHk/JykudGhlbihhc3luYyBycyA9PiB7XHJcbiAgICAgICAgICAgIGlmIChycykge1xyXG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5fY29uZ1ZpZWNEaW5oS2VtU2VydmljZS5kZWxldGVNYW55KHRoaXMubW9kZWwuc2VsZWN0ZWRJdGVtcy5tYXAoeCA9PiB4LmlkKS5qb2luKCcsJykpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZWxvYWQoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHRoZW1EaW5oS2VtKCkge1xyXG4gICAgICAgIGNvbnN0IGNvbnRlbnQgPSB0aGlzLl9jb21tb25TZXJ2aWNlLnBhc3RlQnlTdG9yYWdlKCk7XHJcbiAgICAgICAgaWYgKGNvbnRlbnQpIHtcclxuICAgICAgICAgICAgY29uc3Qgb2JqID0gdGhpcy5wYXJzZUF0dGFjaExpbmsoY29udGVudCk7XHJcbiAgICAgICAgICAgIGlmIChvYmoubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fY29uZ1ZpZWNEaW5oS2VtU2VydmljZS50aGVtRGluaEtlbU5naGllcFZ1KHRoaXMudGFza0lkLCBvYmopLnRoZW4ocnMgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChycy5zdWNjZXNzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX25vdGlmaWVyU2VydmljZS5zaG93U3VjY2VzcygnVGjDqm0gbeG7pWMgxJHDrW5oIGvDqG0gdGjDoG5oIGPDtG5nIScpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbG9hZCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jb21tb25TZXJ2aWNlLmNsZWFyQ2xpcGJvYXJkU3RvcmFnZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93QXR0YWNoTGlua0JveCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSkuY2F0Y2goZXJyID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3dBdHRhY2hMaW5rQm94ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zaG93QXR0YWNoTGlua0JveCA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2hvd0F0dGFjaExpbmtCb3ggPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBhZGRBdHRhY2hMaW5rKCkge1xyXG4gICAgICAgIGlmICh0aGlzLnR5cGVkTGluayAmJiB0aGlzLnR5cGVkTGluay5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG9iaiA9IHRoaXMucGFyc2VBdHRhY2hMaW5rKHRoaXMudHlwZWRMaW5rKTtcclxuICAgICAgICAgICAgaWYgKG9iai5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9jb25nVmllY0RpbmhLZW1TZXJ2aWNlLnRoZW1EaW5oS2VtTmdoaWVwVnUodGhpcy50YXNrSWQsIG9iaikudGhlbihycyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJzLnN1Y2Nlc3MpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbm90aWZpZXJTZXJ2aWNlLnNob3dTdWNjZXNzKCdUaMOqbSBt4bulYyDEkcOtbmgga8OobSB0aMOgbmggY8O0bmchJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd0F0dGFjaExpbmtCb3ggPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50eXBlZExpbmsgPSAnJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWxvYWQoKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX25vdGlmaWVyU2VydmljZS5zaG93V2FybmluZygnTGnDqm4ga+G6v3Qga2jDtG5nIGjhu6NwIGzhu4chJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSkuY2F0Y2goZXJyID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9ub3RpZmllclNlcnZpY2Uuc2hvd1dhcm5pbmcoJ0xpw6puIGvhur90IGtow7RuZyBo4bujcCBs4buHIScpO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9ub3RpZmllclNlcnZpY2Uuc2hvd1dhcm5pbmcoJ0xpw6puIGvhur90IGtow7RuZyBo4bujcCBs4buHIScpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGZvY3VzSW5wdXQoaW5wdXQ6IGFueSkge1xyXG4gICAgICAgIGlucHV0LmZvY3VzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gaHR0cDovL2xvY2FsaG9zdDoyNzIzMC91bml2ZXJzYWwtbGluaz9zZXJ2aWNlQ29kZT1jb25ndmllYyZlbnRpdHk9RE1fUHJpb3JpdHkmZW50aXR5S2V5PTA5MTFmM2U3LTNkYjAtNGI2OC04N2NkLTA3ZDQyNTc0MWU5ZSZzdGF0ZT0mc291cmNlUGF0aD1odHRwOi8vbG9jYWxob3N0OjI3MjMwL2RtLXByaW9yaXR5XHJcbiAgICBwYXJzZUF0dGFjaExpbmsoY29udGVudCkge1xyXG4gICAgICAgIGNvbnN0IGxpbmtzID0gY29udGVudC5zcGxpdCgnXFxyXFxuJyk7XHJcbiAgICAgICAgY29uc3Qgb3AgPSBbXTtcclxuICAgICAgICBmb3IgKGNvbnN0IGxpbmsgb2YgbGlua3MpIHtcclxuICAgICAgICAgICAgY29uc3QgYXJyID0gbGluay5zcGxpdCgnPycpO1xyXG4gICAgICAgICAgICBpZiAoYXJyLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHRlbXAgPSBhcnJbMV07XHJcbiAgICAgICAgICAgICAgICBjb25zdCBxdWVyeSA9IHRoaXMucGFyc2VRdWVyeVN0cmluZyh0ZW1wKTtcclxuICAgICAgICAgICAgICAgIGlmIChxdWVyeSAmJiBxdWVyeS5zZXJ2aWNlQ29kZSAmJiBxdWVyeS5lbnRpdHkgJiYgcXVlcnkuZW50aXR5S2V5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcXVlcnkucmF3TGluayA9IGxpbms7XHJcbiAgICAgICAgICAgICAgICAgICAgb3AucHVzaChxdWVyeSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYGxpbmsgJHtsaW5rfSBpbnZhbGlkIHRvIHBhcnNlYCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG9wO1xyXG4gICAgfVxyXG5cclxuICAgIG9uQWZ0ZXJTYXZlZChldnQpIHtcclxuICAgICAgICAvLyB0aGlzLnNob3dEZXRhaWxGb3JtID0gZmFsc2U7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ2FmdGVyIHNhdmVkJywgZXZ0KTtcclxuICAgIH1cclxuXHJcbiAgICBwYXJzZVF1ZXJ5U3RyaW5nKHF1ZXJ5OiBzdHJpbmcpOiBhbnkge1xyXG4gICAgICAgIGlmICghcXVlcnkpIHJldHVybiBudWxsO1xyXG4gICAgICAgIGlmIChxdWVyeS5zdGFydHNXaXRoKCc/JykpIHF1ZXJ5ID0gcXVlcnkuc3Vic3RyaW5nKDEpO1xyXG4gICAgICAgIGNvbnN0IGFyciA9IHF1ZXJ5LnNwbGl0KCcmJyk7XHJcbiAgICAgICAgY29uc3Qgb2JqID0ge307XHJcbiAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGFycikge1xyXG4gICAgICAgICAgICBjb25zdCB0ZW1wID0gaXRlbS5zcGxpdCgnPScpO1xyXG4gICAgICAgICAgICBpZiAodGVtcFsxXSkge1xyXG4gICAgICAgICAgICAgICAgb2JqW3RlbXBbMF1dID0gZGVjb2RlVVJJQ29tcG9uZW50KHRlbXBbMV0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgb2JqW3RlbXBbMF1dID0gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gb2JqO1xyXG4gICAgfVxyXG5cclxuICAgIHZpZXdSYXdMaW5rKHJvd0RhdGE6IGFueSkge1xyXG4gICAgICAgIHdpbmRvdy5vcGVuKHJvd0RhdGEubGlua0dvYyk7XHJcbiAgICB9XHJcbn1cclxuIl19
223
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZ3ZpZWMtZGluaGtlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vcHJvamVjdHMvdG54LXNoYXJlZC9zcmMvbGliLyIsInNvdXJjZXMiOlsiY29uZ3ZpZWMvY29uZ3ZpZWMvY29uZ3ZpZWMtZGluaGtlbS9jb25ndmllYy1kaW5oa2VtLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxRQUFRLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsY0FBYyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbkgsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBRS9GLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQVM5RSxNQUFNLE9BQU8sNEJBQTZCLFNBQVEsWUFBWTtJQVcxRCxZQUNJLFFBQWtCLEVBQ1YsbUJBQXVDLEVBQ3ZDLHVCQUErQyxFQUNoRCxlQUFnQztRQUV2QyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFKUix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQW9CO1FBQ3ZDLDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBd0I7UUFDaEQsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBZGxDLGNBQVMsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDO1FBRzdCLGVBQVUsR0FBRyxjQUFjLENBQUM7UUFDNUIsa0JB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QWU7Ozt3QkFjbkIsS0FBSztxQkFDTCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbmplY3RvciwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRDb250ZXh0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2FwcC1jb250ZXh0L2NvbXBvbmVudC1jb250ZXh0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEYXRhTGlzdEJhc2UgfSBmcm9tICcuLi8uLi8uLi9jbGFzc2VzL2Jhc2UvZGF0YS1saXN0LWJhc2UnO1xyXG5pbXBvcnQgeyBDb2x1bW5TY2hlbWFCYXNlLCBFbnVtRmlsZUxheW91dCwgSGVpZ2h0VHlwZSwgTW9kZWxTY2hlbWEsIE9wZXJhdG9yIH0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy9mb3JtLXNjaGVtYSc7XHJcbmltcG9ydCB7IEZpbGVEYXRhU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMvZmlsZS1leHBsb3Jlci9zZXJ2aWNlcy9maWxlLWRhdGEuc2VydmljZSc7XHJcbmltcG9ydCB7IEdyaWRJbmZvIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2dyaWQtaW5mbyc7XHJcbmltcG9ydCB7IEZvcm1TdGF0ZSB9IGZyb20gJy4uLy4uLy4uL2NsYXNzZXMvY29uc3RhbnRzJztcclxuaW1wb3J0IHsgVmlydHVhbEJhc2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdmlydHVhbC1iYXNlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb25ndmllY0RpbmhrZW1TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvY29uZ3ZpZWMtZGluaGtlbS5zZXJ2aWNlJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnYmFzZS1jb25ndmllYy1kaW5oa2VtJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9jb25ndmllYy1kaW5oa2VtLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL2Nvbmd2aWVjLWRpbmhrZW0uY29tcG9uZW50LnNjc3MnXSxcclxuICAgIHByb3ZpZGVyczogW0NvbXBvbmVudENvbnRleHRTZXJ2aWNlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQmFzZUNvbmd2aWVjRGluaGtlbUNvbXBvbmVudCBleHRlbmRzIERhdGFMaXN0QmFzZSBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgICBASW5wdXQoKSBmb3JtU3RhdGUgPSBGb3JtU3RhdGUuVklFVztcclxuICAgIEBJbnB1dCgpIHRhc2tJZDogYW55O1xyXG5cclxuICAgIHB1YmxpYyBsYXlvdXRGaWxlID0gRW51bUZpbGVMYXlvdXQ7XHJcbiAgICBwdWJsaWMgZW51bUZvcm1TdGF0ZSA9IEZvcm1TdGF0ZTtcclxuXHJcbiAgICBmb3JtTW9kZWw6IGFueSA9IHt9O1xyXG4gICAgc2hvd0F0dGFjaExpbmtCb3ggPSBmYWxzZTtcclxuICAgIHR5cGVkTGluazogc3RyaW5nID0gJyc7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgaW5qZWN0b3I6IEluamVjdG9yLFxyXG4gICAgICAgIHByaXZhdGUgX3ZpcnR1YWxCYXNlU2VydmljZTogVmlydHVhbEJhc2VTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgX2NvbmdWaWVjRGluaEtlbVNlcnZpY2U6IENvbmd2aWVjRGluaGtlbVNlcnZpY2UsXHJcbiAgICAgICAgcHVibGljIGZpbGVEYXRhU2VydmljZTogRmlsZURhdGFTZXJ2aWNlXHJcbiAgICApIHtcclxuICAgICAgICBzdXBlcihpbmplY3Rvcik7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5nLm9iamVjdE5hbWUgPSAnbeG7pWMgxJHDrW5oIGvDqG0nO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZy5iYXNlU2VydmljZSA9IHRoaXMuX2NvbmdWaWVjRGluaEtlbVNlcnZpY2U7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5nLmhpZGRlblNldHRpbmcgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZy5oaWRkZW5TZXR0aW5nUGVybWlzc2lvbiA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5nLmhpZGRlblNldHRpbmdXb3JrZmxvdyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5nLmhpZGRlblNldHRpbmdXb3JrZmxvd05ldyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5nLmhpZGRlblBhZ2VTZXR0aW5nID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnNldHRpbmcuaGlkZGVuQWR2YW5jZVNlYXJjaCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5nLmhpZGRlbkZpbHRlclJvdyA9IHRydWU7XHJcbiAgICAgICAgLy8gdGhpcy5zZXR0aW5nLmhpZGRlbkNoZWNrYm94ID0gdGhpcy5mb3JtU3RhdGUgPT0gRm9ybVN0YXRlLlZJRVc7XHJcbiAgICAgICAgLy8gdGhpcy5zZXR0aW5nLmhpZGRlbkZ1bmN0aW9uQ29sdW1uID0gdGhpcy5mb3JtU3RhdGUgPT0gRm9ybVN0YXRlLlZJRVc7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5nLmZpeEhlaWdodFR5cGVJbkRpYWxvZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZy5oZWlnaHRUeXBlID0gSGVpZ2h0VHlwZS5keW5hbWljO1xyXG5cclxuICAgICAgICB0aGlzLnNldHRpbmcuc2hvd0V4cG9ydFNlbGVjdGVkSXRlbXMgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgdGhpcy5zZXR0aW5nLm1vZGVsU2NoZW1hcyA9IFtcclxuICAgICAgICAgICAgbmV3IE1vZGVsU2NoZW1hKHsgZmllbGQ6ICd0ZW5IaWVuVGhpRG9pVHVvbmcnLCBuYW1lOiAnxJDhu5FpIHTGsOG7o25nJywgZnVsbE5hbWU6ICfEkOG7kWkgdMaw4bujbmcnLCBkZXNjcmlwdGlvbjogJ8SQ4buRaSB0xrDhu6NuZycgfSksXHJcbiAgICAgICAgICAgIG5ldyBNb2RlbFNjaGVtYSh7IGZpZWxkOiAndGlldURlJywgbmFtZTogJ1Rpw6p1IMSR4buBJywgZnVsbE5hbWU6ICdUacOqdSDEkeG7gScsIGRlc2NyaXB0aW9uOiAnVGnDqnUgxJHhu4EnIH0pLFxyXG4gICAgICAgIF07XHJcbiAgICAgICAgdGhpcy5zZXR0aW5nLmNvbHMgPSBbXHJcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAndGlldURlJyxcclxuICAgICAgICAgICAgICAgIGxhYmVsOiAnVGnDqnUgxJHhu4EnLFxyXG4gICAgICAgICAgICAgICAgc2hvd0VkaXRMaW5rOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgZGF0YVR5cGU6ICd0aWV1RGUnXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBuZXcgQ29sdW1uU2NoZW1hQmFzZSh7XHJcbiAgICAgICAgICAgICAgICBmaWVsZDogJ2ZpbGVEaW5oS2VtJyxcclxuICAgICAgICAgICAgICAgIGxhYmVsOiAnRmlsZSDEkcOtbmgga8OobScsXHJcbiAgICAgICAgICAgICAgICBkYXRhVHlwZTogJ2ZpbGVEaW5oS2VtJ1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIF07XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgbW9kaWZ5R3JpZEluZm8oZ3JpZEluZm8/OiBHcmlkSW5mbykge1xyXG4gICAgICAgIGdyaWRJbmZvLmZpbHRlcnMucHVzaChcclxuICAgICAgICAgICAgdGhpcy5uZXdGaWx0ZXIoJ2lkQ29uZ1ZpZWMnLCBPcGVyYXRvci5lcXVhbCwgdGhpcy50YXNrSWQpXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBhZnRlckdldERhdGEoKSB7XHJcbiAgICAgICAgY29uc3QgZGljR3JvdXBlZCA9IHt9O1xyXG4gICAgICAgIHRoaXMubW9kZWwuZGF0YVNvdXJjZS5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgICAgICBpZiAoIWRpY0dyb3VwZWRbaXRlbS5zZXJ2aWNlQ29kZV0pIHtcclxuICAgICAgICAgICAgICAgIGRpY0dyb3VwZWRbaXRlbS5zZXJ2aWNlQ29kZV0gPSB7fTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoIWRpY0dyb3VwZWRbaXRlbS5zZXJ2aWNlQ29kZV1baXRlbS5lbnRpdHldKSB7XHJcbiAgICAgICAgICAgICAgICBkaWNHcm91cGVkW2l0ZW0uc2VydmljZUNvZGVdW2l0ZW0uZW50aXR5XSA9IHtcclxuICAgICAgICAgICAgICAgICAgICBmaWVsZEhpZW5UaGk6IGl0ZW0uZmllbGRIaWVuVGhpLFxyXG4gICAgICAgICAgICAgICAgICAgIGxzdElkOiBbXVxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBkaWNHcm91cGVkW2l0ZW0uc2VydmljZUNvZGVdW2l0ZW0uZW50aXR5XS5sc3RJZC5wdXNoKGl0ZW0uZW50aXR5S2V5KTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBjb25zdCBkYXRhRGlzcGxheU5hbWUgPSBhd2FpdCB0aGlzLl9jb25nVmllY0RpbmhLZW1TZXJ2aWNlLmdldERldGFpbEl0ZW1zKGRpY0dyb3VwZWQpO1xyXG4gICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aGlzLm1vZGVsLmRhdGFTb3VyY2UpIHtcclxuICAgICAgICAgICAgaXRlbS50aWV1RGUgPSBkYXRhRGlzcGxheU5hbWVbaXRlbS5zZXJ2aWNlQ29kZV1baXRlbS5lbnRpdHldW2l0ZW0uZW50aXR5S2V5XTtcclxuICAgICAgICAgICAgaWYgKGl0ZW0udGVuSGllblRoaURvaVR1b25nICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIGl0ZW0udGVuSGllblRoaURvaVR1b25nID0gaXRlbS50ZW5IaWVuVGhpRG9pVHVvbmcudHJpbSgpO1xyXG4gICAgICAgICAgICAgICAgaXRlbS50ZW5IaWVuVGhpRG9pVHVvbmcgPSBpdGVtLnRlbkhpZW5UaGlEb2lUdW9uZy5zdWJzdHJpbmcoMCwgMSkudG9VcHBlckNhc2UoKSArIGl0ZW0udGVuSGllblRoaURvaVR1b25nLnN1YnN0cmluZygxKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB2aWV3TGlua0l0ZW0oZXZ0KSB7XHJcbiAgICAgICAgdGhpcy52aWV3UmF3TGluayhldnQpO1xyXG4gICAgfVxyXG5cclxuICAgIGRlbGV0ZUxpbmtJdGVtKGV2dCkge1xyXG4gICAgICAgIHRoaXMuX25vdGlmaWVyU2VydmljZS5zaG93Q29uZmlybSgnQuG6oW4gY8OzIGNo4bqvYyBjaOG6r24gbXXhu5FuIGjhu6d5IMSRw61uaCBrw6htIGLhuqNuIGdoaSBuw6B5PycpLnRoZW4oYXN5bmMgcnMgPT4ge1xyXG4gICAgICAgICAgICBpZiAocnMpIHtcclxuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuX2NvbmdWaWVjRGluaEtlbVNlcnZpY2UuZGVsZXRlKGV2dC5pZCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlbG9hZCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZGVsZXRlTGlua0l0ZW1NdWx0aXBsZShldnQpIHtcclxuICAgICAgICB0aGlzLl9ub3RpZmllclNlcnZpY2Uuc2hvd0NvbmZpcm0oJ0LhuqFuIGPDsyBjaOG6r2MgY2jhuq9uIG114buRbiBo4buneSDEkcOtbmgga8OobSBi4bqjbiBnaGkgbsOgeT8nKS50aGVuKGFzeW5jIHJzID0+IHtcclxuICAgICAgICAgICAgaWYgKHJzKSB7XHJcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLl9jb25nVmllY0RpbmhLZW1TZXJ2aWNlLmRlbGV0ZU1hbnkodGhpcy5tb2RlbC5zZWxlY3RlZEl0ZW1zLm1hcCh4ID0+IHguaWQpLmpvaW4oJywnKSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlbG9hZCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgdGhlbURpbmhLZW0oKSB7XHJcbiAgICAgICAgY29uc3QgY29udGVudCA9IHRoaXMuX2NvbW1vblNlcnZpY2UucGFzdGVCeVN0b3JhZ2UoKTtcclxuICAgICAgICBpZiAoY29udGVudCkge1xyXG4gICAgICAgICAgICBjb25zdCBvYmogPSB0aGlzLnBhcnNlQXR0YWNoTGluayhjb250ZW50KTtcclxuICAgICAgICAgICAgaWYgKG9iai5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9jb25nVmllY0RpbmhLZW1TZXJ2aWNlLnRoZW1EaW5oS2VtTmdoaWVwVnUodGhpcy50YXNrSWQsIG9iaikudGhlbihycyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJzLnN1Y2Nlc3MpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbm90aWZpZXJTZXJ2aWNlLnNob3dTdWNjZXNzKCdUaMOqbSBt4bulYyDEkcOtbmgga8OobSB0aMOgbmggY8O0bmchJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVsb2FkKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2NvbW1vblNlcnZpY2UuY2xlYXJDbGlwYm9hcmRTdG9yYWdlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3dBdHRhY2hMaW5rQm94ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KS5jYXRjaChlcnIgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd0F0dGFjaExpbmtCb3ggPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNob3dBdHRhY2hMaW5rQm94ID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5zaG93QXR0YWNoTGlua0JveCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGFkZEF0dGFjaExpbmsoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMudHlwZWRMaW5rICYmIHRoaXMudHlwZWRMaW5rLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgY29uc3Qgb2JqID0gdGhpcy5wYXJzZUF0dGFjaExpbmsodGhpcy50eXBlZExpbmspO1xyXG4gICAgICAgICAgICBpZiAob2JqLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2NvbmdWaWVjRGluaEtlbVNlcnZpY2UudGhlbURpbmhLZW1OZ2hpZXBWdSh0aGlzLnRhc2tJZCwgb2JqKS50aGVuKHJzID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocnMuc3VjY2Vzcykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9ub3RpZmllclNlcnZpY2Uuc2hvd1N1Y2Nlc3MoJ1Row6ptIG3hu6VjIMSRw61uaCBrw6htIHRow6BuaCBjw7RuZyEnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93QXR0YWNoTGlua0JveCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnR5cGVkTGluayA9ICcnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbG9hZCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbm90aWZpZXJTZXJ2aWNlLnNob3dXYXJuaW5nKCdMacOqbiBr4bq/dCBraMO0bmcgaOG7o3AgbOG7hyEnKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KS5jYXRjaChlcnIgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX25vdGlmaWVyU2VydmljZS5zaG93V2FybmluZygnTGnDqm4ga+G6v3Qga2jDtG5nIGjhu6NwIGzhu4chJyk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX25vdGlmaWVyU2VydmljZS5zaG93V2FybmluZygnTGnDqm4ga+G6v3Qga2jDtG5nIGjhu6NwIGzhu4chJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZm9jdXNJbnB1dChpbnB1dDogYW55KSB7XHJcbiAgICAgICAgaW5wdXQuZm9jdXMoKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBodHRwOi8vbG9jYWxob3N0OjI3MjMwL3VuaXZlcnNhbC1saW5rP3NlcnZpY2VDb2RlPWNvbmd2aWVjJmVudGl0eT1ETV9Qcmlvcml0eSZlbnRpdHlLZXk9MDkxMWYzZTctM2RiMC00YjY4LTg3Y2QtMDdkNDI1NzQxZTllJnN0YXRlPSZzb3VyY2VQYXRoPWh0dHA6Ly9sb2NhbGhvc3Q6MjcyMzAvZG0tcHJpb3JpdHlcclxuICAgIHBhcnNlQXR0YWNoTGluayhjb250ZW50KSB7XHJcbiAgICAgICAgY29uc3QgbGlua3MgPSBjb250ZW50LnNwbGl0KCdcXHJcXG4nKTtcclxuICAgICAgICBjb25zdCBvcCA9IFtdO1xyXG4gICAgICAgIGZvciAoY29uc3QgbGluayBvZiBsaW5rcykge1xyXG4gICAgICAgICAgICBjb25zdCBhcnIgPSBsaW5rLnNwbGl0KCc/Jyk7XHJcbiAgICAgICAgICAgIGlmIChhcnIubGVuZ3RoID4gMSkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgdGVtcCA9IGFyclsxXTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHF1ZXJ5ID0gdGhpcy5wYXJzZVF1ZXJ5U3RyaW5nKHRlbXApO1xyXG4gICAgICAgICAgICAgICAgaWYgKHF1ZXJ5ICYmIHF1ZXJ5LnNlcnZpY2VDb2RlICYmIHF1ZXJ5LmVudGl0eSAmJiBxdWVyeS5lbnRpdHlLZXkpIHtcclxuICAgICAgICAgICAgICAgICAgICBxdWVyeS5yYXdMaW5rID0gbGluaztcclxuICAgICAgICAgICAgICAgICAgICBvcC5wdXNoKHF1ZXJ5KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihgbGluayAke2xpbmt9IGludmFsaWQgdG8gcGFyc2VgKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gb3A7XHJcbiAgICB9XHJcblxyXG4gICAgb25BZnRlclNhdmVkKGV2dCkge1xyXG4gICAgICAgIC8vIHRoaXMuc2hvd0RldGFpbEZvcm0gPSBmYWxzZTtcclxuICAgICAgICBjb25zb2xlLmxvZygnYWZ0ZXIgc2F2ZWQnLCBldnQpO1xyXG4gICAgfVxyXG5cclxuICAgIHBhcnNlUXVlcnlTdHJpbmcocXVlcnk6IHN0cmluZyk6IGFueSB7XHJcbiAgICAgICAgaWYgKCFxdWVyeSkgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgaWYgKHF1ZXJ5LnN0YXJ0c1dpdGgoJz8nKSkgcXVlcnkgPSBxdWVyeS5zdWJzdHJpbmcoMSk7XHJcbiAgICAgICAgY29uc3QgYXJyID0gcXVlcnkuc3BsaXQoJyYnKTtcclxuICAgICAgICBjb25zdCBvYmogPSB7fTtcclxuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgYXJyKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHRlbXAgPSBpdGVtLnNwbGl0KCc9Jyk7XHJcbiAgICAgICAgICAgIGlmICh0ZW1wWzFdKSB7XHJcbiAgICAgICAgICAgICAgICBvYmpbdGVtcFswXV0gPSBkZWNvZGVVUklDb21wb25lbnQodGVtcFsxXSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBvYmpbdGVtcFswXV0gPSBudWxsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBvYmo7XHJcbiAgICB9XHJcblxyXG4gICAgdmlld1Jhd0xpbmsocm93RGF0YTogYW55KSB7XHJcbiAgICAgICAgd2luZG93Lm9wZW4ocm93RGF0YS5saW5rR29jKTtcclxuICAgIH1cclxufVxyXG4iXX0=
@@ -1,9 +1,11 @@
1
+ import { __awaiter } from "tslib";
1
2
  import { HttpClient } from '@angular/common/http';
2
3
  import { Injectable, Injector } from '@angular/core';
3
4
  import { Operator } from '../../../classes/form-schema';
4
5
  import { GridInfo } from '../../../models/grid-info';
5
6
  import { BaseService } from '../../../services/base.service';
6
7
  import { ModuleConfigService } from '../../../services/module-config.service';
8
+ import { NotifierService } from '../../../services/notifier.service';
7
9
  import * as i0 from "@angular/core";
8
10
  import * as i1 from "@angular/common/http";
9
11
  import * as i2 from "../../../services/module-config.service";
@@ -23,6 +25,11 @@ export class CongviecDinhkemService extends BaseService {
23
25
  }
24
26
  getDetailItem(serviceCode, entity, entityKey, fieldDisplay) {
25
27
  const serviceCodeEndpoint = this.env.apiDomain[`${serviceCode}Endpoint`];
28
+ if (!serviceCodeEndpoint) {
29
+ const notifierService = this._injector.get(NotifierService);
30
+ notifierService.showWarning(`Không lấy được thông tin endpoint của dịch vụ ${serviceCode}`);
31
+ return new Promise((res, rej) => res({ success: true, data: [] }));
32
+ }
26
33
  const uri = `${serviceCodeEndpoint}/${this._moduleConfigService.getConfig().environment.apiVersion}/${entity}/GetData`;
27
34
  const gridInfo = new GridInfo({
28
35
  fields: fieldDisplay,
@@ -32,6 +39,55 @@ export class CongviecDinhkemService extends BaseService {
32
39
  });
33
40
  return this._http.post(uri, gridInfo).toPromise();
34
41
  }
42
+ getDetailItems(dicGrouped) {
43
+ return __awaiter(this, void 0, void 0, function* () {
44
+ const result = {};
45
+ const serviceCodes = Object.keys(dicGrouped);
46
+ for (const serviceCode of serviceCodes) {
47
+ result[serviceCode] = {};
48
+ const entitys = Object.keys(dicGrouped[serviceCode]);
49
+ for (const entity of entitys) {
50
+ result[serviceCode][entity] = {};
51
+ dicGrouped[serviceCode][entity].lstId.forEach(entityKey => {
52
+ result[serviceCode][entity][entityKey] = 'Không tìm thấy bản ghi';
53
+ });
54
+ }
55
+ const serviceCodeEndpoint = this.env.apiDomain[`${serviceCode}Endpoint`];
56
+ if (!serviceCodeEndpoint) {
57
+ return;
58
+ }
59
+ for (const entity of entitys) {
60
+ const dataByEntity = dicGrouped[serviceCode][entity];
61
+ const uri = `${serviceCodeEndpoint}/${this._moduleConfigService.getConfig().environment.apiVersion}/${entity}/GetAllByFilter`;
62
+ const filters = [];
63
+ if (dataByEntity.lstId.length == 1) {
64
+ filters.push(this.newFilter('id', Operator.equal, dataByEntity.lstId[0]));
65
+ }
66
+ else {
67
+ filters.push(this.newFilter('id', Operator.in, dataByEntity.lstId));
68
+ }
69
+ const gridInfo = new GridInfo({
70
+ fields: `id,${dataByEntity.fieldHienThi}`,
71
+ pageInfo: { page: 1, pageSize: dataByEntity.lstId.length },
72
+ filters,
73
+ sorts: []
74
+ });
75
+ try {
76
+ const data = yield (this._http.post(uri, gridInfo).toPromise());
77
+ if (data.success && data.data && data.data.length) {
78
+ data.data.forEach(itemDetail => {
79
+ result[serviceCode][entity][itemDetail.id] = itemDetail[dataByEntity.fieldHienThi];
80
+ });
81
+ }
82
+ }
83
+ catch (err) {
84
+ console.log(err);
85
+ }
86
+ }
87
+ }
88
+ return result;
89
+ });
90
+ }
35
91
  }
36
92
  CongviecDinhkemService.ɵprov = i0.ɵɵdefineInjectable({ factory: function CongviecDinhkemService_Factory() { return new CongviecDinhkemService(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(i0.INJECTOR), i0.ɵɵinject(i2.ModuleConfigService)); }, token: CongviecDinhkemService, providedIn: "root" });
37
93
  CongviecDinhkemService.decorators = [
@@ -44,4 +100,4 @@ CongviecDinhkemService.ctorParameters = () => [
44
100
  { type: Injector },
45
101
  { type: ModuleConfigService }
46
102
  ];
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZ3ZpZWMtZGluaGtlbS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uL3Byb2plY3RzL3RueC1zaGFyZWQvc3JjL2xpYi8iLCJzb3VyY2VzIjpbImNvbmd2aWVjL2Nvbmd2aWVjL3NlcnZpY2VzL2Nvbmd2aWVjLWRpbmhrZW0uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUVyRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDN0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUNBQXlDLENBQUM7Ozs7QUFLOUUsTUFBTSxPQUFPLHNCQUF1QixTQUFRLFdBQVc7SUFNckQsWUFDRSxJQUFnQixFQUFFLFFBQWtCLEVBQzVCLG9CQUF5QztRQUVqRCxLQUFLLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxHQUFHLG9CQUFvQixDQUFDLFNBQVMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLElBQUksb0JBQW9CLENBQUMsU0FBUyxFQUFFLENBQUMsV0FBVyxDQUFDLFVBQVUsa0JBQWtCLENBQUMsQ0FBQztRQUZ2Syx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXFCO1FBUG5ELGdCQUFXLEdBQUcsVUFBVSxDQUFDO1FBQ3pCLGVBQVUsR0FBRyx5QkFBeUIsQ0FBQztRQUN2QyxlQUFVLEdBQUcsV0FBVyxDQUFDO1FBUXZCLElBQUksQ0FBQyxHQUFHLEdBQUcsb0JBQW9CLENBQUMsU0FBUyxFQUFFLENBQUMsV0FBVyxDQUFDO1FBQ3hELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUM7SUFDdEQsQ0FBQztJQUVELG1CQUFtQixDQUFDLE1BQWMsRUFBRSxJQUFTO1FBQzNDLE1BQU0sR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLFVBQVUsZ0JBQWdCLE1BQU0sRUFBRSxDQUFDO1FBQ3ZELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQWlCLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNoRSxDQUFDO0lBRUQsYUFBYSxDQUFDLFdBQW1CLEVBQUUsTUFBYyxFQUFFLFNBQWlCLEVBQUUsWUFBb0I7UUFDeEYsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxHQUFHLFdBQVcsVUFBVSxDQUFDLENBQUM7UUFDekUsTUFBTSxHQUFHLEdBQUcsR0FBRyxtQkFBbUIsSUFBSSxJQUFJLENBQUMsb0JBQW9CLENBQUMsU0FBUyxFQUFFLENBQUMsV0FBVyxDQUFDLFVBQVUsSUFBSSxNQUFNLFVBQVUsQ0FBQztRQUN2SCxNQUFNLFFBQVEsR0FBRyxJQUFJLFFBQVEsQ0FBQztZQUM1QixNQUFNLEVBQUUsWUFBWTtZQUNwQixRQUFRLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUU7WUFDbEMsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQztZQUMxRCxLQUFLLEVBQUUsRUFBRTtTQUNWLENBQUMsQ0FBQztRQUNILE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQWlCLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNwRSxDQUFDOzs7O1lBakNGLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjs7O1lBVlEsVUFBVTtZQUNFLFFBQVE7WUFLcEIsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgT3BlcmF0b3IgfSBmcm9tICcuLi8uLi8uLi9jbGFzc2VzL2Zvcm0tc2NoZW1hJztcclxuaW1wb3J0IHsgR3JpZEluZm8gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZ3JpZC1pbmZvJztcclxuaW1wb3J0IHsgUmVzcG9uc2VSZXN1bHQgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvcmVzcG9uc2UtcmVzdWx0JztcclxuaW1wb3J0IHsgQmFzZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9iYXNlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNb2R1bGVDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbW9kdWxlLWNvbmZpZy5zZXJ2aWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIENvbmd2aWVjRGluaGtlbVNlcnZpY2UgZXh0ZW5kcyBCYXNlU2VydmljZSB7XHJcbiAgc2VydmljZUNvZGUgPSAnY29uZ3ZpZWMnO1xyXG4gIGVudGl0eU5hbWUgPSAnQ29uZ1ZpZWNEaW5oS2VtTmdoaWVwVnUnO1xyXG4gIG9iamVjdE5hbWUgPSAnY8O0bmcgdmnhu4djJztcclxuICBlbnY6IGFueTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBodHRwOiBIdHRwQ2xpZW50LCBpbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICBwcml2YXRlIF9tb2R1bGVDb25maWdTZXJ2aWNlOiBNb2R1bGVDb25maWdTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICBzdXBlcihodHRwLCBpbmplY3RvciwgYCR7X21vZHVsZUNvbmZpZ1NlcnZpY2UuZ2V0Q29uZmlnKCkuZW52aXJvbm1lbnQuYXBpRG9tYWluLmNvbmd2aWVjRW5kcG9pbnR9LyR7X21vZHVsZUNvbmZpZ1NlcnZpY2UuZ2V0Q29uZmlnKCkuZW52aXJvbm1lbnQuYXBpVmVyc2lvbn0vRGluaEtlbU5naGllcFZ1YCk7XHJcbiAgICB0aGlzLmVudiA9IF9tb2R1bGVDb25maWdTZXJ2aWNlLmdldENvbmZpZygpLmVudmlyb25tZW50O1xyXG4gICAgdGhpcy5lbmRQb2ludCA9IHRoaXMuZW52LmFwaURvbWFpbi5jb25ndmllY0VuZHBvaW50O1xyXG4gIH1cclxuXHJcbiAgdGhlbURpbmhLZW1OZ2hpZXBWdSh0YXNrSWQ6IHN0cmluZywgZGF0YTogYW55KTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS9UaGVtRGluaEtlbS8ke3Rhc2tJZH1gO1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAucG9zdDxSZXNwb25zZVJlc3VsdD4odXJsLCBkYXRhKS50b1Byb21pc2UoKTtcclxuICB9XHJcblxyXG4gIGdldERldGFpbEl0ZW0oc2VydmljZUNvZGU6IHN0cmluZywgZW50aXR5OiBzdHJpbmcsIGVudGl0eUtleTogc3RyaW5nLCBmaWVsZERpc3BsYXk6IHN0cmluZyk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgIGNvbnN0IHNlcnZpY2VDb2RlRW5kcG9pbnQgPSB0aGlzLmVudi5hcGlEb21haW5bYCR7c2VydmljZUNvZGV9RW5kcG9pbnRgXTtcclxuICAgIGNvbnN0IHVyaSA9IGAke3NlcnZpY2VDb2RlRW5kcG9pbnR9LyR7dGhpcy5fbW9kdWxlQ29uZmlnU2VydmljZS5nZXRDb25maWcoKS5lbnZpcm9ubWVudC5hcGlWZXJzaW9ufS8ke2VudGl0eX0vR2V0RGF0YWA7XHJcbiAgICBjb25zdCBncmlkSW5mbyA9IG5ldyBHcmlkSW5mbyh7XHJcbiAgICAgIGZpZWxkczogZmllbGREaXNwbGF5LFxyXG4gICAgICBwYWdlSW5mbzogeyBwYWdlOiAxLCBwYWdlU2l6ZTogMSB9LFxyXG4gICAgICBmaWx0ZXJzOiBbdGhpcy5uZXdGaWx0ZXIoJ2lkJywgT3BlcmF0b3IuZXF1YWwsIGVudGl0eUtleSldLFxyXG4gICAgICBzb3J0czogW11cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAucG9zdDxSZXNwb25zZVJlc3VsdD4odXJpLCBncmlkSW5mbykudG9Qcm9taXNlKCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
103
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZ3ZpZWMtZGluaGtlbS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uL3Byb2plY3RzL3RueC1zaGFyZWQvc3JjL2xpYi8iLCJzb3VyY2VzIjpbImNvbmd2aWVjL2Nvbmd2aWVjL3NlcnZpY2VzL2Nvbmd2aWVjLWRpbmhrZW0uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFckQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzdELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7OztBQUtyRSxNQUFNLE9BQU8sc0JBQXVCLFNBQVEsV0FBVztJQU1uRCxZQUNJLElBQWdCLEVBQUUsUUFBa0IsRUFDNUIsb0JBQXlDO1FBRWpELEtBQUssQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLEdBQUcsb0JBQW9CLENBQUMsU0FBUyxFQUFFLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsSUFBSSxvQkFBb0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxXQUFXLENBQUMsVUFBVSxrQkFBa0IsQ0FBQyxDQUFDO1FBRnZLLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBcUI7UUFQckQsZ0JBQVcsR0FBRyxVQUFVLENBQUM7UUFDekIsZUFBVSxHQUFHLHlCQUF5QixDQUFDO1FBQ3ZDLGVBQVUsR0FBRyxXQUFXLENBQUM7UUFRckIsSUFBSSxDQUFDLEdBQUcsR0FBRyxvQkFBb0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxXQUFXLENBQUM7UUFDeEQsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQztJQUN4RCxDQUFDO0lBRUQsbUJBQW1CLENBQUMsTUFBYyxFQUFFLElBQVM7UUFDekMsTUFBTSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSxnQkFBZ0IsTUFBTSxFQUFFLENBQUM7UUFDdkQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBaUIsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ2xFLENBQUM7SUFFRCxhQUFhLENBQUMsV0FBbUIsRUFBRSxNQUFjLEVBQUUsU0FBaUIsRUFBRSxZQUFvQjtRQUN0RixNQUFNLG1CQUFtQixHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEdBQUcsV0FBVyxVQUFVLENBQUMsQ0FBQztRQUN6RSxJQUFJLENBQUMsbUJBQW1CLEVBQUU7WUFDdEIsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDNUQsZUFBZSxDQUFDLFdBQVcsQ0FBQyxpREFBaUQsV0FBVyxFQUFFLENBQUMsQ0FBQztZQUM1RixPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFNLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQzNFO1FBQ0QsTUFBTSxHQUFHLEdBQUcsR0FBRyxtQkFBbUIsSUFBSSxJQUFJLENBQUMsb0JBQW9CLENBQUMsU0FBUyxFQUFFLENBQUMsV0FBVyxDQUFDLFVBQVUsSUFBSSxNQUFNLFVBQVUsQ0FBQztRQUN2SCxNQUFNLFFBQVEsR0FBRyxJQUFJLFFBQVEsQ0FBQztZQUMxQixNQUFNLEVBQUUsWUFBWTtZQUNwQixRQUFRLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUU7WUFDbEMsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQztZQUMxRCxLQUFLLEVBQUUsRUFBRTtTQUNaLENBQUMsQ0FBQztRQUNILE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQWlCLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUN0RSxDQUFDO0lBRUssY0FBYyxDQUNoQixVQU9DOztZQUVELE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQztZQUNsQixNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQzdDLEtBQUssTUFBTSxXQUFXLElBQUksWUFBWSxFQUFFO2dCQUNwQyxNQUFNLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUN6QixNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO2dCQUNyRCxLQUFLLE1BQU0sTUFBTSxJQUFJLE9BQU8sRUFBRTtvQkFDMUIsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQztvQkFDakMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUU7d0JBQ3RELE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyx3QkFBd0IsQ0FBQztvQkFDdEUsQ0FBQyxDQUFDLENBQUM7aUJBQ047Z0JBQ0QsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxHQUFHLFdBQVcsVUFBVSxDQUFDLENBQUM7Z0JBQ3pFLElBQUksQ0FBQyxtQkFBbUIsRUFBRTtvQkFDdEIsT0FBTztpQkFDVjtnQkFFRCxLQUFLLE1BQU0sTUFBTSxJQUFJLE9BQU8sRUFBRTtvQkFDMUIsTUFBTSxZQUFZLEdBQUcsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUNyRCxNQUFNLEdBQUcsR0FBRyxHQUFHLG1CQUFtQixJQUFJLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxXQUFXLENBQUMsVUFBVSxJQUFJLE1BQU0saUJBQWlCLENBQUM7b0JBQzlILE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQztvQkFDbkIsSUFBSSxZQUFZLENBQUMsS0FBSyxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUU7d0JBQ2hDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLEtBQUssRUFBRSxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztxQkFDN0U7eUJBQ0k7d0JBQ0QsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsRUFBRSxFQUFFLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO3FCQUN2RTtvQkFDRCxNQUFNLFFBQVEsR0FBRyxJQUFJLFFBQVEsQ0FBQzt3QkFDMUIsTUFBTSxFQUFFLE1BQU0sWUFBWSxDQUFDLFlBQVksRUFBRTt3QkFDekMsUUFBUSxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsWUFBWSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUU7d0JBQzFELE9BQU87d0JBQ1AsS0FBSyxFQUFFLEVBQUU7cUJBQ1osQ0FBQyxDQUFDO29CQUNILElBQUk7d0JBQ0EsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFpQixHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQzt3QkFDaEYsSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUU7NEJBQy9DLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFO2dDQUMzQixNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLENBQUM7NEJBQ3ZGLENBQUMsQ0FBQyxDQUFDO3lCQUNOO3FCQUNKO29CQUNELE9BQU8sR0FBRyxFQUFFO3dCQUNSLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7cUJBQ3BCO2lCQUNKO2FBQ0o7WUFDRCxPQUFPLE1BQU0sQ0FBQztRQUNsQixDQUFDO0tBQUE7Ozs7WUFoR0osVUFBVSxTQUFDO2dCQUNSLFVBQVUsRUFBRSxNQUFNO2FBQ3JCOzs7WUFYUSxVQUFVO1lBQ0UsUUFBUTtZQUtwQixtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBPcGVyYXRvciB9IGZyb20gJy4uLy4uLy4uL2NsYXNzZXMvZm9ybS1zY2hlbWEnO1xyXG5pbXBvcnQgeyBHcmlkSW5mbyB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9ncmlkLWluZm8nO1xyXG5pbXBvcnQgeyBSZXNwb25zZVJlc3VsdCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9yZXNwb25zZS1yZXN1bHQnO1xyXG5pbXBvcnQgeyBCYXNlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2Jhc2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IE1vZHVsZUNvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tb2R1bGUtY29uZmlnLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBOb3RpZmllclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9ub3RpZmllci5zZXJ2aWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29uZ3ZpZWNEaW5oa2VtU2VydmljZSBleHRlbmRzIEJhc2VTZXJ2aWNlIHtcclxuICAgIHNlcnZpY2VDb2RlID0gJ2Nvbmd2aWVjJztcclxuICAgIGVudGl0eU5hbWUgPSAnQ29uZ1ZpZWNEaW5oS2VtTmdoaWVwVnUnO1xyXG4gICAgb2JqZWN0TmFtZSA9ICdjw7RuZyB2aeG7h2MnO1xyXG4gICAgZW52OiBhbnk7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgaHR0cDogSHR0cENsaWVudCwgaW5qZWN0b3I6IEluamVjdG9yLFxyXG4gICAgICAgIHByaXZhdGUgX21vZHVsZUNvbmZpZ1NlcnZpY2U6IE1vZHVsZUNvbmZpZ1NlcnZpY2VcclxuICAgICkge1xyXG4gICAgICAgIHN1cGVyKGh0dHAsIGluamVjdG9yLCBgJHtfbW9kdWxlQ29uZmlnU2VydmljZS5nZXRDb25maWcoKS5lbnZpcm9ubWVudC5hcGlEb21haW4uY29uZ3ZpZWNFbmRwb2ludH0vJHtfbW9kdWxlQ29uZmlnU2VydmljZS5nZXRDb25maWcoKS5lbnZpcm9ubWVudC5hcGlWZXJzaW9ufS9EaW5oS2VtTmdoaWVwVnVgKTtcclxuICAgICAgICB0aGlzLmVudiA9IF9tb2R1bGVDb25maWdTZXJ2aWNlLmdldENvbmZpZygpLmVudmlyb25tZW50O1xyXG4gICAgICAgIHRoaXMuZW5kUG9pbnQgPSB0aGlzLmVudi5hcGlEb21haW4uY29uZ3ZpZWNFbmRwb2ludDtcclxuICAgIH1cclxuXHJcbiAgICB0aGVtRGluaEtlbU5naGllcFZ1KHRhc2tJZDogc3RyaW5nLCBkYXRhOiBhbnkpOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS9UaGVtRGluaEtlbS8ke3Rhc2tJZH1gO1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9odHRwLnBvc3Q8UmVzcG9uc2VSZXN1bHQ+KHVybCwgZGF0YSkudG9Qcm9taXNlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0RGV0YWlsSXRlbShzZXJ2aWNlQ29kZTogc3RyaW5nLCBlbnRpdHk6IHN0cmluZywgZW50aXR5S2V5OiBzdHJpbmcsIGZpZWxkRGlzcGxheTogc3RyaW5nKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICAgIGNvbnN0IHNlcnZpY2VDb2RlRW5kcG9pbnQgPSB0aGlzLmVudi5hcGlEb21haW5bYCR7c2VydmljZUNvZGV9RW5kcG9pbnRgXTtcclxuICAgICAgICBpZiAoIXNlcnZpY2VDb2RlRW5kcG9pbnQpIHtcclxuICAgICAgICAgICAgY29uc3Qgbm90aWZpZXJTZXJ2aWNlID0gdGhpcy5faW5qZWN0b3IuZ2V0KE5vdGlmaWVyU2VydmljZSk7XHJcbiAgICAgICAgICAgIG5vdGlmaWVyU2VydmljZS5zaG93V2FybmluZyhgS2jDtG5nIGzhuqV5IMSRxrDhu6NjIHRow7RuZyB0aW4gZW5kcG9pbnQgY+G7p2EgZOG7i2NoIHbhu6UgJHtzZXJ2aWNlQ29kZX1gKTtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXMsIHJlaikgPT4gcmVzKDxhbnk+eyBzdWNjZXNzOiB0cnVlLCBkYXRhOiBbXSB9KSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHVyaSA9IGAke3NlcnZpY2VDb2RlRW5kcG9pbnR9LyR7dGhpcy5fbW9kdWxlQ29uZmlnU2VydmljZS5nZXRDb25maWcoKS5lbnZpcm9ubWVudC5hcGlWZXJzaW9ufS8ke2VudGl0eX0vR2V0RGF0YWA7XHJcbiAgICAgICAgY29uc3QgZ3JpZEluZm8gPSBuZXcgR3JpZEluZm8oe1xyXG4gICAgICAgICAgICBmaWVsZHM6IGZpZWxkRGlzcGxheSxcclxuICAgICAgICAgICAgcGFnZUluZm86IHsgcGFnZTogMSwgcGFnZVNpemU6IDEgfSxcclxuICAgICAgICAgICAgZmlsdGVyczogW3RoaXMubmV3RmlsdGVyKCdpZCcsIE9wZXJhdG9yLmVxdWFsLCBlbnRpdHlLZXkpXSxcclxuICAgICAgICAgICAgc29ydHM6IFtdXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2h0dHAucG9zdDxSZXNwb25zZVJlc3VsdD4odXJpLCBncmlkSW5mbykudG9Qcm9taXNlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0RGV0YWlsSXRlbXMoXHJcbiAgICAgICAgZGljR3JvdXBlZDoge1xyXG4gICAgICAgICAgICBbc2VydmljZUNvZGU6IHN0cmluZ106IHtcclxuICAgICAgICAgICAgICAgIFtlbnRpdHk6IHN0cmluZ106IHtcclxuICAgICAgICAgICAgICAgICAgICBmaWVsZEhpZW5UaGk6IHN0cmluZyxcclxuICAgICAgICAgICAgICAgICAgICBsc3RJZDogc3RyaW5nW11cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICkge1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHt9O1xyXG4gICAgICAgIGNvbnN0IHNlcnZpY2VDb2RlcyA9IE9iamVjdC5rZXlzKGRpY0dyb3VwZWQpO1xyXG4gICAgICAgIGZvciAoY29uc3Qgc2VydmljZUNvZGUgb2Ygc2VydmljZUNvZGVzKSB7XHJcbiAgICAgICAgICAgIHJlc3VsdFtzZXJ2aWNlQ29kZV0gPSB7fTtcclxuICAgICAgICAgICAgY29uc3QgZW50aXR5cyA9IE9iamVjdC5rZXlzKGRpY0dyb3VwZWRbc2VydmljZUNvZGVdKTtcclxuICAgICAgICAgICAgZm9yIChjb25zdCBlbnRpdHkgb2YgZW50aXR5cykge1xyXG4gICAgICAgICAgICAgICAgcmVzdWx0W3NlcnZpY2VDb2RlXVtlbnRpdHldID0ge307XHJcbiAgICAgICAgICAgICAgICBkaWNHcm91cGVkW3NlcnZpY2VDb2RlXVtlbnRpdHldLmxzdElkLmZvckVhY2goZW50aXR5S2V5ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICByZXN1bHRbc2VydmljZUNvZGVdW2VudGl0eV1bZW50aXR5S2V5XSA9ICdLaMO0bmcgdMOsbSB0aOG6pXkgYuG6o24gZ2hpJztcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IHNlcnZpY2VDb2RlRW5kcG9pbnQgPSB0aGlzLmVudi5hcGlEb21haW5bYCR7c2VydmljZUNvZGV9RW5kcG9pbnRgXTtcclxuICAgICAgICAgICAgaWYgKCFzZXJ2aWNlQ29kZUVuZHBvaW50KSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGZvciAoY29uc3QgZW50aXR5IG9mIGVudGl0eXMpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGFCeUVudGl0eSA9IGRpY0dyb3VwZWRbc2VydmljZUNvZGVdW2VudGl0eV07XHJcbiAgICAgICAgICAgICAgICBjb25zdCB1cmkgPSBgJHtzZXJ2aWNlQ29kZUVuZHBvaW50fS8ke3RoaXMuX21vZHVsZUNvbmZpZ1NlcnZpY2UuZ2V0Q29uZmlnKCkuZW52aXJvbm1lbnQuYXBpVmVyc2lvbn0vJHtlbnRpdHl9L0dldEFsbEJ5RmlsdGVyYDtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGZpbHRlcnMgPSBbXTtcclxuICAgICAgICAgICAgICAgIGlmIChkYXRhQnlFbnRpdHkubHN0SWQubGVuZ3RoID09IDEpIHtcclxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJzLnB1c2godGhpcy5uZXdGaWx0ZXIoJ2lkJywgT3BlcmF0b3IuZXF1YWwsIGRhdGFCeUVudGl0eS5sc3RJZFswXSkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVycy5wdXNoKHRoaXMubmV3RmlsdGVyKCdpZCcsIE9wZXJhdG9yLmluLCBkYXRhQnlFbnRpdHkubHN0SWQpKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNvbnN0IGdyaWRJbmZvID0gbmV3IEdyaWRJbmZvKHtcclxuICAgICAgICAgICAgICAgICAgICBmaWVsZHM6IGBpZCwke2RhdGFCeUVudGl0eS5maWVsZEhpZW5UaGl9YCxcclxuICAgICAgICAgICAgICAgICAgICBwYWdlSW5mbzogeyBwYWdlOiAxLCBwYWdlU2l6ZTogZGF0YUJ5RW50aXR5LmxzdElkLmxlbmd0aCB9LFxyXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcnMsXHJcbiAgICAgICAgICAgICAgICAgICAgc29ydHM6IFtdXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0ICh0aGlzLl9odHRwLnBvc3Q8UmVzcG9uc2VSZXN1bHQ+KHVyaSwgZ3JpZEluZm8pLnRvUHJvbWlzZSgpKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5zdWNjZXNzICYmIGRhdGEuZGF0YSAmJiBkYXRhLmRhdGEubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEuZGF0YS5mb3JFYWNoKGl0ZW1EZXRhaWwgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0W3NlcnZpY2VDb2RlXVtlbnRpdHldW2l0ZW1EZXRhaWwuaWRdID0gaXRlbURldGFpbFtkYXRhQnlFbnRpdHkuZmllbGRIaWVuVGhpXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY2F0Y2ggKGVycikge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGVycik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH1cclxufVxyXG4iXX0=