ngx-scandoc 1.2.3 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/core/components/components.module.d.ts +10 -7
  2. package/core/components/manual-scan/manual-scan.component.d.ts +61 -0
  3. package/core/components/scan/scan.component.d.ts +21 -24
  4. package/core/components/scan-results/scan-results.component.d.ts +11 -4
  5. package/core/components/webcam/util/webcam.util.d.ts +1 -1
  6. package/core/components/webcam/webcam/webcam.component.d.ts +26 -180
  7. package/core/components/webcam/webcam.module.d.ts +2 -0
  8. package/core/interfaces/config.d.ts +4 -0
  9. package/dialogs/components/prompt-manual/prompt-manual.component.d.ts +12 -0
  10. package/dialogs/components/scan-profile/scan-profile.component.d.ts +6 -1
  11. package/dialogs/components/scan-selfie/scan-selfie.component.d.ts +15 -61
  12. package/dialogs/dialogs.core.provider.d.ts +1 -0
  13. package/dialogs/dialogs.module.d.ts +12 -9
  14. package/esm2020/core/components/camera-switch/camera-switch.component.mjs +6 -4
  15. package/esm2020/core/components/components.module.mjs +32 -10
  16. package/esm2020/core/components/manual-scan/manual-scan.component.mjs +290 -0
  17. package/esm2020/core/components/scan/scan.component.mjs +290 -181
  18. package/esm2020/core/components/scan-results/scan-results.component.mjs +38 -12
  19. package/esm2020/core/components/webcam/util/webcam.util.mjs +7 -5
  20. package/esm2020/core/components/webcam/webcam/webcam.component.mjs +296 -773
  21. package/esm2020/core/components/webcam/webcam.module.mjs +8 -1
  22. package/esm2020/core/interfaces/config.mjs +1 -1
  23. package/esm2020/dialogs/components/confirm/confirm.component.mjs +3 -3
  24. package/esm2020/dialogs/components/prompt-manual/prompt-manual.component.mjs +30 -0
  25. package/esm2020/dialogs/components/scan-profile/scan-profile.component.mjs +36 -17
  26. package/esm2020/dialogs/components/scan-selfie/scan-selfie.component.mjs +41 -336
  27. package/esm2020/dialogs/dialogs.core.provider.mjs +12 -1
  28. package/esm2020/dialogs/dialogs.module.mjs +24 -11
  29. package/esm2020/forms/types/avatar.type.mjs +26 -21
  30. package/esm2020/forms/types/profile.image.type.mjs +51 -41
  31. package/esm2020/forms/types/title.type.mjs +7 -35
  32. package/esm2020/lib/ngx-scandoc.module.mjs +8 -6
  33. package/esm2020/providers/auth.provider.mjs +15 -2
  34. package/esm2020/providers/camera.provider.mjs +37 -4
  35. package/esm2020/providers/interceptor.provider.mjs +2 -2
  36. package/esm2020/providers/layout.provider.mjs +7 -5
  37. package/esm2020/providers/scan.form.mjs +173 -215
  38. package/esm2020/providers/scan.provider.mjs +264 -7
  39. package/esm2020/providers/translation.provider.mjs +18 -23
  40. package/esm2020/public-api.mjs +3 -1
  41. package/fesm2015/ngx-scandoc.mjs +1722 -1989
  42. package/fesm2015/ngx-scandoc.mjs.map +1 -1
  43. package/fesm2020/ngx-scandoc.mjs +1719 -1983
  44. package/fesm2020/ngx-scandoc.mjs.map +1 -1
  45. package/forms/types/avatar.type.d.ts +1 -0
  46. package/forms/types/profile.image.type.d.ts +6 -1
  47. package/lib/ngx-scandoc.module.d.ts +2 -3
  48. package/package.json +1 -1
  49. package/providers/camera.provider.d.ts +17 -1
  50. package/providers/layout.provider.d.ts +3 -1
  51. package/providers/scan.form.d.ts +2 -0
  52. package/providers/scan.provider.d.ts +6 -1
  53. package/public-api.d.ts +2 -0
  54. package/src/assets/i18n/en.json +14 -3
@@ -1,4 +1,5 @@
1
1
  import { Injectable } from '@angular/core';
2
+ import { Subject } from 'rxjs';
2
3
  import * as i0 from "@angular/core";
3
4
  import * as i1 from "./translation.provider";
4
5
  import * as i2 from "./scan.provider";
@@ -6,6 +7,7 @@ export class ScanFieldsProvider {
6
7
  constructor(translate, provider) {
7
8
  this.translate = translate;
8
9
  this.provider = provider;
10
+ this.selfie$ = new Subject();
9
11
  }
10
12
  update() {
11
13
  return [
@@ -18,7 +20,7 @@ export class ScanFieldsProvider {
18
20
  key: 'profile',
19
21
  class: 'checkbox ',
20
22
  defaultValue: true,
21
- templateOptions: {
23
+ props: {
22
24
  label: 'scandoc.form.scan.document.update.profile',
23
25
  },
24
26
  },
@@ -28,7 +30,7 @@ export class ScanFieldsProvider {
28
30
  class: 'checkbox ',
29
31
  key: 'document',
30
32
  defaultValue: true,
31
- templateOptions: {
33
+ props: {
32
34
  label: 'scandoc.form.scan.document.update.document',
33
35
  },
34
36
  },
@@ -38,7 +40,7 @@ export class ScanFieldsProvider {
38
40
  class: 'checkbox ',
39
41
  key: 'attachment',
40
42
  defaultValue: true,
41
- templateOptions: {
43
+ props: {
42
44
  label: 'scandoc.form.scan.document.update.attachment',
43
45
  },
44
46
  },
@@ -49,31 +51,31 @@ export class ScanFieldsProvider {
49
51
  document() {
50
52
  return [
51
53
  {
52
- className: 'w-200-p',
53
- fieldGroupClassName: 'form-flex-row border-card profile-details',
54
+ className: 'w-100-p',
55
+ fieldGroupClassName: 'form-flex-row profile-details',
54
56
  fieldGroup: [
55
57
  {
56
- className: 'card-group',
57
- fieldGroupClassName: 'wraper',
58
+ className: 'w-100-p ',
59
+ fieldGroupClassName: 'card-group',
58
60
  fieldGroup: [
59
61
  {
60
62
  type: 'title',
61
- templateOptions: {
63
+ props: {
62
64
  label: 'scandoc.form.scan.document.guestDetailsTitle',
63
65
  },
64
66
  },
65
- // {
66
- // type: 'profile-image',
67
- // key: '_avatar',
68
- // templateOptions: {
69
- // label: 'scandoc.form.scan.document.firstName',
70
- // },
71
- // },
67
+ {
68
+ type: 'profile-image',
69
+ key: '_avatar',
70
+ props: {
71
+ label: 'scandoc.form.scan.document.firstName',
72
+ },
73
+ },
72
74
  {
73
75
  type: 'input',
74
76
  key: 'firstName',
75
77
  className: 'small',
76
- templateOptions: {
78
+ props: {
77
79
  label: 'scandoc.form.scan.document.firstName',
78
80
  required: true,
79
81
  },
@@ -82,7 +84,7 @@ export class ScanFieldsProvider {
82
84
  type: 'input',
83
85
  key: 'lastName',
84
86
  className: 'small',
85
- templateOptions: {
87
+ props: {
86
88
  label: 'scandoc.form.scan.document.lastName',
87
89
  required: true,
88
90
  },
@@ -91,8 +93,7 @@ export class ScanFieldsProvider {
91
93
  className: 'small',
92
94
  key: 'secondName',
93
95
  type: 'input',
94
- templateOptions: {
95
- color: 'accent',
96
+ props: {
96
97
  label: 'scandoc.form.scan.document.secondLastName',
97
98
  },
98
99
  hideExpression: 'model.hideSecondLastName',
@@ -101,7 +102,7 @@ export class ScanFieldsProvider {
101
102
  type: 'input',
102
103
  key: 'middleName',
103
104
  className: 'small',
104
- templateOptions: {
105
+ props: {
105
106
  label: 'scandoc.form.scan.document.middleName',
106
107
  },
107
108
  },
@@ -113,7 +114,7 @@ export class ScanFieldsProvider {
113
114
  type: 'datepicker',
114
115
  key: 'birthDate',
115
116
  className: 'w-100-p small mr-8',
116
- templateOptions: {
117
+ props: {
117
118
  label: 'scandoc.form.scan.document.birthDate',
118
119
  },
119
120
  },
@@ -121,7 +122,7 @@ export class ScanFieldsProvider {
121
122
  type: 'select',
122
123
  key: 'gender',
123
124
  className: 'w-100-p small ml-8',
124
- templateOptions: {
125
+ props: {
125
126
  label: 'scandoc.form.scan.document.gender',
126
127
  options: [
127
128
  { value: 'MALE', label: 'MALE' },
@@ -133,27 +134,33 @@ export class ScanFieldsProvider {
133
134
  ],
134
135
  },
135
136
  {
136
- type: 'input',
137
- key: 'birthPlace',
138
- className: 'small',
139
- templateOptions: {
140
- label: 'scandoc.form.scan.document.birthPlace',
141
- },
142
- },
143
- {
144
- type: 'select',
145
- key: 'birthCountry',
146
- className: 'small',
147
- templateOptions: {
148
- label: 'scandoc.form.scan.document.birthCountry',
149
- options: this.provider.countries(),
150
- },
137
+ className: '',
138
+ fieldGroupClassName: 'form-flex-row space-between',
139
+ fieldGroup: [
140
+ {
141
+ type: 'input',
142
+ key: 'birthPlace',
143
+ className: 'small w-100-p mr-8',
144
+ props: {
145
+ label: 'scandoc.form.scan.document.birthPlace',
146
+ },
147
+ },
148
+ {
149
+ type: 'select',
150
+ key: 'birthCountry',
151
+ className: 'small w-100-p ml-8',
152
+ props: {
153
+ label: 'scandoc.form.scan.document.birthCountry',
154
+ options: this.provider.countries(),
155
+ },
156
+ },
157
+ ],
151
158
  },
152
159
  {
153
160
  className: 'small',
154
161
  key: 'nationality',
155
162
  type: 'select',
156
- templateOptions: {
163
+ props: {
157
164
  label: 'scandoc.form.scan.document.nationality',
158
165
  // appearance: 'outline',
159
166
  // options: this.profileProvider.nationalities(),
@@ -163,210 +170,161 @@ export class ScanFieldsProvider {
163
170
  ],
164
171
  },
165
172
  {
166
- className: 'card-group',
167
- fieldGroupClassName: 'wraper',
173
+ className: 'w-100-p',
174
+ fieldGroupClassName: 'form-flex-column',
168
175
  fieldGroup: [
169
176
  {
170
- type: 'title',
171
- templateOptions: {
172
- label: 'scandoc.form.scan.document.documentTitle',
173
- },
174
- },
175
- {
176
- type: 'select',
177
- key: 'documentType',
178
- templateOptions: {
179
- label: 'scandoc.form.scan.document.documentType',
180
- options: [
181
- { value: 'ID', label: 'Identity Document' },
182
- { value: 'PASS', label: 'Passport' },
183
- { value: 'DL', label: 'Driver Licence' },
184
- ],
185
- // valueProp: 'id',
186
- // labelProp: 'value',
187
- required: true,
188
- },
189
- },
190
- {
191
- type: 'input',
192
- key: 'documentNumber',
193
- templateOptions: {
194
- label: 'scandoc.form.scan.document.documentNumber',
195
- required: true,
196
- },
197
- },
198
- {
199
- className: '',
200
- fieldGroupClassName: 'form-flex-row space-between',
177
+ className: 'w-100-p',
178
+ fieldGroupClassName: 'card-group',
201
179
  fieldGroup: [
202
180
  {
203
- type: 'datepicker',
204
- key: 'issueDate',
205
- className: 'small mr-8',
206
- templateOptions: {
207
- label: 'scandoc.form.scan.document.issueDate',
181
+ type: 'title',
182
+ props: {
183
+ label: 'scandoc.form.scan.document.documentTitle',
208
184
  },
209
185
  },
210
186
  {
211
- type: 'datepicker',
212
- key: 'expirationDate',
213
- className: 'small ml-8',
214
- templateOptions: {
215
- label: 'scandoc.form.scan.document.expirationDate',
187
+ type: 'select',
188
+ key: 'documentType',
189
+ props: {
190
+ label: 'scandoc.form.scan.document.documentType',
191
+ options: [
192
+ { value: 'ID', label: 'Identity Document' },
193
+ { value: 'PASS', label: 'Passport' },
194
+ { value: 'DL', label: 'Driver Licence' },
195
+ ],
196
+ // valueProp: 'id',
197
+ // labelProp: 'value',
198
+ required: true,
199
+ },
200
+ },
201
+ {
202
+ type: 'input',
203
+ key: 'documentNumber',
204
+ props: {
205
+ label: 'scandoc.form.scan.document.documentNumber',
206
+ required: true,
207
+ },
208
+ },
209
+ {
210
+ className: '',
211
+ fieldGroupClassName: 'form-flex-row space-between',
212
+ fieldGroup: [
213
+ {
214
+ type: 'datepicker',
215
+ key: 'issueDate',
216
+ className: 'small mr-8',
217
+ props: {
218
+ label: 'scandoc.form.scan.document.issueDate',
219
+ },
220
+ },
221
+ {
222
+ type: 'datepicker',
223
+ key: 'expirationDate',
224
+ className: 'small ml-8',
225
+ props: {
226
+ label: 'scandoc.form.scan.document.expirationDate',
227
+ },
228
+ },
229
+ ],
230
+ },
231
+ {
232
+ type: 'select',
233
+ key: 'issueStateCode',
234
+ props: {
235
+ label: 'scandoc.form.scan.document.issuingStateCode',
236
+ options: this.provider.countries(),
237
+ },
238
+ },
239
+ {
240
+ type: 'input',
241
+ key: 'issuingPlace',
242
+ props: {
243
+ label: 'scandoc.form.scan.document.issuingPlace',
244
+ required: false,
216
245
  },
217
246
  },
218
247
  ],
219
248
  },
220
249
  {
221
- type: 'select',
222
- key: 'issueStateCode',
223
- templateOptions: {
224
- label: 'scandoc.form.scan.document.issuingStateCode',
225
- options: this.provider.countries(),
226
- },
227
- },
228
- {
229
- type: 'input',
230
- key: 'issuingPlace',
231
- templateOptions: {
232
- label: 'scandoc.form.scan.document.issuingPlace',
233
- required: false,
234
- },
235
- },
236
- {
237
- className: '',
238
- fieldGroupClassName: 'form-flex-row space-between',
250
+ className: 'w-100-p',
251
+ fieldGroupClassName: 'card-group',
239
252
  fieldGroup: [
240
253
  {
241
254
  type: 'title',
242
- templateOptions: {
255
+ props: {
243
256
  label: 'scandoc.form.scan.document.addressTitle',
244
257
  badge: 'communications',
245
258
  },
246
259
  },
247
- ].map((item) => this.translate.forms(item)),
248
- },
249
- // {
250
- // className: 'small',
251
- // key: 'typeID',
252
- // type: 'select',
253
- // templateOptions: {
254
- // label: 'scandoc.form.profile.address.type',
255
- // required: true,
256
- // // options: this.profileProvider.addressTypes(),
257
- // expressionProperties: {
258
- // 'templateOptions.disabled': (model: any) =>
259
- // model.newAddress,
260
- // },
261
- // onClearValue: (field: FormlyFieldConfig) => {
262
- // field.formControl?.setValue('');
263
- // field.model.typeID = 0;
264
- // },
265
- // onSetNewValue: (field: FormlyFieldConfig, optObj: any) => {
266
- // field.formControl?.setValue(optObj.value);
267
- // field.model.typeID = optObj.value;
268
- // },
269
- // },
270
- // expressionProperties: {
271
- // 'templateOptions.disabled': (model: any) => !model.newAddress,
272
- // },
273
- // },
274
- {
275
- className: 'small',
276
- key: 'country',
277
- type: 'select',
278
- templateOptions: {
279
- required: true,
280
- label: 'scandoc.form.profile.address.country',
281
- options: this.provider.countries(),
282
- },
283
- // expressionProperties: {
284
- // 'templateOptions.disabled': (model: any) => !model.newAddress,
285
- // },
286
- hooks: {
287
- onInit: (model) => {
288
- console.log(model);
289
- },
290
- },
291
- },
292
- {
293
- className: '',
294
- fieldGroupClassName: 'form-flex-row space-between',
295
- fieldGroup: [
296
260
  {
297
- className: 'mr-8 w-100-p',
298
- key: 'zip',
299
- type: 'input',
300
- templateOptions: {
301
- label: 'scandoc.form.profile.address.zip',
302
- labelProp: (item) => {
303
- return `${item.zip} (${item.city})`;
304
- },
305
- set: (field, option) => {
306
- // console.log(option, field);
307
- field.formControl.setValue(option.value.zip);
308
- // set CITY
309
- field.form.get('city').setValue(option.value.city);
310
- },
311
- filter: (key, field) => {
312
- // return this.profileProvider.zipCodes({
313
- // countryCode: field.form.get('country').value,
314
- // zip: key,
315
- // });
316
- },
261
+ className: 'small',
262
+ key: 'country',
263
+ type: 'select',
264
+ props: {
265
+ required: true,
266
+ label: 'scandoc.form.profile.address.country',
267
+ options: this.provider.countries(),
317
268
  },
318
269
  // expressionProperties: {
319
- // 'templateOptions.disabled': (model: any) =>
320
- // !model.newAddress,
270
+ // 'props.disabled': (model: any) => !model.newAddress,
321
271
  // },
272
+ hooks: {
273
+ onInit: (model) => {
274
+ console.log(model);
275
+ },
276
+ },
322
277
  },
323
278
  {
324
- className: 'small ml-8',
325
- key: 'city',
279
+ className: '',
280
+ fieldGroupClassName: 'form-flex-row space-between',
281
+ fieldGroup: [
282
+ {
283
+ className: 'mr-8 w-100-p',
284
+ key: 'zip',
285
+ type: 'input',
286
+ props: {
287
+ label: 'scandoc.form.profile.address.zip',
288
+ labelProp: (item) => {
289
+ return `${item.zip} (${item.city})`;
290
+ },
291
+ set: (field, option) => {
292
+ // console.log(option, field);
293
+ field.formControl.setValue(option.value.zip);
294
+ // set CITY
295
+ field.form.get('city').setValue(option.value.city);
296
+ },
297
+ filter: (key, field) => {
298
+ // return this.profileProvider.zipCodes({
299
+ // countryCode: field.form.get('country').value,
300
+ // zip: key,
301
+ // });
302
+ },
303
+ },
304
+ // expressionProperties: {
305
+ // 'props.disabled': (model: any) =>
306
+ // !model.newAddress,
307
+ // },
308
+ },
309
+ {
310
+ className: 'small w-100-p ml-8',
311
+ key: 'city',
312
+ type: 'input',
313
+ props: {
314
+ label: 'scandoc.form.profile.address.city',
315
+ },
316
+ },
317
+ ],
318
+ },
319
+ {
320
+ className: 'small w-100-p',
321
+ key: 'street1',
326
322
  type: 'input',
327
- templateOptions: {
328
- label: 'scandoc.form.profile.address.city',
323
+ props: {
324
+ label: 'scandoc.form.profile.address.street',
329
325
  },
330
- // expressionProperties: {
331
- // 'templateOptions.disabled': (model: any) =>
332
- // !model.newAddress,
333
- // },
334
326
  },
335
- ].map((item) => this.translate.forms(item)),
336
- },
337
- // {
338
- // className: 'small',
339
- // key: 'state',
340
- // type: 'input',
341
- // templateOptions: {
342
- // label: 'scandoc.form.profile.address.state',
343
- // },
344
- // // expressionProperties: {
345
- // // 'templateOptions.disabled': (model: any) => !model.newAddress,
346
- // // },
347
- // },
348
- // {
349
- // className: 'small',
350
- // key: 'countryStateID',
351
- // type: 'select',
352
- // templateOptions: {
353
- // label: 'scandoc.form.profile.address.regionalStatistics',
354
- // options: this.provider.countries(),
355
- // },
356
- // // expressionProperties: {
357
- // // 'templateOptions.disabled': (model: any) => !model.newAddress,
358
- // // },
359
- // },
360
- {
361
- className: 'small w-100-p',
362
- key: 'street1',
363
- type: 'input',
364
- templateOptions: {
365
- label: 'scandoc.form.profile.address.street',
366
- },
367
- // expressionProperties: {
368
- // 'templateOptions.disabled': (model: any) => !model.newAddress,
369
- // },
327
+ ],
370
328
  },
371
329
  ],
372
330
  },
@@ -383,4 +341,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
383
341
  providedIn: 'root',
384
342
  }]
385
343
  }], ctorParameters: function () { return [{ type: i1.NgxScanDocTranslationProvider }, { type: i2.ScanProvider }]; } });
386
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nhbi5mb3JtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNjYW5kb2Mvc3JjL3Byb3ZpZGVycy9zY2FuLmZvcm0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7OztBQVUzQyxNQUFNLE9BQU8sa0JBQWtCO0lBQzdCLFlBQ1UsU0FBd0MsRUFDeEMsUUFBc0I7UUFEdEIsY0FBUyxHQUFULFNBQVMsQ0FBK0I7UUFDeEMsYUFBUSxHQUFSLFFBQVEsQ0FBYztJQUM3QixDQUFDO0lBRUosTUFBTTtRQUNKLE9BQU87WUFDTDtnQkFDRSxtQkFBbUIsRUFBRSxPQUFPO2dCQUM1QixVQUFVLEVBQUU7b0JBQ1Y7d0JBQ0UsUUFBUSxFQUFFLEVBQUU7d0JBQ1osSUFBSSxFQUFFLFVBQVU7d0JBQ2hCLEdBQUcsRUFBRSxTQUFTO3dCQUNkLEtBQUssRUFBRSxXQUFXO3dCQUNsQixZQUFZLEVBQUUsSUFBSTt3QkFDbEIsZUFBZSxFQUFFOzRCQUNmLEtBQUssRUFBRSwyQ0FBMkM7eUJBQ25EO3FCQUNGO29CQUNEO3dCQUNFLFFBQVEsRUFBRSxFQUFFO3dCQUNaLElBQUksRUFBRSxVQUFVO3dCQUNoQixLQUFLLEVBQUUsV0FBVzt3QkFDbEIsR0FBRyxFQUFFLFVBQVU7d0JBQ2YsWUFBWSxFQUFFLElBQUk7d0JBQ2xCLGVBQWUsRUFBRTs0QkFDZixLQUFLLEVBQUUsNENBQTRDO3lCQUNwRDtxQkFDRjtvQkFDRDt3QkFDRSxRQUFRLEVBQUUsRUFBRTt3QkFDWixJQUFJLEVBQUUsVUFBVTt3QkFDaEIsS0FBSyxFQUFFLFdBQVc7d0JBQ2xCLEdBQUcsRUFBRSxZQUFZO3dCQUNqQixZQUFZLEVBQUUsSUFBSTt3QkFDbEIsZUFBZSxFQUFFOzRCQUNmLEtBQUssRUFBRSw4Q0FBOEM7eUJBQ3REO3FCQUNGO2lCQUNGLENBQUMsR0FBRyxDQUFDLENBQUMsSUFB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QkFDL0Isd0VBQXdFOzRCQUN4RSxVQUFVOzRCQUNWLEtBQUs7NEJBQ0w7Z0NBQ0UsU0FBUyxFQUFFLGVBQWU7Z0NBQzFCLEdBQUcsRUFBRSxTQUFTO2dDQUNkLElBQUksRUFBRSxPQUFPO2dDQUNiLGVBQWUsRUFBRTtvQ0FDZixLQUFLLEVBQUUscUNBQXFDO2lDQUM3QztnQ0FDRCwwQkFBMEI7Z0NBQzFCLG1FQUFtRTtnQ0FDbkUsS0FBSzs2QkFDTjt5QkFDRjtxQkFDRjtpQkFDRjthQUNGO1NBQ0YsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDOUMsQ0FBQzs7K0dBelhVLGtCQUFrQjttSEFBbEIsa0JBQWtCLGNBRmpCLE1BQU07MkZBRVAsa0JBQWtCO2tCQUg5QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdE9wdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuaW1wb3J0IHsgRm9ybWx5RmllbGRDb25maWcgfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcblxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgU2NhblByb3ZpZGVyIH0gZnJvbSAnLi9zY2FuLnByb3ZpZGVyJztcbmltcG9ydCB7IE5neFNjYW5Eb2NUcmFuc2xhdGlvblByb3ZpZGVyIH0gZnJvbSAnLi90cmFuc2xhdGlvbi5wcm92aWRlcic7XG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgU2NhbkZpZWxkc1Byb3ZpZGVyIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGU6IE5neFNjYW5Eb2NUcmFuc2xhdGlvblByb3ZpZGVyLFxuICAgIHByaXZhdGUgcHJvdmlkZXI6IFNjYW5Qcm92aWRlclxuICApIHt9XG5cbiAgdXBkYXRlKCk6IEZvcm1seUZpZWxkQ29uZmlnW10ge1xuICAgIHJldHVybiBbXG4gICAgICB7XG4gICAgICAgIGZpZWxkR3JvdXBDbGFzc05hbWU6ICdweC0xNicsXG4gICAgICAgIGZpZWxkR3JvdXA6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICB3cmFwcGVyczogW10sXG4gICAgICAgICAgICB0eXBlOiAnY2hlY2tib3gnLFxuICAgICAgICAgICAga2V5OiAncHJvZmlsZScsXG4gICAgICAgICAgICBjbGFzczogJ2NoZWNrYm94ICcsXG4gICAgICAgICAgICBkZWZhdWx0VmFsdWU6IHRydWUsXG4gICAgICAgICAgICB0ZW1wbGF0ZU9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgbGFiZWw6ICdzY2FuZG9jLmZvcm0uc2Nhbi5kb2N1bWVudC51cGRhdGUucHJvZmlsZScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgd3JhcHBlcnM6IFtdLFxuICAgICAgICAgICAgdHlwZTogJ2NoZWNrYm94JyxcbiAgICAgICAgICAgIGNsYXNzOiAnY2hlY2tib3ggJyxcbiAgICAgICAgICAgIGtleTogJ2RvY3VtZW50JyxcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogdHJ1ZSxcbiAgICAgICAgICAgIHRlbXBsYXRlT3B0aW9uczoge1xuICAgICAgICAgICAgICBsYWJlbDogJ3NjYW5kb2MuZm9ybS5zY2FuLmRvY3VtZW50LnVwZGF0ZS5kb2N1bWVudCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgd3JhcHBlcnM6IFtdLFxuICAgICAgICAgICAgdHlwZTogJ2NoZWNrYm94JyxcbiAgICAgICAgICAgIGNsYXNzOiAnY2hlY2tib3ggJyxcbiAgICAgICAgICAgIGtleTogJ2F0dGFjaG1lbnQnLFxuICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiB0cnVlLFxuICAgICAgICAgICAgdGVtcGxhdGVPcHRpb25zOiB7XG4gICAgICAgICAgICAgIGxhYmVsOiAnc2NhbmRvYy5mb3JtLnNjYW4uZG9jdW1lbnQudXBkYXRlLmF0dGFjaG1lbnQnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLm1hcCgoaXRlbSkgPT4gdGhpcy50cmFuc2xhdGUuZm9ybXMoaXRlbSkpLFxuICAgICAgfSxcbiAgICBdO1xuICB9XG4gIGRvY3VtZW50KCk6IEZvcm1seUZpZWxkQ29uZmlnW10ge1xuICAgIHJldHVybiBbXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3ctMjAwLXAnLFxuICAgICAgICBmaWVsZEdyb3VwQ2xhc3NOYW1lOiAnZm9ybS1mbGV4LXJvdyBib3JkZXItY2FyZCBwcm9maWxlLWRldGFpbHMnLFxuICAgICAgICBmaWVsZEdyb3VwOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnY2FyZC1ncm91cCcsXG4gICAgICAgICAgICBmaWVsZEdyb3VwQ2xhc3NOYW1lOiAnd3JhcGVyJyxcbiAgICAgICAgICAgIGZpZWxkR3JvdXA6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHR5cGU6ICd0aXRsZScsXG4gICAgICAgICAgICAgICAgdGVtcGxhdGVPcHRpb25zOiB7XG4gICAgICAgICAgICAgICAgICBsYWJlbDogJ3NjYW5kb2MuZm9ybS5zY2FuLmRvY3VtZW50Lmd1ZXN0RGV0YWlsc1RpdGxlJyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAvLyB7XG4gICAgICAgICAgICAgIC8vICAgdHlwZTogJ3Byb2ZpbGUtaW1hZ2UnLFxuICAgICAgICAgICAgICAvLyAgIGtleTogJ19hdmF0YXInLFxuICAgICAgICAgICAgICAvLyAgIHRlbXBsYXRlT3B0aW9uczoge1xuICAgICAgICAgICAgICAvLyAgICAgbGFiZWw6ICdzY2FuZG9jLmZvcm0uc2Nhbi5kb2N1bWVudC5maXJzdE5hbWUnLFxuICAgICAgICAgICAgICAvLyAgIH0sXG4gICAgICAgICAgICAgIC8vIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0eXBlOiAnaW5wdXQnLFxuICAgICAgICAgICAgICAgIGtleTogJ2ZpcnN0TmFtZScsXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnc21hbGwnLFxuICAgICAgICAgICAgICAgIHRlbXBsYXRlT3B0aW9uczoge1xuICAgICAgICAgICAgICAgICAgbGFiZWw6ICdzY2FuZG9jLmZvcm0uc2Nhbi5kb2N1bWVudC5maXJzdE5hbWUnLFxuICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHR5cGU6ICdpbnB1dCcsXG4gICAgICAgICAgICAgICAga2V5OiAnbGFzdE5hbWUnLFxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ3NtYWxsJyxcbiAgICAgICAgICAgICAgICB0ZW1wbGF0ZU9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgIGxhYmVsOiAnc2NhbmRvYy5mb3JtLnNjYW4uZG9jdW1lbnQubGFzdE5hbWUnLFxuICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ3NtYWxsJyxcbiAgICAgICAgICAgICAgICBrZXk6ICdzZWNvbmROYW1lJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAnaW5wdXQnLFxuICAgICAgICAgICAgICAgIHRlbXBsYXRlT3B0aW9uczoge1xuICAgICAgICAgICAgICAgICAgY29sb3I6ICdhY2NlbnQnLFxuICAgICAgICAgICAgICAgICAgbGFiZWw6ICdzY2FuZG9jLmZvcm0uc2Nhbi5kb2N1bWVudC5zZWNvbmRMYXN0TmFtZScsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBoaWRlRXhwcmVzc2lvbjogJ21vZGVsLmhpZGVTZWNvbmRMYXN0TmFtZScsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0eXBlOiAnaW5wdXQnLFxuICAgICAgICAgICAgICAgIGtleTogJ21pZGRsZU5hbWUnLFxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ3NtYWxsJyxcbiAgICAgICAgICAgICAgICB0ZW1wbGF0ZU9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgIGxhYmVsOiAnc2NhbmRvYy5mb3JtLnNjYW4uZG9jdW1lbnQubWlkZGxlTmFtZScsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJycsXG4gICAgICAgICAgICAgICAgZmllbGRHcm91cENsYXNzTmFtZTogJ2Zvcm0tZmxleC1yb3cgc3BhY2UtYmV0d2VlbicsXG4gICAgICAgICAgICAgICAgZmllbGRHcm91cDogW1xuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiAnZGF0ZXBpY2tlcicsXG4gICAgICAgICAgICAgICAgICAgIGtleTogJ2JpcnRoRGF0ZScsXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ3ctMTAwLXAgc21hbGwgbXItOCcsXG4gICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlT3B0aW9uczoge1xuICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnc2NhbmRvYy5mb3JtLnNjYW4uZG9jdW1lbnQuYmlydGhEYXRlJyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdzZWxlY3QnLFxuICAgICAgICAgICAgICAgICAgICBrZXk6ICdnZW5kZXInLFxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICd3LTEwMC1wIHNtYWxsIG1sLTgnLFxuICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZU9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ3NjYW5kb2MuZm9ybS5zY2FuLmRvY3VtZW50LmdlbmRlcicsXG4gICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogJ01BTEUnLCBsYWJlbDogJ01BTEUnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnRkVNQUxFJywgbGFiZWw6ICdGRU1BTEUnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnTkEnLCBsYWJlbDogJ04vQScgfSxcbiAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0eXBlOiAnaW5wdXQnLFxuICAgICAgICAgICAgICAgIGtleTogJ2JpcnRoUGxhY2UnLFxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ3NtYWxsJyxcbiAgICAgICAgICAgICAgICB0ZW1wbGF0ZU9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgIGxhYmVsOiAnc2NhbmRvYy5mb3JtLnNjYW4uZG9jdW1lbnQuYmlydGhQbGFjZScsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHR5cGU6ICdzZWxlY3QnLFxuICAgICAgICAgICAgICAgIGtleTogJ2JpcnRoQ291bnRyeScsXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnc21hbGwnLFxuICAgICAgICAgICAgICAgIHRlbXBsYXRlT3B0aW9uczoge1xuICAgICAgICAgICAgICAgICAgbGFiZWw6ICdzY2FuZG9jLmZvcm0uc2Nhbi5kb2N1bWVudC5iaXJ0aENvdW50cnknLFxuXG4gICAgICAgICAgICAgICAgICBvcHRpb25zOiB0aGlzLnByb3ZpZGVyLmNvdW50cmllcygpLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdzbWFsbCcsXG4gICAgICAgICAgICAgICAga2V5OiAnbmF0aW9uYWxpdHknLFxuICAgICAgICAgICAgICAgIHR5cGU6ICdzZWxlY3QnLFxuICAgICAgICAgICAgICAgIHRlbXBsYXRlT3B0aW9uczoge1xuICAgICAgICAgICAgICAgICAgbGFiZWw6ICdzY2FuZG9jLmZvcm0uc2Nhbi5kb2N1bWVudC5uYXRpb25hbGl0eScsXG4gICAgICAgICAgICAgICAgICAvLyAgIGFwcGVhcmFuY2U6ICdvdXRsaW5lJyxcbiAgICAgICAgICAgICAgICAgIC8vICBvcHRpb25zOiB0aGlzLnByb2ZpbGVQcm92aWRlci5uYXRpb25hbGl0aWVzKCksXG4gICAgICAgICAgICAgICAgICBvcHRpb25zOiB0aGlzLnByb3ZpZGVyLmNvdW50cmllcygpLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnY2FyZC1ncm91cCcsXG4gICAgICAgICAgICBmaWVsZEdyb3VwQ2xhc3NOYW1lOiAnd3JhcGVyJyxcbiAgICAgICAgICAgIGZpZWxkR3JvdXA6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHR5cGU6ICd0aXRsZScsXG4gICAgICAgICAgICAgICAgdGVtcGxhdGVPcHRpb25zOiB7XG4gICAgICAgICAgICAgICAgICBsYWJlbDogJ3NjYW5kb2MuZm9ybS5zY2FuLmRvY3VtZW50LmRvY3VtZW50VGl0bGUnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0eXBlOiAnc2VsZWN0JyxcbiAgICAgICAgICAgICAgICBrZXk6ICdkb2N1bWVudFR5cGUnLFxuICAgICAgICAgICAgICAgIHRlbXBsYXRlT3B0aW9uczoge1xuICAgICAgICAgICAgICAgICAgbGFiZWw6ICdzY2FuZG9jLmZvcm0uc2Nhbi5kb2N1bWVudC5kb2N1bWVudFR5cGUnLFxuICAgICAgICAgICAgICAgICAgb3B0aW9uczogW1xuICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnSUQnLCBsYWJlbDogJ0lkZW50aXR5IERvY3VtZW50JyB9LFxuICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnUEFTUycsIGxhYmVsOiAnUGFzc3BvcnQnIH0sXG4gICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdETCcsIGxhYmVsOiAnRHJpdmVyIExpY2VuY2UnIH0sXG4gICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgLy8gIHZhbHVlUHJvcDogJ2lkJyxcbiAgICAgICAgICAgICAgICAgIC8vICBsYWJlbFByb3A6ICd2YWx1ZScsXG4gICAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdHlwZTogJ2lucHV0JyxcbiAgICAgICAgICAgICAgICBrZXk6ICdkb2N1bWVudE51bWJlcicsXG4gICAgICAgICAgICAgICAgdGVtcGxhdGVPcHRpb25zOiB7XG4gICAgICAgICAgICAgICAgICBsYWJlbDogJ3NjYW5kb2MuZm9ybS5zY2FuLmRvY3VtZW50LmRvY3VtZW50TnVtYmVyJyxcbiAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICcnLFxuICAgICAgICAgICAgICAgIGZpZWxkR3JvdXBDbGFzc05hbWU6ICdmb3JtLWZsZXgtcm93IHNwYWNlLWJldHdlZW4nLFxuICAgICAgICAgICAgICAgIGZpZWxkR3JvdXA6IFtcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2RhdGVwaWNrZXInLFxuICAgICAgICAgICAgICAgICAgICBrZXk6ICdpc3N1ZURhdGUnLFxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdzbWFsbCBtci04JyxcbiAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGVPcHRpb25zOiB7XG4gICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdzY2FuZG9jLmZvcm0uc2Nhbi5kb2N1bWVudC5pc3N1ZURhdGUnLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2RhdGVwaWNrZXInLFxuICAgICAgICAgICAgICAgICAgICBrZXk6ICdleHBpcmF0aW9uRGF0ZScsXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ3NtYWxsIG1sLTgnLFxuICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZU9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ3NjYW5kb2MuZm9ybS5zY2FuLmRvY3VtZW50LmV4cGlyYXRpb25EYXRlJyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHR5cGU6ICdzZWxlY3QnLFxuICAgICAgICAgICAgICAgIGtleTogJ2lzc3VlU3RhdGVDb2RlJyxcbiAgICAgICAgICAgICAgICB0ZW1wbGF0ZU9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgIGxhYmVsOiAnc2NhbmRvYy5mb3JtLnNjYW4uZG9jdW1lbnQuaXNzdWluZ1N0YXRlQ29kZScsXG5cbiAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHRoaXMucHJvdmlkZXIuY291bnRyaWVzKCksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHR5cGU6ICdpbnB1dCcsXG4gICAgICAgICAgICAgICAga2V5OiAnaXNzdWluZ1BsYWNlJyxcbiAgICAgICAgICAgICAgICB0ZW1wbGF0ZU9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgIGxhYmVsOiAnc2NhbmRvYy5mb3JtLnNjYW4uZG9jdW1lbnQuaXNzdWluZ1BsYWNlJyxcbiAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnJyxcbiAgICAgICAgICAgICAgICBmaWVsZEdyb3VwQ2xhc3NOYW1lOiAnZm9ybS1mbGV4LXJvdyBzcGFjZS1iZXR3ZWVuJyxcbiAgICAgICAgICAgICAgICBmaWVsZEdyb3VwOiBbXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICd0aXRsZScsXG4gICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlT3B0aW9uczoge1xuICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnc2NhbmRvYy5mb3JtLnNjYW4uZG9jdW1lbnQuYWRkcmVzc1RpdGxlJyxcbiAgICAgICAgICAgICAgICAgICAgICBiYWRnZTogJ2NvbW11bmljYXRpb25zJyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgXS5tYXAoKGl0ZW0pID0+IHRoaXMudHJhbnNsYXRlLmZvcm1zKGl0ZW0pKSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgLy8ge1xuICAgICAgICAgICAgICAvLyAgIGNsYXNzTmFtZTogJ3NtYWxsJyxcbiAgICAgICAgICAgICAgLy8gICBrZXk6ICd0eXBlSUQnLFxuICAgICAgICAgICAgICAvLyAgIHR5cGU6ICdzZWxlY3QnLFxuICAgICAgICAgICAgICAvLyAgIHRlbXBsYXRlT3B0aW9uczoge1xuICAgICAgICAgICAgICAvLyAgICAgbGFiZWw6ICdzY2FuZG9jLmZvcm0ucHJvZmlsZS5hZGRyZXNzLnR5cGUnLFxuICAgICAgICAgICAgICAvLyAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICAgIC8vICAgICAvLyAgb3B0aW9uczogdGhpcy5wcm9maWxlUHJvdmlkZXIuYWRkcmVzc1R5cGVzKCksXG4gICAgICAgICAgICAgIC8vICAgICBleHByZXNzaW9uUHJvcGVydGllczoge1xuICAgICAgICAgICAgICAvLyAgICAgICAndGVtcGxhdGVPcHRpb25zLmRpc2FibGVkJzogKG1vZGVsOiBhbnkpID0+XG4gICAgICAgICAgICAgIC8vICAgICAgICAgbW9kZWwubmV3QWRkcmVzcyxcbiAgICAgICAgICAgICAgLy8gICAgIH0sXG4gICAgICAgICAgICAgIC8vICAgICBvbkNsZWFyVmFsdWU6IChmaWVsZDogRm9ybWx5RmllbGRDb25maWcpID0+IHtcbiAgICAgICAgICAgICAgLy8gICAgICAgZmllbGQuZm9ybUNvbnRyb2w/LnNldFZhbHVlKCcnKTtcbiAgICAgICAgICAgICAgLy8gICAgICAgZmllbGQubW9kZWwudHlwZUlEID0gMDtcbiAgICAgICAgICAgICAgLy8gICAgIH0sXG4gICAgICAgICAgICAgIC8vICAgICBvblNldE5ld1ZhbHVlOiAoZmllbGQ6IEZvcm1seUZpZWxkQ29uZmlnLCBvcHRPYmo6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAvLyAgICAgICBmaWVsZC5mb3JtQ29udHJvbD8uc2V0VmFsdWUob3B0T2JqLnZhbHVlKTtcbiAgICAgICAgICAgICAgLy8gICAgICAgZmllbGQubW9kZWwudHlwZUlEID0gb3B0T2JqLnZhbHVlO1xuICAgICAgICAgICAgICAvLyAgICAgfSxcbiAgICAgICAgICAgICAgLy8gICB9LFxuICAgICAgICAgICAgICAvLyAgIGV4cHJlc3Npb25Qcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgIC8vICAgICAndGVtcGxhdGVPcHRpb25zLmRpc2FibGVkJzogKG1vZGVsOiBhbnkpID0+ICFtb2RlbC5uZXdBZGRyZXNzLFxuICAgICAgICAgICAgICAvLyAgIH0sXG4gICAgICAgICAgICAgIC8vIH0sXG5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ3NtYWxsJyxcbiAgICAgICAgICAgICAgICBrZXk6ICdjb3VudHJ5JyxcbiAgICAgICAgICAgICAgICB0eXBlOiAnc2VsZWN0JyxcbiAgICAgICAgICAgICAgICB0ZW1wbGF0ZU9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgbGFiZWw6ICdzY2FuZG9jLmZvcm0ucHJvZmlsZS5hZGRyZXNzLmNvdW50cnknLFxuICAgICAgICAgICAgICAgICAgb3B0aW9uczogdGhpcy5wcm92aWRlci5jb3VudHJpZXMoKSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIC8vIGV4cHJlc3Npb25Qcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgICAgLy8gICAndGVtcGxhdGVPcHRpb25zLmRpc2FibGVkJzogKG1vZGVsOiBhbnkpID0+ICFtb2RlbC5uZXdBZGRyZXNzLFxuICAgICAgICAgICAgICAgIC8vIH0sXG4gICAgICAgICAgICAgICAgaG9va3M6IHtcbiAgICAgICAgICAgICAgICAgIG9uSW5pdDogKG1vZGVsOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2cobW9kZWwpO1xuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnJyxcbiAgICAgICAgICAgICAgICBmaWVsZEdyb3VwQ2xhc3NOYW1lOiAnZm9ybS1mbGV4LXJvdyBzcGFjZS1iZXR3ZWVuJyxcbiAgICAgICAgICAgICAgICBmaWVsZEdyb3VwOiBbXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ21yLTggdy0xMDAtcCcsXG4gICAgICAgICAgICAgICAgICAgIGtleTogJ3ppcCcsXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdpbnB1dCcsXG4gICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlT3B0aW9uczoge1xuICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnc2NhbmRvYy5mb3JtLnByb2ZpbGUuYWRkcmVzcy56aXAnLFxuICAgICAgICAgICAgICAgICAgICAgIGxhYmVsUHJvcDogKGl0ZW06IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGAke2l0ZW0uemlwfSAoJHtpdGVtLmNpdHl9KWA7XG4gICAgICAgICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgICAgICAgIHNldDogKGZpZWxkOiBhbnksIG9wdGlvbjogTWF0T3B0aW9uKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhvcHRpb24sIGZpZWxkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLmZvcm1Db250cm9sLnNldFZhbHVlKG9wdGlvbi52YWx1ZS56aXApO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2V0IENJVFlcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLmZvcm0uZ2V0KCdjaXR5Jykuc2V0VmFsdWUob3B0aW9uLnZhbHVlLmNpdHkpO1xuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgZmlsdGVyOiAoa2V5OiBzdHJpbmcsIGZpZWxkOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJldHVybiB0aGlzLnByb2ZpbGVQcm92aWRlci56aXBDb2Rlcyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAgIGNvdW50cnlDb2RlOiBmaWVsZC5mb3JtLmdldCgnY291bnRyeScpLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gICB6aXA6IGtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIH0pO1xuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIC8vIGV4cHJlc3Npb25Qcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgICAgICAgIC8vICAgJ3RlbXBsYXRlT3B0aW9ucy5kaXNhYmxlZCc6IChtb2RlbDogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAvLyAgICAgIW1vZGVsLm5ld0FkZHJlc3MsXG4gICAgICAgICAgICAgICAgICAgIC8vIH0sXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdzbWFsbCBtbC04JyxcbiAgICAgICAgICAgICAgICAgICAga2V5OiAnY2l0eScsXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdpbnB1dCcsXG4gICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlT3B0aW9uczoge1xuICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnc2NhbmRvYy5mb3JtLnByb2ZpbGUuYWRkcmVzcy5jaXR5JyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgLy8gZXhwcmVzc2lvblByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgLy8gICAndGVtcGxhdGVPcHRpb25zLmRpc2FibGVkJzogKG1vZGVsOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgIC8vICAgICAhbW9kZWwubmV3QWRkcmVzcyxcbiAgICAgICAgICAgICAgICAgICAgLy8gfSxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgXS5tYXAoKGl0ZW0pID0+IHRoaXMudHJhbnNsYXRlLmZvcm1zKGl0ZW0pKSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgLy8ge1xuICAgICAgICAgICAgICAvLyAgIGNsYXNzTmFtZTogJ3NtYWxsJyxcbiAgICAgICAgICAgICAgLy8gICBrZXk6ICdzdGF0ZScsXG4gICAgICAgICAgICAgIC8vICAgdHlwZTogJ2lucHV0JyxcbiAgICAgICAgICAgICAgLy8gICB0ZW1wbGF0ZU9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgLy8gICAgIGxhYmVsOiAnc2NhbmRvYy5mb3JtLnByb2ZpbGUuYWRkcmVzcy5zdGF0ZScsXG4gICAgICAgICAgICAgIC8vICAgfSxcbiAgICAgICAgICAgICAgLy8gICAvLyBleHByZXNzaW9uUHJvcGVydGllczoge1xuICAgICAgICAgICAgICAvLyAgIC8vICAgJ3RlbXBsYXRlT3B0aW9ucy5kaXNhYmxlZCc6IChtb2RlbDogYW55KSA9PiAhbW9kZWwubmV3QWRkcmVzcyxcbiAgICAgICAgICAgICAgLy8gICAvLyB9LFxuICAgICAgICAgICAgICAvLyB9LFxuICAgICAgICAgICAgICAvLyB7XG4gICAgICAgICAgICAgIC8vICAgY2xhc3NOYW1lOiAnc21hbGwnLFxuICAgICAgICAgICAgICAvLyAgIGtleTogJ2NvdW50cnlTdGF0ZUlEJyxcbiAgICAgICAgICAgICAgLy8gICB0eXBlOiAnc2VsZWN0JyxcbiAgICAgICAgICAgICAgLy8gICB0ZW1wbGF0ZU9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgLy8gICAgIGxhYmVsOiAnc2NhbmRvYy5mb3JtLnByb2ZpbGUuYWRkcmVzcy5yZWdpb25hbFN0YXRpc3RpY3MnLFxuICAgICAgICAgICAgICAvLyAgICAgb3B0aW9uczogdGhpcy5wcm92aWRlci5jb3VudHJpZXMoKSxcbiAgICAgICAgICAgICAgLy8gICB9LFxuICAgICAgICAgICAgICAvLyAgIC8vIGV4cHJlc3Npb25Qcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgIC8vICAgLy8gICAndGVtcGxhdGVPcHRpb25zLmRpc2FibGVkJzogKG1vZGVsOiBhbnkpID0+ICFtb2RlbC5uZXdBZGRyZXNzLFxuICAgICAgICAgICAgICAvLyAgIC8vIH0sXG4gICAgICAgICAgICAgIC8vIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdzbWFsbCB3LTEwMC1wJyxcbiAgICAgICAgICAgICAgICBrZXk6ICdzdHJlZXQxJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAnaW5wdXQnLFxuICAgICAgICAgICAgICAgIHRlbXBsYXRlT3B0aW9uczoge1xuICAgICAgICAgICAgICAgICAgbGFiZWw6ICdzY2FuZG9jLmZvcm0ucHJvZmlsZS5hZGRyZXNzLnN0cmVldCcsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAvLyBleHByZXNzaW9uUHJvcGVydGllczoge1xuICAgICAgICAgICAgICAgIC8vICAgJ3RlbXBsYXRlT3B0aW9ucy5kaXNhYmxlZCc6IChtb2RlbDogYW55KSA9PiAhbW9kZWwubmV3QWRkcmVzcyxcbiAgICAgICAgICAgICAgICAvLyB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICBdLm1hcCgoaXRlbSkgPT4gdGhpcy50cmFuc2xhdGUuZm9ybXMoaXRlbSkpO1xuICB9XG59XG4iXX0=
344
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nhbi5mb3JtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNjYW5kb2Mvc3JjL3Byb3ZpZGVycy9zY2FuLmZvcm0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUkzQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7O0FBTS9CLE1BQU0sT0FBTyxrQkFBa0I7SUFFN0IsWUFDVSxTQUF3QyxFQUN4QyxRQUFzQjtRQUR0QixjQUFTLEdBQVQsU0FBUyxDQUErQjtRQUN4QyxhQUFRLEdBQVIsUUFBUSxDQUFjO1FBSGhDLFlBQU8sR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBSXJCLENBQUM7SUFFSixNQUFNO1FBQ0osT0FBTztZQUNMO2dCQUNFLG1CQUFtQixFQUFFLE9BQU87Z0JBQzVCLFVBQVUsRUFBRTtvQkFDVjt3QkFDRSxRQUFRLEVBQUUsRUFBRTt3QkFDWixJQUFJLEVBQUUsVUFBVTt3QkFDaEIsR0FBRyxFQUFFLFNBQVM7d0JBQ2QsS0FBSyxFQUFFLFdBQVc7d0JBQ2xCLFlBQVksRUFBRSxJQUFJO3dCQUNsQixLQUFLLEVBQUU7NEJBQ0wsS0FBSyxFQUFFLDJDQUEyQzt5QkFDbkQ7cUJBQ0Y7b0JBQ0Q7d0JBQ0UsUUFBUSxFQUFFLEVBQUU7d0JBQ1osSUFBSSxFQUFFLFVBQVU7d0JBQ2hCLEtBQUssRUFBRSxXQUFXO3dCQUNsQixHQUFHLEVBQUUsVUFBVTt3QkFDZixZQUFZLEVBQUUsSUFBSTt3QkFDbEIsS0FBSyxFQUFFOzRCQUNMLEtBQUssRUFBRSw0Q0FBNEM7eUJBQ3BEO3FCQUNGO29CQUNEO3dCQUNFLFFBQVEsRUFBRSxFQUFFO3dCQUNaLElBQUksRUFBRSxVQUFVO3dCQUNoQixLQUFLLEVBQUUsV0FBVzt3QkFDbEIsR0FBRyxFQUFFLFlBQVk7d0JBQ2pCLFlBQVksRUFBRSxJQUFJO3dCQUNs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REFDRCxNQUFNLEVBQUUsQ0FBQyxHQUFXLEVBQUUsS0FBVSxFQUFFLEVBQUU7d0RBQ2xDLHlDQUF5Qzt3REFDekMsa0RBQWtEO3dEQUNsRCxjQUFjO3dEQUNkLE1BQU07b0RBQ1IsQ0FBQztpREFDRjtnREFDRCwwQkFBMEI7Z0RBQzFCLHNDQUFzQztnREFDdEMseUJBQXlCO2dEQUN6QixLQUFLOzZDQUNOOzRDQUNEO2dEQUNFLFNBQVMsRUFBRSxvQkFBb0I7Z0RBQy9CLEdBQUcsRUFBRSxNQUFNO2dEQUNYLElBQUksRUFBRSxPQUFPO2dEQUNiLEtBQUssRUFBRTtvREFDTCxLQUFLLEVBQUUsbUNBQW1DO2lEQUMzQzs2Q0FDRjt5Q0FDRjtxQ0FDRjtvQ0FFRDt3Q0FDRSxTQUFTLEVBQUUsZUFBZTt3Q0FDMUIsR0FBRyxFQUFFLFNBQVM7d0NBQ2QsSUFBSSxFQUFFLE9BQU87d0NBQ2IsS0FBSyxFQUFFOzRDQUNMLEtBQUssRUFBRSxxQ0FBcUM7eUNBQzdDO3FDQUNGO2lDQUNGOzZCQUNGO3lCQUNGO3FCQUNGO2lCQUNGO2FBQ0Y7U0FDRixDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUM5QyxDQUFDOzsrR0E5VVUsa0JBQWtCO21IQUFsQixrQkFBa0IsY0FGakIsTUFBTTsyRkFFUCxrQkFBa0I7a0JBSDlCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0T3B0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQgeyBGb3JtbHlGaWVsZENvbmZpZyB9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xuXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBTY2FuUHJvdmlkZXIgfSBmcm9tICcuL3NjYW4ucHJvdmlkZXInO1xuaW1wb3J0IHsgTmd4U2NhbkRvY1RyYW5zbGF0aW9uUHJvdmlkZXIgfSBmcm9tICcuL3RyYW5zbGF0aW9uLnByb3ZpZGVyJztcbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBTY2FuRmllbGRzUHJvdmlkZXIge1xuICBzZWxmaWUkID0gbmV3IFN1YmplY3QoKTtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGU6IE5neFNjYW5Eb2NUcmFuc2xhdGlvblByb3ZpZGVyLFxuICAgIHByaXZhdGUgcHJvdmlkZXI6IFNjYW5Qcm92aWRlclxuICApIHt9XG5cbiAgdXBkYXRlKCk6IEZvcm1seUZpZWxkQ29uZmlnW10ge1xuICAgIHJldHVybiBbXG4gICAgICB7XG4gICAgICAgIGZpZWxkR3JvdXBDbGFzc05hbWU6ICdweC0xNicsXG4gICAgICAgIGZpZWxkR3JvdXA6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICB3cmFwcGVyczogW10sXG4gICAgICAgICAgICB0eXBlOiAnY2hlY2tib3gnLFxuICAgICAgICAgICAga2V5OiAncHJvZmlsZScsXG4gICAgICAgICAgICBjbGFzczogJ2NoZWNrYm94ICcsXG4gICAgICAgICAgICBkZWZhdWx0VmFsdWU6IHRydWUsXG4gICAgICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgICBsYWJlbDogJ3NjYW5kb2MuZm9ybS5zY2FuLmRvY3VtZW50LnVwZGF0ZS5wcm9maWxlJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB3cmFwcGVyczogW10sXG4gICAgICAgICAgICB0eXBlOiAnY2hlY2tib3gnLFxuICAgICAgICAgICAgY2xhc3M6ICdjaGVja2JveCAnLFxuICAgICAgICAgICAga2V5OiAnZG9jdW1lbnQnLFxuICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiB0cnVlLFxuICAgICAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgICAgbGFiZWw6ICdzY2FuZG9jLmZvcm0uc2Nhbi5kb2N1bWVudC51cGRhdGUuZG9jdW1lbnQnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHdyYXBwZXJzOiBbXSxcbiAgICAgICAgICAgIHR5cGU6ICdjaGVja2JveCcsXG4gICAgICAgICAgICBjbGFzczogJ2NoZWNrYm94ICcsXG4gICAgICAgICAgICBrZXk6ICdhdHRhY2htZW50JyxcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogdHJ1ZSxcbiAgICAgICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICAgIGxhYmVsOiAnc2NhbmRvYy5mb3JtLnNjYW4uZG9jdW1lbnQudXBkYXRlLmF0dGFjaG1lbnQnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLm1hcCgoaXRlbSkgPT4gdGhpcy50cmFuc2xhdGUuZm9ybXMoaXRlbSkpLFxuICAgICAgfSxcbiAgICBdO1xuICB9XG4gIGRvY3VtZW50KCk6IEZvcm1seUZpZWxkQ29uZmlnW10ge1xuICAgIHJldHVybiBbXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3ctMTAwLXAnLFxuICAgICAgICBmaWVsZEdyb3VwQ2xhc3NOYW1lOiAnZm9ybS1mbGV4LXJvdyAgcHJvZmlsZS1kZXRhaWxzJyxcbiAgICAgICAgZmllbGRHcm91cDogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3ctMTAwLXAgJyxcbiAgICAgICAgICAgIGZpZWxkR3JvdXBDbGFzc05hbWU6ICdjYXJkLWdyb3VwJyxcbiAgICAgICAgICAgIGZpZWxkR3JvdXA6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHR5cGU6ICd0aXRsZScsXG4gICAgICAgICAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgICAgICAgIGxhYmVsOiAnc2NhbmRvYy5mb3JtLnNjYW4uZG9jdW1lbnQuZ3Vlc3REZXRhaWxzVGl0bGUnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0eXBlOiAncHJvZmlsZS1pbWFnZScsXG4gICAgICAgICAgICAgICAga2V5OiAnX2F2YXRhcicsXG4gICAgICAgICAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgICAgICAgIGxhYmVsOiAnc2NhbmRvYy5mb3JtLnNjYW4uZG9jdW1lbnQuZmlyc3ROYW1lJyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdHlwZTogJ2lucHV0JyxcbiAgICAgICAgICAgICAgICBrZXk6ICdmaXJzdE5hbWUnLFxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ3NtYWxsJyxcbiAgICAgICAgICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgICAgICAgbGFiZWw6ICdzY2FuZG9jLmZvcm0uc2Nhbi5kb2N1bWVudC5maXJzdE5hbWUnLFxuICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHR5cGU6ICdpbnB1dCcsXG4gICAgICAgICAgICAgICAga2V5OiAnbGFzdE5hbWUnLFxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ3NtYWxsJyxcbiAgICAgICAgICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgICAgICAgbGFiZWw6ICdzY2FuZG9jLmZvcm0uc2Nhbi5kb2N1bWVudC5sYXN0TmFtZScsXG4gICAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnc21hbGwnLFxuICAgICAgICAgICAgICAgIGtleTogJ3NlY29uZE5hbWUnLFxuICAgICAgICAgICAgICAgIHR5cGU6ICdpbnB1dCcsXG4gICAgICAgICAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgICAgICAgIGxhYmVsOiAnc2NhbmRvYy5mb3JtLnNjYW4uZG9jdW1lbnQuc2Vjb25kTGFzdE5hbWUnLFxuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICBoaWRlRXhwcmVzc2lvbjogJ21vZGVsLmhpZGVTZWNvbmRMYXN0TmFtZScsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0eXBlOiAnaW5wdXQnLFxuICAgICAgICAgICAgICAgIGtleTogJ21pZGRsZU5hbWUnLFxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ3NtYWxsJyxcbiAgICAgICAgICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgICAgICAgbGFiZWw6ICdzY2FuZG9jLmZvcm0uc2Nhbi5kb2N1bWVudC5taWRkbGVOYW1lJyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnJyxcbiAgICAgICAgICAgICAgICBmaWVsZEdyb3VwQ2xhc3NOYW1lOiAnZm9ybS1mbGV4LXJvdyBzcGFjZS1iZXR3ZWVuJyxcbiAgICAgICAgICAgICAgICBmaWVsZEdyb3VwOiBbXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdkYXRlcGlja2VyJyxcbiAgICAgICAgICAgICAgICAgICAga2V5OiAnYmlydGhEYXRlJyxcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAndy0xMDAtcCBzbWFsbCBtci04JyxcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ3NjYW5kb2MuZm9ybS5zY2FuLmRvY3VtZW50LmJpcnRoRGF0ZScsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiAnc2VsZWN0JyxcbiAgICAgICAgICAgICAgICAgICAga2V5OiAnZ2VuZGVyJyxcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAndy0xMDAtcCBzbWFsbCBtbC04JyxcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ3NjYW5kb2MuZm9ybS5zY2FuLmRvY3VtZW50LmdlbmRlcicsXG4gICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogJ01BTEUnLCBsYWJlbDogJ01BTEUnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnRkVNQUxFJywgbGFiZWw6ICdGRU1BTEUnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnTkEnLCBsYWJlbDogJ04vQScgfSxcbiAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnJyxcbiAgICAgICAgICAgICAgICBmaWVsZEdyb3VwQ2xhc3NOYW1lOiAnZm9ybS1mbGV4LXJvdyBzcGFjZS1iZXR3ZWVuJyxcbiAgICAgICAgICAgICAgICBmaWVsZEdyb3VwOiBbXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdpbnB1dCcsXG4gICAgICAgICAgICAgICAgICAgIGtleTogJ2JpcnRoUGxhY2UnLFxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdzbWFsbCB3LTEwMC1wIG1yLTgnLFxuICAgICAgICAgICAgICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnc2NhbmRvYy5mb3JtLnNjYW4uZG9jdW1lbnQuYmlydGhQbGFjZScsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiAnc2VsZWN0JyxcbiAgICAgICAgICAgICAgICAgICAga2V5OiAnYmlydGhDb3VudHJ5JyxcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnc21hbGwgdy0xMDAtcCBtbC04JyxcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ3NjYW5kb2MuZm9ybS5zY2FuLmRvY3VtZW50LmJpcnRoQ291bnRyeScsXG5cbiAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiB0aGlzLnByb3ZpZGVyLmNvdW50cmllcygpLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnc21hbGwnLFxuICAgICAgICAgICAgICAgIGtleTogJ25hdGlvbmFsaXR5JyxcbiAgICAgICAgICAgICAgICB0eXBlOiAnc2VsZWN0JyxcbiAgICAgICAgICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgICAgICAgbGFiZWw6ICdzY2FuZG9jLmZvcm0uc2Nhbi5kb2N1bWVudC5uYXRpb25hbGl0eScsXG4gICAgICAgICAgICAgICAgICAvLyAgIGFwcGVhcmFuY2U6ICdvdXRsaW5lJyxcbiAgICAgICAgICAgICAgICAgIC8vICBvcHRpb25zOiB0aGlzLnByb2ZpbGVQcm92aWRlci5uYXRpb25hbGl0aWVzKCksXG4gICAgICAgICAgICAgICAgICBvcHRpb25zOiB0aGlzLnByb3ZpZGVyLmNvdW50cmllcygpLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAndy0xMDAtcCcsXG4gICAgICAgICAgICBmaWVsZEdyb3VwQ2xhc3NOYW1lOiAnZm9ybS1mbGV4LWNvbHVtbicsXG4gICAgICAgICAgICBmaWVsZEdyb3VwOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICd3LTEwMC1wJyxcbiAgICAgICAgICAgICAgICBmaWVsZEdyb3VwQ2xhc3NOYW1lOiAnY2FyZC1ncm91cCcsXG4gICAgICAgICAgICAgICAgZmllbGRHcm91cDogW1xuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiAndGl0bGUnLFxuICAgICAgICAgICAgICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnc2NhbmRvYy5mb3JtLnNjYW4uZG9jdW1lbnQuZG9jdW1lbnRUaXRsZScsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiAnc2VsZWN0JyxcbiAgICAgICAgICAgICAgICAgICAga2V5OiAnZG9jdW1lbnRUeXBlJyxcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ3NjYW5kb2MuZm9ybS5zY2FuLmRvY3VtZW50LmRvY3VtZW50VHlwZScsXG4gICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogJ0lEJywgbGFiZWw6ICdJZGVudGl0eSBEb2N1bWVudCcgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdQQVNTJywgbGFiZWw6ICdQYXNzcG9ydCcgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdETCcsIGxhYmVsOiAnRHJpdmVyIExpY2VuY2UnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAvLyAgdmFsdWVQcm9wOiAnaWQnLFxuICAgICAgICAgICAgICAgICAgICAgIC8vICBsYWJlbFByb3A6ICd2YWx1ZScsXG4gICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiAnaW5wdXQnLFxuICAgICAgICAgICAgICAgICAgICBrZXk6ICdkb2N1bWVudE51bWJlcicsXG4gICAgICAgICAgICAgICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdzY2FuZG9jLmZvcm0uc2Nhbi5kb2N1bWVudC5kb2N1bWVudE51bWJlcicsXG4gICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICcnLFxuICAgICAgICAgICAgICAgICAgICBmaWVsZEdyb3VwQ2xhc3NOYW1lOiAnZm9ybS1mbGV4LXJvdyBzcGFjZS1iZXR3ZWVuJyxcbiAgICAgICAgICAgICAgICAgICAgZmllbGRHcm91cDogW1xuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdkYXRlcGlja2VyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogJ2lzc3VlRGF0ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdzbWFsbCBtci04JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnc2NhbmRvYy5mb3JtLnNjYW4uZG9jdW1lbnQuaXNzdWVEYXRlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnZGF0ZXBpY2tlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICdleHBpcmF0aW9uRGF0ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdzbWFsbCBtbC04JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnc2NhbmRvYy5mb3JtLnNjYW4uZG9jdW1lbnQuZXhwaXJhdGlvbkRhdGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3NlbGVjdCcsXG4gICAgICAgICAgICAgICAgICAgIGtleTogJ2lzc3VlU3RhdGVDb2RlJyxcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ3NjYW5kb2MuZm9ybS5zY2FuLmRvY3VtZW50Lmlzc3VpbmdTdGF0ZUNvZGUnLFxuXG4gICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogdGhpcy5wcm92aWRlci5jb3VudHJpZXMoKSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdpbnB1dCcsXG4gICAgICAgICAgICAgICAgICAgIGtleTogJ2lzc3VpbmdQbGFjZScsXG4gICAgICAgICAgICAgICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdzY2FuZG9jLmZvcm0uc2Nhbi5kb2N1bWVudC5pc3N1aW5nUGxhY2UnLFxuICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ3ctMTAwLXAnLFxuICAgICAgICAgICAgICAgIGZpZWxkR3JvdXBDbGFzc05hbWU6ICdjYXJkLWdyb3VwJyxcbiAgICAgICAgICAgICAgICBmaWVsZEdyb3VwOiBbXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICd0aXRsZScsXG4gICAgICAgICAgICAgICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdzY2FuZG9jLmZvcm0uc2Nhbi5kb2N1bWVudC5hZGRyZXNzVGl0bGUnLFxuICAgICAgICAgICAgICAgICAgICAgIGJhZGdlOiAnY29tbXVuaWNhdGlvbnMnLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnc21hbGwnLFxuICAgICAgICAgICAgICAgICAgICBrZXk6ICdjb3VudHJ5JyxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3NlbGVjdCcsXG4gICAgICAgICAgICAgICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdzY2FuZG9jLmZvcm0ucHJvZmlsZS5hZGRyZXNzLmNvdW50cnknLFxuICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHRoaXMucHJvdmlkZXIuY291bnRyaWVzKCksXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIC8vIGV4cHJlc3Npb25Qcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgICAgICAgIC8vICAgJ3Byb3BzLmRpc2FibGVkJzogKG1vZGVsOiBhbnkpID0+ICFtb2RlbC5uZXdBZGRyZXNzLFxuICAgICAgICAgICAgICAgICAgICAvLyB9LFxuICAgICAgICAgICAgICAgICAgICBob29rczoge1xuICAgICAgICAgICAgICAgICAgICAgIG9uSW5pdDogKG1vZGVsOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKG1vZGVsKTtcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgZmllbGRHcm91cENsYXNzTmFtZTogJ2Zvcm0tZmxleC1yb3cgc3BhY2UtYmV0d2VlbicsXG4gICAgICAgICAgICAgICAgICAgIGZpZWxkR3JvdXA6IFtcbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdtci04IHctMTAwLXAnLFxuICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAnemlwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdpbnB1dCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ3NjYW5kb2MuZm9ybS5wcm9maWxlLmFkZHJlc3MuemlwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxQcm9wOiAoaXRlbTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGAke2l0ZW0uemlwfSAoJHtpdGVtLmNpdHl9KWA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0OiAoZmllbGQ6IGFueSwgb3B0aW9uOiBNYXRPcHRpb24pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhvcHRpb24sIGZpZWxkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC5mb3JtQ29udHJvbC5zZXRWYWx1ZShvcHRpb24udmFsdWUuemlwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzZXQgQ0lUWVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLmZvcm0uZ2V0KCdjaXR5Jykuc2V0VmFsdWUob3B0aW9uLnZhbHVlLmNpdHkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXI6IChrZXk6IHN0cmluZywgZmllbGQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJldHVybiB0aGlzLnByb2ZpbGVQcm92aWRlci56aXBDb2Rlcyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICBjb3VudHJ5Q29kZTogZmllbGQuZm9ybS5nZXQoJ2NvdW50cnknKS52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIHppcDoga2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGV4cHJlc3Npb25Qcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAgICdwcm9wcy5kaXNhYmxlZCc6IChtb2RlbDogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgICFtb2RlbC5uZXdBZGRyZXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gfSxcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ3NtYWxsIHctMTAwLXAgbWwtOCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICdjaXR5JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdpbnB1dCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ3NjYW5kb2MuZm9ybS5wcm9maWxlLmFkZHJlc3MuY2l0eScsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ3NtYWxsIHctMTAwLXAnLFxuICAgICAgICAgICAgICAgICAgICBrZXk6ICdzdHJlZXQxJyxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2lucHV0JyxcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ3NjYW5kb2MuZm9ybS5wcm9maWxlLmFkZHJlc3Muc3RyZWV0JyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgXS5tYXAoKGl0ZW0pID0+IHRoaXMudHJhbnNsYXRlLmZvcm1zKGl0ZW0pKTtcbiAgfVxufVxuIl19