@hmcts/ccd-case-ui-toolkit 7.2.23-mid-event-callback → 7.2.23-srt-rc1

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 (134) hide show
  1. package/esm2022/lib/app.config.mjs +2 -1
  2. package/esm2022/lib/components/form/date-input/date-input.component.mjs +56 -19
  3. package/esm2022/lib/shared/components/case-editor/case-edit/case-edit.component.mjs +3 -3
  4. package/esm2022/lib/shared/components/case-editor/case-edit-form/case-edit-form.component.mjs +24 -3
  5. package/esm2022/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.mjs +6 -2
  6. package/esm2022/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-cancelled/case-event-completion-task-cancelled.component.mjs +9 -5
  7. package/esm2022/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-reassigned/case-event-completion-task-reassigned.component.mjs +9 -5
  8. package/esm2022/lib/shared/components/case-header/case-header.component.mjs +5 -5
  9. package/esm2022/lib/shared/components/case-viewer/case-challenged-access-success/case-challenged-access-success.component.mjs +9 -4
  10. package/esm2022/lib/shared/components/case-viewer/case-event-trigger/case-event-trigger.component.mjs +16 -3
  11. package/esm2022/lib/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.mjs +20 -13
  12. package/esm2022/lib/shared/components/case-viewer/case-review-specific-access-reject/case-review-specific-access-reject.component.mjs +13 -9
  13. package/esm2022/lib/shared/components/case-viewer/services/event-trigger.resolver.mjs +4 -2
  14. package/esm2022/lib/shared/components/event-start/components/multiple-tasks-exist/multiple-tasks-exist.component.mjs +9 -5
  15. package/esm2022/lib/shared/components/event-start/components/no-tasks-available/no-tasks-available.component.mjs +9 -5
  16. package/esm2022/lib/shared/components/event-start/components/task-assigned/task-assigned.component.mjs +9 -5
  17. package/esm2022/lib/shared/components/event-start/components/task-unassigned/task-unassigned.component.mjs +9 -5
  18. package/esm2022/lib/shared/components/event-start/event-guard/event-start.guard.mjs +3 -3
  19. package/esm2022/lib/shared/components/event-start/services/event-start-state-machine.service.mjs +6 -6
  20. package/esm2022/lib/shared/components/palette/collection/read-collection-field.component.mjs +13 -10
  21. package/esm2022/lib/shared/components/palette/complex/read-complex-field-table.component.mjs +8 -8
  22. package/esm2022/lib/shared/components/palette/date/read-date-field.component.mjs +4 -4
  23. package/esm2022/lib/shared/components/palette/datetime-picker/datetime-picker.component.mjs +41 -10
  24. package/esm2022/lib/shared/components/palette/linked-cases/components/before-you-start/before-you-start.component.mjs +2 -2
  25. package/esm2022/lib/shared/components/palette/linked-cases/components/linked-cases-table/linked-cases-from-table.component.mjs +7 -7
  26. package/esm2022/lib/shared/components/palette/linked-cases/components/linked-cases-table/linked-cases-to-table.component.mjs +7 -7
  27. package/esm2022/lib/shared/components/palette/linked-cases/components/no-linked-cases/no-linked-cases.component.mjs +2 -2
  28. package/esm2022/lib/shared/components/palette/linked-cases/read-linked-cases-field.component.mjs +3 -3
  29. package/esm2022/lib/shared/components/palette/number/write-number-field.component.mjs +3 -3
  30. package/esm2022/lib/shared/components/palette/organisation/read-organisation-field-raw.component.mjs +21 -25
  31. package/esm2022/lib/shared/components/palette/organisation/read-organisation-field-table.component.mjs +21 -25
  32. package/esm2022/lib/shared/components/palette/palette.module.mjs +6 -2
  33. package/esm2022/lib/shared/components/palette/query-management/components/close-query/close-query.component.mjs +3 -3
  34. package/esm2022/lib/shared/components/palette/query-management/components/qualifying-questions/qualifying-question-detail/qualifying-question-detail.component.mjs +26 -15
  35. package/esm2022/lib/shared/components/palette/query-management/components/qualifying-questions/qualifying-question-options/qualifying-question-options.component.mjs +6 -2
  36. package/esm2022/lib/shared/components/palette/query-management/components/query-check-your-answers/query-check-your-answers.component.mjs +21 -6
  37. package/esm2022/lib/shared/components/palette/query-management/components/query-confirmation/query-confirmation.component.mjs +22 -18
  38. package/esm2022/lib/shared/components/palette/query-management/components/query-details/query-details.component.mjs +56 -9
  39. package/esm2022/lib/shared/components/palette/query-management/components/query-list/query-list.component.mjs +2 -2
  40. package/esm2022/lib/shared/components/palette/query-management/components/query-write/query-write-raise-query/query-write-raise-query.component.mjs +5 -5
  41. package/esm2022/lib/shared/components/palette/query-management/components/query-write/query-write-respond-to-query/query-write-respond-to-query.component.mjs +9 -9
  42. package/esm2022/lib/shared/components/palette/query-management/models/case-queries-collection.model.mjs +1 -1
  43. package/esm2022/lib/shared/components/palette/query-management/models/query-list/query-list-item/query-list-item.model.mjs +44 -15
  44. package/esm2022/lib/shared/components/palette/query-management/read-query-management-field.component.mjs +84 -40
  45. package/esm2022/lib/shared/components/palette/query-management/services/query-management.service.mjs +2 -2
  46. package/esm2022/lib/shared/components/palette/query-management/utils/query-management.utils.mjs +16 -8
  47. package/esm2022/lib/shared/components/palette/utils/field-label.pipe.mjs +11 -3
  48. package/esm2022/lib/shared/components/search-result/search-result.component.mjs +1 -1
  49. package/esm2022/lib/shared/directives/index.mjs +2 -1
  50. package/esm2022/lib/shared/directives/welsh-translated-markdown/index.mjs +3 -0
  51. package/esm2022/lib/shared/directives/welsh-translated-markdown/welsh-translated-markdown.directive.mjs +104 -0
  52. package/esm2022/lib/shared/directives/welsh-translated-markdown/welsh-translated-markdown.module.mjs +21 -0
  53. package/esm2022/lib/shared/pipes/search-result/sorting/sort-search-result.pipe.mjs +2 -3
  54. package/esm2022/lib/shared/services/draft/draft.service.mjs +2 -2
  55. package/esm2022/lib/shared/services/form/field-type-sanitiser.mjs +38 -3
  56. package/esm2022/lib/shared/services/form/form-value.service.mjs +24 -1
  57. package/esm2022/lib/shared/services/search-result/sorting/search-result-view-item-comparator-factory.mjs +7 -8
  58. package/esm2022/lib/shared/utils.mjs +1 -1
  59. package/fesm2022/hmcts-ccd-case-ui-toolkit.mjs +929 -447
  60. package/fesm2022/hmcts-ccd-case-ui-toolkit.mjs.map +1 -1
  61. package/lib/app.config.d.ts +2 -0
  62. package/lib/app.config.d.ts.map +1 -1
  63. package/lib/components/form/date-input/date-input.component.d.ts +4 -0
  64. package/lib/components/form/date-input/date-input.component.d.ts.map +1 -1
  65. package/lib/shared/components/case-editor/case-edit-form/case-edit-form.component.d.ts +1 -0
  66. package/lib/shared/components/case-editor/case-edit-form/case-edit-form.component.d.ts.map +1 -1
  67. package/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.d.ts.map +1 -1
  68. package/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-cancelled/case-event-completion-task-cancelled.component.d.ts +2 -0
  69. 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
  70. package/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-reassigned/case-event-completion-task-reassigned.component.d.ts +2 -0
  71. 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
  72. package/lib/shared/components/case-viewer/case-challenged-access-success/case-challenged-access-success.component.d.ts +2 -0
  73. package/lib/shared/components/case-viewer/case-challenged-access-success/case-challenged-access-success.component.d.ts.map +1 -1
  74. package/lib/shared/components/case-viewer/case-event-trigger/case-event-trigger.component.d.ts +1 -0
  75. package/lib/shared/components/case-viewer/case-event-trigger/case-event-trigger.component.d.ts.map +1 -1
  76. package/lib/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.d.ts.map +1 -1
  77. package/lib/shared/components/case-viewer/case-review-specific-access-reject/case-review-specific-access-reject.component.d.ts +2 -0
  78. package/lib/shared/components/case-viewer/case-review-specific-access-reject/case-review-specific-access-reject.component.d.ts.map +1 -1
  79. package/lib/shared/components/case-viewer/services/event-trigger.resolver.d.ts.map +1 -1
  80. package/lib/shared/components/event-start/components/multiple-tasks-exist/multiple-tasks-exist.component.d.ts +2 -0
  81. package/lib/shared/components/event-start/components/multiple-tasks-exist/multiple-tasks-exist.component.d.ts.map +1 -1
  82. package/lib/shared/components/event-start/components/no-tasks-available/no-tasks-available.component.d.ts +2 -0
  83. package/lib/shared/components/event-start/components/no-tasks-available/no-tasks-available.component.d.ts.map +1 -1
  84. package/lib/shared/components/event-start/components/task-assigned/task-assigned.component.d.ts +2 -0
  85. package/lib/shared/components/event-start/components/task-assigned/task-assigned.component.d.ts.map +1 -1
  86. package/lib/shared/components/event-start/components/task-unassigned/task-unassigned.component.d.ts +2 -0
  87. package/lib/shared/components/event-start/components/task-unassigned/task-unassigned.component.d.ts.map +1 -1
  88. package/lib/shared/components/event-start/event-guard/event-start.guard.d.ts +2 -2
  89. package/lib/shared/components/event-start/event-guard/event-start.guard.d.ts.map +1 -1
  90. package/lib/shared/components/event-start/services/event-start-state-machine.service.d.ts.map +1 -1
  91. package/lib/shared/components/palette/collection/read-collection-field.component.d.ts +3 -1
  92. package/lib/shared/components/palette/collection/read-collection-field.component.d.ts.map +1 -1
  93. package/lib/shared/components/palette/date/read-date-field.component.d.ts.map +1 -1
  94. package/lib/shared/components/palette/datetime-picker/datetime-picker.component.d.ts +2 -0
  95. package/lib/shared/components/palette/datetime-picker/datetime-picker.component.d.ts.map +1 -1
  96. package/lib/shared/components/palette/palette.module.d.ts +18 -17
  97. package/lib/shared/components/palette/palette.module.d.ts.map +1 -1
  98. package/lib/shared/components/palette/query-management/components/qualifying-questions/qualifying-question-options/qualifying-question-options.component.d.ts +2 -0
  99. package/lib/shared/components/palette/query-management/components/qualifying-questions/qualifying-question-options/qualifying-question-options.component.d.ts.map +1 -1
  100. package/lib/shared/components/palette/query-management/components/query-check-your-answers/query-check-your-answers.component.d.ts +3 -2
  101. package/lib/shared/components/palette/query-management/components/query-check-your-answers/query-check-your-answers.component.d.ts.map +1 -1
  102. package/lib/shared/components/palette/query-management/components/query-confirmation/query-confirmation.component.d.ts +2 -0
  103. package/lib/shared/components/palette/query-management/components/query-confirmation/query-confirmation.component.d.ts.map +1 -1
  104. package/lib/shared/components/palette/query-management/components/query-details/query-details.component.d.ts +15 -3
  105. package/lib/shared/components/palette/query-management/components/query-details/query-details.component.d.ts.map +1 -1
  106. package/lib/shared/components/palette/query-management/components/query-write/query-write-raise-query/query-write-raise-query.component.d.ts +1 -1
  107. package/lib/shared/components/palette/query-management/components/query-write/query-write-respond-to-query/query-write-respond-to-query.component.d.ts +1 -1
  108. package/lib/shared/components/palette/query-management/models/case-queries-collection.model.d.ts +1 -0
  109. package/lib/shared/components/palette/query-management/models/case-queries-collection.model.d.ts.map +1 -1
  110. package/lib/shared/components/palette/query-management/models/query-list/query-list-item/query-list-item.model.d.ts +1 -0
  111. package/lib/shared/components/palette/query-management/models/query-list/query-list-item/query-list-item.model.d.ts.map +1 -1
  112. package/lib/shared/components/palette/query-management/read-query-management-field.component.d.ts +15 -3
  113. package/lib/shared/components/palette/query-management/read-query-management-field.component.d.ts.map +1 -1
  114. package/lib/shared/components/palette/query-management/utils/query-management.utils.d.ts +1 -1
  115. package/lib/shared/components/palette/query-management/utils/query-management.utils.d.ts.map +1 -1
  116. package/lib/shared/components/palette/utils/field-label.pipe.d.ts +1 -0
  117. package/lib/shared/components/palette/utils/field-label.pipe.d.ts.map +1 -1
  118. package/lib/shared/components/search-result/search-result.component.d.ts.map +1 -1
  119. package/lib/shared/directives/index.d.ts +1 -0
  120. package/lib/shared/directives/index.d.ts.map +1 -1
  121. package/lib/shared/directives/welsh-translated-markdown/index.d.ts +3 -0
  122. package/lib/shared/directives/welsh-translated-markdown/index.d.ts.map +1 -0
  123. package/lib/shared/directives/welsh-translated-markdown/welsh-translated-markdown.directive.d.ts +76 -0
  124. package/lib/shared/directives/welsh-translated-markdown/welsh-translated-markdown.directive.d.ts.map +1 -0
  125. package/lib/shared/directives/welsh-translated-markdown/welsh-translated-markdown.module.d.ts +8 -0
  126. package/lib/shared/directives/welsh-translated-markdown/welsh-translated-markdown.module.d.ts.map +1 -0
  127. package/lib/shared/pipes/search-result/sorting/sort-search-result.pipe.d.ts.map +1 -1
  128. package/lib/shared/services/form/field-type-sanitiser.d.ts +5 -0
  129. package/lib/shared/services/form/field-type-sanitiser.d.ts.map +1 -1
  130. package/lib/shared/services/form/form-value.service.d.ts +1 -0
  131. package/lib/shared/services/form/form-value.service.d.ts.map +1 -1
  132. package/lib/shared/services/search-result/sorting/search-result-view-item-comparator-factory.d.ts.map +1 -1
  133. package/lib/shared/utils.d.ts +1 -1
  134. package/package.json +1 -1
@@ -102,6 +102,8 @@ export class QualifyingQuestionOptionsComponent {
102
102
  questionSelected = new EventEmitter();
103
103
  qualifyingQuestionsErrorMessage = QualifyingQuestionsErrorMessage;
104
104
  caseId;
105
+ jurisdiction;
106
+ caseType;
105
107
  constructor(route, router, qualifyingQuestionService) {
106
108
  this.route = route;
107
109
  this.router = router;
@@ -109,6 +111,8 @@ export class QualifyingQuestionOptionsComponent {
109
111
  }
110
112
  ngOnInit() {
111
113
  this.caseId = this.route.snapshot.params.cid;
114
+ this.jurisdiction = this.route.snapshot.params.jurisdiction;
115
+ this.caseType = this.route.snapshot.params.caseType;
112
116
  // Check if there's already a selected qualifying question from the service
113
117
  const savedSelection = this.qualifyingQuestionService.getQualifyingQuestionSelection();
114
118
  if (savedSelection) {
@@ -116,7 +120,7 @@ export class QualifyingQuestionOptionsComponent {
116
120
  }
117
121
  }
118
122
  click() {
119
- this.router.navigate(['cases', 'case-details', this.caseId], { fragment: 'Queries' });
123
+ this.router.navigate(['cases', 'case-details', this.jurisdiction, this.caseType, this.caseId], { fragment: 'Queries' });
120
124
  }
121
125
  get displayError() {
122
126
  return this.qualifyingQuestionsControl.touched && this.qualifyingQuestionsControl.hasError('required');
@@ -142,4 +146,4 @@ export class QualifyingQuestionOptionsComponent {
142
146
  type: Output
143
147
  }] }); })();
144
148
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(QualifyingQuestionOptionsComponent, { className: "QualifyingQuestionOptionsComponent", filePath: "lib/shared/components/palette/query-management/components/qualifying-questions/qualifying-question-options/qualifying-question-options.component.ts", lineNumber: 13 }); })();
145
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVhbGlmeWluZy1xdWVzdGlvbi1vcHRpb25zLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9wYWxldHRlL3F1ZXJ5LW1hbmFnZW1lbnQvY29tcG9uZW50cy9xdWFsaWZ5aW5nLXF1ZXN0aW9ucy9xdWFsaWZ5aW5nLXF1ZXN0aW9uLW9wdGlvbnMvcXVhbGlmeWluZy1xdWVzdGlvbi1vcHRpb25zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9wYWxldHRlL3F1ZXJ5LW1hbmFnZW1lbnQvY29tcG9uZW50cy9xdWFsaWZ5aW5nLXF1ZXN0aW9ucy9xdWFsaWZ5aW5nLXF1ZXN0aW9uLW9wdGlvbnMvcXVhbGlmeWluZy1xdWVzdGlvbi1vcHRpb25zLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsQyxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVqRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7Ozs7Ozs7SUNNeEQsNkJBQW1DO0lBRS9CLEFBREYsNEJBQStCLGNBQ087SUFBQSxZQUE4Qjs7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QUNJLGdCQUFnQjtrQkFBekIsTUFBTTs7a0ZBSEksa0NBQWtDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFF1YWxpZnlpbmdRdWVzdGlvbnNFcnJvck1lc3NhZ2UgfSBmcm9tICcuLi8uLi8uLi9lbnVtcyc7XG5pbXBvcnQgeyBRdWFsaWZ5aW5nUXVlc3Rpb24gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHsgUXVhbGlmeWluZ1F1ZXN0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2NkLXF1YWxpZnlpbmctcXVlc3Rpb24tb3B0aW9ucycsXG4gIHRlbXBsYXRlVXJsOiAnLi9xdWFsaWZ5aW5nLXF1ZXN0aW9uLW9wdGlvbnMuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFF1YWxpZnlpbmdRdWVzdGlvbk9wdGlvbnNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBwdWJsaWMgcXVhbGlmeWluZ1F1ZXN0aW9uc0NvbnRyb2w6IEZvcm1Db250cm9sO1xuICBASW5wdXQoKSBwdWJsaWMgcXVhbGlmeWluZ1F1ZXN0aW9ucyQ6IE9ic2VydmFibGU8UXVhbGlmeWluZ1F1ZXN0aW9uW10+O1xuICBAT3V0cHV0KCkgcXVlc3Rpb25TZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8UXVhbGlmeWluZ1F1ZXN0aW9uPigpO1xuXG4gIHB1YmxpYyBxdWFsaWZ5aW5nUXVlc3Rpb25zRXJyb3JNZXNzYWdlID0gUXVhbGlmeWluZ1F1ZXN0aW9uc0Vycm9yTWVzc2FnZTtcbiAgcHVibGljIGNhc2VJZDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSBxdWFsaWZ5aW5nUXVlc3Rpb25TZXJ2aWNlOiBRdWFsaWZ5aW5nUXVlc3Rpb25TZXJ2aWNlKSB7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5jYXNlSWQgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtcy5jaWQ7XG5cbiAgICAvLyBDaGVjayBpZiB0aGVyZSdzIGFscmVhZHkgYSBzZWxlY3RlZCBxdWFsaWZ5aW5nIHF1ZXN0aW9uIGZyb20gdGhlIHNlcnZpY2VcbiAgICBjb25zdCBzYXZlZFNlbGVjdGlvbiA9IHRoaXMucXVhbGlmeWluZ1F1ZXN0aW9uU2VydmljZS5nZXRRdWFsaWZ5aW5nUXVlc3Rpb25TZWxlY3Rpb24oKTtcbiAgICBpZiAoc2F2ZWRTZWxlY3Rpb24pIHtcbiAgICAgIHRoaXMucXVhbGlmeWluZ1F1ZXN0aW9uc0NvbnRyb2wuc2V0VmFsdWUoc2F2ZWRTZWxlY3Rpb24pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBjbGljaygpOiB2b2lkIHtcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJ2Nhc2VzJywgJ2Nhc2UtZGV0YWlscycsIHRoaXMuY2FzZUlkXSwgeyBmcmFnbWVudDogJ1F1ZXJpZXMnIH0pO1xuICB9XG5cbiAgcHVibGljIGdldCBkaXNwbGF5RXJyb3IoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMucXVhbGlmeWluZ1F1ZXN0aW9uc0NvbnRyb2wudG91Y2hlZCAmJiB0aGlzLnF1YWxpZnlpbmdRdWVzdGlvbnNDb250cm9sLmhhc0Vycm9yKCdyZXF1aXJlZCcpO1xuICB9XG5cbiAgcHVibGljIG9uU2VsZWN0aW9uQ2hhbmdlKHF1YWxpZnlpbmdRdWVzdGlvbjogUXVhbGlmeWluZ1F1ZXN0aW9uKSB7XG4gICAgdGhpcy5xdWVzdGlvblNlbGVjdGVkLmVtaXQocXVhbGlmeWluZ1F1ZXN0aW9uKTtcbiAgfVxufVxuXG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwicXVhbGlmeWluZ1F1ZXN0aW9uc0NvbnRyb2xcIj5cbiAgPGRpdiBjbGFzcz1cImdvdnVrLWZvcm0tZ3JvdXBcIiBbY2xhc3MuZ292dWstZm9ybS1ncm91cC0tZXJyb3JdPVwiZGlzcGxheUVycm9yXCI+XG4gICAgPGZpZWxkc2V0IGNsYXNzPVwiZ292dWstZmllbGRzZXRcIj5cbiAgICAgIDxsZWdlbmQgY2xhc3M9XCJnb3Z1ay1maWVsZHNldF9fbGVnZW5kIGdvdnVrLWZpZWxkc2V0X19sZWdlbmQtLWxcIj5cbiAgICAgICAgPGgxIGNsYXNzPVwiZ292dWstZmllbGRzZXRfX2hlYWRpbmdcIj5cbiAgICAgICAgICB7eyAnUmFpc2UgYSBuZXcgcXVlcnknIHwgcnB4VHJhbnNsYXRlIH19XG4gICAgICAgIDwvaDE+XG4gICAgICA8L2xlZ2VuZD5cbiAgICAgIDxoMiBjbGFzcz1cImdvdnVrLWhlYWRpbmctbSBnb3Z1ay0hLW1hcmdpbi10b3AtMTBcIj5cbiAgICAgICAge3sgJ1doYXQgZG8geW91IG5lZWQgaGVscCB0byBkbz8nIHwgcnB4VHJhbnNsYXRlIH19XG4gICAgICA8L2gyPlxuXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGlzcGxheUVycm9yXCI+XG4gICAgICAgIDxwIGNsYXNzPVwiZ292dWstZXJyb3ItbWVzc2FnZVwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZ292dWstdmlzdWFsbHktaGlkZGVuXCI+e3sgJ0Vycm9yOicgfCBycHhUcmFuc2xhdGUgfX0gPC9zcGFuPnt7XG4gICAgICAgICAgcXVhbGlmeWluZ1F1ZXN0aW9uc0Vycm9yTWVzc2FnZS5TRUxFQ1RfQU5fT1BUSU9OIHwgcnB4VHJhbnNsYXRlIH19XG4gICAgICAgIDwvcD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiZ292dWstcmFkaW9zXCIgZGF0YS1tb2R1bGU9XCJnb3Z1ay1yYWRpb3NcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcXVhbGlmeWluZ1F1ZXN0aW9uIG9mIHF1YWxpZnlpbmdRdWVzdGlvbnMkIHwgYXN5bmM7IGxldCBpc0xhc3QgPSBsYXN0XCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzTGFzdFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInFtLXF1YWxpZnlpbmctcXVlc3Rpb25fX2RpdmlkZXJcIj57eyAnSWYgeW91ciBpc3N1ZSBpcyBub3QgY292ZXJlZCBieSB0aGUgb3B0aW9ucyBhYm92ZSwgcmFpc2UgYSBxdWVyeTonIHwgcnB4VHJhbnNsYXRlIH19PC9kaXY+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLXJhZGlvc19faXRlbVwiPlxuICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZ292dWstcmFkaW9zX19pbnB1dFwiIFxuICAgICAgICAgICAgICBpZD1cInt7cXVhbGlmeWluZ1F1ZXN0aW9uLm5hbWV9fVwiIFxuICAgICAgICAgICAgICBuYW1lPVwicXVhbGlmeWluZ1F1ZXN0aW9uT3B0aW9uXCJcbiAgICAgICAgICAgICAgdHlwZT1cInJhZGlvXCIgW2Zvcm1Db250cm9sXT1cInF1YWxpZnlpbmdRdWVzdGlvbnNDb250cm9sXCIgXG4gICAgICAgICAgICAgIFt2YWx1ZV09XCJxdWFsaWZ5aW5nUXVlc3Rpb25cIlxuICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uU2VsZWN0aW9uQ2hhbmdlKHF1YWxpZnlpbmdRdWVzdGlvbilcIj5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImdvdnVrLWxhYmVsIGdvdnVrLXJhZGlvc19fbGFiZWxcIiBbZm9yXT1cInF1YWxpZnlpbmdRdWVzdGlvbi5uYW1lXCI+e3sgcXVhbGlmeWluZ1F1ZXN0aW9uLm5hbWUgfFxuICAgICAgICAgICAgICBycHhUcmFuc2xhdGUgfX08L2xhYmVsPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZmllbGRzZXQ+XG4gIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG4iXX0=
149
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVhbGlmeWluZy1xdWVzdGlvbi1vcHRpb25zLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9wYWxldHRlL3F1ZXJ5LW1hbmFnZW1lbnQvY29tcG9uZW50cy9xdWFsaWZ5aW5nLXF1ZXN0aW9ucy9xdWFsaWZ5aW5nLXF1ZXN0aW9uLW9wdGlvbnMvcXVhbGlmeWluZy1xdWVzdGlvbi1vcHRpb25zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9wYWxldHRlL3F1ZXJ5LW1hbmFnZW1lbnQvY29tcG9uZW50cy9xdWFsaWZ5aW5nLXF1ZXN0aW9ucy9xdWFsaWZ5aW5nLXF1ZXN0aW9uLW9wdGlvbnMvcXVhbGlmeWluZy1xdWVzdGlvbi1vcHRpb25zLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsQyxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVqRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7Ozs7Ozs7SUNNeEQsNkJBQW1DO0lBRS9CLEFBREYsNEJBQStCLGNBQ087SUFBQSxZQUE4Qjs7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QUFDLGtCQUFzQztRQUM3RCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDakQsQ0FBQzs0SEF0Q1Usa0NBQWtDOzZEQUFsQyxrQ0FBa0M7WUNaL0MsdUdBQWlEOztZQUFsQyxxREFBZ0M7OztpRkRZbEMsa0NBQWtDO2NBSjlDLFNBQVM7MkJBQ0UsaUNBQWlDOzRHQUkzQiwwQkFBMEI7a0JBQXpDLEtBQUs7WUFDVSxvQkFBb0I7a0JBQW5DLEtBQUs7WUFDSSxnQkFBZ0I7a0JBQXpCLE1BQU07O2tGQUhJLGtDQUFrQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBRdWFsaWZ5aW5nUXVlc3Rpb25zRXJyb3JNZXNzYWdlIH0gZnJvbSAnLi4vLi4vLi4vZW51bXMnO1xuaW1wb3J0IHsgUXVhbGlmeWluZ1F1ZXN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IFF1YWxpZnlpbmdRdWVzdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NjZC1xdWFsaWZ5aW5nLXF1ZXN0aW9uLW9wdGlvbnMnLFxuICB0ZW1wbGF0ZVVybDogJy4vcXVhbGlmeWluZy1xdWVzdGlvbi1vcHRpb25zLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBRdWFsaWZ5aW5nUXVlc3Rpb25PcHRpb25zQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgcHVibGljIHF1YWxpZnlpbmdRdWVzdGlvbnNDb250cm9sOiBGb3JtQ29udHJvbDtcbiAgQElucHV0KCkgcHVibGljIHF1YWxpZnlpbmdRdWVzdGlvbnMkOiBPYnNlcnZhYmxlPFF1YWxpZnlpbmdRdWVzdGlvbltdPjtcbiAgQE91dHB1dCgpIHF1ZXN0aW9uU2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFF1YWxpZnlpbmdRdWVzdGlvbj4oKTtcblxuICBwdWJsaWMgcXVhbGlmeWluZ1F1ZXN0aW9uc0Vycm9yTWVzc2FnZSA9IFF1YWxpZnlpbmdRdWVzdGlvbnNFcnJvck1lc3NhZ2U7XG4gIHB1YmxpYyBjYXNlSWQ6IHN0cmluZztcbiAgcHVibGljIGp1cmlzZGljdGlvbjogc3RyaW5nO1xuICBwdWJsaWMgY2FzZVR5cGU6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcXVhbGlmeWluZ1F1ZXN0aW9uU2VydmljZTogUXVhbGlmeWluZ1F1ZXN0aW9uU2VydmljZSkge1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuY2FzZUlkID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXMuY2lkO1xuICAgIHRoaXMuanVyaXNkaWN0aW9uID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXMuanVyaXNkaWN0aW9uO1xuICAgIHRoaXMuY2FzZVR5cGUgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtcy5jYXNlVHlwZTtcblxuICAgIC8vIENoZWNrIGlmIHRoZXJlJ3MgYWxyZWFkeSBhIHNlbGVjdGVkIHF1YWxpZnlpbmcgcXVlc3Rpb24gZnJvbSB0aGUgc2VydmljZVxuICAgIGNvbnN0IHNhdmVkU2VsZWN0aW9uID0gdGhpcy5xdWFsaWZ5aW5nUXVlc3Rpb25TZXJ2aWNlLmdldFF1YWxpZnlpbmdRdWVzdGlvblNlbGVjdGlvbigpO1xuICAgIGlmIChzYXZlZFNlbGVjdGlvbikge1xuICAgICAgdGhpcy5xdWFsaWZ5aW5nUXVlc3Rpb25zQ29udHJvbC5zZXRWYWx1ZShzYXZlZFNlbGVjdGlvbik7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGNsaWNrKCk6IHZvaWQge1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnY2FzZXMnLCAnY2FzZS1kZXRhaWxzJywgdGhpcy5qdXJpc2RpY3Rpb24sIHRoaXMuY2FzZVR5cGUsIHRoaXMuY2FzZUlkXSwgeyBmcmFnbWVudDogJ1F1ZXJpZXMnIH0pO1xuICB9XG5cbiAgcHVibGljIGdldCBkaXNwbGF5RXJyb3IoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMucXVhbGlmeWluZ1F1ZXN0aW9uc0NvbnRyb2wudG91Y2hlZCAmJiB0aGlzLnF1YWxpZnlpbmdRdWVzdGlvbnNDb250cm9sLmhhc0Vycm9yKCdyZXF1aXJlZCcpO1xuICB9XG5cbiAgcHVibGljIG9uU2VsZWN0aW9uQ2hhbmdlKHF1YWxpZnlpbmdRdWVzdGlvbjogUXVhbGlmeWluZ1F1ZXN0aW9uKSB7XG4gICAgdGhpcy5xdWVzdGlvblNlbGVjdGVkLmVtaXQocXVhbGlmeWluZ1F1ZXN0aW9uKTtcbiAgfVxufVxuXG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwicXVhbGlmeWluZ1F1ZXN0aW9uc0NvbnRyb2xcIj5cbiAgPGRpdiBjbGFzcz1cImdvdnVrLWZvcm0tZ3JvdXBcIiBbY2xhc3MuZ292dWstZm9ybS1ncm91cC0tZXJyb3JdPVwiZGlzcGxheUVycm9yXCI+XG4gICAgPGZpZWxkc2V0IGNsYXNzPVwiZ292dWstZmllbGRzZXRcIj5cbiAgICAgIDxsZWdlbmQgY2xhc3M9XCJnb3Z1ay1maWVsZHNldF9fbGVnZW5kIGdvdnVrLWZpZWxkc2V0X19sZWdlbmQtLWxcIj5cbiAgICAgICAgPGgxIGNsYXNzPVwiZ292dWstZmllbGRzZXRfX2hlYWRpbmdcIj5cbiAgICAgICAgICB7eyAnUmFpc2UgYSBuZXcgcXVlcnknIHwgcnB4VHJhbnNsYXRlIH19XG4gICAgICAgIDwvaDE+XG4gICAgICA8L2xlZ2VuZD5cbiAgICAgIDxoMiBjbGFzcz1cImdvdnVrLWhlYWRpbmctbSBnb3Z1ay0hLW1hcmdpbi10b3AtMTBcIj5cbiAgICAgICAge3sgJ1doYXQgZG8geW91IG5lZWQgaGVscCB0byBkbz8nIHwgcnB4VHJhbnNsYXRlIH19XG4gICAgICA8L2gyPlxuXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGlzcGxheUVycm9yXCI+XG4gICAgICAgIDxwIGNsYXNzPVwiZ292dWstZXJyb3ItbWVzc2FnZVwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZ292dWstdmlzdWFsbHktaGlkZGVuXCI+e3sgJ0Vycm9yOicgfCBycHhUcmFuc2xhdGUgfX0gPC9zcGFuPnt7XG4gICAgICAgICAgcXVhbGlmeWluZ1F1ZXN0aW9uc0Vycm9yTWVzc2FnZS5TRUxFQ1RfQU5fT1BUSU9OIHwgcnB4VHJhbnNsYXRlIH19XG4gICAgICAgIDwvcD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiZ292dWstcmFkaW9zXCIgZGF0YS1tb2R1bGU9XCJnb3Z1ay1yYWRpb3NcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcXVhbGlmeWluZ1F1ZXN0aW9uIG9mIHF1YWxpZnlpbmdRdWVzdGlvbnMkIHwgYXN5bmM7IGxldCBpc0xhc3QgPSBsYXN0XCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzTGFzdFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInFtLXF1YWxpZnlpbmctcXVlc3Rpb25fX2RpdmlkZXJcIj57eyAnSWYgeW91ciBpc3N1ZSBpcyBub3QgY292ZXJlZCBieSB0aGUgb3B0aW9ucyBhYm92ZSwgcmFpc2UgYSBxdWVyeTonIHwgcnB4VHJhbnNsYXRlIH19PC9kaXY+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLXJhZGlvc19faXRlbVwiPlxuICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZ292dWstcmFkaW9zX19pbnB1dFwiIFxuICAgICAgICAgICAgICBpZD1cInt7cXVhbGlmeWluZ1F1ZXN0aW9uLm5hbWV9fVwiIFxuICAgICAgICAgICAgICBuYW1lPVwicXVhbGlmeWluZ1F1ZXN0aW9uT3B0aW9uXCJcbiAgICAgICAgICAgICAgdHlwZT1cInJhZGlvXCIgW2Zvcm1Db250cm9sXT1cInF1YWxpZnlpbmdRdWVzdGlvbnNDb250cm9sXCIgXG4gICAgICAgICAgICAgIFt2YWx1ZV09XCJxdWFsaWZ5aW5nUXVlc3Rpb25cIlxuICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uU2VsZWN0aW9uQ2hhbmdlKHF1YWxpZnlpbmdRdWVzdGlvbilcIj5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImdvdnVrLWxhYmVsIGdvdnVrLXJhZGlvc19fbGFiZWxcIiBbZm9yXT1cInF1YWxpZnlpbmdRdWVzdGlvbi5uYW1lXCI+e3sgcXVhbGlmeWluZ1F1ZXN0aW9uLm5hbWUgfFxuICAgICAgICAgICAgICBycHhUcmFuc2xhdGUgfX08L2xhYmVsPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZmllbGRzZXQ+XG4gIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG4iXX0=
@@ -361,6 +361,7 @@ export class QueryCheckYourAnswersComponent {
361
361
  queryItem;
362
362
  queryCreateContext;
363
363
  eventData = null;
364
+ multipleFollowUpFeature;
364
365
  qmCaseQueriesCollectionData;
365
366
  backClicked = new EventEmitter();
366
367
  querySubmitted = new EventEmitter();
@@ -380,7 +381,7 @@ export class QueryCheckYourAnswersComponent {
380
381
  filteredTasks = [];
381
382
  readyToSubmit;
382
383
  isSubmitting = false;
383
- messgaeId;
384
+ messageId;
384
385
  callbackErrorsSubject = new Subject();
385
386
  error;
386
387
  constructor(route, router, casesService, caseNotifier, workAllocationService, qualifyingQuestionService, queryManagementService, errorNotifierService, alertService) {
@@ -397,7 +398,7 @@ export class QueryCheckYourAnswersComponent {
397
398
  ngOnInit() {
398
399
  this.queryId = this.route.snapshot.params.qid;
399
400
  this.tid = this.route.snapshot.queryParams?.tid;
400
- this.messgaeId = this.route.snapshot.params.dataid;
401
+ this.messageId = this.route.snapshot.params.dataid;
401
402
  this.caseNotifier.caseView.pipe(take(1)).subscribe((caseDetails) => {
402
403
  this.caseDetails = caseDetails;
403
404
  // Find the appropriate event trigger based on the queryCreateContext
@@ -523,7 +524,19 @@ export class QueryCheckYourAnswersComponent {
523
524
  handleError(error) {
524
525
  console.error('Error in API calls:', error);
525
526
  this.isSubmitting = false;
526
- this.router.navigate(['/', 'service-down']);
527
+ if (this.isServiceErrorFound(error)) {
528
+ this.error = null;
529
+ this.callbackErrorsSubject.next(error);
530
+ }
531
+ else {
532
+ if (error && error.status !== 401 && error.status !== 403) {
533
+ this.error = error;
534
+ }
535
+ else {
536
+ this.router.navigate(['/', 'service-down']);
537
+ }
538
+ }
539
+ window.scrollTo({ left: 0, top: 0, behavior: 'smooth' });
527
540
  }
528
541
  getDocumentAttachments() {
529
542
  const attachmentsValue = this.formGroup.get('attachments').value;
@@ -539,10 +552,10 @@ export class QueryCheckYourAnswersComponent {
539
552
  if (!this.eventData) {
540
553
  console.warn('Event data not available; skipping collection setup.');
541
554
  }
542
- this.queryManagementService.setCaseQueriesCollectionData(this.eventData, this.queryCreateContext, this.caseDetails, this.messgaeId);
555
+ this.queryManagementService.setCaseQueriesCollectionData(this.eventData, this.queryCreateContext, this.caseDetails, this.messageId);
543
556
  }
544
557
  static ɵfac = function QueryCheckYourAnswersComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || QueryCheckYourAnswersComponent)(i0.ɵɵdirectiveInject(i1.ActivatedRoute), i0.ɵɵdirectiveInject(i1.Router), i0.ɵɵdirectiveInject(i2.CasesService), i0.ɵɵdirectiveInject(i2.CaseNotifier), i0.ɵɵdirectiveInject(i2.WorkAllocationService), i0.ɵɵdirectiveInject(i3.QualifyingQuestionService), i0.ɵɵdirectiveInject(i4.QueryManagementService), i0.ɵɵdirectiveInject(i5.ErrorNotifierService), i0.ɵɵdirectiveInject(i5.AlertService)); };
545
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: QueryCheckYourAnswersComponent, selectors: [["ccd-query-check-your-answers"]], inputs: { formGroup: "formGroup", queryItem: "queryItem", queryCreateContext: "queryCreateContext", eventData: "eventData", qmCaseQueriesCollectionData: "qmCaseQueriesCollectionData" }, outputs: { backClicked: "backClicked", querySubmitted: "querySubmitted", callbackConfirmationMessage: "callbackConfirmationMessage" }, decls: 1, vars: 1, consts: [["defaultCheckYourAnswersTitle", ""], ["isHearingRelatedFalse", ""], ["class", "govuk-grid-row", 4, "ngIf"], [1, "govuk-grid-row"], [1, "govuk-grid-column-two-thirds-from-desktop"], ["class", "govuk-error-summary", "aria-labelledby", "error-summary-title", "role", "alert", "tabindex", "-1", "data-module", "govuk-error-summary", 4, "ngIf"], ["class", "error-summary", "role", "group", "aria-labelledby", "edit-case-event_error-summary-heading", "tabindex", "-1", 4, "ngIf"], [3, "callbackErrorsSubject"], [4, "ngIf"], [1, "govuk-heading-l"], [4, "ngIf", "ngIfElse"], [1, "govuk-!-margin-bottom-4"], [3, "caseDetails"], ["class", "govuk-summary-list govuk-!-margin-bottom-0", 4, "ngIf"], [1, "govuk-summary-list", "govuk-!-margin-bottom-0"], [1, "govuk-summary-list__row"], [1, "govuk-summary-list__key"], [1, "govuk-summary-list__value"], [1, "govuk-summary-list__actions"], ["href", "javascript:void(0)", 1, "govuk-link", 3, "click"], ["data-module", "govuk-button", 1, "govuk-button", "govuk-button--secondary", "govuk-!-margin-right-3", 3, "click"], ["data-module", "govuk-button", "type", "submit", 1, "govuk-button", 3, "click"], [3, "eventCompletionParams"], ["aria-labelledby", "error-summary-title", "role", "alert", "tabindex", "-1", "data-module", "govuk-error-summary", 1, "govuk-error-summary"], ["id", "error-summary-title", 1, "govuk-error-summary__title"], [1, "govuk-error-summary__body"], [1, "govuk-list", "govuk-error-summary__list"], [4, "ngFor", "ngForOf"], ["href", "javascript:void(0)", 1, "validation-error", 3, "id"], ["role", "group", "aria-labelledby", "edit-case-event_error-summary-heading", "tabindex", "-1", 1, "error-summary"], ["id", "event_error-summary-heading", 1, "heading-h3", "error-summary-heading"], ["class", "error-summary-list", 4, "ngIf"], [1, "error-summary-list"], ["class", "ccd-error-summary-li", 4, "ngFor", "ngForOf"], [1, "ccd-error-summary-li"], [1, "govuk-caption-l"], ["href", "javascript:void(0)", "class", "govuk-link", 3, "click", 4, "ngIf"], ["class", "govuk-summary-list__row", 4, "ngIf"], [1, "govuk-summary-list__value", "govuk-summary-list__value--documentAttached"], [3, "attachments", 4, "ngIf"], [3, "attachments"]], template: function QueryCheckYourAnswersComponent_Template(rf, ctx) { if (rf & 1) {
558
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: QueryCheckYourAnswersComponent, selectors: [["ccd-query-check-your-answers"]], inputs: { formGroup: "formGroup", queryItem: "queryItem", queryCreateContext: "queryCreateContext", eventData: "eventData", multipleFollowUpFeature: "multipleFollowUpFeature", qmCaseQueriesCollectionData: "qmCaseQueriesCollectionData" }, outputs: { backClicked: "backClicked", querySubmitted: "querySubmitted", callbackConfirmationMessage: "callbackConfirmationMessage" }, decls: 1, vars: 1, consts: [["defaultCheckYourAnswersTitle", ""], ["isHearingRelatedFalse", ""], ["class", "govuk-grid-row", 4, "ngIf"], [1, "govuk-grid-row"], [1, "govuk-grid-column-two-thirds-from-desktop"], ["class", "govuk-error-summary", "aria-labelledby", "error-summary-title", "role", "alert", "tabindex", "-1", "data-module", "govuk-error-summary", 4, "ngIf"], ["class", "error-summary", "role", "group", "aria-labelledby", "edit-case-event_error-summary-heading", "tabindex", "-1", 4, "ngIf"], [3, "callbackErrorsSubject"], [4, "ngIf"], [1, "govuk-heading-l"], [4, "ngIf", "ngIfElse"], [1, "govuk-!-margin-bottom-4"], [3, "caseDetails"], ["class", "govuk-summary-list govuk-!-margin-bottom-0", 4, "ngIf"], [1, "govuk-summary-list", "govuk-!-margin-bottom-0"], [1, "govuk-summary-list__row"], [1, "govuk-summary-list__key"], [1, "govuk-summary-list__value"], [1, "govuk-summary-list__actions"], ["href", "javascript:void(0)", 1, "govuk-link", 3, "click"], ["data-module", "govuk-button", 1, "govuk-button", "govuk-button--secondary", "govuk-!-margin-right-3", 3, "click"], ["data-module", "govuk-button", "type", "submit", 1, "govuk-button", 3, "click"], [3, "eventCompletionParams"], ["aria-labelledby", "error-summary-title", "role", "alert", "tabindex", "-1", "data-module", "govuk-error-summary", 1, "govuk-error-summary"], ["id", "error-summary-title", 1, "govuk-error-summary__title"], [1, "govuk-error-summary__body"], [1, "govuk-list", "govuk-error-summary__list"], [4, "ngFor", "ngForOf"], ["href", "javascript:void(0)", 1, "validation-error", 3, "id"], ["role", "group", "aria-labelledby", "edit-case-event_error-summary-heading", "tabindex", "-1", 1, "error-summary"], ["id", "event_error-summary-heading", 1, "heading-h3", "error-summary-heading"], ["class", "error-summary-list", 4, "ngIf"], [1, "error-summary-list"], ["class", "ccd-error-summary-li", 4, "ngFor", "ngForOf"], [1, "ccd-error-summary-li"], [1, "govuk-caption-l"], ["href", "javascript:void(0)", "class", "govuk-link", 3, "click", 4, "ngIf"], ["class", "govuk-summary-list__row", 4, "ngIf"], [1, "govuk-summary-list__value", "govuk-summary-list__value--documentAttached"], [3, "attachments", 4, "ngIf"], [3, "attachments"]], template: function QueryCheckYourAnswersComponent_Template(rf, ctx) { if (rf & 1) {
546
559
  i0.ɵɵtemplate(0, QueryCheckYourAnswersComponent_div_0_Template, 36, 25, "div", 2);
547
560
  } if (rf & 2) {
548
561
  i0.ɵɵproperty("ngIf", ctx.readyToSubmit);
@@ -559,6 +572,8 @@ export class QueryCheckYourAnswersComponent {
559
572
  type: Input
560
573
  }], eventData: [{
561
574
  type: Input
575
+ }], multipleFollowUpFeature: [{
576
+ type: Input
562
577
  }], qmCaseQueriesCollectionData: [{
563
578
  type: Input
564
579
  }], backClicked: [{
@@ -569,4 +584,4 @@ export class QueryCheckYourAnswersComponent {
569
584
  type: Output
570
585
  }] }); })();
571
586
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(QueryCheckYourAnswersComponent, { className: "QueryCheckYourAnswersComponent", filePath: "lib/shared/components/palette/query-management/components/query-check-your-answers/query-check-your-answers.component.ts", lineNumber: 31 }); })();
572
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktY2hlY2steW91ci1hbnN3ZXJzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9wYWxldHRlL3F1ZXJ5LW1hbmFnZW1lbnQvY29tcG9uZW50cy9xdWVyeS1jaGVjay15b3VyLWFuc3dlcnMvcXVlcnktY2hlY2steW91ci1hbnN3ZXJzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9wYWxldHRlL3F1ZXJ5LW1hbmFnZW1lbnQvY29tcG9uZW50cy9xdWVyeS1jaGVjay15b3VyLWFuc3dlcnMvcXVlcnktY2hlY2steW91ci1hbnN3ZXJzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBYyxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakQsT0FBTyxFQUNMLGdCQUFnQixFQUtqQixNQUFNLHdDQUF3QyxDQUFDO0FBRWhELE9BQU8sRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLHFCQUFxQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDckcsT0FBTyxFQUFrRCxrQkFBa0IsRUFBRSxhQUFhLEVBQUUsTUFB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Q0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO1FBQzFGLENBQUM7SUFDSCxDQUFDO0lBRU0sbUJBQW1CLENBQUMsS0FBVTtRQUNuQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxjQUFjLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVNLDRCQUE0QjtRQUNqQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3BCLE9BQU8sQ0FBQyxJQUFJLENBQUMsc0RBQXNELENBQUMsQ0FBQztRQUN2RSxDQUFDO1FBRUQsSUFBSSxDQUFDLHNCQUFzQixDQUFDLDRCQUE0QixDQUN0RCxJQUFJLENBQUMsU0FBUyxFQUNkLElBQUksQ0FBQyxrQkFBa0IsRUFDdkIsSUFBSSxDQUFDLFdBQVcsRUFDaEIsSUFBSSxDQUFDLFNBQVMsQ0FDZixDQUFDO0lBQ0osQ0FBQzt3SEEzT1UsOEJBQThCOzZEQUE5Qiw4QkFBOEI7WUM5QjNDLGlGQUFrRDs7WUFBckIsd0NBQW1COzs7aUZEOEJuQyw4QkFBOEI7Y0FMMUMsU0FBUzsyQkFDRSw4QkFBOEI7eVNBcUJ4QixTQUFTO2tCQUF4QixLQUFLO1lBQ1UsU0FBUztrQkFBeEIsS0FBSztZQUNVLGtCQUFrQjtrQkFBakMsS0FBSztZQUNVLFNBQVM7a0JBQXhCLEtBQUs7WUFDVSwyQkFBMkI7a0JBQTFDLEtBQUs7WUFDVyxXQUFXO2tCQUEzQixNQUFNO1lBQ1UsY0FBYztrQkFBOUIsTUFBTTtZQUNVLDJCQUEyQjtrQkFBM0MsTUFBTTs7a0ZBeEJJLDhCQUE4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHN3aXRjaE1hcCwgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gIENhc2VFdmVudFRyaWdnZXIsXG4gIENhc2VWaWV3LFxuICBDYXNlVmlld1RyaWdnZXIsXG4gIEVycm9yTWVzc2FnZSxcbiAgSHR0cEVycm9yXG59IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9zaGFyZWQvZG9tYWluJztcbmltcG9ydCB7IEV2ZW50Q29tcGxldGlvblBhcmFtcyB9IGZyb20gJy4uLy4uLy4uLy4uL2Nhc2UtZWRpdG9yL2RvbWFpbi9ldmVudC1jb21wbGV0aW9uLXBhcmFtcy5tb2RlbCc7XG5pbXBvcnQgeyBDYXNlTm90aWZpZXIsIENhc2VzU2VydmljZSwgV29ya0FsbG9jYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vY2FzZS1lZGl0b3Ivc2VydmljZXMnO1xuaW1wb3J0IHsgQ2FzZVF1ZXJpZXNDb2xsZWN0aW9uLCBRbUNhc2VRdWVyaWVzQ29sbGVjdGlvbiwgUXVlcnlDcmVhdGVDb250ZXh0LCBRdWVyeUxpc3RJdGVtIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IFF1ZXJ5TWFuYWdlbWVudFV0aWxzIH0gZnJvbSAnLi4vLi4vdXRpbHMvcXVlcnktbWFuYWdlbWVudC51dGlscyc7XG5pbXBvcnQgeyBGb3JtRG9jdW1lbnQgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvc2hhcmVkL2RvbWFpbi9kb2N1bWVudCc7XG5pbXBvcnQgeyBRdWFsaWZ5aW5nUXVlc3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcXVhbGlmeWluZy1xdWVzdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IFRhc2sgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9kb21haW4vd29yay1hbGxvY2F0aW9uL1Rhc2snO1xuaW1wb3J0IHsgUXVlcnlNYW5hZ2VtZW50U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3F1ZXJ5LW1hbmFnZW1lbnQuc2VydmljZSc7XG5pbXBvcnQge1xuICBBbGVydFNlcnZpY2UsXG4gIEVycm9yTm90aWZpZXJTZXJ2aWNlXG59IGZyb20gJy4uLy4uLy4uLy4uLy4uL3NlcnZpY2VzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2NkLXF1ZXJ5LWNoZWNrLXlvdXItYW5zd2VycycsXG4gIHRlbXBsYXRlVXJsOiAnLi9xdWVyeS1jaGVjay15b3VyLWFuc3dlcnMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9xdWVyeS1jaGVjay15b3VyLWFuc3dlcnMuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBRdWVyeUNoZWNrWW91ckFuc3dlcnNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgUkFJU0VfQV9RVUVSWV9FVkVOVF9UUklHR0VSX0lEID0gJ3F1ZXJ5TWFuYWdlbWVudFJhaXNlUXVlcnknO1xuICBwcml2YXRlIHJlYWRvbmx5IFJFU1BPTkRfVE9fUVVFUllfRVZFTlRfVFJJR0dFUl9JRCA9ICdxdWVyeU1hbmFnZW1lbnRSZXNwb25kUXVlcnknO1xuICBwcml2YXRlIHJlYWRvbmx5IENBU0VfUVVFUklFU19DT0xMRUNUSU9OX0lEID0gJ0Nhc2VRdWVyaWVzQ29sbGVjdGlvbic7XG5cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBUUklHR0VSX1RFWFRfQ09OVElOVUUgPSAnSWdub3JlIFdhcm5pbmcgYW5kIENvbnRpbnVlJztcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBUUklHR0VSX1RFWFRfU1RBUlQgPSAnQ29udGludWUnO1xuXG4gIHB1YmxpYyByZWFkb25seSBGSUVMRF9UWVBFX0NPTVBMRVggPSAnQ29tcGxleCc7XG4gIHB1YmxpYyByZWFkb25seSBESVNQTEFZX0NPTlRFWFRfUkVBRE9OTFkgPSAnUkVBRE9OTFknO1xuICBwdWJsaWMgcmVhZG9ubHkgUU1fU0VMRUNUX0ZJUlNUX0NPTExFQ1RJT04gPSAnc2VsZWN0Rmlyc3RDb2xsZWN0aW9uJztcbiAgcHVibGljIHJlYWRvbmx5IFFNX0NPTExFQ1RJT05fUFJPTVBUID0gJ3Byb21wdFFtQ29sbGVjdGlvbic7XG4gIHB1YmxpYyByZWFkb25seSBDSVZJTF9KVVJJU0RJQ1RJT04gPSAnQ0lWSUwnO1xuXG4gIHB1YmxpYyB0cmlnZ2VyVGV4dFN0YXJ0ID0gUXVlcnlDaGVja1lvdXJBbnN3ZXJzQ29tcG9uZW50LlRSSUdHRVJfVEVYVF9TVEFSVDtcbiAgcHVibGljIHRyaWdnZXJUZXh0SWdub3JlV2FybmluZ3MgPSBRdWVyeUNoZWNrWW91ckFuc3dlcnNDb21wb25lbnQuVFJJR0dFUl9URVhUX0NPTlRJTlVFO1xuXG4gIEBJbnB1dCgpIHB1YmxpYyBmb3JtR3JvdXA6IEZvcm1Hcm91cDtcbiAgQElucHV0KCkgcHVibGljIHF1ZXJ5SXRlbTogUXVlcnlMaXN0SXRlbTtcbiAgQElucHV0KCkgcHVibGljIHF1ZXJ5Q3JlYXRlQ29udGV4dDogUXVlcnlDcmVhdGVDb250ZXh0O1xuICBASW5wdXQoKSBwdWJsaWMgZXZlbnREYXRhOiBDYXNlRXZlbnRUcmlnZ2VyIHwgbnVsbCA9IG51bGw7XG4gIEBJbnB1dCgpIHB1YmxpYyBxbUNhc2VRdWVyaWVzQ29sbGVjdGlvbkRhdGE6IFFtQ2FzZVF1ZXJpZXNDb2xsZWN0aW9uO1xuICBAT3V0cHV0KCkgcHVibGljIGJhY2tDbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICBAT3V0cHV0KCkgcHVibGljIHF1ZXJ5U3VibWl0dGVkID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICBAT3V0cHV0KCkgcHVibGljIGNhbGxiYWNrQ29uZmlybWF0aW9uTWVzc2FnZSA9IG5ldyBFdmVudEVtaXR0ZXI8eyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfT4oKTtcblxuICBwcml2YXRlIGNhc2VWaWV3VHJpZ2dlcjogQ2FzZVZpZXdUcmlnZ2VyO1xuICBwdWJsaWMgY2FzZURldGFpbHM6IENhc2VWaWV3O1xuICBwcml2YXRlIHF1ZXJ5SWQ6IHN0cmluZztcbiAgcHJpdmF0ZSB0aWQ6IHN0cmluZztcbiAgcHJpdmF0ZSBjcmVhdGVFdmVudFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIHNlYXJjaFRhc2tzU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgcHVibGljIHF1ZXJ5Q3JlYXRlQ29udGV4dEVudW0gPSBRdWVyeUNyZWF0ZUNvbnRleHQ7XG4gIHB1YmxpYyBldmVudENvbXBsZXRpb25QYXJhbXM6IEV2ZW50Q29tcGxldGlvblBhcmFtcztcbiAgcHVibGljIGNhc2VRdWVyaWVzQ29sbGVjdGlvbnM6IENhc2VRdWVyaWVzQ29sbGVjdGlvbltdO1xuICBwdWJsaWMgZmllbGRJZDogc3RyaW5nO1xuICBwdWJsaWMgYXR0YWNobWVudHM6IEZvcm1Eb2N1bWVudFtdO1xuXG4gIHB1YmxpYyBlcnJvck1lc3NhZ2VzOiBFcnJvck1lc3NhZ2VbXSA9IFtdO1xuICBwdWJsaWMgZmlsdGVyZWRUYXNrczogVGFza1tdID0gW107XG4gIHB1YmxpYyByZWFkeVRvU3VibWl0OiBib29sZWFuO1xuICBwdWJsaWMgaXNTdWJtaXR0aW5nOiBib29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyBtZXNzZ2FlSWQ6IHN0cmluZztcbiAgcHVibGljIGNhbGxiYWNrRXJyb3JzU3ViamVjdDogU3ViamVjdDxhbnk+ID0gbmV3IFN1YmplY3QoKTtcblxuICBwdWJsaWMgZXJyb3I6IGFueTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2FzZXNTZXJ2aWNlOiBDYXNlc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjYXNlTm90aWZpZXI6IENhc2VOb3RpZmllcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IHdvcmtBbGxvY2F0aW9uU2VydmljZTogV29ya0FsbG9jYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcXVhbGlmeWluZ1F1ZXN0aW9uU2VydmljZTogUXVhbGlmeWluZ1F1ZXN0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIHF1ZXJ5TWFuYWdlbWVudFNlcnZpY2U6IFF1ZXJ5TWFuYWdlbWVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBlcnJvck5vdGlmaWVyU2VydmljZTogRXJyb3JOb3RpZmllclNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZSxcbiAgKSB7fVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnF1ZXJ5SWQgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtcy5xaWQ7XG4gICAgdGhpcy50aWQgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zPy50aWQ7XG4gICAgdGhpcy5tZXNzZ2FlSWQgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtcy5kYXRhaWQ7XG5cbiAgICB0aGlzLmNhc2VOb3RpZmllci5jYXNlVmlldy5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgoY2FzZURldGFpbHMpID0+IHtcbiAgICAgIHRoaXMuY2FzZURldGFpbHMgPSBjYXNlRGV0YWlscztcblxuICAgICAgLy8gRmluZCB0aGUgYXBwcm9wcmlhdGUgZXZlbnQgdHJpZ2dlciBiYXNlZCBvbiB0aGUgcXVlcnlDcmVhdGVDb250ZXh0XG4gICAgICB0aGlzLmNhc2VWaWV3VHJpZ2dlciA9IHRoaXMuY2FzZURldGFpbHMudHJpZ2dlcnMuZmluZCgodHJpZ2dlcikgPT5cbiAgICAgICAgdGhpcy5xdWVyeUNyZWF0ZUNvbnRleHQgIT09IFF1ZXJ5Q3JlYXRlQ29udGV4dC5SRVNQT05EXG4gICAgICAgIC8vIElmIHRoZSBjb250ZXh0IGlzIG5vdCAnUkVTUE9ORCcsIGZpbmQgdGhlIHRyaWdnZXIgd2l0aCB0aGUgSUQgZm9yIHJhaXNpbmcgYSBxdWVyeVxuICAgICAgICAgID8gdHJpZ2dlci5pZCA9PT0gdGhpcy5SQUlTRV9BX1FVRVJZX0VWRU5UX1RSSUdHRVJfSURcbiAgICAgICAgLy8gSWYgdGhlIGNvbnRleHQgaXMgJ1JFU1BPTkQnLCBmaW5kIHRoZSB0cmlnZ2VyIHdpdGggdGhlIElEIGZvciByZXNwb25kaW5nIHRvIGEgcXVlcnlcbiAgICAgICAgICA6IHRyaWdnZXIuaWQgPT09IHRoaXMuUkVTUE9ORF9UT19RVUVSWV9FVkVOVF9UUklHR0VSX0lEXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgLy8gR2V0IHRoZSBkb2N1bWVudCBhdHRhY2htZW50c1xuICAgIHRoaXMuZ2V0RG9jdW1lbnRBdHRhY2htZW50cygpO1xuXG4gICAgdGhpcy5zZXRDYXNlUXVlcmllc0NvbGxlY3Rpb25EYXRhKCk7XG5cbiAgICBpZiAodGhpcy5xdWVyeUNyZWF0ZUNvbnRleHQgPT09IFF1ZXJ5Q3JlYXRlQ29udGV4dC5SRVNQT05EKSB7XG4gICAgICB0aGlzLnNlYXJjaFRhc2tzU3Vic2NyaXB0aW9uID0gdGhpcy53b3JrQWxsb2NhdGlvblNlcnZpY2UuZ2V0VGFza3NCeUNhc2VJZEFuZEV2ZW50SWQodGhpcy5SRVNQT05EX1RPX1FVRVJZX0VWRU5UX1RSSUdHRVJfSUQsXG4gICAgICAgIHRoaXMuY2FzZURldGFpbHMuY2FzZV9pZCwgdGhpcy5jYXNlRGV0YWlscy5jYXNlX3R5cGUuaWQsIHRoaXMuY2FzZURldGFpbHMuY2FzZV90eXBlLmp1cmlzZGljdGlvbi5pZClcbiAgICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgICAgbmV4dDogKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgICAvLyBGaWx0ZXIgdGFzayBieSBxdWVyeSBpZFxuICAgICAgICAgICAgaWYgKHRoaXMudGlkKSB7XG4gICAgICAgICAgICAgIGlmIChyZXNwb25zZS50YXNrcz8ubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyZWRUYXNrcyA9IHJlc3BvbnNlLnRhc2tzPy5maWx0ZXIoKHRhc2s6IFRhc2spID0+IHRhc2suaWQgPT09IHRoaXMudGlkKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbHRlcmVkVGFza3MgPSByZXNwb25zZS50YXNrcztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB0aGlzLnJlYWR5VG9TdWJtaXQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgZXJyb3I6IChlcnJvcjogSHR0cEVycm9yKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJlYWR5VG9TdWJtaXQgPSBmYWxzZTtcbiAgICAgICAgICAgIGlmIChlcnJvci5zdGF0dXMgIT09IDQwMSAmJiBlcnJvci5zdGF0dXMgIT09IDQwMykge1xuICAgICAgICAgICAgICB0aGlzLmVycm9yTm90aWZpZXJTZXJ2aWNlLmFubm91bmNlRXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5lcnJvcih7IHBocmFzZTogZXJyb3IubWVzc2FnZSB9KTtcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3Igb2NjdXJyZWQgd2hpbGUgZmV0Y2hpbmcgZXZlbnQgZGF0YTonLCBlcnJvcik7XG4gICAgICAgICAgICAgIHRoaXMuY2FsbGJhY2tFcnJvcnNTdWJqZWN0Lm5leHQoZXJyb3IpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2VzID0gW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIHRpdGxlOiAnRXJyb3InLFxuICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICdTb21ldGhpbmcgdW5leHBlY3RlZCBoYXBwZW5lZC4gUGxlYXNlIHRyeSBhZ2FpbiBsYXRlci4nLFxuICAgICAgICAgICAgICAgICAgZmllbGRJZDogJ2ZpZWxkLWlkJ1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgd2luZG93LnNjcm9sbFRvKHsgbGVmdDogMCwgdG9wOiAwLCBiZWhhdmlvcjogJ3Ntb290aCcgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yZWFkeVRvU3VibWl0ID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5jcmVhdGVFdmVudFN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLnNlYXJjaFRhc2tzU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuY2FsbGJhY2tFcnJvcnNTdWJqZWN0Py51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHVibGljIGdvQmFjaygpOiB2b2lkIHtcbiAgICB0aGlzLmJhY2tDbGlja2VkLmVtaXQodHJ1ZSk7XG4gIH1cblxuICBwdWJsaWMgc3VibWl0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzU3VibWl0dGluZykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGRhdGEgPSB0aGlzLnFtQ2FzZVF1ZXJpZXNDb2xsZWN0aW9uRGF0YTtcbiAgICBjb25zdCBjcmVhdGVFdmVudCQgPSB0aGlzLmNyZWF0ZUV2ZW50KGRhdGEpO1xuXG4gICAgdGhpcy5pc1N1Ym1pdHRpbmcgPSB0cnVlO1xuXG4gICAgaWYgKHRoaXMucXVlcnlDcmVhdGVDb250ZXh0ID09PSBRdWVyeUNyZWF0ZUNvbnRleHQuUkVTUE9ORCkge1xuICAgICAgaWYgKHRoaXMuZmlsdGVyZWRUYXNrcz8ubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLmNyZWF0ZUV2ZW50U3Vic2NyaXB0aW9uID0gY3JlYXRlRXZlbnQkLnBpcGUoXG4gICAgICAgICAgc3dpdGNoTWFwKChjcmVhdGVFdmVudFJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb25maXJtYXRpb25Cb2R5ID0gY3JlYXRlRXZlbnRSZXNwb25zZT8uYWZ0ZXJfc3VibWl0X2NhbGxiYWNrX3Jlc3BvbnNlPy5jb25maXJtYXRpb25fYm9keTtcbiAgICAgICAgICAgIGNvbnN0IGNvbmZpcm1hdGlvbkhlYWRlciA9IGNyZWF0ZUV2ZW50UmVzcG9uc2U/LmFmdGVyX3N1Ym1pdF9jYWxsYmFja19yZXNwb25zZT8uY29uZmlybWF0aW9uX2hlYWRlcjtcbiAgICAgICAgICAgIHRoaXMuY2FsbGJhY2tDb25maXJtYXRpb25NZXNzYWdlLmVtaXQoeyBib2R5OiBjb25maXJtYXRpb25Cb2R5LCBoZWFkZXI6IGNvbmZpcm1hdGlvbkhlYWRlciB9KTtcblxuICAgICAgICAgICAgcmV0dXJuIHRoaXMud29ya0FsbG9jYXRpb25TZXJ2aWNlLmNvbXBsZXRlVGFzayhcbiAgICAgICAgICAgICAgdGhpcy5maWx0ZXJlZFRhc2tzWzBdLmlkLFxuICAgICAgICAgICAgICB0aGlzLmNhc2VWaWV3VHJpZ2dlci5uYW1lXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0pXG4gICAgICAgICkuc3Vic2NyaWJlKHtcbiAgICAgICAgICBuZXh0OiAoKSA9PiB0aGlzLmZpbmFsaXNlU3VibWlzc2lvbigpLFxuICAgICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHRoaXMuaGFuZGxlRXJyb3IoZXJyb3IpXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3I6IE5vIHRhc2sgdG8gY29tcGxldGUgd2FzIGZvdW5kJyk7XG4gICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlcyA9IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0aXRsZTogJ0Vycm9yJyxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnTm8gdGFzayB0byBjb21wbGV0ZSB3YXMgZm91bmQnLFxuICAgICAgICAgICAgZmllbGRJZDogJ2ZpZWxkLWlkJ1xuICAgICAgICAgIH1cbiAgICAgICAgXTtcbiAgICAgICAgdGhpcy5pc1N1Ym1pdHRpbmcgPSBmYWxzZTtcbiAgICAgICAgd2luZG93LnNjcm9sbFRvKHsgbGVmdDogMCwgdG9wOiAwLCBiZWhhdmlvcjogJ3Ntb290aCcgfSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jcmVhdGVFdmVudFN1YnNjcmlwdGlvbiA9IGNyZWF0ZUV2ZW50JC5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAoY2FsbGJhY2tSZXNwb25zZSkgPT4ge1xuICAgICAgICAgIHRoaXMuZmluYWxpc2VTdWJtaXNzaW9uKCk7XG4gICAgICAgICAgY29uc3QgY29uZmlybWF0aW9uQm9keSA9IGNhbGxiYWNrUmVzcG9uc2U/LmFmdGVyX3N1Ym1pdF9jYWxsYmFja19yZXNwb25zZT8uY29uZmlybWF0aW9uX2JvZHk7XG4gICAgICAgICAgY29uc3QgY29uZmlybWF0aW9uSGVhZGVyID0gY2FsbGJhY2tSZXNwb25zZT8uYWZ0ZXJfc3VibWl0X2NhbGxiYWNrX3Jlc3BvbnNlPy5jb25maXJtYXRpb25faGVhZGVyO1xuICAgICAgICAgIHRoaXMuY2FsbGJhY2tDb25maXJtYXRpb25NZXNzYWdlLmVtaXQoeyBib2R5OiBjb25maXJtYXRpb25Cb2R5LCBoZWFkZXI6IGNvbmZpcm1hdGlvbkhlYWRlciB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IChlcnJvcikgPT4gdGhpcy5oYW5kbGVFcnJvcihlcnJvcilcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlRXZlbnQoZGF0YTogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5jYXNlc1NlcnZpY2UuY3JlYXRlRXZlbnQodGhpcy5jYXNlRGV0YWlscywge1xuICAgICAgZGF0YSxcbiAgICAgIGV2ZW50OiB7XG4gICAgICAgIGlkOiB0aGlzLmNhc2VWaWV3VHJpZ2dlcj8uaWQsXG4gICAgICAgIHN1bW1hcnk6ICcnLFxuICAgICAgICBkZXNjcmlwdGlvbjogdGhpcy5jYXNlVmlld1RyaWdnZXI/LmRlc2NyaXB0aW9uXG4gICAgICB9LFxuICAgICAgZXZlbnRfdG9rZW46IHRoaXMuZXZlbnREYXRhPy5ldmVudF90b2tlbixcbiAgICAgIGlnbm9yZV93YXJuaW5nOiBmYWxzZVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBmaW5hbGlzZVN1Ym1pc3Npb24oKTogdm9pZCB7XG4gICAgdGhpcy5xdWVyeVN1Ym1pdHRlZC5lbWl0KHRydWUpO1xuICAgIHRoaXMucXVhbGlmeWluZ1F1ZXN0aW9uU2VydmljZS5jbGVhclF1YWxpZnlpbmdRdWVzdGlvblNlbGVjdGlvbigpO1xuICAgIHRoaXMuaXNTdWJtaXR0aW5nID0gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUVycm9yKGVycm9yOiBhbnkpOiB2b2lkIHtcbiAgICBjb25zb2xlLmVycm9yKCdFcnJvciBpbiBBUEkgY2FsbHM6JywgZXJyb3IpO1xuXG4gICAgdGhpcy5pc1N1Ym1pdHRpbmcgPSBmYWxzZTtcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy8nLCAnc2VydmljZS1kb3duJ10pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXREb2N1bWVudEF0dGFjaG1lbnRzKCk6IHZvaWQge1xuICAgIGNvbnN0IGF0dGFjaG1lbnRzVmFsdWUgPSB0aGlzLmZvcm1Hcm91cC5nZXQoJ2F0dGFjaG1lbnRzJykudmFsdWU7XG4gICAgaWYgKGF0dGFjaG1lbnRzVmFsdWUgJiYgYXR0YWNobWVudHNWYWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBkb2N1bWVudHMgPSBhdHRhY2htZW50c1ZhbHVlO1xuICAgICAgdGhpcy5hdHRhY2htZW50cyA9IGRvY3VtZW50cy5tYXAoUXVlcnlNYW5hZ2VtZW50VXRpbHMuZG9jdW1lbnRUb0NvbGxlY3Rpb25Gb3JtRG9jdW1lbnQpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBpc1NlcnZpY2VFcnJvckZvdW5kKGVycm9yOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISEoZXJyb3I/LmNhbGxiYWNrRXJyb3JzPy5sZW5ndGgpO1xuICB9XG5cbiAgcHVibGljIHNldENhc2VRdWVyaWVzQ29sbGVjdGlvbkRhdGEoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmV2ZW50RGF0YSkge1xuICAgICAgY29uc29sZS53YXJuKCdFdmVudCBkYXRhIG5vdCBhdmFpbGFibGU7IHNraXBwaW5nIGNvbGxlY3Rpb24gc2V0dXAuJyk7XG4gICAgfVxuXG4gICAgdGhpcy5xdWVyeU1hbmFnZW1lbnRTZXJ2aWNlLnNldENhc2VRdWVyaWVzQ29sbGVjdGlvbkRhdGEoXG4gICAgICB0aGlzLmV2ZW50RGF0YSxcbiAgICAgIHRoaXMucXVlcnlDcmVhdGVDb250ZXh0LFxuICAgICAgdGhpcy5jYXNlRGV0YWlscyxcbiAgICAgIHRoaXMubWVzc2dhZUlkXG4gICAgKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImdvdnVrLWdyaWQtcm93XCIgKm5nSWY9XCJyZWFkeVRvU3VibWl0XCI+XG4gIDxkaXYgY2xhc3M9XCJnb3Z1ay1ncmlkLWNvbHVtbi10d28tdGhpcmRzLWZyb20tZGVza3RvcFwiPlxuICAgIDwhLS0gRXJyb3IgbWVzc2FnZSBzdW1tYXJ5IC0tPlxuICAgIDxkaXYgKm5nSWY9XCJlcnJvck1lc3NhZ2VzLmxlbmd0aCA+IDBcIiBjbGFzcz1cImdvdnVrLWVycm9yLXN1bW1hcnlcIlxuICAgICAgYXJpYS1sYWJlbGxlZGJ5PVwiZXJyb3Itc3VtbWFyeS10aXRsZVwiIHJvbGU9XCJhbGVydFwiIHRhYmluZGV4PVwiLTFcIlxuICAgICAgZGF0YS1tb2R1bGU9XCJnb3Z1ay1lcnJvci1zdW1tYXJ5XCI+XG4gICAgIDxoMiBjbGFzcz1cImdvdnVrLWVycm9yLXN1bW1hcnlfX3RpdGxlXCIgaWQ9XCJlcnJvci1zdW1tYXJ5LXRpdGxlXCI+XG4gICAgICAge3sgJ1RoZXJlIGlzIGEgcHJvYmxlbScgfCBycHhUcmFuc2xhdGUgfX1cbiAgICAgPC9oMj5cbiAgICAgPGRpdiBjbGFzcz1cImdvdnVrLWVycm9yLXN1bW1hcnlfX2JvZHlcIj5cbiAgICAgICA8dWwgY2xhc3M9XCJnb3Z1ay1saXN0IGdvdnVrLWVycm9yLXN1bW1hcnlfX2xpc3RcIj5cbiAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgZXJyb3JNZXNzYWdlIG9mIGVycm9yTWVzc2FnZXNcIj5cbiAgICAgICAgICAgPGEgW2lkXT1cIidlcnJvci0nICsgZXJyb3JNZXNzYWdlLmZpZWxkSWRcIiBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCJcbiAgICAgICAgICAgICBjbGFzcz1cInZhbGlkYXRpb24tZXJyb3JcIj57eyBlcnJvck1lc3NhZ2UuZGVzY3JpcHRpb24gfCBycHhUcmFuc2xhdGUgfX08L2E+XG4gICAgICAgICA8L2xpPlxuICAgICAgIDwvdWw+XG4gICAgIDwvZGl2PlxuICAgPC9kaXY+XG5cbiAgIDxkaXYgKm5nSWY9XCJlcnJvciAmJiAoZXJyb3IuZGV0YWlscyB8fCBlcnJvci5tZXNzYWdlKVwiIGNsYXNzPVwiZXJyb3Itc3VtbWFyeVwiIHJvbGU9XCJncm91cFwiIGFyaWEtbGFiZWxsZWRieT1cImVkaXQtY2FzZS1ldmVudF9lcnJvci1zdW1tYXJ5LWhlYWRpbmdcIiB0YWJpbmRleD1cIi0xXCI+XG4gICAgPGgzIGNsYXNzPVwiaGVhZGluZy1oMyBlcnJvci1zdW1tYXJ5LWhlYWRpbmdcIiBpZD1cImV2ZW50X2Vycm9yLXN1bW1hcnktaGVhZGluZ1wiPlxuICAgICAgVGhlIGV2ZW50IGNvdWxkIG5vdCBiZSBjcmVhdGVkXG4gICAgPC9oMz5cbiAgICA8cD57e2Vycm9yLm1lc3NhZ2V9fTwvcD5cbiAgICA8dWwgKm5nSWY9XCJlcnJvci5kZXRhaWxzPy5maWVsZF9lcnJvcnNcIiBjbGFzcz1cImVycm9yLXN1bW1hcnktbGlzdFwiPlxuICAgICAgPGxpICpuZ0Zvcj1cImxldCBmaWVsZEVycm9yIG9mIGVycm9yLmRldGFpbHMuZmllbGRfZXJyb3JzXCIgY2xhc3M9XCJjY2QtZXJyb3Itc3VtbWFyeS1saVwiPnt7ZmllbGRFcnJvci5tZXNzYWdlfX08L2xpPlxuICAgIDwvdWw+XG4gIDwvZGl2PlxuXG4gIDxjY2QtY2FsbGJhY2stZXJyb3JzIFtjYWxsYmFja0Vycm9yc1N1YmplY3RdPVwiY2FsbGJhY2tFcnJvcnNTdWJqZWN0XCI+PC9jY2QtY2FsbGJhY2stZXJyb3JzPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInF1ZXJ5Q3JlYXRlQ29udGV4dCA9PT0gcXVlcnlDcmVhdGVDb250ZXh0RW51bS5ORVdfUVVFUllcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1jYXB0aW9uLWxcIj57eyAnUmFpc2UgYSBxdWVyeScgfCBycHhUcmFuc2xhdGUgfX08L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxoMSBjbGFzcz1cImdvdnVrLWhlYWRpbmctbFwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInF1ZXJ5Q3JlYXRlQ29udGV4dCA9PT0gcXVlcnlDcmVhdGVDb250ZXh0RW51bS5SRVNQT05EOyBlbHNlIGRlZmF1bHRDaGVja1lvdXJBbnN3ZXJzVGl0bGVcIj5cbiAgICAgICAge3sgJ1JldmlldyBxdWVyeSByZXNwb25zZSBkZXRhaWxzJyB8IHJweFRyYW5zbGF0ZSB9fVxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdENoZWNrWW91ckFuc3dlcnNUaXRsZT5cbiAgICAgICAge3sgJ1JldmlldyBxdWVyeSBkZXRhaWxzJyB8IHJweFRyYW5zbGF0ZSB9fVxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2gxPlxuICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay0hLW1hcmdpbi1ib3R0b20tNFwiPlxuICAgICAgPGNjZC1xdWVyeS1jYXNlLWRldGFpbHMtaGVhZGVyIFtjYXNlRGV0YWlsc109XCJjYXNlRGV0YWlsc1wiPjwvY2NkLXF1ZXJ5LWNhc2UtZGV0YWlscy1oZWFkZXI+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGwgKm5nSWY9XCJxdWVyeUNyZWF0ZUNvbnRleHQgIT09IHF1ZXJ5Q3JlYXRlQ29udGV4dEVudW0uRk9MTE9XVVBcIiBjbGFzcz1cImdvdnVrLXN1bW1hcnktbGlzdCBnb3Z1ay0hLW1hcmdpbi1ib3R0b20tMFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLXN1bW1hcnktbGlzdF9fcm93XCI+XG4gICAgICAgIDxkdCBjbGFzcz1cImdvdnVrLXN1bW1hcnktbGlzdF9fa2V5XCI+XG4gICAgICAgICAge3sgcXVlcnlDcmVhdGVDb250ZXh0ID09PSBxdWVyeUNyZWF0ZUNvbnRleHRFbnVtLlJFU1BPTkQgPyAnU3VibWl0dGVkIHF1ZXJ5JyA6ICdRdWVyeSBzdWJqZWN0JyB8IHJweFRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2R0PlxuICAgICAgICA8ZGQgY2xhc3M9XCJnb3Z1ay1zdW1tYXJ5LWxpc3RfX3ZhbHVlXCI+XG4gICAgICAgICAge3sgcXVlcnlDcmVhdGVDb250ZXh0ID09PSBxdWVyeUNyZWF0ZUNvbnRleHRFbnVtLlJFU1BPTkQgPyBxdWVyeUl0ZW0uc3ViamVjdCA6IGZvcm1Hcm91cC5nZXQoJ3N1YmplY3QnKT8udmFsdWUgfX1cbiAgICAgICAgPC9kZD5cbiAgICAgICAgPGRkIGNsYXNzPVwiZ292dWstc3VtbWFyeS1saXN0X19hY3Rpb25zXCI+XG4gICAgICAgICAgPGEgICpuZ0lmPVwicXVlcnlDcmVhdGVDb250ZXh0ID09PSBxdWVyeUNyZWF0ZUNvbnRleHRFbnVtLk5FV19RVUVSWVwiIFxuICAgICAgICAgICAgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiIGNsYXNzPVwiZ292dWstbGlua1wiIChjbGljayk9XCJnb0JhY2soKVwiPlxuICAgICAgICAgICAge3sgJ0NoYW5nZScgfCBycHhUcmFuc2xhdGUgfX1cbiAgICAgICAgICA8L2E+XG4gICAgICAgIDwvZGQ+XG4gICAgICA8L2Rpdj5cbiAgICA8L2RsPlxuXG4gICAgPGRsIGNsYXNzPVwiZ292dWstc3VtbWFyeS1saXN0IGdvdnVrLSEtbWFyZ2luLWJvdHRvbS0wXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZ292dWstc3VtbWFyeS1saXN0X19yb3dcIj5cbiAgICAgICAgPGR0IGNsYXNzPVwiZ292dWstc3VtbWFyeS1saXN0X19rZXlcIj5cbiAgICAgICAgICB7eyBxdWVyeUNyZWF0ZUNvbnRleHQgPT09IHF1ZXJ5Q3JlYXRlQ29udGV4dEVudW0uUkVTUE9ORCA/ICdSZXNwb25zZSBkZXRhaWwnIDogJ1F1ZXJ5IGRldGFpbCcgfCBycHhUcmFuc2xhdGUgfX1cbiAgICAgICAgPC9kdD5cbiAgICAgICAgPGRkIGNsYXNzPVwiZ292dWstc3VtbWFyeS1saXN0X192YWx1ZVwiPlxuICAgICAgICAgIHt7IGZvcm1Hcm91cC5nZXQoJ2JvZHknKT8udmFsdWUgfX1cbiAgICAgICAgPC9kZD5cbiAgICAgICAgPGRkIGNsYXNzPVwiZ292dWstc3VtbWFyeS1saXN0X19hY3Rpb25zXCI+XG4gICAgICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiIGNsYXNzPVwiZ292dWstbGlua1wiIChjbGljayk9XCJnb0JhY2soKVwiPlxuICAgICAgICAgICAge3sgJ0NoYW5nZScgfCBycHhUcmFuc2xhdGUgfX1cbiAgICAgICAgICA8L2E+XG4gICAgICAgIDwvZGQ+XG4gICAgICA8L2Rpdj5cbiAgICA8L2RsPlxuXG4gICAgPGRsICpuZ0lmPVwicXVlcnlDcmVhdGVDb250ZXh0ID09PSBxdWVyeUNyZWF0ZUNvbnRleHRFbnVtLk5FV19RVUVSWVwiIGNsYXNzPVwiZ292dWstc3VtbWFyeS1saXN0IGdvdnVrLSEtbWFyZ2luLWJvdHRvbS0wXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZ292dWstc3VtbWFyeS1saXN0X19yb3dcIj5cbiAgICAgICAgPGR0IGNsYXNzPVwiZ292dWstc3VtbWFyeS1saXN0X19rZXlcIj5cbiAgICAgICAgICB7eyAnSXMgdGhlIHF1ZXJ5IGhlYXJpbmcgcmVsYXRlZD8nIHwgcnB4VHJhbnNsYXRlIH19XG4gICAgICAgIDwvZHQ+XG4gICAgICAgIDxkZCBjbGFzcz1cImdvdnVrLXN1bW1hcnktbGlzdF9fdmFsdWVcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZm9ybUdyb3VwLmdldCgnaXNIZWFyaW5nUmVsYXRlZCcpPy52YWx1ZSA9PT0gdHJ1ZTsgZWxzZSBpc0hlYXJpbmdSZWxhdGVkRmFsc2VcIj5cbiAgICAgICAgICAgIHt7ICdJcyB0aGUgcXVlcnkgaGVhcmluZyByZWxhdGVkPycgfCBycHhUcmFuc2xhdGU6IG51bGwgOiAnWWVzJyB9fVxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjaXNIZWFyaW5nUmVsYXRlZEZhbHNlPlxuICAgICAgICAgICAge3sgJ0lzIHRoZSBxdWVyeSBoZWFyaW5nIHJlbGF0ZWQ/JyB8IHJweFRyYW5zbGF0ZTogbnVsbCA6ICdObycgfX1cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L2RkPlxuICAgICAgICA8ZGQgY2xhc3M9XCJnb3Z1ay1zdW1tYXJ5LWxpc3RfX2FjdGlvbnNcIj5cbiAgICAgICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCIgY2xhc3M9XCJnb3Z1ay1saW5rXCIgKGNsaWNrKT1cImdvQmFjaygpXCI+XG4gICAgICAgICAgICB7eyAnQ2hhbmdlJyB8IHJweFRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvYT5cbiAgICAgICAgPC9kZD5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2ICpuZ0lmPVwiZm9ybUdyb3VwLmdldCgnaXNIZWFyaW5nUmVsYXRlZCcpPy52YWx1ZVwiIGNsYXNzPVwiZ292dWstc3VtbWFyeS1saXN0X19yb3dcIj5cbiAgICAgICAgPGR0IGNsYXNzPVwiZ292dWstc3VtbWFyeS1saXN0X19rZXlcIj5cbiAgICAgICAgICB7eyBxdWVyeUNyZWF0ZUNvbnRleHQgPT09IHF1ZXJ5Q3JlYXRlQ29udGV4dEVudW0uTkVXX1FVRVJZXG4gICAgICAgICAgICA/ICdXaGF0IGlzIHRoZSBkYXRlIG9mIHRoZSBoZWFyaW5nPydcbiAgICAgICAgICAgIDogJ1doYXQgaXMgdGhlIGRhdGUgb2YgdGhlIGhlYXJpbmcgeW91ciBxdWVyeSBpcyByZWxhdGVkIHRvPycgfCBycHhUcmFuc2xhdGUgfX1cbiAgICAgICAgPC9kdD5cbiAgICAgICAgPGRkIGNsYXNzPVwiZ292dWstc3VtbWFyeS1saXN0X192YWx1ZVwiPlxuICAgICAgICAgIHt7IGZvcm1Hcm91cC5nZXQoJ2hlYXJpbmdEYXRlJyk/LnZhbHVlIHwgZGF0ZTogJ2RkIE1NTSB5eXl5JyB9fVxuICAgICAgICA8L2RkPlxuICAgICAgICA8ZGQgY2xhc3M9XCJnb3Z1ay1zdW1tYXJ5LWxpc3RfX2FjdGlvbnNcIj5cbiAgICAgICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCIgY2xhc3M9XCJnb3Z1ay1saW5rXCIgKGNsaWNrKT1cImdvQmFjaygpXCI+XG4gICAgICAgICAgICB7eyAnQ2hhbmdlJyB8IHJweFRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvYT5cbiAgICAgICAgPC9kZD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGw+XG4gICAgPGRsIGNsYXNzPVwiZ292dWstc3VtbWFyeS1saXN0IGdvdnVrLSEtbWFyZ2luLWJvdHRvbS0wXCIgKm5nSWY9XCJ0aGlzLmZvcm1Hcm91cC5nZXQoJ2F0dGFjaG1lbnRzJykudmFsdWUubGVuZ3RoID4gMFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLXN1bW1hcnktbGlzdF9fcm93XCI+XG4gICAgICAgIDxkdCBjbGFzcz1cImdvdnVrLXN1bW1hcnktbGlzdF9fa2V5XCI+XG4gICAgICAgICAge3sgcXVlcnlDcmVhdGVDb250ZXh0ID09PSBxdWVyeUNyZWF0ZUNvbnRleHRFbnVtLk5FV19RVUVSWSA/ICdVcGxvYWQgYSBmaWxlIHRvIHRoZSBxdWVyeScgOiAnRG9jdW1lbnQgYXR0YWNoZWQnIHwgcnB4VHJhbnNsYXRlIH19XG4gICAgICAgIDwvZHQ+XG4gICAgICAgIDxkZCBjbGFzcz1cImdvdnVrLXN1bW1hcnktbGlzdF9fdmFsdWUgZ292dWstc3VtbWFyeS1saXN0X192YWx1ZS0tZG9jdW1lbnRBdHRhY2hlZFwiPlxuICAgICAgICAgIDxjY2QtcXVlcnktYXR0YWNobWVudHMtcmVhZFxuICAgICAgICAgICAgKm5nSWY9XCJ0aGlzLmZvcm1Hcm91cC5nZXQoJ2F0dGFjaG1lbnRzJykudmFsdWVcIlxuICAgICAgICAgICAgW2F0dGFjaG1lbnRzXT1cImF0dGFjaG1lbnRzXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgPC9jY2QtcXVlcnktYXR0YWNobWVudHMtcmVhZD5cbiAgICAgICAgPC9kZD5cbiAgICAgICAgPGRkIGNsYXNzPVwiZ292dWstc3VtbWFyeS1saXN0X19hY3Rpb25zXCI+XG4gICAgICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiIGNsYXNzPVwiZ292dWstbGlua1wiIChjbGljayk9XCJnb0JhY2soKVwiPlxuICAgICAgICAgICAge3sgJ0NoYW5nZScgfCBycHhUcmFuc2xhdGUgfX1cbiAgICAgICAgICA8L2E+XG4gICAgICAgIDwvZGQ+XG4gICAgICA8L2Rpdj5cbiAgICA8L2RsPlxuXG4gICAgPGRsICpuZ0lmPVwicXVlcnlDcmVhdGVDb250ZXh0ID09PSBxdWVyeUNyZWF0ZUNvbnRleHRFbnVtLlJFU1BPTkRcIiBjbGFzcz1cImdvdnVrLXN1bW1hcnktbGlzdCBnb3Z1ay0hLW1hcmdpbi1ib3R0b20tMFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLXN1bW1hcnktbGlzdF9fcm93XCI+XG4gICAgICAgIDxkdCBjbGFzcz1cImdvdnVrLXN1bW1hcnktbGlzdF9fa2V5XCI+XG4gICAgICAgICAge3sgJ0Nsb3NpbmcgdGhlIHF1ZXJ5JyB8IHJweFRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2R0PlxuICAgICAgICA8ZGQgY2xhc3M9XCJnb3Z1ay1zdW1tYXJ5LWxpc3RfX3ZhbHVlXCI+XG4gICAgICAgICAge3sgZm9ybUdyb3VwLmdldCgnY2xvc2VRdWVyeScpPy52YWx1ZSA/ICdJIHdhbnQgdG8gY2xvc2UgdGhpcyBxdWVyeScgOiAnTm8gYW5zd2VyJyB8IHJweFRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2RkPlxuICAgICAgICA8ZGQgY2xhc3M9XCJnb3Z1ay1zdW1tYXJ5LWxpc3RfX2FjdGlvbnNcIj5cbiAgICAgICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCIgY2xhc3M9XCJnb3Z1ay1saW5rXCIgKGNsaWNrKT1cImdvQmFjaygpXCI+XG4gICAgICAgICAgICB7eyAnQ2hhbmdlJyB8IHJweFRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvYT5cbiAgICAgICAgPC9kZD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGw+XG5cbiAgICA8YnI+XG5cbiAgICA8ZGl2PlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImdvdnVrLWJ1dHRvbiBnb3Z1ay1idXR0b24tLXNlY29uZGFyeSBnb3Z1ay0hLW1hcmdpbi1yaWdodC0zXCIgZGF0YS1tb2R1bGU9XCJnb3Z1ay1idXR0b25cIlxuICAgICAgICAoY2xpY2spPVwiZ29CYWNrKClcIj5cbiAgICAgICAge3sgJ1ByZXZpb3VzJyB8IHJweFRyYW5zbGF0ZSB9fVxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwiZ292dWstYnV0dG9uXCIgZGF0YS1tb2R1bGU9XCJnb3Z1ay1idXR0b25cIiB0eXBlPVwic3VibWl0XCIgKGNsaWNrKT1cInN1Ym1pdCgpXCI+XG4gICAgICAgIHt7ICdTdWJtaXQnIHwgcnB4VHJhbnNsYXRlIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGNjZC1xdWVyeS1ldmVudC1jb21wbGV0aW9uIFtldmVudENvbXBsZXRpb25QYXJhbXNdPVwiZXZlbnRDb21wbGV0aW9uUGFyYW1zXCI+ICAgIFxuICA8L2NjZC1xdWVyeS1ldmVudC1jb21wbGV0aW9uPlxuPC9kaXY+XG4iXX0=
587
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktY2hlY2steW91ci1hbnN3ZXJzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9wYWxldHRlL3F1ZXJ5LW1hbmFnZW1lbnQvY29tcG9uZW50cy9xdWVyeS1jaGVjay15b3VyLWFuc3dlcnMvcXVlcnktY2hlY2steW91ci1hbnN3ZXJzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9wYWxldHRlL3F1ZXJ5LW1hbmFnZW1lbnQvY29tcG9uZW50cy9xdWVyeS1jaGVjay15b3VyLWFuc3dlcnMvcXVlcnktY2hlY2steW91ci1hbnN3ZXJzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBYyxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakQsT0FBTyxFQUNMLGdCQUFnQixFQUtqQixNQUFNLHdDQUF3QyxDQUFDO0FBRWhELE9BQU8sRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLHFCQUFxQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDckcsT0FBTyxFQUFrRCxrQkFBa0IsRUFBRSxhQUFhLEVBQUUsTUFB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QjtjQUwxQyxTQUFTOzJCQUNFLDhCQUE4Qjt5U0FxQnhCLFNBQVM7a0JBQXhCLEtBQUs7WUFDVSxTQUFTO2tCQUF4QixLQUFLO1lBQ1Usa0JBQWtCO2tCQUFqQyxLQUFLO1lBQ1UsU0FBUztrQkFBeEIsS0FBSztZQUNVLHVCQUF1QjtrQkFBdEMsS0FBSztZQUNVLDJCQUEyQjtrQkFBMUMsS0FBSztZQUNXLFdBQVc7a0JBQTNCLE1BQU07WUFDVSxjQUFjO2tCQUE5QixNQUFNO1lBQ1UsMkJBQTJCO2tCQUEzQyxNQUFNOztrRkF6QkksOEJBQThCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgc3dpdGNoTWFwLCB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgQ2FzZUV2ZW50VHJpZ2dlcixcbiAgQ2FzZVZpZXcsXG4gIENhc2VWaWV3VHJpZ2dlcixcbiAgRXJyb3JNZXNzYWdlLFxuICBIdHRwRXJyb3Jcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGliL3NoYXJlZC9kb21haW4nO1xuaW1wb3J0IHsgRXZlbnRDb21wbGV0aW9uUGFyYW1zIH0gZnJvbSAnLi4vLi4vLi4vLi4vY2FzZS1lZGl0b3IvZG9tYWluL2V2ZW50LWNvbXBsZXRpb24tcGFyYW1zLm1vZGVsJztcbmltcG9ydCB7IENhc2VOb3RpZmllciwgQ2FzZXNTZXJ2aWNlLCBXb3JrQWxsb2NhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9jYXNlLWVkaXRvci9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBDYXNlUXVlcmllc0NvbGxlY3Rpb24sIFFtQ2FzZVF1ZXJpZXNDb2xsZWN0aW9uLCBRdWVyeUNyZWF0ZUNvbnRleHQsIFF1ZXJ5TGlzdEl0ZW0gfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHsgUXVlcnlNYW5hZ2VtZW50VXRpbHMgfSBmcm9tICcuLi8uLi91dGlscy9xdWVyeS1tYW5hZ2VtZW50LnV0aWxzJztcbmltcG9ydCB7IEZvcm1Eb2N1bWVudCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9zaGFyZWQvZG9tYWluL2RvY3VtZW50JztcbmltcG9ydCB7IFF1YWxpZnlpbmdRdWVzdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9xdWFsaWZ5aW5nLXF1ZXN0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgVGFzayB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2RvbWFpbi93b3JrLWFsbG9jYXRpb24vVGFzayc7XG5pbXBvcnQgeyBRdWVyeU1hbmFnZW1lbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcXVlcnktbWFuYWdlbWVudC5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIEFsZXJ0U2VydmljZSxcbiAgRXJyb3JOb3RpZmllclNlcnZpY2Vcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vc2VydmljZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjY2QtcXVlcnktY2hlY2steW91ci1hbnN3ZXJzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3F1ZXJ5LWNoZWNrLXlvdXItYW5zd2Vycy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3F1ZXJ5LWNoZWNrLXlvdXItYW5zd2Vycy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFF1ZXJ5Q2hlY2tZb3VyQW5zd2Vyc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSByZWFkb25seSBSQUlTRV9BX1FVRVJZX0VWRU5UX1RSSUdHRVJfSUQgPSAncXVlcnlNYW5hZ2VtZW50UmFpc2VRdWVyeSc7XG4gIHByaXZhdGUgcmVhZG9ubHkgUkVTUE9ORF9UT19RVUVSWV9FVkVOVF9UUklHR0VSX0lEID0gJ3F1ZXJ5TWFuYWdlbWVudFJlc3BvbmRRdWVyeSc7XG4gIHByaXZhdGUgcmVhZG9ubHkgQ0FTRV9RVUVSSUVTX0NPTExFQ1RJT05fSUQgPSAnQ2FzZVF1ZXJpZXNDb2xsZWN0aW9uJztcblxuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFRSSUdHRVJfVEVYVF9DT05USU5VRSA9ICdJZ25vcmUgV2FybmluZyBhbmQgQ29udGludWUnO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFRSSUdHRVJfVEVYVF9TVEFSVCA9ICdDb250aW51ZSc7XG5cbiAgcHVibGljIHJlYWRvbmx5IEZJRUxEX1RZUEVfQ09NUExFWCA9ICdDb21wbGV4JztcbiAgcHVibGljIHJlYWRvbmx5IERJU1BMQVlfQ09OVEVYVF9SRUFET05MWSA9ICdSRUFET05MWSc7XG4gIHB1YmxpYyByZWFkb25seSBRTV9TRUxFQ1RfRklSU1RfQ09MTEVDVElPTiA9ICdzZWxlY3RGaXJzdENvbGxlY3Rpb24nO1xuICBwdWJsaWMgcmVhZG9ubHkgUU1fQ09MTEVDVElPTl9QUk9NUFQgPSAncHJvbXB0UW1Db2xsZWN0aW9uJztcbiAgcHVibGljIHJlYWRvbmx5IENJVklMX0pVUklTRElDVElPTiA9ICdDSVZJTCc7XG5cbiAgcHVibGljIHRyaWdnZXJUZXh0U3RhcnQgPSBRdWVyeUNoZWNrWW91ckFuc3dlcnNDb21wb25lbnQuVFJJR0dFUl9URVhUX1NUQVJUO1xuICBwdWJsaWMgdHJpZ2dlclRleHRJZ25vcmVXYXJuaW5ncyA9IFF1ZXJ5Q2hlY2tZb3VyQW5zd2Vyc0NvbXBvbmVudC5UUklHR0VSX1RFWFRfQ09OVElOVUU7XG5cbiAgQElucHV0KCkgcHVibGljIGZvcm1Hcm91cDogRm9ybUdyb3VwO1xuICBASW5wdXQoKSBwdWJsaWMgcXVlcnlJdGVtOiBRdWVyeUxpc3RJdGVtO1xuICBASW5wdXQoKSBwdWJsaWMgcXVlcnlDcmVhdGVDb250ZXh0OiBRdWVyeUNyZWF0ZUNvbnRleHQ7XG4gIEBJbnB1dCgpIHB1YmxpYyBldmVudERhdGE6IENhc2VFdmVudFRyaWdnZXIgfCBudWxsID0gbnVsbDtcbiAgQElucHV0KCkgcHVibGljIG11bHRpcGxlRm9sbG93VXBGZWF0dXJlOiBib29sZWFuO1xuICBASW5wdXQoKSBwdWJsaWMgcW1DYXNlUXVlcmllc0NvbGxlY3Rpb25EYXRhOiBRbUNhc2VRdWVyaWVzQ29sbGVjdGlvbjtcbiAgQE91dHB1dCgpIHB1YmxpYyBiYWNrQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgQE91dHB1dCgpIHB1YmxpYyBxdWVyeVN1Ym1pdHRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgQE91dHB1dCgpIHB1YmxpYyBjYWxsYmFja0NvbmZpcm1hdGlvbk1lc3NhZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0+KCk7XG5cbiAgcHJpdmF0ZSBjYXNlVmlld1RyaWdnZXI6IENhc2VWaWV3VHJpZ2dlcjtcbiAgcHVibGljIGNhc2VEZXRhaWxzOiBDYXNlVmlldztcbiAgcHJpdmF0ZSBxdWVyeUlkOiBzdHJpbmc7XG4gIHByaXZhdGUgdGlkOiBzdHJpbmc7XG4gIHByaXZhdGUgY3JlYXRlRXZlbnRTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSBzZWFyY2hUYXNrc1N1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gIHB1YmxpYyBxdWVyeUNyZWF0ZUNvbnRleHRFbnVtID0gUXVlcnlDcmVhdGVDb250ZXh0O1xuICBwdWJsaWMgZXZlbnRDb21wbGV0aW9uUGFyYW1zOiBFdmVudENvbXBsZXRpb25QYXJhbXM7XG4gIHB1YmxpYyBjYXNlUXVlcmllc0NvbGxlY3Rpb25zOiBDYXNlUXVlcmllc0NvbGxlY3Rpb25bXTtcbiAgcHVibGljIGZpZWxkSWQ6IHN0cmluZztcbiAgcHVibGljIGF0dGFjaG1lbnRzOiBGb3JtRG9jdW1lbnRbXTtcblxuICBwdWJsaWMgZXJyb3JNZXNzYWdlczogRXJyb3JNZXNzYWdlW10gPSBbXTtcbiAgcHVibGljIGZpbHRlcmVkVGFza3M6IFRhc2tbXSA9IFtdO1xuICBwdWJsaWMgcmVhZHlUb1N1Ym1pdDogYm9vbGVhbjtcbiAgcHVibGljIGlzU3VibWl0dGluZzogYm9vbGVhbiA9IGZhbHNlO1xuICBwdWJsaWMgbWVzc2FnZUlkOiBzdHJpbmc7XG4gIHB1YmxpYyBjYWxsYmFja0Vycm9yc1N1YmplY3Q6IFN1YmplY3Q8YW55PiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgcHVibGljIGVycm9yOiBhbnk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNhc2VzU2VydmljZTogQ2FzZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2FzZU5vdGlmaWVyOiBDYXNlTm90aWZpZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSB3b3JrQWxsb2NhdGlvblNlcnZpY2U6IFdvcmtBbGxvY2F0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHF1YWxpZnlpbmdRdWVzdGlvblNlcnZpY2U6IFF1YWxpZnlpbmdRdWVzdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBxdWVyeU1hbmFnZW1lbnRTZXJ2aWNlOiBRdWVyeU1hbmFnZW1lbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZXJyb3JOb3RpZmllclNlcnZpY2U6IEVycm9yTm90aWZpZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgYWxlcnRTZXJ2aWNlOiBBbGVydFNlcnZpY2UsXG4gICkge31cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5xdWVyeUlkID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXMucWlkO1xuICAgIHRoaXMudGlkID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtcz8udGlkO1xuICAgIHRoaXMubWVzc2FnZUlkPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtcy5kYXRhaWQ7XG5cbiAgICB0aGlzLmNhc2VOb3RpZmllci5jYXNlVmlldy5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgoY2FzZURldGFpbHMpID0+IHtcbiAgICAgIHRoaXMuY2FzZURldGFpbHMgPSBjYXNlRGV0YWlscztcblxuICAgICAgLy8gRmluZCB0aGUgYXBwcm9wcmlhdGUgZXZlbnQgdHJpZ2dlciBiYXNlZCBvbiB0aGUgcXVlcnlDcmVhdGVDb250ZXh0XG4gICAgICB0aGlzLmNhc2VWaWV3VHJpZ2dlciA9IHRoaXMuY2FzZURldGFpbHMudHJpZ2dlcnMuZmluZCgodHJpZ2dlcikgPT5cbiAgICAgICAgdGhpcy5xdWVyeUNyZWF0ZUNvbnRleHQgIT09IFF1ZXJ5Q3JlYXRlQ29udGV4dC5SRVNQT05EXG4gICAgICAgIC8vIElmIHRoZSBjb250ZXh0IGlzIG5vdCAnUkVTUE9ORCcsIGZpbmQgdGhlIHRyaWdnZXIgd2l0aCB0aGUgSUQgZm9yIHJhaXNpbmcgYSBxdWVyeVxuICAgICAgICAgID8gdHJpZ2dlci5pZCA9PT0gdGhpcy5SQUlTRV9BX1FVRVJZX0VWRU5UX1RSSUdHRVJfSURcbiAgICAgICAgLy8gSWYgdGhlIGNvbnRleHQgaXMgJ1JFU1BPTkQnLCBmaW5kIHRoZSB0cmlnZ2VyIHdpdGggdGhlIElEIGZvciByZXNwb25kaW5nIHRvIGEgcXVlcnlcbiAgICAgICAgICA6IHRyaWdnZXIuaWQgPT09IHRoaXMuUkVTUE9ORF9UT19RVUVSWV9FVkVOVF9UUklHR0VSX0lEXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgLy8gR2V0IHRoZSBkb2N1bWVudCBhdHRhY2htZW50c1xuICAgIHRoaXMuZ2V0RG9jdW1lbnRBdHRhY2htZW50cygpO1xuXG4gICAgdGhpcy5zZXRDYXNlUXVlcmllc0NvbGxlY3Rpb25EYXRhKCk7XG5cbiAgICBpZiAodGhpcy5xdWVyeUNyZWF0ZUNvbnRleHQgPT09IFF1ZXJ5Q3JlYXRlQ29udGV4dC5SRVNQT05EKSB7XG4gICAgICB0aGlzLnNlYXJjaFRhc2tzU3Vic2NyaXB0aW9uID0gdGhpcy53b3JrQWxsb2NhdGlvblNlcnZpY2UuZ2V0VGFza3NCeUNhc2VJZEFuZEV2ZW50SWQodGhpcy5SRVNQT05EX1RPX1FVRVJZX0VWRU5UX1RSSUdHRVJfSUQsXG4gICAgICAgIHRoaXMuY2FzZURldGFpbHMuY2FzZV9pZCwgdGhpcy5jYXNlRGV0YWlscy5jYXNlX3R5cGUuaWQsIHRoaXMuY2FzZURldGFpbHMuY2FzZV90eXBlLmp1cmlzZGljdGlvbi5pZClcbiAgICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgICAgbmV4dDogKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgICAvLyBGaWx0ZXIgdGFzayBieSBxdWVyeSBpZFxuICAgICAgICAgICAgaWYgKHRoaXMudGlkKSB7XG4gICAgICAgICAgICAgIGlmIChyZXNwb25zZS50YXNrcz8ubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyZWRUYXNrcyA9IHJlc3BvbnNlLnRhc2tzPy5maWx0ZXIoKHRhc2s6IFRhc2spID0+IHRhc2suaWQgPT09IHRoaXMudGlkKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbHRlcmVkVGFza3MgPSByZXNwb25zZS50YXNrcztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB0aGlzLnJlYWR5VG9TdWJtaXQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgZXJyb3I6IChlcnJvcjogSHR0cEVycm9yKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJlYWR5VG9TdWJtaXQgPSBmYWxzZTtcbiAgICAgICAgICAgIGlmIChlcnJvci5zdGF0dXMgIT09IDQwMSAmJiBlcnJvci5zdGF0dXMgIT09IDQwMykge1xuICAgICAgICAgICAgICB0aGlzLmVycm9yTm90aWZpZXJTZXJ2aWNlLmFubm91bmNlRXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5lcnJvcih7IHBocmFzZTogZXJyb3IubWVzc2FnZSB9KTtcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3Igb2NjdXJyZWQgd2hpbGUgZmV0Y2hpbmcgZXZlbnQgZGF0YTonLCBlcnJvcik7XG4gICAgICAgICAgICAgIHRoaXMuY2FsbGJhY2tFcnJvcnNTdWJqZWN0Lm5leHQoZXJyb3IpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2VzID0gW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIHRpdGxlOiAnRXJyb3InLFxuICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICdTb21ldGhpbmcgdW5leHBlY3RlZCBoYXBwZW5lZC4gUGxlYXNlIHRyeSBhZ2FpbiBsYXRlci4nLFxuICAgICAgICAgICAgICAgICAgZmllbGRJZDogJ2ZpZWxkLWlkJ1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgd2luZG93LnNjcm9sbFRvKHsgbGVmdDogMCwgdG9wOiAwLCBiZWhhdmlvcjogJ3Ntb290aCcgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yZWFkeVRvU3VibWl0ID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5jcmVhdGVFdmVudFN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLnNlYXJjaFRhc2tzU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuY2FsbGJhY2tFcnJvcnNTdWJqZWN0Py51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHVibGljIGdvQmFjaygpOiB2b2lkIHtcbiAgICB0aGlzLmJhY2tDbGlja2VkLmVtaXQodHJ1ZSk7XG4gIH1cblxuICBwdWJsaWMgc3VibWl0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzU3VibWl0dGluZykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGRhdGEgPSB0aGlzLnFtQ2FzZVF1ZXJpZXNDb2xsZWN0aW9uRGF0YTtcbiAgICBjb25zdCBjcmVhdGVFdmVudCQgPSB0aGlzLmNyZWF0ZUV2ZW50KGRhdGEpO1xuXG4gICAgdGhpcy5pc1N1Ym1pdHRpbmcgPSB0cnVlO1xuXG4gICAgaWYgKHRoaXMucXVlcnlDcmVhdGVDb250ZXh0ID09PSBRdWVyeUNyZWF0ZUNvbnRleHQuUkVTUE9ORCkge1xuICAgICAgaWYgKHRoaXMuZmlsdGVyZWRUYXNrcz8ubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLmNyZWF0ZUV2ZW50U3Vic2NyaXB0aW9uID0gY3JlYXRlRXZlbnQkLnBpcGUoXG4gICAgICAgICAgc3dpdGNoTWFwKChjcmVhdGVFdmVudFJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb25maXJtYXRpb25Cb2R5ID0gY3JlYXRlRXZlbnRSZXNwb25zZT8uYWZ0ZXJfc3VibWl0X2NhbGxiYWNrX3Jlc3BvbnNlPy5jb25maXJtYXRpb25fYm9keTtcbiAgICAgICAgICAgIGNvbnN0IGNvbmZpcm1hdGlvbkhlYWRlciA9IGNyZWF0ZUV2ZW50UmVzcG9uc2U/LmFmdGVyX3N1Ym1pdF9jYWxsYmFja19yZXNwb25zZT8uY29uZmlybWF0aW9uX2hlYWRlcjtcbiAgICAgICAgICAgIHRoaXMuY2FsbGJhY2tDb25maXJtYXRpb25NZXNzYWdlLmVtaXQoeyBib2R5OiBjb25maXJtYXRpb25Cb2R5LCBoZWFkZXI6IGNvbmZpcm1hdGlvbkhlYWRlciB9KTtcblxuICAgICAgICAgICAgcmV0dXJuIHRoaXMud29ya0FsbG9jYXRpb25TZXJ2aWNlLmNvbXBsZXRlVGFzayhcbiAgICAgICAgICAgICAgdGhpcy5maWx0ZXJlZFRhc2tzWzBdLmlkLFxuICAgICAgICAgICAgICB0aGlzLmNhc2VWaWV3VHJpZ2dlci5uYW1lXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0pXG4gICAgICAgICkuc3Vic2NyaWJlKHtcbiAgICAgICAgICBuZXh0OiAoKSA9PiB0aGlzLmZpbmFsaXNlU3VibWlzc2lvbigpLFxuICAgICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHRoaXMuaGFuZGxlRXJyb3IoZXJyb3IpXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3I6IE5vIHRhc2sgdG8gY29tcGxldGUgd2FzIGZvdW5kJyk7XG4gICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlcyA9IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0aXRsZTogJ0Vycm9yJyxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnTm8gdGFzayB0byBjb21wbGV0ZSB3YXMgZm91bmQnLFxuICAgICAgICAgICAgZmllbGRJZDogJ2ZpZWxkLWlkJ1xuICAgICAgICAgIH1cbiAgICAgICAgXTtcbiAgICAgICAgdGhpcy5pc1N1Ym1pdHRpbmcgPSBmYWxzZTtcbiAgICAgICAgd2luZG93LnNjcm9sbFRvKHsgbGVmdDogMCwgdG9wOiAwLCBiZWhhdmlvcjogJ3Ntb290aCcgfSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jcmVhdGVFdmVudFN1YnNjcmlwdGlvbiA9IGNyZWF0ZUV2ZW50JC5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAoY2FsbGJhY2tSZXNwb25zZSkgPT4ge1xuICAgICAgICAgIHRoaXMuZmluYWxpc2VTdWJtaXNzaW9uKCk7XG4gICAgICAgICAgY29uc3QgY29uZmlybWF0aW9uQm9keSA9IGNhbGxiYWNrUmVzcG9uc2U/LmFmdGVyX3N1Ym1pdF9jYWxsYmFja19yZXNwb25zZT8uY29uZmlybWF0aW9uX2JvZHk7XG4gICAgICAgICAgY29uc3QgY29uZmlybWF0aW9uSGVhZGVyID0gY2FsbGJhY2tSZXNwb25zZT8uYWZ0ZXJfc3VibWl0X2NhbGxiYWNrX3Jlc3BvbnNlPy5jb25maXJtYXRpb25faGVhZGVyO1xuICAgICAgICAgIHRoaXMuY2FsbGJhY2tDb25maXJtYXRpb25NZXNzYWdlLmVtaXQoeyBib2R5OiBjb25maXJtYXRpb25Cb2R5LCBoZWFkZXI6IGNvbmZpcm1hdGlvbkhlYWRlciB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IChlcnJvcikgPT4gdGhpcy5oYW5kbGVFcnJvcihlcnJvcilcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlRXZlbnQoZGF0YTogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5jYXNlc1NlcnZpY2UuY3JlYXRlRXZlbnQodGhpcy5jYXNlRGV0YWlscywge1xuICAgICAgZGF0YSxcbiAgICAgIGV2ZW50OiB7XG4gICAgICAgIGlkOiB0aGlzLmNhc2VWaWV3VHJpZ2dlcj8uaWQsXG4gICAgICAgIHN1bW1hcnk6ICcnLFxuICAgICAgICBkZXNjcmlwdGlvbjogdGhpcy5jYXNlVmlld1RyaWdnZXI/LmRlc2NyaXB0aW9uXG4gICAgICB9LFxuICAgICAgZXZlbnRfdG9rZW46IHRoaXMuZXZlbnREYXRhPy5ldmVudF90b2tlbixcbiAgICAgIGlnbm9yZV93YXJuaW5nOiBmYWxzZVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBmaW5hbGlzZVN1Ym1pc3Npb24oKTogdm9pZCB7XG4gICAgdGhpcy5xdWVyeVN1Ym1pdHRlZC5lbWl0KHRydWUpO1xuICAgIHRoaXMucXVhbGlmeWluZ1F1ZXN0aW9uU2VydmljZS5jbGVhclF1YWxpZnlpbmdRdWVzdGlvblNlbGVjdGlvbigpO1xuICAgIHRoaXMuaXNTdWJtaXR0aW5nID0gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUVycm9yKGVycm9yOiBhbnkpOiB2b2lkIHtcbiAgICBjb25zb2xlLmVycm9yKCdFcnJvciBpbiBBUEkgY2FsbHM6JywgZXJyb3IpO1xuICAgIHRoaXMuaXNTdWJtaXR0aW5nID0gZmFsc2U7XG5cbiAgICBpZiAodGhpcy5pc1NlcnZpY2VFcnJvckZvdW5kKGVycm9yKSl7XG4gICAgICB0aGlzLmVycm9yID0gbnVsbDtcbiAgICAgIHRoaXMuY2FsbGJhY2tFcnJvcnNTdWJqZWN0Lm5leHQoZXJyb3IpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoZXJyb3IgJiYgZXJyb3Iuc3RhdHVzICE9PSA0MDEgJiYgZXJyb3Iuc3RhdHVzICE9PSA0MDMpIHtcbiAgICAgICAgdGhpcy5lcnJvciA9IGVycm9yO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvJywgJ3NlcnZpY2UtZG93biddKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB3aW5kb3cuc2Nyb2xsVG8oeyBsZWZ0OiAwLCB0b3A6IDAsIGJlaGF2aW9yOiAnc21vb3RoJyB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RG9jdW1lbnRBdHRhY2htZW50cygpOiB2b2lkIHtcbiAgICBjb25zdCBhdHRhY2htZW50c1ZhbHVlID0gdGhpcy5mb3JtR3JvdXAuZ2V0KCdhdHRhY2htZW50cycpLnZhbHVlO1xuICAgIGlmIChhdHRhY2htZW50c1ZhbHVlICYmIGF0dGFjaG1lbnRzVmFsdWUubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgZG9jdW1lbnRzID0gYXR0YWNobWVudHNWYWx1ZTtcbiAgICAgIHRoaXMuYXR0YWNobWVudHMgPSBkb2N1bWVudHMubWFwKFF1ZXJ5TWFuYWdlbWVudFV0aWxzLmRvY3VtZW50VG9Db2xsZWN0aW9uRm9ybURvY3VtZW50KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaXNTZXJ2aWNlRXJyb3JGb3VuZChlcnJvcjogYW55KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhKGVycm9yPy5jYWxsYmFja0Vycm9ycz8ubGVuZ3RoKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRDYXNlUXVlcmllc0NvbGxlY3Rpb25EYXRhKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5ldmVudERhdGEpIHtcbiAgICAgIGNvbnNvbGUud2FybignRXZlbnQgZGF0YSBub3QgYXZhaWxhYmxlOyBza2lwcGluZyBjb2xsZWN0aW9uIHNldHVwLicpO1xuICAgIH1cblxuICAgIHRoaXMucXVlcnlNYW5hZ2VtZW50U2VydmljZS5zZXRDYXNlUXVlcmllc0NvbGxlY3Rpb25EYXRhKFxuICAgICAgdGhpcy5ldmVudERhdGEsXG4gICAgICB0aGlzLnF1ZXJ5Q3JlYXRlQ29udGV4dCxcbiAgICAgIHRoaXMuY2FzZURldGFpbHMsXG4gICAgICB0aGlzLm1lc3NhZ2VJZFxuICAgICk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJnb3Z1ay1ncmlkLXJvd1wiICpuZ0lmPVwicmVhZHlUb1N1Ym1pdFwiPlxuICA8ZGl2IGNsYXNzPVwiZ292dWstZ3JpZC1jb2x1bW4tdHdvLXRoaXJkcy1mcm9tLWRlc2t0b3BcIj5cbiAgICA8IS0tIEVycm9yIG1lc3NhZ2Ugc3VtbWFyeSAtLT5cbiAgICA8ZGl2ICpuZ0lmPVwiZXJyb3JNZXNzYWdlcy5sZW5ndGggPiAwXCIgY2xhc3M9XCJnb3Z1ay1lcnJvci1zdW1tYXJ5XCJcbiAgICAgIGFyaWEtbGFiZWxsZWRieT1cImVycm9yLXN1bW1hcnktdGl0bGVcIiByb2xlPVwiYWxlcnRcIiB0YWJpbmRleD1cIi0xXCJcbiAgICAgIGRhdGEtbW9kdWxlPVwiZ292dWstZXJyb3Itc3VtbWFyeVwiPlxuICAgICA8aDIgY2xhc3M9XCJnb3Z1ay1lcnJvci1zdW1tYXJ5X190aXRsZVwiIGlkPVwiZXJyb3Itc3VtbWFyeS10aXRsZVwiPlxuICAgICAgIHt7ICdUaGVyZSBpcyBhIHByb2JsZW0nIHwgcnB4VHJhbnNsYXRlIH19XG4gICAgIDwvaDI+XG4gICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1lcnJvci1zdW1tYXJ5X19ib2R5XCI+XG4gICAgICAgPHVsIGNsYXNzPVwiZ292dWstbGlzdCBnb3Z1ay1lcnJvci1zdW1tYXJ5X19saXN0XCI+XG4gICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGVycm9yTWVzc2FnZSBvZiBlcnJvck1lc3NhZ2VzXCI+XG4gICAgICAgICAgIDxhIFtpZF09XCInZXJyb3ItJyArIGVycm9yTWVzc2FnZS5maWVsZElkXCIgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiXG4gICAgICAgICAgICAgY2xhc3M9XCJ2YWxpZGF0aW9uLWVycm9yXCI+e3sgZXJyb3JNZXNzYWdlLmRlc2NyaXB0aW9uIHwgcnB4VHJhbnNsYXRlIH19PC9hPlxuICAgICAgICAgPC9saT5cbiAgICAgICA8L3VsPlxuICAgICA8L2Rpdj5cbiAgIDwvZGl2PlxuXG4gICA8ZGl2ICpuZ0lmPVwiZXJyb3IgJiYgKGVycm9yLmRldGFpbHMgfHwgZXJyb3IubWVzc2FnZSlcIiBjbGFzcz1cImVycm9yLXN1bW1hcnlcIiByb2xlPVwiZ3JvdXBcIiBhcmlhLWxhYmVsbGVkYnk9XCJlZGl0LWNhc2UtZXZlbnRfZXJyb3Itc3VtbWFyeS1oZWFkaW5nXCIgdGFiaW5kZXg9XCItMVwiPlxuICAgIDxoMyBjbGFzcz1cImhlYWRpbmctaDMgZXJyb3Itc3VtbWFyeS1oZWFkaW5nXCIgaWQ9XCJldmVudF9lcnJvci1zdW1tYXJ5LWhlYWRpbmdcIj5cbiAgICAgIFRoZSBldmVudCBjb3VsZCBub3QgYmUgY3JlYXRlZFxuICAgIDwvaDM+XG4gICAgPHA+e3tlcnJvci5tZXNzYWdlfX08L3A+XG4gICAgPHVsICpuZ0lmPVwiZXJyb3IuZGV0YWlscz8uZmllbGRfZXJyb3JzXCIgY2xhc3M9XCJlcnJvci1zdW1tYXJ5LWxpc3RcIj5cbiAgICAgIDxsaSAqbmdGb3I9XCJsZXQgZmllbGRFcnJvciBvZiBlcnJvci5kZXRhaWxzLmZpZWxkX2Vycm9yc1wiIGNsYXNzPVwiY2NkLWVycm9yLXN1bW1hcnktbGlcIj57e2ZpZWxkRXJyb3IubWVzc2FnZX19PC9saT5cbiAgICA8L3VsPlxuICA8L2Rpdj5cblxuICA8Y2NkLWNhbGxiYWNrLWVycm9ycyBbY2FsbGJhY2tFcnJvcnNTdWJqZWN0XT1cImNhbGxiYWNrRXJyb3JzU3ViamVjdFwiPjwvY2NkLWNhbGxiYWNrLWVycm9ycz5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJxdWVyeUNyZWF0ZUNvbnRleHQgPT09IHF1ZXJ5Q3JlYXRlQ29udGV4dEVudW0uTkVXX1FVRVJZXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZ292dWstY2FwdGlvbi1sXCI+e3sgJ1JhaXNlIGEgcXVlcnknIHwgcnB4VHJhbnNsYXRlIH19PC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8aDEgY2xhc3M9XCJnb3Z1ay1oZWFkaW5nLWxcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJxdWVyeUNyZWF0ZUNvbnRleHQgPT09IHF1ZXJ5Q3JlYXRlQ29udGV4dEVudW0uUkVTUE9ORDsgZWxzZSBkZWZhdWx0Q2hlY2tZb3VyQW5zd2Vyc1RpdGxlXCI+XG4gICAgICAgIHt7ICdSZXZpZXcgcXVlcnkgcmVzcG9uc2UgZGV0YWlscycgfCBycHhUcmFuc2xhdGUgfX1cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRDaGVja1lvdXJBbnN3ZXJzVGl0bGU+XG4gICAgICAgIHt7ICdSZXZpZXcgcXVlcnkgZGV0YWlscycgfCBycHhUcmFuc2xhdGUgfX1cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9oMT5cbiAgICA8ZGl2IGNsYXNzPVwiZ292dWstIS1tYXJnaW4tYm90dG9tLTRcIj5cbiAgICAgIDxjY2QtcXVlcnktY2FzZS1kZXRhaWxzLWhlYWRlciBbY2FzZURldGFpbHNdPVwiY2FzZURldGFpbHNcIj48L2NjZC1xdWVyeS1jYXNlLWRldGFpbHMtaGVhZGVyPlxuICAgIDwvZGl2PlxuXG4gICAgPGRsICpuZ0lmPVwicXVlcnlDcmVhdGVDb250ZXh0ICE9PSBxdWVyeUNyZWF0ZUNvbnRleHRFbnVtLkZPTExPV1VQXCIgY2xhc3M9XCJnb3Z1ay1zdW1tYXJ5LWxpc3QgZ292dWstIS1tYXJnaW4tYm90dG9tLTBcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1zdW1tYXJ5LWxpc3RfX3Jvd1wiPlxuICAgICAgICA8ZHQgY2xhc3M9XCJnb3Z1ay1zdW1tYXJ5LWxpc3RfX2tleVwiPlxuICAgICAgICAgIHt7IHF1ZXJ5Q3JlYXRlQ29udGV4dCA9PT0gcXVlcnlDcmVhdGVDb250ZXh0RW51bS5SRVNQT05EID8gJ1N1Ym1pdHRlZCBxdWVyeScgOiAnUXVlcnkgc3ViamVjdCcgfCBycHhUcmFuc2xhdGUgfX1cbiAgICAgICAgPC9kdD5cbiAgICAgICAgPGRkIGNsYXNzPVwiZ292dWstc3VtbWFyeS1saXN0X192YWx1ZVwiPlxuICAgICAgICAgIHt7IHF1ZXJ5Q3JlYXRlQ29udGV4dCA9PT0gcXVlcnlDcmVhdGVDb250ZXh0RW51bS5SRVNQT05EID8gcXVlcnlJdGVtLnN1YmplY3QgOiBmb3JtR3JvdXAuZ2V0KCdzdWJqZWN0Jyk/LnZhbHVlIH19XG4gICAgICAgIDwvZGQ+XG4gICAgICAgIDxkZCBjbGFzcz1cImdvdnVrLXN1bW1hcnktbGlzdF9fYWN0aW9uc1wiPlxuICAgICAgICAgIDxhICAqbmdJZj1cInF1ZXJ5Q3JlYXRlQ29udGV4dCA9PT0gcXVlcnlDcmVhdGVDb250ZXh0RW51bS5ORVdfUVVFUllcIiBcbiAgICAgICAgICAgIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIiBjbGFzcz1cImdvdnVrLWxpbmtcIiAoY2xpY2spPVwiZ29CYWNrKClcIj5cbiAgICAgICAgICAgIHt7ICdDaGFuZ2UnIHwgcnB4VHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9hPlxuICAgICAgICA8L2RkPlxuICAgICAgPC9kaXY+XG4gICAgPC9kbD5cblxuICAgIDxkbCBjbGFzcz1cImdvdnVrLXN1bW1hcnktbGlzdCBnb3Z1ay0hLW1hcmdpbi1ib3R0b20tMFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLXN1bW1hcnktbGlzdF9fcm93XCI+XG4gICAgICAgIDxkdCBjbGFzcz1cImdvdnVrLXN1bW1hcnktbGlzdF9fa2V5XCI+XG4gICAgICAgICAge3sgcXVlcnlDcmVhdGVDb250ZXh0ID09PSBxdWVyeUNyZWF0ZUNvbnRleHRFbnVtLlJFU1BPTkQgPyAnUmVzcG9uc2UgZGV0YWlsJyA6ICdRdWVyeSBkZXRhaWwnIHwgcnB4VHJhbnNsYXRlIH19XG4gICAgICAgIDwvZHQ+XG4gICAgICAgIDxkZCBjbGFzcz1cImdvdnVrLXN1bW1hcnktbGlzdF9fdmFsdWVcIj5cbiAgICAgICAgICB7eyBmb3JtR3JvdXAuZ2V0KCdib2R5Jyk/LnZhbHVlIH19XG4gICAgICAgIDwvZGQ+XG4gICAgICAgIDxkZCBjbGFzcz1cImdvdnVrLXN1bW1hcnktbGlzdF9fYWN0aW9uc1wiPlxuICAgICAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIiBjbGFzcz1cImdvdnVrLWxpbmtcIiAoY2xpY2spPVwiZ29CYWNrKClcIj5cbiAgICAgICAgICAgIHt7ICdDaGFuZ2UnIHwgcnB4VHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9hPlxuICAgICAgICA8L2RkPlxuICAgICAgPC9kaXY+XG4gICAgPC9kbD5cblxuICAgIDxkbCAqbmdJZj1cInF1ZXJ5Q3JlYXRlQ29udGV4dCA9PT0gcXVlcnlDcmVhdGVDb250ZXh0RW51bS5ORVdfUVVFUllcIiBjbGFzcz1cImdvdnVrLXN1bW1hcnktbGlzdCBnb3Z1ay0hLW1hcmdpbi1ib3R0b20tMFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLXN1bW1hcnktbGlzdF9fcm93XCI+XG4gICAgICAgIDxkdCBjbGFzcz1cImdvdnVrLXN1bW1hcnktbGlzdF9fa2V5XCI+XG4gICAgICAgICAge3sgJ0lzIHRoZSBxdWVyeSBoZWFyaW5nIHJlbGF0ZWQ/JyB8IHJweFRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2R0PlxuICAgICAgICA8ZGQgY2xhc3M9XCJnb3Z1ay1zdW1tYXJ5LWxpc3RfX3ZhbHVlXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZvcm1Hcm91cC5nZXQoJ2lzSGVhcmluZ1JlbGF0ZWQnKT8udmFsdWUgPT09IHRydWU7IGVsc2UgaXNIZWFyaW5nUmVsYXRlZEZhbHNlXCI+XG4gICAgICAgICAgICB7eyAnSXMgdGhlIHF1ZXJ5IGhlYXJpbmcgcmVsYXRlZD8nIHwgcnB4VHJhbnNsYXRlOiBudWxsIDogJ1llcycgfX1cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2lzSGVhcmluZ1JlbGF0ZWRGYWxzZT5cbiAgICAgICAgICAgIHt7ICdJcyB0aGUgcXVlcnkgaGVhcmluZyByZWxhdGVkPycgfCBycHhUcmFuc2xhdGU6IG51bGwgOiAnTm8nIH19XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9kZD5cbiAgICAgICAgPGRkIGNsYXNzPVwiZ292dWstc3VtbWFyeS1saXN0X19hY3Rpb25zXCI+XG4gICAgICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiIGNsYXNzPVwiZ292dWstbGlua1wiIChjbGljayk9XCJnb0JhY2soKVwiPlxuICAgICAgICAgICAge3sgJ0NoYW5nZScgfCBycHhUcmFuc2xhdGUgfX1cbiAgICAgICAgICA8L2E+XG4gICAgICAgIDwvZGQ+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiAqbmdJZj1cImZvcm1Hcm91cC5nZXQoJ2lzSGVhcmluZ1JlbGF0ZWQnKT8udmFsdWVcIiBjbGFzcz1cImdvdnVrLXN1bW1hcnktbGlzdF9fcm93XCI+XG4gICAgICAgIDxkdCBjbGFzcz1cImdvdnVrLXN1bW1hcnktbGlzdF9fa2V5XCI+XG4gICAgICAgICAge3sgcXVlcnlDcmVhdGVDb250ZXh0ID09PSBxdWVyeUNyZWF0ZUNvbnRleHRFbnVtLk5FV19RVUVSWVxuICAgICAgICAgICAgPyAnV2hhdCBpcyB0aGUgZGF0ZSBvZiB0aGUgaGVhcmluZz8nXG4gICAgICAgICAgICA6ICdXaGF0IGlzIHRoZSBkYXRlIG9mIHRoZSBoZWFyaW5nIHlvdXIgcXVlcnkgaXMgcmVsYXRlZCB0bz8nIHwgcnB4VHJhbnNsYXRlIH19XG4gICAgICAgIDwvZHQ+XG4gICAgICAgIDxkZCBjbGFzcz1cImdvdnVrLXN1bW1hcnktbGlzdF9fdmFsdWVcIj5cbiAgICAgICAgICB7eyBmb3JtR3JvdXAuZ2V0KCdoZWFyaW5nRGF0ZScpPy52YWx1ZSB8IGRhdGU6ICdkZCBNTU0geXl5eScgfX1cbiAgICAgICAgPC9kZD5cbiAgICAgICAgPGRkIGNsYXNzPVwiZ292dWstc3VtbWFyeS1saXN0X19hY3Rpb25zXCI+XG4gICAgICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiIGNsYXNzPVwiZ292dWstbGlua1wiIChjbGljayk9XCJnb0JhY2soKVwiPlxuICAgICAgICAgICAge3sgJ0NoYW5nZScgfCBycHhUcmFuc2xhdGUgfX1cbiAgICAgICAgICA8L2E+XG4gICAgICAgIDwvZGQ+XG4gICAgICA8L2Rpdj5cbiAgICA8L2RsPlxuICAgIDxkbCBjbGFzcz1cImdvdnVrLXN1bW1hcnktbGlzdCBnb3Z1ay0hLW1hcmdpbi1ib3R0b20tMFwiICpuZ0lmPVwidGhpcy5mb3JtR3JvdXAuZ2V0KCdhdHRhY2htZW50cycpLnZhbHVlLmxlbmd0aCA+IDBcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1zdW1tYXJ5LWxpc3RfX3Jvd1wiPlxuICAgICAgICA8ZHQgY2xhc3M9XCJnb3Z1ay1zdW1tYXJ5LWxpc3RfX2tleVwiPlxuICAgICAgICAgIHt7IHF1ZXJ5Q3JlYXRlQ29udGV4dCA9PT0gcXVlcnlDcmVhdGVDb250ZXh0RW51bS5ORVdfUVVFUlkgPyAnVXBsb2FkIGEgZmlsZSB0byB0aGUgcXVlcnknIDogJ0RvY3VtZW50IGF0dGFjaGVkJyB8IHJweFRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2R0PlxuICAgICAgICA8ZGQgY2xhc3M9XCJnb3Z1ay1zdW1tYXJ5LWxpc3RfX3ZhbHVlIGdvdnVrLXN1bW1hcnktbGlzdF9fdmFsdWUtLWRvY3VtZW50QXR0YWNoZWRcIj5cbiAgICAgICAgICA8Y2NkLXF1ZXJ5LWF0dGFjaG1lbnRzLXJlYWRcbiAgICAgICAgICAgICpuZ0lmPVwidGhpcy5mb3JtR3JvdXAuZ2V0KCdhdHRhY2htZW50cycpLnZhbHVlXCJcbiAgICAgICAgICAgIFthdHRhY2htZW50c109XCJhdHRhY2htZW50c1wiXG4gICAgICAgICAgPlxuICAgICAgICAgIDwvY2NkLXF1ZXJ5LWF0dGFjaG1lbnRzLXJlYWQ+XG4gICAgICAgIDwvZGQ+XG4gICAgICAgIDxkZCBjbGFzcz1cImdvdnVrLXN1bW1hcnktbGlzdF9fYWN0aW9uc1wiPlxuICAgICAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIiBjbGFzcz1cImdvdnVrLWxpbmtcIiAoY2xpY2spPVwiZ29CYWNrKClcIj5cbiAgICAgICAgICAgIHt7ICdDaGFuZ2UnIHwgcnB4VHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9hPlxuICAgICAgICA8L2RkPlxuICAgICAgPC9kaXY+XG4gICAgPC9kbD5cblxuICAgIDxkbCAqbmdJZj1cInF1ZXJ5Q3JlYXRlQ29udGV4dCA9PT0gcXVlcnlDcmVhdGVDb250ZXh0RW51bS5SRVNQT05EXCIgY2xhc3M9XCJnb3Z1ay1zdW1tYXJ5LWxpc3QgZ292dWstIS1tYXJnaW4tYm90dG9tLTBcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1zdW1tYXJ5LWxpc3RfX3Jvd1wiPlxuICAgICAgICA8ZHQgY2xhc3M9XCJnb3Z1ay1zdW1tYXJ5LWxpc3RfX2tleVwiPlxuICAgICAgICAgIHt7ICdDbG9zaW5nIHRoZSBxdWVyeScgfCBycHhUcmFuc2xhdGUgfX1cbiAgICAgICAgPC9kdD5cbiAgICAgICAgPGRkIGNsYXNzPVwiZ292dWstc3VtbWFyeS1saXN0X192YWx1ZVwiPlxuICAgICAgICAgIHt7IGZvcm1Hcm91cC5nZXQoJ2Nsb3NlUXVlcnknKT8udmFsdWUgPyAnSSB3YW50IHRvIGNsb3NlIHRoaXMgcXVlcnknIDogJ05vIGFuc3dlcicgfCBycHhUcmFuc2xhdGUgfX1cbiAgICAgICAgPC9kZD5cbiAgICAgICAgPGRkIGNsYXNzPVwiZ292dWstc3VtbWFyeS1saXN0X19hY3Rpb25zXCI+XG4gICAgICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiIGNsYXNzPVwiZ292dWstbGlua1wiIChjbGljayk9XCJnb0JhY2soKVwiPlxuICAgICAgICAgICAge3sgJ0NoYW5nZScgfCBycHhUcmFuc2xhdGUgfX1cbiAgICAgICAgICA8L2E+XG4gICAgICAgIDwvZGQ+XG4gICAgICA8L2Rpdj5cbiAgICA8L2RsPlxuXG4gICAgPGJyPlxuXG4gICAgPGRpdj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJnb3Z1ay1idXR0b24gZ292dWstYnV0dG9uLS1zZWNvbmRhcnkgZ292dWstIS1tYXJnaW4tcmlnaHQtM1wiIGRhdGEtbW9kdWxlPVwiZ292dWstYnV0dG9uXCJcbiAgICAgICAgKGNsaWNrKT1cImdvQmFjaygpXCI+XG4gICAgICAgIHt7ICdQcmV2aW91cycgfCBycHhUcmFuc2xhdGUgfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImdvdnVrLWJ1dHRvblwiIGRhdGEtbW9kdWxlPVwiZ292dWstYnV0dG9uXCIgdHlwZT1cInN1Ym1pdFwiIChjbGljayk9XCJzdWJtaXQoKVwiPlxuICAgICAgICB7eyAnU3VibWl0JyB8IHJweFRyYW5zbGF0ZSB9fVxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxjY2QtcXVlcnktZXZlbnQtY29tcGxldGlvbiBbZXZlbnRDb21wbGV0aW9uUGFyYW1zXT1cImV2ZW50Q29tcGxldGlvblBhcmFtc1wiPiAgICBcbiAgPC9jY2QtcXVlcnktZXZlbnQtY29tcGxldGlvbj5cbjwvZGl2PlxuIl19
@@ -37,21 +37,21 @@ function QueryConfirmationComponent_main_0_ng_container_3_Template(rf, ctx) { if
37
37
  } if (rf & 2) {
38
38
  const ctx_r0 = i0.ɵɵnextContext(2);
39
39
  i0.ɵɵadvance(3);
40
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(4, 9, "Query submitted"));
40
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(4, 11, "Query submitted"));
41
41
  i0.ɵɵadvance(3);
42
- i0.ɵɵproperty("content", i0.ɵɵpipeBind1(7, 11, ctx_r0.callbackConfirmationMessageText == null ? null : ctx_r0.callbackConfirmationMessageText.header));
42
+ i0.ɵɵproperty("content", i0.ɵɵpipeBind1(7, 13, ctx_r0.callbackConfirmationMessageText == null ? null : ctx_r0.callbackConfirmationMessageText.header));
43
43
  i0.ɵɵadvance(4);
44
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(11, 13, "What happens next"));
44
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(11, 15, "What happens next"));
45
45
  i0.ɵɵadvance(2);
46
- i0.ɵɵproperty("content", i0.ɵɵpipeBind1(13, 15, ctx_r0.callbackConfirmationMessageText == null ? null : ctx_r0.callbackConfirmationMessageText.body));
46
+ i0.ɵɵproperty("content", i0.ɵɵpipeBind1(13, 17, ctx_r0.callbackConfirmationMessageText == null ? null : ctx_r0.callbackConfirmationMessageText.body));
47
47
  i0.ɵɵadvance(3);
48
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(16, 17, "When the response is available it will be added to the 'Queries' section."));
48
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(16, 19, "When the response is available it will be added to the 'Queries' section."));
49
49
  i0.ɵɵadvance(3);
50
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(19, 19, "You can"), " ");
50
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(19, 21, "You can"), " ");
51
51
  i0.ɵɵadvance(2);
52
- i0.ɵɵpropertyInterpolate1("routerLink", "/cases/case-details/", ctx_r0.caseId, "");
52
+ i0.ɵɵpropertyInterpolate3("routerLink", "/cases/case-details/", ctx_r0.jurisdiction, "/", ctx_r0.caseType, "/", ctx_r0.caseId, "");
53
53
  i0.ɵɵadvance();
54
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(22, 21, "Go back to the case"));
54
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(22, 23, "Go back to the case"));
55
55
  } }
56
56
  function QueryConfirmationComponent_main_0_ng_container_4_Template(rf, ctx) { if (rf & 1) {
57
57
  i0.ɵɵelementContainerStart(0);
@@ -79,23 +79,23 @@ function QueryConfirmationComponent_main_0_ng_container_4_Template(rf, ctx) { if
79
79
  } if (rf & 2) {
80
80
  const ctx_r0 = i0.ɵɵnextContext(2);
81
81
  i0.ɵɵadvance(3);
82
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(4, 9, "Query response submitted"));
82
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(4, 13, "Query response submitted"));
83
83
  i0.ɵɵadvance(3);
84
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(7, 11, "This query response has been added to the case"));
84
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(7, 15, "This query response has been added to the case"));
85
85
  i0.ɵɵadvance(3);
86
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(10, 13, "You can"), " ");
86
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(10, 17, "You can"), " ");
87
87
  i0.ɵɵadvance(2);
88
- i0.ɵɵpropertyInterpolate1("routerLink", "/cases/case-details/", ctx_r0.caseId, "/tasks");
88
+ i0.ɵɵpropertyInterpolate3("routerLink", "/cases/case-details/", ctx_r0.jurisdiction, "/", ctx_r0.caseType, "/", ctx_r0.caseId, "/tasks");
89
89
  i0.ɵɵadvance();
90
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(13, 15, "return to tasks"));
90
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(13, 19, "return to tasks"));
91
91
  i0.ɵɵadvance(3);
92
- i0.ɵɵpropertyInterpolate1("routerLink", "/cases/case-details/", ctx_r0.caseId, "");
92
+ i0.ɵɵpropertyInterpolate3("routerLink", "/cases/case-details/", ctx_r0.jurisdiction, "/", ctx_r0.caseType, "/", ctx_r0.caseId, "");
93
93
  i0.ɵɵadvance();
94
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(17, 17, "Go back to the case"));
94
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(17, 21, "Go back to the case"));
95
95
  } }
96
96
  function QueryConfirmationComponent_main_0_Template(rf, ctx) { if (rf & 1) {
97
97
  i0.ɵɵelementStart(0, "main", 1)(1, "div", 2)(2, "div", 3);
98
- i0.ɵɵtemplate(3, QueryConfirmationComponent_main_0_ng_container_3_Template, 23, 23, "ng-container", 4)(4, QueryConfirmationComponent_main_0_ng_container_4_Template, 18, 19, "ng-container", 4);
98
+ i0.ɵɵtemplate(3, QueryConfirmationComponent_main_0_ng_container_3_Template, 23, 25, "ng-container", 4)(4, QueryConfirmationComponent_main_0_ng_container_4_Template, 18, 23, "ng-container", 4);
99
99
  i0.ɵɵelementEnd()()();
100
100
  } if (rf & 2) {
101
101
  const ctx_r0 = i0.ɵɵnextContext();
@@ -109,12 +109,16 @@ export class QueryConfirmationComponent {
109
109
  queryCreateContext;
110
110
  callbackConfirmationMessageText = {};
111
111
  caseId = '';
112
+ jurisdiction = '';
113
+ caseType = '';
112
114
  queryCreateContextEnum = QueryCreateContext;
113
115
  constructor(route) {
114
116
  this.route = route;
115
117
  }
116
118
  ngOnInit() {
117
119
  this.caseId = this.route.snapshot.params.cid;
120
+ this.jurisdiction = this.route.snapshot.params.jurisdiction;
121
+ this.caseType = this.route.snapshot.params.caseType;
118
122
  }
119
123
  static ɵfac = function QueryConfirmationComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || QueryConfirmationComponent)(i0.ɵɵdirectiveInject(i1.ActivatedRoute)); };
120
124
  static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: QueryConfirmationComponent, selectors: [["ccd-query-confirmation"]], inputs: { queryCreateContext: "queryCreateContext", callbackConfirmationMessageText: "callbackConfirmationMessageText" }, decls: 1, vars: 1, consts: [["class", "govuk-main-wrapper", 4, "ngIf"], [1, "govuk-main-wrapper"], [1, "govuk-grid-row"], [1, "govuk-grid-column-two-thirds"], [4, "ngIf"], [1, "govuk-panel", "govuk-panel--confirmation"], [1, "govuk-panel__title"], [1, "qm-confirmation", "govuk-panel__body"], [3, "content"], [1, "govuk-body"], [1, "govuk-heading-s"], ["href", "javascript:void(0)", 1, "govuk-link", 3, "routerLink"], [1, "govuk-panel__body"], ["id", "tasks-link", "href", "javascript:void(0)", 1, "govuk-link", 3, "routerLink"], ["id", "case-link", "href", "javascript:void(0)", 1, "govuk-link", 3, "routerLink"]], template: function QueryConfirmationComponent_Template(rf, ctx) { if (rf & 1) {
@@ -125,11 +129,11 @@ export class QueryConfirmationComponent {
125
129
  }
126
130
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(QueryConfirmationComponent, [{
127
131
  type: Component,
128
- args: [{ selector: 'ccd-query-confirmation', template: "<main class=\"govuk-main-wrapper\" *ngIf=\"queryCreateContext\">\n <div class=\"govuk-grid-row\">\n <div class=\"govuk-grid-column-two-thirds\">\n <ng-container *ngIf=\"queryCreateContext === queryCreateContextEnum.NEW_QUERY || queryCreateContext === queryCreateContextEnum.FOLLOWUP\">\n <div class=\"govuk-panel govuk-panel--confirmation\">\n <h1 class=\"govuk-panel__title\">{{'Query submitted' | rpxTranslate}}</h1>\n <div class=\"qm-confirmation govuk-panel__body\">\n <ccd-markdown [content]=\"callbackConfirmationMessageText?.header | rpxTranslate\"></ccd-markdown>\n </div>\n </div>\n <div class=\"govuk-body\">\n <h3 class=\"govuk-heading-s\">{{'What happens next' | rpxTranslate}}</h3>\n <ccd-markdown [content]=\"callbackConfirmationMessageText?.body | rpxTranslate\"></ccd-markdown>\n <p>{{'When the response is available it will be added to the \\'Queries\\' section.' | rpxTranslate}}</p>\n <p>\n {{'You can' | rpxTranslate}}\n <a class=\"govuk-link\" href=\"javascript:void(0)\" routerLink=\"/cases/case-details/{{caseId}}\">{{'Go back to the case' | rpxTranslate}}</a>\n </p>\n </div>\n </ng-container>\n <ng-container *ngIf=\"queryCreateContext === queryCreateContextEnum.RESPOND\">\n <div class=\"govuk-panel govuk-panel--confirmation\">\n <h1 class=\"govuk-panel__title\">{{'Query response submitted' | rpxTranslate}}</h1>\n <div class=\"govuk-panel__body\">{{'This query response has been added to the case' | rpxTranslate}}</div>\n </div>\n <div class=\"govuk-body\">\n {{'You can' | rpxTranslate}}\n <a class=\"govuk-link\" id=\"tasks-link\" href=\"javascript:void(0)\" routerLink=\"/cases/case-details/{{caseId}}/tasks\">{{'return to tasks' | rpxTranslate}}</a> or\n <a class=\"govuk-link\" id=\"case-link\" href=\"javascript:void(0)\" routerLink=\"/cases/case-details/{{caseId}}\">{{'Go back to the case' | rpxTranslate}}</a>\n </div>\n </ng-container>\n </div>\n </div>\n</main>\n" }]
132
+ args: [{ selector: 'ccd-query-confirmation', template: "<main class=\"govuk-main-wrapper\" *ngIf=\"queryCreateContext\">\n <div class=\"govuk-grid-row\">\n <div class=\"govuk-grid-column-two-thirds\">\n <ng-container *ngIf=\"queryCreateContext === queryCreateContextEnum.NEW_QUERY || queryCreateContext === queryCreateContextEnum.FOLLOWUP\">\n <div class=\"govuk-panel govuk-panel--confirmation\">\n <h1 class=\"govuk-panel__title\">{{'Query submitted' | rpxTranslate}}</h1>\n <div class=\"qm-confirmation govuk-panel__body\">\n <ccd-markdown [content]=\"callbackConfirmationMessageText?.header | rpxTranslate\"></ccd-markdown>\n </div>\n </div>\n <div class=\"govuk-body\">\n <h3 class=\"govuk-heading-s\">{{'What happens next' | rpxTranslate}}</h3>\n <ccd-markdown [content]=\"callbackConfirmationMessageText?.body | rpxTranslate\"></ccd-markdown>\n <p>{{'When the response is available it will be added to the \\'Queries\\' section.' | rpxTranslate}}</p>\n <p>\n {{'You can' | rpxTranslate}}\n <a class=\"govuk-link\" href=\"javascript:void(0)\" routerLink=\"/cases/case-details/{{jurisdiction}}/{{caseType}}/{{caseId}}\">{{'Go back to the case' | rpxTranslate}}</a>\n </p>\n </div>\n </ng-container>\n <ng-container *ngIf=\"queryCreateContext === queryCreateContextEnum.RESPOND\">\n <div class=\"govuk-panel govuk-panel--confirmation\">\n <h1 class=\"govuk-panel__title\">{{'Query response submitted' | rpxTranslate}}</h1>\n <div class=\"govuk-panel__body\">{{'This query response has been added to the case' | rpxTranslate}}</div>\n </div>\n <div class=\"govuk-body\">\n {{'You can' | rpxTranslate}}\n <a class=\"govuk-link\" id=\"tasks-link\" href=\"javascript:void(0)\" routerLink=\"/cases/case-details/{{jurisdiction}}/{{caseType}}/{{caseId}}/tasks\">{{'return to tasks' | rpxTranslate}}</a> or\n <a class=\"govuk-link\" id=\"case-link\" href=\"javascript:void(0)\" routerLink=\"/cases/case-details/{{jurisdiction}}/{{caseType}}/{{caseId}}\">{{'Go back to the case' | rpxTranslate}}</a>\n </div>\n </ng-container>\n </div>\n </div>\n</main>\n" }]
129
133
  }], () => [{ type: i1.ActivatedRoute }], { queryCreateContext: [{
130
134
  type: Input
131
135
  }], callbackConfirmationMessageText: [{
132
136
  type: Input
133
137
  }] }); })();
134
138
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(QueryConfirmationComponent, { className: "QueryConfirmationComponent", filePath: "lib/shared/components/palette/query-management/components/query-confirmation/query-confirmation.component.ts", lineNumber: 9 }); })();
135
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktY29uZmlybWF0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9wYWxldHRlL3F1ZXJ5LW1hbmFnZW1lbnQvY29tcG9uZW50cy9xdWVyeS1jb25maXJtYXRpb24vcXVlcnktY29uZmlybWF0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9wYWxldHRlL3F1ZXJ5LW1hbmFnZW1lbnQvY29tcG9uZW50cy9xdWVyeS1jb25maXJtYXRpb24vcXVlcnktY29uZmlybWF0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQzs7Ozs7OztJQ0N0RSw2QkFBd0k7SUFFcEksQUFERiw4QkFBbUQsWUFDbEI7SUFBQSxZQUFvQzs7SUFBQSxpQkFBSztJQUN4RSw4QkFBK0M7SUFDN0Msa0NBQWdHOztJQUVwRyxBQURFLGlCQUFNLEVBQ0Y7SUFFSixBQURGLDhCQUF3QixhQUNNO0lBQUEsYUFBc0M7O0lBQUEsaUJBQUs7SUFDdkUsbUNBQThGOztJQUM5RiwwQkFBRztJQUFBLGFBQWdHOztJQUFBLGlCQUFJO0lBQ3ZHLDBCQUFHO0lBQ0QsYUFDQTs7SUFBQSw4QkFBNEY7SUFBQSxhQUF3Qzs7SUFFeEksQUFERSxBQURzSSxpQkFBSSxFQUN0SSxFQUNBOzs7O0lBYjJCLGVBQW9DO0lBQXBDLDZEQUFvQztJQUVuRCxlQUFrRTtJQUFsRSxzSkFBa0U7SUFJdEQsZUFBc0M7SUFBdEMsaUVBQXNDO0lBQ3BELGVBQWdFO0lBQWhFLHFKQUFnRTtJQUMzRSxlQUFnRztJQUFoRyx5SEFBZ0c7SUFFakcsZUFDQTtJQURBLGtFQUNBO0lBQWdELGVBQTJDO0lBQTNDLGtGQUEyQztJQUFDLGNBQXdDO0lBQXhDLG1FQUF3Qzs7O0lBSTFJLDZCQUE0RTtJQUV4RSxBQURGLDhCQUFtRCxZQUNsQjtJQUFBLFlBQTZDOztJQUFBLGlCQUFLO0lBQ2pGLCtCQUErQjtJQUFBLFlBQW1FOztJQUNwRyxBQURvRyxpQkFBTSxFQUNwRztJQUNOLDhCQUF3QjtJQUN0QixZQUNBOztJQUFBLDhCQUFrSDtJQUFBLGFBQW9DOztJQUFBLGlCQUFJO0lBQUMscUJBQzNKO0lBQUEsOEJBQTJHO0lBQUEsYUFBd0M7O0lBQ3JKLEFBRHFKLGlCQUFJLEVBQ25KOzs7O0lBUDJCLGVBQTZDO0lBQTdDLHNFQUE2QztJQUM3QyxlQUFtRTtJQUFuRSw2RkFBbUU7SUFHbEcsZUFDQTtJQURBLGtFQUNBO0lBQWdFLGVBQWlEO0lBQWpELHdGQUFpRDtJQUFDLGNBQW9DO0lBQXBDLCtEQUFvQztJQUN2RixlQUEyQztJQUEzQyxrRkFBMkM7SUFBQyxjQUF3QztJQUF4QyxtRUFBd0M7OztJQTFCekosQUFERixBQURGLCtCQUE0RCxhQUM5QixhQUNnQjtJQWtCeEMsQUFqQkEsc0dBQXdJLHlGQWlCNUQ7SUFhbEYsQUFERSxBQURFLGlCQUFNLEVBQ0YsRUFDRDs7O0lBOUJjLGVBQXVIO0lBQXZILG9LQUF1SDtJQWlCdkgsY0FBMkQ7SUFBM0QsMEZBQTJEOztBRFpoRixNQUFNLE9BQU8sMEJBQTBCO0lBT1I7SUFOYixrQkFBa0IsQ0FBcUI7SUFDdkMsK0JBQStCLEdBQThCLEVBQUUsQ0FBQztJQUV6RSxNQUFNLEdBQUcsRUFBRSxDQUFDO0lBQ1osc0JBQXNCLEdBQUcsa0JBQWtCLENBQUM7SUFFbkQsWUFBNkIsS0FBcUI7UUFBckIsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7SUFDbEQsQ0FBQztJQUVNLFFBQVE7UUFDYixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7SUFDL0MsQ0FBQztvSEFaVSwwQkFBMEI7NkRBQTFCLDBCQUEwQjtZQ1J2Qyw2RUFBNEQ7O1lBQTFCLDZDQUF3Qjs7O2lGRFE3QywwQkFBMEI7Y0FKdEMsU0FBUzsyQkFDRSx3QkFBd0I7K0NBSWxCLGtCQUFrQjtrQkFBakMsS0FBSztZQUNVLCtCQUErQjtrQkFBOUMsS0FBSzs7a0ZBRkssMEJBQTBCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBRdWVyeUNyZWF0ZUNvbnRleHQgfSBmcm9tICcuLi8uLi9tb2RlbHMvcXVlcnktY3JlYXRlLWNvbnRleHQuZW51bSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NjZC1xdWVyeS1jb25maXJtYXRpb24nLFxuICB0ZW1wbGF0ZVVybDogJy4vcXVlcnktY29uZmlybWF0aW9uLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBRdWVyeUNvbmZpcm1hdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIHB1YmxpYyBxdWVyeUNyZWF0ZUNvbnRleHQ6IFF1ZXJ5Q3JlYXRlQ29udGV4dDtcbiAgQElucHV0KCkgcHVibGljIGNhbGxiYWNrQ29uZmlybWF0aW9uTWVzc2FnZVRleHQ6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7fTtcblxuICBwdWJsaWMgY2FzZUlkID0gJyc7XG4gIHB1YmxpYyBxdWVyeUNyZWF0ZUNvbnRleHRFbnVtID0gUXVlcnlDcmVhdGVDb250ZXh0O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgcm91dGU6IEFjdGl2YXRlZFJvdXRlKSB7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5jYXNlSWQgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtcy5jaWQ7XG4gIH1cbn1cbiIsIjxtYWluIGNsYXNzPVwiZ292dWstbWFpbi13cmFwcGVyXCIgKm5nSWY9XCJxdWVyeUNyZWF0ZUNvbnRleHRcIj5cbiAgPGRpdiBjbGFzcz1cImdvdnVrLWdyaWQtcm93XCI+XG4gICAgPGRpdiBjbGFzcz1cImdvdnVrLWdyaWQtY29sdW1uLXR3by10aGlyZHNcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJxdWVyeUNyZWF0ZUNvbnRleHQgPT09IHF1ZXJ5Q3JlYXRlQ29udGV4dEVudW0uTkVXX1FVRVJZIHx8IHF1ZXJ5Q3JlYXRlQ29udGV4dCA9PT0gcXVlcnlDcmVhdGVDb250ZXh0RW51bS5GT0xMT1dVUFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZ292dWstcGFuZWwgZ292dWstcGFuZWwtLWNvbmZpcm1hdGlvblwiPlxuICAgICAgICAgIDxoMSBjbGFzcz1cImdvdnVrLXBhbmVsX190aXRsZVwiPnt7J1F1ZXJ5IHN1Ym1pdHRlZCcgfCBycHhUcmFuc2xhdGV9fTwvaDE+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInFtLWNvbmZpcm1hdGlvbiBnb3Z1ay1wYW5lbF9fYm9keVwiPlxuICAgICAgICAgICAgPGNjZC1tYXJrZG93biBbY29udGVudF09XCJjYWxsYmFja0NvbmZpcm1hdGlvbk1lc3NhZ2VUZXh0Py5oZWFkZXIgfCBycHhUcmFuc2xhdGVcIj48L2NjZC1tYXJrZG93bj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1ib2R5XCI+XG4gICAgICAgICAgPGgzIGNsYXNzPVwiZ292dWstaGVhZGluZy1zXCI+e3snV2hhdCBoYXBwZW5zIG5leHQnIHwgcnB4VHJhbnNsYXRlfX08L2gzPlxuICAgICAgICAgIDxjY2QtbWFya2Rvd24gW2NvbnRlbnRdPVwiY2FsbGJhY2tDb25maXJtYXRpb25NZXNzYWdlVGV4dD8uYm9keSB8IHJweFRyYW5zbGF0ZVwiPjwvY2NkLW1hcmtkb3duPlxuICAgICAgICAgIDxwPnt7J1doZW4gdGhlIHJlc3BvbnNlIGlzIGF2YWlsYWJsZSBpdCB3aWxsIGJlIGFkZGVkIHRvIHRoZSBcXCdRdWVyaWVzXFwnIHNlY3Rpb24uJyB8IHJweFRyYW5zbGF0ZX19PC9wPlxuICAgICAgICAgIDxwPlxuICAgICAgICAgICAge3snWW91IGNhbicgfCBycHhUcmFuc2xhdGV9fVxuICAgICAgICAgICAgPGEgY2xhc3M9XCJnb3Z1ay1saW5rXCIgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiIHJvdXRlckxpbms9XCIvY2FzZXMvY2FzZS1kZXRhaWxzL3t7Y2FzZUlkfX1cIj57eydHbyBiYWNrIHRvIHRoZSBjYXNlJyB8IHJweFRyYW5zbGF0ZX19PC9hPlxuICAgICAgICAgIDwvcD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJxdWVyeUNyZWF0ZUNvbnRleHQgPT09IHF1ZXJ5Q3JlYXRlQ29udGV4dEVudW0uUkVTUE9ORFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZ292dWstcGFuZWwgZ292dWstcGFuZWwtLWNvbmZpcm1hdGlvblwiPlxuICAgICAgICAgIDxoMSBjbGFzcz1cImdvdnVrLXBhbmVsX190aXRsZVwiPnt7J1F1ZXJ5IHJlc3BvbnNlIHN1Ym1pdHRlZCcgfCBycHhUcmFuc2xhdGV9fTwvaDE+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLXBhbmVsX19ib2R5XCI+e3snVGhpcyBxdWVyeSByZXNwb25zZSBoYXMgYmVlbiBhZGRlZCB0byB0aGUgY2FzZScgfCBycHhUcmFuc2xhdGV9fTwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLWJvZHlcIj5cbiAgICAgICAgICB7eydZb3UgY2FuJyB8IHJweFRyYW5zbGF0ZX19XG4gICAgICAgICAgPGEgY2xhc3M9XCJnb3Z1ay1saW5rXCIgaWQ9XCJ0YXNrcy1saW5rXCIgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiIHJvdXRlckxpbms9XCIvY2FzZXMvY2FzZS1kZXRhaWxzL3t7Y2FzZUlkfX0vdGFza3NcIj57eydyZXR1cm4gdG8gdGFza3MnIHwgcnB4VHJhbnNsYXRlfX08L2E+IG9yXG4gICAgICAgICAgPGEgY2xhc3M9XCJnb3Z1ay1saW5rXCIgaWQ9XCJjYXNlLWxpbmtcIiBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCIgcm91dGVyTGluaz1cIi9jYXNlcy9jYXNlLWRldGFpbHMve3tjYXNlSWR9fVwiPnt7J0dvIGJhY2sgdG8gdGhlIGNhc2UnIHwgcnB4VHJhbnNsYXRlfX08L2E+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9tYWluPlxuIl19
139
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktY29uZmlybWF0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9wYWxldHRlL3F1ZXJ5LW1hbmFnZW1lbnQvY29tcG9uZW50cy9xdWVyeS1jb25maXJtYXRpb24vcXVlcnktY29uZmlybWF0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9wYWxldHRlL3F1ZXJ5LW1hbmFnZW1lbnQvY29tcG9uZW50cy9xdWVyeS1jb25maXJtYXRpb24vcXVlcnktY29uZmlybWF0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQzs7Ozs7OztJQ0N0RSw2QkFBd0k7SUFFcEksQUFERiw4QkFBbUQsWUFDbEI7SUFBQSxZQUFvQzs7SUFBQSxpQkFBSztJQUN4RSw4QkFBK0M7SUFDN0Msa0NBQWdHOztJQUVwRyxBQURFLGlCQUFNLEVBQ0Y7SUFFSixBQURGLDhCQUF3QixhQUNNO0lBQUEsYUFBc0M7O0lBQUEsaUJBQUs7SUFDdkUsbUNBQThGOztJQUM5RiwwQkFBRztJQUFBLGFBQWdHOztJQUFBLGlCQUFJO0lBQ3ZHLDBCQUFHO0lBQ0QsYUFDQTs7SUFBQSw4QkFBMEg7SUFBQSxhQUF3Qzs7SUFFdEssQUFERSxBQURvSyxpQkFBSSxFQUNwSyxFQUNBOzs7O0lBYjJCLGVBQW9DO0lBQXBDLDhEQUFvQztJQUVuRCxlQUFrRTtJQUFsRSxzSkFBa0U7SUFJdEQsZUFBc0M7SUFBdEMsaUVBQXNDO0lBQ3BELGVBQWdFO0lBQWhFLHFKQUFnRTtJQUMzRSxlQUFnRztJQUFoRyx5SEFBZ0c7SUFFakcsZUFDQTtJQURBLGtFQUNBO0lBQWdELGVBQXlFO0lBQXpFLGtJQUF5RTtJQUFDLGNBQXdDO0lBQXhDLG1FQUF3Qzs7O0lBSXhLLDZCQUE0RTtJQUV4RSxBQURGLDhCQUFtRCxZQUNsQjtJQUFBLFlBQTZDOztJQUFBLGlCQUFLO0lBQ2pGLCtCQUErQjtJQUFBLFlBQW1FOztJQUNwRyxBQURvRyxpQkFBTSxFQUNwRztJQUNOLDhCQUF3QjtJQUN0QixZQUNBOztJQUFBLDhCQUFnSjtJQUFBLGFBQW9DOztJQUFBLGlCQUFJO0lBQUMscUJBQ3pMO0lBQUEsOEJBQXlJO0lBQUEsYUFBd0M7O0lBQ25MLEFBRG1MLGlCQUFJLEVBQ2pMOzs7O0lBUDJCLGVBQTZDO0lBQTdDLHVFQUE2QztJQUM3QyxlQUFtRTtJQUFuRSw2RkFBbUU7SUFHbEcsZUFDQTtJQURBLGtFQUNBO0lBQWdFLGVBQStFO0lBQS9FLHdJQUErRTtJQUFDLGNBQW9DO0lBQXBDLCtEQUFvQztJQUNySCxlQUF5RTtJQUF6RSxrSUFBeUU7SUFBQyxjQUF3QztJQUF4QyxtRUFBd0M7OztJQTFCdkwsQUFERixBQURGLCtCQUE0RCxhQUM5QixhQUNnQjtJQWtCeEMsQUFqQkEsc0dBQXdJLHlGQWlCNUQ7SUFhbEYsQUFERSxBQURFLGlCQUFNLEVBQ0YsRUFDRDs7O0lBOUJjLGVBQXVIO0lBQXZILG9LQUF1SDtJQWlCdkgsY0FBMkQ7SUFBM0QsMEZBQTJEOztBRFpoRixNQUFNLE9BQU8sMEJBQTBCO0lBU1I7SUFSYixrQkFBa0IsQ0FBcUI7SUFDdkMsK0JBQStCLEdBQThCLEVBQUUsQ0FBQztJQUV6RSxNQUFNLEdBQUcsRUFBRSxDQUFDO0lBQ1osWUFBWSxHQUFHLEVBQUUsQ0FBQztJQUNsQixRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ2Qsc0JBQXNCLEdBQUcsa0JBQWtCLENBQUM7SUFFbkQsWUFBNkIsS0FBcUI7UUFBckIsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7SUFDbEQsQ0FBQztJQUVNLFFBQVE7UUFDYixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7UUFDN0MsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDO1FBQzVELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztJQUN0RCxDQUFDO29IQWhCVSwwQkFBMEI7NkRBQTFCLDBCQUEwQjtZQ1J2Qyw2RUFBNEQ7O1lBQTFCLDZDQUF3Qjs7O2lGRFE3QywwQkFBMEI7Y0FKdEMsU0FBUzsyQkFDRSx3QkFBd0I7K0NBSWxCLGtCQUFrQjtrQkFBakMsS0FBSztZQUNVLCtCQUErQjtrQkFBOUMsS0FBSzs7a0ZBRkssMEJBQTBCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBRdWVyeUNyZWF0ZUNvbnRleHQgfSBmcm9tICcuLi8uLi9tb2RlbHMvcXVlcnktY3JlYXRlLWNvbnRleHQuZW51bSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NjZC1xdWVyeS1jb25maXJtYXRpb24nLFxuICB0ZW1wbGF0ZVVybDogJy4vcXVlcnktY29uZmlybWF0aW9uLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBRdWVyeUNvbmZpcm1hdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIHB1YmxpYyBxdWVyeUNyZWF0ZUNvbnRleHQ6IFF1ZXJ5Q3JlYXRlQ29udGV4dDtcbiAgQElucHV0KCkgcHVibGljIGNhbGxiYWNrQ29uZmlybWF0aW9uTWVzc2FnZVRleHQ6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7fTtcblxuICBwdWJsaWMgY2FzZUlkID0gJyc7XG4gIHB1YmxpYyBqdXJpc2RpY3Rpb24gPSAnJztcbiAgcHVibGljIGNhc2VUeXBlID0gJyc7XG4gIHB1YmxpYyBxdWVyeUNyZWF0ZUNvbnRleHRFbnVtID0gUXVlcnlDcmVhdGVDb250ZXh0O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgcm91dGU6IEFjdGl2YXRlZFJvdXRlKSB7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5jYXNlSWQgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtcy5jaWQ7XG4gICAgdGhpcy5qdXJpc2RpY3Rpb24gPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtcy5qdXJpc2RpY3Rpb247XG4gICAgdGhpcy5jYXNlVHlwZSA9IHRoaXMucm91dGUuc25hcHNob3QucGFyYW1zLmNhc2VUeXBlO1xuICB9XG59XG4iLCI8bWFpbiBjbGFzcz1cImdvdnVrLW1haW4td3JhcHBlclwiICpuZ0lmPVwicXVlcnlDcmVhdGVDb250ZXh0XCI+XG4gIDxkaXYgY2xhc3M9XCJnb3Z1ay1ncmlkLXJvd1wiPlxuICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1ncmlkLWNvbHVtbi10d28tdGhpcmRzXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicXVlcnlDcmVhdGVDb250ZXh0ID09PSBxdWVyeUNyZWF0ZUNvbnRleHRFbnVtLk5FV19RVUVSWSB8fCBxdWVyeUNyZWF0ZUNvbnRleHQgPT09IHF1ZXJ5Q3JlYXRlQ29udGV4dEVudW0uRk9MTE9XVVBcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLXBhbmVsIGdvdnVrLXBhbmVsLS1jb25maXJtYXRpb25cIj5cbiAgICAgICAgICA8aDEgY2xhc3M9XCJnb3Z1ay1wYW5lbF9fdGl0bGVcIj57eydRdWVyeSBzdWJtaXR0ZWQnIHwgcnB4VHJhbnNsYXRlfX08L2gxPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJxbS1jb25maXJtYXRpb24gZ292dWstcGFuZWxfX2JvZHlcIj5cbiAgICAgICAgICAgIDxjY2QtbWFya2Rvd24gW2NvbnRlbnRdPVwiY2FsbGJhY2tDb25maXJtYXRpb25NZXNzYWdlVGV4dD8uaGVhZGVyIHwgcnB4VHJhbnNsYXRlXCI+PC9jY2QtbWFya2Rvd24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZ292dWstYm9keVwiPlxuICAgICAgICAgIDxoMyBjbGFzcz1cImdvdnVrLWhlYWRpbmctc1wiPnt7J1doYXQgaGFwcGVucyBuZXh0JyB8IHJweFRyYW5zbGF0ZX19PC9oMz5cbiAgICAgICAgICA8Y2NkLW1hcmtkb3duIFtjb250ZW50XT1cImNhbGxiYWNrQ29uZmlybWF0aW9uTWVzc2FnZVRleHQ/LmJvZHkgfCBycHhUcmFuc2xhdGVcIj48L2NjZC1tYXJrZG93bj5cbiAgICAgICAgICA8cD57eydXaGVuIHRoZSByZXNwb25zZSBpcyBhdmFpbGFibGUgaXQgd2lsbCBiZSBhZGRlZCB0byB0aGUgXFwnUXVlcmllc1xcJyBzZWN0aW9uLicgfCBycHhUcmFuc2xhdGV9fTwvcD5cbiAgICAgICAgICA8cD5cbiAgICAgICAgICAgIHt7J1lvdSBjYW4nIHwgcnB4VHJhbnNsYXRlfX1cbiAgICAgICAgICAgIDxhIGNsYXNzPVwiZ292dWstbGlua1wiIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIiByb3V0ZXJMaW5rPVwiL2Nhc2VzL2Nhc2UtZGV0YWlscy97e2p1cmlzZGljdGlvbn19L3t7Y2FzZVR5cGV9fS97e2Nhc2VJZH19XCI+e3snR28gYmFjayB0byB0aGUgY2FzZScgfCBycHhUcmFuc2xhdGV9fTwvYT5cbiAgICAgICAgICA8L3A+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicXVlcnlDcmVhdGVDb250ZXh0ID09PSBxdWVyeUNyZWF0ZUNvbnRleHRFbnVtLlJFU1BPTkRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLXBhbmVsIGdvdnVrLXBhbmVsLS1jb25maXJtYXRpb25cIj5cbiAgICAgICAgICA8aDEgY2xhc3M9XCJnb3Z1ay1wYW5lbF9fdGl0bGVcIj57eydRdWVyeSByZXNwb25zZSBzdWJtaXR0ZWQnIHwgcnB4VHJhbnNsYXRlfX08L2gxPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1wYW5lbF9fYm9keVwiPnt7J1RoaXMgcXVlcnkgcmVzcG9uc2UgaGFzIGJlZW4gYWRkZWQgdG8gdGhlIGNhc2UnIHwgcnB4VHJhbnNsYXRlfX08L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1ib2R5XCI+XG4gICAgICAgICAge3snWW91IGNhbicgfCBycHhUcmFuc2xhdGV9fVxuICAgICAgICAgIDxhIGNsYXNzPVwiZ292dWstbGlua1wiIGlkPVwidGFza3MtbGlua1wiIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIiByb3V0ZXJMaW5rPVwiL2Nhc2VzL2Nhc2UtZGV0YWlscy97e2p1cmlzZGljdGlvbn19L3t7Y2FzZVR5cGV9fS97e2Nhc2VJZH19L3Rhc2tzXCI+e3sncmV0dXJuIHRvIHRhc2tzJyB8IHJweFRyYW5zbGF0ZX19PC9hPiBvclxuICAgICAgICAgIDxhIGNsYXNzPVwiZ292dWstbGlua1wiIGlkPVwiY2FzZS1saW5rXCIgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiIHJvdXRlckxpbms9XCIvY2FzZXMvY2FzZS1kZXRhaWxzL3t7anVyaXNkaWN0aW9ufX0ve3tjYXNlVHlwZX19L3t7Y2FzZUlkfX1cIj57eydHbyBiYWNrIHRvIHRoZSBjYXNlJyB8IHJweFRyYW5zbGF0ZX19PC9hPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbWFpbj5cbiJdfQ==