@hmcts/ccd-case-ui-toolkit 7.1.35-qm-callbackerror → 7.1.35-ungrey-back-button

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 (114) hide show
  1. package/esm2022/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.mjs +110 -33
  2. package/esm2022/lib/shared/components/case-editor/case-edit-submit/case-edit-submit.component.mjs +70 -43
  3. package/esm2022/lib/shared/components/case-editor/case-editor.module.mjs +7 -4
  4. package/esm2022/lib/shared/components/case-editor/services/case-flag-state.service.mjs +3 -1
  5. package/esm2022/lib/shared/components/case-viewer/case-event-trigger/case-event-trigger.component.mjs +14 -4
  6. package/esm2022/lib/shared/components/palette/base-field/abstract-field-write-journey.component.mjs +96 -0
  7. package/esm2022/lib/shared/components/palette/base-field/abstract-journey.component.mjs +82 -0
  8. package/esm2022/lib/shared/components/palette/base-field/index.mjs +3 -1
  9. package/esm2022/lib/shared/components/palette/case-flag/components/add-comments/add-comments.component.mjs +21 -21
  10. package/esm2022/lib/shared/components/palette/case-flag/components/case-flag-summary-list/case-flag-summary-list.component.mjs +3 -3
  11. package/esm2022/lib/shared/components/palette/case-flag/components/confirm-flag-status/confirm-flag-status.component.mjs +25 -22
  12. package/esm2022/lib/shared/components/palette/case-flag/components/manage-case-flags/manage-case-flags.component.mjs +82 -35
  13. package/esm2022/lib/shared/components/palette/case-flag/components/search-language-interpreter/search-language-interpreter.component.mjs +32 -29
  14. package/esm2022/lib/shared/components/palette/case-flag/components/select-flag-location/select-flag-location.component.mjs +33 -28
  15. package/esm2022/lib/shared/components/palette/case-flag/components/select-flag-type/select-flag-type.component.mjs +174 -71
  16. package/esm2022/lib/shared/components/palette/case-flag/components/update-flag/update-flag-add-translation-form/update-flag-add-translation-form.component.mjs +28 -28
  17. package/esm2022/lib/shared/components/palette/case-flag/components/update-flag/update-flag.component.mjs +124 -105
  18. package/esm2022/lib/shared/components/palette/case-flag/read-case-flag-field.component.mjs +31 -4
  19. package/esm2022/lib/shared/components/palette/case-flag/write-case-flag-field.component.mjs +139 -33
  20. package/esm2022/lib/shared/components/palette/history/event-log/event-log.component.mjs +9 -9
  21. package/esm2022/lib/shared/components/palette/linked-cases/components/before-you-start/before-you-start.component.mjs +39 -22
  22. package/esm2022/lib/shared/components/palette/linked-cases/components/check-your-answers/check-your-answers.component.mjs +19 -7
  23. package/esm2022/lib/shared/components/palette/linked-cases/components/link-cases/link-cases.component.mjs +91 -61
  24. package/esm2022/lib/shared/components/palette/linked-cases/components/no-linked-cases/no-linked-cases.component.mjs +13 -9
  25. package/esm2022/lib/shared/components/palette/linked-cases/components/unlink-cases/unlink-cases.component.mjs +85 -48
  26. package/esm2022/lib/shared/components/palette/linked-cases/services/linked-cases.service.mjs +22 -2
  27. package/esm2022/lib/shared/components/palette/linked-cases/write-linked-cases-field.component.mjs +126 -30
  28. package/esm2022/lib/shared/components/palette/palette.module.mjs +4 -3
  29. package/esm2022/lib/shared/components/palette/query-management/components/qualifying-questions/qualifying-question-detail/qualifying-question-detail.component.mjs +12 -10
  30. package/esm2022/lib/shared/components/palette/query-management/components/query-check-your-answers/query-check-your-answers.component.mjs +50 -29
  31. package/esm2022/lib/shared/components/palette/query-management/components/query-details/query-details.component.mjs +158 -104
  32. package/esm2022/lib/shared/components/palette/query-management/components/query-write/query-write-respond-to-query/query-write-respond-to-query.component.mjs +104 -41
  33. package/esm2022/lib/shared/components/palette/query-management/read-query-management-field.component.mjs +4 -21
  34. package/esm2022/lib/shared/domain/index.mjs +2 -1
  35. package/esm2022/lib/shared/domain/journey/index.mjs +3 -0
  36. package/esm2022/lib/shared/domain/journey/journey-instigator.model.mjs +2 -0
  37. package/esm2022/lib/shared/domain/journey/journey.model.mjs +2 -0
  38. package/esm2022/lib/shared/pipes/complex/ccd-page-fields.pipe.mjs +2 -2
  39. package/esm2022/lib/shared/services/index.mjs +2 -1
  40. package/esm2022/lib/shared/services/journey/index.mjs +2 -0
  41. package/esm2022/lib/shared/services/journey/multipage-component-state.service.mjs +117 -0
  42. package/fesm2022/hmcts-ccd-case-ui-toolkit.mjs +2035 -1028
  43. package/fesm2022/hmcts-ccd-case-ui-toolkit.mjs.map +1 -1
  44. package/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.d.ts +17 -3
  45. package/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.d.ts.map +1 -1
  46. package/lib/shared/components/case-editor/case-edit-submit/case-edit-submit.component.d.ts +10 -2
  47. package/lib/shared/components/case-editor/case-edit-submit/case-edit-submit.component.d.ts.map +1 -1
  48. package/lib/shared/components/case-editor/case-editor.module.d.ts.map +1 -1
  49. package/lib/shared/components/case-editor/services/case-flag-state.service.d.ts +1 -0
  50. package/lib/shared/components/case-editor/services/case-flag-state.service.d.ts.map +1 -1
  51. package/lib/shared/components/case-viewer/case-event-trigger/case-event-trigger.component.d.ts +2 -1
  52. package/lib/shared/components/case-viewer/case-event-trigger/case-event-trigger.component.d.ts.map +1 -1
  53. package/lib/shared/components/palette/base-field/abstract-field-write-journey.component.d.ts +30 -0
  54. package/lib/shared/components/palette/base-field/abstract-field-write-journey.component.d.ts.map +1 -0
  55. package/lib/shared/components/palette/base-field/abstract-journey.component.d.ts +27 -0
  56. package/lib/shared/components/palette/base-field/abstract-journey.component.d.ts.map +1 -0
  57. package/lib/shared/components/palette/base-field/index.d.ts +2 -0
  58. package/lib/shared/components/palette/base-field/index.d.ts.map +1 -1
  59. package/lib/shared/components/palette/case-flag/components/add-comments/add-comments.component.d.ts +4 -2
  60. package/lib/shared/components/palette/case-flag/components/add-comments/add-comments.component.d.ts.map +1 -1
  61. package/lib/shared/components/palette/case-flag/components/confirm-flag-status/confirm-flag-status.component.d.ts +4 -2
  62. package/lib/shared/components/palette/case-flag/components/confirm-flag-status/confirm-flag-status.component.d.ts.map +1 -1
  63. package/lib/shared/components/palette/case-flag/components/manage-case-flags/manage-case-flags.component.d.ts +13 -4
  64. package/lib/shared/components/palette/case-flag/components/manage-case-flags/manage-case-flags.component.d.ts.map +1 -1
  65. package/lib/shared/components/palette/case-flag/components/search-language-interpreter/search-language-interpreter.component.d.ts +6 -3
  66. package/lib/shared/components/palette/case-flag/components/search-language-interpreter/search-language-interpreter.component.d.ts.map +1 -1
  67. package/lib/shared/components/palette/case-flag/components/select-flag-location/select-flag-location.component.d.ts +5 -2
  68. package/lib/shared/components/palette/case-flag/components/select-flag-location/select-flag-location.component.d.ts.map +1 -1
  69. package/lib/shared/components/palette/case-flag/components/select-flag-type/select-flag-type.component.d.ts +21 -6
  70. package/lib/shared/components/palette/case-flag/components/select-flag-type/select-flag-type.component.d.ts.map +1 -1
  71. package/lib/shared/components/palette/case-flag/components/update-flag/update-flag-add-translation-form/update-flag-add-translation-form.component.d.ts +4 -2
  72. package/lib/shared/components/palette/case-flag/components/update-flag/update-flag-add-translation-form/update-flag-add-translation-form.component.d.ts.map +1 -1
  73. package/lib/shared/components/palette/case-flag/components/update-flag/update-flag.component.d.ts +7 -3
  74. package/lib/shared/components/palette/case-flag/components/update-flag/update-flag.component.d.ts.map +1 -1
  75. package/lib/shared/components/palette/case-flag/read-case-flag-field.component.d.ts +1 -0
  76. package/lib/shared/components/palette/case-flag/read-case-flag-field.component.d.ts.map +1 -1
  77. package/lib/shared/components/palette/case-flag/write-case-flag-field.component.d.ts +16 -6
  78. package/lib/shared/components/palette/case-flag/write-case-flag-field.component.d.ts.map +1 -1
  79. package/lib/shared/components/palette/linked-cases/components/before-you-start/before-you-start.component.d.ts +6 -4
  80. package/lib/shared/components/palette/linked-cases/components/before-you-start/before-you-start.component.d.ts.map +1 -1
  81. package/lib/shared/components/palette/linked-cases/components/check-your-answers/check-your-answers.component.d.ts +6 -2
  82. package/lib/shared/components/palette/linked-cases/components/check-your-answers/check-your-answers.component.d.ts.map +1 -1
  83. package/lib/shared/components/palette/linked-cases/components/link-cases/link-cases.component.d.ts +7 -3
  84. package/lib/shared/components/palette/linked-cases/components/link-cases/link-cases.component.d.ts.map +1 -1
  85. package/lib/shared/components/palette/linked-cases/components/no-linked-cases/no-linked-cases.component.d.ts +5 -2
  86. package/lib/shared/components/palette/linked-cases/components/no-linked-cases/no-linked-cases.component.d.ts.map +1 -1
  87. package/lib/shared/components/palette/linked-cases/components/unlink-cases/unlink-cases.component.d.ts +9 -3
  88. package/lib/shared/components/palette/linked-cases/components/unlink-cases/unlink-cases.component.d.ts.map +1 -1
  89. package/lib/shared/components/palette/linked-cases/services/linked-cases.service.d.ts +7 -0
  90. package/lib/shared/components/palette/linked-cases/services/linked-cases.service.d.ts.map +1 -1
  91. package/lib/shared/components/palette/linked-cases/write-linked-cases-field.component.d.ts +10 -3
  92. package/lib/shared/components/palette/linked-cases/write-linked-cases-field.component.d.ts.map +1 -1
  93. package/lib/shared/components/palette/query-management/components/qualifying-questions/qualifying-question-detail/qualifying-question-detail.component.d.ts.map +1 -1
  94. package/lib/shared/components/palette/query-management/components/query-check-your-answers/query-check-your-answers.component.d.ts +5 -1
  95. package/lib/shared/components/palette/query-management/components/query-check-your-answers/query-check-your-answers.component.d.ts.map +1 -1
  96. package/lib/shared/components/palette/query-management/components/query-details/query-details.component.d.ts +17 -5
  97. package/lib/shared/components/palette/query-management/components/query-details/query-details.component.d.ts.map +1 -1
  98. package/lib/shared/components/palette/query-management/components/query-write/query-write-respond-to-query/query-write-respond-to-query.component.d.ts +17 -5
  99. package/lib/shared/components/palette/query-management/components/query-write/query-write-respond-to-query/query-write-respond-to-query.component.d.ts.map +1 -1
  100. package/lib/shared/domain/index.d.ts +1 -0
  101. package/lib/shared/domain/index.d.ts.map +1 -1
  102. package/lib/shared/domain/journey/index.d.ts +3 -0
  103. package/lib/shared/domain/journey/index.d.ts.map +1 -0
  104. package/lib/shared/domain/journey/journey-instigator.model.d.ts +5 -0
  105. package/lib/shared/domain/journey/journey-instigator.model.d.ts.map +1 -0
  106. package/lib/shared/domain/journey/journey.model.d.ts +19 -0
  107. package/lib/shared/domain/journey/journey.model.d.ts.map +1 -0
  108. package/lib/shared/services/index.d.ts +1 -0
  109. package/lib/shared/services/index.d.ts.map +1 -1
  110. package/lib/shared/services/journey/index.d.ts +2 -0
  111. package/lib/shared/services/journey/index.d.ts.map +1 -0
  112. package/lib/shared/services/journey/multipage-component-state.service.d.ts +26 -0
  113. package/lib/shared/services/journey/multipage-component-state.service.d.ts.map +1 -0
  114. package/package.json +1 -1
@@ -1,11 +1,13 @@
1
1
  import { Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';
2
2
  import { FormControl, FormGroup } from '@angular/forms';
3
+ import { cloneDeep } from 'lodash';
3
4
  import { FieldsUtils } from '../../../../../services/fields';
4
5
  import { CaseFlagDisplayContextParameter, CaseFlagFieldState, CaseFlagStatus, CaseFlagWizardStepTitle, SelectFlagErrorMessage } from '../../enums';
6
+ import { AbstractJourneyComponent } from '../../../base-field';
5
7
  import * as i0 from "@angular/core";
6
8
  const _c0 = a0 => ({ "form-group-error": a0 });
7
9
  function ManageCaseFlagsComponent_div_7_Template(rf, ctx) { if (rf & 1) {
8
- i0.ɵɵelementStart(0, "div", 9)(1, "span", 10);
10
+ i0.ɵɵelementStart(0, "div", 8)(1, "span", 9);
9
11
  i0.ɵɵtext(2);
10
12
  i0.ɵɵpipe(3, "rpxTranslate");
11
13
  i0.ɵɵelementEnd();
@@ -20,33 +22,25 @@ function ManageCaseFlagsComponent_div_7_Template(rf, ctx) { if (rf & 1) {
20
22
  i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(5, 4, ctx_r0.manageCaseFlagSelectedErrorMessage), " ");
21
23
  } }
22
24
  function ManageCaseFlagsComponent_div_9_Template(rf, ctx) { if (rf & 1) {
23
- i0.ɵɵelementStart(0, "div", 11);
24
- i0.ɵɵelement(1, "input", 12)(2, "label", 13);
25
+ const _r2 = i0.ɵɵgetCurrentView();
26
+ i0.ɵɵelementStart(0, "div", 10)(1, "input", 11);
27
+ i0.ɵɵlistener("change", function ManageCaseFlagsComponent_div_9_Template_input_change_1_listener() { const flagDisplay_r3 = i0.ɵɵrestoreView(_r2).$implicit; const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.onFlagSelectionChange(flagDisplay_r3)); });
28
+ i0.ɵɵelementEnd();
29
+ i0.ɵɵelement(2, "label", 12);
25
30
  i0.ɵɵpipe(3, "manageCaseFlagsLabelDisplay");
26
31
  i0.ɵɵelementEnd();
27
32
  } if (rf & 2) {
28
- const flagDisplay_r2 = ctx.$implicit;
29
- const i_r3 = ctx.index;
33
+ const flagDisplay_r3 = ctx.$implicit;
34
+ const i_r4 = ctx.index;
30
35
  const ctx_r0 = i0.ɵɵnextContext();
31
36
  i0.ɵɵadvance();
32
- i0.ɵɵpropertyInterpolate1("id", "flag-selection-", i_r3, "");
33
- i0.ɵɵproperty("name", ctx_r0.selectedControlName)("value", flagDisplay_r2)("formControlName", ctx_r0.selectedControlName);
37
+ i0.ɵɵpropertyInterpolate1("id", "flag-selection-", i_r4, "");
38
+ i0.ɵɵproperty("checked", ctx_r0.isSelected(flagDisplay_r3));
34
39
  i0.ɵɵadvance();
35
- i0.ɵɵpropertyInterpolate1("for", "flag-selection-", i_r3, "");
36
- i0.ɵɵproperty("innerHtml", i0.ɵɵpipeBind1(3, 8, flagDisplay_r2), i0.ɵɵsanitizeHtml);
40
+ i0.ɵɵpropertyInterpolate1("for", "flag-selection-", i_r4, "");
41
+ i0.ɵɵproperty("innerHtml", i0.ɵɵpipeBind1(3, 6, flagDisplay_r3), i0.ɵɵsanitizeHtml);
37
42
  } }
38
- function ManageCaseFlagsComponent_div_10_Template(rf, ctx) { if (rf & 1) {
39
- const _r4 = i0.ɵɵgetCurrentView();
40
- i0.ɵɵelementStart(0, "div", 14)(1, "button", 15);
41
- i0.ɵɵlistener("click", function ManageCaseFlagsComponent_div_10_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r4); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.onNext()); });
42
- i0.ɵɵtext(2);
43
- i0.ɵɵpipe(3, "rpxTranslate");
44
- i0.ɵɵelementEnd()();
45
- } if (rf & 2) {
46
- i0.ɵɵadvance(2);
47
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 1, "Next"));
48
- } }
49
- export class ManageCaseFlagsComponent {
43
+ export class ManageCaseFlagsComponent extends AbstractJourneyComponent {
50
44
  formGroup;
51
45
  flagsData;
52
46
  caseTitle;
@@ -60,8 +54,23 @@ export class ManageCaseFlagsComponent {
60
54
  noFlagsError = false;
61
55
  selectedControlName = 'selectedManageCaseLocation';
62
56
  excludedFlagStatuses = [CaseFlagStatus.INACTIVE, CaseFlagStatus.NOT_APPROVED];
57
+ cachedControls;
63
58
  ngOnInit() {
64
59
  this.manageCaseFlagTitle = this.setManageCaseFlagTitle(this.displayContextParameter);
60
+ let originalStatus;
61
+ let originalPathToFlag;
62
+ // if the user has progressed to CYA and then navigated away, the flag they selected will be set as inactive, we need to reset this
63
+ const locationControl = this.formGroup.get(this.selectedControlName);
64
+ if (locationControl) {
65
+ originalStatus = locationControl?.value?.originalStatus;
66
+ originalPathToFlag = locationControl?.value?.pathToFlagsFormGroup;
67
+ this.cachedControls = cloneDeep(this.formGroup.controls);
68
+ Object.keys(this.formGroup.controls).forEach((controlName) => {
69
+ if (controlName !== this.selectedControlName) {
70
+ this.formGroup.removeControl(controlName);
71
+ }
72
+ });
73
+ }
65
74
  // Map flags instances to objects for display, filtering out any where the original status is either "Inactive" or
66
75
  // "Not approved"
67
76
  /* istanbul ignore else */
@@ -71,7 +80,7 @@ export class ManageCaseFlagsComponent {
71
80
  if (flagsInstance.flags.details && flagsInstance.flags.details.length > 0) {
72
81
  displayData = [
73
82
  ...displayData,
74
- ...flagsInstance.flags.details.map((detail) => this.mapFlagDetailForDisplay(detail, flagsInstance))
83
+ ...flagsInstance.flags.details.map((detail) => this.mapFlagDetailForDisplay(detail, flagsInstance, originalStatus, originalPathToFlag))
75
84
  ];
76
85
  }
77
86
  return displayData;
@@ -87,7 +96,17 @@ export class ManageCaseFlagsComponent {
87
96
  this.onNoFlagsError();
88
97
  }
89
98
  }
90
- mapFlagDetailForDisplay(flagDetail, flagsInstance) {
99
+ onFlagSelectionChange(selectedFlag) {
100
+ this.formGroup.get(this.selectedControlName).setValue(selectedFlag);
101
+ }
102
+ isSelected(flagDisplay) {
103
+ const selectedFlag = this.formGroup.get(this.selectedControlName)?.value;
104
+ return selectedFlag && this.getFlagID(selectedFlag) === this.getFlagID(flagDisplay);
105
+ }
106
+ getFlagID(flag) {
107
+ return flag?.flagDetailDisplay?.flagDetail?.id || '';
108
+ }
109
+ mapFlagDetailForDisplay(flagDetail, flagsInstance, originalStatusFromFG, originalPathToFlag) {
91
110
  // Reset the flag status with the original persisted status. This is needed because ngOnInit() needs to filter
92
111
  // out any "Inactive" or "Not approved" flags based on their status *before* modification. If the user changes a
93
112
  // flag's status then decides to return to the start of the flag update journey, the flag's status would no
@@ -110,8 +129,20 @@ export class ManageCaseFlagsComponent {
110
129
  }
111
130
  if (formattedValue && FieldsUtils.isNonEmptyObject(formattedValue)) {
112
131
  const originalFlagDetail = formattedValue.details?.find((detail) => detail.id === flagDetail.id);
132
+ let statusToUse;
133
+ if (flagsInstance.pathToFlagsFormGroup === originalPathToFlag) {
134
+ if (originalStatusFromFG) {
135
+ statusToUse = originalStatusFromFG === originalFlagDetail.value?.status ? originalFlagDetail.value?.status : originalStatusFromFG;
136
+ }
137
+ else {
138
+ statusToUse = originalFlagDetail.value?.status;
139
+ }
140
+ }
141
+ else {
142
+ statusToUse = originalFlagDetail.value?.status;
143
+ }
113
144
  if (originalFlagDetail) {
114
- originalStatus = originalFlagDetail.value?.status;
145
+ originalStatus = statusToUse;
115
146
  flagDetail.flagComment = originalFlagDetail.value?.flagComment;
116
147
  flagDetail.flagComment_cy = originalFlagDetail.value?.flagComment_cy;
117
148
  flagDetail.otherDescription = originalFlagDetail.value?.otherDescription;
@@ -180,8 +211,27 @@ export class ManageCaseFlagsComponent {
180
211
  errorMessages: this.errorMessages
181
212
  });
182
213
  }
183
- static ɵfac = function ManageCaseFlagsComponent_Factory(t) { return new (t || ManageCaseFlagsComponent)(); };
184
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ManageCaseFlagsComponent, selectors: [["ccd-manage-case-flags"]], inputs: { formGroup: "formGroup", flagsData: "flagsData", caseTitle: "caseTitle", displayContextParameter: "displayContextParameter" }, outputs: { caseFlagStateEmitter: "caseFlagStateEmitter" }, decls: 11, vars: 10, consts: [[3, "formGroup"], [1, "govuk-form-group", 3, "ngClass"], ["aria-describedby", "manage-case-flag-heading", 1, "govuk-fieldset"], [1, "govuk-fieldset__legend", "govuk-fieldset__legend--m"], ["id", "manage-case-flag-heading", 1, "govuk-fieldset__heading"], ["id", "manage-case-flag-not-selected-error-message", "class", "govuk-error-message", 4, "ngIf"], ["data-module", "govuk-radios", "id", "conditional-radios-list", 1, "govuk-radios", "govuk-radios--conditional"], ["class", "govuk-radios__item", 4, "ngFor", "ngForOf"], ["class", "govuk-button-group", 4, "ngIf"], ["id", "manage-case-flag-not-selected-error-message", 1, "govuk-error-message"], [1, "govuk-visually-hidden"], [1, "govuk-radios__item"], ["type", "radio", 1, "govuk-radios__input", 3, "id", "name", "value", "formControlName"], [1, "govuk-label", "govuk-radios__label", 3, "for", "innerHtml"], [1, "govuk-button-group"], ["type", "button", 1, "button", "button-primary", 3, "click"]], template: function ManageCaseFlagsComponent_Template(rf, ctx) { if (rf & 1) {
214
+ next() {
215
+ this.onNext();
216
+ const cachedControl = this.cachedControls?.[this.selectedControlName];
217
+ if (cachedControl && this.getFlagID(cachedControl.value) === this.getFlagID(this.formGroup.value[this.selectedControlName])) {
218
+ this.reapplyCachedControls();
219
+ }
220
+ if (this.errorMessages.length === 0) {
221
+ super.next();
222
+ }
223
+ }
224
+ reapplyCachedControls() {
225
+ if (this.cachedControls) {
226
+ Object.keys(this.cachedControls).forEach((controlName) => {
227
+ if (!this.formGroup.contains(controlName)) {
228
+ this.formGroup.addControl(controlName, this.cachedControls[controlName]);
229
+ }
230
+ });
231
+ }
232
+ }
233
+ static ɵfac = /*@__PURE__*/ (() => { let ɵManageCaseFlagsComponent_BaseFactory; return function ManageCaseFlagsComponent_Factory(t) { return (ɵManageCaseFlagsComponent_BaseFactory || (ɵManageCaseFlagsComponent_BaseFactory = i0.ɵɵgetInheritedFactory(ManageCaseFlagsComponent)))(t || ManageCaseFlagsComponent); }; })();
234
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ManageCaseFlagsComponent, selectors: [["ccd-manage-case-flags"]], inputs: { formGroup: "formGroup", flagsData: "flagsData", caseTitle: "caseTitle", displayContextParameter: "displayContextParameter" }, outputs: { caseFlagStateEmitter: "caseFlagStateEmitter" }, features: [i0.ɵɵInheritDefinitionFeature], decls: 10, vars: 9, consts: [[3, "formGroup"], [1, "govuk-form-group", 3, "ngClass"], ["aria-describedby", "manage-case-flag-heading", 1, "govuk-fieldset"], [1, "govuk-fieldset__legend", "govuk-fieldset__legend--m"], ["id", "manage-case-flag-heading", 1, "govuk-fieldset__heading"], ["id", "manage-case-flag-not-selected-error-message", "class", "govuk-error-message", 4, "ngIf"], ["data-module", "govuk-radios", "id", "conditional-radios-list", 1, "govuk-radios", "govuk-radios--conditional"], ["class", "govuk-radios__item", 4, "ngFor", "ngForOf"], ["id", "manage-case-flag-not-selected-error-message", 1, "govuk-error-message"], [1, "govuk-visually-hidden"], [1, "govuk-radios__item"], ["type", "radio", 1, "govuk-radios__input", 3, "change", "id", "checked"], [1, "govuk-label", "govuk-radios__label", 3, "for", "innerHtml"]], template: function ManageCaseFlagsComponent_Template(rf, ctx) { if (rf & 1) {
185
235
  i0.ɵɵelementContainerStart(0, 0);
186
236
  i0.ɵɵelementStart(1, "div", 1)(2, "fieldset", 2)(3, "legend", 3)(4, "h1", 4);
187
237
  i0.ɵɵtext(5);
@@ -189,27 +239,24 @@ export class ManageCaseFlagsComponent {
189
239
  i0.ɵɵelementEnd()();
190
240
  i0.ɵɵtemplate(7, ManageCaseFlagsComponent_div_7_Template, 6, 6, "div", 5);
191
241
  i0.ɵɵelementStart(8, "div", 6);
192
- i0.ɵɵtemplate(9, ManageCaseFlagsComponent_div_9_Template, 4, 10, "div", 7);
242
+ i0.ɵɵtemplate(9, ManageCaseFlagsComponent_div_9_Template, 4, 8, "div", 7);
193
243
  i0.ɵɵelementEnd()()();
194
244
  i0.ɵɵelementContainerEnd();
195
- i0.ɵɵtemplate(10, ManageCaseFlagsComponent_div_10_Template, 4, 3, "div", 8);
196
245
  } if (rf & 2) {
197
246
  i0.ɵɵproperty("formGroup", ctx.formGroup);
198
247
  i0.ɵɵadvance();
199
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(8, _c0, ctx.errorMessages.length > 0));
248
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(7, _c0, ctx.errorMessages.length > 0));
200
249
  i0.ɵɵadvance(4);
201
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(6, 6, ctx.manageCaseFlagTitle), " ");
250
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(6, 5, ctx.manageCaseFlagTitle), " ");
202
251
  i0.ɵɵadvance(2);
203
252
  i0.ɵɵproperty("ngIf", ctx.manageCaseFlagSelectedErrorMessage);
204
253
  i0.ɵɵadvance(2);
205
254
  i0.ɵɵproperty("ngForOf", ctx.flagsDisplayData);
206
- i0.ɵɵadvance();
207
- i0.ɵɵproperty("ngIf", !ctx.noFlagsError);
208
255
  } }, styles: [".flag-name-and-description{font-weight:700}\n"], encapsulation: 2 });
209
256
  }
210
257
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ManageCaseFlagsComponent, [{
211
258
  type: Component,
212
- args: [{ selector: 'ccd-manage-case-flags', encapsulation: ViewEncapsulation.None, template: "<ng-container [formGroup]=\"formGroup\">\n <div class=\"govuk-form-group\" [ngClass]=\"{'form-group-error': errorMessages.length > 0}\">\n <fieldset class=\"govuk-fieldset\" aria-describedby=\"manage-case-flag-heading\">\n <legend class=\"govuk-fieldset__legend govuk-fieldset__legend--m\">\n <h1 id=\"manage-case-flag-heading\" class=\"govuk-fieldset__heading\">\n {{manageCaseFlagTitle | rpxTranslate}}\n </h1>\n </legend>\n <div id=\"manage-case-flag-not-selected-error-message\" class=\"govuk-error-message\"\n *ngIf=\"manageCaseFlagSelectedErrorMessage\">\n <span class=\"govuk-visually-hidden\">{{'Error:' | rpxTranslate}}</span> {{manageCaseFlagSelectedErrorMessage | rpxTranslate}}\n </div>\n <div class=\"govuk-radios govuk-radios--conditional\" data-module=\"govuk-radios\" id=\"conditional-radios-list\">\n <div class=\"govuk-radios__item\" *ngFor=\"let flagDisplay of flagsDisplayData; index as i\">\n <input class=\"govuk-radios__input\" id=\"flag-selection-{{i}}\" [name]=\"selectedControlName\"\n type=\"radio\" [value]=\"flagDisplay\" [formControlName]=\"selectedControlName\"/>\n <label class=\"govuk-label govuk-radios__label\" for=\"flag-selection-{{i}}\" [innerHtml]=\"flagDisplay | manageCaseFlagsLabelDisplay\"></label>\n </div>\n </div>\n </fieldset>\n </div>\n</ng-container>\n\n<div class=\"govuk-button-group\" *ngIf=\"!noFlagsError\">\n <button class=\"button button-primary\" type=\"button\" (click)=\"onNext()\">{{'Next' | rpxTranslate}}</button>\n</div>\n", styles: [".flag-name-and-description{font-weight:700}\n"] }]
259
+ args: [{ selector: 'ccd-manage-case-flags', encapsulation: ViewEncapsulation.None, template: "<ng-container [formGroup]=\"formGroup\">\n <div class=\"govuk-form-group\" [ngClass]=\"{'form-group-error': errorMessages.length > 0}\">\n <fieldset class=\"govuk-fieldset\" aria-describedby=\"manage-case-flag-heading\">\n <legend class=\"govuk-fieldset__legend govuk-fieldset__legend--m\">\n <h1 id=\"manage-case-flag-heading\" class=\"govuk-fieldset__heading\">\n {{manageCaseFlagTitle | rpxTranslate}}\n </h1>\n </legend>\n <div id=\"manage-case-flag-not-selected-error-message\" class=\"govuk-error-message\"\n *ngIf=\"manageCaseFlagSelectedErrorMessage\">\n <span class=\"govuk-visually-hidden\">{{'Error:' | rpxTranslate}}</span> {{manageCaseFlagSelectedErrorMessage | rpxTranslate}}\n </div>\n <div class=\"govuk-radios govuk-radios--conditional\" data-module=\"govuk-radios\" id=\"conditional-radios-list\">\n <div class=\"govuk-radios__item\" *ngFor=\"let flagDisplay of flagsDisplayData; index as i\">\n <input class=\"govuk-radios__input\" id=\"flag-selection-{{i}}\"\n type=\"radio\"\n [checked]=\"isSelected(flagDisplay)\"\n (change)=\"onFlagSelectionChange(flagDisplay)\"/>\n <label class=\"govuk-label govuk-radios__label\" for=\"flag-selection-{{i}}\" [innerHtml]=\"flagDisplay | manageCaseFlagsLabelDisplay\"></label>\n </div>\n </div>\n </fieldset>\n </div>\n</ng-container>", styles: [".flag-name-and-description{font-weight:700}\n"] }]
213
260
  }], null, { formGroup: [{
214
261
  type: Input
215
262
  }], flagsData: [{
@@ -221,5 +268,5 @@ export class ManageCaseFlagsComponent {
221
268
  }], caseFlagStateEmitter: [{
222
269
  type: Output
223
270
  }] }); })();
224
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ManageCaseFlagsComponent, { className: "ManageCaseFlagsComponent", filePath: "lib/shared/components/palette/case-flag/components/manage-case-flags/manage-case-flags.component.ts", lineNumber: 14 }); })();
225
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuYWdlLWNhc2UtZmxhZ3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL3BhbGV0dGUvY2FzZS1mbGFnL2NvbXBvbmVudHMvbWFuYWdlLWNhc2UtZmxhZ3MvbWFuYWdlLWNhc2UtZmxhZ3MuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL3BhbGV0dGUvY2FzZS1mbGFnL2NvbXBvbmVudHMvbWFuYWdlLWNhc2UtZmxhZ3MvbWFuYWdlLWNhc2UtZmxhZ3MuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRyxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXhELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUU3RCxPQUFPLEVBQUUsK0JBQStCLEVBQUUsa0JBQWtCLEVBQUUsY0FBYyxFQUFFLHVCQUF1QixFQUFFLHNCQUFzQixFQUFFLE1BQU0sYUFBYSxDQUFDOzs7O0lDSzNJLEFBRkYsOEJBQzZDLGVBQ1A7SUFBQSxZQUEyQjs7SUFBQSxpQkFBTztJQUFDLFlBQ3pFOztJQUFBLGlCQUFNOzs7SUFEZ0MsZUFBMkI7SUFBM0Isb0RBQTJCO0lBQVEsZUFDekU7SUFEeUUsZ0dBQ3pFOzs7SUFFRSwrQkFBeUY7SUFHdkYsQUFGQSw0QkFDOEUsZ0JBQzREOztJQUM1SSxpQkFBTTs7Ozs7SUFIK0IsY0FBeUI7SUFBekIs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QkFBc0I7WUFDcEUsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhO1NBQ2xDLENBQUMsQ0FBQztJQUNMLENBQUM7a0ZBOUlVLHdCQUF3Qjs2REFBeEIsd0JBQXdCO1lDYnJDLGdDQUFzQztZQUk5QixBQURGLEFBREYsQUFERiw4QkFBeUYsa0JBQ1YsZ0JBQ1YsWUFDRztZQUNoRSxZQUNGOztZQUNGLEFBREUsaUJBQUssRUFDRTtZQUNULHlFQUM2QztZQUc3Qyw4QkFBNEc7WUFDMUcsMEVBQXlGO1lBTy9GLEFBREUsQUFERSxpQkFBTSxFQUNHLEVBQ1A7O1lBR1IsMkVBQXNEOztZQXZCeEMseUNBQXVCO1lBQ0wsY0FBMEQ7WUFBMUQsa0ZBQTBEO1lBSWhGLGVBQ0Y7WUFERSw4RUFDRjtZQUdDLGVBQXdDO1lBQXhDLDZEQUF3QztZQUllLGVBQXFCO1lBQXJCLDhDQUFxQjtZQVVwRCxjQUFtQjtZQUFuQix3Q0FBbUI7OztpRkRWdkMsd0JBQXdCO2NBTnBDLFNBQVM7MkJBQ0UsdUJBQXVCLGlCQUdsQixpQkFBaUIsQ0FBQyxJQUFJO2dCQUdyQixTQUFTO2tCQUF4QixLQUFLO1lBQ1UsU0FBUztrQkFBeEIsS0FBSztZQUNVLFNBQVM7a0JBQXhCLEtBQUs7WUFDVSx1QkFBdUI7a0JBQXRDLEtBQUs7WUFDVyxvQkFBb0I7a0JBQXBDLE1BQU07O2tGQUxJLHdCQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRXJyb3JNZXNzYWdlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vZG9tYWluJztcbmltcG9ydCB7IEZpZWxkc1V0aWxzIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vc2VydmljZXMvZmllbGRzJztcbmltcG9ydCB7IENhc2VGbGFnU3RhdGUsIEZsYWdEZXRhaWwsIEZsYWdEZXRhaWxEaXNwbGF5V2l0aEZvcm1Hcm91cFBhdGgsIEZsYWdzLCBGbGFnc1dpdGhGb3JtR3JvdXBQYXRoIH0gZnJvbSAnLi4vLi4vZG9tYWluJztcbmltcG9ydCB7IENhc2VGbGFnRGlzcGxheUNvbnRleHRQYXJhbWV0ZXIsIENhc2VGbGFnRmllbGRTdGF0ZSwgQ2FzZUZsYWdTdGF0dXMsIENhc2VGbGFnV2l6YXJkU3RlcFRpdGxlLCBTZWxlY3RGbGFnRXJyb3JNZXNzYWdlIH0gZnJvbSAnLi4vLi4vZW51bXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjY2QtbWFuYWdlLWNhc2UtZmxhZ3MnLFxuICB0ZW1wbGF0ZVVybDogJy4vbWFuYWdlLWNhc2UtZmxhZ3MuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9tYW5hZ2UtY2FzZS1mbGFncy5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIE1hbmFnZUNhc2VGbGFnc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIHB1YmxpYyBmb3JtR3JvdXA6IEZvcm1Hcm91cDtcbiAgQElucHV0KCkgcHVibGljIGZsYWdzRGF0YTogRmxhZ3NXaXRoRm9ybUdyb3VwUGF0aFtdO1xuICBASW5wdXQoKSBwdWJsaWMgY2FzZVRpdGxlOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHB1YmxpYyBkaXNwbGF5Q29udGV4dFBhcmFtZXRlcjogc3RyaW5nO1xuICBAT3V0cHV0KCkgcHVibGljIGNhc2VGbGFnU3RhdGVFbWl0dGVyOiBFdmVudEVtaXR0ZXI8Q2FzZUZsYWdTdGF0ZT4gPSBuZXcgRXZlbnRFbWl0dGVyPENhc2VGbGFnU3RhdGU+KCk7XG5cbiAgcHVibGljIG1hbmFnZUNhc2VGbGFnVGl0bGU6IENhc2VGbGFnV2l6YXJkU3RlcFRpdGxlO1xuICBwdWJsaWMgZXJyb3JNZXNzYWdlczogRXJyb3JNZXNzYWdlW10gPSBbXTtcbiAgcHVibGljIG1hbmFnZUNhc2VGbGFnU2VsZWN0ZWRFcnJvck1lc3NhZ2U6IFNlbGVjdEZsYWdFcnJvck1lc3NhZ2UgPSBudWxsO1xuICBwdWJsaWMgZmxhZ3NEaXNwbGF5RGF0YTogRmxhZ0RldGFpbERpc3BsYXlXaXRoRm9ybUdyb3VwUGF0aFtdO1xuICBwdWJsaWMgZmxhZ3M6IEZsYWdzO1xuICBwdWJsaWMgbm9GbGFnc0Vycm9yID0gZmFsc2U7XG4gIHB1YmxpYyByZWFkb25seSBzZWxlY3RlZENvbnRyb2xOYW1lID0gJ3NlbGVjdGVkTWFuYWdlQ2FzZUxvY2F0aW9uJztcbiAgcHJpdmF0ZSByZWFkb25seSBleGNsdWRlZEZsYWdTdGF0dXNlczogQ2FzZUZsYWdTdGF0dXNbXSA9IFtDYXNlRmxhZ1N0YXR1cy5JTkFDVElWRSwgQ2FzZUZsYWdTdGF0dXMuTk9UX0FQUFJPVkVEXTtcblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5tYW5hZ2VDYXNlRmxhZ1RpdGxlID0gdGhpcy5zZXRNYW5hZ2VDYXNlRmxhZ1RpdGxlKHRoaXMuZGlzcGxheUNvbnRleHRQYXJhbWV0ZXIpO1xuXG4gICAgLy8gTWFwIGZsYWdzIGluc3RhbmNlcyB0byBvYmplY3RzIGZvciBkaXNwbGF5LCBmaWx0ZXJpbmcgb3V0IGFueSB3aGVyZSB0aGUgb3JpZ2luYWwgc3RhdHVzIGlzIGVpdGhlciBcIkluYWN0aXZlXCIgb3JcbiAgICAvLyBcIk5vdCBhcHByb3ZlZFwiXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAodGhpcy5mbGFnc0RhdGEpIHtcbiAgICAgIHRoaXMuZmxhZ3NEaXNwbGF5RGF0YSA9IHRoaXMuZmxhZ3NEYXRhLnJlZHVjZSgoZGlzcGxheURhdGEsIGZsYWdzSW5zdGFuY2UpID0+IHtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgaWYgKGZsYWdzSW5zdGFuY2UuZmxhZ3MuZGV0YWlscyAmJiBmbGFnc0luc3RhbmNlLmZsYWdzLmRldGFpbHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGRpc3BsYXlEYXRhID0gW1xuICAgICAgICAgICAgLi4uZGlzcGxheURhdGEsXG4gICAgICAgICAgICAuLi5mbGFnc0luc3RhbmNlLmZsYWdzLmRldGFpbHMubWFwKChkZXRhaWwpID0+IHRoaXMubWFwRmxhZ0RldGFpbEZvckRpc3BsYXkoZGV0YWlsLCBmbGFnc0luc3RhbmNlKSlcbiAgICAgICAgICBdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkaXNwbGF5RGF0YTtcbiAgICAgIH0sIFtdKS5maWx0ZXIoKGZsYWdGb3JEaXNwbGF5KSA9PiAhdGhpcy5leGNsdWRlZEZsYWdTdGF0dXNlcy5pbmNsdWRlcyhmbGFnRm9yRGlzcGxheS5vcmlnaW5hbFN0YXR1cyBhcyBDYXNlRmxhZ1N0YXR1cykpO1xuICAgIH1cblxuICAgIC8vIEFkZCBhIEZvcm1Db250cm9sIGZvciB0aGUgc2VsZWN0ZWQgY2FzZSBmbGFnIGlmIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBmbGFncyBpbnN0YW5jZSByZW1haW5pbmcgYWZ0ZXIgbWFwcGluZ1xuICAgIGlmICh0aGlzLmZsYWdzRGlzcGxheURhdGEgJiYgdGhpcy5mbGFnc0Rpc3BsYXlEYXRhLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuZm9ybUdyb3VwLmFkZENvbnRyb2wodGhpcy5zZWxlY3RlZENvbnRyb2xOYW1lLCBuZXcgRm9ybUNvbnRyb2wobnVsbCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBObyBmbGFncyBkaXNwbGF5IGRhdGEgbWVhbnMgdGhlcmUgYXJlIG5vIGZsYWdzIHRvIHNlbGVjdCBmcm9tLiBUaGUgdXNlciBjYW5ub3QgcHJvY2VlZCB3aXRoIGEgZmxhZyB1cGRhdGUuXG4gICAgICAvLyAoV2lsbCBuZWVkIHRvIGJlIGV4dGVuZGVkIHRvIGNoZWNrIGZvciBjYXNlLWxldmVsIGZsYWdzIGluIGZ1dHVyZSlcbiAgICAgIHRoaXMub25Ob0ZsYWdzRXJyb3IoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbWFwRmxhZ0RldGFpbEZvckRpc3BsYXkoZmxhZ0RldGFpbDogRmxhZ0RldGFpbCwgZmxhZ3NJbnN0YW5jZTogRmxhZ3NXaXRoRm9ybUdyb3VwUGF0aCk6IEZsYWdEZXRhaWxEaXNwbGF5V2l0aEZvcm1Hcm91cFBhdGgge1xuICAgIC8vIFJlc2V0IHRoZSBmbGFnIHN0YXR1cyB3aXRoIHRoZSBvcmlnaW5hbCBwZXJzaXN0ZWQgc3RhdHVzLiBUaGlzIGlzIG5lZWRlZCBiZWNhdXNlIG5nT25Jbml0KCkgbmVlZHMgdG8gZmlsdGVyXG4gICAgLy8gb3V0IGFueSBcIkluYWN0aXZlXCIgb3IgXCJOb3QgYXBwcm92ZWRcIiBmbGFncyBiYXNlZCBvbiB0aGVpciBzdGF0dXMgKmJlZm9yZSogbW9kaWZpY2F0aW9uLiBJZiB0aGUgdXNlciBjaGFuZ2VzIGFcbiAgICAvLyBmbGFnJ3Mgc3RhdHVzIHRoZW4gZGVjaWRlcyB0byByZXR1cm4gdG8gdGhlIHN0YXJ0IG9mIHRoZSBmbGFnIHVwZGF0ZSBqb3VybmV5LCB0aGUgZmxhZydzIHN0YXR1cyB3b3VsZCBub1xuICAgIC8vIGxvbmdlciByZWZsZWN0IGl0cyBhY3R1YWwgKnBlcnNpc3RlZCogc3RhdHVzXG4gICAgLy8gQWxzbyByZXNldCBjb21tZW50cyBhbmQgZGVzY3JpcHRpb24gZmllbGRzIChib3RoIEVuZ2xpc2ggYW5kIFdlbHNoKSB3aXRoIHRoZSBvcmlnaW5hbCBwZXJzaXN0ZWQgZGF0YSwgdG8gYXZvaWRcbiAgICAvLyB0aGUgVUkgY2FjaGluZyBhbnkgY2hhbmdlcyB0aGF0IHRoZSB1c2VyIG1pZ2h0IG5vdCB3YW50IHBlcnNpc3RlZCwgaWYgdGhleSBzdGFydCBvdmVyIGFuZCBkb24ndCBpbnRlbmQgdG8gYWRkXG4gICAgLy8gdHJhbnNsYXRpb25zIHN1YnNlcXVlbnRseVxuICAgIGxldCBvcmlnaW5hbFN0YXR1czogc3RyaW5nO1xuICAgIGxldCBmb3JtYXR0ZWRWYWx1ZSA9IGZsYWdzSW5zdGFuY2UuY2FzZUZpZWxkPy5mb3JtYXR0ZWRfdmFsdWU7XG4gICAgLy8gVXNlIHRoZSBwYXRoVG9GbGFnc0Zvcm1Hcm91cCBwcm9wZXJ0eSBmcm9tIHRoZSBzZWxlY3RlZCBmbGFnIGxvY2F0aW9uIHRvIGRyaWxsIGRvd24gdG8gdGhlIGNvcnJlY3QgcGFydCBvZiB0aGVcbiAgICAvLyBDYXNlRmllbGQgZm9ybWF0dGVkX3ZhbHVlIGZyb20gd2hpY2ggdG8gZ2V0IHRoZSBvcmlnaW5hbCBwZXJzaXN0ZWQgZGF0YVxuICAgIGNvbnN0IHBhdGhUb1ZhbHVlID0gZmxhZ3NJbnN0YW5jZS5wYXRoVG9GbGFnc0Zvcm1Hcm91cDtcbiAgICAvLyBSb290LWxldmVsIEZsYWdzIENhc2VGaWVsZHMgZG9uJ3QgaGF2ZSBhIGRvdC1kZWxpbWl0ZWQgcGF0aCAtIGp1c3QgdGhlIENhc2VGaWVsZCBJRCBpdHNlbGYgLSBzbyBkb24ndCBkcmlsbCBkb3duXG4gICAgaWYgKHBhdGhUb1ZhbHVlLmluZGV4T2YoJy4nKSA+IC0xKSB7XG4gICAgICBwYXRoVG9WYWx1ZS5zbGljZShwYXRoVG9WYWx1ZS5pbmRleE9mKCcuJykgKyAxKS5zcGxpdCgnLicpLmZvckVhY2goKHBhcnQpID0+IHtcbiAgICAgICAgaWYgKGZvcm1hdHRlZFZhbHVlICYmIEZpZWxkc1V0aWxzLmlzTm9uRW1wdHlPYmplY3QoZm9ybWF0dGVkVmFsdWUpKSB7XG4gICAgICAgICAgZm9ybWF0dGVkVmFsdWUgPSBmb3JtYXR0ZWRWYWx1ZVtwYXJ0XTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIGlmIChmb3JtYXR0ZWRWYWx1ZSAmJiBGaWVsZHNVdGlscy5pc05vbkVtcHR5T2JqZWN0KGZvcm1hdHRlZFZhbHVlKSkge1xuICAgICAgY29uc3Qgb3JpZ2luYWxGbGFnRGV0YWlsID0gZm9ybWF0dGVkVmFsdWUuZGV0YWlscz8uZmluZCgoZGV0YWlsKSA9PiBkZXRhaWwuaWQgPT09IGZsYWdEZXRhaWwuaWQpO1xuICAgICAgaWYgKG9yaWdpbmFsRmxhZ0RldGFpbCkge1xuICAgICAgICBvcmlnaW5hbFN0YXR1cyA9IG9yaWdpbmFsRmxhZ0RldGFpbC52YWx1ZT8uc3RhdHVzO1xuICAgICAgICBmbGFnRGV0YWlsLmZsYWdDb21tZW50ID0gb3JpZ2luYWxGbGFnRGV0YWlsLnZhbHVlPy5mbGFnQ29tbWVudDtcbiAgICAgICAgZmxhZ0RldGFpbC5mbGFnQ29tbWVudF9jeSA9IG9yaWdpbmFsRmxhZ0RldGFpbC52YWx1ZT8uZmxhZ0NvbW1lbnRfY3k7XG4gICAgICAgIGZsYWdEZXRhaWwub3RoZXJEZXNjcmlwdGlvbiA9IG9yaWdpbmFsRmxhZ0RldGFpbC52YWx1ZT8ub3RoZXJEZXNjcmlwdGlvbjtcbiAgICAgICAgZmxhZ0RldGFpbC5vdGhlckRlc2NyaXB0aW9uX2N5ID0gb3JpZ2luYWxGbGFnRGV0YWlsLnZhbHVlPy5vdGhlckRlc2NyaXB0aW9uX2N5O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgZmxhZ0RldGFpbERpc3BsYXk6IHtcbiAgICAgICAgcGFydHlOYW1lOiBmbGFnc0luc3RhbmNlLmZsYWdzPy5wYXJ0eU5hbWUsXG4gICAgICAgIGZsYWdEZXRhaWwsXG4gICAgICAgIGZsYWdzQ2FzZUZpZWxkSWQ6IGZsYWdzSW5zdGFuY2UuY2FzZUZpZWxkPy5pZCxcbiAgICAgICAgdmlzaWJpbGl0eTogZmxhZ3NJbnN0YW5jZS5mbGFncz8udmlzaWJpbGl0eVxuICAgICAgfSxcbiAgICAgIHBhdGhUb0ZsYWdzRm9ybUdyb3VwOiBmbGFnc0luc3RhbmNlLnBhdGhUb0ZsYWdzRm9ybUdyb3VwLFxuICAgICAgY2FzZUZpZWxkOiBmbGFnc0luc3RhbmNlLmNhc2VGaWVsZCxcbiAgICAgIHJvbGVPbkNhc2U6IGZsYWdzSW5zdGFuY2UuZmxhZ3M/LnJvbGVPbkNhc2UsXG4gICAgICBvcmlnaW5hbFN0YXR1c1xuICAgIH07XG4gIH1cblxuICBwdWJsaWMgb25OZXh0KCk6IHZvaWQge1xuICAgIC8vIFZhbGlkYXRlIGZsYWcgc2VsZWN0aW9uXG4gICAgdGhpcy52YWxpZGF0ZVNlbGVjdGlvbigpO1xuICAgIC8vIFJldHVybiBjYXNlIGZsYWcgZmllbGQgc3RhdGUsIGVycm9yIG1lc3NhZ2VzLCBhbmQgZmxhZyBzZWxlY3Rpb24gdG8gdGhlIHBhcmVudFxuICAgIHRoaXMuY2FzZUZsYWdTdGF0ZUVtaXR0ZXIuZW1pdCh7XG4gICAgICBjdXJyZW50Q2FzZUZsYWdGaWVsZFN0YXRlOiBDYXNlRmxhZ0ZpZWxkU3RhdGUuRkxBR19NQU5BR0VfQ0FTRV9GTEFHUyxcbiAgICAgIGVycm9yTWVzc2FnZXM6IHRoaXMuZXJyb3JNZXNzYWdlcyxcbiAgICAgIHNlbGVjdGVkRmxhZzogdGhpcy5mb3JtR3JvdXAuZ2V0KHRoaXMuc2VsZWN0ZWRDb250cm9sTmFtZSkudmFsdWVcbiAgICAgICAgPyB0aGlzLmZvcm1Hcm91cC5nZXQodGhpcy5zZWxlY3RlZENvbnRyb2xOYW1lKS52YWx1ZSBhcyBGbGFnRGV0YWlsRGlzcGxheVdpdGhGb3JtR3JvdXBQYXRoXG4gICAgICAgIDogbnVsbFxuICAgIH0pO1xuXG4gICAgd2luZG93LnNjcm9sbFRvKDAsIDApO1xuICB9XG5cbiAgcHVibGljIHNldE1hbmFnZUNhc2VGbGFnVGl0bGUoZGlzcGxheUNvbnRleHRQYXJhbWV0ZXI6IHN0cmluZyk6IENhc2VGbGFnV2l6YXJkU3RlcFRpdGxlIHtcbiAgICBzd2l0Y2ggKGRpc3BsYXlDb250ZXh0UGFyYW1ldGVyKSB7XG4gICAgICBjYXNlIENhc2VGbGFnRGlzcGxheUNvbnRleHRQYXJhbWV0ZXIuVVBEQVRFOlxuICAgICAgY2FzZSBDYXNlRmxhZ0Rpc3BsYXlDb250ZXh0UGFyYW1ldGVyLlVQREFURV8yX1BPSU5UXzE6XG4gICAgICAgIHJldHVybiBDYXNlRmxhZ1dpemFyZFN0ZXBUaXRsZS5NQU5BR0VfQ0FTRV9GTEFHUztcbiAgICAgIGNhc2UgQ2FzZUZsYWdEaXNwbGF5Q29udGV4dFBhcmFtZXRlci5VUERBVEVfRVhURVJOQUw6XG4gICAgICAgIHJldHVybiBDYXNlRmxhZ1dpemFyZFN0ZXBUaXRsZS5NQU5BR0VfU1VQUE9SVDtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBDYXNlRmxhZ1dpemFyZFN0ZXBUaXRsZS5OT05FO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVTZWxlY3Rpb24oKTogdm9pZCB7XG4gICAgdGhpcy5tYW5hZ2VDYXNlRmxhZ1NlbGVjdGVkRXJyb3JNZXNzYWdlID0gbnVsbDtcbiAgICB0aGlzLmVycm9yTWVzc2FnZXMgPSBbXTtcbiAgICBpZiAoIXRoaXMuZm9ybUdyb3VwLmdldCh0aGlzLnNlbGVjdGVkQ29udHJvbE5hbWUpLnZhbHVlKSB7XG4gICAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSB0aGlzLmRpc3BsYXlDb250ZXh0UGFyYW1ldGVyID09PSBDYXNlRmxhZ0Rpc3BsYXlDb250ZXh0UGFyYW1ldGVyLlVQREFURV9FWFRFUk5BTCA/XG4gICAgICAgIFNlbGVjdEZsYWdFcnJvck1lc3NhZ2UuTUFOQUdFX1NVUFBPUlRfRkxBR19OT1RfU0VMRUNURUQgOiBTZWxlY3RGbGFnRXJyb3JNZXNzYWdlLk1BTkFHRV9DQVNFX0ZMQUdTX0ZMQUdfTk9UX1NFTEVDVEVEO1xuICAgICAgdGhpcy5tYW5hZ2VDYXNlRmxhZ1NlbGVjdGVkRXJyb3JNZXNzYWdlID0gZXJyb3JNZXNzYWdlO1xuICAgICAgdGhpcy5lcnJvck1lc3NhZ2VzLnB1c2goe1xuICAgICAgICB0aXRsZTogJycsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBlcnJvck1lc3NhZ2UsXG4gICAgICAgIGZpZWxkSWQ6ICdjb25kaXRpb25hbC1yYWRpb3MtbGlzdCdcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgb25Ob0ZsYWdzRXJyb3IoKTogdm9pZCB7XG4gICAgLy8gU2V0IGVycm9yIGZsYWcgb24gY29tcG9uZW50IHRvIHJlbW92ZSB0aGUgXCJOZXh0XCIgYnV0dG9uICh1c2VyIGNhbm5vdCBwcm9jZWVkIHdpdGggZmxhZyBjcmVhdGlvbilcbiAgICB0aGlzLm5vRmxhZ3NFcnJvciA9IHRydWU7XG4gICAgdGhpcy5lcnJvck1lc3NhZ2VzID0gW107XG4gICAgdGhpcy5lcnJvck1lc3NhZ2VzLnB1c2goeyB0aXRsZTogJycsIGRlc2NyaXB0aW9uOiBTZWxlY3RGbGFnRXJyb3JNZXNzYWdlLk5PX0ZMQUdTLCBmaWVsZElkOiAnY29uZGl0aW9uYWwtcmFkaW9zLWxpc3QnIH0pO1xuICAgIC8vIFJldHVybiBjYXNlIGZsYWcgZmllbGQgc3RhdGUgYW5kIGVycm9yIG1lc3NhZ2VzIHRvIHRoZSBwYXJlbnRcbiAgICB0aGlzLmNhc2VGbGFnU3RhdGVFbWl0dGVyLmVtaXQoe1xuICAgICAgY3VycmVudENhc2VGbGFnRmllbGRTdGF0ZTogQ2FzZUZsYWdGaWVsZFN0YXRlLkZMQUdfTUFOQUdFX0NBU0VfRkxBR1MsXG4gICAgICBlcnJvck1lc3NhZ2VzOiB0aGlzLmVycm9yTWVzc2FnZXNcbiAgICB9KTtcbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiPlxuICA8ZGl2IGNsYXNzPVwiZ292dWstZm9ybS1ncm91cFwiIFtuZ0NsYXNzXT1cInsnZm9ybS1ncm91cC1lcnJvcic6IGVycm9yTWVzc2FnZXMubGVuZ3RoID4gMH1cIj5cbiAgICA8ZmllbGRzZXQgY2xhc3M9XCJnb3Z1ay1maWVsZHNldFwiIGFyaWEtZGVzY3JpYmVkYnk9XCJtYW5hZ2UtY2FzZS1mbGFnLWhlYWRpbmdcIj5cbiAgICAgIDxsZWdlbmQgY2xhc3M9XCJnb3Z1ay1maWVsZHNldF9fbGVnZW5kIGdvdnVrLWZpZWxkc2V0X19sZWdlbmQtLW1cIj5cbiAgICAgICAgPGgxIGlkPVwibWFuYWdlLWNhc2UtZmxhZy1oZWFkaW5nXCIgY2xhc3M9XCJnb3Z1ay1maWVsZHNldF9faGVhZGluZ1wiPlxuICAgICAgICAgIHt7bWFuYWdlQ2FzZUZsYWdUaXRsZSB8IHJweFRyYW5zbGF0ZX19XG4gICAgICAgIDwvaDE+XG4gICAgICA8L2xlZ2VuZD5cbiAgICAgIDxkaXYgaWQ9XCJtYW5hZ2UtY2FzZS1mbGFnLW5vdC1zZWxlY3RlZC1lcnJvci1tZXNzYWdlXCIgY2xhc3M9XCJnb3Z1ay1lcnJvci1tZXNzYWdlXCJcbiAgICAgICAgKm5nSWY9XCJtYW5hZ2VDYXNlRmxhZ1NlbGVjdGVkRXJyb3JNZXNzYWdlXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZ292dWstdmlzdWFsbHktaGlkZGVuXCI+e3snRXJyb3I6JyB8IHJweFRyYW5zbGF0ZX19PC9zcGFuPiB7e21hbmFnZUNhc2VGbGFnU2VsZWN0ZWRFcnJvck1lc3NhZ2UgfCBycHhUcmFuc2xhdGV9fVxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiZ292dWstcmFkaW9zIGdvdnVrLXJhZGlvcy0tY29uZGl0aW9uYWxcIiBkYXRhLW1vZHVsZT1cImdvdnVrLXJhZGlvc1wiIGlkPVwiY29uZGl0aW9uYWwtcmFkaW9zLWxpc3RcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLXJhZGlvc19faXRlbVwiICpuZ0Zvcj1cImxldCBmbGFnRGlzcGxheSBvZiBmbGFnc0Rpc3BsYXlEYXRhOyBpbmRleCBhcyBpXCI+XG4gICAgICAgICAgPGlucHV0IGNsYXNzPVwiZ292dWstcmFkaW9zX19pbnB1dFwiIGlkPVwiZmxhZy1zZWxlY3Rpb24te3tpfX1cIiBbbmFtZV09XCJzZWxlY3RlZENvbnRyb2xOYW1lXCJcbiAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiIFt2YWx1ZV09XCJmbGFnRGlzcGxheVwiIFtmb3JtQ29udHJvbE5hbWVdPVwic2VsZWN0ZWRDb250cm9sTmFtZVwiLz5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJnb3Z1ay1sYWJlbCBnb3Z1ay1yYWRpb3NfX2xhYmVsXCIgZm9yPVwiZmxhZy1zZWxlY3Rpb24te3tpfX1cIiBbaW5uZXJIdG1sXT1cImZsYWdEaXNwbGF5IHwgbWFuYWdlQ2FzZUZsYWdzTGFiZWxEaXNwbGF5XCI+PC9sYWJlbD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2ZpZWxkc2V0PlxuICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuXG48ZGl2IGNsYXNzPVwiZ292dWstYnV0dG9uLWdyb3VwXCIgKm5nSWY9XCIhbm9GbGFnc0Vycm9yXCI+XG4gIDxidXR0b24gY2xhc3M9XCJidXR0b24gYnV0dG9uLXByaW1hcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIm9uTmV4dCgpXCI+e3snTmV4dCcgfCBycHhUcmFuc2xhdGV9fTwvYnV0dG9uPlxuPC9kaXY+XG4iXX0=
271
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ManageCaseFlagsComponent, { className: "ManageCaseFlagsComponent", filePath: "lib/shared/components/palette/case-flag/components/manage-case-flags/manage-case-flags.component.ts", lineNumber: 16 }); })();
272
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuYWdlLWNhc2UtZmxhZ3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL3BhbGV0dGUvY2FzZS1mbGFnL2NvbXBvbmVudHMvbWFuYWdlLWNhc2UtZmxhZ3MvbWFuYWdlLWNhc2UtZmxhZ3MuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL3BhbGV0dGUvY2FzZS1mbGFnL2NvbXBvbmVudHMvbWFuYWdlLWNhc2UtZmxhZ3MvbWFuYWdlLWNhc2UtZmxhZ3MuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRyxPQUFPLEVBQW1CLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRW5DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUU3RCxPQUFPLEVBQUUsK0JBQStCLEVBQUUsa0JBQWtCLEVBQUUsY0FBYyxFQUFFLHVCQUF1QixFQUFFLHNCQUFzQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ25KLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7O0lDR3ZELEFBRkYsOEJBQzZDLGNBQ1A7SUFBQSxZQUEyQjs7SUFBQSxpQkFBTztJQUFDLFlBQ3pFOztJQUFBLGlCQUFNOzs7SUFEZ0MsZUFBMkI7SUFBM0Isb0RBQTJCO0lBQVEsZUFDekU7SUFEeUUsZ0dBQ3pFOzs7O0lBR0ksQUFERiwrQkFBeUYsZ0JBSXRDO0lBQS9DLHNOQUFVLDRDQUFrQyxLQUFDO0lBSC9DLGlCQUdpRDtJQUNqRCw0QkFBMEk7O0lBQzVJLGlCQUFNOzs7OztJQUwrQixjQUF5QjtJQUF6Qiw0REFBeUI7SUFFMUQsMkRBQW1DO0lBRVUsY0FBMEI7SUFBMUIsNkRBQTBCO0lBQUMsbUZBQXVEOztBREgzSSxNQUFNLE9BQU8sd0JBQXlCLFNBQVEsd0JBQXdCO0lBQ3BELFNBQVMsQ0FBWTtJQUNyQixTQUFTLENBQTJCO0lBQ3BDLFNBQVMsQ0FBUztJQUNsQix1QkFBdUIsQ0FBUztJQUMvQixvQkFBb0IsR0FBZ0MsSUFBSSxZQUFZLEVBQWlCLENBQUM7SUFFaEcsbUJBQW1CLENBQTBCO0lBQzdDLGFBQWEsR0FBbUIsRUFBRSxDQUFDO0lBQ25DLGtDQUFrQyxHQUEyQixJQUFJLENBQUM7SUFDbEUsZ0JBQWdCLENBQXVDO0lBQ3ZELEtBQUssQ0FBUTtJQUNiLFlBQVksR0FBRyxLQUFLLENBQUM7SUFDWixtQkFBbUIsR0FBRyw0QkFBNEIsQ0FBQztJQUNsRCxvQkFBb0IsR0FBcUIsQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLGNBQWMsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUMxRyxjQUFjLENBRW5CO0lBRUssUUFBUTtRQUNiLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLENBQUM7UUFDckYsSUFBSSxjQUFzQixDQUFDO1FBQzNCLElBQUksa0JBQTBCLENBQUM7UUFDL0IsbUlBQW1JO1FBQ25JLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ3JFLElBQUksZUFBZSxFQUFFLENBQUM7WUFDcEIsY0FBYyxHQUFHLGVBQWUsRUFBRSxLQUFLLEVBQUUsY0FBYyxDQUFDO1lBQ3hELGtCQUFrQixHQUFHLGVBQWUsRUFBRSxLQUFLLEVBQUUsb0JBQW9CLENBQUM7WUFDbEUsSUFBSSxDQUFDLGNBQWMsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN6RCxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUU7Z0JBQzNELElBQUksV0FBVyxLQUFLLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO29CQUM3QyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDNUMsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELGtIQUFrSDtRQUNsSCxpQkFBaUI7UUFDakIsMEJBQTBCO1FBQzFCLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFdBQVcsRUFBRSxhQUFhLEVBQUUsRUFBRTtnQkFDM0UsMEJBQTBCO2dCQUMxQixJQUFJLGFBQWEsQ0FBQyxLQUFLLENBQUMsT0FBTyxJQUFJLGFBQWEsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztvQkFDMUUsV0FBVyxHQUFHO3dCQUNaLEdBQUcsV0FBVzt3QkFDZCxHQUFHLGFBQWEsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLE1BQU0sRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLGtCQUFrQixDQUFDLENBQUM7cUJBQ3hJLENBQUM7Z0JBQ0osQ0FBQztnQkFDRCxPQUFPLFdBQVcsQ0FBQztZQUNyQixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsY0FBYyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLGNBQWdDLENBQUMsQ0FBQyxDQUFDO1FBQzFILENBQUM7UUFFRCwrR0FBK0c7UUFDL0csSUFBSSxJQUFJLENBQUMsZ0JBQWdCLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUM5RCxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUM3RSxDQUFDO2FBQU0sQ0FBQztZQUNOLDZHQUE2RztZQUM3RyxxRUFBcUU7WUFDckUsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3hCLENBQUM7SUFDSCxDQUFDO0lBRUQscUJBQXFCLENBQUMsWUFBeUI7UUFDN0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFFRCxVQUFVLENBQUMsV0FBK0M7UUFDeEQsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEVBQUUsS0FBSyxDQUFDO1FBQ3pFLE9BQU8sWUFBWSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLEtBQUssSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN0RixDQUFDO0lBRUQsU0FBUyxDQUFDLElBQXdDO1FBQ2hELE9BQU8sSUFBSSxFQUFFLGlCQUFpQixFQUFFLFVBQVUsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDO0lBQ3ZELENBQUM7SUFFTSx1QkFBdUIsQ0FBQyxVQUFzQixFQUFFLGFBQXFDLEVBQUUsb0JBQTRCLEVBQUUsa0JBQTBCO1FBQ3BKLDhHQUE4RztRQUM5RyxnSEFBZ0g7UUFDaEgsMkdBQTJHO1FBQzNHLCtDQUErQztRQUMvQyxpSEFBaUg7UUFDakgsZ0hBQWdIO1FBQ2hILDRCQUE0QjtRQUM1QixJQUFJLGNBQXNCLENBQUM7UUFDM0IsSUFBSSxjQUFjLEdBQUcsYUFBYSxDQUFDLFNBQVMsRUFBRSxlQUFlLENBQUM7UUFDOUQsaUhBQWlIO1FBQ2pILDBFQUEwRTtRQUMxRSxNQUFNLFdBQVcsR0FBRyxhQUFhLENBQUMsb0JBQW9CLENBQUM7UUFDdkQsbUhBQW1IO1FBQ25ILElBQUksV0FBVyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ2xDLFdBQVcsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7Z0JBQzFFLElBQUksY0FBYyxJQUFJLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDO29CQUNuRSxjQUFjLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUN4QyxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBQ0QsSUFBSSxjQUFjLElBQUksV0FBVyxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7WUFDbkUsTUFBTSxrQkFBa0IsR0FBRyxjQUFjLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsS0FBSyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDakcsSUFBSSxXQUFXLENBQUM7WUFDaEIsSUFBSSxhQUFhLENBQUMsb0JBQW9CLEtBQUssa0JBQWtCLEVBQUUsQ0FBQztnQkFDOUQsSUFBSSxvQkFBb0IsRUFBRSxDQUFDO29CQUN6QixXQUFXLEdBQUcsb0JBQW9CLEtBQUssa0JBQWtCLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUM7Z0JBQ3BJLENBQUM7cUJBQU0sQ0FBQztvQkFDTixXQUFXLEdBQUcsa0JBQWtCLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQztnQkFDakQsQ0FBQztZQUNILENBQUM7aUJBQU0sQ0FBQztnQkFDTixXQUFXLEdBQUcsa0JBQWtCLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQztZQUNqRCxDQUFDO1lBQ0QsSUFBSSxrQkFBa0IsRUFBRSxDQUFDO2dCQUN2QixjQUFjLEdBQUcsV0FBVyxDQUFDO2dCQUM3QixVQUFVLENBQUMsV0FBVyxHQUFHLGtCQUFrQixDQUFDLEtBQUssRUFBRSxXQUFXLENBQUM7Z0JBQy9ELFVBQVUsQ0FBQyxjQUFjLEdBQUcsa0JBQWtCLENBQUMsS0FBSyxFQUFFLGNBQWMsQ0FBQztnQkFDckUsVUFBVSxDQUFDLGdCQUFnQixHQUFHLGtCQUFrQixDQUFDLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQztnQkFDekUsVUFBVSxDQUFDLG1CQUFtQixHQUFHLGtCQUFrQixDQUFDLEtBQUssRUFBRSxtQkFBbUIsQ0FBQztZQUNqRixDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU87WUFDTCxpQkFBaUIsRUFBRTtnQkFDakIsU0FBUyxFQUFFLGFBQWEsQ0FBQyxLQUFLLEVBQUUsU0FBUztnQkFDekMsVUFBVTtnQkFDVixnQkFBZ0IsRUFBRSxhQUFhLENBQUMsU0FBUyxFQUFFLEVBQUU7Z0JBQzdDLFVBQVUsRUFBRSxhQUFhLENBQUMsS0FBSyxFQUFFLFVBQVU7YUFDNUM7WUFDRCxvQkFBb0IsRUFBRSxhQUFhLENBQUMsb0JBQW9CO1lBQ3hELFNBQVMsRUFBRSxhQUFhLENBQUMsU0FBUztZQUNsQyxVQUFVLEVBQUUsYUFBYSxDQUFDLEtBQUssRUFBRSxVQUFVO1lBQzNDLGNBQWM7U0FDZixDQUFDO0lBQ0osQ0FBQztJQUVNLE1BQU07UUFDWCwwQkFBMEI7UUFDMUIsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDekIsaUZBQWlGO1FBQ2pGLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUM7WUFDN0IseUJBQXlCLEVBQUUsa0JBQWtCLENBQUMsc0JBQXNCO1lBQ3BFLGFBQWEsRUFBRSxJQUFJLENBQUMsYUFBYTtZQUNqQyxZQUFZLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUMsS0FBSztnQkFDOUQsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLEtBQTJDO2dCQUMxRixDQUFDLENBQUMsSUFBSTtTQUNULENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFFTSxzQkFBc0IsQ0FBQyx1QkFBK0I7UUFDM0QsUUFBUSx1QkFBdUIsRUFBRSxDQUFDO1lBQ2hDLEtBQUssK0JBQStCLENBQUMsTUFBTSxDQUFDO1lBQzVDLEtBQUssK0JBQStCLENBQUMsZ0JBQWdCO2dCQUNuRCxPQUFPLHVCQUF1QixDQUFDLGlCQUFpQixDQUFDO1lBQ25ELEtBQUssK0JBQStCLENBQUMsZUFBZTtnQkFDbEQsT0FBTyx1QkFBdUIsQ0FBQyxjQUFjLENBQUM7WUFDaEQ7Z0JBQ0UsT0FBTyx1QkFBdUIsQ0FBQyxJQUFJLENBQUM7UUFDeEMsQ0FBQztJQUNILENBQUM7SUFFTyxpQkFBaUI7UUFDdkIsSUFBSSxDQUFDLGtDQUFrQyxHQUFHLElBQUksQ0FBQztRQUMvQyxJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDeEQsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixLQUFLLCtCQUErQixDQUFDLGVBQWUsQ0FBQyxDQUFDO2dCQUNyRyxzQkFBc0IsQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDLENBQUMsc0JBQXNCLENBQUMsbUNBQW1DLENBQUM7WUFDdkgsSUFBSSxDQUFDLGtDQUFrQyxHQUFHLFlBQVksQ0FBQztZQUN2RCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQztnQkFDdEIsS0FBSyxFQUFFLEVBQUU7Z0JBQ1QsV0FBVyxFQUFFLFlBQVk7Z0JBQ3pCLE9BQU8sRUFBRSx5QkFBeUI7YUFDbkMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7SUFFTyxjQUFjO1FBQ3BCLG1HQUFtRztRQUNuRyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUN6QixJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLHNCQUFzQixDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsQ0FBQyxDQUFDO1FBQ3pILGdFQUFnRTtRQUNoRSxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDO1lBQzdCLHlCQUF5QixFQUFFLGtCQUFrQixDQUFDLHNCQUFzQjtZQUNwRSxhQUFhLEVBQUUsSUFBSSxDQUFDLGFBQWE7U0FDbEMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLElBQUk7UUFDVCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDZCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDdEUsSUFBSSxhQUFhLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDNUgsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDL0IsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDcEMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2YsQ0FBQztJQUNILENBQUM7SUFFTSxxQkFBcUI7UUFDMUIsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDeEIsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUU7Z0JBQ3ZELElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO29CQUMxQyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO2dCQUMzRSxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQzs2UEE1TVUsd0JBQXdCLFNBQXhCLHdCQUF3Qjs2REFBeEIsd0JBQXdCO1lDZnJDLGdDQUFzQztZQUk5QixBQURGLEFBREYsQUFERiw4QkFBeUYsa0JBQ1YsZ0JBQ1YsWUFDRztZQUNoRSxZQUNGOztZQUNGLEFBREUsaUJBQUssRUFDRTtZQUNULHlFQUM2QztZQUc3Qyw4QkFBNEc7WUFDMUcseUVBQXlGO1lBUy9GLEFBREUsQUFERSxpQkFBTSxFQUNHLEVBQ1A7OztZQXRCTSx5Q0FBdUI7WUFDTCxjQUEwRDtZQUExRCxrRkFBMEQ7WUFJaEYsZUFDRjtZQURFLDhFQUNGO1lBR0MsZUFBd0M7WUFBeEMsNkRBQXdDO1lBSWUsZUFBcUI7WUFBckIsOENBQXFCOzs7aUZERXhFLHdCQUF3QjtjQU5wQyxTQUFTOzJCQUNFLHVCQUF1QixpQkFHbEIsaUJBQWlCLENBQUMsSUFBSTtnQkFHckIsU0FBUztrQkFBeEIsS0FBSztZQUNVLFNBQVM7a0JBQXhCLEtBQUs7WUFDVSxTQUFTO2tCQUF4QixLQUFLO1lBQ1UsdUJBQXVCO2tCQUF0QyxLQUFLO1lBQ1csb0JBQW9CO2tCQUFwQyxNQUFNOztrRkFMSSx3QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgY2xvbmVEZWVwIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IEVycm9yTWVzc2FnZSwgSm91cm5leSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2RvbWFpbic7XG5pbXBvcnQgeyBGaWVsZHNVdGlscyB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3NlcnZpY2VzL2ZpZWxkcyc7XG5pbXBvcnQgeyBDYXNlRmxhZ1N0YXRlLCBGbGFnRGV0YWlsLCBGbGFnRGV0YWlsRGlzcGxheVdpdGhGb3JtR3JvdXBQYXRoLCBGbGFncywgRmxhZ3NXaXRoRm9ybUdyb3VwUGF0aCB9IGZyb20gJy4uLy4uL2RvbWFpbic7XG5pbXBvcnQgeyBDYXNlRmxhZ0Rpc3BsYXlDb250ZXh0UGFyYW1ldGVyLCBDYXNlRmxhZ0ZpZWxkU3RhdGUsIENhc2VGbGFnU3RhdHVzLCBDYXNlRmxhZ1dpemFyZFN0ZXBUaXRsZSwgU2VsZWN0RmxhZ0Vycm9yTWVzc2FnZSB9IGZyb20gJy4uLy4uL2VudW1zJztcbmltcG9ydCB7IEFic3RyYWN0Sm91cm5leUNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2Jhc2UtZmllbGQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjY2QtbWFuYWdlLWNhc2UtZmxhZ3MnLFxuICB0ZW1wbGF0ZVVybDogJy4vbWFuYWdlLWNhc2UtZmxhZ3MuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9tYW5hZ2UtY2FzZS1mbGFncy5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIE1hbmFnZUNhc2VGbGFnc0NvbXBvbmVudCBleHRlbmRzIEFic3RyYWN0Sm91cm5leUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgSm91cm5leSB7XG4gIEBJbnB1dCgpIHB1YmxpYyBmb3JtR3JvdXA6IEZvcm1Hcm91cDtcbiAgQElucHV0KCkgcHVibGljIGZsYWdzRGF0YTogRmxhZ3NXaXRoRm9ybUdyb3VwUGF0aFtdO1xuICBASW5wdXQoKSBwdWJsaWMgY2FzZVRpdGxlOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHB1YmxpYyBkaXNwbGF5Q29udGV4dFBhcmFtZXRlcjogc3RyaW5nO1xuICBAT3V0cHV0KCkgcHVibGljIGNhc2VGbGFnU3RhdGVFbWl0dGVyOiBFdmVudEVtaXR0ZXI8Q2FzZUZsYWdTdGF0ZT4gPSBuZXcgRXZlbnRFbWl0dGVyPENhc2VGbGFnU3RhdGU+KCk7XG5cbiAgcHVibGljIG1hbmFnZUNhc2VGbGFnVGl0bGU6IENhc2VGbGFnV2l6YXJkU3RlcFRpdGxlO1xuICBwdWJsaWMgZXJyb3JNZXNzYWdlczogRXJyb3JNZXNzYWdlW10gPSBbXTtcbiAgcHVibGljIG1hbmFnZUNhc2VGbGFnU2VsZWN0ZWRFcnJvck1lc3NhZ2U6IFNlbGVjdEZsYWdFcnJvck1lc3NhZ2UgPSBudWxsO1xuICBwdWJsaWMgZmxhZ3NEaXNwbGF5RGF0YTogRmxhZ0RldGFpbERpc3BsYXlXaXRoRm9ybUdyb3VwUGF0aFtdO1xuICBwdWJsaWMgZmxhZ3M6IEZsYWdzO1xuICBwdWJsaWMgbm9GbGFnc0Vycm9yID0gZmFsc2U7XG4gIHB1YmxpYyByZWFkb25seSBzZWxlY3RlZENvbnRyb2xOYW1lID0gJ3NlbGVjdGVkTWFuYWdlQ2FzZUxvY2F0aW9uJztcbiAgcHJpdmF0ZSByZWFkb25seSBleGNsdWRlZEZsYWdTdGF0dXNlczogQ2FzZUZsYWdTdGF0dXNbXSA9IFtDYXNlRmxhZ1N0YXR1cy5JTkFDVElWRSwgQ2FzZUZsYWdTdGF0dXMuTk9UX0FQUFJPVkVEXTtcbiAgcHVibGljIGNhY2hlZENvbnRyb2xzOntcbiAgICBba2V5OiBzdHJpbmddOiBBYnN0cmFjdENvbnRyb2w7XG4gIH07XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMubWFuYWdlQ2FzZUZsYWdUaXRsZSA9IHRoaXMuc2V0TWFuYWdlQ2FzZUZsYWdUaXRsZSh0aGlzLmRpc3BsYXlDb250ZXh0UGFyYW1ldGVyKTtcbiAgICBsZXQgb3JpZ2luYWxTdGF0dXM6IHN0cmluZztcbiAgICBsZXQgb3JpZ2luYWxQYXRoVG9GbGFnOiBzdHJpbmc7XG4gICAgLy8gaWYgdGhlIHVzZXIgaGFzIHByb2dyZXNzZWQgdG8gQ1lBIGFuZCB0aGVuIG5hdmlnYXRlZCBhd2F5LCB0aGUgZmxhZyB0aGV5IHNlbGVjdGVkIHdpbGwgYmUgc2V0IGFzIGluYWN0aXZlLCB3ZSBuZWVkIHRvIHJlc2V0IHRoaXNcbiAgICBjb25zdCBsb2NhdGlvbkNvbnRyb2wgPSB0aGlzLmZvcm1Hcm91cC5nZXQodGhpcy5zZWxlY3RlZENvbnRyb2xOYW1lKTtcbiAgICBpZiAobG9jYXRpb25Db250cm9sKSB7XG4gICAgICBvcmlnaW5hbFN0YXR1cyA9IGxvY2F0aW9uQ29udHJvbD8udmFsdWU/Lm9yaWdpbmFsU3RhdHVzO1xuICAgICAgb3JpZ2luYWxQYXRoVG9GbGFnID0gbG9jYXRpb25Db250cm9sPy52YWx1ZT8ucGF0aFRvRmxhZ3NGb3JtR3JvdXA7XG4gICAgICB0aGlzLmNhY2hlZENvbnRyb2xzID0gY2xvbmVEZWVwKHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzKTtcbiAgICAgIE9iamVjdC5rZXlzKHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzKS5mb3JFYWNoKChjb250cm9sTmFtZSkgPT4ge1xuICAgICAgICBpZiAoY29udHJvbE5hbWUgIT09IHRoaXMuc2VsZWN0ZWRDb250cm9sTmFtZSkge1xuICAgICAgICAgIHRoaXMuZm9ybUdyb3VwLnJlbW92ZUNvbnRyb2woY29udHJvbE5hbWUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBNYXAgZmxhZ3MgaW5zdGFuY2VzIHRvIG9iamVjdHMgZm9yIGRpc3BsYXksIGZpbHRlcmluZyBvdXQgYW55IHdoZXJlIHRoZSBvcmlnaW5hbCBzdGF0dXMgaXMgZWl0aGVyIFwiSW5hY3RpdmVcIiBvclxuICAgIC8vIFwiTm90IGFwcHJvdmVkXCJcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmICh0aGlzLmZsYWdzRGF0YSkge1xuICAgICAgdGhpcy5mbGFnc0Rpc3BsYXlEYXRhID0gdGhpcy5mbGFnc0RhdGEucmVkdWNlKChkaXNwbGF5RGF0YSwgZmxhZ3NJbnN0YW5jZSkgPT4ge1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICBpZiAoZmxhZ3NJbnN0YW5jZS5mbGFncy5kZXRhaWxzICYmIGZsYWdzSW5zdGFuY2UuZmxhZ3MuZGV0YWlscy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgZGlzcGxheURhdGEgPSBbXG4gICAgICAgICAgICAuLi5kaXNwbGF5RGF0YSxcbiAgICAgICAgICAgIC4uLmZsYWdzSW5zdGFuY2UuZmxhZ3MuZGV0YWlscy5tYXAoKGRldGFpbCkgPT4gdGhpcy5tYXBGbGFnRGV0YWlsRm9yRGlzcGxheShkZXRhaWwsIGZsYWdzSW5zdGFuY2UsIG9yaWdpbmFsU3RhdHVzLCBvcmlnaW5hbFBhdGhUb0ZsYWcpKVxuICAgICAgICAgIF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRpc3BsYXlEYXRhO1xuICAgICAgfSwgW10pLmZpbHRlcigoZmxhZ0ZvckRpc3BsYXkpID0+ICF0aGlzLmV4Y2x1ZGVkRmxhZ1N0YXR1c2VzLmluY2x1ZGVzKGZsYWdGb3JEaXNwbGF5Lm9yaWdpbmFsU3RhdHVzIGFzIENhc2VGbGFnU3RhdHVzKSk7XG4gICAgfVxuXG4gICAgLy8gQWRkIGEgRm9ybUNvbnRyb2wgZm9yIHRoZSBzZWxlY3RlZCBjYXNlIGZsYWcgaWYgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGZsYWdzIGluc3RhbmNlIHJlbWFpbmluZyBhZnRlciBtYXBwaW5nXG4gICAgaWYgKHRoaXMuZmxhZ3NEaXNwbGF5RGF0YSAmJiB0aGlzLmZsYWdzRGlzcGxheURhdGEubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5mb3JtR3JvdXAuYWRkQ29udHJvbCh0aGlzLnNlbGVjdGVkQ29udHJvbE5hbWUsIG5ldyBGb3JtQ29udHJvbChudWxsKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIE5vIGZsYWdzIGRpc3BsYXkgZGF0YSBtZWFucyB0aGVyZSBhcmUgbm8gZmxhZ3MgdG8gc2VsZWN0IGZyb20uIFRoZSB1c2VyIGNhbm5vdCBwcm9jZWVkIHdpdGggYSBmbGFnIHVwZGF0ZS5cbiAgICAgIC8vIChXaWxsIG5lZWQgdG8gYmUgZXh0ZW5kZWQgdG8gY2hlY2sgZm9yIGNhc2UtbGV2ZWwgZmxhZ3MgaW4gZnV0dXJlKVxuICAgICAgdGhpcy5vbk5vRmxhZ3NFcnJvcigpO1xuICAgIH1cbiAgfVxuXG4gIG9uRmxhZ1NlbGVjdGlvbkNoYW5nZShzZWxlY3RlZEZsYWc6IEZvcm1Db250cm9sKTogdm9pZCB7XG4gICAgdGhpcy5mb3JtR3JvdXAuZ2V0KHRoaXMuc2VsZWN0ZWRDb250cm9sTmFtZSkuc2V0VmFsdWUoc2VsZWN0ZWRGbGFnKTtcbiAgfVxuXG4gIGlzU2VsZWN0ZWQoZmxhZ0Rpc3BsYXk6IEZsYWdEZXRhaWxEaXNwbGF5V2l0aEZvcm1Hcm91cFBhdGgpOiBib29sZWFuIHtcbiAgICBjb25zdCBzZWxlY3RlZEZsYWcgPSB0aGlzLmZvcm1Hcm91cC5nZXQodGhpcy5zZWxlY3RlZENvbnRyb2xOYW1lKT8udmFsdWU7XG4gICAgcmV0dXJuIHNlbGVjdGVkRmxhZyAmJiB0aGlzLmdldEZsYWdJRChzZWxlY3RlZEZsYWcpID09PSB0aGlzLmdldEZsYWdJRChmbGFnRGlzcGxheSk7XG4gIH1cblxuICBnZXRGbGFnSUQoZmxhZzogRmxhZ0RldGFpbERpc3BsYXlXaXRoRm9ybUdyb3VwUGF0aCkge1xuICAgIHJldHVybiBmbGFnPy5mbGFnRGV0YWlsRGlzcGxheT8uZmxhZ0RldGFpbD8uaWQgfHwgJyc7XG4gIH1cblxuICBwdWJsaWMgbWFwRmxhZ0RldGFpbEZvckRpc3BsYXkoZmxhZ0RldGFpbDogRmxhZ0RldGFpbCwgZmxhZ3NJbnN0YW5jZTogRmxhZ3NXaXRoRm9ybUdyb3VwUGF0aCwgb3JpZ2luYWxTdGF0dXNGcm9tRkc6IHN0cmluZywgb3JpZ2luYWxQYXRoVG9GbGFnOiBzdHJpbmcpOiBGbGFnRGV0YWlsRGlzcGxheVdpdGhGb3JtR3JvdXBQYXRoIHtcbiAgICAvLyBSZXNldCB0aGUgZmxhZyBzdGF0dXMgd2l0aCB0aGUgb3JpZ2luYWwgcGVyc2lzdGVkIHN0YXR1cy4gVGhpcyBpcyBuZWVkZWQgYmVjYXVzZSBuZ09uSW5pdCgpIG5lZWRzIHRvIGZpbHRlclxuICAgIC8vIG91dCBhbnkgXCJJbmFjdGl2ZVwiIG9yIFwiTm90IGFwcHJvdmVkXCIgZmxhZ3MgYmFzZWQgb24gdGhlaXIgc3RhdHVzICpiZWZvcmUqIG1vZGlmaWNhdGlvbi4gSWYgdGhlIHVzZXIgY2hhbmdlcyBhXG4gICAgLy8gZmxhZydzIHN0YXR1cyB0aGVuIGRlY2lkZXMgdG8gcmV0dXJuIHRvIHRoZSBzdGFydCBvZiB0aGUgZmxhZyB1cGRhdGUgam91cm5leSwgdGhlIGZsYWcncyBzdGF0dXMgd291bGQgbm9cbiAgICAvLyBsb25nZXIgcmVmbGVjdCBpdHMgYWN0dWFsICpwZXJzaXN0ZWQqIHN0YXR1c1xuICAgIC8vIEFsc28gcmVzZXQgY29tbWVudHMgYW5kIGRlc2NyaXB0aW9uIGZpZWxkcyAoYm90aCBFbmdsaXNoIGFuZCBXZWxzaCkgd2l0aCB0aGUgb3JpZ2luYWwgcGVyc2lzdGVkIGRhdGEsIHRvIGF2b2lkXG4gICAgLy8gdGhlIFVJIGNhY2hpbmcgYW55IGNoYW5nZXMgdGhhdCB0aGUgdXNlciBtaWdodCBub3Qgd2FudCBwZXJzaXN0ZWQsIGlmIHRoZXkgc3RhcnQgb3ZlciBhbmQgZG9uJ3QgaW50ZW5kIHRvIGFkZFxuICAgIC8vIHRyYW5zbGF0aW9ucyBzdWJzZXF1ZW50bHlcbiAgICBsZXQgb3JpZ2luYWxTdGF0dXM6IHN0cmluZztcbiAgICBsZXQgZm9ybWF0dGVkVmFsdWUgPSBmbGFnc0luc3RhbmNlLmNhc2VGaWVsZD8uZm9ybWF0dGVkX3ZhbHVlO1xuICAgIC8vIFVzZSB0aGUgcGF0aFRvRmxhZ3NGb3JtR3JvdXAgcHJvcGVydHkgZnJvbSB0aGUgc2VsZWN0ZWQgZmxhZyBsb2NhdGlvbiB0byBkcmlsbCBkb3duIHRvIHRoZSBjb3JyZWN0IHBhcnQgb2YgdGhlXG4gICAgLy8gQ2FzZUZpZWxkIGZvcm1hdHRlZF92YWx1ZSBmcm9tIHdoaWNoIHRvIGdldCB0aGUgb3JpZ2luYWwgcGVyc2lzdGVkIGRhdGFcbiAgICBjb25zdCBwYXRoVG9WYWx1ZSA9IGZsYWdzSW5zdGFuY2UucGF0aFRvRmxhZ3NGb3JtR3JvdXA7XG4gICAgLy8gUm9vdC1sZXZlbCBGbGFncyBDYXNlRmllbGRzIGRvbid0IGhhdmUgYSBkb3QtZGVsaW1pdGVkIHBhdGggLSBqdXN0IHRoZSBDYXNlRmllbGQgSUQgaXRzZWxmIC0gc28gZG9uJ3QgZHJpbGwgZG93blxuICAgIGlmIChwYXRoVG9WYWx1ZS5pbmRleE9mKCcuJykgPiAtMSkge1xuICAgICAgcGF0aFRvVmFsdWUuc2xpY2UocGF0aFRvVmFsdWUuaW5kZXhPZignLicpICsgMSkuc3BsaXQoJy4nKS5mb3JFYWNoKChwYXJ0KSA9PiB7XG4gICAgICAgIGlmIChmb3JtYXR0ZWRWYWx1ZSAmJiBGaWVsZHNVdGlscy5pc05vbkVtcHR5T2JqZWN0KGZvcm1hdHRlZFZhbHVlKSkge1xuICAgICAgICAgIGZvcm1hdHRlZFZhbHVlID0gZm9ybWF0dGVkVmFsdWVbcGFydF07XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAoZm9ybWF0dGVkVmFsdWUgJiYgRmllbGRzVXRpbHMuaXNOb25FbXB0eU9iamVjdChmb3JtYXR0ZWRWYWx1ZSkpIHtcbiAgICAgIGNvbnN0IG9yaWdpbmFsRmxhZ0RldGFpbCA9IGZvcm1hdHRlZFZhbHVlLmRldGFpbHM/LmZpbmQoKGRldGFpbCkgPT4gZGV0YWlsLmlkID09PSBmbGFnRGV0YWlsLmlkKTtcbiAgICAgIGxldCBzdGF0dXNUb1VzZTtcbiAgICAgIGlmIChmbGFnc0luc3RhbmNlLnBhdGhUb0ZsYWdzRm9ybUdyb3VwID09PSBvcmlnaW5hbFBhdGhUb0ZsYWcpIHtcbiAgICAgICAgaWYgKG9yaWdpbmFsU3RhdHVzRnJvbUZHKSB7XG4gICAgICAgICAgc3RhdHVzVG9Vc2UgPSBvcmlnaW5hbFN0YXR1c0Zyb21GRyA9PT0gb3JpZ2luYWxGbGFnRGV0YWlsLnZhbHVlPy5zdGF0dXMgPyBvcmlnaW5hbEZsYWdEZXRhaWwudmFsdWU/LnN0YXR1cyA6IG9yaWdpbmFsU3RhdHVzRnJvbUZHO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHN0YXR1c1RvVXNlID0gb3JpZ2luYWxGbGFnRGV0YWlsLnZhbHVlPy5zdGF0dXM7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN0YXR1c1RvVXNlID0gb3JpZ2luYWxGbGFnRGV0YWlsLnZhbHVlPy5zdGF0dXM7XG4gICAgICB9XG4gICAgICBpZiAob3JpZ2luYWxGbGFnRGV0YWlsKSB7XG4gICAgICAgIG9yaWdpbmFsU3RhdHVzID0gc3RhdHVzVG9Vc2U7XG4gICAgICAgIGZsYWdEZXRhaWwuZmxhZ0NvbW1lbnQgPSBvcmlnaW5hbEZsYWdEZXRhaWwudmFsdWU/LmZsYWdDb21tZW50O1xuICAgICAgICBmbGFnRGV0YWlsLmZsYWdDb21tZW50X2N5ID0gb3JpZ2luYWxGbGFnRGV0YWlsLnZhbHVlPy5mbGFnQ29tbWVudF9jeTtcbiAgICAgICAgZmxhZ0RldGFpbC5vdGhlckRlc2NyaXB0aW9uID0gb3JpZ2luYWxGbGFnRGV0YWlsLnZhbHVlPy5vdGhlckRlc2NyaXB0aW9uO1xuICAgICAgICBmbGFnRGV0YWlsLm90aGVyRGVzY3JpcHRpb25fY3kgPSBvcmlnaW5hbEZsYWdEZXRhaWwudmFsdWU/Lm90aGVyRGVzY3JpcHRpb25fY3k7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBmbGFnRGV0YWlsRGlzcGxheToge1xuICAgICAgICBwYXJ0eU5hbWU6IGZsYWdzSW5zdGFuY2UuZmxhZ3M/LnBhcnR5TmFtZSxcbiAgICAgICAgZmxhZ0RldGFpbCxcbiAgICAgICAgZmxhZ3NDYXNlRmllbGRJZDogZmxhZ3NJbnN0YW5jZS5jYXNlRmllbGQ/LmlkLFxuICAgICAgICB2aXNpYmlsaXR5OiBmbGFnc0luc3RhbmNlLmZsYWdzPy52aXNpYmlsaXR5XG4gICAgICB9LFxuICAgICAgcGF0aFRvRmxhZ3NGb3JtR3JvdXA6IGZsYWdzSW5zdGFuY2UucGF0aFRvRmxhZ3NGb3JtR3JvdXAsXG4gICAgICBjYXNlRmllbGQ6IGZsYWdzSW5zdGFuY2UuY2FzZUZpZWxkLFxuICAgICAgcm9sZU9uQ2FzZTogZmxhZ3NJbnN0YW5jZS5mbGFncz8ucm9sZU9uQ2FzZSxcbiAgICAgIG9yaWdpbmFsU3RhdHVzXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBvbk5leHQoKTogdm9pZCB7XG4gICAgLy8gVmFsaWRhdGUgZmxhZyBzZWxlY3Rpb25cbiAgICB0aGlzLnZhbGlkYXRlU2VsZWN0aW9uKCk7XG4gICAgLy8gUmV0dXJuIGNhc2UgZmxhZyBmaWVsZCBzdGF0ZSwgZXJyb3IgbWVzc2FnZXMsIGFuZCBmbGFnIHNlbGVjdGlvbiB0byB0aGUgcGFyZW50XG4gICAgdGhpcy5jYXNlRmxhZ1N0YXRlRW1pdHRlci5lbWl0KHtcbiAgICAgIGN1cnJlbnRDYXNlRmxhZ0ZpZWxkU3RhdGU6IENhc2VGbGFnRmllbGRTdGF0ZS5GTEFHX01BTkFHRV9DQVNFX0ZMQUdTLFxuICAgICAgZXJyb3JNZXNzYWdlczogdGhpcy5lcnJvck1lc3NhZ2VzLFxuICAgICAgc2VsZWN0ZWRGbGFnOiB0aGlzLmZvcm1Hcm91cC5nZXQodGhpcy5zZWxlY3RlZENvbnRyb2xOYW1lKS52YWx1ZVxuICAgICAgICA/IHRoaXMuZm9ybUdyb3VwLmdldCh0aGlzLnNlbGVjdGVkQ29udHJvbE5hbWUpLnZhbHVlIGFzIEZsYWdEZXRhaWxEaXNwbGF5V2l0aEZvcm1Hcm91cFBhdGhcbiAgICAgICAgOiBudWxsXG4gICAgfSk7XG5cbiAgICB3aW5kb3cuc2Nyb2xsVG8oMCwgMCk7XG4gIH1cblxuICBwdWJsaWMgc2V0TWFuYWdlQ2FzZUZsYWdUaXRsZShkaXNwbGF5Q29udGV4dFBhcmFtZXRlcjogc3RyaW5nKTogQ2FzZUZsYWdXaXphcmRTdGVwVGl0bGUge1xuICAgIHN3aXRjaCAoZGlzcGxheUNvbnRleHRQYXJhbWV0ZXIpIHtcbiAgICAgIGNhc2UgQ2FzZUZsYWdEaXNwbGF5Q29udGV4dFBhcmFtZXRlci5VUERBVEU6XG4gICAgICBjYXNlIENhc2VGbGFnRGlzcGxheUNvbnRleHRQYXJhbWV0ZXIuVVBEQVRFXzJfUE9JTlRfMTpcbiAgICAgICAgcmV0dXJuIENhc2VGbGFnV2l6YXJkU3RlcFRpdGxlLk1BTkFHRV9DQVNFX0ZMQUdTO1xuICAgICAgY2FzZSBDYXNlRmxhZ0Rpc3BsYXlDb250ZXh0UGFyYW1ldGVyLlVQREFURV9FWFRFUk5BTDpcbiAgICAgICAgcmV0dXJuIENhc2VGbGFnV2l6YXJkU3RlcFRpdGxlLk1BTkFHRV9TVVBQT1JUO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIENhc2VGbGFnV2l6YXJkU3RlcFRpdGxlLk5PTkU7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZVNlbGVjdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLm1hbmFnZUNhc2VGbGFnU2VsZWN0ZWRFcnJvck1lc3NhZ2UgPSBudWxsO1xuICAgIHRoaXMuZXJyb3JNZXNzYWdlcyA9IFtdO1xuICAgIGlmICghdGhpcy5mb3JtR3JvdXAuZ2V0KHRoaXMuc2VsZWN0ZWRDb250cm9sTmFtZSkudmFsdWUpIHtcbiAgICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IHRoaXMuZGlzcGxheUNvbnRleHRQYXJhbWV0ZXIgPT09IENhc2VGbGFnRGlzcGxheUNvbnRleHRQYXJhbWV0ZXIuVVBEQVRFX0VYVEVSTkFMID9cbiAgICAgICAgU2VsZWN0RmxhZ0Vycm9yTWVzc2FnZS5NQU5BR0VfU1VQUE9SVF9GTEFHX05PVF9TRUxFQ1RFRCA6IFNlbGVjdEZsYWdFcnJvck1lc3NhZ2UuTUFOQUdFX0NBU0VfRkxBR1NfRkxBR19OT1RfU0VMRUNURUQ7XG4gICAgICB0aGlzLm1hbmFnZUNhc2VGbGFnU2VsZWN0ZWRFcnJvck1lc3NhZ2UgPSBlcnJvck1lc3NhZ2U7XG4gICAgICB0aGlzLmVycm9yTWVzc2FnZXMucHVzaCh7XG4gICAgICAgIHRpdGxlOiAnJyxcbiAgICAgICAgZGVzY3JpcHRpb246IGVycm9yTWVzc2FnZSxcbiAgICAgICAgZmllbGRJZDogJ2NvbmRpdGlvbmFsLXJhZGlvcy1saXN0J1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBvbk5vRmxhZ3NFcnJvcigpOiB2b2lkIHtcbiAgICAvLyBTZXQgZXJyb3IgZmxhZyBvbiBjb21wb25lbnQgdG8gcmVtb3ZlIHRoZSBcIk5leHRcIiBidXR0b24gKHVzZXIgY2Fubm90IHByb2NlZWQgd2l0aCBmbGFnIGNyZWF0aW9uKVxuICAgIHRoaXMubm9GbGFnc0Vycm9yID0gdHJ1ZTtcbiAgICB0aGlzLmVycm9yTWVzc2FnZXMgPSBbXTtcbiAgICB0aGlzLmVycm9yTWVzc2FnZXMucHVzaCh7IHRpdGxlOiAnJywgZGVzY3JpcHRpb246IFNlbGVjdEZsYWdFcnJvck1lc3NhZ2UuTk9fRkxBR1MsIGZpZWxkSWQ6ICdjb25kaXRpb25hbC1yYWRpb3MtbGlzdCcgfSk7XG4gICAgLy8gUmV0dXJuIGNhc2UgZmxhZyBmaWVsZCBzdGF0ZSBhbmQgZXJyb3IgbWVzc2FnZXMgdG8gdGhlIHBhcmVudFxuICAgIHRoaXMuY2FzZUZsYWdTdGF0ZUVtaXR0ZXIuZW1pdCh7XG4gICAgICBjdXJyZW50Q2FzZUZsYWdGaWVsZFN0YXRlOiBDYXNlRmxhZ0ZpZWxkU3RhdGUuRkxBR19NQU5BR0VfQ0FTRV9GTEFHUyxcbiAgICAgIGVycm9yTWVzc2FnZXM6IHRoaXMuZXJyb3JNZXNzYWdlc1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5leHQoKSB7XG4gICAgdGhpcy5vbk5leHQoKTtcbiAgICBjb25zdCBjYWNoZWRDb250cm9sID0gdGhpcy5jYWNoZWRDb250cm9scz8uW3RoaXMuc2VsZWN0ZWRDb250cm9sTmFtZV07XG4gICAgaWYgKGNhY2hlZENvbnRyb2wgJiYgdGhpcy5nZXRGbGFnSUQoY2FjaGVkQ29udHJvbC52YWx1ZSkgPT09IHRoaXMuZ2V0RmxhZ0lEKHRoaXMuZm9ybUdyb3VwLnZhbHVlW3RoaXMuc2VsZWN0ZWRDb250cm9sTmFtZV0pKSB7XG4gICAgICB0aGlzLnJlYXBwbHlDYWNoZWRDb250cm9scygpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmVycm9yTWVzc2FnZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICBzdXBlci5uZXh0KCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHJlYXBwbHlDYWNoZWRDb250cm9scygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jYWNoZWRDb250cm9scykge1xuICAgICAgT2JqZWN0LmtleXModGhpcy5jYWNoZWRDb250cm9scykuZm9yRWFjaCgoY29udHJvbE5hbWUpID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLmZvcm1Hcm91cC5jb250YWlucyhjb250cm9sTmFtZSkpIHtcbiAgICAgICAgICB0aGlzLmZvcm1Hcm91cC5hZGRDb250cm9sKGNvbnRyb2xOYW1lLCB0aGlzLmNhY2hlZENvbnRyb2xzW2NvbnRyb2xOYW1lXSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiPlxuICA8ZGl2IGNsYXNzPVwiZ292dWstZm9ybS1ncm91cFwiIFtuZ0NsYXNzXT1cInsnZm9ybS1ncm91cC1lcnJvcic6IGVycm9yTWVzc2FnZXMubGVuZ3RoID4gMH1cIj5cbiAgICA8ZmllbGRzZXQgY2xhc3M9XCJnb3Z1ay1maWVsZHNldFwiIGFyaWEtZGVzY3JpYmVkYnk9XCJtYW5hZ2UtY2FzZS1mbGFnLWhlYWRpbmdcIj5cbiAgICAgIDxsZWdlbmQgY2xhc3M9XCJnb3Z1ay1maWVsZHNldF9fbGVnZW5kIGdvdnVrLWZpZWxkc2V0X19sZWdlbmQtLW1cIj5cbiAgICAgICAgPGgxIGlkPVwibWFuYWdlLWNhc2UtZmxhZy1oZWFkaW5nXCIgY2xhc3M9XCJnb3Z1ay1maWVsZHNldF9faGVhZGluZ1wiPlxuICAgICAgICAgIHt7bWFuYWdlQ2FzZUZsYWdUaXRsZSB8IHJweFRyYW5zbGF0ZX19XG4gICAgICAgIDwvaDE+XG4gICAgICA8L2xlZ2VuZD5cbiAgICAgIDxkaXYgaWQ9XCJtYW5hZ2UtY2FzZS1mbGFnLW5vdC1zZWxlY3RlZC1lcnJvci1tZXNzYWdlXCIgY2xhc3M9XCJnb3Z1ay1lcnJvci1tZXNzYWdlXCJcbiAgICAgICAgKm5nSWY9XCJtYW5hZ2VDYXNlRmxhZ1NlbGVjdGVkRXJyb3JNZXNzYWdlXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZ292dWstdmlzdWFsbHktaGlkZGVuXCI+e3snRXJyb3I6JyB8IHJweFRyYW5zbGF0ZX19PC9zcGFuPiB7e21hbmFnZUNhc2VGbGFnU2VsZWN0ZWRFcnJvck1lc3NhZ2UgfCBycHhUcmFuc2xhdGV9fVxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiZ292dWstcmFkaW9zIGdvdnVrLXJhZGlvcy0tY29uZGl0aW9uYWxcIiBkYXRhLW1vZHVsZT1cImdvdnVrLXJhZGlvc1wiIGlkPVwiY29uZGl0aW9uYWwtcmFkaW9zLWxpc3RcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLXJhZGlvc19faXRlbVwiICpuZ0Zvcj1cImxldCBmbGFnRGlzcGxheSBvZiBmbGFnc0Rpc3BsYXlEYXRhOyBpbmRleCBhcyBpXCI+XG4gICAgICAgICAgPGlucHV0IGNsYXNzPVwiZ292dWstcmFkaW9zX19pbnB1dFwiIGlkPVwiZmxhZy1zZWxlY3Rpb24te3tpfX1cIlxuICAgICAgICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgICAgICAgIFtjaGVja2VkXT1cImlzU2VsZWN0ZWQoZmxhZ0Rpc3BsYXkpXCJcbiAgICAgICAgICAgIChjaGFuZ2UpPVwib25GbGFnU2VsZWN0aW9uQ2hhbmdlKGZsYWdEaXNwbGF5KVwiLz5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJnb3Z1ay1sYWJlbCBnb3Z1ay1yYWRpb3NfX2xhYmVsXCIgZm9yPVwiZmxhZy1zZWxlY3Rpb24te3tpfX1cIiBbaW5uZXJIdG1sXT1cImZsYWdEaXNwbGF5IHwgbWFuYWdlQ2FzZUZsYWdzTGFiZWxEaXNwbGF5XCI+PC9sYWJlbD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2ZpZWxkc2V0PlxuICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPiJdfQ==