@hmcts/ccd-case-ui-toolkit 7.2.15-multiple-followup → 7.2.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/app.config.mjs +1 -3
- package/esm2022/lib/shared/components/palette/palette.module.mjs +10 -5
- package/esm2022/lib/shared/components/palette/query-management/components/query-check-your-answers/query-check-your-answers.component.mjs +142 -87
- package/esm2022/lib/shared/components/palette/query-management/components/query-details/query-details.component.mjs +8 -52
- package/esm2022/lib/shared/components/palette/query-management/components/query-write/query-write-respond-to-query/query-write-respond-to-query.component.mjs +3 -2
- package/esm2022/lib/shared/components/palette/query-management/enums/query-item-response-status.enum.mjs +1 -2
- package/esm2022/lib/shared/components/palette/query-management/models/case-queries-collection.model.mjs +1 -1
- package/esm2022/lib/shared/components/palette/query-management/models/query-list/query-list-item/query-list-item.model.mjs +2 -22
- package/esm2022/lib/shared/components/palette/query-management/read-query-management-field.component.mjs +22 -74
- package/esm2022/lib/shared/components/palette/query-management/utils/query-management.utils.mjs +3 -12
- package/esm2022/lib/shared/utils.mjs +1 -1
- package/fesm2022/hmcts-ccd-case-ui-toolkit.mjs +205 -266
- package/fesm2022/hmcts-ccd-case-ui-toolkit.mjs.map +1 -1
- package/lib/app.config.d.ts +0 -3
- package/lib/app.config.d.ts.map +1 -1
- package/lib/shared/components/palette/palette.module.d.ts +2 -1
- package/lib/shared/components/palette/palette.module.d.ts.map +1 -1
- package/lib/shared/components/palette/query-management/components/query-check-your-answers/query-check-your-answers.component.d.ts +5 -2
- package/lib/shared/components/palette/query-management/components/query-check-your-answers/query-check-your-answers.component.d.ts.map +1 -1
- package/lib/shared/components/palette/query-management/components/query-details/query-details.component.d.ts +3 -15
- package/lib/shared/components/palette/query-management/components/query-details/query-details.component.d.ts.map +1 -1
- 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
- package/lib/shared/components/palette/query-management/enums/query-item-response-status.enum.d.ts +1 -2
- package/lib/shared/components/palette/query-management/enums/query-item-response-status.enum.d.ts.map +1 -1
- package/lib/shared/components/palette/query-management/models/case-queries-collection.model.d.ts +0 -2
- package/lib/shared/components/palette/query-management/models/case-queries-collection.model.d.ts.map +1 -1
- package/lib/shared/components/palette/query-management/models/query-list/query-list-item/query-list-item.model.d.ts +0 -2
- package/lib/shared/components/palette/query-management/models/query-list/query-list-item/query-list-item.model.d.ts.map +1 -1
- package/lib/shared/components/palette/query-management/read-query-management-field.component.d.ts +3 -16
- package/lib/shared/components/palette/query-management/read-query-management-field.component.d.ts.map +1 -1
- package/lib/shared/components/palette/query-management/utils/query-management.utils.d.ts +1 -1
- package/lib/shared/components/palette/query-management/utils/query-management.utils.d.ts.map +1 -1
- package/lib/shared/utils.d.ts +1 -1
- package/package.json +1 -1
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
2
|
import { FormGroup } from '@angular/forms';
|
|
3
3
|
import { ActivatedRoute, Router } from '@angular/router';
|
|
4
|
+
import { Subject } from 'rxjs';
|
|
4
5
|
import { switchMap, take } from 'rxjs/operators';
|
|
5
6
|
import { CaseEventTrigger } from '../../../../../../../lib/shared/domain';
|
|
6
7
|
import { SessionStorageService } from '../../../../../services';
|
|
@@ -15,7 +16,7 @@ import * as i2 from "../../../../case-editor/services";
|
|
|
15
16
|
import * as i3 from "../../../../../services";
|
|
16
17
|
import * as i4 from "../../services/qualifying-question.service";
|
|
17
18
|
function QueryCheckYourAnswersComponent_div_0_div_2_li_6_Template(rf, ctx) { if (rf & 1) {
|
|
18
|
-
i0.ɵɵelementStart(0, "li")(1, "a",
|
|
19
|
+
i0.ɵɵelementStart(0, "li")(1, "a", 28);
|
|
19
20
|
i0.ɵɵtext(2);
|
|
20
21
|
i0.ɵɵpipe(3, "rpxTranslate");
|
|
21
22
|
i0.ɵɵelementEnd()();
|
|
@@ -27,12 +28,12 @@ function QueryCheckYourAnswersComponent_div_0_div_2_li_6_Template(rf, ctx) { if
|
|
|
27
28
|
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 2, errorMessage_r2.description));
|
|
28
29
|
} }
|
|
29
30
|
function QueryCheckYourAnswersComponent_div_0_div_2_Template(rf, ctx) { if (rf & 1) {
|
|
30
|
-
i0.ɵɵelementStart(0, "div",
|
|
31
|
+
i0.ɵɵelementStart(0, "div", 23)(1, "h2", 24);
|
|
31
32
|
i0.ɵɵtext(2);
|
|
32
33
|
i0.ɵɵpipe(3, "rpxTranslate");
|
|
33
34
|
i0.ɵɵelementEnd();
|
|
34
|
-
i0.ɵɵelementStart(4, "div",
|
|
35
|
-
i0.ɵɵtemplate(6, QueryCheckYourAnswersComponent_div_0_div_2_li_6_Template, 4, 4, "li",
|
|
35
|
+
i0.ɵɵelementStart(4, "div", 25)(5, "ul", 26);
|
|
36
|
+
i0.ɵɵtemplate(6, QueryCheckYourAnswersComponent_div_0_div_2_li_6_Template, 4, 4, "li", 27);
|
|
36
37
|
i0.ɵɵelementEnd()()();
|
|
37
38
|
} if (rf & 2) {
|
|
38
39
|
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
@@ -41,9 +42,43 @@ function QueryCheckYourAnswersComponent_div_0_div_2_Template(rf, ctx) { if (rf &
|
|
|
41
42
|
i0.ɵɵadvance(4);
|
|
42
43
|
i0.ɵɵproperty("ngForOf", ctx_r2.errorMessages);
|
|
43
44
|
} }
|
|
44
|
-
function
|
|
45
|
+
function QueryCheckYourAnswersComponent_div_0_div_3_ul_5_li_1_Template(rf, ctx) { if (rf & 1) {
|
|
46
|
+
i0.ɵɵelementStart(0, "li", 34);
|
|
47
|
+
i0.ɵɵtext(1);
|
|
48
|
+
i0.ɵɵelementEnd();
|
|
49
|
+
} if (rf & 2) {
|
|
50
|
+
const fieldError_r4 = ctx.$implicit;
|
|
51
|
+
i0.ɵɵadvance();
|
|
52
|
+
i0.ɵɵtextInterpolate(fieldError_r4.message);
|
|
53
|
+
} }
|
|
54
|
+
function QueryCheckYourAnswersComponent_div_0_div_3_ul_5_Template(rf, ctx) { if (rf & 1) {
|
|
55
|
+
i0.ɵɵelementStart(0, "ul", 32);
|
|
56
|
+
i0.ɵɵtemplate(1, QueryCheckYourAnswersComponent_div_0_div_3_ul_5_li_1_Template, 2, 1, "li", 33);
|
|
57
|
+
i0.ɵɵelementEnd();
|
|
58
|
+
} if (rf & 2) {
|
|
59
|
+
const ctx_r2 = i0.ɵɵnextContext(3);
|
|
60
|
+
i0.ɵɵadvance();
|
|
61
|
+
i0.ɵɵproperty("ngForOf", ctx_r2.error.details.field_errors);
|
|
62
|
+
} }
|
|
63
|
+
function QueryCheckYourAnswersComponent_div_0_div_3_Template(rf, ctx) { if (rf & 1) {
|
|
64
|
+
i0.ɵɵelementStart(0, "div", 29)(1, "h3", 30);
|
|
65
|
+
i0.ɵɵtext(2, " The event could not be created ");
|
|
66
|
+
i0.ɵɵelementEnd();
|
|
67
|
+
i0.ɵɵelementStart(3, "p");
|
|
68
|
+
i0.ɵɵtext(4);
|
|
69
|
+
i0.ɵɵelementEnd();
|
|
70
|
+
i0.ɵɵtemplate(5, QueryCheckYourAnswersComponent_div_0_div_3_ul_5_Template, 2, 1, "ul", 31);
|
|
71
|
+
i0.ɵɵelementEnd();
|
|
72
|
+
} if (rf & 2) {
|
|
73
|
+
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
74
|
+
i0.ɵɵadvance(4);
|
|
75
|
+
i0.ɵɵtextInterpolate(ctx_r2.error.message);
|
|
76
|
+
i0.ɵɵadvance();
|
|
77
|
+
i0.ɵɵproperty("ngIf", ctx_r2.error.details == null ? null : ctx_r2.error.details.field_errors);
|
|
78
|
+
} }
|
|
79
|
+
function QueryCheckYourAnswersComponent_div_0_ng_container_5_Template(rf, ctx) { if (rf & 1) {
|
|
45
80
|
i0.ɵɵelementContainerStart(0);
|
|
46
|
-
i0.ɵɵelementStart(1, "div",
|
|
81
|
+
i0.ɵɵelementStart(1, "div", 35);
|
|
47
82
|
i0.ɵɵtext(2);
|
|
48
83
|
i0.ɵɵpipe(3, "rpxTranslate");
|
|
49
84
|
i0.ɵɵelementEnd();
|
|
@@ -52,7 +87,7 @@ function QueryCheckYourAnswersComponent_div_0_ng_container_3_Template(rf, ctx) {
|
|
|
52
87
|
i0.ɵɵadvance(2);
|
|
53
88
|
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 1, "Raise a query"));
|
|
54
89
|
} }
|
|
55
|
-
function
|
|
90
|
+
function QueryCheckYourAnswersComponent_div_0_ng_container_7_Template(rf, ctx) { if (rf & 1) {
|
|
56
91
|
i0.ɵɵelementContainerStart(0);
|
|
57
92
|
i0.ɵɵtext(1);
|
|
58
93
|
i0.ɵɵpipe(2, "rpxTranslate");
|
|
@@ -61,16 +96,16 @@ function QueryCheckYourAnswersComponent_div_0_ng_container_5_Template(rf, ctx) {
|
|
|
61
96
|
i0.ɵɵadvance();
|
|
62
97
|
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 1, "Review query response details"), " ");
|
|
63
98
|
} }
|
|
64
|
-
function
|
|
99
|
+
function QueryCheckYourAnswersComponent_div_0_ng_template_8_Template(rf, ctx) { if (rf & 1) {
|
|
65
100
|
i0.ɵɵtext(0);
|
|
66
101
|
i0.ɵɵpipe(1, "rpxTranslate");
|
|
67
102
|
} if (rf & 2) {
|
|
68
103
|
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(1, 1, "Review query details"), " ");
|
|
69
104
|
} }
|
|
70
|
-
function
|
|
71
|
-
const
|
|
72
|
-
i0.ɵɵelementStart(0, "a",
|
|
73
|
-
i0.ɵɵlistener("click", function
|
|
105
|
+
function QueryCheckYourAnswersComponent_div_0_dl_12_a_8_Template(rf, ctx) { if (rf & 1) {
|
|
106
|
+
const _r5 = i0.ɵɵgetCurrentView();
|
|
107
|
+
i0.ɵɵelementStart(0, "a", 19);
|
|
108
|
+
i0.ɵɵlistener("click", function QueryCheckYourAnswersComponent_div_0_dl_12_a_8_Template_a_click_0_listener() { i0.ɵɵrestoreView(_r5); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.goBack()); });
|
|
74
109
|
i0.ɵɵtext(1);
|
|
75
110
|
i0.ɵɵpipe(2, "rpxTranslate");
|
|
76
111
|
i0.ɵɵelementEnd();
|
|
@@ -78,16 +113,16 @@ function QueryCheckYourAnswersComponent_div_0_dl_10_a_8_Template(rf, ctx) { if (
|
|
|
78
113
|
i0.ɵɵadvance();
|
|
79
114
|
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 1, "Change"), " ");
|
|
80
115
|
} }
|
|
81
|
-
function
|
|
82
|
-
i0.ɵɵelementStart(0, "dl",
|
|
116
|
+
function QueryCheckYourAnswersComponent_div_0_dl_12_Template(rf, ctx) { if (rf & 1) {
|
|
117
|
+
i0.ɵɵelementStart(0, "dl", 14)(1, "div", 15)(2, "dt", 16);
|
|
83
118
|
i0.ɵɵtext(3);
|
|
84
119
|
i0.ɵɵpipe(4, "rpxTranslate");
|
|
85
120
|
i0.ɵɵelementEnd();
|
|
86
|
-
i0.ɵɵelementStart(5, "dd",
|
|
121
|
+
i0.ɵɵelementStart(5, "dd", 17);
|
|
87
122
|
i0.ɵɵtext(6);
|
|
88
123
|
i0.ɵɵelementEnd();
|
|
89
|
-
i0.ɵɵelementStart(7, "dd",
|
|
90
|
-
i0.ɵɵtemplate(8,
|
|
124
|
+
i0.ɵɵelementStart(7, "dd", 18);
|
|
125
|
+
i0.ɵɵtemplate(8, QueryCheckYourAnswersComponent_div_0_dl_12_a_8_Template, 3, 3, "a", 36);
|
|
91
126
|
i0.ɵɵelementEnd()()();
|
|
92
127
|
} if (rf & 2) {
|
|
93
128
|
let tmp_4_0;
|
|
@@ -99,7 +134,7 @@ function QueryCheckYourAnswersComponent_div_0_dl_10_Template(rf, ctx) { if (rf &
|
|
|
99
134
|
i0.ɵɵadvance(2);
|
|
100
135
|
i0.ɵɵproperty("ngIf", ctx_r2.queryCreateContext === ctx_r2.queryCreateContextEnum.NEW_QUERY);
|
|
101
136
|
} }
|
|
102
|
-
function
|
|
137
|
+
function QueryCheckYourAnswersComponent_div_0_dl_24_ng_container_6_Template(rf, ctx) { if (rf & 1) {
|
|
103
138
|
i0.ɵɵelementContainerStart(0);
|
|
104
139
|
i0.ɵɵtext(1);
|
|
105
140
|
i0.ɵɵpipe(2, "rpxTranslate");
|
|
@@ -108,24 +143,24 @@ function QueryCheckYourAnswersComponent_div_0_dl_22_ng_container_6_Template(rf,
|
|
|
108
143
|
i0.ɵɵadvance();
|
|
109
144
|
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind3(2, 1, "Is the query hearing related?", null, "Yes"), " ");
|
|
110
145
|
} }
|
|
111
|
-
function
|
|
146
|
+
function QueryCheckYourAnswersComponent_div_0_dl_24_ng_template_7_Template(rf, ctx) { if (rf & 1) {
|
|
112
147
|
i0.ɵɵtext(0);
|
|
113
148
|
i0.ɵɵpipe(1, "rpxTranslate");
|
|
114
149
|
} if (rf & 2) {
|
|
115
150
|
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind3(1, 1, "Is the query hearing related?", null, "No"), " ");
|
|
116
151
|
} }
|
|
117
|
-
function
|
|
118
|
-
const
|
|
119
|
-
i0.ɵɵelementStart(0, "div",
|
|
152
|
+
function QueryCheckYourAnswersComponent_div_0_dl_24_div_13_Template(rf, ctx) { if (rf & 1) {
|
|
153
|
+
const _r7 = i0.ɵɵgetCurrentView();
|
|
154
|
+
i0.ɵɵelementStart(0, "div", 15)(1, "dt", 16);
|
|
120
155
|
i0.ɵɵtext(2);
|
|
121
156
|
i0.ɵɵpipe(3, "rpxTranslate");
|
|
122
157
|
i0.ɵɵelementEnd();
|
|
123
|
-
i0.ɵɵelementStart(4, "dd",
|
|
158
|
+
i0.ɵɵelementStart(4, "dd", 17);
|
|
124
159
|
i0.ɵɵtext(5);
|
|
125
160
|
i0.ɵɵpipe(6, "date");
|
|
126
161
|
i0.ɵɵelementEnd();
|
|
127
|
-
i0.ɵɵelementStart(7, "dd",
|
|
128
|
-
i0.ɵɵlistener("click", function
|
|
162
|
+
i0.ɵɵelementStart(7, "dd", 18)(8, "a", 19);
|
|
163
|
+
i0.ɵɵlistener("click", function QueryCheckYourAnswersComponent_div_0_dl_24_div_13_Template_a_click_8_listener() { i0.ɵɵrestoreView(_r7); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.goBack()); });
|
|
129
164
|
i0.ɵɵtext(9);
|
|
130
165
|
i0.ɵɵpipe(10, "rpxTranslate");
|
|
131
166
|
i0.ɵɵelementEnd()()();
|
|
@@ -139,53 +174,53 @@ function QueryCheckYourAnswersComponent_div_0_dl_22_div_13_Template(rf, ctx) { i
|
|
|
139
174
|
i0.ɵɵadvance(4);
|
|
140
175
|
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(10, 8, "Change"), " ");
|
|
141
176
|
} }
|
|
142
|
-
function
|
|
143
|
-
const
|
|
144
|
-
i0.ɵɵelementStart(0, "dl",
|
|
177
|
+
function QueryCheckYourAnswersComponent_div_0_dl_24_Template(rf, ctx) { if (rf & 1) {
|
|
178
|
+
const _r6 = i0.ɵɵgetCurrentView();
|
|
179
|
+
i0.ɵɵelementStart(0, "dl", 14)(1, "div", 15)(2, "dt", 16);
|
|
145
180
|
i0.ɵɵtext(3);
|
|
146
181
|
i0.ɵɵpipe(4, "rpxTranslate");
|
|
147
182
|
i0.ɵɵelementEnd();
|
|
148
|
-
i0.ɵɵelementStart(5, "dd",
|
|
149
|
-
i0.ɵɵtemplate(6,
|
|
183
|
+
i0.ɵɵelementStart(5, "dd", 17);
|
|
184
|
+
i0.ɵɵtemplate(6, QueryCheckYourAnswersComponent_div_0_dl_24_ng_container_6_Template, 3, 5, "ng-container", 10)(7, QueryCheckYourAnswersComponent_div_0_dl_24_ng_template_7_Template, 2, 5, "ng-template", null, 1, i0.ɵɵtemplateRefExtractor);
|
|
150
185
|
i0.ɵɵelementEnd();
|
|
151
|
-
i0.ɵɵelementStart(9, "dd",
|
|
152
|
-
i0.ɵɵlistener("click", function
|
|
186
|
+
i0.ɵɵelementStart(9, "dd", 18)(10, "a", 19);
|
|
187
|
+
i0.ɵɵlistener("click", function QueryCheckYourAnswersComponent_div_0_dl_24_Template_a_click_10_listener() { i0.ɵɵrestoreView(_r6); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.goBack()); });
|
|
153
188
|
i0.ɵɵtext(11);
|
|
154
189
|
i0.ɵɵpipe(12, "rpxTranslate");
|
|
155
190
|
i0.ɵɵelementEnd()()();
|
|
156
|
-
i0.ɵɵtemplate(13,
|
|
191
|
+
i0.ɵɵtemplate(13, QueryCheckYourAnswersComponent_div_0_dl_24_div_13_Template, 11, 10, "div", 37);
|
|
157
192
|
i0.ɵɵelementEnd();
|
|
158
193
|
} if (rf & 2) {
|
|
159
194
|
let tmp_5_0;
|
|
160
195
|
let tmp_8_0;
|
|
161
|
-
const
|
|
196
|
+
const isHearingRelatedFalse_r8 = i0.ɵɵreference(8);
|
|
162
197
|
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
163
198
|
i0.ɵɵadvance(3);
|
|
164
199
|
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(4, 5, "Is the query hearing related?"), " ");
|
|
165
200
|
i0.ɵɵadvance(3);
|
|
166
|
-
i0.ɵɵproperty("ngIf", ((tmp_5_0 = ctx_r2.formGroup.get("isHearingRelated")) == null ? null : tmp_5_0.value) === true)("ngIfElse",
|
|
201
|
+
i0.ɵɵproperty("ngIf", ((tmp_5_0 = ctx_r2.formGroup.get("isHearingRelated")) == null ? null : tmp_5_0.value) === true)("ngIfElse", isHearingRelatedFalse_r8);
|
|
167
202
|
i0.ɵɵadvance(5);
|
|
168
203
|
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(12, 7, "Change"), " ");
|
|
169
204
|
i0.ɵɵadvance(2);
|
|
170
205
|
i0.ɵɵproperty("ngIf", (tmp_8_0 = ctx_r2.formGroup.get("isHearingRelated")) == null ? null : tmp_8_0.value);
|
|
171
206
|
} }
|
|
172
|
-
function
|
|
173
|
-
i0.ɵɵelement(0, "ccd-query-attachments-read",
|
|
207
|
+
function QueryCheckYourAnswersComponent_div_0_dl_25_ccd_query_attachments_read_6_Template(rf, ctx) { if (rf & 1) {
|
|
208
|
+
i0.ɵɵelement(0, "ccd-query-attachments-read", 40);
|
|
174
209
|
} if (rf & 2) {
|
|
175
210
|
const ctx_r2 = i0.ɵɵnextContext(3);
|
|
176
211
|
i0.ɵɵproperty("attachments", ctx_r2.attachments);
|
|
177
212
|
} }
|
|
178
|
-
function
|
|
179
|
-
const
|
|
180
|
-
i0.ɵɵelementStart(0, "dl",
|
|
213
|
+
function QueryCheckYourAnswersComponent_div_0_dl_25_Template(rf, ctx) { if (rf & 1) {
|
|
214
|
+
const _r9 = i0.ɵɵgetCurrentView();
|
|
215
|
+
i0.ɵɵelementStart(0, "dl", 14)(1, "div", 15)(2, "dt", 16);
|
|
181
216
|
i0.ɵɵtext(3);
|
|
182
217
|
i0.ɵɵpipe(4, "rpxTranslate");
|
|
183
218
|
i0.ɵɵelementEnd();
|
|
184
|
-
i0.ɵɵelementStart(5, "dd",
|
|
185
|
-
i0.ɵɵtemplate(6,
|
|
219
|
+
i0.ɵɵelementStart(5, "dd", 38);
|
|
220
|
+
i0.ɵɵtemplate(6, QueryCheckYourAnswersComponent_div_0_dl_25_ccd_query_attachments_read_6_Template, 1, 1, "ccd-query-attachments-read", 39);
|
|
186
221
|
i0.ɵɵelementEnd();
|
|
187
|
-
i0.ɵɵelementStart(7, "dd",
|
|
188
|
-
i0.ɵɵlistener("click", function
|
|
222
|
+
i0.ɵɵelementStart(7, "dd", 18)(8, "a", 19);
|
|
223
|
+
i0.ɵɵlistener("click", function QueryCheckYourAnswersComponent_div_0_dl_25_Template_a_click_8_listener() { i0.ɵɵrestoreView(_r9); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.goBack()); });
|
|
189
224
|
i0.ɵɵtext(9);
|
|
190
225
|
i0.ɵɵpipe(10, "rpxTranslate");
|
|
191
226
|
i0.ɵɵelementEnd()()()();
|
|
@@ -201,68 +236,74 @@ function QueryCheckYourAnswersComponent_div_0_dl_23_Template(rf, ctx) { if (rf &
|
|
|
201
236
|
function QueryCheckYourAnswersComponent_div_0_Template(rf, ctx) { if (rf & 1) {
|
|
202
237
|
const _r1 = i0.ɵɵgetCurrentView();
|
|
203
238
|
i0.ɵɵelementStart(0, "div", 3)(1, "div", 4);
|
|
204
|
-
i0.ɵɵtemplate(2, QueryCheckYourAnswersComponent_div_0_div_2_Template, 7, 4, "div", 5)(3,
|
|
205
|
-
i0.ɵɵ
|
|
206
|
-
i0.ɵɵtemplate(5, QueryCheckYourAnswersComponent_div_0_ng_container_5_Template,
|
|
239
|
+
i0.ɵɵtemplate(2, QueryCheckYourAnswersComponent_div_0_div_2_Template, 7, 4, "div", 5)(3, QueryCheckYourAnswersComponent_div_0_div_3_Template, 6, 2, "div", 6);
|
|
240
|
+
i0.ɵɵelement(4, "ccd-callback-errors", 7);
|
|
241
|
+
i0.ɵɵtemplate(5, QueryCheckYourAnswersComponent_div_0_ng_container_5_Template, 4, 3, "ng-container", 8);
|
|
242
|
+
i0.ɵɵelementStart(6, "h1", 9);
|
|
243
|
+
i0.ɵɵtemplate(7, QueryCheckYourAnswersComponent_div_0_ng_container_7_Template, 3, 3, "ng-container", 10)(8, QueryCheckYourAnswersComponent_div_0_ng_template_8_Template, 2, 3, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor);
|
|
207
244
|
i0.ɵɵelementEnd();
|
|
208
|
-
i0.ɵɵelementStart(
|
|
209
|
-
i0.ɵɵelement(
|
|
245
|
+
i0.ɵɵelementStart(10, "div", 11);
|
|
246
|
+
i0.ɵɵelement(11, "ccd-query-case-details-header", 12);
|
|
210
247
|
i0.ɵɵelementEnd();
|
|
211
|
-
i0.ɵɵtemplate(
|
|
212
|
-
i0.ɵɵelementStart(
|
|
213
|
-
i0.ɵɵtext(
|
|
214
|
-
i0.ɵɵpipe(
|
|
248
|
+
i0.ɵɵtemplate(12, QueryCheckYourAnswersComponent_div_0_dl_12_Template, 9, 5, "dl", 13);
|
|
249
|
+
i0.ɵɵelementStart(13, "dl", 14)(14, "div", 15)(15, "dt", 16);
|
|
250
|
+
i0.ɵɵtext(16);
|
|
251
|
+
i0.ɵɵpipe(17, "rpxTranslate");
|
|
215
252
|
i0.ɵɵelementEnd();
|
|
216
|
-
i0.ɵɵelementStart(
|
|
217
|
-
i0.ɵɵtext(
|
|
253
|
+
i0.ɵɵelementStart(18, "dd", 17);
|
|
254
|
+
i0.ɵɵtext(19);
|
|
218
255
|
i0.ɵɵelementEnd();
|
|
219
|
-
i0.ɵɵelementStart(
|
|
220
|
-
i0.ɵɵlistener("click", function
|
|
221
|
-
i0.ɵɵtext(
|
|
222
|
-
i0.ɵɵpipe(
|
|
256
|
+
i0.ɵɵelementStart(20, "dd", 18)(21, "a", 19);
|
|
257
|
+
i0.ɵɵlistener("click", function QueryCheckYourAnswersComponent_div_0_Template_a_click_21_listener() { i0.ɵɵrestoreView(_r1); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.goBack()); });
|
|
258
|
+
i0.ɵɵtext(22);
|
|
259
|
+
i0.ɵɵpipe(23, "rpxTranslate");
|
|
223
260
|
i0.ɵɵelementEnd()()()();
|
|
224
|
-
i0.ɵɵtemplate(
|
|
225
|
-
i0.ɵɵelement(
|
|
226
|
-
i0.ɵɵelementStart(
|
|
227
|
-
i0.ɵɵlistener("click", function
|
|
228
|
-
i0.ɵɵtext(
|
|
229
|
-
i0.ɵɵpipe(
|
|
261
|
+
i0.ɵɵtemplate(24, QueryCheckYourAnswersComponent_div_0_dl_24_Template, 14, 9, "dl", 13)(25, QueryCheckYourAnswersComponent_div_0_dl_25_Template, 11, 7, "dl", 13);
|
|
262
|
+
i0.ɵɵelement(26, "br");
|
|
263
|
+
i0.ɵɵelementStart(27, "div")(28, "button", 20);
|
|
264
|
+
i0.ɵɵlistener("click", function QueryCheckYourAnswersComponent_div_0_Template_button_click_28_listener() { i0.ɵɵrestoreView(_r1); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.goBack()); });
|
|
265
|
+
i0.ɵɵtext(29);
|
|
266
|
+
i0.ɵɵpipe(30, "rpxTranslate");
|
|
230
267
|
i0.ɵɵelementEnd();
|
|
231
|
-
i0.ɵɵelementStart(
|
|
232
|
-
i0.ɵɵlistener("click", function
|
|
233
|
-
i0.ɵɵtext(
|
|
234
|
-
i0.ɵɵpipe(
|
|
268
|
+
i0.ɵɵelementStart(31, "button", 21);
|
|
269
|
+
i0.ɵɵlistener("click", function QueryCheckYourAnswersComponent_div_0_Template_button_click_31_listener() { i0.ɵɵrestoreView(_r1); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.submit()); });
|
|
270
|
+
i0.ɵɵtext(32);
|
|
271
|
+
i0.ɵɵpipe(33, "rpxTranslate");
|
|
235
272
|
i0.ɵɵelementEnd()()();
|
|
236
|
-
i0.ɵɵelement(
|
|
273
|
+
i0.ɵɵelement(34, "ccd-query-event-completion", 22);
|
|
237
274
|
i0.ɵɵelementEnd();
|
|
238
275
|
} if (rf & 2) {
|
|
239
|
-
let
|
|
240
|
-
const
|
|
276
|
+
let tmp_11_0;
|
|
277
|
+
const defaultCheckYourAnswersTitle_r10 = i0.ɵɵreference(9);
|
|
241
278
|
const ctx_r2 = i0.ɵɵnextContext();
|
|
242
279
|
i0.ɵɵadvance(2);
|
|
243
280
|
i0.ɵɵproperty("ngIf", ctx_r2.errorMessages.length > 0);
|
|
244
281
|
i0.ɵɵadvance();
|
|
282
|
+
i0.ɵɵproperty("ngIf", ctx_r2.error && (ctx_r2.error.details || ctx_r2.error.message));
|
|
283
|
+
i0.ɵɵadvance();
|
|
284
|
+
i0.ɵɵproperty("callbackErrorsSubject", ctx_r2.callbackErrorsSubject);
|
|
285
|
+
i0.ɵɵadvance();
|
|
245
286
|
i0.ɵɵproperty("ngIf", ctx_r2.queryCreateContext === ctx_r2.queryCreateContextEnum.NEW_QUERY);
|
|
246
287
|
i0.ɵɵadvance(2);
|
|
247
|
-
i0.ɵɵproperty("ngIf", ctx_r2.queryCreateContext === ctx_r2.queryCreateContextEnum.RESPOND)("ngIfElse",
|
|
288
|
+
i0.ɵɵproperty("ngIf", ctx_r2.queryCreateContext === ctx_r2.queryCreateContextEnum.RESPOND)("ngIfElse", defaultCheckYourAnswersTitle_r10);
|
|
248
289
|
i0.ɵɵadvance(4);
|
|
249
290
|
i0.ɵɵproperty("caseDetails", ctx_r2.caseDetails);
|
|
250
291
|
i0.ɵɵadvance();
|
|
251
292
|
i0.ɵɵproperty("ngIf", ctx_r2.queryCreateContext !== ctx_r2.queryCreateContextEnum.FOLLOWUP);
|
|
252
293
|
i0.ɵɵadvance(4);
|
|
253
|
-
i0.ɵɵtextInterpolate1(" ", ctx_r2.queryCreateContext === ctx_r2.queryCreateContextEnum.RESPOND ? "Response detail" : i0.ɵɵpipeBind1(
|
|
294
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r2.queryCreateContext === ctx_r2.queryCreateContextEnum.RESPOND ? "Response detail" : i0.ɵɵpipeBind1(17, 16, "Query detail"), " ");
|
|
254
295
|
i0.ɵɵadvance(3);
|
|
255
|
-
i0.ɵɵtextInterpolate1(" ", (
|
|
296
|
+
i0.ɵɵtextInterpolate1(" ", (tmp_11_0 = ctx_r2.formGroup.get("body")) == null ? null : tmp_11_0.value, " ");
|
|
256
297
|
i0.ɵɵadvance(3);
|
|
257
|
-
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(
|
|
298
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(23, 18, "Change"), " ");
|
|
258
299
|
i0.ɵɵadvance(2);
|
|
259
300
|
i0.ɵɵproperty("ngIf", ctx_r2.queryCreateContext === ctx_r2.queryCreateContextEnum.NEW_QUERY);
|
|
260
301
|
i0.ɵɵadvance();
|
|
261
302
|
i0.ɵɵproperty("ngIf", ctx_r2.formGroup.get("attachments").value.length > 0);
|
|
262
303
|
i0.ɵɵadvance(4);
|
|
263
|
-
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(
|
|
304
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(30, 20, "Previous"), " ");
|
|
264
305
|
i0.ɵɵadvance(3);
|
|
265
|
-
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(
|
|
306
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(33, 22, "Submit"), " ");
|
|
266
307
|
i0.ɵɵadvance(2);
|
|
267
308
|
i0.ɵɵproperty("eventCompletionParams", ctx_r2.eventCompletionParams);
|
|
268
309
|
} }
|
|
@@ -286,7 +327,6 @@ export class QueryCheckYourAnswersComponent {
|
|
|
286
327
|
queryItem;
|
|
287
328
|
queryCreateContext;
|
|
288
329
|
eventData = null;
|
|
289
|
-
multipleFollowUpFeature;
|
|
290
330
|
backClicked = new EventEmitter();
|
|
291
331
|
querySubmitted = new EventEmitter();
|
|
292
332
|
callbackConfirmationMessage = new EventEmitter();
|
|
@@ -305,6 +345,8 @@ export class QueryCheckYourAnswersComponent {
|
|
|
305
345
|
filteredTasks = [];
|
|
306
346
|
readyToSubmit;
|
|
307
347
|
isSubmitting = false;
|
|
348
|
+
callbackErrorsSubject = new Subject();
|
|
349
|
+
error;
|
|
308
350
|
constructor(route, router, casesService, caseNotifier, workAllocationService, sessionStorageService, qualifyingQuestionService) {
|
|
309
351
|
this.route = route;
|
|
310
352
|
this.router = router;
|
|
@@ -439,13 +481,25 @@ export class QueryCheckYourAnswersComponent {
|
|
|
439
481
|
handleError(error) {
|
|
440
482
|
console.error('Error in API calls:', error);
|
|
441
483
|
this.isSubmitting = false;
|
|
442
|
-
this.
|
|
484
|
+
if (this.isServiceErrorFound(error)) {
|
|
485
|
+
this.error = null;
|
|
486
|
+
this.callbackErrorsSubject.next(error);
|
|
487
|
+
}
|
|
488
|
+
else {
|
|
489
|
+
if (error && error.status !== 401 && error.status !== 403) {
|
|
490
|
+
this.error = error;
|
|
491
|
+
}
|
|
492
|
+
else {
|
|
493
|
+
this.router.navigate(['/', 'service-down']);
|
|
494
|
+
}
|
|
495
|
+
}
|
|
496
|
+
window.scrollTo({ left: 0, top: 0, behavior: 'smooth' });
|
|
443
497
|
}
|
|
444
498
|
generateCaseQueriesCollectionData() {
|
|
445
499
|
const currentUserDetails = JSON.parse(this.sessionStorageService.getItem(USER_DETAILS));
|
|
446
500
|
const caseMessage = this.queryCreateContext === QueryCreateContext.NEW_QUERY
|
|
447
501
|
? QueryManagementUtils.getNewQueryData(this.formGroup, currentUserDetails)
|
|
448
|
-
: QueryManagementUtils.getRespondOrFollowupQueryData(this.formGroup, this.queryItem, currentUserDetails
|
|
502
|
+
: QueryManagementUtils.getRespondOrFollowupQueryData(this.formGroup, this.queryItem, currentUserDetails);
|
|
449
503
|
const messageId = this.route.snapshot.params.dataid; // Get the message ID from route params (if present)
|
|
450
504
|
const isNewQuery = this.queryCreateContext === QueryCreateContext.NEW_QUERY; // Check if this is a new query
|
|
451
505
|
// Check if the field ID has been set dynamically
|
|
@@ -601,16 +655,19 @@ export class QueryCheckYourAnswersComponent {
|
|
|
601
655
|
this.attachments = documents.map(QueryManagementUtils.documentToCollectionFormDocument);
|
|
602
656
|
}
|
|
603
657
|
}
|
|
658
|
+
isServiceErrorFound(error) {
|
|
659
|
+
return !!(error?.callbackErrors?.length);
|
|
660
|
+
}
|
|
604
661
|
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.SessionStorageService), i0.ɵɵdirectiveInject(i4.QualifyingQuestionService)); };
|
|
605
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: QueryCheckYourAnswersComponent, selectors: [["ccd-query-check-your-answers"]], inputs: { formGroup: "formGroup", queryItem: "queryItem", queryCreateContext: "queryCreateContext", eventData: "eventData"
|
|
606
|
-
i0.ɵɵtemplate(0, QueryCheckYourAnswersComponent_div_0_Template,
|
|
662
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: QueryCheckYourAnswersComponent, selectors: [["ccd-query-check-your-answers"]], inputs: { formGroup: "formGroup", queryItem: "queryItem", queryCreateContext: "queryCreateContext", eventData: "eventData" }, 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) {
|
|
663
|
+
i0.ɵɵtemplate(0, QueryCheckYourAnswersComponent_div_0_Template, 35, 24, "div", 2);
|
|
607
664
|
} if (rf & 2) {
|
|
608
665
|
i0.ɵɵproperty("ngIf", ctx.readyToSubmit);
|
|
609
666
|
} }, styles: [".govuk-summary-list__value--documentAttached[_ngcontent-%COMP%]{vertical-align:middle}"] });
|
|
610
667
|
}
|
|
611
668
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(QueryCheckYourAnswersComponent, [{
|
|
612
669
|
type: Component,
|
|
613
|
-
args: [{ selector: 'ccd-query-check-your-answers', template: "<div class=\"govuk-grid-row\" *ngIf=\"readyToSubmit\">\n <div class=\"govuk-grid-column-two-thirds-from-desktop\">\n <!-- Error message summary -->\n <div *ngIf=\"errorMessages.length > 0\" class=\"govuk-error-summary\"\n aria-labelledby=\"error-summary-title\" role=\"alert\" tabindex=\"-1\"\n data-module=\"govuk-error-summary\">\n <h2 class=\"govuk-error-summary__title\" id=\"error-summary-title\">\n {{ 'There is a problem' | rpxTranslate }}\n </h2>\n <div class=\"govuk-error-summary__body\">\n <ul class=\"govuk-list govuk-error-summary__list\">\n <li *ngFor=\"let errorMessage of errorMessages\">\n <a [id]=\"'error-' + errorMessage.fieldId\" href=\"javascript:void(0)\"\n class=\"validation-error\">{{ errorMessage.description | rpxTranslate }}</a>\n </li>\n </ul>\n </div>\n </div>\n\n <ng-container *ngIf=\"queryCreateContext === queryCreateContextEnum.NEW_QUERY\">\n <div class=\"govuk-caption-l\">{{ 'Raise a query' | rpxTranslate }}</div>\n </ng-container>\n\n <h1 class=\"govuk-heading-l\">\n <ng-container *ngIf=\"queryCreateContext === queryCreateContextEnum.RESPOND; else defaultCheckYourAnswersTitle\">\n {{ 'Review query response details' | rpxTranslate }}\n </ng-container>\n\n <ng-template #defaultCheckYourAnswersTitle>\n {{ 'Review query details' | rpxTranslate }}\n </ng-template>\n </h1>\n <div class=\"govuk-!-margin-bottom-4\">\n <ccd-query-case-details-header [caseDetails]=\"caseDetails\"></ccd-query-case-details-header>\n </div>\n\n <dl *ngIf=\"queryCreateContext !== queryCreateContextEnum.FOLLOWUP\" class=\"govuk-summary-list govuk-!-margin-bottom-0\">\n <div class=\"govuk-summary-list__row\">\n <dt class=\"govuk-summary-list__key\">\n {{ queryCreateContext === queryCreateContextEnum.RESPOND ? 'Submitted query' : 'Query subject' | rpxTranslate }}\n </dt>\n <dd class=\"govuk-summary-list__value\">\n {{ queryCreateContext === queryCreateContextEnum.RESPOND ? queryItem.subject : formGroup.get('subject')?.value }}\n </dd>\n <dd class=\"govuk-summary-list__actions\">\n <a *ngIf=\"queryCreateContext === queryCreateContextEnum.NEW_QUERY\" \n href=\"javascript:void(0)\" class=\"govuk-link\" (click)=\"goBack()\">\n {{ 'Change' | rpxTranslate }}\n </a>\n </dd>\n </div>\n </dl>\n\n <dl class=\"govuk-summary-list govuk-!-margin-bottom-0\">\n <div class=\"govuk-summary-list__row\">\n <dt class=\"govuk-summary-list__key\">\n {{ queryCreateContext === queryCreateContextEnum.RESPOND ? 'Response detail' : 'Query detail' | rpxTranslate }}\n </dt>\n <dd class=\"govuk-summary-list__value\">\n {{ formGroup.get('body')?.value }}\n </dd>\n <dd class=\"govuk-summary-list__actions\">\n <a href=\"javascript:void(0)\" class=\"govuk-link\" (click)=\"goBack()\">\n {{ 'Change' | rpxTranslate }}\n </a>\n </dd>\n </div>\n </dl>\n\n <dl *ngIf=\"queryCreateContext === queryCreateContextEnum.NEW_QUERY\" class=\"govuk-summary-list govuk-!-margin-bottom-0\">\n <div class=\"govuk-summary-list__row\">\n <dt class=\"govuk-summary-list__key\">\n {{ 'Is the query hearing related?' | rpxTranslate }}\n </dt>\n <dd class=\"govuk-summary-list__value\">\n <ng-container *ngIf=\"formGroup.get('isHearingRelated')?.value === true; else isHearingRelatedFalse\">\n {{ 'Is the query hearing related?' | rpxTranslate: null : 'Yes' }}\n </ng-container>\n <ng-template #isHearingRelatedFalse>\n {{ 'Is the query hearing related?' | rpxTranslate: null : 'No' }}\n </ng-template>\n </dd>\n <dd class=\"govuk-summary-list__actions\">\n <a href=\"javascript:void(0)\" class=\"govuk-link\" (click)=\"goBack()\">\n {{ 'Change' | rpxTranslate }}\n </a>\n </dd>\n </div>\n\n <div *ngIf=\"formGroup.get('isHearingRelated')?.value\" class=\"govuk-summary-list__row\">\n <dt class=\"govuk-summary-list__key\">\n {{ queryCreateContext === queryCreateContextEnum.NEW_QUERY\n ? 'What is the date of the hearing?'\n : 'What is the date of the hearing your query is related to?' | rpxTranslate }}\n </dt>\n <dd class=\"govuk-summary-list__value\">\n {{ formGroup.get('hearingDate')?.value | date: 'dd MMM yyyy' }}\n </dd>\n <dd class=\"govuk-summary-list__actions\">\n <a href=\"javascript:void(0)\" class=\"govuk-link\" (click)=\"goBack()\">\n {{ 'Change' | rpxTranslate }}\n </a>\n </dd>\n </div>\n </dl>\n <dl class=\"govuk-summary-list govuk-!-margin-bottom-0\" *ngIf=\"this.formGroup.get('attachments').value.length > 0\">\n <div class=\"govuk-summary-list__row\">\n <dt class=\"govuk-summary-list__key\">\n {{ queryCreateContext === queryCreateContextEnum.NEW_QUERY ? 'Upload a file to the query' : 'Document attached' | rpxTranslate }}\n </dt>\n <dd class=\"govuk-summary-list__value govuk-summary-list__value--documentAttached\">\n <ccd-query-attachments-read\n *ngIf=\"this.formGroup.get('attachments').value\"\n [attachments]=\"attachments\"\n >\n </ccd-query-attachments-read>\n </dd>\n <dd class=\"govuk-summary-list__actions\">\n <a href=\"javascript:void(0)\" class=\"govuk-link\" (click)=\"goBack()\">\n {{ 'Change' | rpxTranslate }}\n </a>\n </dd>\n </div>\n </dl>\n\n <br>\n\n <div>\n <button class=\"govuk-button govuk-button--secondary govuk-!-margin-right-3\" data-module=\"govuk-button\"\n (click)=\"goBack()\">\n {{ 'Previous' | rpxTranslate }}\n </button>\n <button class=\"govuk-button\" data-module=\"govuk-button\" type=\"submit\" (click)=\"submit()\">\n {{ 'Submit' | rpxTranslate }}\n </button>\n </div>\n </div>\n\n <ccd-query-event-completion [eventCompletionParams]=\"eventCompletionParams\"> \n </ccd-query-event-completion>\n</div>\n", styles: [".govuk-summary-list__value--documentAttached{vertical-align:middle}\n"] }]
|
|
670
|
+
args: [{ selector: 'ccd-query-check-your-answers', template: "<div class=\"govuk-grid-row\" *ngIf=\"readyToSubmit\">\n <div class=\"govuk-grid-column-two-thirds-from-desktop\">\n <!-- Error message summary -->\n <div *ngIf=\"errorMessages.length > 0\" class=\"govuk-error-summary\"\n aria-labelledby=\"error-summary-title\" role=\"alert\" tabindex=\"-1\"\n data-module=\"govuk-error-summary\">\n <h2 class=\"govuk-error-summary__title\" id=\"error-summary-title\">\n {{ 'There is a problem' | rpxTranslate }}\n </h2>\n <div class=\"govuk-error-summary__body\">\n <ul class=\"govuk-list govuk-error-summary__list\">\n <li *ngFor=\"let errorMessage of errorMessages\">\n <a [id]=\"'error-' + errorMessage.fieldId\" href=\"javascript:void(0)\"\n class=\"validation-error\">{{ errorMessage.description | rpxTranslate }}</a>\n </li>\n </ul>\n </div>\n </div>\n\n <div *ngIf=\"error && (error.details || error.message)\" class=\"error-summary\" role=\"group\" aria-labelledby=\"edit-case-event_error-summary-heading\" tabindex=\"-1\">\n <h3 class=\"heading-h3 error-summary-heading\" id=\"event_error-summary-heading\">\n The event could not be created\n </h3>\n <p>{{error.message}}</p>\n <ul *ngIf=\"error.details?.field_errors\" class=\"error-summary-list\">\n <li *ngFor=\"let fieldError of error.details.field_errors\" class=\"ccd-error-summary-li\">{{fieldError.message}}</li>\n </ul>\n </div>\n\n <ccd-callback-errors [callbackErrorsSubject]=\"callbackErrorsSubject\"></ccd-callback-errors>\n\n <ng-container *ngIf=\"queryCreateContext === queryCreateContextEnum.NEW_QUERY\">\n <div class=\"govuk-caption-l\">{{ 'Raise a query' | rpxTranslate }}</div>\n </ng-container>\n\n <h1 class=\"govuk-heading-l\">\n <ng-container *ngIf=\"queryCreateContext === queryCreateContextEnum.RESPOND; else defaultCheckYourAnswersTitle\">\n {{ 'Review query response details' | rpxTranslate }}\n </ng-container>\n\n <ng-template #defaultCheckYourAnswersTitle>\n {{ 'Review query details' | rpxTranslate }}\n </ng-template>\n </h1>\n <div class=\"govuk-!-margin-bottom-4\">\n <ccd-query-case-details-header [caseDetails]=\"caseDetails\"></ccd-query-case-details-header>\n </div>\n\n <dl *ngIf=\"queryCreateContext !== queryCreateContextEnum.FOLLOWUP\" class=\"govuk-summary-list govuk-!-margin-bottom-0\">\n <div class=\"govuk-summary-list__row\">\n <dt class=\"govuk-summary-list__key\">\n {{ queryCreateContext === queryCreateContextEnum.RESPOND ? 'Submitted query' : 'Query subject' | rpxTranslate }}\n </dt>\n <dd class=\"govuk-summary-list__value\">\n {{ queryCreateContext === queryCreateContextEnum.RESPOND ? queryItem.subject : formGroup.get('subject')?.value }}\n </dd>\n <dd class=\"govuk-summary-list__actions\">\n <a *ngIf=\"queryCreateContext === queryCreateContextEnum.NEW_QUERY\" \n href=\"javascript:void(0)\" class=\"govuk-link\" (click)=\"goBack()\">\n {{ 'Change' | rpxTranslate }}\n </a>\n </dd>\n </div>\n </dl>\n\n <dl class=\"govuk-summary-list govuk-!-margin-bottom-0\">\n <div class=\"govuk-summary-list__row\">\n <dt class=\"govuk-summary-list__key\">\n {{ queryCreateContext === queryCreateContextEnum.RESPOND ? 'Response detail' : 'Query detail' | rpxTranslate }}\n </dt>\n <dd class=\"govuk-summary-list__value\">\n {{ formGroup.get('body')?.value }}\n </dd>\n <dd class=\"govuk-summary-list__actions\">\n <a href=\"javascript:void(0)\" class=\"govuk-link\" (click)=\"goBack()\">\n {{ 'Change' | rpxTranslate }}\n </a>\n </dd>\n </div>\n </dl>\n\n <dl *ngIf=\"queryCreateContext === queryCreateContextEnum.NEW_QUERY\" class=\"govuk-summary-list govuk-!-margin-bottom-0\">\n <div class=\"govuk-summary-list__row\">\n <dt class=\"govuk-summary-list__key\">\n {{ 'Is the query hearing related?' | rpxTranslate }}\n </dt>\n <dd class=\"govuk-summary-list__value\">\n <ng-container *ngIf=\"formGroup.get('isHearingRelated')?.value === true; else isHearingRelatedFalse\">\n {{ 'Is the query hearing related?' | rpxTranslate: null : 'Yes' }}\n </ng-container>\n <ng-template #isHearingRelatedFalse>\n {{ 'Is the query hearing related?' | rpxTranslate: null : 'No' }}\n </ng-template>\n </dd>\n <dd class=\"govuk-summary-list__actions\">\n <a href=\"javascript:void(0)\" class=\"govuk-link\" (click)=\"goBack()\">\n {{ 'Change' | rpxTranslate }}\n </a>\n </dd>\n </div>\n\n <div *ngIf=\"formGroup.get('isHearingRelated')?.value\" class=\"govuk-summary-list__row\">\n <dt class=\"govuk-summary-list__key\">\n {{ queryCreateContext === queryCreateContextEnum.NEW_QUERY\n ? 'What is the date of the hearing?'\n : 'What is the date of the hearing your query is related to?' | rpxTranslate }}\n </dt>\n <dd class=\"govuk-summary-list__value\">\n {{ formGroup.get('hearingDate')?.value | date: 'dd MMM yyyy' }}\n </dd>\n <dd class=\"govuk-summary-list__actions\">\n <a href=\"javascript:void(0)\" class=\"govuk-link\" (click)=\"goBack()\">\n {{ 'Change' | rpxTranslate }}\n </a>\n </dd>\n </div>\n </dl>\n <dl class=\"govuk-summary-list govuk-!-margin-bottom-0\" *ngIf=\"this.formGroup.get('attachments').value.length > 0\">\n <div class=\"govuk-summary-list__row\">\n <dt class=\"govuk-summary-list__key\">\n {{ queryCreateContext === queryCreateContextEnum.NEW_QUERY ? 'Upload a file to the query' : 'Document attached' | rpxTranslate }}\n </dt>\n <dd class=\"govuk-summary-list__value govuk-summary-list__value--documentAttached\">\n <ccd-query-attachments-read\n *ngIf=\"this.formGroup.get('attachments').value\"\n [attachments]=\"attachments\"\n >\n </ccd-query-attachments-read>\n </dd>\n <dd class=\"govuk-summary-list__actions\">\n <a href=\"javascript:void(0)\" class=\"govuk-link\" (click)=\"goBack()\">\n {{ 'Change' | rpxTranslate }}\n </a>\n </dd>\n </div>\n </dl>\n\n <br>\n\n <div>\n <button class=\"govuk-button govuk-button--secondary govuk-!-margin-right-3\" data-module=\"govuk-button\"\n (click)=\"goBack()\">\n {{ 'Previous' | rpxTranslate }}\n </button>\n <button class=\"govuk-button\" data-module=\"govuk-button\" type=\"submit\" (click)=\"submit()\">\n {{ 'Submit' | rpxTranslate }}\n </button>\n </div>\n </div>\n\n <ccd-query-event-completion [eventCompletionParams]=\"eventCompletionParams\"> \n </ccd-query-event-completion>\n</div>\n", styles: [".govuk-summary-list__value--documentAttached{vertical-align:middle}\n"] }]
|
|
614
671
|
}], () => [{ type: i1.ActivatedRoute }, { type: i1.Router }, { type: i2.CasesService }, { type: i2.CaseNotifier }, { type: i2.WorkAllocationService }, { type: i3.SessionStorageService }, { type: i4.QualifyingQuestionService }], { formGroup: [{
|
|
615
672
|
type: Input
|
|
616
673
|
}], queryItem: [{
|
|
@@ -619,8 +676,6 @@ export class QueryCheckYourAnswersComponent {
|
|
|
619
676
|
type: Input
|
|
620
677
|
}], eventData: [{
|
|
621
678
|
type: Input
|
|
622
|
-
}], multipleFollowUpFeature: [{
|
|
623
|
-
type: Input
|
|
624
679
|
}], backClicked: [{
|
|
625
680
|
type: Output
|
|
626
681
|
}], querySubmitted: [{
|
|
@@ -629,4 +684,4 @@ export class QueryCheckYourAnswersComponent {
|
|
|
629
684
|
type: Output
|
|
630
685
|
}] }); })();
|
|
631
686
|
(() => { (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: 28 }); })();
|
|
632
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktY2hlY2steW91ci1hbnN3ZXJzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9wYWxldHRlL3F1ZXJ5LW1hbmFnZW1lbnQvY29tcG9uZW50cy9xdWVyeS1jaGVjay15b3VyLWFuc3dlcnMvcXVlcnktY2hlY2steW91ci1hbnN3ZXJzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9wYWxldHRlL3F1ZXJ5LW1hbmFnZW1lbnQvY29tcG9uZW50cy9xdWVyeS1jaGVjay15b3VyLWFuc3dlcnMvcXVlcnktY2hlY2steW91ci1hbnN3ZXJzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXpELE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakQsT0FBTyxFQUNMLGdCQUFnQixFQUtqQixNQUFNLHdDQUF3QyxDQUFDO0FBQ2hELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRWhFLE9BQU8sRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLHFCQUFxQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDckcsT0FBTyxFQUFrRCxrQkFBa0IsRUFBRSxhQUFhLEVBQUUs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YztrQkFBOUIsTUFBTTtZQUNVLDJCQUEyQjtrQkFBM0MsTUFBTTs7a0ZBbEJJLDhCQUE4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHN3aXRjaE1hcCwgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gIENhc2VFdmVudFRyaWdnZXIsXG4gIENhc2VGaWVsZCxcbiAgQ2FzZVZpZXcsXG4gIENhc2VWaWV3VHJpZ2dlcixcbiAgRXJyb3JNZXNzYWdlXG59IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9zaGFyZWQvZG9tYWluJztcbmltcG9ydCB7IFNlc3Npb25TdG9yYWdlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7IEV2ZW50Q29tcGxldGlvblBhcmFtcyB9IGZyb20gJy4uLy4uLy4uLy4uL2Nhc2UtZWRpdG9yL2RvbWFpbi9ldmVudC1jb21wbGV0aW9uLXBhcmFtcy5tb2RlbCc7XG5pbXBvcnQgeyBDYXNlTm90aWZpZXIsIENhc2VzU2VydmljZSwgV29ya0FsbG9jYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vY2FzZS1lZGl0b3Ivc2VydmljZXMnO1xuaW1wb3J0IHsgQ2FzZVF1ZXJpZXNDb2xsZWN0aW9uLCBRbUNhc2VRdWVyaWVzQ29sbGVjdGlvbiwgUXVlcnlDcmVhdGVDb250ZXh0LCBRdWVyeUxpc3RJdGVtIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IFF1ZXJ5TWFuYWdlbWVudFV0aWxzIH0gZnJvbSAnLi4vLi4vdXRpbHMvcXVlcnktbWFuYWdlbWVudC51dGlscyc7XG5pbXBvcnQgeyBGb3JtRG9jdW1lbnQgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvc2hhcmVkL2RvbWFpbi9kb2N1bWVudCc7XG5pbXBvcnQgeyBRdWFsaWZ5aW5nUXVlc3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcXVhbGlmeWluZy1xdWVzdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IFRhc2sgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9kb21haW4vd29yay1hbGxvY2F0aW9uL1Rhc2snO1xuaW1wb3J0IHsgVVNFUl9ERVRBSUxTIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vdXRpbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjY2QtcXVlcnktY2hlY2steW91ci1hbnN3ZXJzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3F1ZXJ5LWNoZWNrLXlvdXItYW5zd2Vycy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3F1ZXJ5LWNoZWNrLXlvdXItYW5zd2Vycy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFF1ZXJ5Q2hlY2tZb3VyQW5zd2Vyc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSByZWFkb25seSBSQUlTRV9BX1FVRVJZX0VWRU5UX1RSSUdHRVJfSUQgPSAncXVlcnlNYW5hZ2VtZW50UmFpc2VRdWVyeSc7XG4gIHByaXZhdGUgcmVhZG9ubHkgUkVTUE9ORF9UT19RVUVSWV9FVkVOVF9UUklHR0VSX0lEID0gJ3F1ZXJ5TWFuYWdlbWVudFJlc3BvbmRRdWVyeSc7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBDQVNFX1FVRVJJRVNfQ09MTEVDVElPTl9JRCA9ICdDYXNlUXVlcmllc0NvbGxlY3Rpb24nO1xuICBwdWJsaWMgcmVhZG9ubHkgRklFTERfVFlQRV9DT01QTEVYID0gJ0NvbXBsZXgnO1xuICBwdWJsaWMgcmVhZG9ubHkgRElTUExBWV9DT05URVhUX1JFQURPTkxZID0gJ1JFQURPTkxZJztcbiAgcHVibGljIHJlYWRvbmx5IFFNX1NFTEVDVF9GSVJTVF9DT0xMRUNUSU9OID0gJ3NlbGVjdEZpcnN0Q29sbGVjdGlvbic7XG4gIHB1YmxpYyByZWFkb25seSBRTV9DT0xMRUNUSU9OX1BST01QVCA9ICdwcm9tcHRRbUNvbGxlY3Rpb24nO1xuICBwdWJsaWMgcmVhZG9ubHkgQ0lWSUxfSlVSSVNESUNUSU9OID0gJ0NJVklMJztcblxuICBASW5wdXQoKSBwdWJsaWMgZm9ybUdyb3VwOiBGb3JtR3JvdXA7XG4gIEBJbnB1dCgpIHB1YmxpYyBxdWVyeUl0ZW06IFF1ZXJ5TGlzdEl0ZW07XG4gIEBJbnB1dCgpIHB1YmxpYyBxdWVyeUNyZWF0ZUNvbnRleHQ6IFF1ZXJ5Q3JlYXRlQ29udGV4dDtcbiAgQElucHV0KCkgcHVibGljIGV2ZW50RGF0YTogQ2FzZUV2ZW50VHJpZ2dlciB8IG51bGwgPSBudWxsO1xuICBASW5wdXQoKSBwdWJsaWMgbXVsdGlwbGVGb2xsb3dVcEZlYXR1cmU6IGJvb2xlYW47XG4gIEBPdXRwdXQoKSBwdWJsaWMgYmFja0NsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgcXVlcnlTdWJtaXR0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgY2FsbGJhY2tDb25maXJtYXRpb25NZXNzYWdlID0gbmV3IEV2ZW50RW1pdHRlcjx7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9PigpO1xuXG4gIHByaXZhdGUgY2FzZVZpZXdUcmlnZ2VyOiBDYXNlVmlld1RyaWdnZXI7XG4gIHB1YmxpYyBjYXNlRGV0YWlsczogQ2FzZVZpZXc7XG4gIHByaXZhdGUgcXVlcnlJZDogc3RyaW5nO1xuICBwcml2YXRlIHRpZDogc3RyaW5nO1xuICBwcml2YXRlIGNyZWF0ZUV2ZW50U3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgc2VhcmNoVGFza3NTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICBwdWJsaWMgcXVlcnlDcmVhdGVDb250ZXh0RW51bSA9IFF1ZXJ5Q3JlYXRlQ29udGV4dDtcbiAgcHVibGljIGV2ZW50Q29tcGxldGlvblBhcmFtczogRXZlbnRDb21wbGV0aW9uUGFyYW1zO1xuICBwdWJsaWMgY2FzZVF1ZXJpZXNDb2xsZWN0aW9uczogQ2FzZVF1ZXJpZXNDb2xsZWN0aW9uW107XG4gIHB1YmxpYyBmaWVsZElkOiBzdHJpbmc7XG4gIHB1YmxpYyBhdHRhY2htZW50czogRm9ybURvY3VtZW50W107XG5cbiAgcHVibGljIGVycm9yTWVzc2FnZXM6IEVycm9yTWVzc2FnZVtdID0gW107XG4gIHB1YmxpYyBmaWx0ZXJlZFRhc2tzOiBUYXNrW10gPSBbXTtcbiAgcHVibGljIHJlYWR5VG9TdWJtaXQ6IGJvb2xlYW47XG4gIHB1YmxpYyBpc1N1Ym1pdHRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2FzZXNTZXJ2aWNlOiBDYXNlc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjYXNlTm90aWZpZXI6IENhc2VOb3RpZmllcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IHdvcmtBbGxvY2F0aW9uU2VydmljZTogV29ya0FsbG9jYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlOiBTZXNzaW9uU3RvcmFnZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBxdWFsaWZ5aW5nUXVlc3Rpb25TZXJ2aWNlOiBRdWFsaWZ5aW5nUXVlc3Rpb25TZXJ2aWNlXG4gICkge31cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5xdWVyeUlkID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXMucWlkO1xuICAgIHRoaXMudGlkID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtcz8udGlkO1xuXG4gICAgdGhpcy5jYXNlTm90aWZpZXIuY2FzZVZpZXcucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKGNhc2VEZXRhaWxzKSA9PiB7XG4gICAgICB0aGlzLmNhc2VEZXRhaWxzID0gY2FzZURldGFpbHM7XG5cbiAgICAgIC8vIEZpbmQgdGhlIGFwcHJvcHJpYXRlIGV2ZW50IHRyaWdnZXIgYmFzZWQgb24gdGhlIHF1ZXJ5Q3JlYXRlQ29udGV4dFxuICAgICAgdGhpcy5jYXNlVmlld1RyaWdnZXIgPSB0aGlzLmNhc2VEZXRhaWxzLnRyaWdnZXJzLmZpbmQoKHRyaWdnZXIpID0+XG4gICAgICAgIHRoaXMucXVlcnlDcmVhdGVDb250ZXh0ICE9PSBRdWVyeUNyZWF0ZUNvbnRleHQuUkVTUE9ORFxuICAgICAgICAvLyBJZiB0aGUgY29udGV4dCBpcyBub3QgJ1JFU1BPTkQnLCBmaW5kIHRoZSB0cmlnZ2VyIHdpdGggdGhlIElEIGZvciByYWlzaW5nIGEgcXVlcnlcbiAgICAgICAgICA/IHRyaWdnZXIuaWQgPT09IHRoaXMuUkFJU0VfQV9RVUVSWV9FVkVOVF9UUklHR0VSX0lEXG4gICAgICAgIC8vIElmIHRoZSBjb250ZXh0IGlzICdSRVNQT05EJywgZmluZCB0aGUgdHJpZ2dlciB3aXRoIHRoZSBJRCBmb3IgcmVzcG9uZGluZyB0byBhIHF1ZXJ5XG4gICAgICAgICAgOiB0cmlnZ2VyLmlkID09PSB0aGlzLlJFU1BPTkRfVE9fUVVFUllfRVZFTlRfVFJJR0dFUl9JRFxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIC8vIEdldCB0aGUgZG9jdW1lbnQgYXR0YWNobWVudHNcbiAgICB0aGlzLmdldERvY3VtZW50QXR0YWNobWVudHMoKTtcblxuICAgIHRoaXMuc2V0Q2FzZVF1ZXJpZXNDb2xsZWN0aW9uRGF0YSgpO1xuXG4gICAgaWYgKHRoaXMucXVlcnlDcmVhdGVDb250ZXh0ID09PSBRdWVyeUNyZWF0ZUNvbnRleHQuUkVTUE9ORCkge1xuICAgICAgdGhpcy5zZWFyY2hUYXNrc1N1YnNjcmlwdGlvbiA9IHRoaXMud29ya0FsbG9jYXRpb25TZXJ2aWNlLmdldFRhc2tzQnlDYXNlSWRBbmRFdmVudElkKHRoaXMuUkVTUE9ORF9UT19RVUVSWV9FVkVOVF9UUklHR0VSX0lELFxuICAgICAgICB0aGlzLmNhc2VEZXRhaWxzLmNhc2VfaWQsIHRoaXMuY2FzZURldGFpbHMuY2FzZV90eXBlLmlkLCB0aGlzLmNhc2VEZXRhaWxzLmNhc2VfdHlwZS5qdXJpc2RpY3Rpb24uaWQpXG4gICAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICAgIG5leHQ6IChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgICAgLy8gRmlsdGVyIHRhc2sgYnkgcXVlcnkgaWRcbiAgICAgICAgICAgIGlmICh0aGlzLnRpZCkge1xuICAgICAgICAgICAgICBpZiAocmVzcG9uc2UudGFza3M/Lmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbHRlcmVkVGFza3MgPSByZXNwb25zZS50YXNrcz8uZmlsdGVyKCh0YXNrOiBUYXNrKSA9PiB0YXNrLmlkID09PSB0aGlzLnRpZCk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJlZFRhc2tzID0gcmVzcG9uc2UudGFza3M7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgdGhpcy5yZWFkeVRvU3VibWl0ID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGluIHNlYXJjaFRhc2tzU3Vic2NyaXB0aW9uOicsIGVycm9yKTtcbiAgICAgICAgICAgIHRoaXMucmVhZHlUb1N1Ym1pdCA9IGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmVhZHlUb1N1Ym1pdCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuY3JlYXRlRXZlbnRTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5zZWFyY2hUYXNrc1N1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnb0JhY2soKTogdm9pZCB7XG4gICAgdGhpcy5iYWNrQ2xpY2tlZC5lbWl0KHRydWUpO1xuICB9XG5cbiAgcHVibGljIHN1Ym1pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc1N1Ym1pdHRpbmcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBDaGVjayBpZiBmaWVsZElkIGlzIG51bGwgb3IgdW5kZWZpbmVkXG4gICAgaWYgKCF0aGlzLmZpZWxkSWQpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yOiBGaWVsZCBJRCBpcyBtaXNzaW5nLiBDYW5ub3QgcHJvY2VlZCB3aXRoIHN1Ym1pc3Npb24uJyk7XG4gICAgICB0aGlzLmVycm9yTWVzc2FnZXMgPSBbXG4gICAgICAgIHtcbiAgICAgICAgICB0aXRsZTogJ0Vycm9yJyxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogJ1RoaXMgY2FzZSBpcyBub3QgY29uZmlndXJlZCBmb3IgcXVlcnkgbWFuYWdlbWVudC4nLFxuICAgICAgICAgIGZpZWxkSWQ6ICdmaWVsZC1pZCdcbiAgICAgICAgfVxuICAgICAgXTtcbiAgICAgIHdpbmRvdy5zY3JvbGxUbyh7IGxlZnQ6IDAsIHRvcDogMCwgYmVoYXZpb3I6ICdzbW9vdGgnIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGRhdGEgPSB0aGlzLmdlbmVyYXRlQ2FzZVF1ZXJpZXNDb2xsZWN0aW9uRGF0YSgpO1xuICAgIGNvbnN0IGNyZWF0ZUV2ZW50JCA9IHRoaXMuY3JlYXRlRXZlbnQoZGF0YSk7XG5cbiAgICB0aGlzLmlzU3VibWl0dGluZyA9IHRydWU7XG5cbiAgICBpZiAodGhpcy5xdWVyeUNyZWF0ZUNvbnRleHQgPT09IFF1ZXJ5Q3JlYXRlQ29udGV4dC5SRVNQT05EKSB7XG4gICAgICBpZiAodGhpcy5maWx0ZXJlZFRhc2tzPy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMuY3JlYXRlRXZlbnRTdWJzY3JpcHRpb24gPSBjcmVhdGVFdmVudCQucGlwZShcbiAgICAgICAgICBzd2l0Y2hNYXAoKGNyZWF0ZUV2ZW50UmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvbmZpcm1hdGlvbkJvZHkgPSBjcmVhdGVFdmVudFJlc3BvbnNlPy5hZnRlcl9zdWJtaXRfY2FsbGJhY2tfcmVzcG9uc2U/LmNvbmZpcm1hdGlvbl9ib2R5O1xuICAgICAgICAgICAgY29uc3QgY29uZmlybWF0aW9uSGVhZGVyID0gY3JlYXRlRXZlbnRSZXNwb25zZT8uYWZ0ZXJfc3VibWl0X2NhbGxiYWNrX3Jlc3BvbnNlPy5jb25maXJtYXRpb25faGVhZGVyO1xuICAgICAgICAgICAgdGhpcy5jYWxsYmFja0NvbmZpcm1hdGlvbk1lc3NhZ2UuZW1pdCh7IGJvZHk6IGNvbmZpcm1hdGlvbkJvZHksIGhlYWRlcjogY29uZmlybWF0aW9uSGVhZGVyIH0pO1xuXG4gICAgICAgICAgICByZXR1cm4gdGhpcy53b3JrQWxsb2NhdGlvblNlcnZpY2UuY29tcGxldGVUYXNrKFxuICAgICAgICAgICAgICB0aGlzLmZpbHRlcmVkVGFza3NbMF0uaWQsXG4gICAgICAgICAgICAgIHRoaXMuY2FzZVZpZXdUcmlnZ2VyLm5hbWVcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSlcbiAgICAgICAgKS5zdWJzY3JpYmUoe1xuICAgICAgICAgIG5leHQ6ICgpID0+IHRoaXMuZmluYWxpc2VTdWJtaXNzaW9uKCksXG4gICAgICAgICAgZXJyb3I6IChlcnJvcikgPT4gdGhpcy5oYW5kbGVFcnJvcihlcnJvcilcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvcjogTm8gdGFzayB0byBjb21wbGV0ZSB3YXMgZm91bmQnKTtcbiAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2VzID0gW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHRpdGxlOiAnRXJyb3InLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246ICdObyB0YXNrIHRvIGNvbXBsZXRlIHdhcyBmb3VuZCcsXG4gICAgICAgICAgICBmaWVsZElkOiAnZmllbGQtaWQnXG4gICAgICAgICAgfVxuICAgICAgICBdO1xuICAgICAgICB0aGlzLmlzU3VibWl0dGluZyA9IGZhbHNlO1xuICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oeyBsZWZ0OiAwLCB0b3A6IDAsIGJlaGF2aW9yOiAnc21vb3RoJyB9KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNyZWF0ZUV2ZW50U3Vic2NyaXB0aW9uID0gY3JlYXRlRXZlbnQkLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IChjYWxsYmFja1Jlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgdGhpcy5maW5hbGlzZVN1Ym1pc3Npb24oKTtcbiAgICAgICAgICBjb25zdCBjb25maXJtYXRpb25Cb2R5ID0gY2FsbGJhY2tSZXNwb25zZT8uYWZ0ZXJfc3VibWl0X2NhbGxiYWNrX3Jlc3BvbnNlPy5jb25maXJtYXRpb25fYm9keTtcbiAgICAgICAgICBjb25zdCBjb25maXJtYXRpb25IZWFkZXIgPSBjYWxsYmFja1Jlc3BvbnNlPy5hZnRlcl9zdWJtaXRfY2FsbGJhY2tfcmVzcG9uc2U/LmNvbmZpcm1hdGlvbl9oZWFkZXI7XG4gICAgICAgICAgdGhpcy5jYWxsYmFja0NvbmZpcm1hdGlvbk1lc3NhZ2UuZW1pdCh7IGJvZHk6IGNvbmZpcm1hdGlvbkJvZHksIGhlYWRlcjogY29uZmlybWF0aW9uSGVhZGVyIH0pO1xuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB0aGlzLmhhbmRsZUVycm9yKGVycm9yKVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVFdmVudChkYXRhOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmNhc2VzU2VydmljZS5jcmVhdGVFdmVudCh0aGlzLmNhc2VEZXRhaWxzLCB7XG4gICAgICBkYXRhLFxuICAgICAgZXZlbnQ6IHtcbiAgICAgICAgaWQ6IHRoaXMuY2FzZVZpZXdUcmlnZ2VyPy5pZCxcbiAgICAgICAgc3VtbWFyeTogJycsXG4gICAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLmNhc2VWaWV3VHJpZ2dlcj8uZGVzY3JpcHRpb25cbiAgICAgIH0sXG4gICAgICBldmVudF90b2tlbjogdGhpcy5ldmVudERhdGE/LmV2ZW50X3Rva2VuLFxuICAgICAgaWdub3JlX3dhcm5pbmc6IGZhbHNlXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGZpbmFsaXNlU3VibWlzc2lvbigpOiB2b2lkIHtcbiAgICB0aGlzLnF1ZXJ5U3VibWl0dGVkLmVtaXQodHJ1ZSk7XG4gICAgdGhpcy5xdWFsaWZ5aW5nUXVlc3Rpb25TZXJ2aWNlLmNsZWFyUXVhbGlmeWluZ1F1ZXN0aW9uU2VsZWN0aW9uKCk7XG4gICAgdGhpcy5pc1N1Ym1pdHRpbmcgPSBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlRXJyb3IoZXJyb3I6IGFueSk6IHZvaWQge1xuICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGluIEFQSSBjYWxsczonLCBlcnJvcik7XG5cbiAgICB0aGlzLmlzU3VibWl0dGluZyA9IGZhbHNlO1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnLycsICdzZXJ2aWNlLWRvd24nXSk7XG4gIH1cblxuICBwcml2YXRlIGdlbmVyYXRlQ2FzZVF1ZXJpZXNDb2xsZWN0aW9uRGF0YSgpOiBRbUNhc2VRdWVyaWVzQ29sbGVjdGlvbiB7XG4gICAgY29uc3QgY3VycmVudFVzZXJEZXRhaWxzID0gSlNPTi5wYXJzZSh0aGlzLnNlc3Npb25TdG9yYWdlU2VydmljZS5nZXRJdGVtKFVTRVJfREVUQUlMUykpO1xuXG4gICAgY29uc3QgY2FzZU1lc3NhZ2UgPSB0aGlzLnF1ZXJ5Q3JlYXRlQ29udGV4dCA9PT0gUXVlcnlDcmVhdGVDb250ZXh0Lk5FV19RVUVSWVxuICAgICAgPyBRdWVyeU1hbmFnZW1lbnRVdGlscy5nZXROZXdRdWVyeURhdGEodGhpcy5mb3JtR3JvdXAsIGN1cnJlbnRVc2VyRGV0YWlscylcbiAgICAgIDogUXVlcnlNYW5hZ2VtZW50VXRpbHMuZ2V0UmVzcG9uZE9yRm9sbG93dXBRdWVyeURhdGEodGhpcy5mb3JtR3JvdXAsIHRoaXMucXVlcnlJdGVtLCBjdXJyZW50VXNlckRldGFpbHMsIHRoaXMucXVlcnlDcmVhdGVDb250ZXh0KTtcblxuICAgIGNvbnN0IG1lc3NhZ2VJZCA9IHRoaXMucm91dGUuc25hcHNob3QucGFyYW1zLmRhdGFpZDsgLy8gR2V0IHRoZSBtZXNzYWdlIElEIGZyb20gcm91dGUgcGFyYW1zIChpZiBwcmVzZW50KVxuICAgIGNvbnN0IGlzTmV3UXVlcnkgPSB0aGlzLnF1ZXJ5Q3JlYXRlQ29udGV4dCA9PT0gUXVlcnlDcmVhdGVDb250ZXh0Lk5FV19RVUVSWTsgLy8gQ2hlY2sgaWYgdGhpcyBpcyBhIG5ldyBxdWVyeVxuXG4gICAgLy8gQ2hlY2sgaWYgdGhlIGZpZWxkIElEIGhhcyBiZWVuIHNldCBkeW5hbWljYWxseVxuICAgIGlmICghdGhpcy5maWVsZElkKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvcjogRmllbGQgSUQgZm9yIENhc2VRdWVyaWVzQ29sbGVjdGlvbiBub3QgZm91bmQuIENhbm5vdCBwcm9jZWVkIHdpdGggZGF0YSBnZW5lcmF0aW9uLicpO1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvJywgJ3NlcnZpY2UtZG93biddKTtcbiAgICB9XG5cbiAgICAvLyBJbml0aWFsaXplIG5ldyBxdWVyeSBkYXRhIHN0cnVjdHVyZVxuICAgIGNvbnN0IG5ld1F1ZXJ5RGF0YTogUW1DYXNlUXVlcmllc0NvbGxlY3Rpb24gPSB7fTtcblxuICAgIGlmICh0aGlzLmNhc2VRdWVyaWVzQ29sbGVjdGlvbnM/Lmxlbmd0aCkge1xuICAgICAgbGV0IG1hdGNoZWRDb2xsZWN0aW9uO1xuXG4gICAgICAvLyBJZiBpdCdzIG5vdCBhIG5ldyBxdWVyeSwgdHJ5IHRvIGZpbmQgdGhlIGV4aXN0aW5nIGNvbGxlY3Rpb24gd2l0aCB0aGUgbWVzc2FnZSBJRFxuICAgICAgaWYgKCFpc05ld1F1ZXJ5ICYmIG1lc3NhZ2VJZCkge1xuICAgICAgICBtYXRjaGVkQ29sbGVjdGlvbiA9IHRoaXMuY2FzZVF1ZXJpZXNDb2xsZWN0aW9ucy5maW5kKChjb2xsZWN0aW9uKSA9PlxuICAgICAgICAgIGNvbGxlY3Rpb24uY2FzZU1lc3NhZ2VzLnNvbWUoKG1lc3NhZ2UpID0+IG1lc3NhZ2UudmFsdWUuaWQgPT09IG1lc3NhZ2VJZClcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG1hdGNoZWRDb2xsZWN0aW9uKSB7XG4gICAgICAgIC8vIEFwcGVuZCB0aGUgbmV3IGNhc2UgbWVzc2FnZSB0byB0aGUgbWF0Y2hlZCBjb2xsZWN0aW9uJ3MgY2FzZU1lc3NhZ2VzXG4gICAgICAgIG1hdGNoZWRDb2xsZWN0aW9uLmNhc2VNZXNzYWdlcy5wdXNoKHtcbiAgICAgICAgICBpZDogbnVsbCxcbiAgICAgICAgICB2YWx1ZTogY2FzZU1lc3NhZ2VcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gQWRkIHRoZSBtYXRjaGVkIGNvbGxlY3Rpb24gdG8gbmV3UXVlcnlEYXRhXG4gICAgICAgIG5ld1F1ZXJ5RGF0YVt0aGlzLmZpZWxkSWRdID0ge1xuICAgICAgICAgIC4uLm1hdGNoZWRDb2xsZWN0aW9uLCAvLyBLZWVwIGV4aXN0aW5nIGRhdGEgaW50YWN0XG4gICAgICAgICAgY2FzZU1lc3NhZ2VzOiBbLi4ubWF0Y2hlZENvbGxlY3Rpb24uY2FzZU1lc3NhZ2VzXSAvLyBBcHBlbmQgdGhlIHVwZGF0ZWQgbWVzc2FnZXMgYXJyYXlcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFVzZSBwYXJ0eU5hbWUgZnJvbSB0aGUgZmlyc3QgY29sbGVjdGlvbiAoYXNzdW1wdGlvbjogYWxsIHNoYXJlIHRoZSBzYW1lIHBhcnR5KVxuICAgICAgICBjb25zdCBvcmlnaW5hbFBhcnR5TmFtZSA9IHRoaXMuY2FzZVF1ZXJpZXNDb2xsZWN0aW9uc1swXS5wYXJ0eU5hbWU7XG5cbiAgICAgICAgLy8gSWYgbm8gY29sbGVjdGlvbiBtYXRjaGVzLCBvciBpdCdzIGEgbmV3IHF1ZXJ5XG4gICAgICAgIG5ld1F1ZXJ5RGF0YVt0aGlzLmZpZWxkSWRdID0ge1xuICAgICAgICAgIHBhcnR5TmFtZTogb3JpZ2luYWxQYXJ0eU5hbWUsXG4gICAgICAgICAgcm9sZU9uQ2FzZTogJycsIC8vIE5vdCByZXR1cm5lZCBieSBDQ0RcbiAgICAgICAgICBjYXNlTWVzc2FnZXM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgaWQ6IG51bGwsXG4gICAgICAgICAgICAgIHZhbHVlOiBjYXNlTWVzc2FnZVxuICAgICAgICAgICAgfVxuICAgICAgICAgIF1cbiAgICAgICAgfTtcblxuICAgICAgICAvLyBJZiBjYXNlUXVlcmllc0NvbGxlY3Rpb25zIGlzIG5vdCBlbXB0eSwgYXBwZW5kIGl0cyBkYXRhXG4gICAgICAgIG5ld1F1ZXJ5RGF0YVt0aGlzLmZpZWxkSWRdLmNhc2VNZXNzYWdlcy5wdXNoKFxuICAgICAgICAgIC4uLnRoaXMuY2FzZVF1ZXJpZXNDb2xsZWN0aW9ucy5mbGF0TWFwKChjb2xsZWN0aW9uKSA9PiBjb2xsZWN0aW9uLmNhc2VNZXNzYWdlcylcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gSWYgdGhlcmUgYXJlIG5vIGV4aXN0aW5nIGNvbGxlY3Rpb25zLCBjcmVhdGUgYSBuZXcgb25lIChlLmcuLCBmb3IgbmV3IHF1ZXJpZXMpXG4gICAgICBuZXdRdWVyeURhdGFbdGhpcy5maWVsZElkXSA9IHtcbiAgICAgICAgcGFydHlOYW1lOiBjdXJyZW50VXNlckRldGFpbHM/Lm5hbWUgfHwgYCR7Y3VycmVudFVzZXJEZXRhaWxzPy5mb3JlbmFtZX0gJHtjdXJyZW50VXNlckRldGFpbHM/LnN1cm5hbWV9YCwgLy8gTm90IHJldHVybmVkIGJ5IENDRFxuICAgICAgICByb2xlT25DYXNlOiAnJywgLy8gTm90IHJldHVybmVkIGJ5IENDRFxuICAgICAgICBjYXNlTWVzc2FnZXM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpZDogbnVsbCxcbiAgICAgICAgICAgIHZhbHVlOiBjYXNlTWVzc2FnZVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIG5ld1F1ZXJ5RGF0YTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRDYXNlUXVlcmllc0NvbGxlY3Rpb25EYXRhKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmV2ZW50RGF0YT8uY2FzZV9maWVsZHM/Lmxlbmd0aCkge1xuICAgICAgLy8gV29ya2Fyb3VuZCBmb3IgbXVsdGlwbGUgcW1DYXNlUXVlcmllc0NvbGxlY3Rpb25zIHRoYXQgYXJlIG5vdCB0byBiZSBhcHBlYXJpbmcgaW4gdGhlIGV2ZW50RGF0YVxuICAgICAgLy8gQ291bnRzIG51bWJlciBxbUNhc2VRdWVyaWVzQ29sbGVjdGlvbnNcbiAgICAgIGNvbnN0IG51bWJlck9mQ2FzZVF1ZXJpZXNDb2xsZWN0aW9ucyA9IHRoaXMuZXZlbnREYXRhPy5jYXNlX2ZpZWxkcz8uZmlsdGVyKFxuICAgICAgICAoY2FzZUZpZWxkKSA9PlxuICAgICAgICAgIGNhc2VGaWVsZC5maWVsZF90eXBlLmlkID09PSB0aGlzLkNBU0VfUVVFUklFU19DT0xMRUNUSU9OX0lEICYmXG4gICAgICAgICAgY2FzZUZpZWxkLmZpZWxkX3R5cGUudHlwZSA9PT0gdGhpcy5GSUVMRF9UWVBFX0NPTVBMRVggJiYgY2FzZUZpZWxkLmRpc3BsYXlfY29udGV4dCAhPT0gdGhpcy5ESVNQTEFZX0NPTlRFWFRfUkVBRE9OTFlcbiAgICAgICk/Lmxlbmd0aCB8fCAwO1xuXG4gICAgICB0aGlzLmNhc2VRdWVyaWVzQ29sbGVjdGlvbnMgPSB0aGlzLmV2ZW50RGF0YS5jYXNlX2ZpZWxkcy5yZWR1Y2UoKGFjYywgY2FzZUZpZWxkKSA9PiB7XG4gICAgICAgIC8vIEV4dHJhY3QgdGhlIElEIGJhc2VkIG9uIGNvbmRpdGlvbnMsIHVwZGF0aW5nIHRoaXMuZmllbGRJZCBkeW5hbWljYWxseVxuICAgICAgICB0aGlzLmV4dHJhY3RDYXNlUXVlcnlJZChjYXNlRmllbGQsIG51bWJlck9mQ2FzZVF1ZXJpZXNDb2xsZWN0aW9ucyk7XG5cbiAgICAgICAgY29uc3QgZXh0cmFjdGVkQ2FzZVF1ZXJpZXNGcm9tQ2FzZUZpZWxkID0gUXVlcnlNYW5hZ2VtZW50VXRpbHMuZXh0cmFjdENhc2VRdWVyaWVzRnJvbUNhc2VGaWVsZChjYXNlRmllbGQpO1xuICAgICAgICBpZiAoZXh0cmFjdGVkQ2FzZVF1ZXJpZXNGcm9tQ2FzZUZpZWxkICYmIHR5cGVvZiBleHRyYWN0ZWRDYXNlUXVlcmllc0Zyb21DYXNlRmllbGQgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgYWNjLnB1c2goZXh0cmFjdGVkQ2FzZVF1ZXJpZXNGcm9tQ2FzZUZpZWxkKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgfSwgW10pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZXh0cmFjdENhc2VRdWVyeUlkKGRhdGE6IENhc2VGaWVsZCwgY291bnQ6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IHsgaWQsIHZhbHVlIH0gPSBkYXRhO1xuICAgIGNvbnN0IG1lc3NhZ2VJZCA9IHRoaXMucm91dGUuc25hcHNob3QucGFyYW1zLmRhdGFpZDtcblxuICAgIC8vIENoZWNrIGlmIHRoZSBmaWVsZF90eXBlIG1hdGNoZXMgQ2FzZVF1ZXJpZXNDb2xsZWN0aW9uIGFuZCB0eXBlIGlzIENvbXBsZXhcbiAgICBpZiAoZGF0YS5maWVsZF90eXBlLmlkID09PSB0aGlzLkNBU0VfUVVFUklFU19DT0xMRUNUSU9OX0lEICYmIGRhdGEuZmllbGRfdHlwZS50eXBlID09PSB0aGlzLkZJRUxEX1RZUEVfQ09NUExFWCkge1xuICAgICAgaWYgKHRoaXMuaXNOZXdRdWVyeUNvbnRleHQoZGF0YSkpIHtcbiAgICAgICAgLy8gSWYgdGhlcmUgaXMgbW9yZSB0aGFuIG9uZSBxbUNhc2VRdWVyaWVzQ29sbGVjdGlvbiwgcGljayB0aGUgb25lIHdpdGggdGhlIGxvd2VzdCBvcmRlclxuICAgICAgICBpZiAoY291bnQgPiAxKSB7XG4gICAgICAgICAgaWYgKCF0aGlzLmhhbmRsZU11bHRpcGxlQ29sbGVjdGlvbnMoKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBTZXQgdGhlIGZpZWxkIElEIGR5bmFtaWNhbGx5IGJhc2VkIG9uIHRoZSBleHRyYWN0ZWQgZGF0YVxuICAgICAgICAgIHRoaXMuZmllbGRJZCA9IGlkOyAvLyBTdG9yZSB0aGUgSUQgZm9yIHVzZSBpbiBnZW5lcmF0aW5nIG5ld1F1ZXJ5RGF0YVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIElmIG1lc3NhZ2VJZCBpcyBwcmVzZW50LCBmaW5kIHRoZSBjb3JyZXNwb25kaW5nIGNhc2UgbWVzc2FnZVxuICAgICAgdGhpcy5zZXRNZXNzYWdlRmllbGRJZChtZXNzYWdlSWQsIHZhbHVlLCBpZCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRNZXNzYWdlRmllbGRJZChtZXNzYWdlSWQsIHZhbHVlLCBpZDogc3RyaW5nKSB7XG4gICAgaWYgKG1lc3NhZ2VJZCAmJiB2YWx1ZT8uY2FzZU1lc3NhZ2VzKSB7XG4gICAgICAvLyBJZiBhIG1hdGNoaW5nIG1lc3NhZ2UgaXMgZm91bmQsIHNldCB0aGUgZmllbGRJZCB0byB0aGUgY29ycmVzcG9uZGluZyBpZFxuICAgICAgY29uc3QgbWF0Y2hlZE1lc3NhZ2UgPSB2YWx1ZT8uY2FzZU1lc3NhZ2VzPy5maW5kKChtZXNzYWdlKSA9PiBtZXNzYWdlLnZhbHVlLmlkID09PSBtZXNzYWdlSWQpO1xuICAgICAgaWYgKG1hdGNoZWRNZXNzYWdlKSB7XG4gICAgICAgIHRoaXMuZmllbGRJZCA9IGlkO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaXNOZXdRdWVyeUNvbnRleHQoZGF0YTogQ2FzZUZpZWxkKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMucXVlcnlDcmVhdGVDb250ZXh0ID09PSBRdWVyeUNyZWF0ZUNvbnRleHQuTkVXX1FVRVJZICYmIGRhdGEuZGlzcGxheV9jb250ZXh0ICE9PSB0aGlzLkRJU1BMQVlfQ09OVEVYVF9SRUFET05MWTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlTXVsdGlwbGVDb2xsZWN0aW9ucygpOiBib29sZWFuIHtcbiAgICBjb25zdCBqdXJpc2RpY3Rpb25JZCA9IHRoaXMuY2FzZURldGFpbHM/LmNhc2VfdHlwZT8uanVyaXNkaWN0aW9uPy5pZDtcblxuICAgIGlmICghanVyaXNkaWN0aW9uSWQpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0p1cmlzZGljdGlvbiBJRCBpcyBtaXNzaW5nLicpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmdldENvbGxlY3Rpb25TZWxlY3Rpb25NZXRob2QoanVyaXNkaWN0aW9uSWQpID09PSB0aGlzLlFNX1NFTEVDVF9GSVJTVF9DT0xMRUNUSU9OKSB7XG4gICAgICAvLyBQaWNrIHRoZSBjb2xsZWN0aW9uIHdpdGggdGhlIGxvd2VzdCBvcmRlclxuICAgICAgdGhpcy5maWVsZElkID0gdGhpcy5nZXRDYXNlUXVlcmllc0NvbGxlY3Rpb25GaWVsZE9yZGVyRnJvbVdpemFyZFBhZ2VzKCk/LmlkO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBEaXNwbGF5IEVycm9yLCBmb3Igbm93LCB1bnRpbCBFWFVJLTI2NDQgaXMgaW1wbGVtZW50ZWRcbiAgICAgIGNvbnNvbGUuZXJyb3IoYEVycm9yOiBNdWx0aXBsZSBDYXNlUXVlcmllc0NvbGxlY3Rpb25zIGFyZSBub3Qgc3VwcG9ydGVkIHlldCBmb3IgdGhlICR7anVyaXNkaWN0aW9uSWR9IGp1cmlzZGljdGlvbmApO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDYXNlUXVlcmllc0NvbGxlY3Rpb25GaWVsZE9yZGVyRnJvbVdpemFyZFBhZ2VzKCk6IENhc2VGaWVsZCB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgY2FuZGlkYXRlRmllbGRzID0gdGhpcy5ldmVudERhdGE/LmNhc2VfZmllbGRzPy5maWx0ZXIoXG4gICAgICAoZmllbGQpID0+XG4gICAgICAgIGZpZWxkLmZpZWxkX3R5cGUuaWQgPT09IHRoaXMuQ0FTRV9RVUVSSUVTX0NPTExFQ1RJT05fSUQgJiZcbiAgICAgICAgZmllbGQuZmllbGRfdHlwZS50eXBlID09PSB0aGlzLkZJRUxEX1RZUEVfQ09NUExFWCAmJlxuICAgICAgICBmaWVsZC5kaXNwbGF5X2NvbnRleHQgIT09IHRoaXMuRElTUExBWV9DT05URVhUX1JFQURPTkxZXG4gICAgKTtcblxuICAgIGlmICghY2FuZGlkYXRlRmllbGRzPy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgY29uc3QgZmlyc3RQYWdlRmllbGRzID0gdGhpcy5ldmVudERhdGE/LndpemFyZF9wYWdlcz8uWzBdPy53aXphcmRfcGFnZV9maWVsZHM7XG5cbiAgICBpZiAoIWZpcnN0UGFnZUZpZWxkcykge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICByZXR1cm4gY2FuZGlkYXRlRmllbGRzXG4gICAgICAubWFwKChmaWVsZCkgPT4ge1xuICAgICAgICBjb25zdCB3aXphcmRGaWVsZCA9IGZpcnN0UGFnZUZpZWxkcy5maW5kKChmKSA9PiBmLmNhc2VfZmllbGRfaWQgPT09IGZpZWxkLmlkKTtcbiAgICAgICAgcmV0dXJuIHsgZmllbGQsIG9yZGVyOiB3aXphcmRGaWVsZD8ub3JkZXIgPz8gTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIgfTtcbiAgICAgIH0pXG4gICAgICAuc29ydCgoYSwgYikgPT4gYS5vcmRlciAtIGIub3JkZXIpWzBdPy5maWVsZDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q29sbGVjdGlvblNlbGVjdGlvbk1ldGhvZChqdXJpc2RpY3Rpb246IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGp1cmlzZGljdGlvbi50b1VwcGVyQ2FzZSgpID09PSB0aGlzLkNJVklMX0pVUklTRElDVElPTiA/IHRoaXMuUU1fU0VMRUNUX0ZJUlNUX0NPTExFQ1RJT04gOiB0aGlzLlFNX0NPTExFQ1RJT05fUFJPTVBUO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXREb2N1bWVudEF0dGFjaG1lbnRzKCk6IHZvaWQge1xuICAgIGNvbnN0IGF0dGFjaG1lbnRzVmFsdWUgPSB0aGlzLmZvcm1Hcm91cC5nZXQoJ2F0dGFjaG1lbnRzJykudmFsdWU7XG4gICAgaWYgKGF0dGFjaG1lbnRzVmFsdWUgJiYgYXR0YWNobWVudHNWYWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBkb2N1bWVudHMgPSBhdHRhY2htZW50c1ZhbHVlO1xuICAgICAgdGhpcy5hdHRhY2htZW50cyA9IGRvY3VtZW50cy5tYXAoUXVlcnlNYW5hZ2VtZW50VXRpbHMuZG9jdW1lbnRUb0NvbGxlY3Rpb25Gb3JtRG9jdW1lbnQpO1xuICAgIH1cbiAgfVxufVxuXG4iLCI8ZGl2IGNsYXNzPVwiZ292dWstZ3JpZC1yb3dcIiAqbmdJZj1cInJlYWR5VG9TdWJtaXRcIj5cbiAgPGRpdiBjbGFzcz1cImdvdnVrLWdyaWQtY29sdW1uLXR3by10aGlyZHMtZnJvbS1kZXNrdG9wXCI+XG4gICAgPCEtLSBFcnJvciBtZXNzYWdlIHN1bW1hcnkgLS0+XG4gICAgPGRpdiAqbmdJZj1cImVycm9yTWVzc2FnZXMubGVuZ3RoID4gMFwiIGNsYXNzPVwiZ292dWstZXJyb3Itc3VtbWFyeVwiXG4gICAgICBhcmlhLWxhYmVsbGVkYnk9XCJlcnJvci1zdW1tYXJ5LXRpdGxlXCIgcm9sZT1cImFsZXJ0XCIgdGFiaW5kZXg9XCItMVwiXG4gICAgICBkYXRhLW1vZHVsZT1cImdvdnVrLWVycm9yLXN1bW1hcnlcIj5cbiAgICAgPGgyIGNsYXNzPVwiZ292dWstZXJyb3Itc3VtbWFyeV9fdGl0bGVcIiBpZD1cImVycm9yLXN1bW1hcnktdGl0bGVcIj5cbiAgICAgICB7eyAnVGhlcmUgaXMgYSBwcm9ibGVtJyB8IHJweFRyYW5zbGF0ZSB9fVxuICAgICA8L2gyPlxuICAgICA8ZGl2IGNsYXNzPVwiZ292dWstZXJyb3Itc3VtbWFyeV9fYm9keVwiPlxuICAgICAgIDx1bCBjbGFzcz1cImdvdnVrLWxpc3QgZ292dWstZXJyb3Itc3VtbWFyeV9fbGlzdFwiPlxuICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBlcnJvck1lc3NhZ2Ugb2YgZXJyb3JNZXNzYWdlc1wiPlxuICAgICAgICAgICA8YSBbaWRdPVwiJ2Vycm9yLScgKyBlcnJvck1lc3NhZ2UuZmllbGRJZFwiIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIlxuICAgICAgICAgICAgIGNsYXNzPVwidmFsaWRhdGlvbi1lcnJvclwiPnt7IGVycm9yTWVzc2FnZS5kZXNjcmlwdGlvbiB8IHJweFRyYW5zbGF0ZSB9fTwvYT5cbiAgICAgICAgIDwvbGk+XG4gICAgICAgPC91bD5cbiAgICAgPC9kaXY+XG4gICA8L2Rpdj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJxdWVyeUNyZWF0ZUNvbnRleHQgPT09IHF1ZXJ5Q3JlYXRlQ29udGV4dEVudW0uTkVXX1FVRVJZXCI+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+XG4gICAgPC9kbD5cblxuICAgIDxicj5cblxuICAgIDxkaXY+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwiZ292dWstYnV0dG9uIGdvdnVrLWJ1dHRvbi0tc2Vjb25kYXJ5IGdvdnVrLSEtbWFyZ2luLXJpZ2h0LTNcIiBkYXRhLW1vZHVsZT1cImdvdnVrLWJ1dHRvblwiXG4gICAgICAgIChjbGljayk9XCJnb0JhY2soKVwiPlxuICAgICAgICB7eyAnUHJldmlvdXMnIHwgcnB4VHJhbnNsYXRlIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJnb3Z1ay1idXR0b25cIiBkYXRhLW1vZHVsZT1cImdvdnVrLWJ1dHRvblwiIHR5cGU9XCJzdWJtaXRcIiAoY2xpY2spPVwic3VibWl0KClcIj5cbiAgICAgICAge3sgJ1N1Ym1pdCcgfCBycHhUcmFuc2xhdGUgfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8Y2NkLXF1ZXJ5LWV2ZW50LWNvbXBsZXRpb24gW2V2ZW50Q29tcGxldGlvblBhcmFtc109XCJldmVudENvbXBsZXRpb25QYXJhbXNcIj4gICAgXG4gIDwvY2NkLXF1ZXJ5LWV2ZW50LWNvbXBsZXRpb24+XG48L2Rpdj5cbiJdfQ==
|
|
687
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktY2hlY2steW91ci1hbnN3ZXJzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9wYWxldHRlL3F1ZXJ5LW1hbmFnZW1lbnQvY29tcG9uZW50cy9xdWVyeS1jaGVjay15b3VyLWFuc3dlcnMvcXVlcnktY2hlY2steW91ci1hbnN3ZXJzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9wYWxldHRlL3F1ZXJ5LW1hbmFnZW1lbnQvY29tcG9uZW50cy9xdWVyeS1jaGVjay15b3VyLWFuc3dlcnMvcXVlcnktY2hlY2steW91ci1hbnN3ZXJzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBYyxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQ3pELE9BQU8sRUFBVSxTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekQsT0FBTyxFQUNMLGdCQUFnQixFQUtqQixNQUFNLHdDQUF3QyxDQUFDO0FBQ2hELE9BQU8sRUFBd0IscUJBQXFCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUV0RixPQUFPLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3JHLE9BQU8sRUFBa0Qsa0JBQWtCLEVBQUUsYUFBYSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ2pILE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRTFFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBRXZGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7OztJQ1J6QyxBQURGLDBCQUErQyxZQUVsQjtJQUFBLFlBQTZDOztJQUMxRSxBQUQwRSxpQkFBSSxFQUN6RTs7O0lBRkEsY0FBc0M7SUFBdEMsdURBQXNDO0lBQ2QsY0FBNkM7SUFBN0MsdUVBQTZDOzs7SUFQOUUsQUFIRCwrQkFFb0MsYUFDNkI7SUFDOUQsWUFDRjs7SUFBQSxpQkFBSztJQUVILEFBREYsK0JBQXVDLGFBQ1k7SUFDL0MsMEZBQStDO0lBTXJELEFBREUsQUFERSxpQkFBSyxFQUNELEVBQ0Y7OztJQVZGLGVBQ0Y7SUFERSwyRUFDRjtJQUdpQyxlQUFnQjtJQUFoQiw4Q0FBZ0I7OztJQWNoRCw4QkFBdUY7SUFBQSxZQUFzQjtJQUFBLGlCQUFLOzs7SUFBM0IsY0FBc0I7SUFBdEIsMkNBQXNCOzs7SUFEL0csOEJBQW1FO0lBQ2pFLCtGQUF1RjtJQUN6RixpQkFBSzs7O0lBRHdCLGNBQTZCO0lBQTdCLDJEQUE2Qjs7O0lBTDFELEFBREQsK0JBQWdLLGFBQ2pGO0lBQzVFLGdEQUNGO0lBQUEsaUJBQUs7SUFDTCx5QkFBRztJQUFBLFlBQWlCO0lBQUEsaUJBQUk7SUFDeEIsMEZBQW1FO0lBR3JFLGlCQUFNOzs7SUFKRCxlQUFpQjtJQUFqQiwwQ0FBaUI7SUFDZixjQUFpQztJQUFqQyw4RkFBaUM7OztJQU90Qyw2QkFBOEU7SUFDNUUsK0JBQTZCO0lBQUEsWUFBb0M7O0lBQUEsaUJBQU07OztJQUExQyxlQUFvQztJQUFwQywyREFBb0M7OztJQUlqRSw2QkFBK0c7SUFDN0csWUFDRjs7OztJQURFLGNBQ0Y7SUFERSxzRkFDRjs7O0lBR0UsWUFDRjs7O0lBREUsNkVBQ0Y7Ozs7SUFlSSw2QkFDa0U7SUFBbkIsZ01BQVMsZUFBUSxLQUFDO0lBQy9ELFlBQ0Y7O0lBQUEsaUJBQUk7O0lBREYsY0FDRjtJQURFLCtEQUNGOzs7SUFWRixBQURGLEFBREYsOEJBQXNILGNBQy9FLGFBQ0M7SUFDbEMsWUFDRjs7SUFBQSxpQkFBSztJQUNMLDhCQUFzQztJQUNwQyxZQUNGO0lBQUEsaUJBQUs7SUFDTCw4QkFBd0M7SUFDdEMsd0ZBQ2tFO0lBS3hFLEFBREUsQUFERSxpQkFBSyxFQUNELEVBQ0g7Ozs7SUFaQyxlQUNGO0lBREUsZ0tBQ0Y7SUFFRSxlQUNGO0lBREUsNE1BQ0Y7SUFFTyxlQUE2RDtJQUE3RCw0RkFBNkQ7OztJQThCbEUsNkJBQW9HO0lBQ2xHLFlBQ0Y7Ozs7SUFERSxjQUNGO0lBREUsbUdBQ0Y7OztJQUVFLFlBQ0Y7OztJQURFLGtHQUNGOzs7O0lBVUYsQUFERiwrQkFBc0YsYUFDaEQ7SUFDbEMsWUFHRjs7SUFBQSxpQkFBSztJQUNMLDhCQUFzQztJQUNwQyxZQUNGOztJQUFBLGlCQUFLO0lBRUgsQUFERiw4QkFBd0MsWUFDNkI7SUFBbkIsbU1BQVMsZUFBUSxLQUFDO0lBQ2hFLFlBQ0Y7O0lBRUosQUFERSxBQURFLGlCQUFJLEVBQ0QsRUFDRDs7OztJQVpGLGVBR0Y7SUFIRSwrTkFHRjtJQUVFLGVBQ0Y7SUFERSxvSkFDRjtJQUdJLGVBQ0Y7SUFERSxnRUFDRjs7OztJQTlCRixBQURGLEFBREYsOEJBQXVILGNBQ2hGLGFBQ0M7SUFDbEMsWUFDRjs7SUFBQSxpQkFBSztJQUNMLDhCQUFzQztJQUlwQyxBQUhBLDhHQUFvRywrSEFHaEU7SUFHdEMsaUJBQUs7SUFFSCxBQURGLDhCQUF3QyxhQUM2QjtJQUFuQiw2TEFBUyxlQUFRLEtBQUM7SUFDaEUsYUFDRjs7SUFFSixBQURFLEFBREUsaUJBQUksRUFDRCxFQUNEO0lBRU4sZ0dBQXNGO0lBZXhGLGlCQUFLOzs7Ozs7SUFoQ0MsZUFDRjtJQURFLHNGQUNGO0lBRWlCLGVBQXlEO0lBQUEsQUFBekQscUhBQXlELHNDQUEwQjtJQVNoRyxlQUNGO0lBREUsZ0VBQ0Y7SUFJRSxlQUE4QztJQUE5QywwR0FBOEM7OztJQXNCaEQsaURBSTZCOzs7SUFGM0IsZ0RBQTJCOzs7O0lBTi9CLEFBREYsQUFERiw4QkFBa0gsY0FDM0UsYUFDQztJQUNsQyxZQUNGOztJQUFBLGlCQUFLO0lBQ0wsOEJBQWtGO0lBQ2hGLDBJQUdDO0lBRUgsaUJBQUs7SUFFSCxBQURGLDhCQUF3QyxZQUM2QjtJQUFuQiw0TEFBUyxlQUFRLEtBQUM7SUFDaEUsWUFDRjs7SUFHTixBQURFLEFBREUsQUFERSxpQkFBSSxFQUNELEVBQ0QsRUFDSDs7O0lBZkMsZUFDRjtJQURFLGlMQUNGO0lBR0ssZUFBNkM7SUFBN0MsZ0VBQTZDO0lBTzlDLGVBQ0Y7SUFERSxnRUFDRjs7OztJQW5JUixBQURGLDhCQUFrRCxhQUNPO0lBa0J0RCxBQWhCQyxxRkFFb0Msd0VBYzJIO0lBVWpLLHlDQUEyRjtJQUV6Rix1R0FBOEU7SUFJOUUsNkJBQTRCO0lBSzFCLEFBSkEsd0dBQStHLHlIQUlwRTtJQUc3QyxpQkFBSztJQUNMLGdDQUFxQztJQUNuQyxxREFBMkY7SUFDN0YsaUJBQU07SUFFTixzRkFBc0g7SUFtQmxILEFBREYsQUFERiwrQkFBdUQsZUFDaEIsY0FDQztJQUNsQyxhQUNGOztJQUFBLGlCQUFLO0lBQ0wsK0JBQXNDO0lBQ3BDLGFBQ0Y7SUFBQSxpQkFBSztJQUVILEFBREYsK0JBQXdDLGFBQzZCO0lBQW5CLHNMQUFTLGVBQVEsS0FBQztJQUNoRSxhQUNGOztJQUdOLEFBREUsQUFERSxBQURFLGlCQUFJLEVBQ0QsRUFDRCxFQUNIO0lBc0NMLEFBcENBLHVGQUF1SCwwRUFvQ0w7SUFvQmxILHNCQUFJO0lBR0YsQUFERiw0QkFBSyxrQkFFa0I7SUFBbkIsMkxBQVMsZUFBUSxLQUFDO0lBQ2xCLGFBQ0Y7O0lBQUEsaUJBQVM7SUFDVCxtQ0FBeUY7SUFBbkIsMkxBQVMsZUFBUSxLQUFDO0lBQ3RGLGFBQ0Y7O0lBRUosQUFERSxBQURFLGlCQUFTLEVBQ0wsRUFDRjtJQUVOLGtEQUM2QjtJQUMvQixpQkFBTTs7Ozs7SUFySkksZUFBOEI7SUFBOUIsc0RBQThCO0lBZ0IvQixjQUErQztJQUEvQyxxRkFBK0M7SUFVakMsY0FBK0M7SUFBL0Msb0VBQStDO0lBRW5ELGNBQTZEO0lBQTdELDRGQUE2RDtJQUszRCxlQUE2RDtJQUFBLEFBQTdELDBGQUE2RCw4Q0FBaUM7SUFTOUUsZUFBMkI7SUFBM0IsZ0RBQTJCO0lBR3ZELGNBQTREO0lBQTVELDJGQUE0RDtJQW9CM0QsZUFDRjtJQURFLGlLQUNGO0lBRUUsZUFDRjtJQURFLDBHQUNGO0lBR0ksZUFDRjtJQURFLGlFQUNGO0lBS0QsZUFBNkQ7SUFBN0QsNEZBQTZEO0lBb0NWLGNBQXdEO0lBQXhELDJFQUF3RDtJQXlCNUcsZUFDRjtJQURFLG1FQUNGO0lBRUUsZUFDRjtJQURFLGlFQUNGO0lBSXdCLGVBQStDO0lBQS9DLG9FQUErQzs7QUQzSDdFLE1BQU0sT0FBTyw4QkFBOEI7SUF5Q3RCO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBOUNGLDhCQUE4QixHQUFHLDJCQUEyQixDQUFDO0lBQzdELGlDQUFpQyxHQUFHLDZCQUE2QixDQUFDO0lBRWxFLDBCQUEwQixHQUFHLHVCQUF1QixDQUFDO0lBQ3RELGtCQUFrQixHQUFHLFNBQVMsQ0FBQztJQUMvQix3QkFBd0IsR0FBRyxVQUFVLENBQUM7SUFDdEMsMEJBQTBCLEdBQUcsdUJBQXVCLENBQUM7SUFDckQsb0JBQW9CLEdBQUcsb0JBQW9CLENBQUM7SUFDNUMsa0JBQWtCLEdBQUcsT0FBTyxDQUFDO0lBRTdCLFNBQVMsQ0FBWTtJQUNyQixTQUFTLENBQWdCO0lBQ3pCLGtCQUFrQixDQUFxQjtJQUN2QyxTQUFTLEdBQTRCLElBQUksQ0FBQztJQUN6QyxXQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztJQUMxQyxjQUFjLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztJQUM3QywyQkFBMkIsR0FBRyxJQUFJLFlBQVksRUFBNkIsQ0FBQztJQUVyRixlQUFlLENBQWtCO0lBQ2xDLFdBQVcsQ0FBVztJQUNyQixPQUFPLENBQVM7SUFDaEIsR0FBRyxDQUFTO0lBQ1osdUJBQXVCLENBQWU7SUFDdEMsdUJBQXVCLENBQWU7SUFFdkMsc0JBQXNCLEdBQUcsa0JBQWtCLENBQUM7SUFDNUMscUJBQXFCLENBQXdCO0lBQzdDLHNCQUFzQixDQUEwQjtJQUNoRCxPQUFPLENBQVM7SUFDaEIsV0FBVyxDQUFpQjtJQUU1QixhQUFhLEdBQW1CLEVBQUUsQ0FBQztJQUNuQyxhQUFhLEdBQVcsRUFBRSxDQUFDO0lBQzNCLGFBQWEsQ0FBVTtJQUN2QixZQUFZLEdBQVksS0FBSyxDQUFDO0lBRTlCLHFCQUFxQixHQUFpQixJQUFJLE9BQU8sRUFBRSxDQUFDO0lBQ3BELEtBQUssQ0FBTTtJQUVsQixZQUNtQixLQUFxQixFQUNyQixNQUFjLEVBQ2QsWUFBMEIsRUFDMUIsWUFBMEIsRUFDMUIscUJBQTRDLEVBQzVDLHFCQUE0QyxFQUM1Qyx5QkFBb0Q7UUFOcEQsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFDckIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBdUI7UUFDNUMsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQUM1Qyw4QkFBeUIsR0FBekIseUJBQXlCLENBQTJCO0lBQ3BFLENBQUM7SUFFRyxRQUFRO1FBQ2IsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDO1FBQzlDLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQztRQUVoRCxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUU7WUFDakUsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7WUFFL0IscUVBQXFFO1lBQ3JFLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FDaEUsSUFBSSxDQUFDLGtCQUFrQixLQUFLLGtCQUFrQixDQUFDLE9BQU87Z0JBQ3RELG9GQUFvRjtnQkFDbEYsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLDhCQUE4QjtnQkFDdEQsc0ZBQXNGO2dCQUNwRixDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsaUNBQWlDLENBQzFELENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztRQUVILCtCQUErQjtRQUMvQixJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUU5QixJQUFJLENBQUMsNEJBQTRCLEVBQUUsQ0FBQztRQUVwQyxJQUFJLElBQUksQ0FBQyxrQkFBa0IsS0FBSyxrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUMzRCxJQUFJLENBQUMsdUJBQXVCLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLDBCQUEwQixDQUFDLElBQUksQ0FBQyxpQ0FBaUMsRUFDekgsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7aUJBQ25HLFNBQVMsQ0FBQztnQkFDVCxJQUFJLEVBQUUsQ0FBQyxRQUFhLEVBQUUsRUFBRTtvQkFDeEIsMEJBQTBCO29CQUN4QixJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQzt3QkFDYixJQUFJLFFBQVEsQ0FBQyxLQUFLLEVBQUUsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDOzRCQUMvQixJQUFJLENBQUMsYUFBYSxHQUFHLFFBQVEsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUMsSUFBVSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQzt3QkFDcEYsQ0FBQzs2QkFBTSxDQUFDOzRCQUNOLElBQUksQ0FBQyxhQUFhLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQzt3QkFDdEMsQ0FBQzt3QkFDRCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztvQkFDNUIsQ0FBQztnQkFDSCxDQUFDO2dCQUNELEtBQUssRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO29CQUNmLE9BQU8sQ0FBQyxLQUFLLENBQUMsbUNBQW1DLEVBQUUsS0FBSyxDQUFDLENBQUM7b0JBQzFELElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO2dCQUM3QixDQUFDO2FBQ0YsQ0FBQyxDQUFDO1FBQ1AsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztRQUM1QixDQUFDO0lBQ0gsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLHVCQUF1QixFQUFFLFdBQVcsRUFBRSxDQUFDO1FBQzVDLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxXQUFXLEVBQUUsQ0FBQztJQUM5QyxDQUFDO0lBRU0sTUFBTTtRQUNYLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFTSxNQUFNO1FBRVgsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDdEIsT0FBTTtRQUNSLENBQUM7UUFFRCx3Q0FBd0M7UUFDeEMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNsQixPQUFPLENBQUMsS0FBSyxDQUFDLDZEQUE2RCxDQUFDLENBQUM7WUFDN0UsSUFBSSxDQUFDLGFBQWEsR0FBRztnQkFDbkI7b0JBQ0UsS0FBSyxFQUFFLE9BQU87b0JBQ2QsV0FBVyxFQUFFLG1EQUFtRDtvQkFDaEUsT0FBTyxFQUFFLFVBQVU7aUJBQ3BCO2FBQ0YsQ0FBQztZQUNGLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFDekQsT0FBTztRQUNULENBQUM7UUFFRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsaUNBQWlDLEVBQUUsQ0FBQztRQUN0RCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTVDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBRXpCLElBQUksSUFBSSxDQUFDLGtCQUFrQixLQUFLLGtCQUFrQixDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQzNELElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ25DLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxZQUFZLENBQUMsSUFBSSxDQUM5QyxTQUFTLENBQUMsQ0FBQyxtQkFBbUIsRUFBRSxFQUFFO29CQUNoQyxNQUFNLGdCQUFnQixHQUFHLG1CQUFtQixFQUFFLDhCQUE4QixFQUFFLGlCQUFpQixDQUFDO29CQUNoRyxNQUFNLGtCQUFrQixHQUFHLG1CQUFtQixFQUFFLDhCQUE4QixFQUFFLG1CQUFtQixDQUFDO29CQUNwRyxJQUFJLENBQUMsMkJBQTJCLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxrQkFBa0IsRUFBRSxDQUFDLENBQUM7b0JBRTlGLE9BQU8sSUFBSSxDQUFDLHFCQUFxQixDQUFDLFlBQVksQ0FDNUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQ3hCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUMxQixDQUFDO2dCQUNKLENBQUMsQ0FBQyxDQUNILENBQUMsU0FBUyxDQUFDO29CQUNWLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUU7b0JBQ3JDLEtBQUssRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUM7aUJBQzFDLENBQUMsQ0FBQztZQUNMLENBQUM7aUJBQU0sQ0FBQztnQkFDTixPQUFPLENBQUMsS0FBSyxDQUFDLHNDQUFzQyxDQUFDLENBQUM7Z0JBQ3RELElBQUksQ0FBQyxhQUFhLEdBQUc7b0JBQ25CO3dCQUNFLEtBQUssRUFBRSxPQUFPO3dCQUNkLFdBQVcsRUFBRSwrQkFBK0I7d0JBQzVDLE9BQU8sRUFBRSxVQUFVO3FCQUNwQjtpQkFDRixDQUFDO2dCQUNGLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO2dCQUMxQixNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO2dCQUN6RCxPQUFPO1lBQ1QsQ0FBQztRQUNILENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLHVCQUF1QixHQUFHLFlBQVksQ0FBQyxTQUFTLENBQUM7Z0JBQ3BELElBQUksRUFBRSxDQUFDLGdCQUFnQixFQUFFLEVBQUU7b0JBQ3pCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO29CQUMxQixNQUFNLGdCQUFnQixHQUFHLGdCQUFnQixFQUFFLDhCQUE4QixFQUFFLGlCQUFpQixDQUFDO29CQUM3RixNQUFNLGtCQUFrQixHQUFHLGdCQUFnQixFQUFFLDhCQUE4QixFQUFFLG1CQUFtQixDQUFDO29CQUNqRyxJQUFJLENBQUMsMkJBQTJCLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxrQkFBa0IsRUFBRSxDQUFDLENBQUM7Z0JBQ2hHLENBQUM7Z0JBQ0QsS0FBSyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQzthQUMxQyxDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQztJQUVPLFdBQVcsQ0FBQyxJQUFTO1FBQzNCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNyRCxJQUFJO1lBQ0osS0FBSyxFQUFFO2dCQUNMLEVBQUUsRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFLEVBQUU7Z0JBQzVCLE9BQU8sRUFBRSxFQUFFO2dCQUNYLFdBQVcsRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFLFdBQVc7YUFDL0M7WUFDRCxXQUFXLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxXQUFXO1lBQ3hDLGNBQWMsRUFBRSxLQUFLO1NBQ3RCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxrQkFBa0I7UUFDeEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0IsSUFBSSxDQUFDLHlCQUF5QixDQUFDLGdDQUFnQyxFQUFFLENBQUM7UUFDbEUsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7SUFDNUIsQ0FBQztJQUVPLFdBQVcsQ0FBQyxLQUFVO1FBQzVCLE9BQU8sQ0FBQyxLQUFLLENBQUMscUJBQXFCLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7UUFFMUIsSUFBSSxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLEVBQUMsQ0FBQztZQUNuQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztZQUNsQixJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pDLENBQUM7YUFBTSxDQUFDO1lBQ0wsSUFBSSxLQUFLLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQztnQkFDM0QsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7WUFDcEIsQ0FBQztpQkFBTSxDQUFDO2dCQUNQLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQUM7WUFDN0MsQ0FBQztRQUNKLENBQUM7UUFDRCxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFTyxpQ0FBaUM7UUFDdkMsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztRQUV4RixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsa0JBQWtCLEtBQUssa0JBQWtCLENBQUMsU0FBUztZQUMxRSxDQUFDLENBQUMsb0JBQW9CLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsa0JBQWtCLENBQUM7WUFDMUUsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLDZCQUE2QixDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1FBRTNHLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxvREFBb0Q7UUFDekcsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixLQUFLLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxDQUFDLCtCQUErQjtRQUU1RyxpREFBaUQ7UUFDakQsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNsQixPQUFPLENBQUMsS0FBSyxDQUFDLDJGQUEyRixDQUFDLENBQUM7WUFDM0csSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FBQztRQUM5QyxDQUFDO1FBRUQsc0NBQXNDO1FBQ3RDLE1BQU0sWUFBWSxHQUE0QixFQUFFLENBQUM7UUFFakQsSUFBSSxJQUFJLENBQUMsc0JBQXNCLEVBQUUsTUFBTSxFQUFFLENBQUM7WUFDeEMsSUFBSSxpQkFBaUIsQ0FBQztZQUV0QixtRkFBbUY7WUFDbkYsSUFBSSxDQUFDLFVBQVUsSUFBSSxTQUFTLEVBQUUsQ0FBQztnQkFDN0IsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQ2xFLFVBQVUsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxTQUFTLENBQUMsQ0FDMUUsQ0FBQztZQUNKLENBQUM7WUFFRCxJQUFJLGlCQUFpQixFQUFFLENBQUM7Z0JBQ3RCLHVFQUF1RTtnQkFDdkUsaUJBQWlCLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztvQkFDbEMsRUFBRSxFQUFFLElBQUk7b0JBQ1IsS0FBSyxFQUFFLFdBQVc7aUJBQ25CLENBQUMsQ0FBQztnQkFFSCw2Q0FBNkM7Z0JBQzdDLFlBQVksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUc7b0JBQzNCLEdBQUcsaUJBQWlCLEVBQUUsNEJBQTRCO29CQUNsRCxZQUFZLEVBQUUsQ0FBQyxHQUFHLGlCQUFpQixDQUFDLFlBQVksQ0FBQyxDQUFDLG9DQUFvQztpQkFDdkYsQ0FBQztZQUNKLENBQUM7aUJBQU0sQ0FBQztnQkFDTixpRkFBaUY7Z0JBQ2pGLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztnQkFFbkUsZ0RBQWdEO2dCQUNoRCxZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHO29CQUMzQixTQUFTLEVBQUUsaUJBQWlCO29CQUM1QixVQUFVLEVBQUUsRUFBRSxFQUFFLHNCQUFzQjtvQkFDdEMsWUFBWSxFQUFFO3dCQUNaOzRCQUNFLEVBQUUsRUFBRSxJQUFJOzRCQUNSLEtBQUssRUFBRSxXQUFXO3lCQUNuQjtxQkFDRjtpQkFDRixDQUFDO2dCQUVGLDBEQUEwRDtnQkFDMUQsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUMxQyxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FDaEYsQ0FBQztZQUNKLENBQUM7UUFDSCxDQUFDO2FBQU0sQ0FBQztZQUNOLGlGQUFpRjtZQUNqRixZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHO2dCQUMzQixTQUFTLEVBQUUsa0JBQWtCLEVBQUUsSUFBSSxJQUFJLEdBQUcsa0JBQWtCLEVBQUUsUUFBUSxJQUFJLGtCQUFrQixFQUFFLE9BQU8sRUFBRSxFQUFFLHNCQUFzQjtnQkFDL0gsVUFBVSxFQUFFLEVBQUUsRUFBRSxzQkFBc0I7Z0JBQ3RDLFlBQVksRUFBRTtvQkFDWjt3QkFDRSxFQUFFLEVBQUUsSUFBSTt3QkFDUixLQUFLLEVBQUUsV0FBVztxQkFDbkI7aUJBQ0Y7YUFDRixDQUFDO1FBQ0osQ0FBQztRQUNELE9BQU8sWUFBWSxDQUFDO0lBQ3RCLENBQUM7SUFFTSw0QkFBNEI7UUFDakMsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsQ0FBQztZQUN4QyxpR0FBaUc7WUFDakcseUNBQXlDO1lBQ3pDLE1BQU0sOEJBQThCLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxXQUFXLEVBQUUsTUFBTSxDQUN4RSxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQ1osU0FBUyxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLDBCQUEwQjtnQkFDM0QsU0FBUyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLGtCQUFrQixJQUFJLFNBQVMsQ0FBQyxlQUFlLEtBQUssSUFBSSxDQUFDLHdCQUF3QixDQUN2SCxFQUFFLE1BQU0sSUFBSSxDQUFDLENBQUM7WUFFZixJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLFNBQVMsRUFBRSxFQUFFO2dCQUNqRix3RUFBd0U7Z0JBQ3hFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLEVBQUUsOEJBQThCLENBQUMsQ0FBQztnQkFFbkUsTUFBTSxpQ0FBaUMsR0FBRyxvQkFBb0IsQ0FBQywrQkFBK0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDMUcsSUFBSSxpQ0FBaUMsSUFBSSxPQUFPLGlDQUFpQyxLQUFLLFFBQVEsRUFBRSxDQUFDO29CQUMvRixHQUFHLENBQUMsSUFBSSxDQUFDLGlDQUFpQyxDQUFDLENBQUM7Z0JBQzlDLENBQUM7Z0JBQ0QsT0FBTyxHQUFHLENBQUM7WUFDYixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDVCxDQUFDO0lBQ0gsQ0FBQztJQUVPLGtCQUFrQixDQUFDLElBQWUsRUFBRSxLQUFhO1FBQ3ZELE1BQU0sRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEdBQUcsSUFBSSxDQUFDO1FBQzNCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7UUFFcEQsNEVBQTRFO1FBQzVFLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLDBCQUEwQixJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQy9HLElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQ2pDLHdGQUF3RjtnQkFDeEYsSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLENBQUM7b0JBQ2QsSUFBSSxDQUFDLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxFQUFFLENBQUM7d0JBQ3RDLE9BQU87b0JBQ1QsQ0FBQztnQkFDSCxDQUFDO3FCQUFNLENBQUM7b0JBQ04sMkRBQTJEO29CQUMzRCxJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQyxDQUFDLGtEQUFrRDtnQkFDdkUsQ0FBQztZQUNILENBQUM7WUFFRCwrREFBK0Q7WUFDL0QsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDL0MsQ0FBQztJQUNILENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLEVBQVU7UUFDcEQsSUFBSSxTQUFTLElBQUksS0FBSyxFQUFFLFlBQVksRUFBRSxDQUFDO1lBQ3JDLDBFQUEwRTtZQUMxRSxNQUFNLGNBQWMsR0FBRyxLQUFLLEVBQUUsWUFBWSxFQUFFLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssU0FBUyxDQUFDLENBQUM7WUFDOUYsSUFBSSxjQUFjLEVBQUUsQ0FBQztnQkFDbkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDcEIsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRU8saUJBQWlCLENBQUMsSUFBZTtRQUN2QyxPQUFPLElBQUksQ0FBQyxrQkFBa0IsS0FBSyxrQkFBa0IsQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLGVBQWUsS0FBSyxJQUFJLENBQUMsd0JBQXdCLENBQUM7SUFDNUgsQ0FBQztJQUVPLHlCQUF5QjtRQUMvQixNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsRUFBRSxDQUFDO1FBRXJFLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUNwQixPQUFPLENBQUMsS0FBSyxDQUFDLDZCQUE2QixDQUFDLENBQUM7WUFDN0MsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsNEJBQTRCLENBQUMsY0FBYyxDQUFDLEtBQUssSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7WUFDMUYsNENBQTRDO1lBQzVDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGlEQUFpRCxFQUFFLEVBQUUsRUFBRSxDQUFDO1FBQzlFLENBQUM7YUFBTSxDQUFDO1lBQ04seURBQXlEO1lBQ3pELE9BQU8sQ0FBQyxLQUFLLENBQUMsd0VBQXdFLGNBQWMsZUFBZSxDQUFDLENBQUM7WUFDckgsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU8saURBQWlEO1FBQ3ZELE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsV0FBVyxFQUFFLE1BQU0sQ0FDekQsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUNSLEtBQUssQ0FBQyxVQUFVLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQywwQkFBMEI7WUFDdkQsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLGtCQUFrQjtZQUNqRCxLQUFLLENBQUMsZUFBZSxLQUFLLElBQUksQ0FBQyx3QkFBd0IsQ0FDMUQsQ0FBQztRQUVGLElBQUksQ0FBQyxlQUFlLEVBQUUsTUFBTSxFQUFFLENBQUM7WUFDN0IsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztRQUVELE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsa0JBQWtCLENBQUM7UUFFOUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3JCLE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUM7UUFFRCxPQUFPLGVBQWU7YUFDbkIsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDYixNQUFNLFdBQVcsR0FBRyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsYUFBYSxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUM5RSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsS0FBSyxJQUFJLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3pFLENBQUMsQ0FBQzthQUNELElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQztJQUNqRCxDQUFDO0lBRU8sNEJBQTRCLENBQUMsWUFBb0I7UUFDdkQsT0FBTyxZQUFZLENBQUMsV0FBVyxFQUFFLEtBQUssSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsMEJBQTBCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztJQUM5SCxDQUFDO0lBRU8sc0JBQXNCO1FBQzVCLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ2pFLElBQUksZ0JBQWdCLElBQUksZ0JBQWdCLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3BELE1BQU0sU0FBUyxHQUFHLGdCQUFnQixDQUFDO1lBQ25DLElBQUksQ0FBQyxXQUFXLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO1FBQzFGLENBQUM7SUFDSCxDQUFDO0lBRU0sbUJBQW1CLENBQUMsS0FBVTtRQUNuQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxjQUFjLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDM0MsQ0FBQzt3SEF4WlUsOEJBQThCOzZEQUE5Qiw4QkFBOEI7WUMzQjNDLGlGQUFrRDs7WUFBckIsd0NBQW1COzs7aUZEMkJuQyw4QkFBOEI7Y0FMMUMsU0FBUzsyQkFDRSw4QkFBOEI7ME9BZXhCLFNBQVM7a0JBQXhCLEtBQUs7WUFDVSxTQUFTO2tCQUF4QixLQUFLO1lBQ1Usa0JBQWtCO2tCQUFqQyxLQUFLO1lBQ1UsU0FBUztrQkFBeEIsS0FBSztZQUNXLFdBQVc7a0JBQTNCLE1BQU07WUFDVSxjQUFjO2tCQUE5QixNQUFNO1lBQ1UsMkJBQTJCO2tCQUEzQyxNQUFNOztrRkFqQkksOEJBQThCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBzd2l0Y2hNYXAsIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1xuICBDYXNlRXZlbnRUcmlnZ2VyLFxuICBDYXNlRmllbGQsXG4gIENhc2VWaWV3LFxuICBDYXNlVmlld1RyaWdnZXIsXG4gIEVycm9yTWVzc2FnZVxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvc2hhcmVkL2RvbWFpbic7XG5pbXBvcnQgeyBFcnJvck5vdGlmaWVyU2VydmljZSwgU2Vzc2lvblN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHsgRXZlbnRDb21wbGV0aW9uUGFyYW1zIH0gZnJvbSAnLi4vLi4vLi4vLi4vY2FzZS1lZGl0b3IvZG9tYWluL2V2ZW50LWNvbXBsZXRpb24tcGFyYW1zLm1vZGVsJztcbmltcG9ydCB7IENhc2VOb3RpZmllciwgQ2FzZXNTZXJ2aWNlLCBXb3JrQWxsb2NhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9jYXNlLWVkaXRvci9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBDYXNlUXVlcmllc0NvbGxlY3Rpb24sIFFtQ2FzZVF1ZXJpZXNDb2xsZWN0aW9uLCBRdWVyeUNyZWF0ZUNvbnRleHQsIFF1ZXJ5TGlzdEl0ZW0gfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHsgUXVlcnlNYW5hZ2VtZW50VXRpbHMgfSBmcm9tICcuLi8uLi91dGlscy9xdWVyeS1tYW5hZ2VtZW50LnV0aWxzJztcbmltcG9ydCB7IEZvcm1Eb2N1bWVudCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9zaGFyZWQvZG9tYWluL2RvY3VtZW50JztcbmltcG9ydCB7IFF1YWxpZnlpbmdRdWVzdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9xdWFsaWZ5aW5nLXF1ZXN0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgVGFzayB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2RvbWFpbi93b3JrLWFsbG9jYXRpb24vVGFzayc7XG5pbXBvcnQgeyBVU0VSX0RFVEFJTFMgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi91dGlscyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NjZC1xdWVyeS1jaGVjay15b3VyLWFuc3dlcnMnLFxuICB0ZW1wbGF0ZVVybDogJy4vcXVlcnktY2hlY2steW91ci1hbnN3ZXJzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcXVlcnktY2hlY2steW91ci1hbnN3ZXJzLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgUXVlcnlDaGVja1lvdXJBbnN3ZXJzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHJlYWRvbmx5IFJBSVNFX0FfUVVFUllfRVZFTlRfVFJJR0dFUl9JRCA9ICdxdWVyeU1hbmFnZW1lbnRSYWlzZVF1ZXJ5JztcbiAgcHJpdmF0ZSByZWFkb25seSBSRVNQT05EX1RPX1FVRVJZX0VWRU5UX1RSSUdHRVJfSUQgPSAncXVlcnlNYW5hZ2VtZW50UmVzcG9uZFF1ZXJ5JztcblxuICBwcml2YXRlIHJlYWRvbmx5IENBU0VfUVVFUklFU19DT0xMRUNUSU9OX0lEID0gJ0Nhc2VRdWVyaWVzQ29sbGVjdGlvbic7XG4gIHB1YmxpYyByZWFkb25seSBGSUVMRF9UWVBFX0NPTVBMRVggPSAnQ29tcGxleCc7XG4gIHB1YmxpYyByZWFkb25seSBESVNQTEFZX0NPTlRFWFRfUkVBRE9OTFkgPSAnUkVBRE9OTFknO1xuICBwdWJsaWMgcmVhZG9ubHkgUU1fU0VMRUNUX0ZJUlNUX0NPTExFQ1RJT04gPSAnc2VsZWN0Rmlyc3RDb2xsZWN0aW9uJztcbiAgcHVibGljIHJlYWRvbmx5IFFNX0NPTExFQ1RJT05fUFJPTVBUID0gJ3Byb21wdFFtQ29sbGVjdGlvbic7XG4gIHB1YmxpYyByZWFkb25seSBDSVZJTF9KVVJJU0RJQ1RJT04gPSAnQ0lWSUwnO1xuXG4gIEBJbnB1dCgpIHB1YmxpYyBmb3JtR3JvdXA6IEZvcm1Hcm91cDtcbiAgQElucHV0KCkgcHVibGljIHF1ZXJ5SXRlbTogUXVlcnlMaXN0SXRlbTtcbiAgQElucHV0KCkgcHVibGljIHF1ZXJ5Q3JlYXRlQ29udGV4dDogUXVlcnlDcmVhdGVDb250ZXh0O1xuICBASW5wdXQoKSBwdWJsaWMgZXZlbnREYXRhOiBDYXNlRXZlbnRUcmlnZ2VyIHwgbnVsbCA9IG51bGw7XG4gIEBPdXRwdXQoKSBwdWJsaWMgYmFja0NsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgcXVlcnlTdWJtaXR0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgY2FsbGJhY2tDb25maXJtYXRpb25NZXNzYWdlID0gbmV3IEV2ZW50RW1pdHRlcjx7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9PigpO1xuXG4gIHByaXZhdGUgY2FzZVZpZXdUcmlnZ2VyOiBDYXNlVmlld1RyaWdnZXI7XG4gIHB1YmxpYyBjYXNlRGV0YWlsczogQ2FzZVZpZXc7XG4gIHByaXZhdGUgcXVlcnlJZDogc3RyaW5nO1xuICBwcml2YXRlIHRpZDogc3RyaW5nO1xuICBwcml2YXRlIGNyZWF0ZUV2ZW50U3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgc2VhcmNoVGFza3NTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICBwdWJsaWMgcXVlcnlDcmVhdGVDb250ZXh0RW51bSA9IFF1ZXJ5Q3JlYXRlQ29udGV4dDtcbiAgcHVibGljIGV2ZW50Q29tcGxldGlvblBhcmFtczogRXZlbnRDb21wbGV0aW9uUGFyYW1zO1xuICBwdWJsaWMgY2FzZVF1ZXJpZXNDb2xsZWN0aW9uczogQ2FzZVF1ZXJpZXNDb2xsZWN0aW9uW107XG4gIHB1YmxpYyBmaWVsZElkOiBzdHJpbmc7XG4gIHB1YmxpYyBhdHRhY2htZW50czogRm9ybURvY3VtZW50W107XG5cbiAgcHVibGljIGVycm9yTWVzc2FnZXM6IEVycm9yTWVzc2FnZVtdID0gW107XG4gIHB1YmxpYyBmaWx0ZXJlZFRhc2tzOiBUYXNrW10gPSBbXTtcbiAgcHVibGljIHJlYWR5VG9TdWJtaXQ6IGJvb2xlYW47XG4gIHB1YmxpYyBpc1N1Ym1pdHRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwdWJsaWMgY2FsbGJhY2tFcnJvcnNTdWJqZWN0OiBTdWJqZWN0PGFueT4gPSBuZXcgU3ViamVjdCgpO1xuICBwdWJsaWMgZXJyb3I6IGFueTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2FzZXNTZXJ2aWNlOiBDYXNlc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjYXNlTm90aWZpZXI6IENhc2VOb3RpZmllcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IHdvcmtBbGxvY2F0aW9uU2VydmljZTogV29ya0FsbG9jYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlOiBTZXNzaW9uU3RvcmFnZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBxdWFsaWZ5aW5nUXVlc3Rpb25TZXJ2aWNlOiBRdWFsaWZ5aW5nUXVlc3Rpb25TZXJ2aWNlXG4gICkge31cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5xdWVyeUlkID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXMucWlkO1xuICAgIHRoaXMudGlkID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtcz8udGlkO1xuXG4gICAgdGhpcy5jYXNlTm90aWZpZXIuY2FzZVZpZXcucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKGNhc2VEZXRhaWxzKSA9PiB7XG4gICAgICB0aGlzLmNhc2VEZXRhaWxzID0gY2FzZURldGFpbHM7XG5cbiAgICAgIC8vIEZpbmQgdGhlIGFwcHJvcHJpYXRlIGV2ZW50IHRyaWdnZXIgYmFzZWQgb24gdGhlIHF1ZXJ5Q3JlYXRlQ29udGV4dFxuICAgICAgdGhpcy5jYXNlVmlld1RyaWdnZXIgPSB0aGlzLmNhc2VEZXRhaWxzLnRyaWdnZXJzLmZpbmQoKHRyaWdnZXIpID0+XG4gICAgICAgIHRoaXMucXVlcnlDcmVhdGVDb250ZXh0ICE9PSBRdWVyeUNyZWF0ZUNvbnRleHQuUkVTUE9ORFxuICAgICAgICAvLyBJZiB0aGUgY29udGV4dCBpcyBub3QgJ1JFU1BPTkQnLCBmaW5kIHRoZSB0cmlnZ2VyIHdpdGggdGhlIElEIGZvciByYWlzaW5nIGEgcXVlcnlcbiAgICAgICAgICA/IHRyaWdnZXIuaWQgPT09IHRoaXMuUkFJU0VfQV9RVUVSWV9FVkVOVF9UUklHR0VSX0lEXG4gICAgICAgIC8vIElmIHRoZSBjb250ZXh0IGlzICdSRVNQT05EJywgZmluZCB0aGUgdHJpZ2dlciB3aXRoIHRoZSBJRCBmb3IgcmVzcG9uZGluZyB0byBhIHF1ZXJ5XG4gICAgICAgICAgOiB0cmlnZ2VyLmlkID09PSB0aGlzLlJFU1BPTkRfVE9fUVVFUllfRVZFTlRfVFJJR0dFUl9JRFxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIC8vIEdldCB0aGUgZG9jdW1lbnQgYXR0YWNobWVudHNcbiAgICB0aGlzLmdldERvY3VtZW50QXR0YWNobWVudHMoKTtcblxuICAgIHRoaXMuc2V0Q2FzZVF1ZXJpZXNDb2xsZWN0aW9uRGF0YSgpO1xuXG4gICAgaWYgKHRoaXMucXVlcnlDcmVhdGVDb250ZXh0ID09PSBRdWVyeUNyZWF0ZUNvbnRleHQuUkVTUE9ORCkge1xuICAgICAgdGhpcy5zZWFyY2hUYXNrc1N1YnNjcmlwdGlvbiA9IHRoaXMud29ya0FsbG9jYXRpb25TZXJ2aWNlLmdldFRhc2tzQnlDYXNlSWRBbmRFdmVudElkKHRoaXMuUkVTUE9ORF9UT19RVUVSWV9FVkVOVF9UUklHR0VSX0lELFxuICAgICAgICB0aGlzLmNhc2VEZXRhaWxzLmNhc2VfaWQsIHRoaXMuY2FzZURldGFpbHMuY2FzZV90eXBlLmlkLCB0aGlzLmNhc2VEZXRhaWxzLmNhc2VfdHlwZS5qdXJpc2RpY3Rpb24uaWQpXG4gICAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICAgIG5leHQ6IChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgICAgLy8gRmlsdGVyIHRhc2sgYnkgcXVlcnkgaWRcbiAgICAgICAgICAgIGlmICh0aGlzLnRpZCkge1xuICAgICAgICAgICAgICBpZiAocmVzcG9uc2UudGFza3M/Lmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbHRlcmVkVGFza3MgPSByZXNwb25zZS50YXNrcz8uZmlsdGVyKCh0YXNrOiBUYXNrKSA9PiB0YXNrLmlkID09PSB0aGlzLnRpZCk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJlZFRhc2tzID0gcmVzcG9uc2UudGFza3M7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgdGhpcy5yZWFkeVRvU3VibWl0ID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGluIHNlYXJjaFRhc2tzU3Vic2NyaXB0aW9uOicsIGVycm9yKTtcbiAgICAgICAgICAgIHRoaXMucmVhZHlUb1N1Ym1pdCA9IGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmVhZHlUb1N1Ym1pdCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuY3JlYXRlRXZlbnRTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5zZWFyY2hUYXNrc1N1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnb0JhY2soKTogdm9pZCB7XG4gICAgdGhpcy5iYWNrQ2xpY2tlZC5lbWl0KHRydWUpO1xuICB9XG5cbiAgcHVibGljIHN1Ym1pdCgpOiB2b2lkIHtcblxuICAgIGlmICh0aGlzLmlzU3VibWl0dGluZykge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gQ2hlY2sgaWYgZmllbGRJZCBpcyBudWxsIG9yIHVuZGVmaW5lZFxuICAgIGlmICghdGhpcy5maWVsZElkKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvcjogRmllbGQgSUQgaXMgbWlzc2luZy4gQ2Fubm90IHByb2NlZWQgd2l0aCBzdWJtaXNzaW9uLicpO1xuICAgICAgdGhpcy5lcnJvck1lc3NhZ2VzID0gW1xuICAgICAgICB7XG4gICAgICAgICAgdGl0bGU6ICdFcnJvcicsXG4gICAgICAgICAgZGVzY3JpcHRpb246ICdUaGlzIGNhc2UgaXMgbm90IGNvbmZpZ3VyZWQgZm9yIHF1ZXJ5IG1hbmFnZW1lbnQuJyxcbiAgICAgICAgICBmaWVsZElkOiAnZmllbGQtaWQnXG4gICAgICAgIH1cbiAgICAgIF07XG4gICAgICB3aW5kb3cuc2Nyb2xsVG8oeyBsZWZ0OiAwLCB0b3A6IDAsIGJlaGF2aW9yOiAnc21vb3RoJyB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBkYXRhID0gdGhpcy5nZW5lcmF0ZUNhc2VRdWVyaWVzQ29sbGVjdGlvbkRhdGEoKTtcbiAgICBjb25zdCBjcmVhdGVFdmVudCQgPSB0aGlzLmNyZWF0ZUV2ZW50KGRhdGEpO1xuXG4gICAgdGhpcy5pc1N1Ym1pdHRpbmcgPSB0cnVlO1xuXG4gICAgaWYgKHRoaXMucXVlcnlDcmVhdGVDb250ZXh0ID09PSBRdWVyeUNyZWF0ZUNvbnRleHQuUkVTUE9ORCkge1xuICAgICAgaWYgKHRoaXMuZmlsdGVyZWRUYXNrcz8ubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLmNyZWF0ZUV2ZW50U3Vic2NyaXB0aW9uID0gY3JlYXRlRXZlbnQkLnBpcGUoXG4gICAgICAgICAgc3dpdGNoTWFwKChjcmVhdGVFdmVudFJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb25maXJtYXRpb25Cb2R5ID0gY3JlYXRlRXZlbnRSZXNwb25zZT8uYWZ0ZXJfc3VibWl0X2NhbGxiYWNrX3Jlc3BvbnNlPy5jb25maXJtYXRpb25fYm9keTtcbiAgICAgICAgICAgIGNvbnN0IGNvbmZpcm1hdGlvbkhlYWRlciA9IGNyZWF0ZUV2ZW50UmVzcG9uc2U/LmFmdGVyX3N1Ym1pdF9jYWxsYmFja19yZXNwb25zZT8uY29uZmlybWF0aW9uX2hlYWRlcjtcbiAgICAgICAgICAgIHRoaXMuY2FsbGJhY2tDb25maXJtYXRpb25NZXNzYWdlLmVtaXQoeyBib2R5OiBjb25maXJtYXRpb25Cb2R5LCBoZWFkZXI6IGNvbmZpcm1hdGlvbkhlYWRlciB9KTtcblxuICAgICAgICAgICAgcmV0dXJuIHRoaXMud29ya0FsbG9jYXRpb25TZXJ2aWNlLmNvbXBsZXRlVGFzayhcbiAgICAgICAgICAgICAgdGhpcy5maWx0ZXJlZFRhc2tzWzBdLmlkLFxuICAgICAgICAgICAgICB0aGlzLmNhc2VWaWV3VHJpZ2dlci5uYW1lXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0pXG4gICAgICAgICkuc3Vic2NyaWJlKHtcbiAgICAgICAgICBuZXh0OiAoKSA9PiB0aGlzLmZpbmFsaXNlU3VibWlzc2lvbigpLFxuICAgICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHRoaXMuaGFuZGxlRXJyb3IoZXJyb3IpXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3I6IE5vIHRhc2sgdG8gY29tcGxldGUgd2FzIGZvdW5kJyk7XG4gICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlcyA9IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0aXRsZTogJ0Vycm9yJyxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnTm8gdGFzayB0byBjb21wbGV0ZSB3YXMgZm91bmQnLFxuICAgICAgICAgICAgZmllbGRJZDogJ2ZpZWxkLWlkJ1xuICAgICAgICAgIH1cbiAgICAgICAgXTtcbiAgICAgICAgdGhpcy5pc1N1Ym1pdHRpbmcgPSBmYWxzZTtcbiAgICAgICAgd2luZG93LnNjcm9sbFRvKHsgbGVmdDogMCwgdG9wOiAwLCBiZWhhdmlvcjogJ3Ntb290aCcgfSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jcmVhdGVFdmVudFN1YnNjcmlwdGlvbiA9IGNyZWF0ZUV2ZW50JC5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAoY2FsbGJhY2tSZXNwb25zZSkgPT4ge1xuICAgICAgICAgIHRoaXMuZmluYWxpc2VTdWJtaXNzaW9uKCk7XG4gICAgICAgICAgY29uc3QgY29uZmlybWF0aW9uQm9keSA9IGNhbGxiYWNrUmVzcG9uc2U/LmFmdGVyX3N1Ym1pdF9jYWxsYmFja19yZXNwb25zZT8uY29uZmlybWF0aW9uX2JvZHk7XG4gICAgICAgICAgY29uc3QgY29uZmlybWF0aW9uSGVhZGVyID0gY2FsbGJhY2tSZXNwb25zZT8uYWZ0ZXJfc3VibWl0X2NhbGxiYWNrX3Jlc3BvbnNlPy5jb25maXJtYXRpb25faGVhZGVyO1xuICAgICAgICAgIHRoaXMuY2FsbGJhY2tDb25maXJtYXRpb25NZXNzYWdlLmVtaXQoeyBib2R5OiBjb25maXJtYXRpb25Cb2R5LCBoZWFkZXI6IGNvbmZpcm1hdGlvbkhlYWRlciB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IChlcnJvcikgPT4gdGhpcy5oYW5kbGVFcnJvcihlcnJvcilcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlRXZlbnQoZGF0YTogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5jYXNlc1NlcnZpY2UuY3JlYXRlRXZlbnQodGhpcy5jYXNlRGV0YWlscywge1xuICAgICAgZGF0YSxcbiAgICAgIGV2ZW50OiB7XG4gICAgICAgIGlkOiB0aGlzLmNhc2VWaWV3VHJpZ2dlcj8uaWQsXG4gICAgICAgIHN1bW1hcnk6ICcnLFxuICAgICAgICBkZXNjcmlwdGlvbjogdGhpcy5jYXNlVmlld1RyaWdnZXI/LmRlc2NyaXB0aW9uXG4gICAgICB9LFxuICAgICAgZXZlbnRfdG9rZW46IHRoaXMuZXZlbnREYXRhPy5ldmVudF90b2tlbixcbiAgICAgIGlnbm9yZV93YXJuaW5nOiBmYWxzZVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBmaW5hbGlzZVN1Ym1pc3Npb24oKTogdm9pZCB7XG4gICAgdGhpcy5xdWVyeVN1Ym1pdHRlZC5lbWl0KHRydWUpO1xuICAgIHRoaXMucXVhbGlmeWluZ1F1ZXN0aW9uU2VydmljZS5jbGVhclF1YWxpZnlpbmdRdWVzdGlvblNlbGVjdGlvbigpO1xuICAgIHRoaXMuaXNTdWJtaXR0aW5nID0gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUVycm9yKGVycm9yOiBhbnkpOiB2b2lkIHtcbiAgICBjb25zb2xlLmVycm9yKCdFcnJvciBpbiBBUEkgY2FsbHM6JywgZXJyb3IpO1xuICAgIHRoaXMuaXNTdWJtaXR0aW5nID0gZmFsc2U7XG5cbiAgICBpZiAodGhpcy5pc1NlcnZpY2VFcnJvckZvdW5kKGVycm9yKSl7XG4gICAgICB0aGlzLmVycm9yID0gbnVsbDtcbiAgICAgIHRoaXMuY2FsbGJhY2tFcnJvcnNTdWJqZWN0Lm5leHQoZXJyb3IpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgaWYgKGVycm9yICYmIGVycm9yLnN0YXR1cyAhPT0gNDAxICYmIGVycm9yLnN0YXR1cyAhPT0gNDAzKSB7XG4gICAgICAgIHRoaXMuZXJyb3IgPSBlcnJvcjtcbiAgICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy8nLCAnc2VydmljZS1kb3duJ10pO1xuICAgICAgIH1cbiAgICB9XG4gICAgd2luZG93LnNjcm9sbFRvKHsgbGVmdDogMCwgdG9wOiAwLCBiZWhhdmlvcjogJ3Ntb290aCcgfSk7XG4gIH1cblxuICBwcml2YXRlIGdlbmVyYXRlQ2FzZVF1ZXJpZXNDb2xsZWN0aW9uRGF0YSgpOiBRbUNhc2VRdWVyaWVzQ29sbGVjdGlvbiB7XG4gICAgY29uc3QgY3VycmVudFVzZXJEZXRhaWxzID0gSlNPTi5wYXJzZSh0aGlzLnNlc3Npb25TdG9yYWdlU2VydmljZS5nZXRJdGVtKFVTRVJfREVUQUlMUykpO1xuXG4gICAgY29uc3QgY2FzZU1lc3NhZ2UgPSB0aGlzLnF1ZXJ5Q3JlYXRlQ29udGV4dCA9PT0gUXVlcnlDcmVhdGVDb250ZXh0Lk5FV19RVUVSWVxuICAgICAgPyBRdWVyeU1hbmFnZW1lbnRVdGlscy5nZXROZXdRdWVyeURhdGEodGhpcy5mb3JtR3JvdXAsIGN1cnJlbnRVc2VyRGV0YWlscylcbiAgICAgIDogUXVlcnlNYW5hZ2VtZW50VXRpbHMuZ2V0UmVzcG9uZE9yRm9sbG93dXBRdWVyeURhdGEodGhpcy5mb3JtR3JvdXAsIHRoaXMucXVlcnlJdGVtLCBjdXJyZW50VXNlckRldGFpbHMpO1xuXG4gICAgY29uc3QgbWVzc2FnZUlkID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXMuZGF0YWlkOyAvLyBHZXQgdGhlIG1lc3NhZ2UgSUQgZnJvbSByb3V0ZSBwYXJhbXMgKGlmIHByZXNlbnQpXG4gICAgY29uc3QgaXNOZXdRdWVyeSA9IHRoaXMucXVlcnlDcmVhdGVDb250ZXh0ID09PSBRdWVyeUNyZWF0ZUNvbnRleHQuTkVXX1FVRVJZOyAvLyBDaGVjayBpZiB0aGlzIGlzIGEgbmV3IHF1ZXJ5XG5cbiAgICAvLyBDaGVjayBpZiB0aGUgZmllbGQgSUQgaGFzIGJlZW4gc2V0IGR5bmFtaWNhbGx5XG4gICAgaWYgKCF0aGlzLmZpZWxkSWQpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yOiBGaWVsZCBJRCBmb3IgQ2FzZVF1ZXJpZXNDb2xsZWN0aW9uIG5vdCBmb3VuZC4gQ2Fubm90IHByb2NlZWQgd2l0aCBkYXRhIGdlbmVyYXRpb24uJyk7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy8nLCAnc2VydmljZS1kb3duJ10pO1xuICAgIH1cblxuICAgIC8vIEluaXRpYWxpemUgbmV3IHF1ZXJ5IGRhdGEgc3RydWN0dXJlXG4gICAgY29uc3QgbmV3UXVlcnlEYXRhOiBRbUNhc2VRdWVyaWVzQ29sbGVjdGlvbiA9IHt9O1xuXG4gICAgaWYgKHRoaXMuY2FzZVF1ZXJpZXNDb2xsZWN0aW9ucz8ubGVuZ3RoKSB7XG4gICAgICBsZXQgbWF0Y2hlZENvbGxlY3Rpb247XG5cbiAgICAgIC8vIElmIGl0J3Mgbm90IGEgbmV3IHF1ZXJ5LCB0cnkgdG8gZmluZCB0aGUgZXhpc3RpbmcgY29sbGVjdGlvbiB3aXRoIHRoZSBtZXNzYWdlIElEXG4gICAgICBpZiAoIWlzTmV3UXVlcnkgJiYgbWVzc2FnZUlkKSB7XG4gICAgICAgIG1hdGNoZWRDb2xsZWN0aW9uID0gdGhpcy5jYXNlUXVlcmllc0NvbGxlY3Rpb25zLmZpbmQoKGNvbGxlY3Rpb24pID0+XG4gICAgICAgICAgY29sbGVjdGlvbi5jYXNlTWVzc2FnZXMuc29tZSgobWVzc2FnZSkgPT4gbWVzc2FnZS52YWx1ZS5pZCA9PT0gbWVzc2FnZUlkKVxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBpZiAobWF0Y2hlZENvbGxlY3Rpb24pIHtcbiAgICAgICAgLy8gQXBwZW5kIHRoZSBuZXcgY2FzZSBtZXNzYWdlIHRvIHRoZSBtYXRjaGVkIGNvbGxlY3Rpb24ncyBjYXNlTWVzc2FnZXNcbiAgICAgICAgbWF0Y2hlZENvbGxlY3Rpb24uY2FzZU1lc3NhZ2VzLnB1c2goe1xuICAgICAgICAgIGlkOiBudWxsLFxuICAgICAgICAgIHZhbHVlOiBjYXNlTWVzc2FnZVxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBBZGQgdGhlIG1hdGNoZWQgY29sbGVjdGlvbiB0byBuZXdRdWVyeURhdGFcbiAgICAgICAgbmV3UXVlcnlEYXRhW3RoaXMuZmllbGRJZF0gPSB7XG4gICAgICAgICAgLi4ubWF0Y2hlZENvbGxlY3Rpb24sIC8vIEtlZXAgZXhpc3RpbmcgZGF0YSBpbnRhY3RcbiAgICAgICAgICBjYXNlTWVzc2FnZXM6IFsuLi5tYXRjaGVkQ29sbGVjdGlvbi5jYXNlTWVzc2FnZXNdIC8vIEFwcGVuZCB0aGUgdXBkYXRlZCBtZXNzYWdlcyBhcnJheVxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gVXNlIHBhcnR5TmFtZSBmcm9tIHRoZSBmaXJzdCBjb2xsZWN0aW9uIChhc3N1bXB0aW9uOiBhbGwgc2hhcmUgdGhlIHNhbWUgcGFydHkpXG4gICAgICAgIGNvbnN0IG9yaWdpbmFsUGFydHlOYW1lID0gdGhpcy5jYXNlUXVlcmllc0NvbGxlY3Rpb25zWzBdLnBhcnR5TmFtZTtcblxuICAgICAgICAvLyBJZiBubyBjb2xsZWN0aW9uIG1hdGNoZXMsIG9yIGl0J3MgYSBuZXcgcXVlcnlcbiAgICAgICAgbmV3UXVlcnlEYXRhW3RoaXMuZmllbGRJZF0gPSB7XG4gICAgICAgICAgcGFydHlOYW1lOiBvcmlnaW5hbFBhcnR5TmFtZSxcbiAgICAgICAgICByb2xlT25DYXNlOiAnJywgLy8gTm90IHJldHVybmVkIGJ5IENDRFxuICAgICAgICAgIGNhc2VNZXNzYWdlczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBpZDogbnVsbCxcbiAgICAgICAgICAgICAgdmFsdWU6IGNhc2VNZXNzYWdlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgXVxuICAgICAgICB9O1xuXG4gICAgICAgIC8vIElmIGNhc2VRdWVyaWVzQ29sbGVjdGlvbnMgaXMgbm90IGVtcHR5LCBhcHBlbmQgaXRzIGRhdGFcbiAgICAgICAgbmV3UXVlcnlEYXRhW3RoaXMuZmllbGRJZF0uY2FzZU1lc3NhZ2VzLnB1c2goXG4gICAgICAgICAgLi4udGhpcy5jYXNlUXVlcmllc0NvbGxlY3Rpb25zLmZsYXRNYXAoKGNvbGxlY3Rpb24pID0+IGNvbGxlY3Rpb24uY2FzZU1lc3NhZ2VzKVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBJZiB0aGVyZSBhcmUgbm8gZXhpc3RpbmcgY29sbGVjdGlvbnMsIGNyZWF0ZSBhIG5ldyBvbmUgKGUuZy4sIGZvciBuZXcgcXVlcmllcylcbiAgICAgIG5ld1F1ZXJ5RGF0YVt0aGlzLmZpZWxkSWRdID0ge1xuICAgICAgICBwYXJ0eU5hbWU6IGN1cnJlbnRVc2VyRGV0YWlscz8ubmFtZSB8fCBgJHtjdXJyZW50VXNlckRldGFpbHM/LmZvcmVuYW1lfSAke2N1cnJlbnRVc2VyRGV0YWlscz8uc3VybmFtZX1gLCAvLyBOb3QgcmV0dXJuZWQgYnkgQ0NEXG4gICAgICAgIHJvbGVPbkNhc2U6ICcnLCAvLyBOb3QgcmV0dXJuZWQgYnkgQ0NEXG4gICAgICAgIGNhc2VNZXNzYWdlczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGlkOiBudWxsLFxuICAgICAgICAgICAgdmFsdWU6IGNhc2VNZXNzYWdlXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gbmV3UXVlcnlEYXRhO1xuICB9XG5cbiAgcHVibGljIHNldENhc2VRdWVyaWVzQ29sbGVjdGlvbkRhdGEoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZXZlbnREYXRhPy5jYXNlX2ZpZWxkcz8ubGVuZ3RoKSB7XG4gICAgICAvLyBXb3JrYXJvdW5kIGZvciBtdWx0aXBsZSBxbUNhc2VRdWVyaWVzQ29sbGVjdGlvbnMgdGhhdCBhcmUgbm90IHRvIGJlIGFwcGVhcmluZyBpbiB0aGUgZXZlbnREYXRhXG4gICAgICAvLyBDb3VudHMgbnVtYmVyIHFtQ2FzZVF1ZXJpZXNDb2xsZWN0aW9uc1xuICAgICAgY29uc3QgbnVtYmVyT2ZDYXNlUXVlcmllc0NvbGxlY3Rpb25zID0gdGhpcy5ldmVudERhdGE/LmNhc2VfZmllbGRzPy5maWx0ZXIoXG4gICAgICAgIChjYXNlRmllbGQpID0+XG4gICAgICAgICAgY2FzZUZpZWxkLmZpZWxkX3R5cGUuaWQgPT09IHRoaXMuQ0FTRV9RVUVSSUVTX0NPTExFQ1RJT05fSUQgJiZcbiAgICAgICAgICBjYXNlRmllbGQuZmllbGRfdHlwZS50eXBlID09PSB0aGlzLkZJRUxEX1RZUEVfQ09NUExFWCAmJiBjYXNlRmllbGQuZGlzcGxheV9jb250ZXh0ICE9PSB0aGlzLkRJU1BMQVlfQ09OVEVYVF9SRUFET05MWVxuICAgICAgKT8ubGVuZ3RoIHx8IDA7XG5cbiAgICAgIHRoaXMuY2FzZVF1ZXJpZXNDb2xsZWN0aW9ucyA9IHRoaXMuZXZlbnREYXRhLmNhc2VfZmllbGRzLnJlZHVjZSgoYWNjLCBjYXNlRmllbGQpID0+IHtcbiAgICAgICAgLy8gRXh0cmFjdCB0aGUgSUQgYmFzZWQgb24gY29uZGl0aW9ucywgdXBkYXRpbmcgdGhpcy5maWVsZElkIGR5bmFtaWNhbGx5XG4gICAgICAgIHRoaXMuZXh0cmFjdENhc2VRdWVyeUlkKGNhc2VGaWVsZCwgbnVtYmVyT2ZDYXNlUXVlcmllc0NvbGxlY3Rpb25zKTtcblxuICAgICAgICBjb25zdCBleHRyYWN0ZWRDYXNlUXVlcmllc0Zyb21DYXNlRmllbGQgPSBRdWVyeU1hbmFnZW1lbnRVdGlscy5leHRyYWN0Q2FzZVF1ZXJpZXNGcm9tQ2FzZUZpZWxkKGNhc2VGaWVsZCk7XG4gICAgICAgIGlmIChleHRyYWN0ZWRDYXNlUXVlcmllc0Zyb21DYXNlRmllbGQgJiYgdHlwZW9mIGV4dHJhY3RlZENhc2VRdWVyaWVzRnJvbUNhc2VGaWVsZCA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICBhY2MucHVzaChleHRyYWN0ZWRDYXNlUXVlcmllc0Zyb21DYXNlRmllbGQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgICB9LCBbXSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBleHRyYWN0Q2FzZVF1ZXJ5SWQoZGF0YTogQ2FzZUZpZWxkLCBjb3VudDogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3QgeyBpZCwgdmFsdWUgfSA9IGRhdGE7XG4gICAgY29uc3QgbWVzc2FnZUlkID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXMuZGF0YWlkO1xuXG4gICAgLy8gQ2hlY2sgaWYgdGhlIGZpZWxkX3R5cGUgbWF0Y2hlcyBDYXNlUXVlcmllc0NvbGxlY3Rpb24gYW5kIHR5cGUgaXMgQ29tcGxleFxuICAgIGlmIChkYXRhLmZpZWxkX3R5cGUuaWQgPT09IHRoaXMuQ0FTRV9RVUVSSUVTX0NPTExFQ1RJT05fSUQgJiYgZGF0YS5maWVsZF90eXBlLnR5cGUgPT09IHRoaXMuRklFTERfVFlQRV9DT01QTEVYKSB7XG4gICAgICBpZiAodGhpcy5pc05ld1F1ZXJ5Q29udGV4dChkYXRhKSkge1xuICAgICAgICAvLyBJZiB0aGVyZSBpcyBtb3JlIHRoYW4gb25lIHFtQ2FzZVF1ZXJpZXNDb2xsZWN0aW9uLCBwaWNrIHRoZSBvbmUgd2l0aCB0aGUgbG93ZXN0IG9yZGVyXG4gICAgICAgIGlmIChjb3VudCA+IDEpIHtcbiAgICAgICAgICBpZiAoIXRoaXMuaGFuZGxlTXVsdGlwbGVDb2xsZWN0aW9ucygpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIFNldCB0aGUgZmllbGQgSUQgZHluYW1pY2FsbHkgYmFzZWQgb24gdGhlIGV4dHJhY3RlZCBkYXRhXG4gICAgICAgICAgdGhpcy5maWVsZElkID0gaWQ7IC8vIFN0b3JlIHRoZSBJRCBmb3IgdXNlIGluIGdlbmVyYXRpbmcgbmV3UXVlcnlEYXRhXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gSWYgbWVzc2FnZUlkIGlzIHByZXNlbnQsIGZpbmQgdGhlIGNvcnJlc3BvbmRpbmcgY2FzZSBtZXNzYWdlXG4gICAgICB0aGlzLnNldE1lc3NhZ2VGaWVsZElkKG1lc3NhZ2VJZCwgdmFsdWUsIGlkKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldE1lc3NhZ2VGaWVsZElkKG1lc3NhZ2VJZCwgdmFsdWUsIGlkOiBzdHJpbmcpIHtcbiAgICBpZiAobWVzc2FnZUlkICYmIHZhbHVlPy5jYXNlTWVzc2FnZXMpIHtcbiAgICAgIC8vIElmIGEgbWF0Y2hpbmcgbWVzc2FnZSBpcyBmb3VuZCwgc2V0IHRoZSBmaWVsZElkIHRvIHRoZSBjb3JyZXNwb25kaW5nIGlkXG4gICAgICBjb25zdCBtYXRjaGVkTWVzc2FnZSA9IHZhbHVlPy5jYXNlTWVzc2FnZXM/LmZpbmQoKG1lc3NhZ2UpID0+IG1lc3NhZ2UudmFsdWUuaWQgPT09IG1lc3NhZ2VJZCk7XG4gICAgICBpZiAobWF0Y2hlZE1lc3NhZ2UpIHtcbiAgICAgICAgdGhpcy5maWVsZElkID0gaWQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpc05ld1F1ZXJ5Q29udGV4dChkYXRhOiBDYXNlRmllbGQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5xdWVyeUNyZWF0ZUNvbnRleHQgPT09IFF1ZXJ5Q3JlYXRlQ29udGV4dC5ORVdfUVVFUlkgJiYgZGF0YS5kaXNwbGF5X2NvbnRleHQgIT09IHRoaXMuRElTUExBWV9DT05URVhUX1JFQURPTkxZO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVNdWx0aXBsZUNvbGxlY3Rpb25zKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGp1cmlzZGljdGlvbklkID0gdGhpcy5jYXNlRGV0YWlscz8uY2FzZV90eXBlPy5qdXJpc2RpY3Rpb24/LmlkO1xuXG4gICAgaWYgKCFqdXJpc2RpY3Rpb25JZCkge1xuICAgICAgY29uc29sZS5lcnJvcignSnVyaXNkaWN0aW9uIElEIGlzIG1pc3NpbmcuJyk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZ2V0Q29sbGVjdGlvblNlbGVjdGlvbk1ldGhvZChqdXJpc2RpY3Rpb25JZCkgPT09IHRoaXMuUU1fU0VMRUNUX0ZJUlNUX0NPTExFQ1RJT04pIHtcbiAgICAgIC8vIFBpY2sgdGhlIGNvbGxlY3Rpb24gd2l0aCB0aGUgbG93ZXN0IG9yZGVyXG4gICAgICB0aGlzLmZpZWxkSWQgPSB0aGlzLmdldENhc2VRdWVyaWVzQ29sbGVjdGlvbkZpZWxkT3JkZXJGcm9tV2l6YXJkUGFnZXMoKT8uaWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIERpc3BsYXkgRXJyb3IsIGZvciBub3csIHVudGlsIEVYVUktMjY0NCBpcyBpbXBsZW1lbnRlZFxuICAgICAgY29uc29sZS5lcnJvcihgRXJyb3I6IE11bHRpcGxlIENhc2VRdWVyaWVzQ29sbGVjdGlvbnMgYXJlIG5vdCBzdXBwb3J0ZWQgeWV0IGZvciB0aGUgJHtqdXJpc2RpY3Rpb25JZH0ganVyaXNkaWN0aW9uYCk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBwcml2YXRlIGdldENhc2VRdWVyaWVzQ29sbGVjdGlvbkZpZWxkT3JkZXJGcm9tV2l6YXJkUGFnZXMoKTogQ2FzZUZpZWxkIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBjYW5kaWRhdGVGaWVsZHMgPSB0aGlzLmV2ZW50RGF0YT8uY2FzZV9maWVsZHM/LmZpbHRlcihcbiAgICAgIChmaWVsZCkgPT5cbiAgICAgICAgZmllbGQuZmllbGRfdHlwZS5pZCA9PT0gdGhpcy5DQVNFX1FVRVJJRVNfQ09MTEVDVElPTl9JRCAmJlxuICAgICAgICBmaWVsZC5maWVsZF90eXBlLnR5cGUgPT09IHRoaXMuRklFTERfVFlQRV9DT01QTEVYICYmXG4gICAgICAgIGZpZWxkLmRpc3BsYXlfY29udGV4dCAhPT0gdGhpcy5ESVNQTEFZX0NPTlRFWFRfUkVBRE9OTFlcbiAgICApO1xuXG4gICAgaWYgKCFjYW5kaWRhdGVGaWVsZHM/Lmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBjb25zdCBmaXJzdFBhZ2VGaWVsZHMgPSB0aGlzLmV2ZW50RGF0YT8ud2l6YXJkX3BhZ2VzPy5bMF0/LndpemFyZF9wYWdlX2ZpZWxkcztcblxuICAgIGlmICghZmlyc3RQYWdlRmllbGRzKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHJldHVybiBjYW5kaWRhdGVGaWVsZHNcbiAgICAgIC5tYXAoKGZpZWxkKSA9PiB7XG4gICAgICAgIGNvbnN0IHdpemFyZEZpZWxkID0gZmlyc3RQYWdlRmllbGRzLmZpbmQoKGYpID0+IGYuY2FzZV9maWVsZF9pZCA9PT0gZmllbGQuaWQpO1xuICAgICAgICByZXR1cm4geyBmaWVsZCwgb3JkZXI6IHdpemFyZEZpZWxkPy5vcmRlciA/PyBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUiB9O1xuICAgICAgfSlcbiAgICAgIC5zb3J0KChhLCBiKSA9PiBhLm9yZGVyIC0gYi5vcmRlcilbMF0/LmZpZWxkO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDb2xsZWN0aW9uU2VsZWN0aW9uTWV0aG9kKGp1cmlzZGljdGlvbjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4ganVyaXNkaWN0aW9uLnRvVXBwZXJDYXNlKCkgPT09IHRoaXMuQ0lWSUxfSlVSSVNESUNUSU9OID8gdGhpcy5RTV9TRUxFQ1RfRklSU1RfQ09MTEVDVElPTiA6IHRoaXMuUU1fQ09MTEVDVElPTl9QUk9NUFQ7XG4gIH1cblxuICBwcml2YXRlIGdldERvY3VtZW50QXR0YWNobWVudHMoKTogdm9pZCB7XG4gICAgY29uc3QgYXR0YWNobWVudHNWYWx1ZSA9IHRoaXMuZm9ybUdyb3VwLmdldCgnYXR0YWNobWVudHMnKS52YWx1ZTtcbiAgICBpZiAoYXR0YWNobWVudHNWYWx1ZSAmJiBhdHRhY2htZW50c1ZhbHVlLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGRvY3VtZW50cyA9IGF0dGFjaG1lbnRzVmFsdWU7XG4gICAgICB0aGlzLmF0dGFjaG1lbnRzID0gZG9jdW1lbnRzLm1hcChRdWVyeU1hbmFnZW1lbnRVdGlscy5kb2N1bWVudFRvQ29sbGVjdGlvbkZvcm1Eb2N1bWVudCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGlzU2VydmljZUVycm9yRm91bmQoZXJyb3I6IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIShlcnJvcj8uY2FsbGJhY2tFcnJvcnM/Lmxlbmd0aCk7XG4gIH1cbn1cblxuIiwiPGRpdiBjbGFzcz1cImdvdnVrLWdyaWQtcm93XCIgKm5nSWY9XCJyZWFkeVRvU3VibWl0XCI+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+XG4gICAgICA8L2Rpdj5cbiAgICA8L2RsPlxuXG4gICAgPGJyPlxuXG4gICAgPGRpdj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJnb3Z1ay1idXR0b24gZ292dWstYnV0dG9uLS1zZWNvbmRhcnkgZ292dWstIS1tYXJnaW4tcmlnaHQtM1wiIGRhdGEtbW9kdWxlPVwiZ292dWstYnV0dG9uXCJcbiAgICAgICAgKGNsaWNrKT1cImdvQmFjaygpXCI+XG4gICAgICAgIHt7ICdQcmV2aW91cycgfCBycHhUcmFuc2xhdGUgfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImdvdnVrLWJ1dHRvblwiIGRhdGEtbW9kdWxlPVwiZ292dWstYnV0dG9uXCIgdHlwZT1cInN1Ym1pdFwiIChjbGljayk9XCJzdWJtaXQoKVwiPlxuICAgICAgICB7eyAnU3VibWl0JyB8IHJweFRyYW5zbGF0ZSB9fVxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxjY2QtcXVlcnktZXZlbnQtY29tcGxldGlvbiBbZXZlbnRDb21wbGV0aW9uUGFyYW1zXT1cImV2ZW50Q29tcGxldGlvblBhcmFtc1wiPiAgICBcbiAgPC9jY2QtcXVlcnktZXZlbnQtY29tcGxldGlvbj5cbjwvZGl2PlxuIl19
|