@alauda-fe/storage 0.0.10 → 0.0.12
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/components/pvc-form/component.mjs +164 -136
- package/esm2022/lib/components/storage-feature-tags/component.mjs +19 -21
- package/esm2022/lib/components/storageclass-select/component.mjs +31 -16
- package/esm2022/lib/services/common-util.service.mjs +13 -25
- package/esm2022/lib/services/pvc-util.service.mjs +4 -4
- package/esm2022/lib/types/commons.mjs +2 -1
- package/esm2022/lib/types/k8s.mjs +1 -1
- package/esm2022/lib/utils/constants.mjs +2 -1
- package/esm2022/lib/utils/util.mjs +9 -10
- package/lib/components/pvc-form/component.d.ts +6 -0
- package/lib/components/storage-feature-tags/component.d.ts +1 -1
- package/lib/services/common-util.service.d.ts +6 -4
- package/lib/types/commons.d.ts +2 -1
- package/lib/types/k8s.d.ts +56 -0
- package/lib/utils/constants.d.ts +1 -0
- package/lib/utils/util.d.ts +3 -3
- package/package.json +1 -1
|
@@ -106,6 +106,15 @@ function PersistentVolumeClaimFormComponent_aui_form_item_4_Template(rf, ctx) {
|
|
|
106
106
|
i0.ɵɵadvance();
|
|
107
107
|
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(10, 12, "storage.static_match"), " ");
|
|
108
108
|
} }
|
|
109
|
+
function PersistentVolumeClaimFormComponent_ng_container_6_aui_form_item_1_div_9_Template(rf, ctx) { if (rf & 1) {
|
|
110
|
+
i0.ɵɵelementStart(0, "div", 22);
|
|
111
|
+
i0.ɵɵtext(1);
|
|
112
|
+
i0.ɵɵpipe(2, "translate");
|
|
113
|
+
i0.ɵɵelementEnd();
|
|
114
|
+
} if (rf & 2) {
|
|
115
|
+
i0.ɵɵadvance();
|
|
116
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 1, "storage.restore_pvc_storageclass_hint"), " ");
|
|
117
|
+
} }
|
|
109
118
|
function PersistentVolumeClaimFormComponent_ng_container_6_aui_form_item_1_Template(rf, ctx) { if (rf & 1) {
|
|
110
119
|
const _r7 = i0.ɵɵgetCurrentView();
|
|
111
120
|
i0.ɵɵelementStart(0, "aui-form-item", 18)(1, "label", 13);
|
|
@@ -119,29 +128,32 @@ function PersistentVolumeClaimFormComponent_ng_container_6_aui_form_item_1_Templ
|
|
|
119
128
|
i0.ɵɵlistener("storageClassChange", function PersistentVolumeClaimFormComponent_ng_container_6_aui_form_item_1_Template_acl_storageclass_select_storageClassChange_4_listener($event) { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.storageclassChange($event)); });
|
|
120
129
|
i0.ɵɵelementEnd();
|
|
121
130
|
i0.ɵɵelement(8, "acl-errors-mapper", 20);
|
|
131
|
+
i0.ɵɵtemplate(9, PersistentVolumeClaimFormComponent_ng_container_6_aui_form_item_1_div_9_Template, 3, 3, "div", 21);
|
|
122
132
|
i0.ɵɵelementEnd();
|
|
123
133
|
} if (rf & 2) {
|
|
124
134
|
const storageClassName_r8 = i0.ɵɵreference(5);
|
|
125
135
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
126
136
|
i0.ɵɵadvance(2);
|
|
127
|
-
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3,
|
|
137
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 8, "storageclass"));
|
|
128
138
|
i0.ɵɵadvance(2);
|
|
129
|
-
i0.ɵɵproperty("storageClasses", i0.ɵɵpipeBind1(6,
|
|
139
|
+
i0.ɵɵproperty("storageClasses", i0.ɵɵpipeBind1(6, 10, ctx_r1.storageClassList$))("volumeSnapshotClasses", i0.ɵɵpipeBind1(7, 12, ctx_r1.volumeSnapshotClassList$))("isFromSnapshot", ctx_r1.isFromSnapshotAndSourcePVCExist)("selectDefault", ctx_r1.selectDefault);
|
|
130
140
|
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.model.storageClassName);
|
|
131
141
|
i0.ɵɵadvance(4);
|
|
132
142
|
i0.ɵɵproperty("errors", storageClassName_r8.errors);
|
|
143
|
+
i0.ɵɵadvance();
|
|
144
|
+
i0.ɵɵproperty("ngIf", ctx_r1.showStorageClassHintWhenFromSnapshot);
|
|
133
145
|
} }
|
|
134
146
|
function PersistentVolumeClaimFormComponent_ng_container_6_Template(rf, ctx) { if (rf & 1) {
|
|
135
147
|
i0.ɵɵelementContainerStart(0);
|
|
136
|
-
i0.ɵɵtemplate(1, PersistentVolumeClaimFormComponent_ng_container_6_aui_form_item_1_Template,
|
|
148
|
+
i0.ɵɵtemplate(1, PersistentVolumeClaimFormComponent_ng_container_6_aui_form_item_1_Template, 10, 14, "aui-form-item", 11);
|
|
137
149
|
i0.ɵɵelementContainerEnd();
|
|
138
150
|
} if (rf & 2) {
|
|
139
151
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
140
152
|
i0.ɵɵadvance();
|
|
141
153
|
i0.ɵɵproperty("ngIf", ctx_r1.createMethod !== ctx_r1.PvcStorageClassCreateType.STATIC);
|
|
142
154
|
} }
|
|
143
|
-
function
|
|
144
|
-
i0.ɵɵelementStart(0, "aui-radio-button",
|
|
155
|
+
function PersistentVolumeClaimFormComponent_aui_form_item_8_aui_radio_button_5_Template(rf, ctx) { if (rf & 1) {
|
|
156
|
+
i0.ɵɵelementStart(0, "aui-radio-button", 26);
|
|
145
157
|
i0.ɵɵpipe(1, "translate");
|
|
146
158
|
i0.ɵɵpipe(2, "pure");
|
|
147
159
|
i0.ɵɵpipe(3, "pure");
|
|
@@ -151,12 +163,85 @@ function PersistentVolumeClaimFormComponent_aui_form_item_8_aui_radio_button_6_T
|
|
|
151
163
|
} if (rf & 2) {
|
|
152
164
|
const mode_r10 = ctx.$implicit;
|
|
153
165
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
154
|
-
i0.ɵɵproperty("auiTooltip", i0.ɵɵpipeBind1(1, 5, "storage.
|
|
166
|
+
i0.ɵɵproperty("auiTooltip", i0.ɵɵpipeBind1(1, 5, "storage.storage_forbid_select_volume_mode"))("auiTooltipDisabled", !i0.ɵɵpipeBind3(2, 7, mode_r10, ctx_r1.storageCommonUtil.isVolumeModeDisabled, ctx_r1.selectedStorageSelectOption))("disabled", i0.ɵɵpipeBind3(3, 11, mode_r10, ctx_r1.storageCommonUtil.isVolumeModeDisabled, ctx_r1.selectedStorageSelectOption))("value", mode_r10);
|
|
155
167
|
i0.ɵɵadvance(4);
|
|
156
|
-
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(5, 15, "storage." + ctx_r1.
|
|
168
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(5, 15, "storage." + ctx_r1.VolumeModeTranslateKey[mode_r10]), " ");
|
|
157
169
|
} }
|
|
158
|
-
function
|
|
159
|
-
i0.ɵɵelementStart(0, "
|
|
170
|
+
function PersistentVolumeClaimFormComponent_aui_form_item_8_div_6_Template(rf, ctx) { if (rf & 1) {
|
|
171
|
+
i0.ɵɵelementStart(0, "div", 27);
|
|
172
|
+
i0.ɵɵelement(1, "aui-icon", 28);
|
|
173
|
+
i0.ɵɵelementEnd();
|
|
174
|
+
} if (rf & 2) {
|
|
175
|
+
i0.ɵɵnextContext();
|
|
176
|
+
const volumeModeTip_r11 = i0.ɵɵreference(8);
|
|
177
|
+
i0.ɵɵadvance();
|
|
178
|
+
i0.ɵɵproperty("auiTooltip", volumeModeTip_r11)("auiTooltipPosition", "top center");
|
|
179
|
+
} }
|
|
180
|
+
function PersistentVolumeClaimFormComponent_aui_form_item_8_ng_template_7_Template(rf, ctx) { if (rf & 1) {
|
|
181
|
+
i0.ɵɵelementStart(0, "ul", 29)(1, "li");
|
|
182
|
+
i0.ɵɵtext(2);
|
|
183
|
+
i0.ɵɵpipe(3, "translate");
|
|
184
|
+
i0.ɵɵelementEnd();
|
|
185
|
+
i0.ɵɵelementStart(4, "li");
|
|
186
|
+
i0.ɵɵtext(5);
|
|
187
|
+
i0.ɵɵpipe(6, "translate");
|
|
188
|
+
i0.ɵɵelementEnd()();
|
|
189
|
+
} if (rf & 2) {
|
|
190
|
+
i0.ɵɵadvance(2);
|
|
191
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 2, "storage.volume_mode_file_system_hint"));
|
|
192
|
+
i0.ɵɵadvance(3);
|
|
193
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(6, 4, "storage.volume_mode_block_device_hint"));
|
|
194
|
+
} }
|
|
195
|
+
function PersistentVolumeClaimFormComponent_aui_form_item_8_ng_template_9_Template(rf, ctx) { if (rf & 1) {
|
|
196
|
+
i0.ɵɵtext(0);
|
|
197
|
+
i0.ɵɵpipe(1, "translate");
|
|
198
|
+
} if (rf & 2) {
|
|
199
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
200
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(1, 1, ctx_r1.model.volumeMode === "Filesystem" ? "storage.file_system" : "storage.block_device"), " ");
|
|
201
|
+
} }
|
|
202
|
+
function PersistentVolumeClaimFormComponent_aui_form_item_8_Template(rf, ctx) { if (rf & 1) {
|
|
203
|
+
const _r9 = i0.ɵɵgetCurrentView();
|
|
204
|
+
i0.ɵɵelementStart(0, "aui-form-item")(1, "label", 13);
|
|
205
|
+
i0.ɵɵtext(2);
|
|
206
|
+
i0.ɵɵpipe(3, "translate");
|
|
207
|
+
i0.ɵɵelementEnd();
|
|
208
|
+
i0.ɵɵelementStart(4, "aui-radio-group", 23);
|
|
209
|
+
i0.ɵɵtwoWayListener("ngModelChange", function PersistentVolumeClaimFormComponent_aui_form_item_8_Template_aui_radio_group_ngModelChange_4_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.model.volumeMode, $event) || (ctx_r1.model.volumeMode = $event); return i0.ɵɵresetView($event); });
|
|
210
|
+
i0.ɵɵlistener("ngModelChange", function PersistentVolumeClaimFormComponent_aui_form_item_8_Template_aui_radio_group_ngModelChange_4_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.volumeModeChange($event)); });
|
|
211
|
+
i0.ɵɵtemplate(5, PersistentVolumeClaimFormComponent_aui_form_item_8_aui_radio_button_5_Template, 6, 17, "aui-radio-button", 24);
|
|
212
|
+
i0.ɵɵelementEnd();
|
|
213
|
+
i0.ɵɵtemplate(6, PersistentVolumeClaimFormComponent_aui_form_item_8_div_6_Template, 2, 2, "div", 25)(7, PersistentVolumeClaimFormComponent_aui_form_item_8_ng_template_7_Template, 7, 6, "ng-template", null, 3, i0.ɵɵtemplateRefExtractor)(9, PersistentVolumeClaimFormComponent_aui_form_item_8_ng_template_9_Template, 2, 3, "ng-template", null, 4, i0.ɵɵtemplateRefExtractor);
|
|
214
|
+
i0.ɵɵelementEnd();
|
|
215
|
+
} if (rf & 2) {
|
|
216
|
+
const volumeModeTmpl_r12 = i0.ɵɵreference(10);
|
|
217
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
218
|
+
i0.ɵɵadvance(2);
|
|
219
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 6, "storage.volume_mode"));
|
|
220
|
+
i0.ɵɵadvance(2);
|
|
221
|
+
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.model.volumeMode);
|
|
222
|
+
i0.ɵɵproperty("aclReadonlyField", ctx_r1.isFromSnapshotAndSourcePVCExist || !!ctx_r1.volumeMode)("aclReadonlyFieldTemplate", volumeModeTmpl_r12);
|
|
223
|
+
i0.ɵɵadvance();
|
|
224
|
+
i0.ɵɵproperty("ngForOf", ctx_r1.volumeModes);
|
|
225
|
+
i0.ɵɵadvance();
|
|
226
|
+
i0.ɵɵproperty("ngIf", !ctx_r1.volumeMode);
|
|
227
|
+
} }
|
|
228
|
+
function PersistentVolumeClaimFormComponent_aui_form_item_10_aui_radio_button_6_Template(rf, ctx) { if (rf & 1) {
|
|
229
|
+
i0.ɵɵelementStart(0, "aui-radio-button", 32);
|
|
230
|
+
i0.ɵɵpipe(1, "translate");
|
|
231
|
+
i0.ɵɵpipe(2, "pure");
|
|
232
|
+
i0.ɵɵpipe(3, "pure");
|
|
233
|
+
i0.ɵɵtext(4);
|
|
234
|
+
i0.ɵɵpipe(5, "translate");
|
|
235
|
+
i0.ɵɵelementEnd();
|
|
236
|
+
} if (rf & 2) {
|
|
237
|
+
const mode_r14 = ctx.$implicit;
|
|
238
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
239
|
+
i0.ɵɵproperty("auiTooltip", i0.ɵɵpipeBind1(1, 5, "storage.storage_forbid_select_access_mode"))("auiTooltipDisabled", !i0.ɵɵpipeBind4(2, 7, mode_r14, ctx_r1.storageCommonUtil.isAccessModeDisabled, ctx_r1.selectedStorageSelectOption, ctx_r1.model.volumeMode === "Block"))("value", mode_r14)("disabled", i0.ɵɵpipeBind4(3, 12, mode_r14, ctx_r1.storageCommonUtil.isAccessModeDisabled, ctx_r1.selectedStorageSelectOption, ctx_r1.model.volumeMode === "Block"));
|
|
240
|
+
i0.ɵɵadvance(4);
|
|
241
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(5, 17, "storage." + ctx_r1.AccessModeTranslateKey[mode_r14]), " ");
|
|
242
|
+
} }
|
|
243
|
+
function PersistentVolumeClaimFormComponent_aui_form_item_10_ng_template_10_Template(rf, ctx) { if (rf & 1) {
|
|
244
|
+
i0.ɵɵelementStart(0, "ul", 29)(1, "li");
|
|
160
245
|
i0.ɵɵtext(2);
|
|
161
246
|
i0.ɵɵpipe(3, "translate");
|
|
162
247
|
i0.ɵɵelementEnd();
|
|
@@ -176,25 +261,25 @@ function PersistentVolumeClaimFormComponent_aui_form_item_8_ng_template_10_Templ
|
|
|
176
261
|
i0.ɵɵadvance(3);
|
|
177
262
|
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(9, 7, "storage.access_mode_rwx"));
|
|
178
263
|
} }
|
|
179
|
-
function
|
|
180
|
-
const
|
|
264
|
+
function PersistentVolumeClaimFormComponent_aui_form_item_10_Template(rf, ctx) { if (rf & 1) {
|
|
265
|
+
const _r13 = i0.ɵɵgetCurrentView();
|
|
181
266
|
i0.ɵɵelementStart(0, "aui-form-item")(1, "label", 13);
|
|
182
267
|
i0.ɵɵtext(2);
|
|
183
268
|
i0.ɵɵpipe(3, "translate");
|
|
184
269
|
i0.ɵɵelementEnd();
|
|
185
|
-
i0.ɵɵelementStart(4, "aui-radio-group",
|
|
186
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
187
|
-
i0.ɵɵtemplate(6,
|
|
270
|
+
i0.ɵɵelementStart(4, "aui-radio-group", 30, 5);
|
|
271
|
+
i0.ɵɵtwoWayListener("ngModelChange", function PersistentVolumeClaimFormComponent_aui_form_item_10_Template_aui_radio_group_ngModelChange_4_listener($event) { i0.ɵɵrestoreView(_r13); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.model.accessModes, $event) || (ctx_r1.model.accessModes = $event); return i0.ɵɵresetView($event); });
|
|
272
|
+
i0.ɵɵtemplate(6, PersistentVolumeClaimFormComponent_aui_form_item_10_aui_radio_button_6_Template, 6, 19, "aui-radio-button", 31);
|
|
188
273
|
i0.ɵɵelementEnd();
|
|
189
|
-
i0.ɵɵelementStart(7, "div",
|
|
190
|
-
i0.ɵɵelement(8, "aui-icon",
|
|
274
|
+
i0.ɵɵelementStart(7, "div", 27);
|
|
275
|
+
i0.ɵɵelement(8, "aui-icon", 28);
|
|
191
276
|
i0.ɵɵelementEnd();
|
|
192
277
|
i0.ɵɵelement(9, "acl-errors-mapper", 20);
|
|
193
|
-
i0.ɵɵtemplate(10,
|
|
278
|
+
i0.ɵɵtemplate(10, PersistentVolumeClaimFormComponent_aui_form_item_10_ng_template_10_Template, 10, 9, "ng-template", null, 6, i0.ɵɵtemplateRefExtractor);
|
|
194
279
|
i0.ɵɵelementEnd();
|
|
195
280
|
} if (rf & 2) {
|
|
196
|
-
const
|
|
197
|
-
const
|
|
281
|
+
const accessMode_r15 = i0.ɵɵreference(5);
|
|
282
|
+
const accessModeTip_r16 = i0.ɵɵreference(11);
|
|
198
283
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
199
284
|
i0.ɵɵadvance(2);
|
|
200
285
|
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 6, "storage.access_mode"));
|
|
@@ -203,25 +288,25 @@ function PersistentVolumeClaimFormComponent_aui_form_item_8_Template(rf, ctx) {
|
|
|
203
288
|
i0.ɵɵadvance(2);
|
|
204
289
|
i0.ɵɵproperty("ngForOf", ctx_r1.accessModes);
|
|
205
290
|
i0.ɵɵadvance(2);
|
|
206
|
-
i0.ɵɵproperty("auiTooltip",
|
|
291
|
+
i0.ɵɵproperty("auiTooltip", accessModeTip_r16)("auiTooltipPosition", "top center");
|
|
207
292
|
i0.ɵɵadvance();
|
|
208
|
-
i0.ɵɵproperty("errors",
|
|
293
|
+
i0.ɵɵproperty("errors", accessMode_r15.errors);
|
|
209
294
|
} }
|
|
210
|
-
function
|
|
211
|
-
i0.ɵɵelementStart(0, "aui-option",
|
|
295
|
+
function PersistentVolumeClaimFormComponent_aui_form_item_12_aui_select_6_aui_option_1_Template(rf, ctx) { if (rf & 1) {
|
|
296
|
+
i0.ɵɵelementStart(0, "aui-option", 37);
|
|
212
297
|
i0.ɵɵtext(1);
|
|
213
298
|
i0.ɵɵelementEnd();
|
|
214
299
|
} if (rf & 2) {
|
|
215
|
-
const
|
|
216
|
-
i0.ɵɵproperty("label",
|
|
300
|
+
const item_r19 = ctx.$implicit;
|
|
301
|
+
i0.ɵɵproperty("label", item_r19)("value", item_r19);
|
|
217
302
|
i0.ɵɵadvance();
|
|
218
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
303
|
+
i0.ɵɵtextInterpolate1(" ", item_r19, " ");
|
|
219
304
|
} }
|
|
220
|
-
function
|
|
221
|
-
const
|
|
222
|
-
i0.ɵɵelementStart(0, "aui-select",
|
|
223
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
224
|
-
i0.ɵɵtemplate(1,
|
|
305
|
+
function PersistentVolumeClaimFormComponent_aui_form_item_12_aui_select_6_Template(rf, ctx) { if (rf & 1) {
|
|
306
|
+
const _r18 = i0.ɵɵgetCurrentView();
|
|
307
|
+
i0.ɵɵelementStart(0, "aui-select", 35);
|
|
308
|
+
i0.ɵɵtwoWayListener("ngModelChange", function PersistentVolumeClaimFormComponent_aui_form_item_12_aui_select_6_Template_aui_select_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r18); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.unit, $event) || (ctx_r1.unit = $event); return i0.ɵɵresetView($event); });
|
|
309
|
+
i0.ɵɵtemplate(1, PersistentVolumeClaimFormComponent_aui_form_item_12_aui_select_6_aui_option_1_Template, 2, 3, "aui-option", 36);
|
|
225
310
|
i0.ɵɵelementEnd();
|
|
226
311
|
} if (rf & 2) {
|
|
227
312
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -229,119 +314,47 @@ function PersistentVolumeClaimFormComponent_aui_form_item_10_aui_select_6_Templa
|
|
|
229
314
|
i0.ɵɵadvance();
|
|
230
315
|
i0.ɵɵproperty("ngForOf", ctx_r1.UNITS);
|
|
231
316
|
} }
|
|
232
|
-
function
|
|
317
|
+
function PersistentVolumeClaimFormComponent_aui_form_item_12_ng_template_7_Template(rf, ctx) { if (rf & 1) {
|
|
233
318
|
i0.ɵɵtext(0);
|
|
234
319
|
} if (rf & 2) {
|
|
235
320
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
236
321
|
i0.ɵɵtextInterpolate1(" ", ctx_r1.model.storage, "Gi ");
|
|
237
322
|
} }
|
|
238
|
-
function
|
|
239
|
-
const
|
|
323
|
+
function PersistentVolumeClaimFormComponent_aui_form_item_12_Template(rf, ctx) { if (rf & 1) {
|
|
324
|
+
const _r17 = i0.ɵɵgetCurrentView();
|
|
240
325
|
i0.ɵɵelementStart(0, "aui-form-item", 18)(1, "label", 13);
|
|
241
326
|
i0.ɵɵtext(2);
|
|
242
327
|
i0.ɵɵpipe(3, "translate");
|
|
243
328
|
i0.ɵɵelementEnd();
|
|
244
|
-
i0.ɵɵelementStart(4, "input",
|
|
245
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
329
|
+
i0.ɵɵelementStart(4, "input", 33, 7);
|
|
330
|
+
i0.ɵɵtwoWayListener("ngModelChange", function PersistentVolumeClaimFormComponent_aui_form_item_12_Template_input_ngModelChange_4_listener($event) { i0.ɵɵrestoreView(_r17); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.model.storage, $event) || (ctx_r1.model.storage = $event); return i0.ɵɵresetView($event); });
|
|
246
331
|
i0.ɵɵelementEnd();
|
|
247
|
-
i0.ɵɵtemplate(6,
|
|
332
|
+
i0.ɵɵtemplate(6, PersistentVolumeClaimFormComponent_aui_form_item_12_aui_select_6_Template, 2, 2, "aui-select", 34)(7, PersistentVolumeClaimFormComponent_aui_form_item_12_ng_template_7_Template, 1, 1, "ng-template", null, 8, i0.ɵɵtemplateRefExtractor);
|
|
248
333
|
i0.ɵɵelement(9, "acl-errors-mapper", 15);
|
|
249
334
|
i0.ɵɵpipe(10, "translate");
|
|
250
335
|
i0.ɵɵelementEnd();
|
|
251
336
|
} if (rf & 2) {
|
|
252
|
-
const
|
|
253
|
-
const
|
|
337
|
+
const storage_r20 = i0.ɵɵreference(5);
|
|
338
|
+
const capacityTpl_r21 = i0.ɵɵreference(8);
|
|
254
339
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
255
340
|
i0.ɵɵadvance(2);
|
|
256
341
|
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 8, "storage.capacity"));
|
|
257
342
|
i0.ɵɵadvance(2);
|
|
258
343
|
i0.ɵɵproperty("pattern", ctx_r1.POSITIVE_INT_PATTERN.pattern);
|
|
259
344
|
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.model.storage);
|
|
260
|
-
i0.ɵɵproperty("aclReadonlyField", ctx_r1.isFromSnapshot)("aclReadonlyFieldTemplate",
|
|
345
|
+
i0.ɵɵproperty("aclReadonlyField", ctx_r1.isFromSnapshot)("aclReadonlyFieldTemplate", capacityTpl_r21);
|
|
261
346
|
i0.ɵɵadvance(2);
|
|
262
347
|
i0.ɵɵproperty("ngIf", !ctx_r1.isFromSnapshot);
|
|
263
348
|
i0.ɵɵadvance(3);
|
|
264
|
-
i0.ɵɵproperty("errors",
|
|
265
|
-
} }
|
|
266
|
-
function PersistentVolumeClaimFormComponent_aui_form_item_12_aui_radio_button_5_Template(rf, ctx) { if (rf & 1) {
|
|
267
|
-
i0.ɵɵelementStart(0, "aui-radio-button", 35);
|
|
268
|
-
i0.ɵɵpipe(1, "translate");
|
|
269
|
-
i0.ɵɵpipe(2, "pure");
|
|
270
|
-
i0.ɵɵpipe(3, "pure");
|
|
271
|
-
i0.ɵɵtext(4);
|
|
272
|
-
i0.ɵɵpipe(5, "translate");
|
|
273
|
-
i0.ɵɵelementEnd();
|
|
274
|
-
} if (rf & 2) {
|
|
275
|
-
const mode_r19 = ctx.$implicit;
|
|
276
|
-
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
277
|
-
i0.ɵɵproperty("auiTooltip", i0.ɵɵpipeBind1(1, 5, "storage.storage_forbid_select_volume_mode"))("auiTooltipDisabled", !i0.ɵɵpipeBind3(2, 7, mode_r19, ctx_r1.storageCommonUtil.isVolumeModeDisabled, ctx_r1.selectedStorageSelectOption))("disabled", i0.ɵɵpipeBind3(3, 11, mode_r19, ctx_r1.storageCommonUtil.isVolumeModeDisabled, ctx_r1.selectedStorageSelectOption))("value", mode_r19);
|
|
278
|
-
i0.ɵɵadvance(4);
|
|
279
|
-
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(5, 15, "storage." + ctx_r1.VolumeModeTranslateKey[mode_r19]), " ");
|
|
280
|
-
} }
|
|
281
|
-
function PersistentVolumeClaimFormComponent_aui_form_item_12_div_6_Template(rf, ctx) { if (rf & 1) {
|
|
282
|
-
i0.ɵɵelementStart(0, "div", 23);
|
|
283
|
-
i0.ɵɵelement(1, "aui-icon", 24);
|
|
284
|
-
i0.ɵɵelementEnd();
|
|
285
|
-
} if (rf & 2) {
|
|
286
|
-
i0.ɵɵnextContext();
|
|
287
|
-
const volumeModeTip_r20 = i0.ɵɵreference(8);
|
|
288
|
-
i0.ɵɵadvance();
|
|
289
|
-
i0.ɵɵproperty("auiTooltip", volumeModeTip_r20)("auiTooltipPosition", "top center");
|
|
290
|
-
} }
|
|
291
|
-
function PersistentVolumeClaimFormComponent_aui_form_item_12_ng_template_7_Template(rf, ctx) { if (rf & 1) {
|
|
292
|
-
i0.ɵɵelementStart(0, "ul", 26)(1, "li");
|
|
293
|
-
i0.ɵɵtext(2);
|
|
294
|
-
i0.ɵɵpipe(3, "translate");
|
|
295
|
-
i0.ɵɵelementEnd();
|
|
296
|
-
i0.ɵɵelementStart(4, "li");
|
|
297
|
-
i0.ɵɵtext(5);
|
|
298
|
-
i0.ɵɵpipe(6, "translate");
|
|
299
|
-
i0.ɵɵelementEnd()();
|
|
300
|
-
} if (rf & 2) {
|
|
301
|
-
i0.ɵɵadvance(2);
|
|
302
|
-
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 2, "storage.volume_mode_file_system_hint"));
|
|
303
|
-
i0.ɵɵadvance(3);
|
|
304
|
-
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(6, 4, "storage.volume_mode_block_device_hint"));
|
|
305
|
-
} }
|
|
306
|
-
function PersistentVolumeClaimFormComponent_aui_form_item_12_ng_template_9_Template(rf, ctx) { if (rf & 1) {
|
|
307
|
-
i0.ɵɵtext(0);
|
|
308
|
-
i0.ɵɵpipe(1, "translate");
|
|
309
|
-
} if (rf & 2) {
|
|
310
|
-
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
311
|
-
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(1, 1, ctx_r1.model.volumeMode === "Filesystem" ? "storage.file_system" : "storage.block_device"), " ");
|
|
312
|
-
} }
|
|
313
|
-
function PersistentVolumeClaimFormComponent_aui_form_item_12_Template(rf, ctx) { if (rf & 1) {
|
|
314
|
-
const _r18 = i0.ɵɵgetCurrentView();
|
|
315
|
-
i0.ɵɵelementStart(0, "aui-form-item")(1, "label", 13);
|
|
316
|
-
i0.ɵɵtext(2);
|
|
317
|
-
i0.ɵɵpipe(3, "translate");
|
|
318
|
-
i0.ɵɵelementEnd();
|
|
319
|
-
i0.ɵɵelementStart(4, "aui-radio-group", 32);
|
|
320
|
-
i0.ɵɵtwoWayListener("ngModelChange", function PersistentVolumeClaimFormComponent_aui_form_item_12_Template_aui_radio_group_ngModelChange_4_listener($event) { i0.ɵɵrestoreView(_r18); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.model.volumeMode, $event) || (ctx_r1.model.volumeMode = $event); return i0.ɵɵresetView($event); });
|
|
321
|
-
i0.ɵɵtemplate(5, PersistentVolumeClaimFormComponent_aui_form_item_12_aui_radio_button_5_Template, 6, 17, "aui-radio-button", 33);
|
|
322
|
-
i0.ɵɵelementEnd();
|
|
323
|
-
i0.ɵɵtemplate(6, PersistentVolumeClaimFormComponent_aui_form_item_12_div_6_Template, 2, 2, "div", 34)(7, PersistentVolumeClaimFormComponent_aui_form_item_12_ng_template_7_Template, 7, 6, "ng-template", null, 7, i0.ɵɵtemplateRefExtractor)(9, PersistentVolumeClaimFormComponent_aui_form_item_12_ng_template_9_Template, 2, 3, "ng-template", null, 8, i0.ɵɵtemplateRefExtractor);
|
|
324
|
-
i0.ɵɵelementEnd();
|
|
325
|
-
} if (rf & 2) {
|
|
326
|
-
const volumeModeTmpl_r21 = i0.ɵɵreference(10);
|
|
327
|
-
const ctx_r1 = i0.ɵɵnextContext();
|
|
328
|
-
i0.ɵɵadvance(2);
|
|
329
|
-
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 6, "storage.volume_mode"));
|
|
330
|
-
i0.ɵɵadvance(2);
|
|
331
|
-
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.model.volumeMode);
|
|
332
|
-
i0.ɵɵproperty("aclReadonlyField", ctx_r1.isFromSnapshot || !!ctx_r1.volumeMode)("aclReadonlyFieldTemplate", volumeModeTmpl_r21);
|
|
333
|
-
i0.ɵɵadvance();
|
|
334
|
-
i0.ɵɵproperty("ngForOf", ctx_r1.volumeModes);
|
|
335
|
-
i0.ɵɵadvance();
|
|
336
|
-
i0.ɵɵproperty("ngIf", !ctx_r1.volumeMode);
|
|
349
|
+
i0.ɵɵproperty("errors", storage_r20.errors)("errorsMapper", i0.ɵɵpureFunction1(12, _c0, i0.ɵɵpipeBind1(10, 10, ctx_r1.POSITIVE_INT_PATTERN.tip)));
|
|
337
350
|
} }
|
|
338
351
|
function PersistentVolumeClaimFormComponent_ng_container_14_aui_form_item_3_Template(rf, ctx) { if (rf & 1) {
|
|
339
352
|
const _r22 = i0.ɵɵgetCurrentView();
|
|
340
|
-
i0.ɵɵelementStart(0, "aui-form-item",
|
|
353
|
+
i0.ɵɵelementStart(0, "aui-form-item", 40)(1, "label", 13);
|
|
341
354
|
i0.ɵɵtext(2);
|
|
342
355
|
i0.ɵɵpipe(3, "translate");
|
|
343
356
|
i0.ɵɵelementEnd();
|
|
344
|
-
i0.ɵɵelementStart(4, "acl-key-value-form-table",
|
|
357
|
+
i0.ɵɵelementStart(4, "acl-key-value-form-table", 41);
|
|
345
358
|
i0.ɵɵpipe(5, "translate");
|
|
346
359
|
i0.ɵɵpipe(6, "lowercase");
|
|
347
360
|
i0.ɵɵpipe(7, "async");
|
|
@@ -357,11 +370,11 @@ function PersistentVolumeClaimFormComponent_ng_container_14_aui_form_item_3_Temp
|
|
|
357
370
|
} }
|
|
358
371
|
function PersistentVolumeClaimFormComponent_ng_container_14_aui_form_item_5_Template(rf, ctx) { if (rf & 1) {
|
|
359
372
|
const _r23 = i0.ɵɵgetCurrentView();
|
|
360
|
-
i0.ɵɵelementStart(0, "aui-form-item",
|
|
373
|
+
i0.ɵɵelementStart(0, "aui-form-item", 40)(1, "label", 13);
|
|
361
374
|
i0.ɵɵtext(2);
|
|
362
375
|
i0.ɵɵpipe(3, "translate");
|
|
363
376
|
i0.ɵɵelementEnd();
|
|
364
|
-
i0.ɵɵelementStart(4, "acl-key-value-form-table",
|
|
377
|
+
i0.ɵɵelementStart(4, "acl-key-value-form-table", 42);
|
|
365
378
|
i0.ɵɵpipe(5, "translate");
|
|
366
379
|
i0.ɵɵpipe(6, "lowercase");
|
|
367
380
|
i0.ɵɵpipe(7, "async");
|
|
@@ -379,11 +392,11 @@ function PersistentVolumeClaimFormComponent_ng_container_14_aui_form_item_5_Temp
|
|
|
379
392
|
function PersistentVolumeClaimFormComponent_ng_container_14_ng_container_7_Template(rf, ctx) { if (rf & 1) {
|
|
380
393
|
const _r24 = i0.ɵɵgetCurrentView();
|
|
381
394
|
i0.ɵɵelementContainerStart(0);
|
|
382
|
-
i0.ɵɵelementStart(1, "aui-form-item",
|
|
395
|
+
i0.ɵɵelementStart(1, "aui-form-item", 43)(2, "label", 13);
|
|
383
396
|
i0.ɵɵtext(3);
|
|
384
397
|
i0.ɵɵpipe(4, "translate");
|
|
385
398
|
i0.ɵɵelementEnd();
|
|
386
|
-
i0.ɵɵelementStart(5, "acl-key-value-form-table",
|
|
399
|
+
i0.ɵɵelementStart(5, "acl-key-value-form-table", 44);
|
|
387
400
|
i0.ɵɵtwoWayListener("ngModelChange", function PersistentVolumeClaimFormComponent_ng_container_14_ng_container_7_Template_acl_key_value_form_table_ngModelChange_5_listener($event) { i0.ɵɵrestoreView(_r24); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.model.selector, $event) || (ctx_r1.model.selector = $event); return i0.ɵɵresetView($event); });
|
|
388
401
|
i0.ɵɵelementEnd()();
|
|
389
402
|
i0.ɵɵelementContainerEnd();
|
|
@@ -398,11 +411,11 @@ function PersistentVolumeClaimFormComponent_ng_container_14_ng_container_7_Templ
|
|
|
398
411
|
} }
|
|
399
412
|
function PersistentVolumeClaimFormComponent_ng_container_14_Template(rf, ctx) { if (rf & 1) {
|
|
400
413
|
i0.ɵɵelementContainerStart(0);
|
|
401
|
-
i0.ɵɵelementStart(1, "acl-foldable-block",
|
|
414
|
+
i0.ɵɵelementStart(1, "acl-foldable-block", 38);
|
|
402
415
|
i0.ɵɵpipe(2, "translate");
|
|
403
|
-
i0.ɵɵtemplate(3, PersistentVolumeClaimFormComponent_ng_container_14_aui_form_item_3_Template, 8, 13, "aui-form-item",
|
|
416
|
+
i0.ɵɵtemplate(3, PersistentVolumeClaimFormComponent_ng_container_14_aui_form_item_3_Template, 8, 13, "aui-form-item", 39);
|
|
404
417
|
i0.ɵɵpipe(4, "pure");
|
|
405
|
-
i0.ɵɵtemplate(5, PersistentVolumeClaimFormComponent_ng_container_14_aui_form_item_5_Template, 8, 13, "aui-form-item",
|
|
418
|
+
i0.ɵɵtemplate(5, PersistentVolumeClaimFormComponent_ng_container_14_aui_form_item_5_Template, 8, 13, "aui-form-item", 39);
|
|
406
419
|
i0.ɵɵpipe(6, "pure");
|
|
407
420
|
i0.ɵɵtemplate(7, PersistentVolumeClaimFormComponent_ng_container_14_ng_container_7_Template, 6, 5, "ng-container", 10);
|
|
408
421
|
i0.ɵɵpipe(8, "pure");
|
|
@@ -433,7 +446,19 @@ export class PersistentVolumeClaimFormComponent extends createNestedFormControl(
|
|
|
433
446
|
}
|
|
434
447
|
return this.displayFields?.some(field => ['labels', 'annotations', 'selector'].includes(field));
|
|
435
448
|
}
|
|
449
|
+
get isFromSnapshotAndSourcePVCExist() {
|
|
450
|
+
return this.isFromSnapshot && !!this.originResource?.spec?.storageClassName;
|
|
451
|
+
}
|
|
452
|
+
get selectDefault() {
|
|
453
|
+
return this.isFromSnapshot
|
|
454
|
+
? !!this.originResource?.spec?.storageClassName
|
|
455
|
+
: true;
|
|
456
|
+
}
|
|
457
|
+
get showStorageClassHintWhenFromSnapshot() {
|
|
458
|
+
return this.isFromSnapshot && !this.originResource?.spec?.storageClassName;
|
|
459
|
+
}
|
|
436
460
|
writeValue(value) {
|
|
461
|
+
this.originResource = value;
|
|
437
462
|
this.model = this.valueIn(value ??
|
|
438
463
|
buildPvcResource({
|
|
439
464
|
namespace: this.baseParams.namespace,
|
|
@@ -532,8 +557,11 @@ export class PersistentVolumeClaimFormComponent extends createNestedFormControl(
|
|
|
532
557
|
}
|
|
533
558
|
storageclassChange(selectedOption) {
|
|
534
559
|
this.selectedStorageSelectOption = selectedOption;
|
|
535
|
-
this.setAccessModeToSupportValueIfNeed();
|
|
536
560
|
this.setVolumeModeToSupportValueIfNeed();
|
|
561
|
+
this.setAccessModeToSupportValueIfNeed();
|
|
562
|
+
}
|
|
563
|
+
volumeModeChange(volumeMode) {
|
|
564
|
+
this.setAccessModeToSupportValueIfNeed(volumeMode);
|
|
537
565
|
}
|
|
538
566
|
displayFieldSupported(fieldName) {
|
|
539
567
|
if (!this.displayFields?.length) {
|
|
@@ -541,9 +569,9 @@ export class PersistentVolumeClaimFormComponent extends createNestedFormControl(
|
|
|
541
569
|
}
|
|
542
570
|
return this.displayFields.includes(fieldName);
|
|
543
571
|
}
|
|
544
|
-
setAccessModeToSupportValueIfNeed() {
|
|
545
|
-
if (this.storageCommonUtil.isAccessModeDisabled(this.model.accessModes, this.selectedStorageSelectOption)) {
|
|
546
|
-
this.model.accessModes = this.accessModes.find(accessMode => !this.storageCommonUtil.isAccessModeDisabled(accessMode, this.selectedStorageSelectOption));
|
|
572
|
+
setAccessModeToSupportValueIfNeed(volumeMode = this.volumeMode) {
|
|
573
|
+
if (this.storageCommonUtil.isAccessModeDisabled(this.model.accessModes, this.selectedStorageSelectOption, volumeMode === 'Block')) {
|
|
574
|
+
this.model.accessModes = this.accessModes.find(accessMode => !this.storageCommonUtil.isAccessModeDisabled(accessMode, this.selectedStorageSelectOption, this.volumeMode === 'Block'));
|
|
547
575
|
}
|
|
548
576
|
}
|
|
549
577
|
setVolumeModeToSupportValueIfNeed() {
|
|
@@ -563,7 +591,7 @@ export class PersistentVolumeClaimFormComponent extends createNestedFormControl(
|
|
|
563
591
|
useExisting: forwardRef(() => PersistentVolumeClaimFormComponent),
|
|
564
592
|
multi: true,
|
|
565
593
|
},
|
|
566
|
-
]), i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature], decls: 15, vars: 29, consts: [["name", "ngModel"], ["createTypeTmpl", ""], ["storageClassName", "ngModel"], ["
|
|
594
|
+
]), i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature], decls: 15, vars: 29, consts: [["name", "ngModel"], ["createTypeTmpl", ""], ["storageClassName", "ngModel"], ["volumeModeTip", ""], ["volumeModeTmpl", ""], ["accessMode", "ngModel"], ["accessModeTip", ""], ["storage", "ngModel"], ["capacityTpl", ""], ["width", "large", 4, "ngIf"], [4, "ngIf"], ["width", "medium", 4, "ngIf"], ["width", "large"], ["auiFormItemLabel", ""], ["aui-input", "", "auiFormItemControl", "", "name", "name", "maxlength", "63", "required", "", 3, "ngModelChange", "ngModel", "placeholder", "pattern"], ["auiFormItemError", "", 3, "errors", "errorsMapper"], ["size", "medium", "name", "createMethod", 3, "ngModelChange", "ngModel", "aclReadonlyField", "aclReadonlyFieldTemplate"], [3, "value"], ["width", "medium"], ["auiFormItemControl", "", "required", "", "name", "storageClassName", 3, "ngModelChange", "storageClassChange", "storageClasses", "volumeSnapshotClasses", "isFromSnapshot", "selectDefault", "ngModel"], ["auiFormItemError", "", 3, "errors"], ["auiFormItemHint", "", "class", "tw-text-yellow", 4, "ngIf"], ["auiFormItemHint", "", 1, "tw-text-yellow"], ["size", "medium", "name", "volumeMode", 3, "ngModelChange", "ngModel", "aclReadonlyField", "aclReadonlyFieldTemplate"], [3, "auiTooltip", "auiTooltipDisabled", "disabled", "value", 4, "ngFor", "ngForOf"], ["auiFormItemAddon", "", 4, "ngIf"], [3, "auiTooltip", "auiTooltipDisabled", "disabled", "value"], ["auiFormItemAddon", ""], ["icon", "question_circle", 1, "icon--help", 3, "auiTooltip", "auiTooltipPosition"], [1, "d-list"], ["auiFormItemControl", "", "name", "accessModes", 3, "ngModelChange", "ngModel"], [3, "auiTooltip", "auiTooltipDisabled", "value", "disabled", 4, "ngFor", "ngForOf"], [3, "auiTooltip", "auiTooltipDisabled", "value", "disabled"], ["aui-input", "", "type", "text", "name", "storage", "required", "", "auiFormItemControl", "", "required", "", 3, "ngModelChange", "pattern", "ngModel", "aclReadonlyField", "aclReadonlyFieldTemplate"], ["class", "tw-max-w-[60px] tw-ml-[-60px]", 3, "ngModel", "ngModelChange", 4, "ngIf"], [1, "tw-max-w-[60px]", "tw-ml-[-60px]", 3, "ngModelChange", "ngModel"], [3, "label", "value", 4, "ngFor", "ngForOf"], [3, "label", "value"], [3, "hint"], ["formGroupName", "metadata", 4, "ngIf"], ["formGroupName", "metadata"], ["auiFormItemControl", "", "name", "labels", 3, "ngModelChange", "ngModel", "resourceNameTranslated", "validator", "errorMapper"], ["auiFormItemControl", "", "name", "annotations", 3, "ngModelChange", "resourceNameTranslated", "ngModel", "validator", "errorMapper"], [3, "hidden"], ["auiFormItemControl", "", "name", "selector", 3, "ngModelChange", "ngModel"]], template: function PersistentVolumeClaimFormComponent_Template(rf, ctx) { if (rf & 1) {
|
|
567
595
|
i0.ɵɵtemplate(0, PersistentVolumeClaimFormComponent_aui_form_item_0_Template, 9, 14, "aui-form-item", 9);
|
|
568
596
|
i0.ɵɵpipe(1, "pure");
|
|
569
597
|
i0.ɵɵtemplate(2, PersistentVolumeClaimFormComponent_ng_container_2_Template, 2, 1, "ng-container", 10);
|
|
@@ -572,11 +600,11 @@ export class PersistentVolumeClaimFormComponent extends createNestedFormControl(
|
|
|
572
600
|
i0.ɵɵpipe(5, "pure");
|
|
573
601
|
i0.ɵɵtemplate(6, PersistentVolumeClaimFormComponent_ng_container_6_Template, 2, 1, "ng-container", 10);
|
|
574
602
|
i0.ɵɵpipe(7, "pure");
|
|
575
|
-
i0.ɵɵtemplate(8, PersistentVolumeClaimFormComponent_aui_form_item_8_Template,
|
|
603
|
+
i0.ɵɵtemplate(8, PersistentVolumeClaimFormComponent_aui_form_item_8_Template, 11, 8, "aui-form-item", 10);
|
|
576
604
|
i0.ɵɵpipe(9, "pure");
|
|
577
|
-
i0.ɵɵtemplate(10, PersistentVolumeClaimFormComponent_aui_form_item_10_Template,
|
|
605
|
+
i0.ɵɵtemplate(10, PersistentVolumeClaimFormComponent_aui_form_item_10_Template, 12, 8, "aui-form-item", 10);
|
|
578
606
|
i0.ɵɵpipe(11, "pure");
|
|
579
|
-
i0.ɵɵtemplate(12, PersistentVolumeClaimFormComponent_aui_form_item_12_Template, 11,
|
|
607
|
+
i0.ɵɵtemplate(12, PersistentVolumeClaimFormComponent_aui_form_item_12_Template, 11, 14, "aui-form-item", 11);
|
|
580
608
|
i0.ɵɵpipe(13, "pure");
|
|
581
609
|
i0.ɵɵtemplate(14, PersistentVolumeClaimFormComponent_ng_container_14_Template, 9, 15, "ng-container", 10);
|
|
582
610
|
} if (rf & 2) {
|
|
@@ -588,16 +616,16 @@ export class PersistentVolumeClaimFormComponent extends createNestedFormControl(
|
|
|
588
616
|
i0.ɵɵadvance(2);
|
|
589
617
|
i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind2(7, 17, "storageClassName", ctx.displayFieldSupported));
|
|
590
618
|
i0.ɵɵadvance(2);
|
|
591
|
-
i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind2(9, 20, "
|
|
619
|
+
i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind2(9, 20, "volumeMode", ctx.displayFieldSupported));
|
|
592
620
|
i0.ɵɵadvance(2);
|
|
593
|
-
i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind2(11, 23, "
|
|
621
|
+
i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind2(11, 23, "accessModes", ctx.displayFieldSupported));
|
|
594
622
|
i0.ɵɵadvance(2);
|
|
595
|
-
i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind2(13, 26, "
|
|
623
|
+
i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind2(13, 26, "storage", ctx.displayFieldSupported));
|
|
596
624
|
i0.ɵɵadvance(2);
|
|
597
625
|
i0.ɵɵproperty("ngIf", ctx.showAdvancedField);
|
|
598
626
|
} }, dependencies: [NgIf,
|
|
599
627
|
NgFor,
|
|
600
|
-
FormsModule, i3.DefaultValueAccessor, i3.NgControlStatus, i3.NgControlStatusGroup, i3.RequiredValidator, i3.MaxLengthValidator, i3.PatternValidator, i3.NgModel, FormModule, i4.FormItemComponent, i4.FormItemAddonDirective, i4.FormItemErrorDirective, i4.FormItemLabelDirective, i4.FormItemControlDirective, RadioModule, i4.RadioGroupComponent, i4.RadioButtonComponent, InputModule, i4.InputComponent, SelectModule, i4.SelectComponent, i4.OptionComponent, TooltipModule, i4.TooltipDirective, IconModule, i4.IconComponent, PurePipe,
|
|
628
|
+
FormsModule, i3.DefaultValueAccessor, i3.NgControlStatus, i3.NgControlStatusGroup, i3.RequiredValidator, i3.MaxLengthValidator, i3.PatternValidator, i3.NgModel, FormModule, i4.FormItemComponent, i4.FormItemAddonDirective, i4.FormItemErrorDirective, i4.FormItemHintDirective, i4.FormItemLabelDirective, i4.FormItemControlDirective, RadioModule, i4.RadioGroupComponent, i4.RadioButtonComponent, InputModule, i4.InputComponent, SelectModule, i4.SelectComponent, i4.OptionComponent, TooltipModule, i4.TooltipDirective, IconModule, i4.IconComponent, PurePipe,
|
|
601
629
|
AsyncPipe,
|
|
602
630
|
LowerCasePipe,
|
|
603
631
|
ReadonlyFieldDirective,
|
|
@@ -651,7 +679,7 @@ __decorate([
|
|
|
651
679
|
useExisting: forwardRef(() => PersistentVolumeClaimFormComponent),
|
|
652
680
|
multi: true,
|
|
653
681
|
},
|
|
654
|
-
], template: "<aui-form-item\n width=\"large\"\n *ngIf=\"'name' | pure: displayFieldSupported\"\n>\n <label auiFormItemLabel>{{ 'name' | translate }}</label>\n <input\n aui-input\n auiFormItemControl\n [(ngModel)]=\"model.name\"\n name=\"name\"\n #name=\"ngModel\"\n maxlength=\"63\"\n [placeholder]=\"resourceNameReg.tip | translate\"\n [pattern]=\"resourceNameReg.pattern\"\n required\n />\n <acl-errors-mapper\n auiFormItemError\n [errors]=\"name.errors\"\n [errorsMapper]=\"{\n pattern: resourceNameReg.tip | translate,\n }\"\n ></acl-errors-mapper>\n</aui-form-item>\n\n<ng-container *ngIf=\"'dataSource' | pure: displayFieldSupported\">\n <aui-form-item *ngIf=\"model.dataSource as dataSource\">\n <label auiFormItemLabel>{{ 'storage.data_source' | translate }}</label>\n {{ dataSource.name }}\n </aui-form-item>\n</ng-container>\n\n<aui-form-item *ngIf=\"'createType' | pure: displayFieldSupported\">\n <label auiFormItemLabel>{{ 'storage.create_method' | translate }}</label>\n <aui-radio-group\n size=\"medium\"\n [(ngModel)]=\"createMethod\"\n name=\"createMethod\"\n [aclReadonlyField]=\"isFromSnapshot || !!createType\"\n [aclReadonlyFieldTemplate]=\"createTypeTmpl\"\n (ngModelChange)=\"createMethodChange($event)\"\n >\n <aui-radio-button [value]=\"PvcStorageClassCreateType.DYNAMIC\">\n {{ 'storage.dynamic_create' | translate }}\n </aui-radio-button>\n <aui-radio-button [value]=\"PvcStorageClassCreateType.STATIC\">\n {{ 'storage.static_match' | translate }}\n </aui-radio-button>\n </aui-radio-group>\n <ng-template #createTypeTmpl>\n {{\n (createMethod === PvcStorageClassCreateType.DYNAMIC\n ? 'storage.dynamic_create'\n : 'storage.static_match'\n ) | translate\n }}\n </ng-template>\n</aui-form-item>\n\n<ng-container *ngIf=\"'storageClassName' | pure: displayFieldSupported\">\n <aui-form-item\n *ngIf=\"createMethod !== PvcStorageClassCreateType.STATIC\"\n width=\"medium\"\n >\n <label auiFormItemLabel>{{ 'storageclass' | translate }}</label>\n <acl-storageclass-select\n [storageClasses]=\"storageClassList$ | async\"\n [volumeSnapshotClasses]=\"volumeSnapshotClassList$ | async\"\n [isFromSnapshot]=\"
|
|
682
|
+
], template: "<aui-form-item\n width=\"large\"\n *ngIf=\"'name' | pure: displayFieldSupported\"\n>\n <label auiFormItemLabel>{{ 'name' | translate }}</label>\n <input\n aui-input\n auiFormItemControl\n [(ngModel)]=\"model.name\"\n name=\"name\"\n #name=\"ngModel\"\n maxlength=\"63\"\n [placeholder]=\"resourceNameReg.tip | translate\"\n [pattern]=\"resourceNameReg.pattern\"\n required\n />\n <acl-errors-mapper\n auiFormItemError\n [errors]=\"name.errors\"\n [errorsMapper]=\"{\n pattern: resourceNameReg.tip | translate,\n }\"\n ></acl-errors-mapper>\n</aui-form-item>\n\n<ng-container *ngIf=\"'dataSource' | pure: displayFieldSupported\">\n <aui-form-item *ngIf=\"model.dataSource as dataSource\">\n <label auiFormItemLabel>{{ 'storage.data_source' | translate }}</label>\n {{ dataSource.name }}\n </aui-form-item>\n</ng-container>\n\n<aui-form-item *ngIf=\"'createType' | pure: displayFieldSupported\">\n <label auiFormItemLabel>{{ 'storage.create_method' | translate }}</label>\n <aui-radio-group\n size=\"medium\"\n [(ngModel)]=\"createMethod\"\n name=\"createMethod\"\n [aclReadonlyField]=\"isFromSnapshot || !!createType\"\n [aclReadonlyFieldTemplate]=\"createTypeTmpl\"\n (ngModelChange)=\"createMethodChange($event)\"\n >\n <aui-radio-button [value]=\"PvcStorageClassCreateType.DYNAMIC\">\n {{ 'storage.dynamic_create' | translate }}\n </aui-radio-button>\n <aui-radio-button [value]=\"PvcStorageClassCreateType.STATIC\">\n {{ 'storage.static_match' | translate }}\n </aui-radio-button>\n </aui-radio-group>\n <ng-template #createTypeTmpl>\n {{\n (createMethod === PvcStorageClassCreateType.DYNAMIC\n ? 'storage.dynamic_create'\n : 'storage.static_match'\n ) | translate\n }}\n </ng-template>\n</aui-form-item>\n\n<ng-container *ngIf=\"'storageClassName' | pure: displayFieldSupported\">\n <aui-form-item\n *ngIf=\"createMethod !== PvcStorageClassCreateType.STATIC\"\n width=\"medium\"\n >\n <label auiFormItemLabel>{{ 'storageclass' | translate }}</label>\n <acl-storageclass-select\n [storageClasses]=\"storageClassList$ | async\"\n [volumeSnapshotClasses]=\"volumeSnapshotClassList$ | async\"\n [isFromSnapshot]=\"isFromSnapshotAndSourcePVCExist\"\n [selectDefault]=\"selectDefault\"\n auiFormItemControl\n required\n [(ngModel)]=\"model.storageClassName\"\n name=\"storageClassName\"\n #storageClassName=\"ngModel\"\n (storageClassChange)=\"storageclassChange($event)\"\n ></acl-storageclass-select>\n <acl-errors-mapper\n auiFormItemError\n [errors]=\"storageClassName.errors\"\n ></acl-errors-mapper>\n <div\n auiFormItemHint\n class=\"tw-text-yellow\"\n *ngIf=\"showStorageClassHintWhenFromSnapshot\"\n >\n {{ 'storage.restore_pvc_storageclass_hint' | translate }}\n </div>\n </aui-form-item>\n</ng-container>\n\n<aui-form-item *ngIf=\"'volumeMode' | pure: displayFieldSupported\">\n <label auiFormItemLabel>{{ 'storage.volume_mode' | translate }}</label>\n <aui-radio-group\n size=\"medium\"\n [(ngModel)]=\"model.volumeMode\"\n name=\"volumeMode\"\n [aclReadonlyField]=\"isFromSnapshotAndSourcePVCExist || !!volumeMode\"\n [aclReadonlyFieldTemplate]=\"volumeModeTmpl\"\n (ngModelChange)=\"volumeModeChange($event)\"\n >\n <aui-radio-button\n *ngFor=\"let mode of volumeModes\"\n [auiTooltip]=\"'storage.storage_forbid_select_volume_mode' | translate\"\n [auiTooltipDisabled]=\"\n !(\n mode\n | pure\n : storageCommonUtil.isVolumeModeDisabled\n : selectedStorageSelectOption\n )\n \"\n [disabled]=\"\n mode\n | pure\n : storageCommonUtil.isVolumeModeDisabled\n : selectedStorageSelectOption\n \"\n [value]=\"mode\"\n >\n {{ 'storage.' + VolumeModeTranslateKey[mode] | translate }}\n </aui-radio-button>\n </aui-radio-group>\n <div\n auiFormItemAddon\n *ngIf=\"!volumeMode\"\n >\n <aui-icon\n [auiTooltip]=\"volumeModeTip\"\n [auiTooltipPosition]=\"'top center'\"\n icon=\"question_circle\"\n class=\"icon--help\"\n ></aui-icon>\n </div>\n <ng-template #volumeModeTip>\n <ul class=\"d-list\">\n <li>{{ 'storage.volume_mode_file_system_hint' | translate }}</li>\n <li>{{ 'storage.volume_mode_block_device_hint' | translate }}</li>\n </ul>\n </ng-template>\n <ng-template #volumeModeTmpl>\n {{\n (model.volumeMode === 'Filesystem'\n ? 'storage.file_system'\n : 'storage.block_device'\n ) | translate\n }}\n </ng-template>\n</aui-form-item>\n\n<aui-form-item *ngIf=\"'accessModes' | pure: displayFieldSupported\">\n <label auiFormItemLabel>{{ 'storage.access_mode' | translate }}</label>\n <aui-radio-group\n auiFormItemControl\n [(ngModel)]=\"model.accessModes\"\n name=\"accessModes\"\n #accessMode=\"ngModel\"\n >\n <aui-radio-button\n *ngFor=\"let mode of accessModes\"\n [auiTooltip]=\"'storage.storage_forbid_select_access_mode' | translate\"\n [auiTooltipDisabled]=\"\n !(\n mode\n | pure\n : storageCommonUtil.isAccessModeDisabled\n : selectedStorageSelectOption\n : model.volumeMode === 'Block'\n )\n \"\n [value]=\"mode\"\n [disabled]=\"\n mode\n | pure\n : storageCommonUtil.isAccessModeDisabled\n : selectedStorageSelectOption\n : model.volumeMode === 'Block'\n \"\n >\n {{ 'storage.' + AccessModeTranslateKey[mode] | translate }}\n </aui-radio-button>\n </aui-radio-group>\n <div auiFormItemAddon>\n <aui-icon\n [auiTooltip]=\"accessModeTip\"\n [auiTooltipPosition]=\"'top center'\"\n icon=\"question_circle\"\n class=\"icon--help\"\n ></aui-icon>\n </div>\n <acl-errors-mapper\n auiFormItemError\n [errors]=\"accessMode.errors\"\n ></acl-errors-mapper>\n <ng-template #accessModeTip>\n <ul class=\"d-list\">\n <li>{{ 'storage.access_mode_rwo' | translate }}</li>\n <li>{{ 'storage.access_mode_rox' | translate }}</li>\n <li>{{ 'storage.access_mode_rwx' | translate }}</li>\n </ul>\n </ng-template>\n</aui-form-item>\n\n<aui-form-item\n width=\"medium\"\n *ngIf=\"'storage' | pure: displayFieldSupported\"\n>\n <label auiFormItemLabel>{{ 'storage.capacity' | translate }}</label>\n <input\n aui-input\n type=\"text\"\n [pattern]=\"POSITIVE_INT_PATTERN.pattern\"\n [(ngModel)]=\"model.storage\"\n name=\"storage\"\n #storage=\"ngModel\"\n required\n auiFormItemControl\n required\n [aclReadonlyField]=\"isFromSnapshot\"\n [aclReadonlyFieldTemplate]=\"capacityTpl\"\n />\n <aui-select\n *ngIf=\"!isFromSnapshot\"\n [(ngModel)]=\"unit\"\n class=\"tw-max-w-[60px] tw-ml-[-60px]\"\n >\n <aui-option\n *ngFor=\"let item of UNITS\"\n [label]=\"item\"\n [value]=\"item\"\n >\n {{ item }}\n </aui-option>\n </aui-select>\n <ng-template #capacityTpl> {{ model.storage }}Gi </ng-template>\n <acl-errors-mapper\n auiFormItemError\n [errors]=\"storage.errors\"\n [errorsMapper]=\"{\n pattern: POSITIVE_INT_PATTERN.tip | translate,\n }\"\n ></acl-errors-mapper>\n</aui-form-item>\n\n<ng-container *ngIf=\"showAdvancedField\">\n <acl-foldable-block hint=\"{{ 'storage.advanced' | translate }}\">\n <aui-form-item\n formGroupName=\"metadata\"\n *ngIf=\"'labels' | pure: displayFieldSupported\"\n >\n <label auiFormItemLabel>{{ 'label' | translate }}</label>\n <acl-key-value-form-table\n auiFormItemControl\n [(ngModel)]=\"model.labels\"\n name=\"labels\"\n [resourceNameTranslated]=\"'storage.labels' | translate | lowercase\"\n [validator]=\"labelValidator\"\n [errorMapper]=\"labelErrorMapper$ | async\"\n ></acl-key-value-form-table>\n </aui-form-item>\n <aui-form-item\n formGroupName=\"metadata\"\n *ngIf=\"'annotations' | pure: displayFieldSupported\"\n >\n <label auiFormItemLabel>{{ 'storage.k8s_annotation' | translate }}</label>\n <acl-key-value-form-table\n auiFormItemControl\n [resourceNameTranslated]=\"\n 'storage.k8s_annotation' | translate | lowercase\n \"\n [(ngModel)]=\"model.annotations\"\n name=\"annotations\"\n [validator]=\"annotationValidator\"\n [errorMapper]=\"annotationErrorMapper$ | async\"\n ></acl-key-value-form-table>\n </aui-form-item>\n <ng-container *ngIf=\"'selector' | pure: displayFieldSupported\">\n <aui-form-item\n [hidden]=\"createMethod === PvcStorageClassCreateType.DYNAMIC\"\n >\n <label auiFormItemLabel>{{ 'storage.selector' | translate }}</label>\n <acl-key-value-form-table\n auiFormItemControl\n [(ngModel)]=\"model.selector\"\n name=\"selector\"\n ></acl-key-value-form-table>\n </aui-form-item>\n </ng-container>\n </acl-foldable-block>\n</ng-container>\n" }]
|
|
655
683
|
}], () => [{ type: i1.StorageCommonUtilService }, { type: i2.TranslateService }, { type: i2.K8sApiService }], { baseParams: [{
|
|
656
684
|
type: Input,
|
|
657
685
|
args: [{ required: true }]
|
|
@@ -667,4 +695,4 @@ __decorate([
|
|
|
667
695
|
type: Input
|
|
668
696
|
}], displayFieldSupported: [] }); })();
|
|
669
697
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PersistentVolumeClaimFormComponent, { className: "PersistentVolumeClaimFormComponent", filePath: "lib/components/pvc-form/component.ts", lineNumber: 128 }); })();
|
|
670
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9zdG9yYWdlL3NyYy9saWIvY29tcG9uZW50cy9wdmMtZm9ybS9jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9tb2R1bGVzL3N0b3JhZ2Uvc3JjL2xpYi9jb21wb25lbnRzL3B2Yy1mb3JtL3RlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDTCxVQUFVLEVBQ1YsVUFBVSxFQUNWLFdBQVcsRUFDWCxXQUFXLEVBQ1gsWUFBWSxFQUNaLGFBQWEsR0FDZCxNQUFNLFlBQVksQ0FBQztBQUNwQixPQUFPLEVBRUwsV0FBVyxFQUNYLG9DQUFvQyxFQUNwQyw4QkFBOEIsRUFDOUIsK0JBQStCLEVBQy9CLHlCQUF5QixFQUN6QixVQUFVLEVBRVYsc0JBQXNCLEVBQ3RCLDBCQUEwQixFQUcxQix1QkFBdUIsRUFDdkIsWUFBWSxFQUNaLHNCQUFzQixFQUN0QixzQkFBc0IsRUFDdEIsZ0JBQWdCLEVBQ2hCLGVBQWUsRUFDZixhQUFhLEVBQ2IsY0FBYyxFQUNkLFNBQVMsRUFDVCxXQUFXLEVBRVgsVUFBVSxFQUVWLElBQUksRUFFSixnQkFBZ0IsRUFDaEIsb0JBQW9CLEVBQ3BCLFFBQVEsRUFDUixvQkFBb0IsR0FDckIsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDeEUsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsS0FBSyxFQUNMLFVBQVUsR0FDWCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9FLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDaEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFckUsT0FBTyxFQUVMLHdCQUF3QixHQUN6QixNQUFNLG9DQUFvQyxDQUFDO0FBRTVDLE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsc0JBQXNCLEdBQ3ZCLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDcEQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7Ozs7Ozs7OztJQzFEN0UsQUFKRix5Q0FHQyxnQkFDeUI7SUFBQSxZQUF3Qjs7SUFBQSxpQkFBUTtJQUN4RCxvQ0FVRTs7SUFQQSxnVUFBd0I7SUFIMUIsaUJBVUU7SUFDRix3Q0FNcUI7O0lBQ3ZCLGlCQUFnQjs7OztJQW5CVSxlQUF3QjtJQUF4QixrREFBd0I7SUFJOUMsZUFBd0I7SUFBeEIsaURBQXdCO0lBS3hCLEFBREEsOEVBQStDLDJDQUNaO0lBS25DLGVBQXNCO0lBQ3RCLEFBREEsdUNBQXNCLGdHQUdwQjs7O0lBTUYsQUFERixxQ0FBc0QsZ0JBQzVCO0lBQUEsWUFBdUM7O0lBQUEsaUJBQVE7SUFDdkUsWUFDRjtJQUFBLGlCQUFnQjs7O0lBRlUsZUFBdUM7SUFBdkMsaUVBQXVDO0lBQy9ELGVBQ0Y7SUFERSxtREFDRjs7O0lBSkYsNkJBQWlFO0lBQy9ELHVIQUFzRDs7OztJQUF0QyxjQUF1QjtJQUF2Qiw4Q0FBdUI7OztJQXdCckMsWUFNRjs7OztJQU5FLDJLQU1GOzs7O0lBdkJBLEFBREYscUNBQWtFLGdCQUN4QztJQUFBLFlBQXlDOztJQUFBLGlCQUFRO0lBQ3pFLDJDQU9DO0lBTEMsOFVBQTBCO0lBSTFCLHVPQUFpQixpQ0FBMEIsS0FBQztJQUU1Qyw0Q0FBOEQ7SUFDNUQsWUFDRjs7SUFBQSxpQkFBbUI7SUFDbkIsNENBQTZEO0lBQzNELFlBQ0Y7O0lBQ0YsQUFERSxpQkFBbUIsRUFDSDtJQUNsQixzSkFBNkI7SUFRL0IsaUJBQWdCOzs7O0lBeEJVLGVBQXlDO0lBQXpDLG1FQUF5QztJQUcvRCxlQUEwQjtJQUExQixtREFBMEI7SUFHMUIsQUFEQSwrRUFBbUQsK0NBQ1I7SUFHekIsY0FBMkM7SUFBM0MsZ0VBQTJDO0lBQzNELGNBQ0Y7SUFERSxnRkFDRjtJQUNrQixlQUEwQztJQUExQywrREFBMEM7SUFDMUQsY0FDRjtJQURFLCtFQUNGOzs7O0lBaUJBLEFBSkYseUNBR0MsZ0JBQ3lCO0lBQUEsWUFBZ0M7O0lBQUEsaUJBQVE7SUFDaEUsc0RBVUM7OztJQUpDLDBYQUFvQztJQUdwQyx5UUFBc0IsaUNBQTBCLEtBQUM7SUFDbEQsaUJBQTBCO0lBQzNCLHdDQUdxQjtJQUN2QixpQkFBZ0I7Ozs7SUFoQlUsZUFBZ0M7SUFBaEMsMERBQWdDO0lBRXRELGVBQTRDO0lBRTVDLEFBREEsQUFEQSwrRUFBNEMsaUZBQ2MseUNBQ3pCO0lBR2pDLDZEQUFvQztJQU9wQyxlQUFrQztJQUFsQyxtREFBa0M7OztJQW5CeEMsNkJBQXVFO0lBQ3JFLHdIQUdDOzs7O0lBRkUsY0FBdUQ7SUFBdkQsc0ZBQXVEOzs7SUErQnhELDRDQWtCQzs7OztJQUNDLFlBQ0Y7O0lBQUEsaUJBQW1COzs7O0lBUmpCLEFBREEsQUFSQSxBQURBLDhGQUFzRSwwSUFRckUsbUJBQ2EsZ0lBTWI7SUFFRCxlQUNGO0lBREUsNEdBQ0Y7OztJQWdCRSxBQURGLDhCQUFtQixTQUNiO0lBQUEsWUFBMkM7O0lBQUEsaUJBQUs7SUFDcEQsMEJBQUk7SUFBQSxZQUEyQzs7SUFBQSxpQkFBSztJQUNwRCwwQkFBSTtJQUFBLFlBQTJDOztJQUNqRCxBQURpRCxpQkFBSyxFQUNqRDs7SUFIQyxlQUEyQztJQUEzQyxxRUFBMkM7SUFDM0MsZUFBMkM7SUFBM0MscUVBQTJDO0lBQzNDLGVBQTJDO0lBQTNDLHFFQUEyQzs7OztJQTlDbkQsQUFERixxQ0FBbUUsZ0JBQ3pDO0lBQUEsWUFBdUM7O0lBQUEsaUJBQVE7SUFDdkUsOENBTUM7SUFKQyx3VkFBK0I7SUFLL0IsK0hBa0JDO0lBR0gsaUJBQWtCO0lBQ2xCLCtCQUFzQjtJQUNwQiwrQkFLWTtJQUNkLGlCQUFNO0lBQ04sd0NBR3FCO0lBQ3JCLHVKQUE0QjtJQU85QixpQkFBZ0I7Ozs7O0lBakRVLGVBQXVDO0lBQXZDLGlFQUF1QztJQUc3RCxlQUErQjtJQUEvQix3REFBK0I7SUFNWixlQUFjO0lBQWQsNENBQWM7SUF1Qi9CLGVBQTRCO0lBQzVCLEFBREEsOENBQTRCLG9DQUNPO0lBT3JDLGNBQTRCO0lBQTVCLDhDQUE0Qjs7O0lBa0M1QixzQ0FJQztJQUNDLFlBQ0Y7SUFBQSxpQkFBYTs7O0lBSFgsQUFEQSxnQ0FBYyxtQkFDQTtJQUVkLGNBQ0Y7SUFERSx5Q0FDRjs7OztJQVhGLHNDQUlDO0lBRkMseVVBQWtCO0lBR2xCLGdJQUlDO0lBR0gsaUJBQWE7OztJQVZYLDJDQUFrQjtJQUlDLGNBQVE7SUFBUixzQ0FBUTs7O0lBT0YsWUFBc0I7OztJQUF0Qix1REFBc0I7Ozs7SUEzQmpELEFBSkYseUNBR0MsZ0JBQ3lCO0lBQUEsWUFBb0M7O0lBQUEsaUJBQVE7SUFDcEUsb0NBWUU7SUFSQSx3VUFBMkI7SUFKN0IsaUJBWUU7SUFjRixBQWJBLG1IQUlDLHdJQVN5QjtJQUMxQix3Q0FNcUI7O0lBQ3ZCLGlCQUFnQjs7Ozs7SUFuQ1UsZUFBb0M7SUFBcEMsOERBQW9DO0lBSTFELGVBQXdDO0lBQXhDLDZEQUF3QztJQUN4QyxvREFBMkI7SUFPM0IsQUFEQSx3REFBbUMsNkNBQ0s7SUFHdkMsZUFBcUI7SUFBckIsNkNBQXFCO0lBZXRCLGVBQXlCO0lBQ3pCLEFBREEsMkNBQXlCLHNHQUd2Qjs7O0lBYUYsNENBa0JDOzs7O0lBQ0MsWUFDRjs7SUFBQSxpQkFBbUI7Ozs7SUFIakIsQUFOQSxBQVJBLEFBREEsOEZBQXNFLDBJQVFyRSxnSUFNQSxtQkFDYTtJQUVkLGVBQ0Y7SUFERSw0R0FDRjs7O0lBRUYsK0JBR0M7SUFDQywrQkFLWTtJQUNkLGlCQUFNOzs7O0lBTEYsY0FBNEI7SUFDNUIsQUFEQSw4Q0FBNEIsb0NBQ087OztJQU9uQyxBQURGLDhCQUFtQixTQUNiO0lBQUEsWUFBd0Q7O0lBQUEsaUJBQUs7SUFDakUsMEJBQUk7SUFBQSxZQUF5RDs7SUFDL0QsQUFEK0QsaUJBQUssRUFDL0Q7O0lBRkMsZUFBd0Q7SUFBeEQsa0ZBQXdEO0lBQ3hELGVBQXlEO0lBQXpELG1GQUF5RDs7O0lBSS9ELFlBTUY7Ozs7SUFORSxnSkFNRjs7OztJQXREQSxBQURGLHFDQUFrRSxnQkFDeEM7SUFBQSxZQUF1Qzs7SUFBQSxpQkFBUTtJQUN2RSwyQ0FNQztJQUpDLHdWQUE4QjtJQUs5QixnSUFrQkM7SUFHSCxpQkFBa0I7SUFrQmxCLEFBTkEsQUFYQSxxR0FHQyx3SUFRMkIsd0lBTUM7SUFRL0IsaUJBQWdCOzs7O0lBdkRVLGVBQXVDO0lBQXZDLGlFQUF1QztJQUc3RCxlQUE4QjtJQUE5Qix1REFBOEI7SUFHOUIsQUFEQSwrRUFBbUQsZ0RBQ1I7SUFHeEIsY0FBYztJQUFkLDRDQUFjO0lBdUJoQyxjQUFpQjtJQUFqQix5Q0FBaUI7Ozs7SUErQmhCLEFBSkYseUNBR0MsZ0JBQ3lCO0lBQUEsWUFBeUI7O0lBQUEsaUJBQVE7SUFDekQsb0RBT0M7Ozs7SUFMQyx5V0FBMEI7SUFNOUIsQUFERyxpQkFBMkIsRUFDZDs7O0lBVFUsZUFBeUI7SUFBekIsbURBQXlCO0lBRy9DLGVBQTBCO0lBQTFCLG1EQUEwQjtJQUkxQixBQURBLEFBREEscUdBQW1FLG9DQUN2QyxnRUFDYTs7OztJQU8zQyxBQUpGLHlDQUdDLGdCQUN5QjtJQUFBLFlBQTBDOztJQUFBLGlCQUFRO0lBQzFFLG9EQVNDOzs7O0lBSkMsbVhBQStCO0lBS25DLEFBREcsaUJBQTJCLEVBQ2Q7OztJQVhVLGVBQTBDO0lBQTFDLG9FQUEwQztJQUdoRSxlQUVDO0lBRkQsNkdBRUM7SUFDRCx3REFBK0I7SUFHL0IsQUFEQSxzREFBaUMscUVBQ2E7Ozs7SUFHbEQsNkJBQStEO0lBSTNELEFBSEYseUNBRUMsZ0JBQ3lCO0lBQUEsWUFBb0M7O0lBQUEsaUJBQVE7SUFDcEUsb0RBSUM7SUFGQyw0V0FBNEI7SUFHaEMsQUFERyxpQkFBMkIsRUFDZDs7OztJQVJkLGNBQTZEO0lBQTdELHlGQUE2RDtJQUVyQyxlQUFvQztJQUFwQyw4REFBb0M7SUFHMUQsZUFBNEI7SUFBNUIscURBQTRCOzs7SUF2Q3RDLDZCQUF3QztJQUN0Qyw4Q0FBZ0U7O0lBQzlELHlIQUdDOztJQVdELHlIQUdDOztJQWFELHNIQUErRDs7SUFZakUsaUJBQXFCOzs7O0lBM0NELGNBQTJDO0lBQTNDLDBFQUEyQztJQUcxRCxlQUE0QztJQUE1QyxtRkFBNEM7SUFjNUMsZUFBaUQ7SUFBakQsd0ZBQWlEO0lBY3JDLGVBQThDO0lBQTlDLHNGQUE4Qzs7QUQxTWpFLE1BQU0seUJBQXlCLEdBQUc7SUFDaEMsT0FBTyxFQUFFLFNBQVM7SUFDbEIsTUFBTSxFQUFFLFFBQVE7Q0FDUixDQUFDO0FBb0JYLE1BQU0sS0FBSyxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBVSxDQUFDO0FBd0NwQyxNQUFNLE9BQU8sa0NBQW1DLFNBQVEsdUJBQXVCLENBRzdFO0lBQ0EsY0FBYyxFQUFFLElBQUk7Q0FDckIsQ0FBQztJQTZCQSxJQUFJLGlCQUFpQjtRQUNuQixJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxNQUFNLEVBQUUsQ0FBQztZQUNoQyxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQ3RDLENBQUMsUUFBUSxFQUFFLGFBQWEsRUFBRSxVQUFVLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQ3RELENBQUM7SUFDSixDQUFDO0lBMkRRLFVBQVUsQ0FBQyxLQUE0QjtRQUM5QyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQ3ZCLEtBQUs7WUFDSCxnQkFBZ0IsQ0FBQztnQkFDZixTQUFTLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTO2dCQUNwQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7YUFDNUIsQ0FBQyxDQUNMLENBQUM7UUFDRixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDdEMsQ0FBQztJQUNILENBQUM7SUFFRCxZQUNZLGlCQUEyQyxFQUNwQyxTQUEyQixFQUMzQixNQUFxQjtRQUV0QyxLQUFLLEVBQUUsQ0FBQztRQUpFLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBMEI7UUFDcEMsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0IsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQXpFeEMsZ0JBQVcsR0FBRyxXQUFXLENBQUM7UUFDMUIsZ0JBQVcsR0FBRyxXQUFXLENBQUM7UUFDMUIseUJBQW9CLEdBQUcsb0JBQW9CLENBQUM7UUFFbkMsVUFBSyxHQUFHLEVBQStCLENBQUM7UUFFakQsb0JBQWUsR0FBRyxzQkFBc0IsQ0FBQztRQUN6QyxtQkFBYyxHQUFHLHlCQUF5QixDQUFDO1FBQzNDLDJCQUFzQixHQUFHLHNCQUFzQixDQUFDO1FBQ2hELDJCQUFzQixHQUFHLHNCQUFzQixDQUFDO1FBRWhELHNCQUFpQixHQUFHLCtCQUErQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNwRSx3QkFBbUIsR0FBRyw4QkFBOEIsQ0FBQztRQUNyRCwyQkFBc0IsR0FBRyxvQ0FBb0MsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFHOUUsOEJBQXlCLEdBQUcseUJBQXlCLENBQUM7UUFFdEQsVUFBSyxHQUFHLEtBQUssQ0FBQztRQUNkLFNBQUksR0FBRyxJQUFJLENBQUM7UUFFWixzQkFBaUIsR0FBRyxhQUFhLENBQUM7WUFDaEMsSUFBSSxDQUFDLFdBQVc7WUFDaEIsSUFBSSxDQUFDLGVBQWU7U0FDckIsQ0FBQyxDQUFDLElBQUksQ0FDTCxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLEVBQUUsY0FBYyxDQUFDLEVBQUUsRUFBRTtZQUMxQyxJQUFJLGNBQWMsRUFBRSxDQUFDO2dCQUNuQixPQUFPLEVBQUUsQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUM1QixDQUFDO1lBQ0QsT0FBTyxJQUFJLENBQUMsTUFBTTtpQkFDZixlQUFlLENBQWU7Z0JBQzdCLElBQUksRUFBRSxjQUFjLENBQUMsYUFBYTtnQkFDbEMsT0FBTztnQkFDUCxXQUFXLEVBQUU7b0JBQ1gsS0FBSyxFQUFFLEdBQUc7aUJBQ1g7YUFDRixDQUFDO2lCQUNELElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNsQyxDQUFDLENBQUMsRUFDRixVQUFVLEVBQUUsQ0FDYixDQUFDO1FBRUYsNkJBQXdCLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQzlDLFNBQVMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUNyQixJQUFJLENBQUMsTUFBTTthQUNSLGVBQWUsQ0FBc0I7WUFDcEMsSUFBSSxFQUFFLGNBQWMsQ0FBQyxxQkFBcUI7WUFDMUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxPQUFPO1NBQzVCLENBQUM7YUFDRCxJQUFJLENBQ0gsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUNqQixTQUFTLENBQUMsRUFBMkIsQ0FBQyxDQUN2QyxDQUNKLEVBQ0QsVUFBVSxFQUFFLENBQ2IsQ0FBQztRQWlHZSx1QkFBa0IsR0FBRyxDQUFDLEdBQTBCLEVBQUUsRUFBRTtZQUNuRSxNQUFNLE9BQU8sR0FBRyxHQUFHLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDO1lBQ3hELElBQUksT0FBTyxFQUFFLENBQUM7Z0JBQ1osTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO2dCQUM5RCxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ25ELElBQUksQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQztZQUM3QixDQUFDO1lBRUQsWUFBWTtZQUNaLElBQUksQ0FBQyxZQUFZO2dCQUNmLEdBQUcsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUU1RCxPQUFPLEdBQUcsQ0FBQztRQUNiLENBQUMsQ0FBQztRQUVlLHFCQUFnQixHQUFHLENBQUMsR0FBMEIsRUFBRSxFQUFFO1lBQ2pFLElBQ0UsSUFBSSxDQUFDLFlBQVksS0FBSyxTQUFTO2dCQUMvQixNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFdBQVcsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUNoRSxDQUFDO2dCQUNELE9BQU8sR0FBRyxFQUFFLElBQUksRUFBRSxRQUFRLENBQUM7WUFDN0IsQ0FBQztZQUVELElBQUksSUFBSSxDQUFDLFlBQVksS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDbkMsR0FBRyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxFQUFFLENBQUM7WUFDakMsQ0FBQztZQUVELElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxDQUFDO2dCQUM1QyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsT0FBTyxHQUFHLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDN0YsQ0FBQztZQUNELE9BQU8sR0FBRyxDQUFDO1FBQ2IsQ0FBQyxDQUFDO1FBMUdBLE1BQU0sQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLEdBQUcsWUFBWSxDQUd4QztZQUNBLElBQUksRUFBRSxlQUFlO1lBQ3JCLE1BQU0sRUFBRSxpQkFBaUI7WUFDekIsV0FBVyxFQUFFLHNCQUFzQjtZQUNuQyxnQkFBZ0IsRUFBRSx1QkFBdUI7WUFDekMsV0FBVyxFQUFFLENBQUMsTUFBTSxFQUFFLGFBQWEsRUFBRSxDQUFDLENBQUM7WUFDdkMsVUFBVSxFQUFFLGlCQUFpQjtZQUM3QixPQUFPLEVBQUUsaUNBQWlDO1lBQzFDLFVBQVUsRUFBRSxpQkFBaUI7WUFDN0IsUUFBUSxFQUFFLDJCQUEyQjtTQUN0QyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxVQUFxQztRQUN0RCxnQkFBZ0I7UUFDaEIsSUFBSSxVQUFVLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLDJCQUEyQixHQUFHLElBQUksQ0FBQztRQUMxQyxDQUFDO0lBQ0gsQ0FBQztJQUVELGtCQUFrQixDQUFDLGNBQW1DO1FBQ3BELElBQUksQ0FBQywyQkFBMkIsR0FBRyxjQUFjLENBQUM7UUFDbEQsSUFBSSxDQUFDLGlDQUFpQyxFQUFFLENBQUM7UUFDekMsSUFBSSxDQUFDLGlDQUFpQyxFQUFFLENBQUM7SUFDM0MsQ0FBQztJQUdELHFCQUFxQixDQUFDLFNBQXVCO1FBQzNDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLE1BQU0sRUFBRSxDQUFDO1lBQ2hDLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVPLGlDQUFpQztRQUN2QyxJQUNFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxvQkFBb0IsQ0FDekMsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQ3RCLElBQUksQ0FBQywyQkFBMkIsQ0FDakMsRUFDRCxDQUFDO1lBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQzVDLFVBQVUsQ0FBQyxFQUFFLENBQ1gsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsb0JBQW9CLENBQzFDLFVBQVUsRUFDVixJQUFJLENBQUMsMkJBQTJCLENBQ2pDLENBQ0osQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRU8saUNBQWlDO1FBQ3ZDLElBQ0UsSUFBSSxDQUFDLGlCQUFpQixDQUFDLG9CQUFvQixDQUN6QyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFDckIsSUFBSSxDQUFDLDJCQUEyQixDQUNqQyxFQUNELENBQUM7WUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FDM0MsVUFBVSxDQUFDLEVBQUUsQ0FDWCxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxvQkFBb0IsQ0FDMUMsVUFBVSxFQUNWLElBQUksQ0FBQywyQkFBMkIsQ0FDakMsQ0FDSixDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7bUdBbE1VLGtDQUFrQztvRUFBbEMsa0NBQWtDLGtSQWJsQztnQkFDVDtvQkFDRSxPQUFPLEVBQUUsaUJBQWlCO29CQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGtDQUFrQyxDQUFDO29CQUNqRSxLQUFLLEVBQUUsSUFBSTtpQkFDWjtnQkFDRDtvQkFDRSxPQUFPLEVBQUUsYUFBYTtvQkFDdEIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxrQ0FBa0MsQ0FBQztvQkFDakUsS0FBSyxFQUFFLElBQUk7aUJBQ1o7YUFDRjtZQzdISCx3R0FHQzs7WUFzQkQsc0dBQWlFOztZQU9qRSwwR0FBa0U7O1lBMkJsRSxzR0FBdUU7O1lBd0J2RSx5R0FBbUU7O1lBb0RuRSw0R0FHQzs7WUFzQ0QsMkdBQWtFOztZQTBEbEUseUdBQXdDOztZQXhPckMsOEVBQTBDO1lBdUI5QixlQUFnRDtZQUFoRCxxRkFBZ0Q7WUFPL0MsZUFBZ0Q7WUFBaEQscUZBQWdEO1lBMkJqRCxlQUFzRDtZQUF0RCwyRkFBc0Q7WUF3QnJELGVBQWlEO1lBQWpELHNGQUFpRDtZQXNEOUQsZUFBNkM7WUFBN0MsbUZBQTZDO1lBdUNoQyxlQUFnRDtZQUFoRCxzRkFBZ0Q7WUEwRGpELGVBQXVCO1lBQXZCLDRDQUF1Qjs0QkQzSWxDLElBQUk7WUFDSixLQUFLO1lBQ0wsV0FBVyxzSkFDWCxVQUFVLHNJQUNWLFdBQVcsbURBQ1gsV0FBVyxxQkFDWCxZQUFZLDBDQUNaLGFBQWEsdUJBQ2IsVUFBVSxvQkFDVixRQUFRO1lBQ1IsU0FBUztZQUNULGFBQWE7WUFDYixzQkFBc0I7WUFDdEIsc0JBQXNCO1lBQ3RCLDJCQUEyQjtZQUMzQiwwQkFBMEI7O0FBMkI1QjtJQURDLGVBQWUsRUFBRTs4QkFDSixVQUFVO3VFQUFrQjtBQU0xQztJQURDLGVBQWUsRUFBRTs4QkFDQSxVQUFVOzJFQUFpQjtBQTBJN0M7SUFEQyxJQUFJOzs7OytFQU9KO2lGQWhLVSxrQ0FBa0M7Y0F0QzlDLFNBQVM7NkJBQ0ksSUFBSSxZQUNOLGNBQWMsbUJBRVAsdUJBQXVCLENBQUMsTUFBTSxXQUN0QztvQkFDUCxJQUFJO29CQUNKLEtBQUs7b0JBQ0wsV0FBVztvQkFDWCxVQUFVO29CQUNWLFdBQVc7b0JBQ1gsV0FBVztvQkFDWCxZQUFZO29CQUNaLGFBQWE7b0JBQ2IsVUFBVTtvQkFDVixRQUFRO29CQUNSLFNBQVM7b0JBQ1QsYUFBYTtvQkFDYixzQkFBc0I7b0JBQ3RCLHNCQUFzQjtvQkFDdEIsMkJBQTJCO29CQUMzQiwwQkFBMEI7b0JBQzFCLGdCQUFnQjtvQkFDaEIsb0JBQW9CO2lCQUNyQixhQUNVO29CQUNUO3dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7d0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLG1DQUFtQyxDQUFDO3dCQUNqRSxLQUFLLEVBQUUsSUFBSTtxQkFDWjtvQkFDRDt3QkFDRSxPQUFPLEVBQUUsYUFBYTt3QkFDdEIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsbUNBQW1DLENBQUM7d0JBQ2pFLEtBQUssRUFBRSxJQUFJO3FCQUNaO2lCQUNGO29IQVNELFVBQVU7a0JBRFQsS0FBSzttQkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7WUFJekIsV0FBVyxNQUdYLGNBQWM7a0JBRGIsS0FBSztZQUlOLGVBQWUsTUFJZixjQUFjO2tCQURiLEtBQUs7WUFLTixVQUFVO2tCQURULEtBQUs7WUFLTixVQUFVO2tCQURULEtBQUs7WUFLTixhQUFhO2tCQURaLEtBQUs7WUEySE4scUJBQXFCO2tGQTFKVixrQ0FBa0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBGb3JtTW9kdWxlLFxuICBJY29uTW9kdWxlLFxuICBJbnB1dE1vZHVsZSxcbiAgUmFkaW9Nb2R1bGUsXG4gIFNlbGVjdE1vZHVsZSxcbiAgVG9vbHRpcE1vZHVsZSxcbn0gZnJvbSAnQGFsYXVkYS91aSc7XG5pbXBvcnQge1xuICBBY2Nlc3NNb2RlLFxuICBBY2Nlc3NNb2RlcyxcbiAgZ2V0SzhzUmVzb3VyY2VBbm5vdGF0aW9uRXJyb3JNYXBwZXIkLFxuICBrOHNSZXNvdXJjZUFubm90YXRpb25WYWxpZGF0b3IsXG4gIGdldEs4c1Jlc291cmNlTGFiZWxFcnJvck1hcHBlciQsXG4gIGs4c1Jlc291cmNlTGFiZWxWYWxpZGF0b3IsXG4gIFZvbHVtZU1vZGUsXG4gIExhYmVsU2VsZWN0b3IsXG4gIEZvbGRhYmxlQmxvY2tDb21wb25lbnQsXG4gIEtleVZhbHVlRm9ybVRhYmxlQ29tcG9uZW50LFxuICBQZXJzaXN0ZW50Vm9sdW1lQ2xhaW0sXG4gIFBlcnNpc3RlbnRWb2x1bWVDbGFpbURhdGFTb3VyY2UsXG4gIGNyZWF0ZU5lc3RlZEZvcm1Db250cm9sLFxuICBkYXRhVHJhbnNmZXIsXG4gIFJlYWRvbmx5RmllbGREaXJlY3RpdmUsXG4gIEs4U19SRVNPVVJDRV9OQU1FX0JBU0UsXG4gIFRyYW5zbGF0ZVNlcnZpY2UsXG4gIE9ic2VydmFibGVJbnB1dCxcbiAgSzhzQXBpU2VydmljZSxcbiAgUkVTT1VSQ0VfVFlQRVMsXG4gIHNraXBFcnJvcixcbiAgVm9sdW1lTW9kZXMsXG4gIFZhbHVlT2YsXG4gIHB1Ymxpc2hSZWYsXG4gIFN0cmluZ01hcCxcbiAgYmluZCxcbiAgV29ya3NwYWNlUGFyYW1zLFxuICBUUkFOU0xBVEVfTU9EVUxFLFxuICBFUlJPUlNfTUFQUEVSX01PRFVMRSxcbiAgUHVyZVBpcGUsXG4gIFBPU0lUSVZFX0lOVF9QQVRURVJOLFxufSBmcm9tICdAYWxhdWRhLWZlL2NvbW1vbic7XG5pbXBvcnQgeyBBc3luY1BpcGUsIExvd2VyQ2FzZVBpcGUsIE5nRm9yLCBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBmb3J3YXJkUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBOR19WQUxJREFUT1JTLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGNvbXBvc2UgfSBmcm9tICdyYW1kYSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBjb21iaW5lTGF0ZXN0LCBtYXAsIG9mLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtcbiAgU3RvcmFnZVNlbGVjdE9wdGlvbixcbiAgU3RvcmFnZUNvbW1vblV0aWxTZXJ2aWNlLFxufSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jb21tb24tdXRpbC5zZXJ2aWNlJztcbmltcG9ydCB7IFN0b3JhZ2VDbGFzcywgVm9sdW1lU25hcHNob3RDbGFzcyB9IGZyb20gJy4uLy4uL3R5cGVzL2s4cyc7XG5pbXBvcnQge1xuICBBY2Nlc3NNb2RlVHJhbnNsYXRlS2V5LFxuICBWb2x1bWVNb2RlVHJhbnNsYXRlS2V5LFxufSBmcm9tICcuLi8uLi91dGlscy9jb25zdGFudHMnO1xuaW1wb3J0IHsgYnVpbGRQdmNSZXNvdXJjZSB9IGZyb20gJy4uLy4uL3V0aWxzL3V0aWwnO1xuaW1wb3J0IHsgU3RvcmFnZUNsYXNzU2VsZWN0Q29tcG9uZW50IH0gZnJvbSAnLi4vc3RvcmFnZWNsYXNzLXNlbGVjdC9jb21wb25lbnQnO1xuXG5jb25zdCBQdmNTdG9yYWdlQ2xhc3NDcmVhdGVUeXBlID0ge1xuICBEWU5BTUlDOiAnZHluYW1pYycsXG4gIFNUQVRJQzogJ3N0YXRpYycsXG59IGFzIGNvbnN0O1xuXG50eXBlIFB2Y1N0b3JhZ2VDbGFzc0NyZWF0ZVR5cGUgPSBWYWx1ZU9mPHR5cGVvZiBQdmNTdG9yYWdlQ2xhc3NDcmVhdGVUeXBlPjtcblxuaW50ZXJmYWNlIFBlcnNpc3RlbnRWb2x1bWVGb3JtTW9kZWwge1xuICBuYW1lOiBzdHJpbmc7XG4gIGxhYmVsczogU3RyaW5nTWFwO1xuICBhbm5vdGF0aW9uczogU3RyaW5nTWFwO1xuICAvLyBudWxsIOihqOekuuS9v+eUqOm7mOiupCBzY1xuICAvLyBcIlwiIOaIluS4jeWGmeivpeWtl+auteihqOekuuS4jeiuvue9ruWtmOWCqOexu1xuICBzdG9yYWdlQ2xhc3NOYW1lOiBzdHJpbmc7XG4gIGFjY2Vzc01vZGVzOiBBY2Nlc3NNb2RlO1xuICB2b2x1bWVNb2RlOiBWb2x1bWVNb2RlO1xuICBzdG9yYWdlOiBzdHJpbmc7XG4gIGRhdGFTb3VyY2U/OiBQZXJzaXN0ZW50Vm9sdW1lQ2xhaW1EYXRhU291cmNlO1xuICBzZWxlY3RvcjogTGFiZWxTZWxlY3Rvcjtcbn1cblxudHlwZSBEaXNwbGF5RmllbGQgPSBrZXlvZiBQZXJzaXN0ZW50Vm9sdW1lRm9ybU1vZGVsIHwgJ2NyZWF0ZVR5cGUnO1xuXG5jb25zdCBVTklUUyA9IFsnR2knLCAnVGknXSBhcyBjb25zdDtcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAnYWNsLXB2Yy1mb3JtJyxcbiAgdGVtcGxhdGVVcmw6ICd0ZW1wbGF0ZS5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtcbiAgICBOZ0lmLFxuICAgIE5nRm9yLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIEZvcm1Nb2R1bGUsXG4gICAgUmFkaW9Nb2R1bGUsXG4gICAgSW5wdXRNb2R1bGUsXG4gICAgU2VsZWN0TW9kdWxlLFxuICAgIFRvb2x0aXBNb2R1bGUsXG4gICAgSWNvbk1vZHVsZSxcbiAgICBQdXJlUGlwZSxcbiAgICBBc3luY1BpcGUsXG4gICAgTG93ZXJDYXNlUGlwZSxcbiAgICBSZWFkb25seUZpZWxkRGlyZWN0aXZlLFxuICAgIEZvbGRhYmxlQmxvY2tDb21wb25lbnQsXG4gICAgU3RvcmFnZUNsYXNzU2VsZWN0Q29tcG9uZW50LFxuICAgIEtleVZhbHVlRm9ybVRhYmxlQ29tcG9uZW50LFxuICAgIFRSQU5TTEFURV9NT0RVTEUsXG4gICAgRVJST1JTX01BUFBFUl9NT0RVTEUsXG4gIF0sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUGVyc2lzdGVudFZvbHVtZUNsYWltRm9ybUNvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBQZXJzaXN0ZW50Vm9sdW1lQ2xhaW1Gb3JtQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFBlcnNpc3RlbnRWb2x1bWVDbGFpbUZvcm1Db21wb25lbnQgZXh0ZW5kcyBjcmVhdGVOZXN0ZWRGb3JtQ29udHJvbDxcbiAgUGVyc2lzdGVudFZvbHVtZUNsYWltLFxuICBQZXJzaXN0ZW50Vm9sdW1lRm9ybU1vZGVsXG4+KHtcbiAgYXV0b0VtaXRDaGFuZ2U6IHRydWUsXG59KSB7XG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pXG4gIGJhc2VQYXJhbXM6IFdvcmtzcGFjZVBhcmFtcztcblxuICBAT2JzZXJ2YWJsZUlucHV0KClcbiAgYmFzZVBhcmFtcyQhOiBPYnNlcnZhYmxlPFdvcmtzcGFjZVBhcmFtcz47XG5cbiAgQElucHV0KClcbiAgc3RvcmFnZUNsYXNzZXM6IFN0b3JhZ2VDbGFzc1tdO1xuXG4gIEBPYnNlcnZhYmxlSW5wdXQoKVxuICBzdG9yYWdlQ2xhc3NlcyQhOiBPYnNlcnZhYmxlPFN0b3JhZ2VDbGFzc1tdPjtcblxuICAvLyDlv6vnhafnsbsgcHZjIOWIm+W7ulxuICBASW5wdXQoKVxuICBpc0Zyb21TbmFwc2hvdDogYm9vbGVhbjtcblxuICAvLyDlpoLmnpzkvKDlhaXnm7jlupTnmoQgY3JlYXRlVHlwZSDooajnpLrlm7rlrprlhbblgLxcbiAgQElucHV0KClcbiAgY3JlYXRlVHlwZTogUHZjU3RvcmFnZUNsYXNzQ3JlYXRlVHlwZTtcblxuICAvLyDlpoLmnpzkvKDlhaXnm7jlupTnmoQgdm9sdW1lTW9kZSDooajnpLrlm7rlrprlhbblgLxcbiAgQElucHV0KClcbiAgdm9sdW1lTW9kZTogVm9sdW1lTW9kZTtcblxuICAvLyDlpoLmnpzkvKDlhaXnm7jlupTnmoQgZGlzcGxheUZpZWxkIOihqOekuuWPquS8muWxleekuuWvueW6lOeahCBjb250cm9sXG4gIEBJbnB1dCgpXG4gIGRpc3BsYXlGaWVsZHM6IERpc3BsYXlGaWVsZFtdO1xuXG4gIGdldCBzaG93QWR2YW5jZWRGaWVsZCgpIHtcbiAgICBpZiAoIXRoaXMuZGlzcGxheUZpZWxkcz8ubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5kaXNwbGF5RmllbGRzPy5zb21lKGZpZWxkID0+XG4gICAgICBbJ2xhYmVscycsICdhbm5vdGF0aW9ucycsICdzZWxlY3RvciddLmluY2x1ZGVzKGZpZWxkKSxcbiAgICApO1xuICB9XG5cbiAgYWNjZXNzTW9kZXMgPSBBY2Nlc3NNb2RlcztcbiAgdm9sdW1lTW9kZXMgPSBWb2x1bWVNb2RlcztcbiAgUE9TSVRJVkVfSU5UX1BBVFRFUk4gPSBQT1NJVElWRV9JTlRfUEFUVEVSTjtcblxuICBvdmVycmlkZSBtb2RlbCA9IHt9IGFzIFBlcnNpc3RlbnRWb2x1bWVGb3JtTW9kZWw7XG5cbiAgcmVzb3VyY2VOYW1lUmVnID0gSzhTX1JFU09VUkNFX05BTUVfQkFTRTtcbiAgbGFiZWxWYWxpZGF0b3IgPSBrOHNSZXNvdXJjZUxhYmVsVmFsaWRhdG9yO1xuICBBY2Nlc3NNb2RlVHJhbnNsYXRlS2V5ID0gQWNjZXNzTW9kZVRyYW5zbGF0ZUtleTtcbiAgVm9sdW1lTW9kZVRyYW5zbGF0ZUtleSA9IFZvbHVtZU1vZGVUcmFuc2xhdGVLZXk7XG5cbiAgbGFiZWxFcnJvck1hcHBlciQgPSBnZXRLOHNSZXNvdXJjZUxhYmVsRXJyb3JNYXBwZXIkKHRoaXMudHJhbnNsYXRlKTtcbiAgYW5ub3RhdGlvblZhbGlkYXRvciA9IGs4c1Jlc291cmNlQW5ub3RhdGlvblZhbGlkYXRvcjtcbiAgYW5ub3RhdGlvbkVycm9yTWFwcGVyJCA9IGdldEs4c1Jlc291cmNlQW5ub3RhdGlvbkVycm9yTWFwcGVyJCh0aGlzLnRyYW5zbGF0ZSk7XG5cbiAgY3JlYXRlTWV0aG9kOiBQdmNTdG9yYWdlQ2xhc3NDcmVhdGVUeXBlO1xuICBQdmNTdG9yYWdlQ2xhc3NDcmVhdGVUeXBlID0gUHZjU3RvcmFnZUNsYXNzQ3JlYXRlVHlwZTtcbiAgc2VsZWN0ZWRTdG9yYWdlU2VsZWN0T3B0aW9uOiBTdG9yYWdlU2VsZWN0T3B0aW9uO1xuICBVTklUUyA9IFVOSVRTO1xuICB1bml0ID0gJ0dpJztcblxuICBzdG9yYWdlQ2xhc3NMaXN0JCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgIHRoaXMuYmFzZVBhcmFtcyQsXG4gICAgdGhpcy5zdG9yYWdlQ2xhc3NlcyQsXG4gIF0pLnBpcGUoXG4gICAgc3dpdGNoTWFwKChbeyBjbHVzdGVyIH0sIHN0b3JhZ2VDbGFzc2VzXSkgPT4ge1xuICAgICAgaWYgKHN0b3JhZ2VDbGFzc2VzKSB7XG4gICAgICAgIHJldHVybiBvZihzdG9yYWdlQ2xhc3Nlcyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5rOHNBcGlcbiAgICAgICAgLmdldFJlc291cmNlTGlzdDxTdG9yYWdlQ2xhc3M+KHtcbiAgICAgICAgICB0eXBlOiBSRVNPVVJDRV9UWVBFUy5TVE9SQUdFX0NMQVNTLFxuICAgICAgICAgIGNsdXN0ZXIsXG4gICAgICAgICAgcXVlcnlQYXJhbXM6IHtcbiAgICAgICAgICAgIGxpbWl0OiAnMCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnBpcGUobWFwKHJlcyA9PiByZXM/Lml0ZW1zKSk7XG4gICAgfSksXG4gICAgcHVibGlzaFJlZigpLFxuICApO1xuXG4gIHZvbHVtZVNuYXBzaG90Q2xhc3NMaXN0JCA9IHRoaXMuYmFzZVBhcmFtcyQucGlwZShcbiAgICBzd2l0Y2hNYXAoYmFzZVBhcmFtcyA9PlxuICAgICAgdGhpcy5rOHNBcGlcbiAgICAgICAgLmdldFJlc291cmNlTGlzdDxWb2x1bWVTbmFwc2hvdENsYXNzPih7XG4gICAgICAgICAgdHlwZTogUkVTT1VSQ0VfVFlQRVMuVk9MVU1FX1NOQVBTSE9UX0NMQVNTLFxuICAgICAgICAgIGNsdXN0ZXI6IGJhc2VQYXJhbXMuY2x1c3RlcixcbiAgICAgICAgfSlcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWFwKHIgPT4gci5pdGVtcyksXG4gICAgICAgICAgc2tpcEVycm9yKFtdIGFzIFZvbHVtZVNuYXBzaG90Q2xhc3NbXSksXG4gICAgICAgICksXG4gICAgKSxcbiAgICBwdWJsaXNoUmVmKCksXG4gICk7XG5cbiAgb3ZlcnJpZGUgd3JpdGVWYWx1ZSh2YWx1ZTogUGVyc2lzdGVudFZvbHVtZUNsYWltKTogdm9pZCB7XG4gICAgdGhpcy5tb2RlbCA9IHRoaXMudmFsdWVJbihcbiAgICAgIHZhbHVlID8/XG4gICAgICAgIGJ1aWxkUHZjUmVzb3VyY2Uoe1xuICAgICAgICAgIG5hbWVzcGFjZTogdGhpcy5iYXNlUGFyYW1zLm5hbWVzcGFjZSxcbiAgICAgICAgICB2b2x1bWVNb2RlOiB0aGlzLnZvbHVtZU1vZGUsXG4gICAgICAgIH0pLFxuICAgICk7XG4gICAgaWYgKHRoaXMuY3JlYXRlVHlwZSkge1xuICAgICAgdGhpcy5jcmVhdGVNZXRob2QgPSB0aGlzLmNyZWF0ZVR5cGU7XG4gICAgfVxuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIHN0b3JhZ2VDb21tb25VdGlsOiBTdG9yYWdlQ29tbW9uVXRpbFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBrOHNBcGk6IEs4c0FwaVNlcnZpY2UsXG4gICkge1xuICAgIHN1cGVyKCk7XG5cbiAgICBjb25zdCBbdG9Nb2RlbCwgdG9SZXNvdXJjZV0gPSBkYXRhVHJhbnNmZXI8XG4gICAgICBQZXJzaXN0ZW50Vm9sdW1lQ2xhaW0sXG4gICAgICBQZXJzaXN0ZW50Vm9sdW1lRm9ybU1vZGVsXG4gICAgPih7XG4gICAgICBuYW1lOiAnbWV0YWRhdGEubmFtZScsXG4gICAgICBsYWJlbHM6ICdtZXRhZGF0YS5sYWJlbHMnLFxuICAgICAgYW5ub3RhdGlvbnM6ICdtZXRhZGF0YS5hbm5vdGF0aW9ucycsXG4gICAgICBzdG9yYWdlQ2xhc3NOYW1lOiAnc3BlYy5zdG9yYWdlQ2xhc3NOYW1lJyxcbiAgICAgIGFjY2Vzc01vZGVzOiBbJ3NwZWMnLCAnYWNjZXNzTW9kZXMnLCAwXSxcbiAgICAgIHZvbHVtZU1vZGU6ICdzcGVjLnZvbHVtZU1vZGUnLFxuICAgICAgc3RvcmFnZTogJ3NwZWMucmVzb3VyY2VzLnJlcXVlc3RzLnN0b3JhZ2UnLFxuICAgICAgZGF0YVNvdXJjZTogJ3NwZWMuZGF0YVNvdXJjZScsXG4gICAgICBzZWxlY3RvcjogJ3NwZWMuc2VsZWN0b3IubWF0Y2hMYWJlbHMnLFxuICAgIH0pO1xuXG4gICAgdGhpcy52YWx1ZUluID0gY29tcG9zZSh0b01vZGVsLCB0aGlzLmFkYXB0UmVzb3VyY2VNb2RlbCk7XG4gICAgdGhpcy5tb2RlbE91dCA9IGNvbXBvc2UodGhpcy5vdmVycmlkZVJlc291cmNlLCB0b1Jlc291cmNlKTtcbiAgfVxuXG4gIGNyZWF0ZU1ldGhvZENoYW5nZShjcmVhdGVUeXBlOiBQdmNTdG9yYWdlQ2xhc3NDcmVhdGVUeXBlKSB7XG4gICAgLy8g6Z2Z5oCB5Yy56YWN5LiN6ZyA6KaB6ZmQ5Yi26K6/6Zeu5qih5byPXG4gICAgaWYgKGNyZWF0ZVR5cGUgPT09ICdzdGF0aWMnKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkU3RvcmFnZVNlbGVjdE9wdGlvbiA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgc3RvcmFnZWNsYXNzQ2hhbmdlKHNlbGVjdGVkT3B0aW9uOiBTdG9yYWdlU2VsZWN0T3B0aW9uKSB7XG4gICAgdGhpcy5zZWxlY3RlZFN0b3JhZ2VTZWxlY3RPcHRpb24gPSBzZWxlY3RlZE9wdGlvbjtcbiAgICB0aGlzLnNldEFjY2Vzc01vZGVUb1N1cHBvcnRWYWx1ZUlmTmVlZCgpO1xuICAgIHRoaXMuc2V0Vm9sdW1lTW9kZVRvU3VwcG9ydFZhbHVlSWZOZWVkKCk7XG4gIH1cblxuICBAYmluZFxuICBkaXNwbGF5RmllbGRTdXBwb3J0ZWQoZmllbGROYW1lOiBEaXNwbGF5RmllbGQpIHtcbiAgICBpZiAoIXRoaXMuZGlzcGxheUZpZWxkcz8ubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5kaXNwbGF5RmllbGRzLmluY2x1ZGVzKGZpZWxkTmFtZSk7XG4gIH1cblxuICBwcml2YXRlIHNldEFjY2Vzc01vZGVUb1N1cHBvcnRWYWx1ZUlmTmVlZCgpIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLnN0b3JhZ2VDb21tb25VdGlsLmlzQWNjZXNzTW9kZURpc2FibGVkKFxuICAgICAgICB0aGlzLm1vZGVsLmFjY2Vzc01vZGVzLFxuICAgICAgICB0aGlzLnNlbGVjdGVkU3RvcmFnZVNlbGVjdE9wdGlvbixcbiAgICAgIClcbiAgICApIHtcbiAgICAgIHRoaXMubW9kZWwuYWNjZXNzTW9kZXMgPSB0aGlzLmFjY2Vzc01vZGVzLmZpbmQoXG4gICAgICAgIGFjY2Vzc01vZGUgPT5cbiAgICAgICAgICAhdGhpcy5zdG9yYWdlQ29tbW9uVXRpbC5pc0FjY2Vzc01vZGVEaXNhYmxlZChcbiAgICAgICAgICAgIGFjY2Vzc01vZGUsXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkU3RvcmFnZVNlbGVjdE9wdGlvbixcbiAgICAgICAgICApLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldFZvbHVtZU1vZGVUb1N1cHBvcnRWYWx1ZUlmTmVlZCgpIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLnN0b3JhZ2VDb21tb25VdGlsLmlzVm9sdW1lTW9kZURpc2FibGVkKFxuICAgICAgICB0aGlzLm1vZGVsLnZvbHVtZU1vZGUsXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRTdG9yYWdlU2VsZWN0T3B0aW9uLFxuICAgICAgKVxuICAgICkge1xuICAgICAgdGhpcy5tb2RlbC52b2x1bWVNb2RlID0gdGhpcy52b2x1bWVNb2Rlcy5maW5kKFxuICAgICAgICB2b2x1bWVNb2RlID0+XG4gICAgICAgICAgIXRoaXMuc3RvcmFnZUNvbW1vblV0aWwuaXNWb2x1bWVNb2RlRGlzYWJsZWQoXG4gICAgICAgICAgICB2b2x1bWVNb2RlLFxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFN0b3JhZ2VTZWxlY3RPcHRpb24sXG4gICAgICAgICAgKSxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBhZGFwdFJlc291cmNlTW9kZWwgPSAocHZjOiBQZXJzaXN0ZW50Vm9sdW1lQ2xhaW0pID0+IHtcbiAgICBjb25zdCBzdG9yYWdlID0gcHZjPy5zcGVjPy5yZXNvdXJjZXM/LnJlcXVlc3RzPy5zdG9yYWdlO1xuICAgIGlmIChzdG9yYWdlKSB7XG4gICAgICBjb25zdCByZXMgPSBTdHJpbmcoc3RvcmFnZSkubWF0Y2goL1tBLVphLXpdK3xcXGQrKD86XFwuXFxkKyk/L2cpO1xuICAgICAgcHZjLnNwZWMucmVzb3VyY2VzLnJlcXVlc3RzLnN0b3JhZ2UgPSByZXNbMF0gfHwgJyc7XG4gICAgICB0aGlzLnVuaXQgPSByZXNbMV0gfHwgJ0dpJztcbiAgICB9XG5cbiAgICAvLyBcIlwiIOihqOekuumdmeaAgeWIm+W7ulxuICAgIHRoaXMuY3JlYXRlTWV0aG9kID1cbiAgICAgIHB2Yz8uc3BlYz8uc3RvcmFnZUNsYXNzTmFtZSA9PT0gJycgPyAnc3RhdGljJyA6ICdkeW5hbWljJztcblxuICAgIHJldHVybiBwdmM7XG4gIH07XG5cbiAgcHJpdmF0ZSByZWFkb25seSBvdmVycmlkZVJlc291cmNlID0gKHB2YzogUGVyc2lzdGVudFZvbHVtZUNsYWltKSA9PiB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5jcmVhdGVNZXRob2QgPT09ICdkeW5hbWljJyB8fFxuICAgICAgT2JqZWN0LmtleXMocHZjPy5zcGVjPy5zZWxlY3Rvcj8ubWF0Y2hMYWJlbHMgPz8ge30pLmxlbmd0aCA9PT0gMFxuICAgICkge1xuICAgICAgZGVsZXRlIHB2Yz8uc3BlYz8uc2VsZWN0b3I7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY3JlYXRlTWV0aG9kID09PSAnc3RhdGljJykge1xuICAgICAgcHZjLnNwZWMuc3RvcmFnZUNsYXNzTmFtZSA9ICcnO1xuICAgIH1cblxuICAgIGlmIChwdmM/LnNwZWM/LnJlc291cmNlcz8ucmVxdWVzdHM/LnN0b3JhZ2UpIHtcbiAgICAgIHB2Yy5zcGVjLnJlc291cmNlcy5yZXF1ZXN0cy5zdG9yYWdlID0gYCR7cHZjLnNwZWMucmVzb3VyY2VzLnJlcXVlc3RzLnN0b3JhZ2V9JHt0aGlzLnVuaXR9YDtcbiAgICB9XG4gICAgcmV0dXJuIHB2YztcbiAgfTtcbn1cbiIsIjxhdWktZm9ybS1pdGVtXG4gIHdpZHRoPVwibGFyZ2VcIlxuICAqbmdJZj1cIiduYW1lJyB8IHB1cmU6IGRpc3BsYXlGaWVsZFN1cHBvcnRlZFwiXG4+XG4gIDxsYWJlbCBhdWlGb3JtSXRlbUxhYmVsPnt7ICduYW1lJyB8IHRyYW5zbGF0ZSB9fTwvbGFiZWw+XG4gIDxpbnB1dFxuICAgIGF1aS1pbnB1dFxuICAgIGF1aUZvcm1JdGVtQ29udHJvbFxuICAgIFsobmdNb2RlbCldPVwibW9kZWwubmFtZVwiXG4gICAgbmFtZT1cIm5hbWVcIlxuICAgICNuYW1lPVwibmdNb2RlbFwiXG4gICAgbWF4bGVuZ3RoPVwiNjNcIlxuICAgIFtwbGFjZWhvbGRlcl09XCJyZXNvdXJjZU5hbWVSZWcudGlwIHwgdHJhbnNsYXRlXCJcbiAgICBbcGF0dGVybl09XCJyZXNvdXJjZU5hbWVSZWcucGF0dGVyblwiXG4gICAgcmVxdWlyZWRcbiAgLz5cbiAgPGFjbC1lcnJvcnMtbWFwcGVyXG4gICAgYXVpRm9ybUl0ZW1FcnJvclxuICAgIFtlcnJvcnNdPVwibmFtZS5lcnJvcnNcIlxuICAgIFtlcnJvcnNNYXBwZXJdPVwie1xuICAgICAgcGF0dGVybjogcmVzb3VyY2VOYW1lUmVnLnRpcCB8IHRyYW5zbGF0ZSxcbiAgICB9XCJcbiAgPjwvYWNsLWVycm9ycy1tYXBwZXI+XG48L2F1aS1mb3JtLWl0ZW0+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCInZGF0YVNvdXJjZScgfCBwdXJlOiBkaXNwbGF5RmllbGRTdXBwb3J0ZWRcIj5cbiAgPGF1aS1mb3JtLWl0ZW0gKm5nSWY9XCJtb2RlbC5kYXRhU291cmNlIGFzIGRhdGFTb3VyY2VcIj5cbiAgICA8bGFiZWwgYXVpRm9ybUl0ZW1MYWJlbD57eyAnc3RvcmFnZS5kYXRhX3NvdXJjZScgfCB0cmFuc2xhdGUgfX08L2xhYmVsPlxuICAgIHt7IGRhdGFTb3VyY2UubmFtZSB9fVxuICA8L2F1aS1mb3JtLWl0ZW0+XG48L25nLWNvbnRhaW5lcj5cblxuPGF1aS1mb3JtLWl0ZW0gKm5nSWY9XCInY3JlYXRlVHlwZScgfCBwdXJlOiBkaXNwbGF5RmllbGRTdXBwb3J0ZWRcIj5cbiAgPGxhYmVsIGF1aUZvcm1JdGVtTGFiZWw+e3sgJ3N0b3JhZ2UuY3JlYXRlX21ldGhvZCcgfCB0cmFuc2xhdGUgfX08L2xhYmVsPlxuICA8YXVpLXJhZGlvLWdyb3VwXG4gICAgc2l6ZT1cIm1lZGl1bVwiXG4gICAgWyhuZ01vZGVsKV09XCJjcmVhdGVNZXRob2RcIlxuICAgIG5hbWU9XCJjcmVhdGVNZXRob2RcIlxuICAgIFthY2xSZWFkb25seUZpZWxkXT1cImlzRnJvbVNuYXBzaG90IHx8ICEhY3JlYXRlVHlwZVwiXG4gICAgW2FjbFJlYWRvbmx5RmllbGRUZW1wbGF0ZV09XCJjcmVhdGVUeXBlVG1wbFwiXG4gICAgKG5nTW9kZWxDaGFuZ2UpPVwiY3JlYXRlTWV0aG9kQ2hhbmdlKCRldmVudClcIlxuICA+XG4gICAgPGF1aS1yYWRpby1idXR0b24gW3ZhbHVlXT1cIlB2Y1N0b3JhZ2VDbGFzc0NyZWF0ZVR5cGUuRFlOQU1JQ1wiPlxuICAgICAge3sgJ3N0b3JhZ2UuZHluYW1pY19jcmVhdGUnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9hdWktcmFkaW8tYnV0dG9uPlxuICAgIDxhdWktcmFkaW8tYnV0dG9uIFt2YWx1ZV09XCJQdmNTdG9yYWdlQ2xhc3NDcmVhdGVUeXBlLlNUQVRJQ1wiPlxuICAgICAge3sgJ3N0b3JhZ2Uuc3RhdGljX21hdGNoJyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvYXVpLXJhZGlvLWJ1dHRvbj5cbiAgPC9hdWktcmFkaW8tZ3JvdXA+XG4gIDxuZy10ZW1wbGF0ZSAjY3JlYXRlVHlwZVRtcGw+XG4gICAge3tcbiAgICAgIChjcmVhdGVNZXRob2QgPT09IFB2Y1N0b3JhZ2VDbGFzc0NyZWF0ZVR5cGUuRFlOQU1JQ1xuICAgICAgICA/ICdzdG9yYWdlLmR5bmFtaWNfY3JlYXRlJ1xuICAgICAgICA6ICdzdG9yYWdlLnN0YXRpY19tYXRjaCdcbiAgICAgICkgfCB0cmFuc2xhdGVcbiAgICB9fVxuICA8L25nLXRlbXBsYXRlPlxuPC9hdWktZm9ybS1pdGVtPlxuXG48bmctY29udGFpbmVyICpuZ0lmPVwiJ3N0b3JhZ2VDbGFzc05hbWUnIHwgcHVyZTogZGlzcGxheUZpZWxkU3VwcG9ydGVkXCI+XG4gIDxhdWktZm9ybS1pdGVtXG4gICAgKm5nSWY9XCJjcmVhdGVNZXRob2QgIT09IFB2Y1N0b3JhZ2VDbGFzc0NyZWF0ZVR5cGUuU1RBVElDXCJcbiAgICB3aWR0aD1cIm1lZGl1bVwiXG4gID5cbiAgICA8bGFiZWwgYXVpRm9ybUl0ZW1MYWJlbD57eyAnc3RvcmFnZWNsYXNzJyB8IHRyYW5zbGF0ZSB9fTwvbGFiZWw+XG4gICAgPGFjbC1zdG9yYWdlY2xhc3Mtc2VsZWN0XG4gICAgICBbc3RvcmFnZUNsYXNzZXNdPVwic3RvcmFnZUNsYXNzTGlzdCQgfCBhc3luY1wiXG4gICAgICBbdm9sdW1lU25hcHNob3RDbGFzc2VzXT1cInZvbHVtZVNuYXBzaG90Q2xhc3NMaXN0JCB8IGFzeW5jXCJcbiAgICAgIFtpc0Zyb21TbmFwc2hvdF09XCJpc0Zyb21TbmFwc2hvdFwiXG4gICAgICBhdWlGb3JtSXRlbUNvbnRyb2xcbiAgICAgIHJlcXVpcmVkXG4gICAgICBbKG5nTW9kZWwpXT1cIm1vZGVsLnN0b3JhZ2VDbGFzc05hbWVcIlxuICAgICAgbmFtZT1cInN0b3JhZ2VDbGFzc05hbWVcIlxuICAgICAgI3N0b3JhZ2VDbGFzc05hbWU9XCJuZ01vZGVsXCJcbiAgICAgIChzdG9yYWdlQ2xhc3NDaGFuZ2UpPVwic3RvcmFnZWNsYXNzQ2hhbmdlKCRldmVudClcIlxuICAgID48L2FjbC1zdG9yYWdlY2xhc3Mtc2VsZWN0PlxuICAgIDxhY2wtZXJyb3JzLW1hcHBlclxuICAgICAgYXVpRm9ybUl0ZW1FcnJvclxuICAgICAgW2Vycm9yc109XCJzdG9yYWdlQ2xhc3NOYW1lLmVycm9yc1wiXG4gICAgPjwvYWNsLWVycm9ycy1tYXBwZXI+XG4gIDwvYXVpLWZvcm0taXRlbT5cbjwvbmctY29udGFpbmVyPlxuXG48YXVpLWZvcm0taXRlbSAqbmdJZj1cIidhY2Nlc3NNb2RlcycgfCBwdXJlOiBkaXNwbGF5RmllbGRTdXBwb3J0ZWRcIj5cbiAgPGxhYmVsIGF1aUZvcm1JdGVtTGFiZWw+e3sgJ3N0b3JhZ2UuYWNjZXNzX21vZGUnIHwgdHJhbnNsYXRlIH19PC9sYWJlbD5cbiAgPGF1aS1yYWRpby1ncm91cFxuICAgIGF1aUZvcm1JdGVtQ29udHJvbFxuICAgIFsobmdNb2RlbCldPVwibW9kZWwuYWNjZXNzTW9kZXNcIlxuICAgIHJlcXVpcmVkXG4gICAgbmFtZT1cImFjY2Vzc01vZGVzXCJcbiAgICAjYWNjZXNzTW9kZT1cIm5nTW9kZWxcIlxuICA+XG4gICAgPGF1aS1yYWRpby1idXR0b25cbiAgICAgICpuZ0Zvcj1cImxldCBtb2RlIG9mIGFjY2Vzc01vZGVzXCJcbiAgICAgIFthdWlUb29sdGlwXT1cIidzdG9yYWdlLnN0b3JhZ2VfZm9yYmlkX3NlbGVjdF9hY2Nlc3NfbW9kZScgfCB0cmFuc2xhdGVcIlxuICAgICAgW2F1aVRvb2x0aXBEaXNhYmxlZF09XCJcbiAgICAgICAgIShcbiAgICAgICAgICBtb2RlXG4gICAgICAgICAgfCBwdXJlXG4gICAgICAgICAgICA6IHN0b3JhZ2VDb21tb25VdGlsLmlzQWNjZXNzTW9kZURpc2FibGVkXG4gICAgICAgICAgICA6IHNlbGVjdGVkU3RvcmFnZVNlbGVjdE9wdGlvblxuICAgICAgICApXG4gICAgICBcIlxuICAgICAgW3ZhbHVlXT1cIm1vZGVcIlxuICAgICAgW2Rpc2FibGVkXT1cIlxuICAgICAgICBtb2RlXG4gICAgICAgICAgfCBwdXJlXG4gICAgICAgICAgICA6IHN0b3JhZ2VDb21tb25VdGlsLmlzQWNjZXNzTW9kZURpc2FibGVkXG4gICAgICAgICAgICA6IHNlbGVjdGVkU3RvcmFnZVNlbGVjdE9wdGlvblxuICAgICAgXCJcbiAgICA+XG4gICAgICB7eyAnc3RvcmFnZS4nICsgQWNjZXNzTW9kZVRyYW5zbGF0ZUtleVttb2RlXSB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvYXVpLXJhZGlvLWJ1dHRvbj5cbiAgPC9hdWktcmFkaW8tZ3JvdXA+XG4gIDxkaXYgYXVpRm9ybUl0ZW1BZGRvbj5cbiAgICA8YXVpLWljb25cbiAgICAgIFthdWlUb29sdGlwXT1cImFjY2Vzc01vZGVUaXBcIlxuICAgICAgW2F1aVRvb2x0aXBQb3NpdGlvbl09XCIndG9wIGNlbnRlcidcIlxuICAgICAgaWNvbj1cInF1ZXN0aW9uX2NpcmNsZVwiXG4gICAgICBjbGFzcz1cImljb24tLWhlbHBcIlxuICAgID48L2F1aS1pY29uPlxuICA8L2Rpdj5cbiAgPGFjbC1lcnJvcnMtbWFwcGVyXG4gICAgYXVpRm9ybUl0ZW1FcnJvclxuICAgIFtlcnJvcnNdPVwiYWNjZXNzTW9kZS5lcnJvcnNcIlxuICA+PC9hY2wtZXJyb3JzLW1hcHBlcj5cbiAgPG5nLXRlbXBsYXRlICNhY2Nlc3NNb2RlVGlwPlxuICAgIDx1bCBjbGFzcz1cImQtbGlzdFwiPlxuICAgICAgPGxpPnt7ICdzdG9yYWdlLmFjY2Vzc19tb2RlX3J3bycgfCB0cmFuc2xhdGUgfX08L2xpPlxuICAgICAgPGxpPnt7ICdzdG9yYWdlLmFjY2Vzc19tb2RlX3JveCcgfCB0cmFuc2xhdGUgfX08L2xpPlxuICAgICAgPGxpPnt7ICdzdG9yYWdlLmFjY2Vzc19tb2RlX3J3eCcgfCB0cmFuc2xhdGUgfX08L2xpPlxuICAgIDwvdWw+XG4gIDwvbmctdGVtcGxhdGU+XG48L2F1aS1mb3JtLWl0ZW0+XG5cbjxhdWktZm9ybS1pdGVtXG4gIHdpZHRoPVwibWVkaXVtXCJcbiAgKm5nSWY9XCInc3RvcmFnZScgfCBwdXJlOiBkaXNwbGF5RmllbGRTdXBwb3J0ZWRcIlxuPlxuICA8bGFiZWwgYXVpRm9ybUl0ZW1MYWJlbD57eyAnc3RvcmFnZS5jYXBhY2l0eScgfCB0cmFuc2xhdGUgfX08L2xhYmVsPlxuICA8aW5wdXRcbiAgICBhdWktaW5wdXRcbiAgICB0eXBlPVwidGV4dFwiXG4gICAgW3BhdHRlcm5dPVwiUE9TSVRJVkVfSU5UX1BBVFRFUk4ucGF0dGVyblwiXG4gICAgWyhuZ01vZGVsKV09XCJtb2RlbC5zdG9yYWdlXCJcbiAgICBuYW1lPVwic3RvcmFnZVwiXG4gICAgI3N0b3JhZ2U9XCJuZ01vZGVsXCJcbiAgICByZXF1aXJlZFxuICAgIGF1aUZvcm1JdGVtQ29udHJvbFxuICAgIHJlcXVpcmVkXG4gICAgW2FjbFJlYWRvbmx5RmllbGRdPVwiaXNGcm9tU25hcHNob3RcIlxuICAgIFthY2xSZWFkb25seUZpZWxkVGVtcGxhdGVdPVwiY2FwYWNpdHlUcGxcIlxuICAvPlxuICA8YXVpLXNlbGVjdFxuICAgICpuZ0lmPVwiIWlzRnJvbVNuYXBzaG90XCJcbiAgICBbKG5nTW9kZWwpXT1cInVuaXRcIlxuICAgIGNsYXNzPVwidHctbWF4LXctWzYwcHhdIHR3LW1sLVstNjBweF1cIlxuICA+XG4gICAgPGF1aS1vcHRpb25cbiAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIFVOSVRTXCJcbiAgICAgIFtsYWJlbF09XCJpdGVtXCJcbiAgICAgIFt2YWx1ZV09XCJpdGVtXCJcbiAgICA+XG4gICAgICB7eyBpdGVtIH19XG4gICAgPC9hdWktb3B0aW9uPlxuICA8L2F1aS1zZWxlY3Q+XG4gIDxuZy10ZW1wbGF0ZSAjY2FwYWNpdHlUcGw+IHt7IG1vZGVsLnN0b3JhZ2UgfX1HaSA8L25nLXRlbXBsYXRlPlxuICA8YWNsLWVycm9ycy1tYXBwZXJcbiAgICBhdWlGb3JtSXRlbUVycm9yXG4gICAgW2Vycm9yc109XCJzdG9yYWdlLmVycm9yc1wiXG4gICAgW2Vycm9yc01hcHBlcl09XCJ7XG4gICAgICBwYXR0ZXJuOiBQT1NJVElWRV9JTlRfUEFUVEVSTi50aXAgfCB0cmFuc2xhdGUsXG4gICAgfVwiXG4gID48L2FjbC1lcnJvcnMtbWFwcGVyPlxuPC9hdWktZm9ybS1pdGVtPlxuXG48YXVpLWZvcm0taXRlbSAqbmdJZj1cIid2b2x1bWVNb2RlJyB8IHB1cmU6IGRpc3BsYXlGaWVsZFN1cHBvcnRlZFwiPlxuICA8bGFiZWwgYXVpRm9ybUl0ZW1MYWJlbD57eyAnc3RvcmFnZS52b2x1bWVfbW9kZScgfCB0cmFuc2xhdGUgfX08L2xhYmVsPlxuICA8YXVpLXJhZGlvLWdyb3VwXG4gICAgc2l6ZT1cIm1lZGl1bVwiXG4gICAgWyhuZ01vZGVsKV09XCJtb2RlbC52b2x1bWVNb2RlXCJcbiAgICBuYW1lPVwidm9sdW1lTW9kZVwiXG4gICAgW2FjbFJlYWRvbmx5RmllbGRdPVwiaXNGcm9tU25hcHNob3QgfHwgISF2b2x1bWVNb2RlXCJcbiAgICBbYWNsUmVhZG9ubHlGaWVsZFRlbXBsYXRlXT1cInZvbHVtZU1vZGVUbXBsXCJcbiAgPlxuICAgIDxhdWktcmFkaW8tYnV0dG9uXG4gICAgICAqbmdGb3I9XCJsZXQgbW9kZSBvZiB2b2x1bWVNb2Rlc1wiXG4gICAgICBbYXVpVG9vbHRpcF09XCInc3RvcmFnZS5zdG9yYWdlX2ZvcmJpZF9zZWxlY3Rfdm9sdW1lX21vZGUnIHwgdHJhbnNsYXRlXCJcbiAgICAgIFthdWlUb29sdGlwRGlzYWJsZWRdPVwiXG4gICAgICAgICEoXG4gICAgICAgICAgbW9kZVxuICAgICAgICAgIHwgcHVyZVxuICAgICAgICAgICAgOiBzdG9yYWdlQ29tbW9uVXRpbC5pc1ZvbHVtZU1vZGVEaXNhYmxlZFxuICAgICAgICAgICAgOiBzZWxlY3RlZFN0b3JhZ2VTZWxlY3RPcHRpb25cbiAgICAgICAgKVxuICAgICAgXCJcbiAgICAgIFtkaXNhYmxlZF09XCJcbiAgICAgICAgbW9kZVxuICAgICAgICAgIHwgcHVyZVxuICAgICAgICAgICAgOiBzdG9yYWdlQ29tbW9uVXRpbC5pc1ZvbHVtZU1vZGVEaXNhYmxlZFxuICAgICAgICAgICAgOiBzZWxlY3RlZFN0b3JhZ2VTZWxlY3RPcHRpb25cbiAgICAgIFwiXG4gICAgICBbdmFsdWVdPVwibW9kZVwiXG4gICAgPlxuICAgICAge3sgJ3N0b3JhZ2UuJyArIFZvbHVtZU1vZGVUcmFuc2xhdGVLZXlbbW9kZV0gfCB0cmFuc2xhdGUgfX1cbiAgICA8L2F1aS1yYWRpby1idXR0b24+XG4gIDwvYXVpLXJhZGlvLWdyb3VwPlxuICA8ZGl2XG4gICAgYXVpRm9ybUl0ZW1BZGRvblxuICAgICpuZ0lmPVwiIXZvbHVtZU1vZGVcIlxuICA+XG4gICAgPGF1aS1pY29uXG4gICAgICBbYXVpVG9vbHRpcF09XCJ2b2x1bWVNb2RlVGlwXCJcbiAgICAgIFthdWlUb29sdGlwUG9zaXRpb25dPVwiJ3RvcCBjZW50ZXInXCJcbiAgICAgIGljb249XCJxdWVzdGlvbl9jaXJjbGVcIlxuICAgICAgY2xhc3M9XCJpY29uLS1oZWxwXCJcbiAgICA+PC9hdWktaWNvbj5cbiAgPC9kaXY+XG4gIDxuZy10ZW1wbGF0ZSAjdm9sdW1lTW9kZVRpcD5cbiAgICA8dWwgY2xhc3M9XCJkLWxpc3RcIj5cbiAgICAgIDxsaT57eyAnc3RvcmFnZS52b2x1bWVfbW9kZV9maWxlX3N5c3RlbV9oaW50JyB8IHRyYW5zbGF0ZSB9fTwvbGk+XG4gICAgICA8bGk+e3sgJ3N0b3JhZ2Uudm9sdW1lX21vZGVfYmxvY2tfZGV2aWNlX2hpbnQnIHwgdHJhbnNsYXRlIH19PC9saT5cbiAgICA8L3VsPlxuICA8L25nLXRlbXBsYXRlPlxuICA8bmctdGVtcGxhdGUgI3ZvbHVtZU1vZGVUbXBsPlxuICAgIHt7XG4gICAgICAobW9kZWwudm9sdW1lTW9kZSA9PT0gJ0ZpbGVzeXN0ZW0nXG4gICAgICAgID8gJ3N0b3JhZ2UuZmlsZV9zeXN0ZW0nXG4gICAgICAgIDogJ3N0b3JhZ2UuYmxvY2tfZGV2aWNlJ1xuICAgICAgKSB8IHRyYW5zbGF0ZVxuICAgIH19XG4gIDwvbmctdGVtcGxhdGU+XG48L2F1aS1mb3JtLWl0ZW0+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93QWR2YW5jZWRGaWVsZFwiPlxuICA8YWNsLWZvbGRhYmxlLWJsb2NrIGhpbnQ9XCJ7eyAnc3RvcmFnZS5hZHZhbmNlZCcgfCB0cmFuc2xhdGUgfX1cIj5cbiAgICA8YXVpLWZvcm0taXRlbVxuICAgICAgZm9ybUdyb3VwTmFtZT1cIm1ldGFkYXRhXCJcbiAgICAgICpuZ0lmPVwiJ2xhYmVscycgfCBwdXJlOiBkaXNwbGF5RmllbGRTdXBwb3J0ZWRcIlxuICAgID5cbiAgICAgIDxsYWJlbCBhdWlGb3JtSXRlbUxhYmVsPnt7ICdsYWJlbCcgfCB0cmFuc2xhdGUgfX08L2xhYmVsPlxuICAgICAgPGFjbC1rZXktdmFsdWUtZm9ybS10YWJsZVxuICAgICAgICBhdWlGb3JtSXRlbUNvbnRyb2xcbiAgICAgICAgWyhuZ01vZGVsKV09XCJtb2RlbC5sYWJlbHNcIlxuICAgICAgICBuYW1lPVwibGFiZWxzXCJcbiAgICAgICAgW3Jlc291cmNlTmFtZVRyYW5zbGF0ZWRdPVwiJ3N0b3JhZ2UubGFiZWxzJyB8IHRyYW5zbGF0ZSB8IGxvd2VyY2FzZVwiXG4gICAgICAgIFt2YWxpZGF0b3JdPVwibGFiZWxWYWxpZGF0b3JcIlxuICAgICAgICBbZXJyb3JNYXBwZXJdPVwibGFiZWxFcnJvck1hcHBlciQgfCBhc3luY1wiXG4gICAgICA+PC9hY2wta2V5LXZhbHVlLWZvcm0tdGFibGU+XG4gICAgPC9hdWktZm9ybS1pdGVtPlxuICAgIDxhdWktZm9ybS1pdGVtXG4gICAgICBmb3JtR3JvdXBOYW1lPVwibWV0YWRhdGFcIlxuICAgICAgKm5nSWY9XCInYW5ub3RhdGlvbnMnIHwgcHVyZTogZGlzcGxheUZpZWxkU3VwcG9ydGVkXCJcbiAgICA+XG4gICAgICA8bGFiZWwgYXVpRm9ybUl0ZW1MYWJlbD57eyAnc3RvcmFnZS5rOHNfYW5ub3RhdGlvbicgfCB0cmFuc2xhdGUgfX08L2xhYmVsPlxuICAgICAgPGFjbC1rZXktdmFsdWUtZm9ybS10YWJsZVxuICAgICAgICBhdWlGb3JtSXRlbUNvbnRyb2xcbiAgICAgICAgW3Jlc291cmNlTmFtZVRyYW5zbGF0ZWRdPVwiXG4gICAgICAgICAgJ3N0b3JhZ2UuazhzX2Fubm90YXRpb24nIHwgdHJhbnNsYXRlIHwgbG93ZXJjYXNlXG4gICAgICAgIFwiXG4gICAgICAgIFsobmdNb2RlbCldPVwibW9kZWwuYW5ub3RhdGlvbnNcIlxuICAgICAgICBuYW1lPVwiYW5ub3RhdGlvbnNcIlxuICAgICAgICBbdmFsaWRhdG9yXT1cImFubm90YXRpb25WYWxpZGF0b3JcIlxuICAgICAgICBbZXJyb3JNYXBwZXJdPVwiYW5ub3RhdGlvbkVycm9yTWFwcGVyJCB8IGFzeW5jXCJcbiAgICAgID48L2FjbC1rZXktdmFsdWUtZm9ybS10YWJsZT5cbiAgICA8L2F1aS1mb3JtLWl0ZW0+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIidzZWxlY3RvcicgfCBwdXJlOiBkaXNwbGF5RmllbGRTdXBwb3J0ZWRcIj5cbiAgICAgIDxhdWktZm9ybS1pdGVtXG4gICAgICAgIFtoaWRkZW5dPVwiY3JlYXRlTWV0aG9kID09PSBQdmNTdG9yYWdlQ2xhc3NDcmVhdGVUeXBlLkRZTkFNSUNcIlxuICAgICAgPlxuICAgICAgICA8bGFiZWwgYXVpRm9ybUl0ZW1MYWJlbD57eyAnc3RvcmFnZS5zZWxlY3RvcicgfCB0cmFuc2xhdGUgfX08L2xhYmVsPlxuICAgICAgICA8YWNsLWtleS12YWx1ZS1mb3JtLXRhYmxlXG4gICAgICAgICAgYXVpRm9ybUl0ZW1Db250cm9sXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJtb2RlbC5zZWxlY3RvclwiXG4gICAgICAgICAgbmFtZT1cInNlbGVjdG9yXCJcbiAgICAgICAgPjwvYWNsLWtleS12YWx1ZS1mb3JtLXRhYmxlPlxuICAgICAgPC9hdWktZm9ybS1pdGVtPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2FjbC1mb2xkYWJsZS1ibG9jaz5cbjwvbmctY29udGFpbmVyPlxuIl19
|
|
698
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9zdG9yYWdlL3NyYy9saWIvY29tcG9uZW50cy9wdmMtZm9ybS9jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9tb2R1bGVzL3N0b3JhZ2Uvc3JjL2xpYi9jb21wb25lbnRzL3B2Yy1mb3JtL3RlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDTCxVQUFVLEVBQ1YsVUFBVSxFQUNWLFdBQVcsRUFDWCxXQUFXLEVBQ1gsWUFBWSxFQUNaLGFBQWEsR0FDZCxNQUFNLFlBQVksQ0FBQztBQUNwQixPQUFPLEVBRUwsV0FBVyxFQUNYLG9DQUFvQyxFQUNwQyw4QkFBOEIsRUFDOUIsK0JBQStCLEVBQy9CLHlCQUF5QixFQUN6QixVQUFVLEVBRVYsc0JBQXNCLEVBQ3RCLDBCQUEwQixFQUcxQix1QkFBdUIsRUFDdkIsWUFBWSxFQUNaLHNCQUFzQixFQUN0QixzQkFBc0IsRUFDdEIsZ0JBQWdCLEVBQ2hCLGVBQWUsRUFDZixhQUFhLEVBQ2IsY0FBYyxFQUNkLFNBQVMsRUFDVCxXQUFXLEVBRVgsVUFBVSxFQUVWLElBQUksRUFFSixnQkFBZ0IsRUFDaEIsb0JBQW9CLEVBQ3BCLFFBQVEsRUFDUixvQkFBb0IsR0FDckIsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDeEUsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsS0FBSyxFQUNMLFVBQVUsR0FDWCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9FLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxPQUFPLENB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QUFlLE1BSWYsY0FBYztrQkFEYixLQUFLO1lBS04sVUFBVTtrQkFEVCxLQUFLO1lBS04sVUFBVTtrQkFEVCxLQUFLO1lBS04sYUFBYTtrQkFEWixLQUFLO1lBK0lOLHFCQUFxQjtrRkE5S1Ysa0NBQWtDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRm9ybU1vZHVsZSxcbiAgSWNvbk1vZHVsZSxcbiAgSW5wdXRNb2R1bGUsXG4gIFJhZGlvTW9kdWxlLFxuICBTZWxlY3RNb2R1bGUsXG4gIFRvb2x0aXBNb2R1bGUsXG59IGZyb20gJ0BhbGF1ZGEvdWknO1xuaW1wb3J0IHtcbiAgQWNjZXNzTW9kZSxcbiAgQWNjZXNzTW9kZXMsXG4gIGdldEs4c1Jlc291cmNlQW5ub3RhdGlvbkVycm9yTWFwcGVyJCxcbiAgazhzUmVzb3VyY2VBbm5vdGF0aW9uVmFsaWRhdG9yLFxuICBnZXRLOHNSZXNvdXJjZUxhYmVsRXJyb3JNYXBwZXIkLFxuICBrOHNSZXNvdXJjZUxhYmVsVmFsaWRhdG9yLFxuICBWb2x1bWVNb2RlLFxuICBMYWJlbFNlbGVjdG9yLFxuICBGb2xkYWJsZUJsb2NrQ29tcG9uZW50LFxuICBLZXlWYWx1ZUZvcm1UYWJsZUNvbXBvbmVudCxcbiAgUGVyc2lzdGVudFZvbHVtZUNsYWltLFxuICBQZXJzaXN0ZW50Vm9sdW1lQ2xhaW1EYXRhU291cmNlLFxuICBjcmVhdGVOZXN0ZWRGb3JtQ29udHJvbCxcbiAgZGF0YVRyYW5zZmVyLFxuICBSZWFkb25seUZpZWxkRGlyZWN0aXZlLFxuICBLOFNfUkVTT1VSQ0VfTkFNRV9CQVNFLFxuICBUcmFuc2xhdGVTZXJ2aWNlLFxuICBPYnNlcnZhYmxlSW5wdXQsXG4gIEs4c0FwaVNlcnZpY2UsXG4gIFJFU09VUkNFX1RZUEVTLFxuICBza2lwRXJyb3IsXG4gIFZvbHVtZU1vZGVzLFxuICBWYWx1ZU9mLFxuICBwdWJsaXNoUmVmLFxuICBTdHJpbmdNYXAsXG4gIGJpbmQsXG4gIFdvcmtzcGFjZVBhcmFtcyxcbiAgVFJBTlNMQVRFX01PRFVMRSxcbiAgRVJST1JTX01BUFBFUl9NT0RVTEUsXG4gIFB1cmVQaXBlLFxuICBQT1NJVElWRV9JTlRfUEFUVEVSTixcbn0gZnJvbSAnQGFsYXVkYS1mZS9jb21tb24nO1xuaW1wb3J0IHsgQXN5bmNQaXBlLCBMb3dlckNhc2VQaXBlLCBOZ0ZvciwgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgZm9yd2FyZFJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgTkdfVkFMSURBVE9SUywgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBjb21wb3NlIH0gZnJvbSAncmFtZGEnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgY29tYmluZUxhdGVzdCwgbWFwLCBvZiwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7XG4gIFN0b3JhZ2VTZWxlY3RPcHRpb24sXG4gIFN0b3JhZ2VDb21tb25VdGlsU2VydmljZSxcbn0gZnJvbSAnLi4vLi4vc2VydmljZXMvY29tbW9uLXV0aWwuc2VydmljZSc7XG5pbXBvcnQgeyBTdG9yYWdlQ2xhc3MsIFZvbHVtZVNuYXBzaG90Q2xhc3MgfSBmcm9tICcuLi8uLi90eXBlcy9rOHMnO1xuaW1wb3J0IHtcbiAgQWNjZXNzTW9kZVRyYW5zbGF0ZUtleSxcbiAgVm9sdW1lTW9kZVRyYW5zbGF0ZUtleSxcbn0gZnJvbSAnLi4vLi4vdXRpbHMvY29uc3RhbnRzJztcbmltcG9ydCB7IGJ1aWxkUHZjUmVzb3VyY2UgfSBmcm9tICcuLi8uLi91dGlscy91dGlsJztcbmltcG9ydCB7IFN0b3JhZ2VDbGFzc1NlbGVjdENvbXBvbmVudCB9IGZyb20gJy4uL3N0b3JhZ2VjbGFzcy1zZWxlY3QvY29tcG9uZW50JztcblxuY29uc3QgUHZjU3RvcmFnZUNsYXNzQ3JlYXRlVHlwZSA9IHtcbiAgRFlOQU1JQzogJ2R5bmFtaWMnLFxuICBTVEFUSUM6ICdzdGF0aWMnLFxufSBhcyBjb25zdDtcblxudHlwZSBQdmNTdG9yYWdlQ2xhc3NDcmVhdGVUeXBlID0gVmFsdWVPZjx0eXBlb2YgUHZjU3RvcmFnZUNsYXNzQ3JlYXRlVHlwZT47XG5cbmludGVyZmFjZSBQZXJzaXN0ZW50Vm9sdW1lRm9ybU1vZGVsIHtcbiAgbmFtZTogc3RyaW5nO1xuICBsYWJlbHM6IFN0cmluZ01hcDtcbiAgYW5ub3RhdGlvbnM6IFN0cmluZ01hcDtcbiAgLy8gbnVsbCDooajnpLrkvb/nlKjpu5jorqQgc2NcbiAgLy8gXCJcIiDmiJbkuI3lhpnor6XlrZfmrrXooajnpLrkuI3orr7nva7lrZjlgqjnsbtcbiAgc3RvcmFnZUNsYXNzTmFtZTogc3RyaW5nO1xuICBhY2Nlc3NNb2RlczogQWNjZXNzTW9kZTtcbiAgdm9sdW1lTW9kZTogVm9sdW1lTW9kZTtcbiAgc3RvcmFnZTogc3RyaW5nO1xuICBkYXRhU291cmNlPzogUGVyc2lzdGVudFZvbHVtZUNsYWltRGF0YVNvdXJjZTtcbiAgc2VsZWN0b3I6IExhYmVsU2VsZWN0b3I7XG59XG5cbnR5cGUgRGlzcGxheUZpZWxkID0ga2V5b2YgUGVyc2lzdGVudFZvbHVtZUZvcm1Nb2RlbCB8ICdjcmVhdGVUeXBlJztcblxuY29uc3QgVU5JVFMgPSBbJ0dpJywgJ1RpJ10gYXMgY29uc3Q7XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ2FjbC1wdmMtZm9ybScsXG4gIHRlbXBsYXRlVXJsOiAndGVtcGxhdGUuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbXG4gICAgTmdJZixcbiAgICBOZ0ZvcixcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBGb3JtTW9kdWxlLFxuICAgIFJhZGlvTW9kdWxlLFxuICAgIElucHV0TW9kdWxlLFxuICAgIFNlbGVjdE1vZHVsZSxcbiAgICBUb29sdGlwTW9kdWxlLFxuICAgIEljb25Nb2R1bGUsXG4gICAgUHVyZVBpcGUsXG4gICAgQXN5bmNQaXBlLFxuICAgIExvd2VyQ2FzZVBpcGUsXG4gICAgUmVhZG9ubHlGaWVsZERpcmVjdGl2ZSxcbiAgICBGb2xkYWJsZUJsb2NrQ29tcG9uZW50LFxuICAgIFN0b3JhZ2VDbGFzc1NlbGVjdENvbXBvbmVudCxcbiAgICBLZXlWYWx1ZUZvcm1UYWJsZUNvbXBvbmVudCxcbiAgICBUUkFOU0xBVEVfTU9EVUxFLFxuICAgIEVSUk9SU19NQVBQRVJfTU9EVUxFLFxuICBdLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFBlcnNpc3RlbnRWb2x1bWVDbGFpbUZvcm1Db21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUGVyc2lzdGVudFZvbHVtZUNsYWltRm9ybUNvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBQZXJzaXN0ZW50Vm9sdW1lQ2xhaW1Gb3JtQ29tcG9uZW50IGV4dGVuZHMgY3JlYXRlTmVzdGVkRm9ybUNvbnRyb2w8XG4gIFBlcnNpc3RlbnRWb2x1bWVDbGFpbSxcbiAgUGVyc2lzdGVudFZvbHVtZUZvcm1Nb2RlbFxuPih7XG4gIGF1dG9FbWl0Q2hhbmdlOiB0cnVlLFxufSkge1xuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KVxuICBiYXNlUGFyYW1zOiBXb3Jrc3BhY2VQYXJhbXM7XG5cbiAgQE9ic2VydmFibGVJbnB1dCgpXG4gIGJhc2VQYXJhbXMkITogT2JzZXJ2YWJsZTxXb3Jrc3BhY2VQYXJhbXM+O1xuXG4gIEBJbnB1dCgpXG4gIHN0b3JhZ2VDbGFzc2VzOiBTdG9yYWdlQ2xhc3NbXTtcblxuICBAT2JzZXJ2YWJsZUlucHV0KClcbiAgc3RvcmFnZUNsYXNzZXMkITogT2JzZXJ2YWJsZTxTdG9yYWdlQ2xhc3NbXT47XG5cbiAgLy8g5b+r54Wn57G7IHB2YyDliJvlu7pcbiAgQElucHV0KClcbiAgaXNGcm9tU25hcHNob3Q6IGJvb2xlYW47XG5cbiAgLy8g5aaC5p6c5Lyg5YWl55u45bqU55qEIGNyZWF0ZVR5cGUg6KGo56S65Zu65a6a5YW25YC8XG4gIEBJbnB1dCgpXG4gIGNyZWF0ZVR5cGU6IFB2Y1N0b3JhZ2VDbGFzc0NyZWF0ZVR5cGU7XG5cbiAgLy8g5aaC5p6c5Lyg5YWl55u45bqU55qEIHZvbHVtZU1vZGUg6KGo56S65Zu65a6a5YW25YC8XG4gIEBJbnB1dCgpXG4gIHZvbHVtZU1vZGU6IFZvbHVtZU1vZGU7XG5cbiAgLy8g5aaC5p6c5Lyg5YWl55u45bqU55qEIGRpc3BsYXlGaWVsZCDooajnpLrlj6rkvJrlsZXnpLrlr7nlupTnmoQgY29udHJvbFxuICBASW5wdXQoKVxuICBkaXNwbGF5RmllbGRzOiBEaXNwbGF5RmllbGRbXTtcblxuICBnZXQgc2hvd0FkdmFuY2VkRmllbGQoKSB7XG4gICAgaWYgKCF0aGlzLmRpc3BsYXlGaWVsZHM/Lmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZGlzcGxheUZpZWxkcz8uc29tZShmaWVsZCA9PlxuICAgICAgWydsYWJlbHMnLCAnYW5ub3RhdGlvbnMnLCAnc2VsZWN0b3InXS5pbmNsdWRlcyhmaWVsZCksXG4gICAgKTtcbiAgfVxuXG4gIGdldCBpc0Zyb21TbmFwc2hvdEFuZFNvdXJjZVBWQ0V4aXN0KCkge1xuICAgIHJldHVybiB0aGlzLmlzRnJvbVNuYXBzaG90ICYmICEhdGhpcy5vcmlnaW5SZXNvdXJjZT8uc3BlYz8uc3RvcmFnZUNsYXNzTmFtZTtcbiAgfVxuXG4gIGdldCBzZWxlY3REZWZhdWx0KCkge1xuICAgIHJldHVybiB0aGlzLmlzRnJvbVNuYXBzaG90XG4gICAgICA/ICEhdGhpcy5vcmlnaW5SZXNvdXJjZT8uc3BlYz8uc3RvcmFnZUNsYXNzTmFtZVxuICAgICAgOiB0cnVlO1xuICB9XG5cbiAgZ2V0IHNob3dTdG9yYWdlQ2xhc3NIaW50V2hlbkZyb21TbmFwc2hvdCgpIHtcbiAgICByZXR1cm4gdGhpcy5pc0Zyb21TbmFwc2hvdCAmJiAhdGhpcy5vcmlnaW5SZXNvdXJjZT8uc3BlYz8uc3RvcmFnZUNsYXNzTmFtZTtcbiAgfVxuXG4gIGFjY2Vzc01vZGVzID0gQWNjZXNzTW9kZXM7XG4gIHZvbHVtZU1vZGVzID0gVm9sdW1lTW9kZXM7XG4gIFBPU0lUSVZFX0lOVF9QQVRURVJOID0gUE9TSVRJVkVfSU5UX1BBVFRFUk47XG4gIG9yaWdpblJlc291cmNlOiBQZXJzaXN0ZW50Vm9sdW1lQ2xhaW07XG5cbiAgb3ZlcnJpZGUgbW9kZWwgPSB7fSBhcyBQZXJzaXN0ZW50Vm9sdW1lRm9ybU1vZGVsO1xuXG4gIHJlc291cmNlTmFtZVJlZyA9IEs4U19SRVNPVVJDRV9OQU1FX0JBU0U7XG4gIGxhYmVsVmFsaWRhdG9yID0gazhzUmVzb3VyY2VMYWJlbFZhbGlkYXRvcjtcbiAgQWNjZXNzTW9kZVRyYW5zbGF0ZUtleSA9IEFjY2Vzc01vZGVUcmFuc2xhdGVLZXk7XG4gIFZvbHVtZU1vZGVUcmFuc2xhdGVLZXkgPSBWb2x1bWVNb2RlVHJhbnNsYXRlS2V5O1xuXG4gIGxhYmVsRXJyb3JNYXBwZXIkID0gZ2V0SzhzUmVzb3VyY2VMYWJlbEVycm9yTWFwcGVyJCh0aGlzLnRyYW5zbGF0ZSk7XG4gIGFubm90YXRpb25WYWxpZGF0b3IgPSBrOHNSZXNvdXJjZUFubm90YXRpb25WYWxpZGF0b3I7XG4gIGFubm90YXRpb25FcnJvck1hcHBlciQgPSBnZXRLOHNSZXNvdXJjZUFubm90YXRpb25FcnJvck1hcHBlciQodGhpcy50cmFuc2xhdGUpO1xuXG4gIGNyZWF0ZU1ldGhvZDogUHZjU3RvcmFnZUNsYXNzQ3JlYXRlVHlwZTtcbiAgUHZjU3RvcmFnZUNsYXNzQ3JlYXRlVHlwZSA9IFB2Y1N0b3JhZ2VDbGFzc0NyZWF0ZVR5cGU7XG4gIHNlbGVjdGVkU3RvcmFnZVNlbGVjdE9wdGlvbjogU3RvcmFnZVNlbGVjdE9wdGlvbjtcbiAgVU5JVFMgPSBVTklUUztcbiAgdW5pdCA9ICdHaSc7XG5cbiAgc3RvcmFnZUNsYXNzTGlzdCQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICB0aGlzLmJhc2VQYXJhbXMkLFxuICAgIHRoaXMuc3RvcmFnZUNsYXNzZXMkLFxuICBdKS5waXBlKFxuICAgIHN3aXRjaE1hcCgoW3sgY2x1c3RlciB9LCBzdG9yYWdlQ2xhc3Nlc10pID0+IHtcbiAgICAgIGlmIChzdG9yYWdlQ2xhc3Nlcykge1xuICAgICAgICByZXR1cm4gb2Yoc3RvcmFnZUNsYXNzZXMpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMuazhzQXBpXG4gICAgICAgIC5nZXRSZXNvdXJjZUxpc3Q8U3RvcmFnZUNsYXNzPih7XG4gICAgICAgICAgdHlwZTogUkVTT1VSQ0VfVFlQRVMuU1RPUkFHRV9DTEFTUyxcbiAgICAgICAgICBjbHVzdGVyLFxuICAgICAgICAgIHF1ZXJ5UGFyYW1zOiB7XG4gICAgICAgICAgICBsaW1pdDogJzAnLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5waXBlKG1hcChyZXMgPT4gcmVzPy5pdGVtcykpO1xuICAgIH0pLFxuICAgIHB1Ymxpc2hSZWYoKSxcbiAgKTtcblxuICB2b2x1bWVTbmFwc2hvdENsYXNzTGlzdCQgPSB0aGlzLmJhc2VQYXJhbXMkLnBpcGUoXG4gICAgc3dpdGNoTWFwKGJhc2VQYXJhbXMgPT5cbiAgICAgIHRoaXMuazhzQXBpXG4gICAgICAgIC5nZXRSZXNvdXJjZUxpc3Q8Vm9sdW1lU25hcHNob3RDbGFzcz4oe1xuICAgICAgICAgIHR5cGU6IFJFU09VUkNFX1RZUEVTLlZPTFVNRV9TTkFQU0hPVF9DTEFTUyxcbiAgICAgICAgICBjbHVzdGVyOiBiYXNlUGFyYW1zLmNsdXN0ZXIsXG4gICAgICAgIH0pXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcChyID0+IHIuaXRlbXMpLFxuICAgICAgICAgIHNraXBFcnJvcihbXSBhcyBWb2x1bWVTbmFwc2hvdENsYXNzW10pLFxuICAgICAgICApLFxuICAgICksXG4gICAgcHVibGlzaFJlZigpLFxuICApO1xuXG4gIG92ZXJyaWRlIHdyaXRlVmFsdWUodmFsdWU6IFBlcnNpc3RlbnRWb2x1bWVDbGFpbSk6IHZvaWQge1xuICAgIHRoaXMub3JpZ2luUmVzb3VyY2UgPSB2YWx1ZTtcbiAgICB0aGlzLm1vZGVsID0gdGhpcy52YWx1ZUluKFxuICAgICAgdmFsdWUgPz9cbiAgICAgICAgYnVpbGRQdmNSZXNvdXJjZSh7XG4gICAgICAgICAgbmFtZXNwYWNlOiB0aGlzLmJhc2VQYXJhbXMubmFtZXNwYWNlLFxuICAgICAgICAgIHZvbHVtZU1vZGU6IHRoaXMudm9sdW1lTW9kZSxcbiAgICAgICAgfSksXG4gICAgKTtcbiAgICBpZiAodGhpcy5jcmVhdGVUeXBlKSB7XG4gICAgICB0aGlzLmNyZWF0ZU1ldGhvZCA9IHRoaXMuY3JlYXRlVHlwZTtcbiAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgc3RvcmFnZUNvbW1vblV0aWw6IFN0b3JhZ2VDb21tb25VdGlsU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGs4c0FwaTogSzhzQXBpU2VydmljZSxcbiAgKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIGNvbnN0IFt0b01vZGVsLCB0b1Jlc291cmNlXSA9IGRhdGFUcmFuc2ZlcjxcbiAgICAgIFBlcnNpc3RlbnRWb2x1bWVDbGFpbSxcbiAgICAgIFBlcnNpc3RlbnRWb2x1bWVGb3JtTW9kZWxcbiAgICA+KHtcbiAgICAgIG5hbWU6ICdtZXRhZGF0YS5uYW1lJyxcbiAgICAgIGxhYmVsczogJ21ldGFkYXRhLmxhYmVscycsXG4gICAgICBhbm5vdGF0aW9uczogJ21ldGFkYXRhLmFubm90YXRpb25zJyxcbiAgICAgIHN0b3JhZ2VDbGFzc05hbWU6ICdzcGVjLnN0b3JhZ2VDbGFzc05hbWUnLFxuICAgICAgYWNjZXNzTW9kZXM6IFsnc3BlYycsICdhY2Nlc3NNb2RlcycsIDBdLFxuICAgICAgdm9sdW1lTW9kZTogJ3NwZWMudm9sdW1lTW9kZScsXG4gICAgICBzdG9yYWdlOiAnc3BlYy5yZXNvdXJjZXMucmVxdWVzdHMuc3RvcmFnZScsXG4gICAgICBkYXRhU291cmNlOiAnc3BlYy5kYXRhU291cmNlJyxcbiAgICAgIHNlbGVjdG9yOiAnc3BlYy5zZWxlY3Rvci5tYXRjaExhYmVscycsXG4gICAgfSk7XG5cbiAgICB0aGlzLnZhbHVlSW4gPSBjb21wb3NlKHRvTW9kZWwsIHRoaXMuYWRhcHRSZXNvdXJjZU1vZGVsKTtcbiAgICB0aGlzLm1vZGVsT3V0ID0gY29tcG9zZSh0aGlzLm92ZXJyaWRlUmVzb3VyY2UsIHRvUmVzb3VyY2UpO1xuICB9XG5cbiAgY3JlYXRlTWV0aG9kQ2hhbmdlKGNyZWF0ZVR5cGU6IFB2Y1N0b3JhZ2VDbGFzc0NyZWF0ZVR5cGUpIHtcbiAgICAvLyDpnZnmgIHljLnphY3kuI3pnIDopoHpmZDliLborr/pl67mqKHlvI9cbiAgICBpZiAoY3JlYXRlVHlwZSA9PT0gJ3N0YXRpYycpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRTdG9yYWdlU2VsZWN0T3B0aW9uID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBzdG9yYWdlY2xhc3NDaGFuZ2Uoc2VsZWN0ZWRPcHRpb246IFN0b3JhZ2VTZWxlY3RPcHRpb24pIHtcbiAgICB0aGlzLnNlbGVjdGVkU3RvcmFnZVNlbGVjdE9wdGlvbiA9IHNlbGVjdGVkT3B0aW9uO1xuICAgIHRoaXMuc2V0Vm9sdW1lTW9kZVRvU3VwcG9ydFZhbHVlSWZOZWVkKCk7XG4gICAgdGhpcy5zZXRBY2Nlc3NNb2RlVG9TdXBwb3J0VmFsdWVJZk5lZWQoKTtcbiAgfVxuXG4gIHZvbHVtZU1vZGVDaGFuZ2Uodm9sdW1lTW9kZTogVm9sdW1lTW9kZSkge1xuICAgIHRoaXMuc2V0QWNjZXNzTW9kZVRvU3VwcG9ydFZhbHVlSWZOZWVkKHZvbHVtZU1vZGUpO1xuICB9XG5cbiAgQGJpbmRcbiAgZGlzcGxheUZpZWxkU3VwcG9ydGVkKGZpZWxkTmFtZTogRGlzcGxheUZpZWxkKSB7XG4gICAgaWYgKCF0aGlzLmRpc3BsYXlGaWVsZHM/Lmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZGlzcGxheUZpZWxkcy5pbmNsdWRlcyhmaWVsZE5hbWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRBY2Nlc3NNb2RlVG9TdXBwb3J0VmFsdWVJZk5lZWQodm9sdW1lTW9kZSA9IHRoaXMudm9sdW1lTW9kZSkge1xuICAgIGlmIChcbiAgICAgIHRoaXMuc3RvcmFnZUNvbW1vblV0aWwuaXNBY2Nlc3NNb2RlRGlzYWJsZWQoXG4gICAgICAgIHRoaXMubW9kZWwuYWNjZXNzTW9kZXMsXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRTdG9yYWdlU2VsZWN0T3B0aW9uLFxuICAgICAgICB2b2x1bWVNb2RlID09PSAnQmxvY2snLFxuICAgICAgKVxuICAgICkge1xuICAgICAgdGhpcy5tb2RlbC5hY2Nlc3NNb2RlcyA9IHRoaXMuYWNjZXNzTW9kZXMuZmluZChcbiAgICAgICAgYWNjZXNzTW9kZSA9PlxuICAgICAgICAgICF0aGlzLnN0b3JhZ2VDb21tb25VdGlsLmlzQWNjZXNzTW9kZURpc2FibGVkKFxuICAgICAgICAgICAgYWNjZXNzTW9kZSxcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRTdG9yYWdlU2VsZWN0T3B0aW9uLFxuICAgICAgICAgICAgdGhpcy52b2x1bWVNb2RlID09PSAnQmxvY2snLFxuICAgICAgICAgICksXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0Vm9sdW1lTW9kZVRvU3VwcG9ydFZhbHVlSWZOZWVkKCkge1xuICAgIGlmIChcbiAgICAgIHRoaXMuc3RvcmFnZUNvbW1vblV0aWwuaXNWb2x1bWVNb2RlRGlzYWJsZWQoXG4gICAgICAgIHRoaXMubW9kZWwudm9sdW1lTW9kZSxcbiAgICAgICAgdGhpcy5zZWxlY3RlZFN0b3JhZ2VTZWxlY3RPcHRpb24sXG4gICAgICApXG4gICAgKSB7XG4gICAgICB0aGlzLm1vZGVsLnZvbHVtZU1vZGUgPSB0aGlzLnZvbHVtZU1vZGVzLmZpbmQoXG4gICAgICAgIHZvbHVtZU1vZGUgPT5cbiAgICAgICAgICAhdGhpcy5zdG9yYWdlQ29tbW9uVXRpbC5pc1ZvbHVtZU1vZGVEaXNhYmxlZChcbiAgICAgICAgICAgIHZvbHVtZU1vZGUsXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkU3RvcmFnZVNlbGVjdE9wdGlvbixcbiAgICAgICAgICApLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IGFkYXB0UmVzb3VyY2VNb2RlbCA9IChwdmM6IFBlcnNpc3RlbnRWb2x1bWVDbGFpbSkgPT4ge1xuICAgIGNvbnN0IHN0b3JhZ2UgPSBwdmM/LnNwZWM/LnJlc291cmNlcz8ucmVxdWVzdHM/LnN0b3JhZ2U7XG4gICAgaWYgKHN0b3JhZ2UpIHtcbiAgICAgIGNvbnN0IHJlcyA9IFN0cmluZyhzdG9yYWdlKS5tYXRjaCgvW0EtWmEtel0rfFxcZCsoPzpcXC5cXGQrKT8vZyk7XG4gICAgICBwdmMuc3BlYy5yZXNvdXJjZXMucmVxdWVzdHMuc3RvcmFnZSA9IHJlc1swXSB8fCAnJztcbiAgICAgIHRoaXMudW5pdCA9IHJlc1sxXSB8fCAnR2knO1xuICAgIH1cblxuICAgIC8vIFwiXCIg6KGo56S66Z2Z5oCB5Yib5bu6XG4gICAgdGhpcy5jcmVhdGVNZXRob2QgPVxuICAgICAgcHZjPy5zcGVjPy5zdG9yYWdlQ2xhc3NOYW1lID09PSAnJyA/ICdzdGF0aWMnIDogJ2R5bmFtaWMnO1xuXG4gICAgcmV0dXJuIHB2YztcbiAgfTtcblxuICBwcml2YXRlIHJlYWRvbmx5IG92ZXJyaWRlUmVzb3VyY2UgPSAocHZjOiBQZXJzaXN0ZW50Vm9sdW1lQ2xhaW0pID0+IHtcbiAgICBpZiAoXG4gICAgICB0aGlzLmNyZWF0ZU1ldGhvZCA9PT0gJ2R5bmFtaWMnIHx8XG4gICAgICBPYmplY3Qua2V5cyhwdmM/LnNwZWM/LnNlbGVjdG9yPy5tYXRjaExhYmVscyA/PyB7fSkubGVuZ3RoID09PSAwXG4gICAgKSB7XG4gICAgICBkZWxldGUgcHZjPy5zcGVjPy5zZWxlY3RvcjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jcmVhdGVNZXRob2QgPT09ICdzdGF0aWMnKSB7XG4gICAgICBwdmMuc3BlYy5zdG9yYWdlQ2xhc3NOYW1lID0gJyc7XG4gICAgfVxuXG4gICAgaWYgKHB2Yz8uc3BlYz8ucmVzb3VyY2VzPy5yZXF1ZXN0cz8uc3RvcmFnZSkge1xuICAgICAgcHZjLnNwZWMucmVzb3VyY2VzLnJlcXVlc3RzLnN0b3JhZ2UgPSBgJHtwdmMuc3BlYy5yZXNvdXJjZXMucmVxdWVzdHMuc3RvcmFnZX0ke3RoaXMudW5pdH1gO1xuICAgIH1cbiAgICByZXR1cm4gcHZjO1xuICB9O1xufVxuIiwiPGF1aS1mb3JtLWl0ZW1cbiAgd2lkdGg9XCJsYXJnZVwiXG4gICpuZ0lmPVwiJ25hbWUnIHwgcHVyZTogZGlzcGxheUZpZWxkU3VwcG9ydGVkXCJcbj5cbiAgPGxhYmVsIGF1aUZvcm1JdGVtTGFiZWw+e3sgJ25hbWUnIHwgdHJhbnNsYXRlIH19PC9sYWJlbD5cbiAgPGlucHV0XG4gICAgYXVpLWlucHV0XG4gICAgYXVpRm9ybUl0ZW1Db250cm9sXG4gICAgWyhuZ01vZGVsKV09XCJtb2RlbC5uYW1lXCJcbiAgICBuYW1lPVwibmFtZVwiXG4gICAgI25hbWU9XCJuZ01vZGVsXCJcbiAgICBtYXhsZW5ndGg9XCI2M1wiXG4gICAgW3BsYWNlaG9sZGVyXT1cInJlc291cmNlTmFtZVJlZy50aXAgfCB0cmFuc2xhdGVcIlxuICAgIFtwYXR0ZXJuXT1cInJlc291cmNlTmFtZVJlZy5wYXR0ZXJuXCJcbiAgICByZXF1aXJlZFxuICAvPlxuICA8YWNsLWVycm9ycy1tYXBwZXJcbiAgICBhdWlGb3JtSXRlbUVycm9yXG4gICAgW2Vycm9yc109XCJuYW1lLmVycm9yc1wiXG4gICAgW2Vycm9yc01hcHBlcl09XCJ7XG4gICAgICBwYXR0ZXJuOiByZXNvdXJjZU5hbWVSZWcudGlwIHwgdHJhbnNsYXRlLFxuICAgIH1cIlxuICA+PC9hY2wtZXJyb3JzLW1hcHBlcj5cbjwvYXVpLWZvcm0taXRlbT5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIidkYXRhU291cmNlJyB8IHB1cmU6IGRpc3BsYXlGaWVsZFN1cHBvcnRlZFwiPlxuICA8YXVpLWZvcm0taXRlbSAqbmdJZj1cIm1vZGVsLmRhdGFTb3VyY2UgYXMgZGF0YVNvdXJjZVwiPlxuICAgIDxsYWJlbCBhdWlGb3JtSXRlbUxhYmVsPnt7ICdzdG9yYWdlLmRhdGFfc291cmNlJyB8IHRyYW5zbGF0ZSB9fTwvbGFiZWw+XG4gICAge3sgZGF0YVNvdXJjZS5uYW1lIH19XG4gIDwvYXVpLWZvcm0taXRlbT5cbjwvbmctY29udGFpbmVyPlxuXG48YXVpLWZvcm0taXRlbSAqbmdJZj1cIidjcmVhdGVUeXBlJyB8IHB1cmU6IGRpc3BsYXlGaWVsZFN1cHBvcnRlZFwiPlxuICA8bGFiZWwgYXVpRm9ybUl0ZW1MYWJlbD57eyAnc3RvcmFnZS5jcmVhdGVfbWV0aG9kJyB8IHRyYW5zbGF0ZSB9fTwvbGFiZWw+XG4gIDxhdWktcmFkaW8tZ3JvdXBcbiAgICBzaXplPVwibWVkaXVtXCJcbiAgICBbKG5nTW9kZWwpXT1cImNyZWF0ZU1ldGhvZFwiXG4gICAgbmFtZT1cImNyZWF0ZU1ldGhvZFwiXG4gICAgW2FjbFJlYWRvbmx5RmllbGRdPVwiaXNGcm9tU25hcHNob3QgfHwgISFjcmVhdGVUeXBlXCJcbiAgICBbYWNsUmVhZG9ubHlGaWVsZFRlbXBsYXRlXT1cImNyZWF0ZVR5cGVUbXBsXCJcbiAgICAobmdNb2RlbENoYW5nZSk9XCJjcmVhdGVNZXRob2RDaGFuZ2UoJGV2ZW50KVwiXG4gID5cbiAgICA8YXVpLXJhZGlvLWJ1dHRvbiBbdmFsdWVdPVwiUHZjU3RvcmFnZUNsYXNzQ3JlYXRlVHlwZS5EWU5BTUlDXCI+XG4gICAgICB7eyAnc3RvcmFnZS5keW5hbWljX2NyZWF0ZScgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2F1aS1yYWRpby1idXR0b24+XG4gICAgPGF1aS1yYWRpby1idXR0b24gW3ZhbHVlXT1cIlB2Y1N0b3JhZ2VDbGFzc0NyZWF0ZVR5cGUuU1RBVElDXCI+XG4gICAgICB7eyAnc3RvcmFnZS5zdGF0aWNfbWF0Y2gnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9hdWktcmFkaW8tYnV0dG9uPlxuICA8L2F1aS1yYWRpby1ncm91cD5cbiAgPG5nLXRlbXBsYXRlICNjcmVhdGVUeXBlVG1wbD5cbiAgICB7e1xuICAgICAgKGNyZWF0ZU1ldGhvZCA9PT0gUHZjU3RvcmFnZUNsYXNzQ3JlYXRlVHlwZS5EWU5BTUlDXG4gICAgICAgID8gJ3N0b3JhZ2UuZHluYW1pY19jcmVhdGUnXG4gICAgICAgIDogJ3N0b3JhZ2Uuc3RhdGljX21hdGNoJ1xuICAgICAgKSB8IHRyYW5zbGF0ZVxuICAgIH19XG4gIDwvbmctdGVtcGxhdGU+XG48L2F1aS1mb3JtLWl0ZW0+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCInc3RvcmFnZUNsYXNzTmFtZScgfCBwdXJlOiBkaXNwbGF5RmllbGRTdXBwb3J0ZWRcIj5cbiAgPGF1aS1mb3JtLWl0ZW1cbiAgICAqbmdJZj1cImNyZWF0ZU1ldGhvZCAhPT0gUHZjU3RvcmFnZUNsYXNzQ3JlYXRlVHlwZS5TVEFUSUNcIlxuICAgIHdpZHRoPVwibWVkaXVtXCJcbiAgPlxuICAgIDxsYWJlbCBhdWlGb3JtSXRlbUxhYmVsPnt7ICdzdG9yYWdlY2xhc3MnIHwgdHJhbnNsYXRlIH19PC9sYWJlbD5cbiAgICA8YWNsLXN0b3JhZ2VjbGFzcy1zZWxlY3RcbiAgICAgIFtzdG9yYWdlQ2xhc3Nlc109XCJzdG9yYWdlQ2xhc3NMaXN0JCB8IGFzeW5jXCJcbiAgICAgIFt2b2x1bWVTbmFwc2hvdENsYXNzZXNdPVwidm9sdW1lU25hcHNob3RDbGFzc0xpc3QkIHwgYXN5bmNcIlxuICAgICAgW2lzRnJvbVNuYXBzaG90XT1cImlzRnJvbVNuYXBzaG90QW5kU291cmNlUFZDRXhpc3RcIlxuICAgICAgW3NlbGVjdERlZmF1bHRdPVwic2VsZWN0RGVmYXVsdFwiXG4gICAgICBhdWlGb3JtSXRlbUNvbnRyb2xcbiAgICAgIHJlcXVpcmVkXG4gICAgICBbKG5nTW9kZWwpXT1cIm1vZGVsLnN0b3JhZ2VDbGFzc05hbWVcIlxuICAgICAgbmFtZT1cInN0b3JhZ2VDbGFzc05hbWVcIlxuICAgICAgI3N0b3JhZ2VDbGFzc05hbWU9XCJuZ01vZGVsXCJcbiAgICAgIChzdG9yYWdlQ2xhc3NDaGFuZ2UpPVwic3RvcmFnZWNsYXNzQ2hhbmdlKCRldmVudClcIlxuICAgID48L2FjbC1zdG9yYWdlY2xhc3Mtc2VsZWN0PlxuICAgIDxhY2wtZXJyb3JzLW1hcHBlclxuICAgICAgYXVpRm9ybUl0ZW1FcnJvclxuICAgICAgW2Vycm9yc109XCJzdG9yYWdlQ2xhc3NOYW1lLmVycm9yc1wiXG4gICAgPjwvYWNsLWVycm9ycy1tYXBwZXI+XG4gICAgPGRpdlxuICAgICAgYXVpRm9ybUl0ZW1IaW50XG4gICAgICBjbGFzcz1cInR3LXRleHQteWVsbG93XCJcbiAgICAgICpuZ0lmPVwic2hvd1N0b3JhZ2VDbGFzc0hpbnRXaGVuRnJvbVNuYXBzaG90XCJcbiAgICA+XG4gICAgICB7eyAnc3RvcmFnZS5yZXN0b3JlX3B2Y19zdG9yYWdlY2xhc3NfaGludCcgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2Rpdj5cbiAgPC9hdWktZm9ybS1pdGVtPlxuPC9uZy1jb250YWluZXI+XG5cbjxhdWktZm9ybS1pdGVtICpuZ0lmPVwiJ3ZvbHVtZU1vZGUnIHwgcHVyZTogZGlzcGxheUZpZWxkU3VwcG9ydGVkXCI+XG4gIDxsYWJlbCBhdWlGb3JtSXRlbUxhYmVsPnt7ICdzdG9yYWdlLnZvbHVtZV9tb2RlJyB8IHRyYW5zbGF0ZSB9fTwvbGFiZWw+XG4gIDxhdWktcmFkaW8tZ3JvdXBcbiAgICBzaXplPVwibWVkaXVtXCJcbiAgICBbKG5nTW9kZWwpXT1cIm1vZGVsLnZvbHVtZU1vZGVcIlxuICAgIG5hbWU9XCJ2b2x1bWVNb2RlXCJcbiAgICBbYWNsUmVhZG9ubHlGaWVsZF09XCJpc0Zyb21TbmFwc2hvdEFuZFNvdXJjZVBWQ0V4aXN0IHx8ICEhdm9sdW1lTW9kZVwiXG4gICAgW2FjbFJlYWRvbmx5RmllbGRUZW1wbGF0ZV09XCJ2b2x1bWVNb2RlVG1wbFwiXG4gICAgKG5nTW9kZWxDaGFuZ2UpPVwidm9sdW1lTW9kZUNoYW5nZSgkZXZlbnQpXCJcbiAgPlxuICAgIDxhdWktcmFkaW8tYnV0dG9uXG4gICAgICAqbmdGb3I9XCJsZXQgbW9kZSBvZiB2b2x1bWVNb2Rlc1wiXG4gICAgICBbYXVpVG9vbHRpcF09XCInc3RvcmFnZS5zdG9yYWdlX2ZvcmJpZF9zZWxlY3Rfdm9sdW1lX21vZGUnIHwgdHJhbnNsYXRlXCJcbiAgICAgIFthdWlUb29sdGlwRGlzYWJsZWRdPVwiXG4gICAgICAgICEoXG4gICAgICAgICAgbW9kZVxuICAgICAgICAgIHwgcHVyZVxuICAgICAgICAgICAgOiBzdG9yYWdlQ29tbW9uVXRpbC5pc1ZvbHVtZU1vZGVEaXNhYmxlZFxuICAgICAgICAgICAgOiBzZWxlY3RlZFN0b3JhZ2VTZWxlY3RPcHRpb25cbiAgICAgICAgKVxuICAgICAgXCJcbiAgICAgIFtkaXNhYmxlZF09XCJcbiAgICAgICAgbW9kZVxuICAgICAgICAgIHwgcHVyZVxuICAgICAgICAgICAgOiBzdG9yYWdlQ29tbW9uVXRpbC5pc1ZvbHVtZU1vZGVEaXNhYmxlZFxuICAgICAgICAgICAgOiBzZWxlY3RlZFN0b3JhZ2VTZWxlY3RPcHRpb25cbiAgICAgIFwiXG4gICAgICBbdmFsdWVdPVwibW9kZVwiXG4gICAgPlxuICAgICAge3sgJ3N0b3JhZ2UuJyArIFZvbHVtZU1vZGVUcmFuc2xhdGVLZXlbbW9kZV0gfCB0cmFuc2xhdGUgfX1cbiAgICA8L2F1aS1yYWRpby1idXR0b24+XG4gIDwvYXVpLXJhZGlvLWdyb3VwPlxuICA8ZGl2XG4gICAgYXVpRm9ybUl0ZW1BZGRvblxuICAgICpuZ0lmPVwiIXZvbHVtZU1vZGVcIlxuICA+XG4gICAgPGF1aS1pY29uXG4gICAgICBbYXVpVG9vbHRpcF09XCJ2b2x1bWVNb2RlVGlwXCJcbiAgICAgIFthdWlUb29sdGlwUG9zaXRpb25dPVwiJ3RvcCBjZW50ZXInXCJcbiAgICAgIGljb249XCJxdWVzdGlvbl9jaXJjbGVcIlxuICAgICAgY2xhc3M9XCJpY29uLS1oZWxwXCJcbiAgICA+PC9hdWktaWNvbj5cbiAgPC9kaXY+XG4gIDxuZy10ZW1wbGF0ZSAjdm9sdW1lTW9kZVRpcD5cbiAgICA8dWwgY2xhc3M9XCJkLWxpc3RcIj5cbiAgICAgIDxsaT57eyAnc3RvcmFnZS52b2x1bWVfbW9kZV9maWxlX3N5c3RlbV9oaW50JyB8IHRyYW5zbGF0ZSB9fTwvbGk+XG4gICAgICA8bGk+e3sgJ3N0b3JhZ2Uudm9sdW1lX21vZGVfYmxvY2tfZGV2aWNlX2hpbnQnIHwgdHJhbnNsYXRlIH19PC9saT5cbiAgICA8L3VsPlxuICA8L25nLXRlbXBsYXRlPlxuICA8bmctdGVtcGxhdGUgI3ZvbHVtZU1vZGVUbXBsPlxuICAgIHt7XG4gICAgICAobW9kZWwudm9sdW1lTW9kZSA9PT0gJ0ZpbGVzeXN0ZW0nXG4gICAgICAgID8gJ3N0b3JhZ2UuZmlsZV9zeXN0ZW0nXG4gICAgICAgIDogJ3N0b3JhZ2UuYmxvY2tfZGV2aWNlJ1xuICAgICAgKSB8IHRyYW5zbGF0ZVxuICAgIH19XG4gIDwvbmctdGVtcGxhdGU+XG48L2F1aS1mb3JtLWl0ZW0+XG5cbjxhdWktZm9ybS1pdGVtICpuZ0lmPVwiJ2FjY2Vzc01vZGVzJyB8IHB1cmU6IGRpc3BsYXlGaWVsZFN1cHBvcnRlZFwiPlxuICA8bGFiZWwgYXVpRm9ybUl0ZW1MYWJlbD57eyAnc3RvcmFnZS5hY2Nlc3NfbW9kZScgfCB0cmFuc2xhdGUgfX08L2xhYmVsPlxuICA8YXVpLXJhZGlvLWdyb3VwXG4gICAgYXVpRm9ybUl0ZW1Db250cm9sXG4gICAgWyhuZ01vZGVsKV09XCJtb2RlbC5hY2Nlc3NNb2Rlc1wiXG4gICAgbmFtZT1cImFjY2Vzc01vZGVzXCJcbiAgICAjYWNjZXNzTW9kZT1cIm5nTW9kZWxcIlxuICA+XG4gICAgPGF1aS1yYWRpby1idXR0b25cbiAgICAgICpuZ0Zvcj1cImxldCBtb2RlIG9mIGFjY2Vzc01vZGVzXCJcbiAgICAgIFthdWlUb29sdGlwXT1cIidzdG9yYWdlLnN0b3JhZ2VfZm9yYmlkX3NlbGVjdF9hY2Nlc3NfbW9kZScgfCB0cmFuc2xhdGVcIlxuICAgICAgW2F1aVRvb2x0aXBEaXNhYmxlZF09XCJcbiAgICAgICAgIShcbiAgICAgICAgICBtb2RlXG4gICAgICAgICAgfCBwdXJlXG4gICAgICAgICAgICA6IHN0b3JhZ2VDb21tb25VdGlsLmlzQWNjZXNzTW9kZURpc2FibGVkXG4gICAgICAgICAgICA6IHNlbGVjdGVkU3RvcmFnZVNlbGVjdE9wdGlvblxuICAgICAgICAgICAgOiBtb2RlbC52b2x1bWVNb2RlID09PSAnQmxvY2snXG4gICAgICAgIClcbiAgICAgIFwiXG4gICAgICBbdmFsdWVdPVwibW9kZVwiXG4gICAgICBbZGlzYWJsZWRdPVwiXG4gICAgICAgIG1vZGVcbiAgICAgICAgICB8IHB1cmVcbiAgICAgICAgICAgIDogc3RvcmFnZUNvbW1vblV0aWwuaXNBY2Nlc3NNb2RlRGlzYWJsZWRcbiAgICAgICAgICAgIDogc2VsZWN0ZWRTdG9yYWdlU2VsZWN0T3B0aW9uXG4gICAgICAgICAgICA6IG1vZGVsLnZvbHVtZU1vZGUgPT09ICdCbG9jaydcbiAgICAgIFwiXG4gICAgPlxuICAgICAge3sgJ3N0b3JhZ2UuJyArIEFjY2Vzc01vZGVUcmFuc2xhdGVLZXlbbW9kZV0gfCB0cmFuc2xhdGUgfX1cbiAgICA8L2F1aS1yYWRpby1idXR0b24+XG4gIDwvYXVpLXJhZGlvLWdyb3VwPlxuICA8ZGl2IGF1aUZvcm1JdGVtQWRkb24+XG4gICAgPGF1aS1pY29uXG4gICAgICBbYXVpVG9vbHRpcF09XCJhY2Nlc3NNb2RlVGlwXCJcbiAgICAgIFthdWlUb29sdGlwUG9zaXRpb25dPVwiJ3RvcCBjZW50ZXInXCJcbiAgICAgIGljb249XCJxdWVzdGlvbl9jaXJjbGVcIlxuICAgICAgY2xhc3M9XCJpY29uLS1oZWxwXCJcbiAgICA+PC9hdWktaWNvbj5cbiAgPC9kaXY+XG4gIDxhY2wtZXJyb3JzLW1hcHBlclxuICAgIGF1aUZvcm1JdGVtRXJyb3JcbiAgICBbZXJyb3JzXT1cImFjY2Vzc01vZGUuZXJyb3JzXCJcbiAgPjwvYWNsLWVycm9ycy1tYXBwZXI+XG4gIDxuZy10ZW1wbGF0ZSAjYWNjZXNzTW9kZVRpcD5cbiAgICA8dWwgY2xhc3M9XCJkLWxpc3RcIj5cbiAgICAgIDxsaT57eyAnc3RvcmFnZS5hY2Nlc3NfbW9kZV9yd28nIHwgdHJhbnNsYXRlIH19PC9saT5cbiAgICAgIDxsaT57eyAnc3RvcmFnZS5hY2Nlc3NfbW9kZV9yb3gnIHwgdHJhbnNsYXRlIH19PC9saT5cbiAgICAgIDxsaT57eyAnc3RvcmFnZS5hY2Nlc3NfbW9kZV9yd3gnIHwgdHJhbnNsYXRlIH19PC9saT5cbiAgICA8L3VsPlxuICA8L25nLXRlbXBsYXRlPlxuPC9hdWktZm9ybS1pdGVtPlxuXG48YXVpLWZvcm0taXRlbVxuICB3aWR0aD1cIm1lZGl1bVwiXG4gICpuZ0lmPVwiJ3N0b3JhZ2UnIHwgcHVyZTogZGlzcGxheUZpZWxkU3VwcG9ydGVkXCJcbj5cbiAgPGxhYmVsIGF1aUZvcm1JdGVtTGFiZWw+e3sgJ3N0b3JhZ2UuY2FwYWNpdHknIHwgdHJhbnNsYXRlIH19PC9sYWJlbD5cbiAgPGlucHV0XG4gICAgYXVpLWlucHV0XG4gICAgdHlwZT1cInRleHRcIlxuICAgIFtwYXR0ZXJuXT1cIlBPU0lUSVZFX0lOVF9QQVRURVJOLnBhdHRlcm5cIlxuICAgIFsobmdNb2RlbCldPVwibW9kZWwuc3RvcmFnZVwiXG4gICAgbmFtZT1cInN0b3JhZ2VcIlxuICAgICNzdG9yYWdlPVwibmdNb2RlbFwiXG4gICAgcmVxdWlyZWRcbiAgICBhdWlGb3JtSXRlbUNvbnRyb2xcbiAgICByZXF1aXJlZFxuICAgIFthY2xSZWFkb25seUZpZWxkXT1cImlzRnJvbVNuYXBzaG90XCJcbiAgICBbYWNsUmVhZG9ubHlGaWVsZFRlbXBsYXRlXT1cImNhcGFjaXR5VHBsXCJcbiAgLz5cbiAgPGF1aS1zZWxlY3RcbiAgICAqbmdJZj1cIiFpc0Zyb21TbmFwc2hvdFwiXG4gICAgWyhuZ01vZGVsKV09XCJ1bml0XCJcbiAgICBjbGFzcz1cInR3LW1heC13LVs2MHB4XSB0dy1tbC1bLTYwcHhdXCJcbiAgPlxuICAgIDxhdWktb3B0aW9uXG4gICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBVTklUU1wiXG4gICAgICBbbGFiZWxdPVwiaXRlbVwiXG4gICAgICBbdmFsdWVdPVwiaXRlbVwiXG4gICAgPlxuICAgICAge3sgaXRlbSB9fVxuICAgIDwvYXVpLW9wdGlvbj5cbiAgPC9hdWktc2VsZWN0PlxuICA8bmctdGVtcGxhdGUgI2NhcGFjaXR5VHBsPiB7eyBtb2RlbC5zdG9yYWdlIH19R2kgPC9uZy10ZW1wbGF0ZT5cbiAgPGFjbC1lcnJvcnMtbWFwcGVyXG4gICAgYXVpRm9ybUl0ZW1FcnJvclxuICAgIFtlcnJvcnNdPVwic3RvcmFnZS5lcnJvcnNcIlxuICAgIFtlcnJvcnNNYXBwZXJdPVwie1xuICAgICAgcGF0dGVybjogUE9TSVRJVkVfSU5UX1BBVFRFUk4udGlwIHwgdHJhbnNsYXRlLFxuICAgIH1cIlxuICA+PC9hY2wtZXJyb3JzLW1hcHBlcj5cbjwvYXVpLWZvcm0taXRlbT5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dBZHZhbmNlZEZpZWxkXCI+XG4gIDxhY2wtZm9sZGFibGUtYmxvY2sgaGludD1cInt7ICdzdG9yYWdlLmFkdmFuY2VkJyB8IHRyYW5zbGF0ZSB9fVwiPlxuICAgIDxhdWktZm9ybS1pdGVtXG4gICAgICBmb3JtR3JvdXBOYW1lPVwibWV0YWRhdGFcIlxuICAgICAgKm5nSWY9XCInbGFiZWxzJyB8IHB1cmU6IGRpc3BsYXlGaWVsZFN1cHBvcnRlZFwiXG4gICAgPlxuICAgICAgPGxhYmVsIGF1aUZvcm1JdGVtTGFiZWw+e3sgJ2xhYmVsJyB8IHRyYW5zbGF0ZSB9fTwvbGFiZWw+XG4gICAgICA8YWNsLWtleS12YWx1ZS1mb3JtLXRhYmxlXG4gICAgICAgIGF1aUZvcm1JdGVtQ29udHJvbFxuICAgICAgICBbKG5nTW9kZWwpXT1cIm1vZGVsLmxhYmVsc1wiXG4gICAgICAgIG5hbWU9XCJsYWJlbHNcIlxuICAgICAgICBbcmVzb3VyY2VOYW1lVHJhbnNsYXRlZF09XCInc3RvcmFnZS5sYWJlbHMnIHwgdHJhbnNsYXRlIHwgbG93ZXJjYXNlXCJcbiAgICAgICAgW3ZhbGlkYXRvcl09XCJsYWJlbFZhbGlkYXRvclwiXG4gICAgICAgIFtlcnJvck1hcHBlcl09XCJsYWJlbEVycm9yTWFwcGVyJCB8IGFzeW5jXCJcbiAgICAgID48L2FjbC1rZXktdmFsdWUtZm9ybS10YWJsZT5cbiAgICA8L2F1aS1mb3JtLWl0ZW0+XG4gICAgPGF1aS1mb3JtLWl0ZW1cbiAgICAgIGZvcm1Hcm91cE5hbWU9XCJtZXRhZGF0YVwiXG4gICAgICAqbmdJZj1cIidhbm5vdGF0aW9ucycgfCBwdXJlOiBkaXNwbGF5RmllbGRTdXBwb3J0ZWRcIlxuICAgID5cbiAgICAgIDxsYWJlbCBhdWlGb3JtSXRlbUxhYmVsPnt7ICdzdG9yYWdlLms4c19hbm5vdGF0aW9uJyB8IHRyYW5zbGF0ZSB9fTwvbGFiZWw+XG4gICAgICA8YWNsLWtleS12YWx1ZS1mb3JtLXRhYmxlXG4gICAgICAgIGF1aUZvcm1JdGVtQ29udHJvbFxuICAgICAgICBbcmVzb3VyY2VOYW1lVHJhbnNsYXRlZF09XCJcbiAgICAgICAgICAnc3RvcmFnZS5rOHNfYW5ub3RhdGlvbicgfCB0cmFuc2xhdGUgfCBsb3dlcmNhc2VcbiAgICAgICAgXCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJtb2RlbC5hbm5vdGF0aW9uc1wiXG4gICAgICAgIG5hbWU9XCJhbm5vdGF0aW9uc1wiXG4gICAgICAgIFt2YWxpZGF0b3JdPVwiYW5ub3RhdGlvblZhbGlkYXRvclwiXG4gICAgICAgIFtlcnJvck1hcHBlcl09XCJhbm5vdGF0aW9uRXJyb3JNYXBwZXIkIHwgYXN5bmNcIlxuICAgICAgPjwvYWNsLWtleS12YWx1ZS1mb3JtLXRhYmxlPlxuICAgIDwvYXVpLWZvcm0taXRlbT5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiJ3NlbGVjdG9yJyB8IHB1cmU6IGRpc3BsYXlGaWVsZFN1cHBvcnRlZFwiPlxuICAgICAgPGF1aS1mb3JtLWl0ZW1cbiAgICAgICAgW2hpZGRlbl09XCJjcmVhdGVNZXRob2QgPT09IFB2Y1N0b3JhZ2VDbGFzc0NyZWF0ZVR5cGUuRFlOQU1JQ1wiXG4gICAgICA+XG4gICAgICAgIDxsYWJlbCBhdWlGb3JtSXRlbUxhYmVsPnt7ICdzdG9yYWdlLnNlbGVjdG9yJyB8IHRyYW5zbGF0ZSB9fTwvbGFiZWw+XG4gICAgICAgIDxhY2wta2V5LXZhbHVlLWZvcm0tdGFibGVcbiAgICAgICAgICBhdWlGb3JtSXRlbUNvbnRyb2xcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cIm1vZGVsLnNlbGVjdG9yXCJcbiAgICAgICAgICBuYW1lPVwic2VsZWN0b3JcIlxuICAgICAgICA+PC9hY2wta2V5LXZhbHVlLWZvcm0tdGFibGU+XG4gICAgICA8L2F1aS1mb3JtLWl0ZW0+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvYWNsLWZvbGRhYmxlLWJsb2NrPlxuPC9uZy1jb250YWluZXI+XG4iXX0=
|