@hmcts/ccd-case-ui-toolkit 7.1.4-query-management → 7.1.5-query-management

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 (56) hide show
  1. package/esm2022/lib/shared/components/case-editor/case-edit/case-edit.component.mjs +60 -22
  2. package/esm2022/lib/shared/components/case-editor/case-editor.module.mjs +1 -1
  3. package/esm2022/lib/shared/components/case-editor/case-event-completion/case-event-completion.component.mjs +40 -28
  4. package/esm2022/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-cancelled/case-event-completion-task-cancelled.component.mjs +18 -17
  5. package/esm2022/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-reassigned/case-event-completion-task-reassigned.component.mjs +27 -37
  6. package/esm2022/lib/shared/components/case-editor/domain/event-completion-state-machine-context.model.mjs +1 -1
  7. package/esm2022/lib/shared/components/case-editor/domain/event-completion-task-states.model.mjs +6 -0
  8. package/esm2022/lib/shared/components/case-editor/services/event-completion-state-machine.service.mjs +12 -6
  9. package/esm2022/lib/shared/components/case-editor/services/work-allocation.service.mjs +1 -1
  10. package/esm2022/lib/shared/components/event-start/event-guard/event-start.guard.mjs +40 -7
  11. package/esm2022/lib/shared/components/event-start/resolvers/event-tasks-resolver.service.mjs +11 -4
  12. package/esm2022/lib/shared/components/event-start/services/event-start-state-machine.service.mjs +15 -1
  13. package/esm2022/lib/shared/components/palette/palette.module.mjs +6 -2
  14. package/esm2022/lib/shared/components/palette/query-management/components/query-check-your-answers/query-check-your-answers.component.mjs +169 -145
  15. package/esm2022/lib/shared/components/palette/query-management/components/query-details/query-details.component.mjs +2 -2
  16. package/esm2022/lib/shared/components/palette/query-management/components/query-write/query-write-raise-query/query-write-raise-query.component.mjs +2 -2
  17. package/esm2022/lib/shared/components/palette/query-management/read-query-management-field.component.mjs +6 -6
  18. package/esm2022/lib/shared/components/palette/query-management/utils/query-management.utils.mjs +5 -8
  19. package/esm2022/lib/shared/domain/work-allocation/Task.mjs +1 -1
  20. package/esm2022/lib/shared/domain/work-allocation/task-response.model.mjs +1 -1
  21. package/fesm2022/hmcts-ccd-case-ui-toolkit.mjs +440 -309
  22. package/fesm2022/hmcts-ccd-case-ui-toolkit.mjs.map +1 -1
  23. package/lib/shared/components/case-editor/case-edit/case-edit.component.d.ts +5 -2
  24. package/lib/shared/components/case-editor/case-edit/case-edit.component.d.ts.map +1 -1
  25. package/lib/shared/components/case-editor/case-editor.module.d.ts.map +1 -1
  26. package/lib/shared/components/case-editor/case-event-completion/case-event-completion.component.d.ts +5 -3
  27. package/lib/shared/components/case-editor/case-event-completion/case-event-completion.component.d.ts.map +1 -1
  28. package/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-cancelled/case-event-completion-task-cancelled.component.d.ts +7 -5
  29. package/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-cancelled/case-event-completion-task-cancelled.component.d.ts.map +1 -1
  30. package/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-reassigned/case-event-completion-task-reassigned.component.d.ts +7 -11
  31. package/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-reassigned/case-event-completion-task-reassigned.component.d.ts.map +1 -1
  32. package/lib/shared/components/case-editor/domain/event-completion-state-machine-context.model.d.ts +1 -1
  33. package/lib/shared/components/case-editor/domain/event-completion-state-machine-context.model.d.ts.map +1 -1
  34. package/lib/shared/components/case-editor/domain/event-completion-task-states.model.d.ts +5 -0
  35. package/lib/shared/components/case-editor/domain/event-completion-task-states.model.d.ts.map +1 -0
  36. package/lib/shared/components/case-editor/services/event-completion-state-machine.service.d.ts.map +1 -1
  37. package/lib/shared/components/case-editor/services/work-allocation.service.d.ts +2 -2
  38. package/lib/shared/components/case-editor/services/work-allocation.service.d.ts.map +1 -1
  39. package/lib/shared/components/event-start/event-guard/event-start.guard.d.ts +3 -1
  40. package/lib/shared/components/event-start/event-guard/event-start.guard.d.ts.map +1 -1
  41. package/lib/shared/components/event-start/resolvers/event-tasks-resolver.service.d.ts +3 -1
  42. package/lib/shared/components/event-start/resolvers/event-tasks-resolver.service.d.ts.map +1 -1
  43. package/lib/shared/components/event-start/services/event-start-state-machine.service.d.ts.map +1 -1
  44. package/lib/shared/components/palette/query-management/components/query-check-your-answers/query-check-your-answers.component.d.ts +10 -8
  45. package/lib/shared/components/palette/query-management/components/query-check-your-answers/query-check-your-answers.component.d.ts.map +1 -1
  46. package/lib/shared/components/palette/query-management/components/query-write/query-write-raise-query/query-write-raise-query.component.d.ts.map +1 -1
  47. package/lib/shared/components/palette/query-management/utils/query-management.utils.d.ts +1 -1
  48. package/lib/shared/components/palette/query-management/utils/query-management.utils.d.ts.map +1 -1
  49. package/lib/shared/domain/work-allocation/Task.d.ts +10 -1
  50. package/lib/shared/domain/work-allocation/Task.d.ts.map +1 -1
  51. package/lib/shared/domain/work-allocation/task-response.model.d.ts +1 -1
  52. package/lib/shared/domain/work-allocation/task-response.model.d.ts.map +1 -1
  53. package/package.json +1 -1
  54. package/esm2022/lib/shared/components/case-editor/domain/event-completion-portal-types.model.mjs +0 -6
  55. package/lib/shared/components/case-editor/domain/event-completion-portal-types.model.d.ts +0 -5
  56. package/lib/shared/components/case-editor/domain/event-completion-portal-types.model.d.ts.map +0 -1
@@ -228,4 +228,4 @@ export class WorkAllocationService {
228
228
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(WorkAllocationService, [{
229
229
  type: Injectable
230
230
  }], () => [{ type: i1.HttpService }, { type: i2.AbstractAppConfig }, { type: i1.HttpErrorService }, { type: i1.AlertService }, { type: i1.SessionStorageService }], null); })();
231
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29yay1hbGxvY2F0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL2NvbXBvbmVudHMvY2FzZS1lZGl0b3Ivc2VydmljZXMvd29yay1hbGxvY2F0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQWMsRUFBRSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRCxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBSzNELE9BQU8sRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7Ozs7QUFFdkcsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsMkJBQTJCLENBQUM7QUFHaEUsTUFBTSxPQUFPLHFCQUFxQjtJQU9iO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFWWixNQUFNLENBQUMsY0FBYyxHQUFHLDJCQUEyQixDQUFDO0lBQ3BELE1BQU0sQ0FBQyxhQUFhLEdBQUcsMEJBQTBCLENBQUM7SUFFakQsUUFBUSxDQUFrQjtJQUVsQyxZQUNtQixJQUFpQixFQUNqQixTQUE0QixFQUM1QixZQUE4QixFQUM5QixZQUEwQixFQUMxQixxQkFBNEM7UUFKNUMsU0FBSSxHQUFKLElBQUksQ0FBYTtRQUNqQixjQUFTLEdBQVQsU0FBUyxDQUFtQjtRQUM1QixpQkFBWSxHQUFaLFlBQVksQ0FBa0I7UUFDOUIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQUU3RCw2Q0FB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dkcsTUFBTSxjQUFjLEdBQWdCO1lBQ2xDLHVCQUF1QixFQUFFLEtBQUs7WUFDOUIsS0FBSyxFQUFFLEVBQUU7U0FDVixDQUFDO1FBQ0YsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLHlCQUF5QixNQUFNLGFBQWEsT0FBTyxFQUFFLENBQUMsQ0FBQztZQUNqRixPQUFPLEVBQUUsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUM1QixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsdUJBQXVCLEVBQUUsZUFBZSxNQUFNLFVBQVUsT0FBTyxhQUFhLFFBQVEsaUJBQWlCLFlBQVksRUFBRSxDQUFDLENBQUM7SUFDOUosQ0FBQztJQUVGOztPQUVHO0lBQ0ksT0FBTyxDQUFDLE1BQWM7UUFDNUIsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDO1lBQ3hCLE9BQU8sRUFBRSxDQUFDLEVBQUMsSUFBSSxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7UUFDMUIsQ0FBQztRQUNELElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLFlBQVksTUFBTSxFQUFFLENBQUMsQ0FBQztRQUNoRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyx1QkFBdUIsRUFBRSxTQUFTLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDcEYsQ0FBQzsrRUF2T1cscUJBQXFCO2dFQUFyQixxQkFBcUIsV0FBckIscUJBQXFCOztpRkFBckIscUJBQXFCO2NBRGpDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQWJzdHJhY3RBcHBDb25maWcgfSBmcm9tICcuLi8uLi8uLi8uLi9hcHAuY29uZmlnJztcbmltcG9ydCB7IFRhc2tTZWFyY2hQYXJhbWV0ZXIsIFdBRmVhdHVyZUNvbmZpZyB9IGZyb20gJy4uLy4uLy4uL2RvbWFpbic7XG5pbXBvcnQgeyBVc2VyRGV0YWlscyB9IGZyb20gJy4uLy4uLy4uL2RvbWFpbi91c2VyL3VzZXItZGV0YWlscy5tb2RlbCc7XG5pbXBvcnQgeyBUYXNrUmVzcG9uZSB9IGZyb20gJy4uLy4uLy4uL2RvbWFpbi93b3JrLWFsbG9jYXRpb24vdGFzay1yZXNwb25zZS5tb2RlbCc7XG5pbXBvcnQgeyBUYXNrUGF5bG9hZCB9IGZyb20gJy4uLy4uLy4uL2RvbWFpbi93b3JrLWFsbG9jYXRpb24vVGFza1BheWxvYWQnO1xuaW1wb3J0IHsgQWxlcnRTZXJ2aWNlLCBIdHRwRXJyb3JTZXJ2aWNlLCBIdHRwU2VydmljZSwgU2Vzc2lvblN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMnO1xuXG5leHBvcnQgY29uc3QgTVVMVElQTEVfVEFTS1NfRk9VTkQgPSAnTW9yZSB0aGFuIG9uZSB0YXNrIGZvdW5kISc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBXb3JrQWxsb2NhdGlvblNlcnZpY2Uge1xuICBwdWJsaWMgc3RhdGljIGlBQ0Nhc2VPZmZpY2VyID0gJ2Nhc2V3b3JrZXItaWEtY2FzZW9mZmljZXInO1xuICBwdWJsaWMgc3RhdGljIGlBQ0FkbU9mZmljZXIgPSAnY2FzZXdvcmtlci1pYS1hZG1vZmZpY2VyJztcblxuICBwcml2YXRlIGZlYXR1cmVzOiBXQUZlYXR1cmVDb25maWc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBodHRwOiBIdHRwU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFwcENvbmZpZzogQWJzdHJhY3RBcHBDb25maWcsXG4gICAgcHJpdmF0ZSByZWFkb25seSBlcnJvclNlcnZpY2U6IEh0dHBFcnJvclNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNlc3Npb25TdG9yYWdlU2VydmljZTogU2Vzc2lvblN0b3JhZ2VTZXJ2aWNlXG4gICkge1xuICAgIC8vIENoZWNrIHRvIHNlZSBpZiB3b3JrIGFsbG9jYXRpb24gaXMgZW5hYmxlZFxuICB9XG5cbiAgLyoqXG4gICAqIENhbGwgdGhlIEFQSSB0byBnZXQgdGFza3MgbWF0Y2hpbmcgdGhlIHNlYXJjaCBjcml0ZXJpYS5cbiAgICogQHBhcmFtIHNlYXJjaFJlcXVlc3QgVGhlIHNlYXJjaCBwYXJhbWV0ZXJzIHRoYXQgc3BlY2lmeSB3aGljaCB0YXNrcyB0byBtYXRjaC5cbiAgICovXG4gIHB1YmxpYyBzZWFyY2hUYXNrcyhzZWFyY2hSZXF1ZXN0OiBUYXNrU2VhcmNoUGFyYW1ldGVyKTogT2JzZXJ2YWJsZTxvYmplY3Q+IHtcbiAgICAvLyBEbyBub3QgbmVlZCB0byBjaGVjayBpZiBXQSBlbmFibGVkIGFzIHBhcmVudCBtZXRob2Qgd2lsbCBkbyB0aGF0XG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5hcHBDb25maWcuZ2V0V29ya0FsbG9jYXRpb25BcGlVcmwoKX0vc2VhcmNoRm9yQ29tcGxldGFibGVgO1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5wb3N0KHVybCwge3NlYXJjaFJlcXVlc3R9LCBudWxsLCBmYWxzZSlcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAocmVzcG9uc2UgPT4gcmVzcG9uc2UpLFxuICAgICAgICBjYXRjaEVycm9yKGVycm9yID0+IHtcbiAgICAgICAgICB0aGlzLmVycm9yU2VydmljZS5zZXRFcnJvcihlcnJvcik7XG4gICAgICAgICAgLy8gZXhwbGljaXRseSBlYXQgYXdheSA0MDEgZXJyb3IgYW5kIDQwMCBlcnJvclxuICAgICAgICAgIGlmIChlcnJvciAmJiBlcnJvci5zdGF0dXMgJiYgKGVycm9yLnN0YXR1cyA9PT0gNDAxIHx8IGVycm9yLnN0YXR1cyA9PT0gNDAwKSkge1xuICAgICAgICAgICAgLy8gZG8gbm90aGluZ1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ2Vycm9yIHN0YXR1cyA0MDEgb3IgNDAwJywgZXJyb3IpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvcik7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNXQUVuYWJsZWQoanVyaXNkaWN0aW9uPzogc3RyaW5nLCBjYXNlVHlwZT86IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHRoaXMuZmVhdHVyZXMgPSB0aGlzLmFwcENvbmZpZy5nZXRXQVNlcnZpY2VDb25maWcoKTtcbiAgICBpZiAodGhpcy5mZWF0dXJlcykge1xuICAgICAgY29uc3QgZnRzdHIgPSBKU09OLnN0cmluZ2lmeSh0aGlzLmZlYXR1cmVzKTtcbiAgICAgIHRoaXMuYXBwQ29uZmlnPy5sb2dNZXNzYWdlKGBpc1dBRW5hYmxlZDogd2Etc2VydmljZS1jb25maWcgcmV0dXJuaW5nICR7ZnRzdHI/Lmxlbmd0aCA+IDB9YCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYXBwQ29uZmlnPy5sb2dNZXNzYWdlKGBpc1dBRW5hYmxlZDogd2Etc2VydmljZS1jb25maWcgcmV0dXJuaW5nIG5vIGZlYXR1cmVzYCk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGxldCBlbmFibGVkID0gZmFsc2U7XG4gICAgaWYgKCFqdXJpc2RpY3Rpb24gfHwgIWNhc2VUeXBlKSB7XG4gICAgICBjb25zdCBjYXNlSW5mbyA9IEpTT04ucGFyc2UodGhpcy5zZXNzaW9uU3RvcmFnZVNlcnZpY2UuZ2V0SXRlbSgnY2FzZUluZm8nKSk7XG4gICAgICBqdXJpc2RpY3Rpb24gPSBjYXNlSW5mby5qdXJpc2RpY3Rpb247XG4gICAgICBjYXNlVHlwZSA9IGNhc2VJbmZvLmNhc2VUeXBlO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuZmVhdHVyZXMgfHwgIXRoaXMuZmVhdHVyZXMuY29uZmlndXJhdGlvbnMpIHtcbiAgICAgIHRoaXMuYXBwQ29uZmlnLmxvZ01lc3NhZ2UoJ2lzV0FFbmFibGVkOiBubyBmZWF0dXJlcycpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICB0aGlzLmZlYXR1cmVzLmNvbmZpZ3VyYXRpb25zLmZvckVhY2goc2VydmljZUNvbmZpZyA9PiB7XG4gICAgICBpZiAoc2VydmljZUNvbmZpZy5zZXJ2aWNlTmFtZSA9PT0ganVyaXNkaWN0aW9uICYmIChzZXJ2aWNlQ29uZmlnLmNhc2VUeXBlcy5pbmRleE9mKGNhc2VUeXBlKSAhPT0gLTEpKSB7XG4gICAgICAgICAgZW5hYmxlZCA9IHRydWU7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5hcHBDb25maWcubG9nTWVzc2FnZShgaXNXQUVuYWJsZWQ6IHJldHVybmluZyAke2VuYWJsZWR9YCk7XG4gICAgcmV0dXJuIGVuYWJsZWQ7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbCB0aGUgQVBJIHRvIGFzc2lnbiBhIHRhc2suXG4gICAqIEBwYXJhbSB0YXNrSWQgc3BlY2lmaWVzIHdoaWNoIHRhc2sgc2hvdWxkIGJlIGFzc2lnbmVkLlxuICAgKiBAcGFyYW0gdXNlcklkIHNwZWNpZmllcyB0aGUgdXNlciB0aGUgdGFzayBzaG91bGQgYmUgYXNzaWduZWQgdG8uXG4gICAqL1xuICBwdWJsaWMgYXNzaWduVGFzayh0YXNrSWQ6IHN0cmluZywgdXNlcklkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGlmICghdGhpcy5pc1dBRW5hYmxlZCgpKSB7XG4gICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgfVxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYXBwQ29uZmlnLmdldFdvcmtBbGxvY2F0aW9uQXBpVXJsKCl9L3Rhc2svJHt0YXNrSWR9L2Fzc2lnbmA7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLnBvc3QodXJsLCB7dXNlcklkfSlcbiAgICAgIC5waXBlKFxuICAgICAgICBjYXRjaEVycm9yKGVycm9yID0+IHtcbiAgICAgICAgICB0aGlzLmVycm9yU2VydmljZS5zZXRFcnJvcihlcnJvcik7XG4gICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3IpO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsIHRoZSBBUEkgdG8gY29tcGxldGUgYSB0YXNrLlxuICAgKiBAcGFyYW0gdGFza0lkIHNwZWNpZmllcyB3aGljaCB0YXNrIHNob3VsZCBiZSBjb21wbGV0ZWQuXG4gICAqL1xuICBwdWJsaWMgY29tcGxldGVUYXNrKHRhc2tJZDogc3RyaW5nLCBldmVudE5hbWU/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGlmICghdGhpcy5pc1dBRW5hYmxlZCgpKSB7XG4gICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgfVxuICAgIHRoaXMuYXBwQ29uZmlnLmxvZ01lc3NhZ2UoYGNvbXBsZXRlVGFzazogY29tcGxldGluZyAke3Rhc2tJZH1gKTtcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmFwcENvbmZpZy5nZXRXb3JrQWxsb2NhdGlvbkFwaVVybCgpfS90YXNrLyR7dGFza0lkfS9jb21wbGV0ZWA7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLnBvc3QodXJsLCB7IGFjdGlvbkJ5RXZlbnQ6IHRydWUsIGV2ZW50TmFtZTogZXZlbnROYW1lIH0pXG4gICAgICAucGlwZShcbiAgICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB7XG4gICAgICAgICAgdGhpcy5lcnJvclNlcnZpY2Uuc2V0RXJyb3IoZXJyb3IpO1xuICAgICAgICAgIC8vIHRoaXMgd2lsbCBzdWJzY3JpYmUgdG8gZ2V0IHRoZSB1c2VyIGRldGFpbHMgYW5kIGRlY2lkZSB3aGV0aGVyIHRvIGRpc3BsYXkgYW4gZXJyb3IgbWVzc2FnZVxuICAgICAgICAgIHRoaXMuaHR0cC5nZXQodGhpcy5hcHBDb25maWcuZ2V0VXNlckluZm9BcGlVcmwoKSkucGlwZShtYXAocmVzcG9uc2UgPT4gcmVzcG9uc2UpKS5zdWJzY3JpYmUoKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZVRhc2tDb21wbGV0aW9uRXJyb3IocmVzcG9uc2UpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbCB0aGUgQVBJIHRvIGFzc2lnbiBhbmQgY29tcGxldGUgYSB0YXNrLlxuICAgKiBAcGFyYW0gdGFza0lkIHNwZWNpZmllcyB3aGljaCB0YXNrIHNob3VsZCBiZSBjb21wbGV0ZWQuXG4gICAqL1xuICBwdWJsaWMgYXNzaWduQW5kQ29tcGxldGVUYXNrKHRhc2tJZDogc3RyaW5nLCBldmVudE5hbWU/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGlmICghdGhpcy5pc1dBRW5hYmxlZCgpKSB7XG4gICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgfVxuICAgIHRoaXMuYXBwQ29uZmlnLmxvZ01lc3NhZ2UoYGFzc2lnbkFuZENvbXBsZXRlVGFzazogY29tcGxldGluZyAke3Rhc2tJZH1gKTtcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmFwcENvbmZpZy5nZXRXb3JrQWxsb2NhdGlvbkFwaVVybCgpfS90YXNrLyR7dGFza0lkfS9jb21wbGV0ZWA7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLnBvc3QodXJsLCB7XG4gICAgICAgIGNvbXBsZXRpb25fb3B0aW9uczoge1xuICAgICAgICAgIGFzc2lnbl9hbmRfY29tcGxldGU6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgYWN0aW9uQnlFdmVudDogdHJ1ZSxcbiAgICAgICAgZXZlbnROYW1lOiBldmVudE5hbWVcbiAgICAgIH0pXG4gICAgICAucGlwZShcbiAgICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB7XG4gICAgICAgICAgdGhpcy5lcnJvclNlcnZpY2Uuc2V0RXJyb3IoZXJyb3IpO1xuICAgICAgICAgIC8vIHRoaXMgd2lsbCBzdWJzY3JpYmUgdG8gZ2V0IHRoZSB1c2VyIGRldGFpbHMgYW5kIGRlY2lkZSB3aGV0aGVyIHRvIGRpc3BsYXkgYW4gZXJyb3IgbWVzc2FnZVxuICAgICAgICAgIHRoaXMuaHR0cC5nZXQodGhpcy5hcHBDb25maWcuZ2V0VXNlckluZm9BcGlVcmwoKSkucGlwZShtYXAocmVzcG9uc2UgPT4gcmVzcG9uc2UpKS5zdWJzY3JpYmUoKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZVRhc2tDb21wbGV0aW9uRXJyb3IocmVzcG9uc2UpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlcyB0aGUgcmVzcG9uc2UgZnJvbSB0aGUgb2JzZXJ2YWJsZSB0byBnZXQgdGhlIHVzZXIgZGV0YWlscyB3aGVuIHRhc2sgaXMgY29tcGxldGVkLlxuICAgKiBAcGFyYW0gcmVzcG9uc2UgaXMgdGhlIHJlc3BvbnNlIGdpdmVuIGZyb20gdGhlIG9ic2VydmFibGUgd2hpY2ggY29udGFpbnMgdGhlIHVzZXIgZGV0YWlsZC5cbiAgICovXG4gIHB1YmxpYyBoYW5kbGVUYXNrQ29tcGxldGlvbkVycm9yKHJlc3BvbnNlOiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCB1c2VyRGV0YWlscyA9IHJlc3BvbnNlIGFzIFVzZXJEZXRhaWxzO1xuICAgIGlmICh0aGlzLnVzZXJJc0Nhc2V3b3JrZXIodXNlckRldGFpbHMudXNlckluZm8ucm9sZXMpKSB7XG4gICAgICAvLyB3aGVuIHN1Ym1pdHRpbmcgdGhlIGNvbXBsZXRpb24gb2YgdGFzayBpZiBub3QgeWV0IHJlbmRlcmVkIGNhc2VzL2Nhc2UgY29uZmlybSB0aGVuIHByZXNlcnZlIHRoZSBhbGVydCBmb3IgcmUtcmVuZGVyaW5nXG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5zZXRQcmVzZXJ2ZUFsZXJ0cyh0cnVlLCBbJ2Nhc2VzL2Nhc2UnLCAnc3VibWl0J10pO1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2Uud2FybmluZyh7IHBocmFzZTonQSB0YXNrIGNvdWxkIG5vdCBiZSBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LiBQbGVhc2UgY29tcGxldGUgdGhlIHRhc2sgYXNzb2NpYXRlZCB3aXRoIHRoZSBjYXNlIG1hbnVhbGx5Lid9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0cnVlIGlmIHRoZSB1c2VyJ3Mgcm9sZSBpcyBlcXVpdmFsZW50IHRvIGEgY2FzZXdvcmtlci5cbiAgICogQHBhcmFtIHJvbGVzIGlzIHRoZSBsaXN0IG9mIHJvbGVzIGZvdW5kIGZyb20gdGhlIGN1cnJlbnQgdXNlci5cbiAgICovXG4gIHB1YmxpYyB1c2VySXNDYXNld29ya2VyKHJvbGVzOiBzdHJpbmdbXSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGxvd2VyQ2FzZVJvbGVzID0gcm9sZXMubWFwKHJvbGUgPT4gcm9sZS50b0xvd2VyQ2FzZSgpKTtcbiAgICAvLyBXaGVuL2lmIGxpYiAmIHRhcmdldCBwZXJtYW5lbnRseSBjaGFuZ2UgdG8gZXMyMDE2LCByZXBsYWNlIGluZGV4T2Ygd2l0aCBpbmNsdWRlc1xuICAgIHJldHVybiAobG93ZXJDYXNlUm9sZXMuaW5kZXhPZihXb3JrQWxsb2NhdGlvblNlcnZpY2UuaUFDQ2FzZU9mZmljZXIpICE9PSAtMSlcbiAgICAgIHx8IChsb3dlckNhc2VSb2xlcy5pbmRleE9mKFdvcmtBbGxvY2F0aW9uU2VydmljZS5pQUNBZG1PZmZpY2VyKSAhPT0gLTEpO1xuICB9XG5cbiAgLyoqXG4gICAqIExvb2sgZm9yIG9wZW4gdGFza3MgZm9yIGEgY2FzZSBhbmQgZXZlbnQgY29tYmluYXRpb24uIFRoZXJlIGFyZSA1IHBvc3NpYmxlIHNjZW5hcmlvczpcbiAgICogICAxLiBObyB0YXNrcyBmb3VuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+IFN1Y2Nlc3MuXG4gICAqICAgMi4gT25lIHRhc2sgZm91bmQgPT4gTWFyayBhcyBkb25lICAgICAgICAgICAgICA9PiBTdWNjZXNzLlxuICAgKiAgIDMuIE9uZSB0YXNrIGZvdW5kID0+IE1hcmsgYXMgZG9uZSB0aHJvd3MgZXJyb3IgPT4gRmFpbHVyZS5cbiAgICogICA0LiBNb3JlIHRoYW4gb25lIHRhc2sgZm91bmQgICAgICAgICAgICAgICAgICAgID0+IEZhaWx1cmUuXG4gICAqICAgNS4gU2VhcmNoIGNhbGwgdGhyb3dzIGFuIGVycm9yICAgICAgICAgICAgICAgICA9PiBGYWlsdXJlLlxuICAgKiBAcGFyYW0gY2NkSWQgVGhlIElEIG9mIHRoZSBjYXNlIHRvIGZpbmQgdGFza3MgZm9yLlxuICAgKiBAcGFyYW0gZXZlbnRJZCBUaGUgSUQgb2YgdGhlIGV2ZW50IHRvIGZpbmQgdGFza3MgZm9yLlxuICAgKi9cbiAgcHVibGljIGNvbXBsZXRlQXBwcm9wcmlhdGVUYXNrKGNjZElkOiBzdHJpbmcsIGV2ZW50SWQ6IHN0cmluZywganVyaXNkaWN0aW9uOiBzdHJpbmcsIGNhc2VUeXBlSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgaWYgKCF0aGlzLmlzV0FFbmFibGVkKGp1cmlzZGljdGlvbiwgY2FzZVR5cGVJZCkpIHtcbiAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICB9XG4gICAgY29uc3QgdGFza1NlYXJjaFBhcmFtZXRlcjogVGFza1NlYXJjaFBhcmFtZXRlciA9IHtcbiAgICAgIGNjZElkLFxuICAgICAgZXZlbnRJZCxcbiAgICAgIGp1cmlzZGljdGlvbixcbiAgICAgIGNhc2VUeXBlSWRcbiAgICB9O1xuICAgIHJldHVybiB0aGlzLnNlYXJjaFRhc2tzKHRhc2tTZWFyY2hQYXJhbWV0ZXIpXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgICAgY29uc3QgdGFza3M6IGFueVtdID0gcmVzcG9uc2UudGFza3M7XG4gICAgICAgICAgaWYgKHRhc2tzICYmIHRhc2tzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGlmICh0YXNrcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgdGhpcy5jb21wbGV0ZVRhc2sodGFza3NbMF0uaWQsIGV2ZW50SWQpLnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgLy8gVGhpcyBpcyBhIHByb2JsZW0uIFRocm93IGFuIGFwcHJvcHJpYXRlIGVycm9yLlxuICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoTVVMVElQTEVfVEFTS1NfRk9VTkQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdHJ1ZTsgLy8gQWxsIGdvb2QuIE5vdGhpbmcgdG8gc2VlIGhlcmUuXG4gICAgICAgIH0pLFxuICAgICAgICBjYXRjaEVycm9yKGVycm9yID0+IHtcbiAgICAgICAgICAvLyBTaW1wbHkgcmV0aHJvdyBpdC5cbiAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvcik7XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB0YXNrcyBmb3IgY2FzZSBhbmQgZXZlbnQuXG4gICAqL1xuICBwdWJsaWMgZ2V0VGFza3NCeUNhc2VJZEFuZEV2ZW50SWQoZXZlbnRJZDogc3RyaW5nLCBjYXNlSWQ6IHN0cmluZywgY2FzZVR5cGU6IHN0cmluZywganVyaXNkaWN0aW9uOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFRhc2tQYXlsb2FkPiB7XG4gICAgY29uc3QgZGVmYXVsdFBheWxvYWQ6IFRhc2tQYXlsb2FkID0ge1xuICAgICAgdGFza19yZXF1aXJlZF9mb3JfZXZlbnQ6IGZhbHNlLFxuICAgICAgdGFza3M6IFtdXG4gICAgfTtcbiAgICBpZiAoIXRoaXMuaXNXQUVuYWJsZWQoKSkge1xuICAgICAgdGhpcy5hcHBDb25maWcubG9nTWVzc2FnZShgaXNXQUVuYWJsZWQgZmFsc2UgZm9yICR7Y2FzZUlkfSBpbiBldmVudCAke2V2ZW50SWR9YCk7XG4gICAgICByZXR1cm4gb2YoZGVmYXVsdFBheWxvYWQpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChgJHt0aGlzLmFwcENvbmZpZy5nZXRXb3JrQWxsb2NhdGlvbkFwaVVybCgpfS9jYXNlL3Rhc2tzLyR7Y2FzZUlkfS9ldmVudC8ke2V2ZW50SWR9L2Nhc2VUeXBlLyR7Y2FzZVR5cGV9L2p1cmlzZGljdGlvbi8ke2p1cmlzZGljdGlvbn1gKTtcbiAgfVxuXG4gLyoqXG4gICogQ2FsbCB0aGUgQVBJIHRvIGdldCBhIHRhc2tcbiAgKi9cbiBwdWJsaWMgZ2V0VGFzayh0YXNrSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8VGFza1Jlc3BvbmU+IHtcbiAgaWYgKCF0aGlzLmlzV0FFbmFibGVkKCkpIHtcbiAgICByZXR1cm4gb2Yoe3Rhc2s6IG51bGx9KTtcbiAgfVxuICB0aGlzLmFwcENvbmZpZy5sb2dNZXNzYWdlKGBnZXRUYXNrOiAke3Rhc2tJZH1gKTtcbiAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYCR7dGhpcy5hcHBDb25maWcuZ2V0V29ya0FsbG9jYXRpb25BcGlVcmwoKX0vdGFzay8ke3Rhc2tJZH1gKTtcbiB9XG59XG4iXX0=
231
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29yay1hbGxvY2F0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL2NvbXBvbmVudHMvY2FzZS1lZGl0b3Ivc2VydmljZXMvd29yay1hbGxvY2F0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQWMsRUFBRSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRCxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBSzNELE9BQU8sRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7Ozs7QUFFdkcsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsMkJBQTJCLENBQUM7QUFHaEUsTUFBTSxPQUFPLHFCQUFxQjtJQU9iO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFWWixNQUFNLENBQUMsY0FBYyxHQUFHLDJCQUEyQixDQUFDO0lBQ3BELE1BQU0sQ0FBQyxhQUFhLEdBQUcsMEJBQTBCLENBQUM7SUFFakQsUUFBUSxDQUFrQjtJQUVsQyxZQUNtQixJQUFpQixFQUNqQixTQUE0QixFQUM1QixZQUE4QixFQUM5QixZQUEwQixFQUMxQixxQkFBNEM7UUFKNUMsU0FBSSxHQUFKLElBQUksQ0FBYTtRQUNqQixjQUFTLEdBQVQsU0FBUyxDQUFtQjtRQUM1QixpQkFBWSxHQUFaLFlBQVksQ0FBa0I7UUFDOUIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQUU3RCw2Q0FB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dkcsTUFBTSxjQUFjLEdBQWdCO1lBQ2xDLHVCQUF1QixFQUFFLEtBQUs7WUFDOUIsS0FBSyxFQUFFLEVBQUU7U0FDVixDQUFDO1FBQ0YsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLHlCQUF5QixNQUFNLGFBQWEsT0FBTyxFQUFFLENBQUMsQ0FBQztZQUNqRixPQUFPLEVBQUUsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUM1QixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsdUJBQXVCLEVBQUUsZUFBZSxNQUFNLFVBQVUsT0FBTyxhQUFhLFFBQVEsaUJBQWlCLFlBQVksRUFBRSxDQUFDLENBQUM7SUFDOUosQ0FBQztJQUVGOztPQUVHO0lBQ0ksT0FBTyxDQUFDLE1BQWM7UUFDNUIsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDO1lBQ3hCLE9BQU8sRUFBRSxDQUFDLEVBQUMsSUFBSSxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7UUFDMUIsQ0FBQztRQUNELElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLFlBQVksTUFBTSxFQUFFLENBQUMsQ0FBQztRQUNoRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyx1QkFBdUIsRUFBRSxTQUFTLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDcEYsQ0FBQzsrRUF2T1cscUJBQXFCO2dFQUFyQixxQkFBcUIsV0FBckIscUJBQXFCOztpRkFBckIscUJBQXFCO2NBRGpDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQWJzdHJhY3RBcHBDb25maWcgfSBmcm9tICcuLi8uLi8uLi8uLi9hcHAuY29uZmlnJztcbmltcG9ydCB7IFRhc2tTZWFyY2hQYXJhbWV0ZXIsIFdBRmVhdHVyZUNvbmZpZyB9IGZyb20gJy4uLy4uLy4uL2RvbWFpbic7XG5pbXBvcnQgeyBVc2VyRGV0YWlscyB9IGZyb20gJy4uLy4uLy4uL2RvbWFpbi91c2VyL3VzZXItZGV0YWlscy5tb2RlbCc7XG5pbXBvcnQgeyBUYXNrUmVzcG9uc2UgfSBmcm9tICcuLi8uLi8uLi9kb21haW4vd29yay1hbGxvY2F0aW9uL3Rhc2stcmVzcG9uc2UubW9kZWwnO1xuaW1wb3J0IHsgVGFza1BheWxvYWQgfSBmcm9tICcuLi8uLi8uLi9kb21haW4vd29yay1hbGxvY2F0aW9uL1Rhc2tQYXlsb2FkJztcbmltcG9ydCB7IEFsZXJ0U2VydmljZSwgSHR0cEVycm9yU2VydmljZSwgSHR0cFNlcnZpY2UsIFNlc3Npb25TdG9yYWdlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzJztcblxuZXhwb3J0IGNvbnN0IE1VTFRJUExFX1RBU0tTX0ZPVU5EID0gJ01vcmUgdGhhbiBvbmUgdGFzayBmb3VuZCEnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgV29ya0FsbG9jYXRpb25TZXJ2aWNlIHtcbiAgcHVibGljIHN0YXRpYyBpQUNDYXNlT2ZmaWNlciA9ICdjYXNld29ya2VyLWlhLWNhc2VvZmZpY2VyJztcbiAgcHVibGljIHN0YXRpYyBpQUNBZG1PZmZpY2VyID0gJ2Nhc2V3b3JrZXItaWEtYWRtb2ZmaWNlcic7XG5cbiAgcHJpdmF0ZSBmZWF0dXJlczogV0FGZWF0dXJlQ29uZmlnO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgaHR0cDogSHR0cFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBhcHBDb25maWc6IEFic3RyYWN0QXBwQ29uZmlnLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZXJyb3JTZXJ2aWNlOiBIdHRwRXJyb3JTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgYWxlcnRTZXJ2aWNlOiBBbGVydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBzZXNzaW9uU3RvcmFnZVNlcnZpY2U6IFNlc3Npb25TdG9yYWdlU2VydmljZVxuICApIHtcbiAgICAvLyBDaGVjayB0byBzZWUgaWYgd29yayBhbGxvY2F0aW9uIGlzIGVuYWJsZWRcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsIHRoZSBBUEkgdG8gZ2V0IHRhc2tzIG1hdGNoaW5nIHRoZSBzZWFyY2ggY3JpdGVyaWEuXG4gICAqIEBwYXJhbSBzZWFyY2hSZXF1ZXN0IFRoZSBzZWFyY2ggcGFyYW1ldGVycyB0aGF0IHNwZWNpZnkgd2hpY2ggdGFza3MgdG8gbWF0Y2guXG4gICAqL1xuICBwdWJsaWMgc2VhcmNoVGFza3Moc2VhcmNoUmVxdWVzdDogVGFza1NlYXJjaFBhcmFtZXRlcik6IE9ic2VydmFibGU8b2JqZWN0PiB7XG4gICAgLy8gRG8gbm90IG5lZWQgdG8gY2hlY2sgaWYgV0EgZW5hYmxlZCBhcyBwYXJlbnQgbWV0aG9kIHdpbGwgZG8gdGhhdFxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYXBwQ29uZmlnLmdldFdvcmtBbGxvY2F0aW9uQXBpVXJsKCl9L3NlYXJjaEZvckNvbXBsZXRhYmxlYDtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAucG9zdCh1cmwsIHtzZWFyY2hSZXF1ZXN0fSwgbnVsbCwgZmFsc2UpXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKHJlc3BvbnNlID0+IHJlc3BvbnNlKSxcbiAgICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB7XG4gICAgICAgICAgdGhpcy5lcnJvclNlcnZpY2Uuc2V0RXJyb3IoZXJyb3IpO1xuICAgICAgICAgIC8vIGV4cGxpY2l0bHkgZWF0IGF3YXkgNDAxIGVycm9yIGFuZCA0MDAgZXJyb3JcbiAgICAgICAgICBpZiAoZXJyb3IgJiYgZXJyb3Iuc3RhdHVzICYmIChlcnJvci5zdGF0dXMgPT09IDQwMSB8fCBlcnJvci5zdGF0dXMgPT09IDQwMCkpIHtcbiAgICAgICAgICAgIC8vIGRvIG5vdGhpbmdcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdlcnJvciBzdGF0dXMgNDAxIG9yIDQwMCcsIGVycm9yKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3IpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICBwcml2YXRlIGlzV0FFbmFibGVkKGp1cmlzZGljdGlvbj86IHN0cmluZywgY2FzZVR5cGU/OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICB0aGlzLmZlYXR1cmVzID0gdGhpcy5hcHBDb25maWcuZ2V0V0FTZXJ2aWNlQ29uZmlnKCk7XG4gICAgaWYgKHRoaXMuZmVhdHVyZXMpIHtcbiAgICAgIGNvbnN0IGZ0c3RyID0gSlNPTi5zdHJpbmdpZnkodGhpcy5mZWF0dXJlcyk7XG4gICAgICB0aGlzLmFwcENvbmZpZz8ubG9nTWVzc2FnZShgaXNXQUVuYWJsZWQ6IHdhLXNlcnZpY2UtY29uZmlnIHJldHVybmluZyAke2Z0c3RyPy5sZW5ndGggPiAwfWApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmFwcENvbmZpZz8ubG9nTWVzc2FnZShgaXNXQUVuYWJsZWQ6IHdhLXNlcnZpY2UtY29uZmlnIHJldHVybmluZyBubyBmZWF0dXJlc2ApO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBsZXQgZW5hYmxlZCA9IGZhbHNlO1xuICAgIGlmICghanVyaXNkaWN0aW9uIHx8ICFjYXNlVHlwZSkge1xuICAgICAgY29uc3QgY2FzZUluZm8gPSBKU09OLnBhcnNlKHRoaXMuc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLmdldEl0ZW0oJ2Nhc2VJbmZvJykpO1xuICAgICAganVyaXNkaWN0aW9uID0gY2FzZUluZm8uanVyaXNkaWN0aW9uO1xuICAgICAgY2FzZVR5cGUgPSBjYXNlSW5mby5jYXNlVHlwZTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLmZlYXR1cmVzIHx8ICF0aGlzLmZlYXR1cmVzLmNvbmZpZ3VyYXRpb25zKSB7XG4gICAgICB0aGlzLmFwcENvbmZpZy5sb2dNZXNzYWdlKCdpc1dBRW5hYmxlZDogbm8gZmVhdHVyZXMnKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgdGhpcy5mZWF0dXJlcy5jb25maWd1cmF0aW9ucy5mb3JFYWNoKHNlcnZpY2VDb25maWcgPT4ge1xuICAgICAgaWYgKHNlcnZpY2VDb25maWcuc2VydmljZU5hbWUgPT09IGp1cmlzZGljdGlvbiAmJiAoc2VydmljZUNvbmZpZy5jYXNlVHlwZXMuaW5kZXhPZihjYXNlVHlwZSkgIT09IC0xKSkge1xuICAgICAgICAgIGVuYWJsZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMuYXBwQ29uZmlnLmxvZ01lc3NhZ2UoYGlzV0FFbmFibGVkOiByZXR1cm5pbmcgJHtlbmFibGVkfWApO1xuICAgIHJldHVybiBlbmFibGVkO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGwgdGhlIEFQSSB0byBhc3NpZ24gYSB0YXNrLlxuICAgKiBAcGFyYW0gdGFza0lkIHNwZWNpZmllcyB3aGljaCB0YXNrIHNob3VsZCBiZSBhc3NpZ25lZC5cbiAgICogQHBhcmFtIHVzZXJJZCBzcGVjaWZpZXMgdGhlIHVzZXIgdGhlIHRhc2sgc2hvdWxkIGJlIGFzc2lnbmVkIHRvLlxuICAgKi9cbiAgcHVibGljIGFzc2lnblRhc2sodGFza0lkOiBzdHJpbmcsIHVzZXJJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBpZiAoIXRoaXMuaXNXQUVuYWJsZWQoKSkge1xuICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgIH1cbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmFwcENvbmZpZy5nZXRXb3JrQWxsb2NhdGlvbkFwaVVybCgpfS90YXNrLyR7dGFza0lkfS9hc3NpZ25gO1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5wb3N0KHVybCwge3VzZXJJZH0pXG4gICAgICAucGlwZShcbiAgICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB7XG4gICAgICAgICAgdGhpcy5lcnJvclNlcnZpY2Uuc2V0RXJyb3IoZXJyb3IpO1xuICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbCB0aGUgQVBJIHRvIGNvbXBsZXRlIGEgdGFzay5cbiAgICogQHBhcmFtIHRhc2tJZCBzcGVjaWZpZXMgd2hpY2ggdGFzayBzaG91bGQgYmUgY29tcGxldGVkLlxuICAgKi9cbiAgcHVibGljIGNvbXBsZXRlVGFzayh0YXNrSWQ6IHN0cmluZywgZXZlbnROYW1lPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBpZiAoIXRoaXMuaXNXQUVuYWJsZWQoKSkge1xuICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgIH1cbiAgICB0aGlzLmFwcENvbmZpZy5sb2dNZXNzYWdlKGBjb21wbGV0ZVRhc2s6IGNvbXBsZXRpbmcgJHt0YXNrSWR9YCk7XG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5hcHBDb25maWcuZ2V0V29ya0FsbG9jYXRpb25BcGlVcmwoKX0vdGFzay8ke3Rhc2tJZH0vY29tcGxldGVgO1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5wb3N0KHVybCwgeyBhY3Rpb25CeUV2ZW50OiB0cnVlLCBldmVudE5hbWU6IGV2ZW50TmFtZSB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4ge1xuICAgICAgICAgIHRoaXMuZXJyb3JTZXJ2aWNlLnNldEVycm9yKGVycm9yKTtcbiAgICAgICAgICAvLyB0aGlzIHdpbGwgc3Vic2NyaWJlIHRvIGdldCB0aGUgdXNlciBkZXRhaWxzIGFuZCBkZWNpZGUgd2hldGhlciB0byBkaXNwbGF5IGFuIGVycm9yIG1lc3NhZ2VcbiAgICAgICAgICB0aGlzLmh0dHAuZ2V0KHRoaXMuYXBwQ29uZmlnLmdldFVzZXJJbmZvQXBpVXJsKCkpLnBpcGUobWFwKHJlc3BvbnNlID0+IHJlc3BvbnNlKSkuc3Vic2NyaWJlKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVUYXNrQ29tcGxldGlvbkVycm9yKHJlc3BvbnNlKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvcik7XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGwgdGhlIEFQSSB0byBhc3NpZ24gYW5kIGNvbXBsZXRlIGEgdGFzay5cbiAgICogQHBhcmFtIHRhc2tJZCBzcGVjaWZpZXMgd2hpY2ggdGFzayBzaG91bGQgYmUgY29tcGxldGVkLlxuICAgKi9cbiAgcHVibGljIGFzc2lnbkFuZENvbXBsZXRlVGFzayh0YXNrSWQ6IHN0cmluZywgZXZlbnROYW1lPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBpZiAoIXRoaXMuaXNXQUVuYWJsZWQoKSkge1xuICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgIH1cbiAgICB0aGlzLmFwcENvbmZpZy5sb2dNZXNzYWdlKGBhc3NpZ25BbmRDb21wbGV0ZVRhc2s6IGNvbXBsZXRpbmcgJHt0YXNrSWR9YCk7XG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5hcHBDb25maWcuZ2V0V29ya0FsbG9jYXRpb25BcGlVcmwoKX0vdGFzay8ke3Rhc2tJZH0vY29tcGxldGVgO1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5wb3N0KHVybCwge1xuICAgICAgICBjb21wbGV0aW9uX29wdGlvbnM6IHtcbiAgICAgICAgICBhc3NpZ25fYW5kX2NvbXBsZXRlOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIGFjdGlvbkJ5RXZlbnQ6IHRydWUsXG4gICAgICAgIGV2ZW50TmFtZTogZXZlbnROYW1lXG4gICAgICB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4ge1xuICAgICAgICAgIHRoaXMuZXJyb3JTZXJ2aWNlLnNldEVycm9yKGVycm9yKTtcbiAgICAgICAgICAvLyB0aGlzIHdpbGwgc3Vic2NyaWJlIHRvIGdldCB0aGUgdXNlciBkZXRhaWxzIGFuZCBkZWNpZGUgd2hldGhlciB0byBkaXNwbGF5IGFuIGVycm9yIG1lc3NhZ2VcbiAgICAgICAgICB0aGlzLmh0dHAuZ2V0KHRoaXMuYXBwQ29uZmlnLmdldFVzZXJJbmZvQXBpVXJsKCkpLnBpcGUobWFwKHJlc3BvbnNlID0+IHJlc3BvbnNlKSkuc3Vic2NyaWJlKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVUYXNrQ29tcGxldGlvbkVycm9yKHJlc3BvbnNlKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvcik7XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgdGhlIHJlc3BvbnNlIGZyb20gdGhlIG9ic2VydmFibGUgdG8gZ2V0IHRoZSB1c2VyIGRldGFpbHMgd2hlbiB0YXNrIGlzIGNvbXBsZXRlZC5cbiAgICogQHBhcmFtIHJlc3BvbnNlIGlzIHRoZSByZXNwb25zZSBnaXZlbiBmcm9tIHRoZSBvYnNlcnZhYmxlIHdoaWNoIGNvbnRhaW5zIHRoZSB1c2VyIGRldGFpbGQuXG4gICAqL1xuICBwdWJsaWMgaGFuZGxlVGFza0NvbXBsZXRpb25FcnJvcihyZXNwb25zZTogYW55KTogdm9pZCB7XG4gICAgY29uc3QgdXNlckRldGFpbHMgPSByZXNwb25zZSBhcyBVc2VyRGV0YWlscztcbiAgICBpZiAodGhpcy51c2VySXNDYXNld29ya2VyKHVzZXJEZXRhaWxzLnVzZXJJbmZvLnJvbGVzKSkge1xuICAgICAgLy8gd2hlbiBzdWJtaXR0aW5nIHRoZSBjb21wbGV0aW9uIG9mIHRhc2sgaWYgbm90IHlldCByZW5kZXJlZCBjYXNlcy9jYXNlIGNvbmZpcm0gdGhlbiBwcmVzZXJ2ZSB0aGUgYWxlcnQgZm9yIHJlLXJlbmRlcmluZ1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2Uuc2V0UHJlc2VydmVBbGVydHModHJ1ZSwgWydjYXNlcy9jYXNlJywgJ3N1Ym1pdCddKTtcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLndhcm5pbmcoeyBwaHJhc2U6J0EgdGFzayBjb3VsZCBub3QgYmUgY29tcGxldGVkIHN1Y2Nlc3NmdWxseS4gUGxlYXNlIGNvbXBsZXRlIHRoZSB0YXNrIGFzc29jaWF0ZWQgd2l0aCB0aGUgY2FzZSBtYW51YWxseS4nfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgdXNlcidzIHJvbGUgaXMgZXF1aXZhbGVudCB0byBhIGNhc2V3b3JrZXIuXG4gICAqIEBwYXJhbSByb2xlcyBpcyB0aGUgbGlzdCBvZiByb2xlcyBmb3VuZCBmcm9tIHRoZSBjdXJyZW50IHVzZXIuXG4gICAqL1xuICBwdWJsaWMgdXNlcklzQ2FzZXdvcmtlcihyb2xlczogc3RyaW5nW10pOiBib29sZWFuIHtcbiAgICBjb25zdCBsb3dlckNhc2VSb2xlcyA9IHJvbGVzLm1hcChyb2xlID0+IHJvbGUudG9Mb3dlckNhc2UoKSk7XG4gICAgLy8gV2hlbi9pZiBsaWIgJiB0YXJnZXQgcGVybWFuZW50bHkgY2hhbmdlIHRvIGVzMjAxNiwgcmVwbGFjZSBpbmRleE9mIHdpdGggaW5jbHVkZXNcbiAgICByZXR1cm4gKGxvd2VyQ2FzZVJvbGVzLmluZGV4T2YoV29ya0FsbG9jYXRpb25TZXJ2aWNlLmlBQ0Nhc2VPZmZpY2VyKSAhPT0gLTEpXG4gICAgICB8fCAobG93ZXJDYXNlUm9sZXMuaW5kZXhPZihXb3JrQWxsb2NhdGlvblNlcnZpY2UuaUFDQWRtT2ZmaWNlcikgIT09IC0xKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb29rIGZvciBvcGVuIHRhc2tzIGZvciBhIGNhc2UgYW5kIGV2ZW50IGNvbWJpbmF0aW9uLiBUaGVyZSBhcmUgNSBwb3NzaWJsZSBzY2VuYXJpb3M6XG4gICAqICAgMS4gTm8gdGFza3MgZm91bmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiBTdWNjZXNzLlxuICAgKiAgIDIuIE9uZSB0YXNrIGZvdW5kID0+IE1hcmsgYXMgZG9uZSAgICAgICAgICAgICAgPT4gU3VjY2Vzcy5cbiAgICogICAzLiBPbmUgdGFzayBmb3VuZCA9PiBNYXJrIGFzIGRvbmUgdGhyb3dzIGVycm9yID0+IEZhaWx1cmUuXG4gICAqICAgNC4gTW9yZSB0aGFuIG9uZSB0YXNrIGZvdW5kICAgICAgICAgICAgICAgICAgICA9PiBGYWlsdXJlLlxuICAgKiAgIDUuIFNlYXJjaCBjYWxsIHRocm93cyBhbiBlcnJvciAgICAgICAgICAgICAgICAgPT4gRmFpbHVyZS5cbiAgICogQHBhcmFtIGNjZElkIFRoZSBJRCBvZiB0aGUgY2FzZSB0byBmaW5kIHRhc2tzIGZvci5cbiAgICogQHBhcmFtIGV2ZW50SWQgVGhlIElEIG9mIHRoZSBldmVudCB0byBmaW5kIHRhc2tzIGZvci5cbiAgICovXG4gIHB1YmxpYyBjb21wbGV0ZUFwcHJvcHJpYXRlVGFzayhjY2RJZDogc3RyaW5nLCBldmVudElkOiBzdHJpbmcsIGp1cmlzZGljdGlvbjogc3RyaW5nLCBjYXNlVHlwZUlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGlmICghdGhpcy5pc1dBRW5hYmxlZChqdXJpc2RpY3Rpb24sIGNhc2VUeXBlSWQpKSB7XG4gICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgfVxuICAgIGNvbnN0IHRhc2tTZWFyY2hQYXJhbWV0ZXI6IFRhc2tTZWFyY2hQYXJhbWV0ZXIgPSB7XG4gICAgICBjY2RJZCxcbiAgICAgIGV2ZW50SWQsXG4gICAgICBqdXJpc2RpY3Rpb24sXG4gICAgICBjYXNlVHlwZUlkXG4gICAgfTtcbiAgICByZXR1cm4gdGhpcy5zZWFyY2hUYXNrcyh0YXNrU2VhcmNoUGFyYW1ldGVyKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHRhc2tzOiBhbnlbXSA9IHJlc3BvbnNlLnRhc2tzO1xuICAgICAgICAgIGlmICh0YXNrcyAmJiB0YXNrcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBpZiAodGFza3MubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAgIHRoaXMuY29tcGxldGVUYXNrKHRhc2tzWzBdLmlkLCBldmVudElkKS5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIC8vIFRoaXMgaXMgYSBwcm9ibGVtLiBUaHJvdyBhbiBhcHByb3ByaWF0ZSBlcnJvci5cbiAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKE1VTFRJUExFX1RBU0tTX0ZPVU5EKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRydWU7IC8vIEFsbCBnb29kLiBOb3RoaW5nIHRvIHNlZSBoZXJlLlxuICAgICAgICB9KSxcbiAgICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB7XG4gICAgICAgICAgLy8gU2ltcGx5IHJldGhyb3cgaXQuXG4gICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3IpO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGFza3MgZm9yIGNhc2UgYW5kIGV2ZW50LlxuICAgKi9cbiAgcHVibGljIGdldFRhc2tzQnlDYXNlSWRBbmRFdmVudElkKGV2ZW50SWQ6IHN0cmluZywgY2FzZUlkOiBzdHJpbmcsIGNhc2VUeXBlOiBzdHJpbmcsIGp1cmlzZGljdGlvbjogc3RyaW5nKTogT2JzZXJ2YWJsZTxUYXNrUGF5bG9hZD4ge1xuICAgIGNvbnN0IGRlZmF1bHRQYXlsb2FkOiBUYXNrUGF5bG9hZCA9IHtcbiAgICAgIHRhc2tfcmVxdWlyZWRfZm9yX2V2ZW50OiBmYWxzZSxcbiAgICAgIHRhc2tzOiBbXVxuICAgIH07XG4gICAgaWYgKCF0aGlzLmlzV0FFbmFibGVkKCkpIHtcbiAgICAgIHRoaXMuYXBwQ29uZmlnLmxvZ01lc3NhZ2UoYGlzV0FFbmFibGVkIGZhbHNlIGZvciAke2Nhc2VJZH0gaW4gZXZlbnQgJHtldmVudElkfWApO1xuICAgICAgcmV0dXJuIG9mKGRlZmF1bHRQYXlsb2FkKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYCR7dGhpcy5hcHBDb25maWcuZ2V0V29ya0FsbG9jYXRpb25BcGlVcmwoKX0vY2FzZS90YXNrcy8ke2Nhc2VJZH0vZXZlbnQvJHtldmVudElkfS9jYXNlVHlwZS8ke2Nhc2VUeXBlfS9qdXJpc2RpY3Rpb24vJHtqdXJpc2RpY3Rpb259YCk7XG4gIH1cblxuIC8qKlxuICAqIENhbGwgdGhlIEFQSSB0byBnZXQgYSB0YXNrXG4gICovXG4gcHVibGljIGdldFRhc2sodGFza0lkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFRhc2tSZXNwb25zZT4ge1xuICBpZiAoIXRoaXMuaXNXQUVuYWJsZWQoKSkge1xuICAgIHJldHVybiBvZih7dGFzazogbnVsbH0pO1xuICB9XG4gIHRoaXMuYXBwQ29uZmlnLmxvZ01lc3NhZ2UoYGdldFRhc2s6ICR7dGFza0lkfWApO1xuICByZXR1cm4gdGhpcy5odHRwLmdldChgJHt0aGlzLmFwcENvbmZpZy5nZXRXb3JrQWxsb2NhdGlvbkFwaVVybCgpfS90YXNrLyR7dGFza0lkfWApO1xuIH1cbn1cbiJdfQ==
@@ -2,34 +2,50 @@ import { Injectable } from '@angular/core';
2
2
  import { Router } from '@angular/router';
3
3
  import { of } from 'rxjs';
4
4
  import { switchMap } from 'rxjs/operators';
5
+ import { AbstractAppConfig } from '../../../../app.config';
5
6
  import { SessionStorageService } from '../../../services';
6
7
  import { WorkAllocationService } from '../../case-editor';
7
8
  import * as i0 from "@angular/core";
8
9
  import * as i1 from "../../case-editor";
9
10
  import * as i2 from "@angular/router";
10
11
  import * as i3 from "../../../services";
12
+ import * as i4 from "../../../../app.config";
11
13
  export class EventStartGuard {
12
14
  workAllocationService;
13
15
  router;
14
16
  sessionStorageService;
17
+ abstractConfig;
15
18
  static CLIENT_CONTEXT = 'clientContext';
16
- constructor(workAllocationService, router, sessionStorageService) {
19
+ constructor(workAllocationService, router, sessionStorageService, abstractConfig) {
17
20
  this.workAllocationService = workAllocationService;
18
21
  this.router = router;
19
22
  this.sessionStorageService = sessionStorageService;
23
+ this.abstractConfig = abstractConfig;
20
24
  }
21
25
  canActivate(route) {
22
26
  const caseId = route.params['cid'];
23
27
  const eventId = route.params['eid'];
24
28
  const taskId = route.queryParams['tid'];
29
+ let userId;
30
+ const userInfoStr = this.sessionStorageService.getItem('userDetails');
31
+ if (userInfoStr) {
32
+ const userInfo = JSON.parse(userInfoStr);
33
+ userId = userInfo.id ? userInfo.id : userInfo.uid;
34
+ }
25
35
  const caseInfoStr = this.sessionStorageService.getItem('caseInfo');
26
36
  if (caseInfoStr) {
27
37
  const caseInfo = JSON.parse(caseInfoStr);
28
38
  if (caseInfo && caseInfo.cid === caseId) {
29
39
  return this.workAllocationService.getTasksByCaseIdAndEventId(eventId, caseId, caseInfo.caseType, caseInfo.jurisdiction)
30
- .pipe(switchMap((payload) => this.checkForTasks(payload, caseId, eventId, taskId)));
40
+ .pipe(switchMap((payload) => this.checkForTasks(payload, caseId, eventId, taskId, userId)));
41
+ }
42
+ else {
43
+ this.abstractConfig.logMessage(`EventStartGuard: caseId ${caseInfo.cid} in caseInfo not matched with the route parameter caseId ${caseId}`);
31
44
  }
32
45
  }
46
+ else {
47
+ this.abstractConfig.logMessage(`EventStartGuard: caseInfo details not available in session storage for ${caseId}`);
48
+ }
33
49
  return of(false);
34
50
  }
35
51
  checkTaskInEventNotRequired(payload, caseId, taskId) {
@@ -78,11 +94,28 @@ export class EventStartGuard {
78
94
  removeTaskFromSessionStorage() {
79
95
  this.sessionStorageService.removeItem(EventStartGuard.CLIENT_CONTEXT);
80
96
  }
81
- checkForTasks(payload, caseId, eventId, taskId) {
97
+ checkForTasks(payload, caseId, eventId, taskId, userId) {
82
98
  if (taskId && payload?.tasks?.length > 0) {
83
99
  const task = payload.tasks.find((t) => t.id == taskId);
84
100
  if (task) {
85
- this.sessionStorageService.setItem(EventStartGuard.CLIENT_CONTEXT, JSON.stringify(task));
101
+ // Store task to session
102
+ const taskEventCompletionInfo = {
103
+ caseId: caseId,
104
+ eventId: eventId,
105
+ userId: userId,
106
+ taskId: task.id,
107
+ createdTimestamp: Date.now()
108
+ };
109
+ const storeClientContext = {
110
+ client_context: {
111
+ user_task: {
112
+ task_data: task,
113
+ complete_task: true
114
+ }
115
+ }
116
+ };
117
+ this.sessionStorageService.setItem('taskEventCompletionInfo', JSON.stringify(taskEventCompletionInfo));
118
+ this.sessionStorageService.setItem(EventStartGuard.CLIENT_CONTEXT, JSON.stringify(storeClientContext));
86
119
  }
87
120
  else {
88
121
  this.removeTaskFromSessionStorage();
@@ -103,10 +136,10 @@ export class EventStartGuard {
103
136
  return of(this.checkTaskInEventNotRequired(payload, caseId, taskId));
104
137
  }
105
138
  }
106
- static ɵfac = function EventStartGuard_Factory(t) { return new (t || EventStartGuard)(i0.ɵɵinject(i1.WorkAllocationService), i0.ɵɵinject(i2.Router), i0.ɵɵinject(i3.SessionStorageService)); };
139
+ static ɵfac = function EventStartGuard_Factory(t) { return new (t || EventStartGuard)(i0.ɵɵinject(i1.WorkAllocationService), i0.ɵɵinject(i2.Router), i0.ɵɵinject(i3.SessionStorageService), i0.ɵɵinject(i4.AbstractAppConfig)); };
107
140
  static ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: EventStartGuard, factory: EventStartGuard.ɵfac });
108
141
  }
109
142
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(EventStartGuard, [{
110
143
  type: Injectable
111
- }], () => [{ type: i1.WorkAllocationService }, { type: i2.Router }, { type: i3.SessionStorageService }], null); })();
112
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtc3RhcnQuZ3VhcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL2NvbXBvbmVudHMvZXZlbnQtc3RhcnQvZXZlbnQtZ3VhcmQvZXZlbnQtc3RhcnQuZ3VhcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQXVDLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlFLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzFELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7OztBQUcxRCxNQUFNLE9BQU8sZUFBZTtJQUdHO0lBQ1Y7SUFDQTtJQUpaLE1BQU0sQ0FBVSxjQUFjLEdBQUcsZUFBZSxDQUFDO0lBRXhELFlBQTZCLHFCQUE0QyxFQUN0RCxNQUFjLEVBQ2QscUJBQTRDO1FBRmxDLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBdUI7UUFDdEQsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBdUI7SUFDL0QsQ0FBQztJQUVNLFdBQVcsQ0FBQyxLQUE2QjtRQUM5QyxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25DLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDcEMsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUV4QyxNQUFNLFdBQVcs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QUUsRUFBRSxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNsSCxPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNuQixDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDdkUsQ0FBQztJQUNILENBQUM7eUVBL0ZVLGVBQWU7Z0VBQWYsZUFBZSxXQUFmLGVBQWU7O2lGQUFmLGVBQWU7Y0FEM0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIENhbkFjdGl2YXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFRhc2tQYXlsb2FkIH0gZnJvbSAnLi4vLi4vLi4vZG9tYWluL3dvcmstYWxsb2NhdGlvbi9UYXNrUGF5bG9hZCc7XG5pbXBvcnQgeyBTZXNzaW9uU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBXb3JrQWxsb2NhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9jYXNlLWVkaXRvcic7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBFdmVudFN0YXJ0R3VhcmQgaW1wbGVtZW50cyBDYW5BY3RpdmF0ZSB7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQ0xJRU5UX0NPTlRFWFQgPSAnY2xpZW50Q29udGV4dCc7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSB3b3JrQWxsb2NhdGlvblNlcnZpY2U6IFdvcmtBbGxvY2F0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlOiBTZXNzaW9uU3RvcmFnZVNlcnZpY2UpIHtcbiAgfVxuXG4gIHB1YmxpYyBjYW5BY3RpdmF0ZShyb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IGNhc2VJZCA9IHJvdXRlLnBhcmFtc1snY2lkJ107XG4gICAgY29uc3QgZXZlbnRJZCA9IHJvdXRlLnBhcmFtc1snZWlkJ107XG4gICAgY29uc3QgdGFza0lkID0gcm91dGUucXVlcnlQYXJhbXNbJ3RpZCddO1xuXG4gICAgY29uc3QgY2FzZUluZm9TdHIgPSB0aGlzLnNlc3Npb25TdG9yYWdlU2VydmljZS5nZXRJdGVtKCdjYXNlSW5mbycpO1xuICAgIGlmIChjYXNlSW5mb1N0cikge1xuICAgICAgY29uc3QgY2FzZUluZm8gPSBKU09OLnBhcnNlKGNhc2VJbmZvU3RyKTtcbiAgICAgIGlmIChjYXNlSW5mbyAmJiBjYXNlSW5mby5jaWQgPT09IGNhc2VJZCkge1xuICAgICAgICByZXR1cm4gdGhpcy53b3JrQWxsb2NhdGlvblNlcnZpY2UuZ2V0VGFza3NCeUNhc2VJZEFuZEV2ZW50SWQoZXZlbnRJZCwgY2FzZUlkLCBjYXNlSW5mby5jYXNlVHlwZSwgY2FzZUluZm8uanVyaXNkaWN0aW9uKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgIHN3aXRjaE1hcCgocGF5bG9hZDogVGFza1BheWxvYWQpID0+IHRoaXMuY2hlY2tGb3JUYXNrcyhwYXlsb2FkLCBjYXNlSWQsIGV2ZW50SWQsIHRhc2tJZCkpXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBvZihmYWxzZSk7XG4gIH1cblxuICBwdWJsaWMgY2hlY2tUYXNrSW5FdmVudE5vdFJlcXVpcmVkKHBheWxvYWQ6IFRhc2tQYXlsb2FkLCBjYXNlSWQ6IHN0cmluZywgdGFza0lkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAoIXBheWxvYWQgfHwgIXBheWxvYWQudGFza3MpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBjb25zdCB0YXNrTnVtYmVyID0gcGF5bG9hZC50YXNrcy5sZW5ndGg7XG4gICAgaWYgKHRhc2tOdW1iZXIgPT09IDApIHtcbiAgICAgIC8vIGlmIHRoZXJlIGFyZSBubyB0YXNrcyBqdXN0IGNhcnJ5IG9uXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgLy8gR2V0IG51bWJlciBvZiB0YXNrcyBhc3NpZ25lZCB0byB1c2VyXG4gICAgY29uc3QgdXNlckluZm9TdHIgPSB0aGlzLnNlc3Npb25TdG9yYWdlU2VydmljZS5nZXRJdGVtKCd1c2VyRGV0YWlscycpO1xuICAgIGNvbnN0IHVzZXJJbmZvID0gSlNPTi5wYXJzZSh1c2VySW5mb1N0cik7XG4gICAgY29uc3QgdGFza3NBc3NpZ25lZFRvVXNlciA9IHBheWxvYWQudGFza3MuZmlsdGVyKHggPT5cbiAgICAgIHgudGFza19zdGF0ZSAhPT0gJ3VuYXNzaWduZWQnICYmICh4LmFzc2lnbmVlID09PSB1c2VySW5mby5pZCB8fCB4LmFzc2lnbmVlID09PSB1c2VySW5mby51aWQpXG4gICAgKTtcbiAgICBpZiAodGFza3NBc3NpZ25lZFRvVXNlci5sZW5ndGggPT09IDApIHtcbiAgICAgIC8vIGlmIG5vIHRhc2tzIGFzc2lnbmVkIHRvIHVzZXIgY2Fycnkgb25cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSBpZiAodGFza3NBc3NpZ25lZFRvVXNlci5sZW5ndGggPiAxICYmICF0YXNrSWQpIHtcbiAgICAgIC8vIGlmIG1vcmUgdGhhbiBvbmUgdGFzayBhc3NpZ25lZCB0byB0aGUgdXNlciB0aGVuIGdpdmUgbXVsdGlwbGUgdGFza3MgZXJyb3JcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtgL2Nhc2VzL2Nhc2UtZGV0YWlscy8ke2Nhc2VJZH0vbXVsdGlwbGUtdGFza3MtZXhpc3RgXSk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCB0YXNrOiBhbnk7XG4gICAgICBpZiAodGFza0lkKSB7XG4gICAgICAgIHRhc2sgPSBwYXlsb2FkLnRhc2tzLmZpbmQoeCA9PiB4LmlkID09PSB0YXNrSWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGFzayA9IHRhc2tzQXNzaWduZWRUb1VzZXJbMF07XG4gICAgICB9XG4gICAgICAvLyBpZiBvbmUgdGFzayBhc3NpZ25lZCB0byB1c2VyLCBhbGxvdyB1c2VyIHRvIGNvbXBsZXRlIGV2ZW50XG4gICAgICBjb25zdCBzdG9yZUNsaWVudENvbnRleHQgPSB7XG4gICAgICAgIGNsaWVudF9jb250ZXh0OiB7XG4gICAgICAgICAgdXNlcl90YXNrOiB7XG4gICAgICAgICAgICB0YXNrX2RhdGE6IHRhc2ssXG4gICAgICAgICAgICBjb21wbGV0ZV90YXNrOiB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgdGhpcy5zZXNzaW9uU3RvcmFnZVNlcnZpY2Uuc2V0SXRlbShFdmVudFN0YXJ0R3VhcmQuQ0xJRU5UX0NPTlRFWFQsIEpTT04uc3RyaW5naWZ5KHN0b3JlQ2xpZW50Q29udGV4dCkpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVUYXNrRnJvbVNlc3Npb25TdG9yYWdlKCk6IHZvaWQge1xuICAgIHRoaXMuc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLnJlbW92ZUl0ZW0oRXZlbnRTdGFydEd1YXJkLkNMSUVOVF9DT05URVhUKTtcbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tGb3JUYXNrcyhwYXlsb2FkOiBUYXNrUGF5bG9hZCwgY2FzZUlkOiBzdHJpbmcsIGV2ZW50SWQ6IHN0cmluZywgdGFza0lkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICBpZiAodGFza0lkICYmIHBheWxvYWQ/LnRhc2tzPy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCB0YXNrID0gcGF5bG9hZC50YXNrcy5maW5kKCh0KSA9PiB0LmlkID09IHRhc2tJZCk7XG4gICAgICBpZiAodGFzaykge1xuICAgICAgICB0aGlzLnNlc3Npb25TdG9yYWdlU2VydmljZS5zZXRJdGVtKEV2ZW50U3RhcnRHdWFyZC5DTElFTlRfQ09OVEVYVCwgSlNPTi5zdHJpbmdpZnkodGFzaykpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5yZW1vdmVUYXNrRnJvbVNlc3Npb25TdG9yYWdlKCk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChwYXlsb2FkLnRhc2tfcmVxdWlyZWRfZm9yX2V2ZW50KSB7XG4gICAgICAvLyBUaGVyZSBhcmUgc29tZSBpc3N1ZXMgaW4gRXZlbnRUcmlnZ2VyUmVzb2x2ZXIvQ2FzZVNlcnZpY2UgYW5kL29yIENDRCBmb3Igc29tZSBldmVudHNcbiAgICAgIC8vIHdoaWNoIHRyaWdnZXJzIHRoZSBDYW5BY3RpdmF0ZSBndWFyZCBhZ2Fpbi5cbiAgICAgIC8vIElmIGV2ZW50IHN0YXJ0IGlzIGluaXRpYXRlZCBhZ2FpbiwgdGhlbiB3ZSBkbyBub3QgbmVlZCB0byBwZXJmb3JtIHN0YXRlIG1hY2hpbmUgcHJvY2Vzc2luZyBhZ2Fpbi5cbiAgICAgIC8vIGh0dHBzOi8vdG9vbHMuaG1jdHMubmV0L2ppcmEvYnJvd3NlL0VVSS01NDg5XG4gICAgICBpZiAodGhpcy5yb3V0ZXIgJiYgdGhpcy5yb3V0ZXIudXJsICYmIHRoaXMucm91dGVyLnVybC5pbmNsdWRlcygnZXZlbnQtc3RhcnQnKSkge1xuICAgICAgICByZXR1cm4gb2YodHJ1ZSk7XG4gICAgICB9XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbYC9jYXNlcy9jYXNlLWRldGFpbHMvJHtjYXNlSWR9L2V2ZW50LXN0YXJ0YF0sIHsgcXVlcnlQYXJhbXM6IHsgY2FzZUlkLCBldmVudElkLCB0YXNrSWQgfSB9KTtcbiAgICAgIHJldHVybiBvZihmYWxzZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBvZih0aGlzLmNoZWNrVGFza0luRXZlbnROb3RSZXF1aXJlZChwYXlsb2FkLCBjYXNlSWQsIHRhc2tJZCkpO1xuICAgIH1cbiAgfVxufVxuIl19
144
+ }], () => [{ type: i1.WorkAllocationService }, { type: i2.Router }, { type: i3.SessionStorageService }, { type: i4.AbstractAppConfig }], null); })();
145
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtc3RhcnQuZ3VhcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL2NvbXBvbmVudHMvZXZlbnQtc3RhcnQvZXZlbnQtZ3VhcmQvZXZlbnQtc3RhcnQuZ3VhcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQXVDLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlFLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRzNELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzFELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7Ozs7QUFHMUQsTUFBTSxPQUFPLGVBQWU7SUFHRztJQUNWO0lBQ0E7SUFDQTtJQUxaLE1BQU0sQ0FBVSxjQUFjLEdBQUcsZUFBZSxDQUFDO0lBRXhELFlBQTZCLHFCQUE0QyxFQUN0RCxNQUFjLEVBQ2QscUJBQTRDLEVBQzVDLGNBQWlDO1FBSHZCLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBdUI7UUFDdEQsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBdUI7UUFDNUMsbUJBQWMsR0FBZCxjQUFjLENBQW1CO0lBQ3BELENBQUM7SUFFTSxXQUFXLENBQUMsS0FBNkI7UUFDOUMsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNuQyxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsTUFBTSxD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QUFDO1lBQ2xCLENBQUM7WUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLHVCQUF1QixNQUFNLGNBQWMsQ0FBQyxFQUFFLEVBQUUsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDbEgsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbkIsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsMkJBQTJCLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQ3ZFLENBQUM7SUFDSCxDQUFDO3lFQTFIVSxlQUFlO2dFQUFmLGVBQWUsV0FBZixlQUFlOztpRkFBZixlQUFlO2NBRDNCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBDYW5BY3RpdmF0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEFic3RyYWN0QXBwQ29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vLi4vYXBwLmNvbmZpZyc7XG5pbXBvcnQgeyBUYXNrRXZlbnRDb21wbGV0aW9uSW5mbyB9IGZyb20gJy4uLy4uLy4uL2RvbWFpbi93b3JrLWFsbG9jYXRpb24vVGFzayc7XG5pbXBvcnQgeyBUYXNrUGF5bG9hZCB9IGZyb20gJy4uLy4uLy4uL2RvbWFpbi93b3JrLWFsbG9jYXRpb24vVGFza1BheWxvYWQnO1xuaW1wb3J0IHsgU2Vzc2lvblN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHsgV29ya0FsbG9jYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY2FzZS1lZGl0b3InO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRXZlbnRTdGFydEd1YXJkIGltcGxlbWVudHMgQ2FuQWN0aXZhdGUge1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IENMSUVOVF9DT05URVhUID0gJ2NsaWVudENvbnRleHQnO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgd29ya0FsbG9jYXRpb25TZXJ2aWNlOiBXb3JrQWxsb2NhdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNlc3Npb25TdG9yYWdlU2VydmljZTogU2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgYWJzdHJhY3RDb25maWc6IEFic3RyYWN0QXBwQ29uZmlnKSB7XG4gIH1cblxuICBwdWJsaWMgY2FuQWN0aXZhdGUocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICBjb25zdCBjYXNlSWQgPSByb3V0ZS5wYXJhbXNbJ2NpZCddO1xuICAgIGNvbnN0IGV2ZW50SWQgPSByb3V0ZS5wYXJhbXNbJ2VpZCddO1xuICAgIGNvbnN0IHRhc2tJZCA9IHJvdXRlLnF1ZXJ5UGFyYW1zWyd0aWQnXTtcbiAgICBsZXQgdXNlcklkOiBzdHJpbmc7XG4gICAgY29uc3QgdXNlckluZm9TdHIgPSB0aGlzLnNlc3Npb25TdG9yYWdlU2VydmljZS5nZXRJdGVtKCd1c2VyRGV0YWlscycpO1xuICAgIGlmICh1c2VySW5mb1N0cikge1xuICAgICAgY29uc3QgdXNlckluZm8gPSBKU09OLnBhcnNlKHVzZXJJbmZvU3RyKTtcbiAgICAgIHVzZXJJZCA9IHVzZXJJbmZvLmlkID8gdXNlckluZm8uaWQgOiB1c2VySW5mby51aWQ7XG4gICAgfVxuICAgIGNvbnN0IGNhc2VJbmZvU3RyID0gdGhpcy5zZXNzaW9uU3RvcmFnZVNlcnZpY2UuZ2V0SXRlbSgnY2FzZUluZm8nKTtcbiAgICBpZiAoY2FzZUluZm9TdHIpIHtcbiAgICAgIGNvbnN0IGNhc2VJbmZvID0gSlNPTi5wYXJzZShjYXNlSW5mb1N0cik7XG4gICAgICBpZiAoY2FzZUluZm8gJiYgY2FzZUluZm8uY2lkID09PSBjYXNlSWQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMud29ya0FsbG9jYXRpb25TZXJ2aWNlLmdldFRhc2tzQnlDYXNlSWRBbmRFdmVudElkKGV2ZW50SWQsIGNhc2VJZCwgY2FzZUluZm8uY2FzZVR5cGUsIGNhc2VJbmZvLmp1cmlzZGljdGlvbilcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIHN3aXRjaE1hcCgocGF5bG9hZDogVGFza1BheWxvYWQpID0+IHRoaXMuY2hlY2tGb3JUYXNrcyhwYXlsb2FkLCBjYXNlSWQsIGV2ZW50SWQsIHRhc2tJZCwgdXNlcklkKSlcbiAgICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5hYnN0cmFjdENvbmZpZy5sb2dNZXNzYWdlKGBFdmVudFN0YXJ0R3VhcmQ6IGNhc2VJZCAke2Nhc2VJbmZvLmNpZH0gaW4gY2FzZUluZm8gbm90IG1hdGNoZWQgd2l0aCB0aGUgcm91dGUgcGFyYW1ldGVyIGNhc2VJZCAke2Nhc2VJZH1gKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5hYnN0cmFjdENvbmZpZy5sb2dNZXNzYWdlKGBFdmVudFN0YXJ0R3VhcmQ6IGNhc2VJbmZvIGRldGFpbHMgbm90IGF2YWlsYWJsZSBpbiBzZXNzaW9uIHN0b3JhZ2UgZm9yICR7Y2FzZUlkfWApO1xuICAgIH1cbiAgICByZXR1cm4gb2YoZmFsc2UpO1xuICB9XG5cbiAgcHVibGljIGNoZWNrVGFza0luRXZlbnROb3RSZXF1aXJlZChwYXlsb2FkOiBUYXNrUGF5bG9hZCwgY2FzZUlkOiBzdHJpbmcsIHRhc2tJZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaWYgKCFwYXlsb2FkIHx8ICFwYXlsb2FkLnRhc2tzKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgY29uc3QgdGFza051bWJlciA9IHBheWxvYWQudGFza3MubGVuZ3RoO1xuICAgIGlmICh0YXNrTnVtYmVyID09PSAwKSB7XG4gICAgICAvLyBpZiB0aGVyZSBhcmUgbm8gdGFza3MganVzdCBjYXJyeSBvblxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIC8vIEdldCBudW1iZXIgb2YgdGFza3MgYXNzaWduZWQgdG8gdXNlclxuICAgIGNvbnN0IHVzZXJJbmZvU3RyID0gdGhpcy5zZXNzaW9uU3RvcmFnZVNlcnZpY2UuZ2V0SXRlbSgndXNlckRldGFpbHMnKTtcbiAgICBjb25zdCB1c2VySW5mbyA9IEpTT04ucGFyc2UodXNlckluZm9TdHIpO1xuICAgIGNvbnN0IHRhc2tzQXNzaWduZWRUb1VzZXIgPSBwYXlsb2FkLnRhc2tzLmZpbHRlcih4ID0+XG4gICAgICB4LnRhc2tfc3RhdGUgIT09ICd1bmFzc2lnbmVkJyAmJiAoeC5hc3NpZ25lZSA9PT0gdXNlckluZm8uaWQgfHwgeC5hc3NpZ25lZSA9PT0gdXNlckluZm8udWlkKVxuICAgICk7XG4gICAgaWYgKHRhc2tzQXNzaWduZWRUb1VzZXIubGVuZ3RoID09PSAwKSB7XG4gICAgICAvLyBpZiBubyB0YXNrcyBhc3NpZ25lZCB0byB1c2VyIGNhcnJ5IG9uXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKHRhc2tzQXNzaWduZWRUb1VzZXIubGVuZ3RoID4gMSAmJiAhdGFza0lkKSB7XG4gICAgICAvLyBpZiBtb3JlIHRoYW4gb25lIHRhc2sgYXNzaWduZWQgdG8gdGhlIHVzZXIgdGhlbiBnaXZlIG11bHRpcGxlIHRhc2tzIGVycm9yXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbYC9jYXNlcy9jYXNlLWRldGFpbHMvJHtjYXNlSWR9L211bHRpcGxlLXRhc2tzLWV4aXN0YF0pO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgdGFzazogYW55O1xuICAgICAgaWYgKHRhc2tJZCkge1xuICAgICAgICB0YXNrID0gcGF5bG9hZC50YXNrcy5maW5kKHggPT4geC5pZCA9PT0gdGFza0lkKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRhc2sgPSB0YXNrc0Fzc2lnbmVkVG9Vc2VyWzBdO1xuICAgICAgfVxuICAgICAgLy8gaWYgb25lIHRhc2sgYXNzaWduZWQgdG8gdXNlciwgYWxsb3cgdXNlciB0byBjb21wbGV0ZSBldmVudFxuICAgICAgY29uc3Qgc3RvcmVDbGllbnRDb250ZXh0ID0ge1xuICAgICAgICBjbGllbnRfY29udGV4dDoge1xuICAgICAgICAgIHVzZXJfdGFzazoge1xuICAgICAgICAgICAgdGFza19kYXRhOiB0YXNrLFxuICAgICAgICAgICAgY29tcGxldGVfdGFzazogdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIHRoaXMuc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLnNldEl0ZW0oRXZlbnRTdGFydEd1YXJkLkNMSUVOVF9DT05URVhULCBKU09OLnN0cmluZ2lmeShzdG9yZUNsaWVudENvbnRleHQpKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlVGFza0Zyb21TZXNzaW9uU3RvcmFnZSgpOiB2b2lkIHtcbiAgICB0aGlzLnNlc3Npb25TdG9yYWdlU2VydmljZS5yZW1vdmVJdGVtKEV2ZW50U3RhcnRHdWFyZC5DTElFTlRfQ09OVEVYVCk7XG4gIH1cblxuICBwcml2YXRlIGNoZWNrRm9yVGFza3MocGF5bG9hZDogVGFza1BheWxvYWQsIGNhc2VJZDogc3RyaW5nLCBldmVudElkOiBzdHJpbmcsIHRhc2tJZDogc3RyaW5nLCB1c2VySWQ6IHN0cmluZyk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIGlmICh0YXNrSWQgJiYgcGF5bG9hZD8udGFza3M/Lmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IHRhc2sgPSBwYXlsb2FkLnRhc2tzLmZpbmQoKHQpID0+IHQuaWQgPT0gdGFza0lkKTtcbiAgICAgIGlmICh0YXNrKSB7XG4gICAgICAgIC8vIFN0b3JlIHRhc2sgdG8gc2Vzc2lvblxuICAgICAgICBjb25zdCB0YXNrRXZlbnRDb21wbGV0aW9uSW5mbzogVGFza0V2ZW50Q29tcGxldGlvbkluZm8gPSB7XG4gICAgICAgICAgY2FzZUlkOiBjYXNlSWQsXG4gICAgICAgICAgZXZlbnRJZDogZXZlbnRJZCxcbiAgICAgICAgICB1c2VySWQ6IHVzZXJJZCxcbiAgICAgICAgICB0YXNrSWQ6IHRhc2suaWQsXG4gICAgICAgICAgY3JlYXRlZFRpbWVzdGFtcDogRGF0ZS5ub3coKVxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBzdG9yZUNsaWVudENvbnRleHQgPSB7XG4gICAgICAgICAgY2xpZW50X2NvbnRleHQ6IHtcbiAgICAgICAgICAgIHVzZXJfdGFzazoge1xuICAgICAgICAgICAgICB0YXNrX2RhdGE6IHRhc2ssXG4gICAgICAgICAgICAgIGNvbXBsZXRlX3Rhc2s6IHRydWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLnNldEl0ZW0oJ3Rhc2tFdmVudENvbXBsZXRpb25JbmZvJywgSlNPTi5zdHJpbmdpZnkodGFza0V2ZW50Q29tcGxldGlvbkluZm8pKTtcbiAgICAgICAgdGhpcy5zZXNzaW9uU3RvcmFnZVNlcnZpY2Uuc2V0SXRlbShFdmVudFN0YXJ0R3VhcmQuQ0xJRU5UX0NPTlRFWFQsIEpTT04uc3RyaW5naWZ5KHN0b3JlQ2xpZW50Q29udGV4dCkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5yZW1vdmVUYXNrRnJvbVNlc3Npb25TdG9yYWdlKCk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChwYXlsb2FkLnRhc2tfcmVxdWlyZWRfZm9yX2V2ZW50KSB7XG4gICAgICAvLyBUaGVyZSBhcmUgc29tZSBpc3N1ZXMgaW4gRXZlbnRUcmlnZ2VyUmVzb2x2ZXIvQ2FzZVNlcnZpY2UgYW5kL29yIENDRCBmb3Igc29tZSBldmVudHNcbiAgICAgIC8vIHdoaWNoIHRyaWdnZXJzIHRoZSBDYW5BY3RpdmF0ZSBndWFyZCBhZ2Fpbi5cbiAgICAgIC8vIElmIGV2ZW50IHN0YXJ0IGlzIGluaXRpYXRlZCBhZ2FpbiwgdGhlbiB3ZSBkbyBub3QgbmVlZCB0byBwZXJmb3JtIHN0YXRlIG1hY2hpbmUgcHJvY2Vzc2luZyBhZ2Fpbi5cbiAgICAgIC8vIGh0dHBzOi8vdG9vbHMuaG1jdHMubmV0L2ppcmEvYnJvd3NlL0VVSS01NDg5XG4gICAgICBpZiAodGhpcy5yb3V0ZXIgJiYgdGhpcy5yb3V0ZXIudXJsICYmIHRoaXMucm91dGVyLnVybC5pbmNsdWRlcygnZXZlbnQtc3RhcnQnKSkge1xuICAgICAgICByZXR1cm4gb2YodHJ1ZSk7XG4gICAgICB9XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbYC9jYXNlcy9jYXNlLWRldGFpbHMvJHtjYXNlSWR9L2V2ZW50LXN0YXJ0YF0sIHsgcXVlcnlQYXJhbXM6IHsgY2FzZUlkLCBldmVudElkLCB0YXNrSWQgfSB9KTtcbiAgICAgIHJldHVybiBvZihmYWxzZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBvZih0aGlzLmNoZWNrVGFza0luRXZlbnROb3RSZXF1aXJlZChwYXlsb2FkLCBjYXNlSWQsIHRhc2tJZCkpO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -2,15 +2,19 @@ import { Injectable } from '@angular/core';
2
2
  import { map } from 'rxjs/operators';
3
3
  import { SessionStorageService } from '../../../services/session/session-storage.service';
4
4
  import { WorkAllocationService } from '../../case-editor/services/work-allocation.service';
5
+ import { AbstractAppConfig } from '../../../../app.config';
5
6
  import * as i0 from "@angular/core";
6
7
  import * as i1 from "../../case-editor/services/work-allocation.service";
7
8
  import * as i2 from "../../../services/session/session-storage.service";
9
+ import * as i3 from "../../../../app.config";
8
10
  export class EventTasksResolverService {
9
11
  service;
10
12
  sessionStorageService;
11
- constructor(service, sessionStorageService) {
13
+ abstractConfig;
14
+ constructor(service, sessionStorageService, abstractConfig) {
12
15
  this.service = service;
13
16
  this.sessionStorageService = sessionStorageService;
17
+ this.abstractConfig = abstractConfig;
14
18
  }
15
19
  resolve(route) {
16
20
  const eventId = route.queryParamMap.get('eventId');
@@ -21,11 +25,14 @@ export class EventTasksResolverService {
21
25
  return this.service.getTasksByCaseIdAndEventId(eventId, caseId, caseInfo.caseType, caseInfo.jurisdiction)
22
26
  .pipe(map((payload) => payload.tasks));
23
27
  }
28
+ else {
29
+ this.abstractConfig.logMessage(`EventTasksResolverService: caseInfo details not available in session storage for ${caseId}`);
30
+ }
24
31
  }
25
- static ɵfac = function EventTasksResolverService_Factory(t) { return new (t || EventTasksResolverService)(i0.ɵɵinject(i1.WorkAllocationService), i0.ɵɵinject(i2.SessionStorageService)); };
32
+ static ɵfac = function EventTasksResolverService_Factory(t) { return new (t || EventTasksResolverService)(i0.ɵɵinject(i1.WorkAllocationService), i0.ɵɵinject(i2.SessionStorageService), i0.ɵɵinject(i3.AbstractAppConfig)); };
26
33
  static ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: EventTasksResolverService, factory: EventTasksResolverService.ɵfac });
27
34
  }
28
35
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(EventTasksResolverService, [{
29
36
  type: Injectable
30
- }], () => [{ type: i1.WorkAllocationService }, { type: i2.SessionStorageService }], null); })();
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtdGFza3MtcmVzb2x2ZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9ldmVudC1zdGFydC9yZXNvbHZlcnMvZXZlbnQtdGFza3MtcmVzb2x2ZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzNDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUdyQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUMxRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQzs7OztBQUczRixNQUFNLE9BQU8seUJBQXlCO0lBRVA7SUFDQTtJQUQ3QixZQUE2QixPQUE4QixFQUM5QixxQkFBNEM7UUFENUMsWUFBTyxHQUFQLE9BQU8sQ0FBdUI7UUFDOUIsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtJQUN6RSxDQUFDO0lBRU0sT0FBTyxDQUFDLEtBQTZCO1FBQzFDLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ25ELE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2pELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDbkUsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN6QyxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQ2IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLDBCQUEwQixDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsWUFBWSxDQUFDO2lCQUN4RyxJQUFJLENBQ0gsR0FBRyxDQUFDLENBQUMsT0FBb0IsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUM3QyxDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7bUZBakJVLHlCQUF5QjtnRUFBekIseUJBQXlCLFdBQXpCLHlCQUF5Qjs7aUZBQXpCLHlCQUF5QjtjQURyQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgUmVzb2x2ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBUYXNrIH0gZnJvbSAnLi4vLi4vLi4vZG9tYWluL3dvcmstYWxsb2NhdGlvbi9UYXNrJztcbmltcG9ydCB7IFRhc2tQYXlsb2FkIH0gZnJvbSAnLi4vLi4vLi4vZG9tYWluL3dvcmstYWxsb2NhdGlvbi9UYXNrUGF5bG9hZCc7XG5pbXBvcnQgeyBTZXNzaW9uU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9zZXNzaW9uL3Nlc3Npb24tc3RvcmFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IFdvcmtBbGxvY2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL2Nhc2UtZWRpdG9yL3NlcnZpY2VzL3dvcmstYWxsb2NhdGlvbi5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEV2ZW50VGFza3NSZXNvbHZlclNlcnZpY2UgaW1wbGVtZW50cyBSZXNvbHZlPFRhc2tbXT4ge1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgc2VydmljZTogV29ya0FsbG9jYXRpb25TZXJ2aWNlLFxuICAgICAgICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHNlc3Npb25TdG9yYWdlU2VydmljZTogU2Vzc2lvblN0b3JhZ2VTZXJ2aWNlKSB7XG4gIH1cblxuICBwdWJsaWMgcmVzb2x2ZShyb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCk6IE9ic2VydmFibGU8VGFza1tdPiB7XG4gICAgY29uc3QgZXZlbnRJZCA9IHJvdXRlLnF1ZXJ5UGFyYW1NYXAuZ2V0KCdldmVudElkJyk7XG4gICAgY29uc3QgY2FzZUlkID0gcm91dGUucXVlcnlQYXJhbU1hcC5nZXQoJ2Nhc2VJZCcpO1xuICAgIGNvbnN0IGNhc2VJbmZvU3RyID0gdGhpcy5zZXNzaW9uU3RvcmFnZVNlcnZpY2UuZ2V0SXRlbSgnY2FzZUluZm8nKTtcbiAgICBjb25zdCBjYXNlSW5mbyA9IEpTT04ucGFyc2UoY2FzZUluZm9TdHIpO1xuICAgIGlmIChjYXNlSW5mbykge1xuICAgICAgcmV0dXJuIHRoaXMuc2VydmljZS5nZXRUYXNrc0J5Q2FzZUlkQW5kRXZlbnRJZChldmVudElkLCBjYXNlSWQsIGNhc2VJbmZvLmNhc2VUeXBlLCBjYXNlSW5mby5qdXJpc2RpY3Rpb24pXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKChwYXlsb2FkOiBUYXNrUGF5bG9hZCkgPT4gcGF5bG9hZC50YXNrcylcbiAgICAgICk7XG4gICAgfVxuICB9XG59XG4iXX0=
37
+ }], () => [{ type: i1.WorkAllocationService }, { type: i2.SessionStorageService }, { type: i3.AbstractAppConfig }], null); })();
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtdGFza3MtcmVzb2x2ZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9ldmVudC1zdGFydC9yZXNvbHZlcnMvZXZlbnQtdGFza3MtcmVzb2x2ZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzNDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUdyQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUMxRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUMzRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7QUFHM0QsTUFBTSxPQUFPLHlCQUF5QjtJQUVQO0lBQ0E7SUFDQTtJQUY3QixZQUE2QixPQUE4QixFQUM5QixxQkFBNEMsRUFDNUMsY0FBaUM7UUFGakMsWUFBTyxHQUFQLE9BQU8sQ0FBdUI7UUFDOUIsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQUM1QyxtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7SUFDOUQsQ0FBQztJQUVNLE9BQU8sQ0FBQyxLQUE2QjtRQUMxQyxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNuRCxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNqRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ25FLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDekMsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNiLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQywwQkFBMEIsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLFlBQVksQ0FBQztpQkFDeEcsSUFBSSxDQUNILEdBQUcsQ0FBQyxDQUFDLE9BQW9CLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FDN0MsQ0FBQztRQUNKLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsb0ZBQW9GLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDL0gsQ0FBQztJQUNILENBQUM7bUZBcEJVLHlCQUF5QjtnRUFBekIseUJBQXlCLFdBQXpCLHlCQUF5Qjs7aUZBQXpCLHlCQUF5QjtjQURyQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgUmVzb2x2ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBUYXNrIH0gZnJvbSAnLi4vLi4vLi4vZG9tYWluL3dvcmstYWxsb2NhdGlvbi9UYXNrJztcbmltcG9ydCB7IFRhc2tQYXlsb2FkIH0gZnJvbSAnLi4vLi4vLi4vZG9tYWluL3dvcmstYWxsb2NhdGlvbi9UYXNrUGF5bG9hZCc7XG5pbXBvcnQgeyBTZXNzaW9uU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9zZXNzaW9uL3Nlc3Npb24tc3RvcmFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IFdvcmtBbGxvY2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL2Nhc2UtZWRpdG9yL3NlcnZpY2VzL3dvcmstYWxsb2NhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IEFic3RyYWN0QXBwQ29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vLi4vYXBwLmNvbmZpZyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBFdmVudFRhc2tzUmVzb2x2ZXJTZXJ2aWNlIGltcGxlbWVudHMgUmVzb2x2ZTxUYXNrW10+IHtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHNlcnZpY2U6IFdvcmtBbGxvY2F0aW9uU2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSByZWFkb25seSBzZXNzaW9uU3RvcmFnZVNlcnZpY2U6IFNlc3Npb25TdG9yYWdlU2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSByZWFkb25seSBhYnN0cmFjdENvbmZpZzogQWJzdHJhY3RBcHBDb25maWcpIHtcbiAgfVxuXG4gIHB1YmxpYyByZXNvbHZlKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KTogT2JzZXJ2YWJsZTxUYXNrW10+IHtcbiAgICBjb25zdCBldmVudElkID0gcm91dGUucXVlcnlQYXJhbU1hcC5nZXQoJ2V2ZW50SWQnKTtcbiAgICBjb25zdCBjYXNlSWQgPSByb3V0ZS5xdWVyeVBhcmFtTWFwLmdldCgnY2FzZUlkJyk7XG4gICAgY29uc3QgY2FzZUluZm9TdHIgPSB0aGlzLnNlc3Npb25TdG9yYWdlU2VydmljZS5nZXRJdGVtKCdjYXNlSW5mbycpO1xuICAgIGNvbnN0IGNhc2VJbmZvID0gSlNPTi5wYXJzZShjYXNlSW5mb1N0cik7XG4gICAgaWYgKGNhc2VJbmZvKSB7XG4gICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlLmdldFRhc2tzQnlDYXNlSWRBbmRFdmVudElkKGV2ZW50SWQsIGNhc2VJZCwgY2FzZUluZm8uY2FzZVR5cGUsIGNhc2VJbmZvLmp1cmlzZGljdGlvbilcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHBheWxvYWQ6IFRhc2tQYXlsb2FkKSA9PiBwYXlsb2FkLnRhc2tzKVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5hYnN0cmFjdENvbmZpZy5sb2dNZXNzYWdlKGBFdmVudFRhc2tzUmVzb2x2ZXJTZXJ2aWNlOiBjYXNlSW5mbyBkZXRhaWxzIG5vdCBhdmFpbGFibGUgaW4gc2Vzc2lvbiBzdG9yYWdlIGZvciAke2Nhc2VJZH1gKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -137,6 +137,20 @@ export class EventStartStateMachineService {
137
137
  }
138
138
  };
139
139
  context.sessionStorageService.setItem('clientContext', JSON.stringify(clientContext));
140
+ let userInfo;
141
+ const userInfoStr = context.sessionStorageService.getItem('userDetails');
142
+ if (userInfoStr) {
143
+ userInfo = JSON.parse(userInfoStr);
144
+ }
145
+ // Store task to session
146
+ const taskEventCompletionInfo = {
147
+ caseId: context.caseId,
148
+ eventId: context.eventId,
149
+ userId: userInfo.id ? userInfo.id : userInfo.uid,
150
+ taskId: task.id,
151
+ createdTimestamp: Date.now()
152
+ };
153
+ context.sessionStorageService.setItem('taskEventCompletionInfo', JSON.stringify(taskEventCompletionInfo));
140
154
  // Allow user to perform the event
141
155
  context.router.navigate([`/cases/case-details/${context.caseId}/trigger/${context.eventId}`], { relativeTo: context.route });
142
156
  }
@@ -184,4 +198,4 @@ export class EventStartStateMachineService {
184
198
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(EventStartStateMachineService, [{
185
199
  type: Injectable
186
200
  }], null, null); })();
187
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtc3RhcnQtc3RhdGUtbWFjaGluZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL2V2ZW50LXN0YXJ0L3NlcnZpY2VzL2V2ZW50LXN0YXJ0LXN0YXRlLW1hY2hpbmUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBUyxZQUFZLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDakQsT0FBTyxFQUFpQyxnQkFBZ0IsRUFBRSxNQUFNLFdBQVcsQ0FBQzs7QUFFNUUsTUFBTSxtQkFBbUIsR0FBRyxxQkFBcUIsQ0FBQztBQUdsRCxNQUFNLE9BQU8sNkJBQTZCO0lBQ2pDLDBCQUEwQixDQUFRO0lBQ2xDLFdBQVcsQ0FBUTtJQUNuQixZQUFZLENBQVE7SUFDcEIsbUJBQW1CLENBQVE7SUFDM0IsdUJBQXVCLENBQVE7SUFDL0IsMEJBQTBCLENBQVE7SUFDbEMsZ0NBQWdDLENBQVE7SUFDeEMsbUJBQW1CLENBQVE7SUFDM0IsVUFBVSxDQUFRO0lBRWxCLHNCQUFzQixDQUFDLE9BQXNDO1FBQ2xFLE9BQU8sSUFBSSxZQUFZLENBQUMsbUJBQW1CLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVNLFlBQVksQ0FBQyxZQUEwQjtRQUM1QyxnQkFBZ0I7UUFDaEIsSUFBSSxDQUFDLDBCQUEwQixHQUFHLFlBQVksQ0FBQyxXQUFXLENBQ3hELGdCQUFnQixDQUFDLHdCQUF3QixFQUN6QyxLQUFLLEVBQ0wsSUFBSSxDQUFDLHdDQUF3QyxDQUM5QyxDQUFDO1FBRUYsNENBQTRDO1FBQzVDLElBQUksQ0FBQyxXQUFXLEdBQUcsWUFBWSxDQUFDLFdBQVcsQ0FDekMsZ0JBQWdCLENBQUMsT0FBTyxF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LHVCQUF1QixDQUFDLGFBQWEsQ0FDeEMsZ0JBQWdCLENBQUMsK0JBQStCLEVBQ2hELElBQUksQ0FBQyxnQ0FBZ0MsQ0FDdEMsQ0FBQztRQUNGLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxhQUFhLENBQ3hDLGdCQUFnQixDQUFDLEtBQUssRUFDdEIsSUFBSSxDQUFDLFVBQVUsQ0FDaEIsQ0FBQztJQUNKLENBQUM7SUFFTSwyQ0FBMkM7UUFDaEQsSUFBSSxDQUFDLDBCQUEwQixDQUFDLGFBQWEsQ0FDM0MsZ0JBQWdCLENBQUMsS0FBSyxFQUN0QixJQUFJLENBQUMsVUFBVSxDQUNoQixDQUFDO0lBQ0osQ0FBQztJQUVNLGlEQUFpRDtRQUN0RCxJQUFJLENBQUMsZ0NBQWdDLENBQUMsYUFBYSxDQUNqRCxnQkFBZ0IsQ0FBQyxLQUFLLEVBQ3RCLElBQUksQ0FBQyxVQUFVLENBQ2hCLENBQUM7SUFDSixDQUFDO3VGQS9RVSw2QkFBNkI7Z0VBQTdCLDZCQUE2QixXQUE3Qiw2QkFBNkI7O2lGQUE3Qiw2QkFBNkI7Y0FEekMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBTdGF0ZSwgU3RhdGVNYWNoaW5lIH0gZnJvbSAnQGVkaXVtL2ZzbSc7XG5pbXBvcnQgeyBFdmVudFN0YXJ0U3RhdGVNYWNoaW5lQ29udGV4dCwgRXZlbnRTdGFydFN0YXRlcyB9IGZyb20gJy4uL21vZGVscyc7XG5cbmNvbnN0IEVWRU5UX1NUQVRFX01BQ0hJTkUgPSAnRVZFTlQgU1RBVEUgTUFDSElORSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBFdmVudFN0YXJ0U3RhdGVNYWNoaW5lU2VydmljZSB7XG4gIHB1YmxpYyBzdGF0ZUNoZWNrRm9yTWF0Y2hpbmdUYXNrczogU3RhdGU7XG4gIHB1YmxpYyBzdGF0ZU5vVGFzazogU3RhdGU7XG4gIHB1YmxpYyBzdGF0ZU9uZVRhc2s6IFN0YXRlO1xuICBwdWJsaWMgc3RhdGVPbmVPck1vcmVUYXNrczogU3RhdGU7XG4gIHB1YmxpYyBzdGF0ZVRhc2tBc3NpZ25lZFRvVXNlcjogU3RhdGU7XG4gIHB1YmxpYyBzdGF0ZU9uZVRhc2tBc3NpZ25lZFRvVXNlcjogU3RhdGU7XG4gIHB1YmxpYyBzdGF0ZU11bHRpcGxlVGFza3NBc3NpZ25lZFRvVXNlcjogU3RhdGU7XG4gIHB1YmxpYyBzdGF0ZVRhc2tVbmFzc2lnbmVkOiBTdGF0ZTtcbiAgcHVibGljIHN0YXRlRmluYWw6IFN0YXRlO1xuXG4gIHB1YmxpYyBpbml0aWFsaXNlU3RhdGVNYWNoaW5lKGNvbnRleHQ6IEV2ZW50U3RhcnRTdGF0ZU1hY2hpbmVDb250ZXh0KTogU3RhdGVNYWNoaW5lIHtcbiAgICByZXR1cm4gbmV3IFN0YXRlTWFjaGluZShFVkVOVF9TVEFURV9NQUNISU5FLCBjb250ZXh0KTtcbiAgfVxuXG4gIHB1YmxpYyBjcmVhdGVTdGF0ZXMoc3RhdGVNYWNoaW5lOiBTdGF0ZU1hY2hpbmUpOiB2b2lkIHtcbiAgICAvLyBJbml0aWFsIHN0YXRlXG4gICAgdGhpcy5zdGF0ZUNoZWNrRm9yTWF0Y2hpbmdUYXNrcyA9IHN0YXRlTWFjaGluZS5jcmVhdGVTdGF0ZShcbiAgICAgIEV2ZW50U3RhcnRTdGF0ZXMuQ0hFQ0tfRk9SX01BVENISU5HX1RBU0tTLFxuICAgICAgZmFsc2UsXG4gICAgICB0aGlzLmVudHJ5QWN0aW9uRm9yU3RhdGVDaGVja0Zvck1hdGNoaW5nVGFza3NcbiAgICApO1xuXG4gICAgLy8gU3RhdGVzIGJhc2VkIG9uIG51bWJlciBvZiB0YXNrcyBhdmFpbGFibGVcbiAgICB0aGlzLnN0YXRlTm9UYXNrID0gc3RhdGVNYWNoaW5lLmNyZWF0ZVN0YXRlKFxuICAgICAgRXZlbnRTdGFydFN0YXRlcy5OT19UQVNLLFxuICAgICAgZmFsc2UsXG4gICAgICB0aGlzLmVudHJ5QWN0aW9uRm9yU3RhdGVOb1Rhc2tcbiAgICApO1xuICAgIHRoaXMuc3RhdGVPbmVPck1vcmVUYXNrcyA9IHN0YXRlTWFjaGluZS5jcmVhdGVTdGF0ZShcbiAgICAgIEV2ZW50U3RhcnRTdGF0ZXMuT05FX09SX01PUkVfVEFTS1MsXG4gICAgICBmYWxzZSxcbiAgICAgIHRoaXMuZW50cnlBY3Rpb25Gb3JTdGF0ZU9uZU9yTW9yZVRhc2tzXG4gICAgKTtcblxuICAgIC8vIFN0YXRlcyBiYXNlZCBvbiBudW1iZXIgb2YgdGFza3MgYXNzaWduZWQgdG8gdXNlclxuICAgIHRoaXMuc3RhdGVUYXNrVW5hc3NpZ25lZCA9IHN0YXRlTWFjaGluZS5jcmVhdGVTdGF0ZShcbiAgICAgIEV2ZW50U3RhcnRTdGF0ZXMuVEFTS19VTkFTU0lHTkVELFxuICAgICAgZmFsc2UsXG4gICAgICB0aGlzLmVudHJ5QWN0aW9uRm9yU3RhdGVUYXNrVW5Bc3NpZ25lZFxuICAgICk7XG4gICAgdGhpcy5zdGF0ZVRhc2tBc3NpZ25lZFRvVXNlciA9IHN0YXRlTWFjaGluZS5jcmVhdGVTdGF0ZShcbiAgICAgIEV2ZW50U3RhcnRTdGF0ZXMuVEFTS19BU1NJR05FRF9UT19VU0VSLFxuICAgICAgZmFsc2UsXG4gICAgICB0aGlzLmVudHJ5QWN0aW9uRm9yU3RhdGVUYXNrQXNzaWduZWRUb1VzZXJcbiAgICApO1xuICAgIHRoaXMuc3RhdGVPbmVUYXNrQXNzaWduZWRUb1VzZXIgPSBzdGF0ZU1hY2hpbmUuY3JlYXRlU3RhdGUoXG4gICAgICBFdmVudFN0YXJ0U3RhdGVzLk9ORV9UQVNLX0FTU0lHTkVEX1RPX1VTRVIsXG4gICAgICBmYWxzZSxcbiAgICAgIHRoaXMuZW50cnlBY3Rpb25Gb3JTdGF0ZU9uZVRhc2tBc3NpZ25lZFRvVXNlclxuICAgICk7XG4gICAgdGhpcy5zdGF0ZU11bHRpcGxlVGFza3NBc3NpZ25lZFRvVXNlciA9IHN0YXRlTWFjaGluZS5jcmVhdGVTdGF0ZShcbiAgICAgIEV2ZW50U3RhcnRTdGF0ZXMuTVVMVElQTEVfVEFTS1NfQVNTSUdORURfVE9fVVNFUixcbiAgICAgIGZhbHNlLFxuICAgICAgdGhpcy5lbnRyeUFjdGlvbkZvclN0YXRlTXVsdGlwbGVUYXNrc0Fzc2lnbmVkVG9Vc2VyXG4gICAgKTtcblxuICAgIC8vIENyZWF0ZSBmaW5hbCBzdGF0ZSwgdGhlIHNlY29uZCBwYXJhbSBpc0NvbXBsZXRlIGlzIHNldCB0byB0cnVlIHRvIG1ha2Ugc3VyZSBzdGF0ZSBtYWNoaW5lIGZpbmlzaGVkIHJ1bm5pbmdcbiAgICB0aGlzLnN0YXRlRmluYWwgPSBzdGF0ZU1hY2hpbmUuY3JlYXRlU3RhdGUoXG4gICAgICBFdmVudFN0YXJ0U3RhdGVzLkZJTkFMLFxuICAgICAgdHJ1ZSxcbiAgICAgIHRoaXMuZmluYWxBY3Rpb25cbiAgICApO1xuICB9XG5cbiAgcHVibGljIGFkZFRyYW5zaXRpb25zKCk6IHZvaWQge1xuICAgIC8vIEluaXRpYWwgdHJhbnNpdGlvblxuICAgIHRoaXMuYWRkVHJhbnNpdGlvbnNGb3JTdGF0ZUNoZWNrRm9yTWF0Y2hpbmdUYXNrcygpO1xuXG4gICAgLy8gVHJhbnNpdGlvbnMgYmFzZWQgb24gbnVtYmVyIG9mIHRhc2tzIGF2YWlsYWJsZVxuICAgIHRoaXMuYWRkVHJhbnNpdGlvbnNGb3JTdGF0ZU5vVGFzaygpO1xuICAgIHRoaXMuYWRkVHJhbnNpdGlvbnNGb3JTdGF0ZU9uZU9yTW9yZVRhc2tzKCk7XG5cbiAgICAvLyBUcmFuc2l0aW9ucyBiYXNlZCBvbiBudW1iZXIgb2YgdGFza3MgYXNzaWduZWQgdG8gdXNlclxuICAgIHRoaXMuYWRkVHJhbnNpdGlvbnNGb3JTdGF0ZVRhc2tVbmFzc2lnbmVkKCk7XG4gICAgdGhpcy5hZGRUcmFuc2l0aW9uc0ZvclN0YXRlVGFza0Fzc2lnbmVkVG9Vc2VyKCk7XG4gICAgdGhpcy5hZGRUcmFuc2l0aW9uc0ZvclN0YXRlT25lVGFza0Fzc2lnbmVkVG9Vc2VyKCk7XG4gICAgdGhpcy5hZGRUcmFuc2l0aW9uc0ZvclN0YXRlTXVsdGlwbGVUYXNrc0Fzc2lnbmVkVG9Vc2VyKCk7XG4gIH1cblxuICBwdWJsaWMgc3RhcnRTdGF0ZU1hY2hpbmUoc3RhdGVNYWNoaW5lOiBTdGF0ZU1hY2hpbmUpOiB2b2lkIHtcbiAgICBzdGF0ZU1hY2hpbmUuc3RhcnQodGhpcy5zdGF0ZUNoZWNrRm9yTWF0Y2hpbmdUYXNrcyk7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbCBlbnRyeSBhY3Rpb24gZm9yIHN0YXRlIGNoZWNrIGZvciBtYXRjaGluZyB0YXNrcywgZGVjaWRlZCBiYXNlZCBvbiB0aGUgbnVtYmVyIG9mIHRhc2tzXG4gICAqL1xuICBwdWJsaWMgZW50cnlBY3Rpb25Gb3JTdGF0ZUNoZWNrRm9yTWF0Y2hpbmdUYXNrcyhzdGF0ZTogU3RhdGUsIGNvbnRleHQ6IEV2ZW50U3RhcnRTdGF0ZU1hY2hpbmVDb250ZXh0KTogdm9pZCB7XG4gICAgY29uc3QgdGFza0NvdW50ID0gY29udGV4dCAmJiBjb250ZXh0LnRhc2tzID8gY29udGV4dC50YXNrcy5sZW5ndGggOiAwO1xuXG4gICAgaWYgKHRhc2tDb3VudCA9PT0gMCkge1xuICAgICAgLy8gVHJpZ2dlciBzdGF0ZSBubyB0YXNrXG4gICAgICBzdGF0ZS50cmlnZ2VyKEV2ZW50U3RhcnRTdGF0ZXMuTk9fVEFTSyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFRyaWdnZXIgc3RhdGUgb25lIG9yIG1vcmUgdGFza3NcbiAgICAgIHN0YXRlLnRyaWdnZXIoRXZlbnRTdGFydFN0YXRlcy5PTkVfT1JfTU9SRV9UQVNLUyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGVudHJ5QWN0aW9uRm9yU3RhdGVOb1Rhc2soc3RhdGU6IFN0YXRlLCBjb250ZXh0OiBFdmVudFN0YXJ0U3RhdGVNYWNoaW5lQ29udGV4dCk6IHZvaWQge1xuICAgIC8vIFRyaWdnZXIgZmluYWwgc3RhdGUgdG8gY29tcGxldGUgcHJvY2Vzc2luZyBvZiBzdGF0ZSBtYWNoaW5lXG4gICAgc3RhdGUudHJpZ2dlcihFdmVudFN0YXJ0U3RhdGVzLkZJTkFMKTtcbiAgICAvLyBOYXZpZ2F0ZSB0byBubyB0YXNrcyBhdmFpbGFibGUgZXJyb3IgcGFnZVxuICAgIGNvbnRleHQucm91dGVyLm5hdmlnYXRlKFtgL2Nhc2VzL2Nhc2UtZGV0YWlscy8ke2NvbnRleHQuY2FzZUlkfS9uby10YXNrcy1hdmFpbGFibGVgXSwgeyByZWxhdGl2ZVRvOiBjb250ZXh0LnJvdXRlIH0pO1xuICB9XG5cbiAgcHVibGljIGVudHJ5QWN0aW9uRm9yU3RhdGVPbmVPck1vcmVUYXNrcyhzdGF0ZTogU3RhdGUsIGNvbnRleHQ6IEV2ZW50U3RhcnRTdGF0ZU1hY2hpbmVDb250ZXh0KTogdm9pZCB7XG4gICAgc3RhdGUudHJpZ2dlcihFdmVudFN0YXJ0U3RhdGVzLlRBU0tfQVNTSUdORURfVE9fVVNFUik7XG4gIH1cblxuICBwdWJsaWMgZW50cnlBY3Rpb25Gb3JTdGF0ZU11bHRpcGxlVGFza3Moc3RhdGU6IFN0YXRlLCBjb250ZXh0OiBFdmVudFN0YXJ0U3RhdGVNYWNoaW5lQ29udGV4dCk6IHZvaWQge1xuICAgIHN0YXRlLnRyaWdnZXIoRXZlbnRTdGFydFN0YXRlcy5NVUxUSVBMRV9UQVNLU19BU1NJR05FRF9UT19VU0VSKTtcbiAgfVxuXG4gIHB1YmxpYyBlbnRyeUFjdGlvbkZvclN0YXRlVGFza0Fzc2lnbmVkVG9Vc2VyKHN0YXRlOiBTdGF0ZSwgY29udGV4dDogRXZlbnRTdGFydFN0YXRlTWFjaGluZUNvbnRleHQpOiB2b2lkIHtcbiAgICAvLyBHZXQgbnVtYmVyIG9mIHRhc2tzIGFzc2lnbmVkIHRvIHVzZXJcbiAgICBjb25zdCB1c2VySW5mb1N0ciA9IGNvbnRleHQuc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLmdldEl0ZW0oJ3VzZXJEZXRhaWxzJyk7XG4gICAgY29uc3QgdXNlckluZm8gPSBKU09OLnBhcnNlKHVzZXJJbmZvU3RyKTtcbiAgICBjb25zdCB0YXNrc0Fzc2lnbmVkVG9Vc2VyID0gY29udGV4dC50YXNrcy5maWx0ZXIoeCA9PlxuICAgICAgICB4LnRhc2tfc3RhdGUgIT09ICd1bmFzc2lnbmVkJyAmJiB4LmFzc2lnbmVlID09PSB1c2VySW5mby5pZCB8fCB4LmFzc2lnbmVlID09PSB1c2VySW5mby51aWRcbiAgICAgICk7XG5cbiAgICAvLyBDaGVjayBpZiB1c2VyIGluaXRpYXRlZCB0aGUgZXZlbnQgZnJvbSB0YXNrIHRhYlxuICAgIGNvbnN0IGlzRXZlbnRJbml0aWF0ZWRGcm9tVGFza1RhYiA9IGNvbnRleHQudGFza0lkICE9PSB1bmRlZmluZWQgJiYgdGFza3NBc3NpZ25lZFRvVXNlci5maW5kSW5kZXgoeCA9PiB4LmlkID09PSBjb250ZXh0LnRhc2tJZCkgPiAtMTtcblxuICAgIGlmIChpc0V2ZW50SW5pdGlhdGVkRnJvbVRhc2tUYWIpIHtcbiAgICAgIC8vIFVzZXIgaW5pdGlhdGVkIGV2ZW50IGZyb20gdGFzayB0YWJcbiAgICAgIHN0YXRlLnRyaWdnZXIoRXZlbnRTdGFydFN0YXRlcy5PTkVfVEFTS19BU1NJR05FRF9UT19VU0VSKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gVXNlciBpbml0aWF0ZWQgZXZlbnQgZnJvbSBkcm9wZG93blxuICAgICAgc3dpdGNoICh0YXNrc0Fzc2lnbmVkVG9Vc2VyLmxlbmd0aCkge1xuICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgLy8gTm8gdGFza3MgYXNzaWduZWQgdG8gdXNlciwgdHJpZ2dlciBzdGF0ZSB0YXNrIHVuYXNzaWduZWRcbiAgICAgICAgICBzdGF0ZS50cmlnZ2VyKEV2ZW50U3RhcnRTdGF0ZXMuVEFTS19VTkFTU0lHTkVEKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAxOlxuICAgICAgICAgIC8vIE9uZSB0YXNrIGFzc2lnbmVkIHRvIHVzZXJcbiAgICAgICAgICBzdGF0ZS50cmlnZ2VyKEV2ZW50U3RhcnRTdGF0ZXMuT05FX1RBU0tfQVNTSUdORURfVE9fVVNFUik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgLy8gTXVsdGlwbGUgdGFza3MgYXNzaWduZWQgdG8gdXNlciwgdHJpZ2dlciBzdGF0ZSBtdWx0aXBsZSB0YXNrcyBhc3NpZ25lZCB0byB1c2VyXG4gICAgICAgICAgc3RhdGUudHJpZ2dlcihFdmVudFN0YXJ0U3RhdGVzLk1VTFRJUExFX1RBU0tTX0FTU0lHTkVEX1RPX1VTRVIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBlbnRyeUFjdGlvbkZvclN0YXRlVGFza1VuQXNzaWduZWQoc3RhdGU6IFN0YXRlLCBjb250ZXh0OiBFdmVudFN0YXJ0U3RhdGVNYWNoaW5lQ29udGV4dCk6IHZvaWQge1xuICAgIGxldCBuYXZpZ2F0aW9uVVJMID0gJyc7XG4gICAgbGV0IHRoZVF1ZXJ5UGFyYW1zOiBQYXJhbXMgPSB7fTtcblxuICAgIGlmIChjb250ZXh0LnRhc2tzWzBdLmFzc2lnbmVlKSB7XG4gICAgICAvLyBUYXNrIGlzIGFzc2lnbmVkIHRvIHNvbWUgb3RoZXIgdXNlciwgbmF2aWdhdGUgdG8gdGFzayBhc3NpZ25lZCBlcnJvciBwYWdlXG4gICAgICBuYXZpZ2F0aW9uVVJMID0gYC9jYXNlcy9jYXNlLWRldGFpbHMvJHtjb250ZXh0LmNhc2VJZH0vdGFzay1hc3NpZ25lZGA7XG4gICAgICB0aGVRdWVyeVBhcmFtcyA9IGNvbnRleHQudGFza3NbMF07XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFRhc2sgaXMgdW5hc3NpZ25lZCwgbmF2aWdhdGUgdG8gdGFzayB1bmFzc2lnbmVkIGVycm9yIHBhZ2VcbiAgICAgIG5hdmlnYXRpb25VUkwgPSBgL2Nhc2VzL2Nhc2UtZGV0YWlscy8ke2NvbnRleHQuY2FzZUlkfS90YXNrLXVuYXNzaWduZWRgO1xuICAgIH1cblxuICAgIC8vIFRyaWdnZXIgZmluYWwgc3RhdGUgdG8gY29tcGxldGUgcHJvY2Vzc2luZyBvZiBzdGF0ZSBtYWNoaW5lXG4gICAgc3RhdGUudHJpZ2dlcihFdmVudFN0YXJ0U3RhdGVzLkZJTkFMKTtcbiAgICAvLyBOYXZpZ2F0ZVxuICAgIGNvbnRleHQucm91dGVyLm5hdmlnYXRlKFtgJHtuYXZpZ2F0aW9uVVJMfWBdLCB7IHF1ZXJ5UGFyYW1zOiB0aGVRdWVyeVBhcmFtcywgcmVsYXRpdmVUbzogY29udGV4dC5yb3V0ZSB9KTtcbiAgfVxuXG4gIHB1YmxpYyBlbnRyeUFjdGlvbkZvclN0YXRlT25lVGFza0Fzc2lnbmVkVG9Vc2VyKHN0YXRlOiBTdGF0ZSwgY29udGV4dDogRXZlbnRTdGFydFN0YXRlTWFjaGluZUNvbnRleHQpOiB2b2lkIHtcbiAgICAvLyBUcmlnZ2VyIGZpbmFsIHN0YXRlIHRvIGNvbXBsZXRlIHByb2Nlc3Npbmcgb2Ygc3RhdGUgbWFjaGluZVxuICAgIHN0YXRlLnRyaWdnZXIoRXZlbnRTdGFydFN0YXRlcy5GSU5BTCk7XG5cbiAgICAvLyBHZXQgdGFzayBhc3NpZ25lZCB0byB1c2VyXG4gICAgbGV0IHRhc2sgPSBjb250ZXh0LnRhc2tzLmZpbmQoeCA9PiB4LmlkID09PSBjb250ZXh0LnRhc2tJZCk7XG4gICAgaWYgKCF0YXNrKSB7XG4gICAgICB0YXNrID0gY29udGV4dC50YXNrc1swXTtcbiAgICB9XG5cbiAgICBjb25zdCB0YXNrU3RyPSBKU09OLnN0cmluZ2lmeSh0YXNrKTtcbiAgICBjb25zb2xlLmxvZygnZW50cnlBY3Rpb25Gb3JTdGF0ZU9uZVRhc2tBc3NpZ25lZFRvVXNlcjogc2V0dGluZyBjbGllbnQgY29udGV4dCB0YXNrX2RhdGEgdG8gJyArIHRhc2tTdHIpO1xuICAgIC8vIFN0b3JlIHRhc2sgdG8gc2Vzc2lvblxuICAgIGNvbnN0IGNsaWVudENvbnRleHQgPSB7XG4gICAgICBjbGllbnRfY29udGV4dDoge1xuICAgICAgICB1c2VyX3Rhc2s6IHtcbiAgICAgICAgICB0YXNrX2RhdGE6IHRhc2ssXG4gICAgICAgICAgY29tcGxldGVfdGFzazogdHJ1ZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgICBjb250ZXh0LnNlc3Npb25TdG9yYWdlU2VydmljZS5zZXRJdGVtKCdjbGllbnRDb250ZXh0JywgSlNPTi5zdHJpbmdpZnkoY2xpZW50Q29udGV4dCkpO1xuICAgIC8vIEFsbG93IHVzZXIgdG8gcGVyZm9ybSB0aGUgZXZlbnRcbiAgICBjb250ZXh0LnJvdXRlci5uYXZpZ2F0ZShbYC9jYXNlcy9jYXNlLWRldGFpbHMvJHtjb250ZXh0LmNhc2VJZH0vdHJpZ2dlci8ke2NvbnRleHQuZXZlbnRJZH1gXSxcbiAgICAgIHsgcmVsYXRpdmVUbzogY29udGV4dC5yb3V0ZSB9KTtcbiAgfVxuXG4gIHB1YmxpYyBlbnRyeUFjdGlvbkZvclN0YXRlTXVsdGlwbGVUYXNrc0Fzc2lnbmVkVG9Vc2VyKHN0YXRlOiBTdGF0ZSwgY29udGV4dDogRXZlbnRTdGFydFN0YXRlTWFjaGluZUNvbnRleHQpOiB2b2lkIHtcbiAgICAvLyBUcmlnZ2VyIGZpbmFsIHN0YXRlIHRvIGNvbXBsZXRlIHByb2Nlc3Npbmcgb2Ygc3RhdGUgbWFjaGluZVxuICAgIHN0YXRlLnRyaWdnZXIoRXZlbnRTdGFydFN0YXRlcy5GSU5BTCk7XG4gICAgLy8gTmF2aWdhdGUgdG8gbXVsdGlwbGUgdGFza3MgZXhpc3QgZXJyb3IgcGFnZVxuICAgIGNvbnRleHQucm91dGVyLm5hdmlnYXRlKFtgL2Nhc2VzL2Nhc2UtZGV0YWlscy8ke2NvbnRleHQuY2FzZUlkfS9tdWx0aXBsZS10YXNrcy1leGlzdGBdLCB7IHJlbGF0aXZlVG86IGNvbnRleHQucm91dGUgfSk7XG4gIH1cblxuICBwdWJsaWMgZmluYWxBY3Rpb24oc3RhdGU6IFN0YXRlKTogdm9pZCB7XG4gICAgLy8gRmluYWwgYWN0aW9ucyBjYW4gYmUgcGVyZm9ybWVkIGhlcmUsIHRoZSBzdGF0ZSBtYWNoaW5lIGZpbmlzaGVkIHJ1bm5pbmdcbiAgICAvLyBjb25zb2xlLmxvZygnRklOQUwnLCBzdGF0ZSk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgcHVibGljIGFkZFRyYW5zaXRpb25zRm9yU3RhdGVDaGVja0Zvck1hdGNoaW5nVGFza3MoKTogdm9pZCB7XG4gICAgLy8gTm8gdGFza3NcbiAgICB0aGlzLnN0YXRlQ2hlY2tGb3JNYXRjaGluZ1Rhc2tzLmFkZFRyYW5zaXRpb24oXG4gICAgICBFdmVudFN0YXJ0U3RhdGVzLk5PX1RBU0ssXG4gICAgICB0aGlzLnN0YXRlTm9UYXNrXG4gICAgKTtcbiAgICAvLyBPbmUgdGFza1xuICAgIHRoaXMuc3RhdGVDaGVja0Zvck1hdGNoaW5nVGFza3MuYWRkVHJhbnNpdGlvbihcbiAgICAgIEV2ZW50U3RhcnRTdGF0ZXMuT05FX09SX01PUkVfVEFTS1MsXG4gICAgICB0aGlzLnN0YXRlT25lT3JNb3JlVGFza3NcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGFkZFRyYW5zaXRpb25zRm9yU3RhdGVOb1Rhc2soKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0ZU5vVGFzay5hZGRUcmFuc2l0aW9uKFxuICAgICAgRXZlbnRTdGFydFN0YXRlcy5GSU5BTCxcbiAgICAgIHRoaXMuc3RhdGVGaW5hbFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgYWRkVHJhbnNpdGlvbnNGb3JTdGF0ZU9uZU9yTW9yZVRhc2tzKCk6IHZvaWQge1xuICAgIHRoaXMuc3RhdGVPbmVPck1vcmVUYXNrcy5hZGRUcmFuc2l0aW9uKFxuICAgICAgRXZlbnRTdGFydFN0YXRlcy5UQVNLX0FTU0lHTkVEX1RPX1VTRVIsXG4gICAgICB0aGlzLnN0YXRlVGFza0Fzc2lnbmVkVG9Vc2VyXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRUcmFuc2l0aW9uc0ZvclN0YXRlVGFza1VuYXNzaWduZWQoKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0ZVRhc2tVbmFzc2lnbmVkLmFkZFRyYW5zaXRpb24oXG4gICAgICBFdmVudFN0YXJ0U3RhdGVzLkZJTkFMLFxuICAgICAgdGhpcy5zdGF0ZUZpbmFsXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRUcmFuc2l0aW9uc0ZvclN0YXRlVGFza0Fzc2lnbmVkVG9Vc2VyKCk6IHZvaWQge1xuICAgIHRoaXMuc3RhdGVUYXNrQXNzaWduZWRUb1VzZXIuYWRkVHJhbnNpdGlvbihcbiAgICAgIEV2ZW50U3RhcnRTdGF0ZXMuT05FX1RBU0tfQVNTSUdORURfVE9fVVNFUixcbiAgICAgIHRoaXMuc3RhdGVPbmVUYXNrQXNzaWduZWRUb1VzZXJcbiAgICApO1xuICAgIHRoaXMuc3RhdGVUYXNrQXNzaWduZWRUb1VzZXIuYWRkVHJhbnNpdGlvbihcbiAgICAgIEV2ZW50U3RhcnRTdGF0ZXMuVEFTS19VTkFTU0lHTkVELFxuICAgICAgdGhpcy5zdGF0ZVRhc2tVbmFzc2lnbmVkXG4gICAgKTtcbiAgICB0aGlzLnN0YXRlVGFza0Fzc2lnbmVkVG9Vc2VyLmFkZFRyYW5zaXRpb24oXG4gICAgICBFdmVudFN0YXJ0U3RhdGVzLk1VTFRJUExFX1RBU0tTX0FTU0lHTkVEX1RPX1VTRVIsXG4gICAgICB0aGlzLnN0YXRlTXVsdGlwbGVUYXNrc0Fzc2lnbmVkVG9Vc2VyXG4gICAgKTtcbiAgICB0aGlzLnN0YXRlVGFza0Fzc2lnbmVkVG9Vc2VyLmFkZFRyYW5zaXRpb24oXG4gICAgICBFdmVudFN0YXJ0U3RhdGVzLkZJTkFMLFxuICAgICAgdGhpcy5zdGF0ZUZpbmFsXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRUcmFuc2l0aW9uc0ZvclN0YXRlT25lVGFza0Fzc2lnbmVkVG9Vc2VyKCk6IHZvaWQge1xuICAgIHRoaXMuc3RhdGVPbmVUYXNrQXNzaWduZWRUb1VzZXIuYWRkVHJhbnNpdGlvbihcbiAgICAgIEV2ZW50U3RhcnRTdGF0ZXMuRklOQUwsXG4gICAgICB0aGlzLnN0YXRlRmluYWxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGFkZFRyYW5zaXRpb25zRm9yU3RhdGVNdWx0aXBsZVRhc2tzQXNzaWduZWRUb1VzZXIoKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0ZU11bHRpcGxlVGFza3NBc3NpZ25lZFRvVXNlci5hZGRUcmFuc2l0aW9uKFxuICAgICAgRXZlbnRTdGFydFN0YXRlcy5GSU5BTCxcbiAgICAgIHRoaXMuc3RhdGVGaW5hbFxuICAgICk7XG4gIH1cbn1cbiJdfQ==
201
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtc3RhcnQtc3RhdGUtbWFjaGluZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL2V2ZW50LXN0YXJ0L3NlcnZpY2VzL2V2ZW50LXN0YXJ0LXN0YXRlLW1hY2hpbmUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBUyxZQUFZLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDakQsT0FBTyxFQUFpQyxnQkFBZ0IsRUFBRSxNQUFNLFdBQVcsQ0FBQzs7QUFJNUUsTUFBTSxtQkFBbUIsR0FBRyxxQkFBcUIsQ0FBQztBQUdsRCxNQUFNLE9BQU8sNkJBQTZCO0lBQ2pDLDBCQUEwQixDQUFRO0lBQ2xDLFdBQVcsQ0FBUTtJQUNuQixZQUFZLENBQVE7SUFDcEIsbUJBQW1CLENBQVE7SUFDM0IsdUJBQXVCLENBQVE7SUFDL0IsMEJBQTBCLENBQVE7SUFDbEMsZ0NBQWdDLENBQVE7SUFDeEMsbUJBQW1CLENBQVE7SUFDM0IsVUFBVSxDQUFRO0lBRWxCLHNCQUFzQixDQUFDLE9BQXNDO1FBQ2xFLE9BQU8sSUFBSSxZQUFZLENBQUMsbUJBQW1CLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVNLFlBQVksQ0FBQyxZQUEwQjtRQUM1QyxnQkFBZ0I7UUFDaEIsSUFBSSxDQUFDLDBCQUEwQixHQUFHLFlBQVksQ0FBQyxXQUFXLENBQ3hELGdCQUFnQixDQUFDLHdCQUF3QixFQUN6QyxLQUFLLEVBQ0wsSUFBSSxDQUFDLHdDQUF3QyxDQUM5QyxDQUFDO1FBRUYsNENBQTRDO1FBQzVDLElBQUksQ0FBQyxXQUFXLEdBQUcsWUFBWSxDQUFDLFdBQVcsQ0FDekMsZ0JBQWdCLENBQUMsT0FBTyxF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Q0FBQyxVQUFVLENBQ2hCLENBQUM7SUFDSixDQUFDO3VGQTVSVSw2QkFBNkI7Z0VBQTdCLDZCQUE2QixXQUE3Qiw2QkFBNkI7O2lGQUE3Qiw2QkFBNkI7Y0FEekMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBTdGF0ZSwgU3RhdGVNYWNoaW5lIH0gZnJvbSAnQGVkaXVtL2ZzbSc7XG5pbXBvcnQgeyBFdmVudFN0YXJ0U3RhdGVNYWNoaW5lQ29udGV4dCwgRXZlbnRTdGFydFN0YXRlcyB9IGZyb20gJy4uL21vZGVscyc7XG5pbXBvcnQgeyBUYXNrRXZlbnRDb21wbGV0aW9uSW5mbyB9IGZyb20gJy4uLy4uLy4uL2RvbWFpbi93b3JrLWFsbG9jYXRpb24vVGFzayc7XG5pbXBvcnQgeyBVc2VySW5mbyB9IGZyb20gJy4uLy4uLy4uL2RvbWFpbi91c2VyL3VzZXItaW5mby5tb2RlbCc7XG5cbmNvbnN0IEVWRU5UX1NUQVRFX01BQ0hJTkUgPSAnRVZFTlQgU1RBVEUgTUFDSElORSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBFdmVudFN0YXJ0U3RhdGVNYWNoaW5lU2VydmljZSB7XG4gIHB1YmxpYyBzdGF0ZUNoZWNrRm9yTWF0Y2hpbmdUYXNrczogU3RhdGU7XG4gIHB1YmxpYyBzdGF0ZU5vVGFzazogU3RhdGU7XG4gIHB1YmxpYyBzdGF0ZU9uZVRhc2s6IFN0YXRlO1xuICBwdWJsaWMgc3RhdGVPbmVPck1vcmVUYXNrczogU3RhdGU7XG4gIHB1YmxpYyBzdGF0ZVRhc2tBc3NpZ25lZFRvVXNlcjogU3RhdGU7XG4gIHB1YmxpYyBzdGF0ZU9uZVRhc2tBc3NpZ25lZFRvVXNlcjogU3RhdGU7XG4gIHB1YmxpYyBzdGF0ZU11bHRpcGxlVGFza3NBc3NpZ25lZFRvVXNlcjogU3RhdGU7XG4gIHB1YmxpYyBzdGF0ZVRhc2tVbmFzc2lnbmVkOiBTdGF0ZTtcbiAgcHVibGljIHN0YXRlRmluYWw6IFN0YXRlO1xuXG4gIHB1YmxpYyBpbml0aWFsaXNlU3RhdGVNYWNoaW5lKGNvbnRleHQ6IEV2ZW50U3RhcnRTdGF0ZU1hY2hpbmVDb250ZXh0KTogU3RhdGVNYWNoaW5lIHtcbiAgICByZXR1cm4gbmV3IFN0YXRlTWFjaGluZShFVkVOVF9TVEFURV9NQUNISU5FLCBjb250ZXh0KTtcbiAgfVxuXG4gIHB1YmxpYyBjcmVhdGVTdGF0ZXMoc3RhdGVNYWNoaW5lOiBTdGF0ZU1hY2hpbmUpOiB2b2lkIHtcbiAgICAvLyBJbml0aWFsIHN0YXRlXG4gICAgdGhpcy5zdGF0ZUNoZWNrRm9yTWF0Y2hpbmdUYXNrcyA9IHN0YXRlTWFjaGluZS5jcmVhdGVTdGF0ZShcbiAgICAgIEV2ZW50U3RhcnRTdGF0ZXMuQ0hFQ0tfRk9SX01BVENISU5HX1RBU0tTLFxuICAgICAgZmFsc2UsXG4gICAgICB0aGlzLmVudHJ5QWN0aW9uRm9yU3RhdGVDaGVja0Zvck1hdGNoaW5nVGFza3NcbiAgICApO1xuXG4gICAgLy8gU3RhdGVzIGJhc2VkIG9uIG51bWJlciBvZiB0YXNrcyBhdmFpbGFibGVcbiAgICB0aGlzLnN0YXRlTm9UYXNrID0gc3RhdGVNYWNoaW5lLmNyZWF0ZVN0YXRlKFxuICAgICAgRXZlbnRTdGFydFN0YXRlcy5OT19UQVNLLFxuICAgICAgZmFsc2UsXG4gICAgICB0aGlzLmVudHJ5QWN0aW9uRm9yU3RhdGVOb1Rhc2tcbiAgICApO1xuICAgIHRoaXMuc3RhdGVPbmVPck1vcmVUYXNrcyA9IHN0YXRlTWFjaGluZS5jcmVhdGVTdGF0ZShcbiAgICAgIEV2ZW50U3RhcnRTdGF0ZXMuT05FX09SX01PUkVfVEFTS1MsXG4gICAgICBmYWxzZSxcbiAgICAgIHRoaXMuZW50cnlBY3Rpb25Gb3JTdGF0ZU9uZU9yTW9yZVRhc2tzXG4gICAgKTtcblxuICAgIC8vIFN0YXRlcyBiYXNlZCBvbiBudW1iZXIgb2YgdGFza3MgYXNzaWduZWQgdG8gdXNlclxuICAgIHRoaXMuc3RhdGVUYXNrVW5hc3NpZ25lZCA9IHN0YXRlTWFjaGluZS5jcmVhdGVTdGF0ZShcbiAgICAgIEV2ZW50U3RhcnRTdGF0ZXMuVEFTS19VTkFTU0lHTkVELFxuICAgICAgZmFsc2UsXG4gICAgICB0aGlzLmVudHJ5QWN0aW9uRm9yU3RhdGVUYXNrVW5Bc3NpZ25lZFxuICAgICk7XG4gICAgdGhpcy5zdGF0ZVRhc2tBc3NpZ25lZFRvVXNlciA9IHN0YXRlTWFjaGluZS5jcmVhdGVTdGF0ZShcbiAgICAgIEV2ZW50U3RhcnRTdGF0ZXMuVEFTS19BU1NJR05FRF9UT19VU0VSLFxuICAgICAgZmFsc2UsXG4gICAgICB0aGlzLmVudHJ5QWN0aW9uRm9yU3RhdGVUYXNrQXNzaWduZWRUb1VzZXJcbiAgICApO1xuICAgIHRoaXMuc3RhdGVPbmVUYXNrQXNzaWduZWRUb1VzZXIgPSBzdGF0ZU1hY2hpbmUuY3JlYXRlU3RhdGUoXG4gICAgICBFdmVudFN0YXJ0U3RhdGVzLk9ORV9UQVNLX0FTU0lHTkVEX1RPX1VTRVIsXG4gICAgICBmYWxzZSxcbiAgICAgIHRoaXMuZW50cnlBY3Rpb25Gb3JTdGF0ZU9uZVRhc2tBc3NpZ25lZFRvVXNlclxuICAgICk7XG4gICAgdGhpcy5zdGF0ZU11bHRpcGxlVGFza3NBc3NpZ25lZFRvVXNlciA9IHN0YXRlTWFjaGluZS5jcmVhdGVTdGF0ZShcbiAgICAgIEV2ZW50U3RhcnRTdGF0ZXMuTVVMVElQTEVfVEFTS1NfQVNTSUdORURfVE9fVVNFUixcbiAgICAgIGZhbHNlLFxuICAgICAgdGhpcy5lbnRyeUFjdGlvbkZvclN0YXRlTXVsdGlwbGVUYXNrc0Fzc2lnbmVkVG9Vc2VyXG4gICAgKTtcblxuICAgIC8vIENyZWF0ZSBmaW5hbCBzdGF0ZSwgdGhlIHNlY29uZCBwYXJhbSBpc0NvbXBsZXRlIGlzIHNldCB0byB0cnVlIHRvIG1ha2Ugc3VyZSBzdGF0ZSBtYWNoaW5lIGZpbmlzaGVkIHJ1bm5pbmdcbiAgICB0aGlzLnN0YXRlRmluYWwgPSBzdGF0ZU1hY2hpbmUuY3JlYXRlU3RhdGUoXG4gICAgICBFdmVudFN0YXJ0U3RhdGVzLkZJTkFMLFxuICAgICAgdHJ1ZSxcbiAgICAgIHRoaXMuZmluYWxBY3Rpb25cbiAgICApO1xuICB9XG5cbiAgcHVibGljIGFkZFRyYW5zaXRpb25zKCk6IHZvaWQge1xuICAgIC8vIEluaXRpYWwgdHJhbnNpdGlvblxuICAgIHRoaXMuYWRkVHJhbnNpdGlvbnNGb3JTdGF0ZUNoZWNrRm9yTWF0Y2hpbmdUYXNrcygpO1xuXG4gICAgLy8gVHJhbnNpdGlvbnMgYmFzZWQgb24gbnVtYmVyIG9mIHRhc2tzIGF2YWlsYWJsZVxuICAgIHRoaXMuYWRkVHJhbnNpdGlvbnNGb3JTdGF0ZU5vVGFzaygpO1xuICAgIHRoaXMuYWRkVHJhbnNpdGlvbnNGb3JTdGF0ZU9uZU9yTW9yZVRhc2tzKCk7XG5cbiAgICAvLyBUcmFuc2l0aW9ucyBiYXNlZCBvbiBudW1iZXIgb2YgdGFza3MgYXNzaWduZWQgdG8gdXNlclxuICAgIHRoaXMuYWRkVHJhbnNpdGlvbnNGb3JTdGF0ZVRhc2tVbmFzc2lnbmVkKCk7XG4gICAgdGhpcy5hZGRUcmFuc2l0aW9uc0ZvclN0YXRlVGFza0Fzc2lnbmVkVG9Vc2VyKCk7XG4gICAgdGhpcy5hZGRUcmFuc2l0aW9uc0ZvclN0YXRlT25lVGFza0Fzc2lnbmVkVG9Vc2VyKCk7XG4gICAgdGhpcy5hZGRUcmFuc2l0aW9uc0ZvclN0YXRlTXVsdGlwbGVUYXNrc0Fzc2lnbmVkVG9Vc2VyKCk7XG4gIH1cblxuICBwdWJsaWMgc3RhcnRTdGF0ZU1hY2hpbmUoc3RhdGVNYWNoaW5lOiBTdGF0ZU1hY2hpbmUpOiB2b2lkIHtcbiAgICBzdGF0ZU1hY2hpbmUuc3RhcnQodGhpcy5zdGF0ZUNoZWNrRm9yTWF0Y2hpbmdUYXNrcyk7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbCBlbnRyeSBhY3Rpb24gZm9yIHN0YXRlIGNoZWNrIGZvciBtYXRjaGluZyB0YXNrcywgZGVjaWRlZCBiYXNlZCBvbiB0aGUgbnVtYmVyIG9mIHRhc2tzXG4gICAqL1xuICBwdWJsaWMgZW50cnlBY3Rpb25Gb3JTdGF0ZUNoZWNrRm9yTWF0Y2hpbmdUYXNrcyhzdGF0ZTogU3RhdGUsIGNvbnRleHQ6IEV2ZW50U3RhcnRTdGF0ZU1hY2hpbmVDb250ZXh0KTogdm9pZCB7XG4gICAgY29uc3QgdGFza0NvdW50ID0gY29udGV4dCAmJiBjb250ZXh0LnRhc2tzID8gY29udGV4dC50YXNrcy5sZW5ndGggOiAwO1xuXG4gICAgaWYgKHRhc2tDb3VudCA9PT0gMCkge1xuICAgICAgLy8gVHJpZ2dlciBzdGF0ZSBubyB0YXNrXG4gICAgICBzdGF0ZS50cmlnZ2VyKEV2ZW50U3RhcnRTdGF0ZXMuTk9fVEFTSyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFRyaWdnZXIgc3RhdGUgb25lIG9yIG1vcmUgdGFza3NcbiAgICAgIHN0YXRlLnRyaWdnZXIoRXZlbnRTdGFydFN0YXRlcy5PTkVfT1JfTU9SRV9UQVNLUyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGVudHJ5QWN0aW9uRm9yU3RhdGVOb1Rhc2soc3RhdGU6IFN0YXRlLCBjb250ZXh0OiBFdmVudFN0YXJ0U3RhdGVNYWNoaW5lQ29udGV4dCk6IHZvaWQge1xuICAgIC8vIFRyaWdnZXIgZmluYWwgc3RhdGUgdG8gY29tcGxldGUgcHJvY2Vzc2luZyBvZiBzdGF0ZSBtYWNoaW5lXG4gICAgc3RhdGUudHJpZ2dlcihFdmVudFN0YXJ0U3RhdGVzLkZJTkFMKTtcbiAgICAvLyBOYXZpZ2F0ZSB0byBubyB0YXNrcyBhdmFpbGFibGUgZXJyb3IgcGFnZVxuICAgIGNvbnRleHQucm91dGVyLm5hdmlnYXRlKFtgL2Nhc2VzL2Nhc2UtZGV0YWlscy8ke2NvbnRleHQuY2FzZUlkfS9uby10YXNrcy1hdmFpbGFibGVgXSwgeyByZWxhdGl2ZVRvOiBjb250ZXh0LnJvdXRlIH0pO1xuICB9XG5cbiAgcHVibGljIGVudHJ5QWN0aW9uRm9yU3RhdGVPbmVPck1vcmVUYXNrcyhzdGF0ZTogU3RhdGUsIGNvbnRleHQ6IEV2ZW50U3RhcnRTdGF0ZU1hY2hpbmVDb250ZXh0KTogdm9pZCB7XG4gICAgc3RhdGUudHJpZ2dlcihFdmVudFN0YXJ0U3RhdGVzLlRBU0tfQVNTSUdORURfVE9fVVNFUik7XG4gIH1cblxuICBwdWJsaWMgZW50cnlBY3Rpb25Gb3JTdGF0ZU11bHRpcGxlVGFza3Moc3RhdGU6IFN0YXRlLCBjb250ZXh0OiBFdmVudFN0YXJ0U3RhdGVNYWNoaW5lQ29udGV4dCk6IHZvaWQge1xuICAgIHN0YXRlLnRyaWdnZXIoRXZlbnRTdGFydFN0YXRlcy5NVUxUSVBMRV9UQVNLU19BU1NJR05FRF9UT19VU0VSKTtcbiAgfVxuXG4gIHB1YmxpYyBlbnRyeUFjdGlvbkZvclN0YXRlVGFza0Fzc2lnbmVkVG9Vc2VyKHN0YXRlOiBTdGF0ZSwgY29udGV4dDogRXZlbnRTdGFydFN0YXRlTWFjaGluZUNvbnRleHQpOiB2b2lkIHtcbiAgICAvLyBHZXQgbnVtYmVyIG9mIHRhc2tzIGFzc2lnbmVkIHRvIHVzZXJcbiAgICBjb25zdCB1c2VySW5mb1N0ciA9IGNvbnRleHQuc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLmdldEl0ZW0oJ3VzZXJEZXRhaWxzJyk7XG4gICAgY29uc3QgdXNlckluZm8gPSBKU09OLnBhcnNlKHVzZXJJbmZvU3RyKTtcbiAgICBjb25zdCB0YXNrc0Fzc2lnbmVkVG9Vc2VyID0gY29udGV4dC50YXNrcy5maWx0ZXIoeCA9PlxuICAgICAgICB4LnRhc2tfc3RhdGUgIT09ICd1bmFzc2lnbmVkJyAmJiB4LmFzc2lnbmVlID09PSB1c2VySW5mby5pZCB8fCB4LmFzc2lnbmVlID09PSB1c2VySW5mby51aWRcbiAgICAgICk7XG5cbiAgICAvLyBDaGVjayBpZiB1c2VyIGluaXRpYXRlZCB0aGUgZXZlbnQgZnJvbSB0YXNrIHRhYlxuICAgIGNvbnN0IGlzRXZlbnRJbml0aWF0ZWRGcm9tVGFza1RhYiA9IGNvbnRleHQudGFza0lkICE9PSB1bmRlZmluZWQgJiYgdGFza3NBc3NpZ25lZFRvVXNlci5maW5kSW5kZXgoeCA9PiB4LmlkID09PSBjb250ZXh0LnRhc2tJZCkgPiAtMTtcblxuICAgIGlmIChpc0V2ZW50SW5pdGlhdGVkRnJvbVRhc2tUYWIpIHtcbiAgICAgIC8vIFVzZXIgaW5pdGlhdGVkIGV2ZW50IGZyb20gdGFzayB0YWJcbiAgICAgIHN0YXRlLnRyaWdnZXIoRXZlbnRTdGFydFN0YXRlcy5PTkVfVEFTS19BU1NJR05FRF9UT19VU0VSKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gVXNlciBpbml0aWF0ZWQgZXZlbnQgZnJvbSBkcm9wZG93blxuICAgICAgc3dpdGNoICh0YXNrc0Fzc2lnbmVkVG9Vc2VyLmxlbmd0aCkge1xuICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgLy8gTm8gdGFza3MgYXNzaWduZWQgdG8gdXNlciwgdHJpZ2dlciBzdGF0ZSB0YXNrIHVuYXNzaWduZWRcbiAgICAgICAgICBzdGF0ZS50cmlnZ2VyKEV2ZW50U3RhcnRTdGF0ZXMuVEFTS19VTkFTU0lHTkVEKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAxOlxuICAgICAgICAgIC8vIE9uZSB0YXNrIGFzc2lnbmVkIHRvIHVzZXJcbiAgICAgICAgICBzdGF0ZS50cmlnZ2VyKEV2ZW50U3RhcnRTdGF0ZXMuT05FX1RBU0tfQVNTSUdORURfVE9fVVNFUik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgLy8gTXVsdGlwbGUgdGFza3MgYXNzaWduZWQgdG8gdXNlciwgdHJpZ2dlciBzdGF0ZSBtdWx0aXBsZSB0YXNrcyBhc3NpZ25lZCB0byB1c2VyXG4gICAgICAgICAgc3RhdGUudHJpZ2dlcihFdmVudFN0YXJ0U3RhdGVzLk1VTFRJUExFX1RBU0tTX0FTU0lHTkVEX1RPX1VTRVIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBlbnRyeUFjdGlvbkZvclN0YXRlVGFza1VuQXNzaWduZWQoc3RhdGU6IFN0YXRlLCBjb250ZXh0OiBFdmVudFN0YXJ0U3RhdGVNYWNoaW5lQ29udGV4dCk6IHZvaWQge1xuICAgIGxldCBuYXZpZ2F0aW9uVVJMID0gJyc7XG4gICAgbGV0IHRoZVF1ZXJ5UGFyYW1zOiBQYXJhbXMgPSB7fTtcblxuICAgIGlmIChjb250ZXh0LnRhc2tzWzBdLmFzc2lnbmVlKSB7XG4gICAgICAvLyBUYXNrIGlzIGFzc2lnbmVkIHRvIHNvbWUgb3RoZXIgdXNlciwgbmF2aWdhdGUgdG8gdGFzayBhc3NpZ25lZCBlcnJvciBwYWdlXG4gICAgICBuYXZpZ2F0aW9uVVJMID0gYC9jYXNlcy9jYXNlLWRldGFpbHMvJHtjb250ZXh0LmNhc2VJZH0vdGFzay1hc3NpZ25lZGA7XG4gICAgICB0aGVRdWVyeVBhcmFtcyA9IGNvbnRleHQudGFza3NbMF07XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFRhc2sgaXMgdW5hc3NpZ25lZCwgbmF2aWdhdGUgdG8gdGFzayB1bmFzc2lnbmVkIGVycm9yIHBhZ2VcbiAgICAgIG5hdmlnYXRpb25VUkwgPSBgL2Nhc2VzL2Nhc2UtZGV0YWlscy8ke2NvbnRleHQuY2FzZUlkfS90YXNrLXVuYXNzaWduZWRgO1xuICAgIH1cblxuICAgIC8vIFRyaWdnZXIgZmluYWwgc3RhdGUgdG8gY29tcGxldGUgcHJvY2Vzc2luZyBvZiBzdGF0ZSBtYWNoaW5lXG4gICAgc3RhdGUudHJpZ2dlcihFdmVudFN0YXJ0U3RhdGVzLkZJTkFMKTtcbiAgICAvLyBOYXZpZ2F0ZVxuICAgIGNvbnRleHQucm91dGVyLm5hdmlnYXRlKFtgJHtuYXZpZ2F0aW9uVVJMfWBdLCB7IHF1ZXJ5UGFyYW1zOiB0aGVRdWVyeVBhcmFtcywgcmVsYXRpdmVUbzogY29udGV4dC5yb3V0ZSB9KTtcbiAgfVxuXG4gIHB1YmxpYyBlbnRyeUFjdGlvbkZvclN0YXRlT25lVGFza0Fzc2lnbmVkVG9Vc2VyKHN0YXRlOiBTdGF0ZSwgY29udGV4dDogRXZlbnRTdGFydFN0YXRlTWFjaGluZUNvbnRleHQpOiB2b2lkIHtcbiAgICAvLyBUcmlnZ2VyIGZpbmFsIHN0YXRlIHRvIGNvbXBsZXRlIHByb2Nlc3Npbmcgb2Ygc3RhdGUgbWFjaGluZVxuICAgIHN0YXRlLnRyaWdnZXIoRXZlbnRTdGFydFN0YXRlcy5GSU5BTCk7XG5cbiAgICAvLyBHZXQgdGFzayBhc3NpZ25lZCB0byB1c2VyXG4gICAgbGV0IHRhc2sgPSBjb250ZXh0LnRhc2tzLmZpbmQoeCA9PiB4LmlkID09PSBjb250ZXh0LnRhc2tJZCk7XG4gICAgaWYgKCF0YXNrKSB7XG4gICAgICB0YXNrID0gY29udGV4dC50YXNrc1swXTtcbiAgICB9XG5cbiAgICBjb25zdCB0YXNrU3RyPSBKU09OLnN0cmluZ2lmeSh0YXNrKTtcbiAgICBjb25zb2xlLmxvZygnZW50cnlBY3Rpb25Gb3JTdGF0ZU9uZVRhc2tBc3NpZ25lZFRvVXNlcjogc2V0dGluZyBjbGllbnQgY29udGV4dCB0YXNrX2RhdGEgdG8gJyArIHRhc2tTdHIpO1xuICAgIC8vIFN0b3JlIHRhc2sgdG8gc2Vzc2lvblxuICAgIGNvbnN0IGNsaWVudENvbnRleHQgPSB7XG4gICAgICBjbGllbnRfY29udGV4dDoge1xuICAgICAgICB1c2VyX3Rhc2s6IHtcbiAgICAgICAgICB0YXNrX2RhdGE6IHRhc2ssXG4gICAgICAgICAgY29tcGxldGVfdGFzazogdHJ1ZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgICBjb250ZXh0LnNlc3Npb25TdG9yYWdlU2VydmljZS5zZXRJdGVtKCdjbGllbnRDb250ZXh0JywgSlNPTi5zdHJpbmdpZnkoY2xpZW50Q29udGV4dCkpO1xuICAgIGxldCB1c2VySW5mbzogVXNlckluZm87XG4gICAgY29uc3QgdXNlckluZm9TdHIgPSBjb250ZXh0LnNlc3Npb25TdG9yYWdlU2VydmljZS5nZXRJdGVtKCd1c2VyRGV0YWlscycpO1xuICAgIGlmICh1c2VySW5mb1N0cikge1xuICAgICAgdXNlckluZm8gPSBKU09OLnBhcnNlKHVzZXJJbmZvU3RyKTtcbiAgICB9XG4gICAgLy8gU3RvcmUgdGFzayB0byBzZXNzaW9uXG4gICAgY29uc3QgdGFza0V2ZW50Q29tcGxldGlvbkluZm86IFRhc2tFdmVudENvbXBsZXRpb25JbmZvID0ge1xuICAgICAgY2FzZUlkOiBjb250ZXh0LmNhc2VJZCxcbiAgICAgIGV2ZW50SWQ6IGNvbnRleHQuZXZlbnRJZCxcbiAgICAgIHVzZXJJZDogdXNlckluZm8uaWQgPyB1c2VySW5mby5pZCA6IHVzZXJJbmZvLnVpZCxcbiAgICAgIHRhc2tJZDogdGFzay5pZCxcbiAgICAgIGNyZWF0ZWRUaW1lc3RhbXA6IERhdGUubm93KCl9O1xuICAgIGNvbnRleHQuc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLnNldEl0ZW0oJ3Rhc2tFdmVudENvbXBsZXRpb25JbmZvJywgSlNPTi5zdHJpbmdpZnkodGFza0V2ZW50Q29tcGxldGlvbkluZm8pKTtcbiAgICAvLyBBbGxvdyB1c2VyIHRvIHBlcmZvcm0gdGhlIGV2ZW50XG4gICAgY29udGV4dC5yb3V0ZXIubmF2aWdhdGUoW2AvY2FzZXMvY2FzZS1kZXRhaWxzLyR7Y29udGV4dC5jYXNlSWR9L3RyaWdnZXIvJHtjb250ZXh0LmV2ZW50SWR9YF0sXG4gICAgICB7IHJlbGF0aXZlVG86IGNvbnRleHQucm91dGUgfSk7XG4gIH1cblxuICBwdWJsaWMgZW50cnlBY3Rpb25Gb3JTdGF0ZU11bHRpcGxlVGFza3NBc3NpZ25lZFRvVXNlcihzdGF0ZTogU3RhdGUsIGNvbnRleHQ6IEV2ZW50U3RhcnRTdGF0ZU1hY2hpbmVDb250ZXh0KTogdm9pZCB7XG4gICAgLy8gVHJpZ2dlciBmaW5hbCBzdGF0ZSB0byBjb21wbGV0ZSBwcm9jZXNzaW5nIG9mIHN0YXRlIG1hY2hpbmVcbiAgICBzdGF0ZS50cmlnZ2VyKEV2ZW50U3RhcnRTdGF0ZXMuRklOQUwpO1xuICAgIC8vIE5hdmlnYXRlIHRvIG11bHRpcGxlIHRhc2tzIGV4aXN0IGVycm9yIHBhZ2VcbiAgICBjb250ZXh0LnJvdXRlci5uYXZpZ2F0ZShbYC9jYXNlcy9jYXNlLWRldGFpbHMvJHtjb250ZXh0LmNhc2VJZH0vbXVsdGlwbGUtdGFza3MtZXhpc3RgXSwgeyByZWxhdGl2ZVRvOiBjb250ZXh0LnJvdXRlIH0pO1xuICB9XG5cbiAgcHVibGljIGZpbmFsQWN0aW9uKHN0YXRlOiBTdGF0ZSk6IHZvaWQge1xuICAgIC8vIEZpbmFsIGFjdGlvbnMgY2FuIGJlIHBlcmZvcm1lZCBoZXJlLCB0aGUgc3RhdGUgbWFjaGluZSBmaW5pc2hlZCBydW5uaW5nXG4gICAgLy8gY29uc29sZS5sb2coJ0ZJTkFMJywgc3RhdGUpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHB1YmxpYyBhZGRUcmFuc2l0aW9uc0ZvclN0YXRlQ2hlY2tGb3JNYXRjaGluZ1Rhc2tzKCk6IHZvaWQge1xuICAgIC8vIE5vIHRhc2tzXG4gICAgdGhpcy5zdGF0ZUNoZWNrRm9yTWF0Y2hpbmdUYXNrcy5hZGRUcmFuc2l0aW9uKFxuICAgICAgRXZlbnRTdGFydFN0YXRlcy5OT19UQVNLLFxuICAgICAgdGhpcy5zdGF0ZU5vVGFza1xuICAgICk7XG4gICAgLy8gT25lIHRhc2tcbiAgICB0aGlzLnN0YXRlQ2hlY2tGb3JNYXRjaGluZ1Rhc2tzLmFkZFRyYW5zaXRpb24oXG4gICAgICBFdmVudFN0YXJ0U3RhdGVzLk9ORV9PUl9NT1JFX1RBU0tTLFxuICAgICAgdGhpcy5zdGF0ZU9uZU9yTW9yZVRhc2tzXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRUcmFuc2l0aW9uc0ZvclN0YXRlTm9UYXNrKCk6IHZvaWQge1xuICAgIHRoaXMuc3RhdGVOb1Rhc2suYWRkVHJhbnNpdGlvbihcbiAgICAgIEV2ZW50U3RhcnRTdGF0ZXMuRklOQUwsXG4gICAgICB0aGlzLnN0YXRlRmluYWxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGFkZFRyYW5zaXRpb25zRm9yU3RhdGVPbmVPck1vcmVUYXNrcygpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXRlT25lT3JNb3JlVGFza3MuYWRkVHJhbnNpdGlvbihcbiAgICAgIEV2ZW50U3RhcnRTdGF0ZXMuVEFTS19BU1NJR05FRF9UT19VU0VSLFxuICAgICAgdGhpcy5zdGF0ZVRhc2tBc3NpZ25lZFRvVXNlclxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgYWRkVHJhbnNpdGlvbnNGb3JTdGF0ZVRhc2tVbmFzc2lnbmVkKCk6IHZvaWQge1xuICAgIHRoaXMuc3RhdGVUYXNrVW5hc3NpZ25lZC5hZGRUcmFuc2l0aW9uKFxuICAgICAgRXZlbnRTdGFydFN0YXRlcy5GSU5BTCxcbiAgICAgIHRoaXMuc3RhdGVGaW5hbFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgYWRkVHJhbnNpdGlvbnNGb3JTdGF0ZVRhc2tBc3NpZ25lZFRvVXNlcigpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXRlVGFza0Fzc2lnbmVkVG9Vc2VyLmFkZFRyYW5zaXRpb24oXG4gICAgICBFdmVudFN0YXJ0U3RhdGVzLk9ORV9UQVNLX0FTU0lHTkVEX1RPX1VTRVIsXG4gICAgICB0aGlzLnN0YXRlT25lVGFza0Fzc2lnbmVkVG9Vc2VyXG4gICAgKTtcbiAgICB0aGlzLnN0YXRlVGFza0Fzc2lnbmVkVG9Vc2VyLmFkZFRyYW5zaXRpb24oXG4gICAgICBFdmVudFN0YXJ0U3RhdGVzLlRBU0tfVU5BU1NJR05FRCxcbiAgICAgIHRoaXMuc3RhdGVUYXNrVW5hc3NpZ25lZFxuICAgICk7XG4gICAgdGhpcy5zdGF0ZVRhc2tBc3NpZ25lZFRvVXNlci5hZGRUcmFuc2l0aW9uKFxuICAgICAgRXZlbnRTdGFydFN0YXRlcy5NVUxUSVBMRV9UQVNLU19BU1NJR05FRF9UT19VU0VSLFxuICAgICAgdGhpcy5zdGF0ZU11bHRpcGxlVGFza3NBc3NpZ25lZFRvVXNlclxuICAgICk7XG4gICAgdGhpcy5zdGF0ZVRhc2tBc3NpZ25lZFRvVXNlci5hZGRUcmFuc2l0aW9uKFxuICAgICAgRXZlbnRTdGFydFN0YXRlcy5GSU5BTCxcbiAgICAgIHRoaXMuc3RhdGVGaW5hbFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgYWRkVHJhbnNpdGlvbnNGb3JTdGF0ZU9uZVRhc2tBc3NpZ25lZFRvVXNlcigpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXRlT25lVGFza0Fzc2lnbmVkVG9Vc2VyLmFkZFRyYW5zaXRpb24oXG4gICAgICBFdmVudFN0YXJ0U3RhdGVzLkZJTkFMLFxuICAgICAgdGhpcy5zdGF0ZUZpbmFsXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRUcmFuc2l0aW9uc0ZvclN0YXRlTXVsdGlwbGVUYXNrc0Fzc2lnbmVkVG9Vc2VyKCk6IHZvaWQge1xuICAgIHRoaXMuc3RhdGVNdWx0aXBsZVRhc2tzQXNzaWduZWRUb1VzZXIuYWRkVHJhbnNpdGlvbihcbiAgICAgIEV2ZW50U3RhcnRTdGF0ZXMuRklOQUwsXG4gICAgICB0aGlzLnN0YXRlRmluYWxcbiAgICApO1xuICB9XG59XG4iXX0=