@cqa-lib/cqa-ui 1.1.537-gamma.4 → 1.1.537

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 (39) hide show
  1. package/.github/workflows/README.md +1 -8
  2. package/esm2020/lib/compare-runs/compare-runs.component.mjs +1 -1
  3. package/esm2020/lib/execution-screen/condition-debug-step/condition-branch-editor.component.mjs +1 -1
  4. package/esm2020/lib/execution-screen/db-query-execution-item/db-query-execution-item.component.mjs +1 -1
  5. package/esm2020/lib/execution-screen/db-verification-step/db-verification-step.component.mjs +1 -1
  6. package/esm2020/lib/iterations-loop/iterations-loop.component.mjs +1 -1
  7. package/esm2020/lib/mixed-variable-input/mixed-variable-input.component.mjs +10 -30
  8. package/esm2020/lib/new-global-variable-dialog/new-global-variable-dialog.component.mjs +5 -16
  9. package/esm2020/lib/new-global-variable-dialog/new-global-variable-dialog.models.mjs +1 -1
  10. package/esm2020/lib/segment-control/segment-control.component.mjs +4 -12
  11. package/esm2020/lib/step-builder/step-builder-action/step-builder-action.component.mjs +3 -17
  12. package/esm2020/lib/step-builder/step-builder-condition/step-builder-condition.component.mjs +3 -17
  13. package/esm2020/lib/step-builder/step-builder-loop/step-builder-loop.component.mjs +3 -12
  14. package/esm2020/lib/step-builder/template-variables-form/template-variables-form.component.mjs +27 -258
  15. package/esm2020/lib/templates/table-template.component.mjs +3 -5
  16. package/esm2020/lib/test-case-details/test-case-details-edit/test-case-details-edit.component.mjs +4 -43
  17. package/esm2020/lib/test-case-details/test-case-details.models.mjs +1 -3
  18. package/esm2020/lib/ui-kit.module.mjs +1 -6
  19. package/esm2020/public-api.mjs +1 -2
  20. package/fesm2015/cqa-lib-cqa-ui.mjs +103 -590
  21. package/fesm2015/cqa-lib-cqa-ui.mjs.map +1 -1
  22. package/fesm2020/cqa-lib-cqa-ui.mjs +53 -530
  23. package/fesm2020/cqa-lib-cqa-ui.mjs.map +1 -1
  24. package/lib/new-global-variable-dialog/new-global-variable-dialog.component.d.ts +2 -5
  25. package/lib/new-global-variable-dialog/new-global-variable-dialog.models.d.ts +0 -8
  26. package/lib/segment-control/segment-control.component.d.ts +1 -3
  27. package/lib/step-builder/step-builder-action/step-builder-action.component.d.ts +1 -15
  28. package/lib/step-builder/step-builder-condition/step-builder-condition.component.d.ts +1 -15
  29. package/lib/step-builder/step-builder-loop/step-builder-loop.component.d.ts +1 -11
  30. package/lib/step-builder/template-variables-form/template-variables-form.component.d.ts +4 -70
  31. package/lib/templates/table-template.component.d.ts +1 -8
  32. package/lib/test-case-details/test-case-details-edit/test-case-details-edit.component.d.ts +0 -7
  33. package/lib/test-case-details/test-case-details.models.d.ts +0 -2
  34. package/lib/ui-kit.module.d.ts +96 -97
  35. package/package.json +1 -1
  36. package/public-api.d.ts +0 -1
  37. package/styles.css +1 -1
  38. package/esm2020/lib/new-global-variable-dialog/global-variable-tags-input.component.mjs +0 -129
  39. package/lib/new-global-variable-dialog/global-variable-tags-input.component.d.ts +0 -39
@@ -3,15 +3,7 @@ import * as i0 from "@angular/core";
3
3
  import * as i1 from "@angular/common";
4
4
  const VAR_PATH = '[A-Za-z_][A-Za-z0-9_]*(?:\\.[A-Za-z_][A-Za-z0-9_]*|\\[\\d+\\])*';
5
5
  const VAR_NAME_REGEX = new RegExp('^' + VAR_PATH + '$');
6
- /**
7
- * Token regex recognizes two wrappers:
8
- * - `${name}` → local (default chip)
9
- * - `{{name}}` → Global Data
10
- *
11
- * Group 1: local name, Group 2: global name. List the `${...}` form first so its
12
- * leading `$` is consumed before the bare `{{...}}` alternative can be tried.
13
- */
14
- const VAR_TOKEN_REGEX = new RegExp('\\$\\{(' + VAR_PATH + ')\\}|\\{\\{(' + VAR_PATH + ')\\}\\}', 'g');
6
+ const VAR_TOKEN_REGEX = new RegExp('\\$\\{(' + VAR_PATH + ')\\}', 'g');
15
7
  const VAR_PATH_TAIL_REGEX = new RegExp('(' + VAR_PATH + ')$');
16
8
  const INVALID_VAR_MESSAGE = 'Invalid variable name.';
17
9
  const BLUR_HIDE_DELAY_MS = 150;
@@ -250,8 +242,7 @@ export class MixedVariableInputComponent {
250
242
  const structureBroken = chip.getAttribute('contenteditable') !== 'false' ||
251
243
  !chip.querySelector('.cqa-var-chip__remove');
252
244
  if (structureBroken) {
253
- const source = chip.getAttribute('data-source') || 'plain';
254
- chip.parentNode?.replaceChild(this.buildChip(name, source), chip);
245
+ chip.parentNode?.replaceChild(this.buildChip(name), chip);
255
246
  }
256
247
  }
257
248
  // Remove stray remove icons left from partial undo/redo states.
@@ -286,12 +277,7 @@ export class MixedVariableInputComponent {
286
277
  // Keep the token as plain text while the caret is strictly inside.
287
278
  if (caretOffset > start && caretOffset < end)
288
279
  continue;
289
- // Capture groups: 1=local ${...}, 2=global {{...}}
290
- const name = m[1] ?? m[2] ?? '';
291
- const source = m[2] ? 'global' : 'plain';
292
- if (!name)
293
- continue;
294
- matches.push({ start, end, name, source });
280
+ matches.push({ start, end, name: m[1] });
295
281
  }
296
282
  if (!matches.length)
297
283
  continue;
@@ -301,7 +287,7 @@ export class MixedVariableInputComponent {
301
287
  if (mt.start > cursor) {
302
288
  frag.appendChild(document.createTextNode(text.slice(cursor, mt.start)));
303
289
  }
304
- const chip = this.buildChip(mt.name, mt.source);
290
+ const chip = this.buildChip(mt.name);
305
291
  frag.appendChild(chip);
306
292
  lastChip = chip;
307
293
  cursor = mt.end;
@@ -347,10 +333,7 @@ export class MixedVariableInputComponent {
347
333
  if (m.index > lastIndex) {
348
334
  editor.appendChild(document.createTextNode(value.slice(lastIndex, m.index)));
349
335
  }
350
- // Capture group 1 = local (`${...}`), 2 = global (`{{...}}`).
351
- const name = m[1] ?? m[2] ?? '';
352
- const source = m[2] ? 'global' : 'plain';
353
- editor.appendChild(this.buildChip(name, source));
336
+ editor.appendChild(this.buildChip(m[1]));
354
337
  lastIndex = m.index + m[0].length;
355
338
  }
356
339
  if (lastIndex < value.length) {
@@ -370,10 +353,8 @@ export class MixedVariableInputComponent {
370
353
  const el = node;
371
354
  if (el.classList.contains('cqa-var-chip')) {
372
355
  const name = el.getAttribute('data-var') || '';
373
- const source = el.getAttribute('data-source') || 'plain';
374
- if (name) {
375
- out += source === 'global' ? '{{' + name + '}}' : '${' + name + '}';
376
- }
356
+ if (name)
357
+ out += '${' + name + '}';
377
358
  return;
378
359
  }
379
360
  if (el.tagName === 'BR') {
@@ -388,15 +369,14 @@ export class MixedVariableInputComponent {
388
369
  editor.childNodes.forEach(walk);
389
370
  return out;
390
371
  }
391
- buildChip(name, source = 'plain') {
372
+ buildChip(name) {
392
373
  const chip = document.createElement('span');
393
374
  chip.className = 'cqa-var-chip';
394
375
  chip.setAttribute('contenteditable', 'false');
395
376
  chip.setAttribute('data-var', name);
396
- chip.setAttribute('data-source', source);
397
377
  const label = document.createElement('span');
398
378
  label.className = 'cqa-var-chip__label';
399
- label.textContent = source === 'global' ? '{{' + name + '}}' : '${' + name + '}';
379
+ label.textContent = '${' + name + '}';
400
380
  const remove = document.createElement('span');
401
381
  remove.className = 'cqa-var-chip__remove';
402
382
  remove.textContent = '×';
@@ -609,4 +589,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
609
589
  type: HostListener,
610
590
  args: ['document:selectionchange']
611
591
  }] } });
612
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWl4ZWQtdmFyaWFibGUtaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9taXhlZC12YXJpYWJsZS1pbnB1dC9taXhlZC12YXJpYWJsZS1pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL21peGVkLXZhcmlhYmxlLWlucHV0L21peGVkLXZhcmlhYmxlLWlucHV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsdUJBQXVCLEVBQXFCLFNBQVMsRUFBYyxZQUFZLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBYSxNQUFNLEVBQWlCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBWWpNLE1BQU0sUUFBUSxHQUFHLGlFQUFpRSxDQUFDO0FBQ25GLE1BQU0sY0FBYyxHQUFHLElBQUksTUFBTSxDQUFDLEdBQUcsR0FBRyxRQUFRLEdBQUcsR0FBRyxDQUFDLENBQUM7QUFDeEQ7Ozs7Ozs7R0FPRztBQUNILE1BQU0sZUFBZSxHQUFHLElBQUksTUFBTSxDQUNoQyxTQUFTLEdBQUcsUUFBUSxHQUFHLGNBQWMsR0FBRyxRQUFRLEdBQUcsU0FBUyxFQUM1RCxHQUFHLENBQ0osQ0FBQztBQUNGLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxNQUFNLENBQUMsR0FBRyxHQUFHLFFBQVEsR0FBRyxJQUFJLENBQUMsQ0FBQztBQUk5RCxNQUFNLG1CQUFtQixHQUFHLHdCQUF3QixDQUFDO0FBQ3JELE1BQU0sa0JBQWtCLEdBQUcsR0FBRyxDQUFDO0FBUy9CLE1BQU0sT0FBTywyQkFBMkI7SUFvQnRDLFlBQ1UsR0FBc0IsRUFDdEIsT0FBZ0M7UUFEaEMsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDdEIsWUFBTyxHQUFQLE9BQU8sQ0FBeUI7UUFyQmpDLFVBQUssR0FBRyxFQUFFLENBQUM7UUFDWCxnQkFBVyxHQUFHLFlBQVksQ0FBQztRQUMzQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBRWhCLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUN6QyxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUF5QixDQUFDO1FBSXJFLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLHFCQUFnQixHQUFHLEtBQUssQ0FBQztRQUN6QixpQkFBWSxHQUFrQixJQUFJLENBQUM7UUFFM0IsbUJBQWMsR0FBaUIsSUFBSSxDQUFDO1FBQ3BDLGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLGNBQVMsR0FBbUIsSUFBSSxDQUFDO0lBS3RDLENBQUM7SUFFSiw4RUFBOEU7SUFFOUUsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUztZQUFFLE9BQU87UUFDakQsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFlBQVksSUFBSSxFQUFFLENBQUM7UUFDckQsSUFBSSxRQUFRLEtBQUssSUFBSSxDQUFDLFdBQVc7WUFBRSxPQUFPO1FBQzFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRUQsZUFBZTtRQUNiLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQsNkVBQTZFO0lBRTdFLE9BQU87UUFDTCxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsYUFBYTtRQUNYLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxZQUFZO1FBQ1Ysc0VBQXNFO1FBQ3RFLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN4QixDQUFDLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQW9CO1FBQzVCLElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyxPQUFPLEVBQUU7WUFDekIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3ZCLE9BQU87U0FDUjtRQUNELElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyxLQUFLO1lBQUUsT0FBTztRQUNoQyxJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssUUFBUSxFQUFFO1lBQzFCLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRTtnQkFDdkIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUN2QixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7YUFDdkI7WUFDRCxPQUFPO1NBQ1I7UUFDRCxJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssV0FBVyxFQUFFO1lBQzdCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQ3ZDLElBQUksSUFBSSxJQUFLLElBQW9CLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxjQUFjLENBQUMsRUFBRTtnQkFDckUsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUN0QixJQUFvQixDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUMvQixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7YUFDaEI7U0FDRjtJQUNILENBQUM7SUFFRCxPQUFPLENBQUMsS0FBcUI7UUFDM0IsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxhQUFhLEVBQUUsT0FBTyxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUM5RCxJQUFJLENBQUMsSUFBSTtZQUFFLE9BQU87UUFDbEIsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNqQixDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQWdCO1FBQ3JCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDN0QsSUFBSSxJQUFJLEVBQUU7WUFDUixJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNyQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDbkM7UUFDRCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUdELFdBQVcsQ0FBQyxLQUFnQjtRQUMxQixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUdELG1CQUFtQixDQUFDLEtBQWlCO1FBQ25DLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYztZQUFFLE9BQU87UUFDakMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLE1BQWMsQ0FBQztZQUFFLE9BQU87UUFDdEUsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFHRCx5QkFBeUI7UUFDdkIsSUFBSSxRQUFRLENBQUMsYUFBYSxLQUFLLElBQUksQ0FBQyxTQUFTLEVBQUUsYUFBYTtZQUFFLE9BQU87UUFDckUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELDhFQUE4RTtJQUU5RSxTQUFTO1FBQ1AsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxhQUFhO1FBQ1gsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDLENBQUM7UUFDN0QsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDdkMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3RCLE9BQU87U0FDUjtRQUNELElBQUksSUFBSSxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQzdDLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRTtnQkFDOUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUN0QixPQUFPO2FBQ1I7WUFDRCxJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztTQUMxRDthQUFNO1lBQ0wsSUFBSSxDQUFDLDhCQUE4QixDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzNDO1FBQ0QsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRUQsNkVBQTZFO0lBRXJFLFNBQVM7UUFDZixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDN0IsSUFBSSxHQUFHLEtBQUssSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUM1QixJQUFJLENBQUMsV0FBVyxHQUFHLEdBQUcsQ0FBQztZQUN2QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUM1QjtRQUNELElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDckIsQ0FBQztJQUVPLFFBQVEsQ0FBQyxHQUFXO1FBQzFCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM1QyxNQUFNLEtBQUssR0FBRyxLQUFLLEtBQUssSUFBSSxDQUFDO1FBQzdCLElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxLQUFLLElBQUksSUFBSSxDQUFDLFlBQVksS0FBSyxLQUFLO1lBQUUsT0FBTztRQUNwRSxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN2QixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztRQUMxQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVPLG1CQUFtQixDQUFDLEdBQVc7UUFDckMsSUFBSSxDQUFDLEdBQUc7WUFBRSxPQUFPLElBQUksQ0FBQztRQUN0QixNQUFNLFNBQVMsR0FBRyxnQkFBZ0IsQ0FBQztRQUNuQyxJQUFJLENBQXlCLENBQUM7UUFDOUIsU0FBUyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUM7UUFDeEIsT0FBTyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssSUFBSSxFQUFFO1lBQ3pDLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNsQixJQUFJLElBQUksS0FBSyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUN0RCxPQUFPLG1CQUFtQixDQUFDO2FBQzVCO1NBQ0Y7UUFDRCxNQUFNLFNBQVMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDO1FBQ3BELE1BQU0sV0FBVyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFDeEQsSUFBSSxTQUFTLEdBQUcsV0FBVztZQUFFLE9BQU8sbUJBQW1CLENBQUM7UUFDeEQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsOEVBQThFO0lBRXRFLGlCQUFpQjtRQUN2QixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDdkMsSUFBSSxPQUFPLEVBQUU7WUFDWCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3pELElBQUksQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFDO1lBQzlCLElBQUksQ0FBQyxjQUFjLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQztZQUNwQyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztZQUMxQixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztZQUMzQixJQUFJLENBQUMsZ0JBQWdCO2dCQUNuQixDQUFDLENBQUMsVUFBVSxJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzNGLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDeEIsT0FBTztTQUNSO1FBQ0QsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7UUFDM0IsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7UUFDM0IsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ25DLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxjQUFjLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUM3QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDLElBQUksSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVELElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVPLGNBQWM7UUFDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVztZQUFFLE9BQU87UUFDdEQsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7UUFDNUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztRQUM5QixJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFTyxrQkFBa0IsQ0FBQyxJQUFZO1FBQ3JDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUN6QyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUMzQjtRQUNELE9BQU8sQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVELDhFQUE4RTtJQUV0RSxnQkFBZ0I7UUFDdEIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUM7UUFDNUMsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQWtCLENBQUM7UUFDaEYsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQ3JFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FDM0QsQ0FBQztRQUNuQixLQUFLLE1BQU0sRUFBRSxJQUFJLENBQUMsR0FBRyxRQUFRLEVBQUUsR0FBRyxZQUFZLENBQUMsRUFBRTtZQUMvQyxJQUFJLEVBQUUsQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDO2dCQUFFLFNBQVM7WUFDMUMsT0FBTyxFQUFFLENBQUMsVUFBVTtnQkFBRSxFQUFFLENBQUMsVUFBVSxFQUFFLFlBQVksQ0FBQyxFQUFFLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3JFLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztTQUNiO1FBQ0QsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQWtCLENBQUM7UUFDdkUsS0FBSyxNQUFNLEVBQUUsSUFBSSxHQUFHLEVBQUU7WUFDcEIsSUFBSSxFQUFFLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQztnQkFBRSxTQUFTO1lBQzFDLEVBQUUsQ0FBQyxVQUFVLEVBQUUsWUFBWSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7U0FDL0Q7SUFDSCxDQUFDO0lBRU8sYUFBYTtRQUNuQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQztRQUM1QyxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsQ0FBa0IsQ0FBQztRQUNwRixLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRTtZQUN4QixNQUFNLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDMUQsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ3ZDLElBQUksQ0FBQyxVQUFVLEVBQUUsWUFBWSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDckYsU0FBUzthQUNWO1lBQ0QsTUFBTSxlQUFlLEdBQ25CLElBQUksQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQUMsS0FBSyxPQUFPO2dCQUNoRCxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsdUJBQXVCLENBQUMsQ0FBQztZQUMvQyxJQUFJLGVBQWUsRUFBRTtnQkFDbkIsTUFBTSxNQUFNLEdBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQWdCLElBQUksT0FBTyxDQUFDO2dCQUMzRSxJQUFJLENBQUMsVUFBVSxFQUFFLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQzthQUNuRTtTQUNGO1FBQ0QsZ0VBQWdFO1FBQ2hFLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLHVCQUF1QixDQUFDLENBQWtCLENBQUM7UUFDOUYsS0FBSyxNQUFNLENBQUMsSUFBSSxPQUFPLEVBQUU7WUFDdkIsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDO2dCQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztTQUM3QztJQUNILENBQUM7SUFFRCw4RUFBOEU7SUFFdEUsV0FBVyxDQUFDLEtBQUssR0FBRyxLQUFLO1FBQy9CLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDO1FBQzVDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQzVDLElBQUksT0FBTyxHQUFHLEtBQUssQ0FBQztRQUNwQixJQUFJLFFBQVEsR0FBZ0IsSUFBSSxDQUFDO1FBRWpDLEtBQUssTUFBTSxFQUFFLElBQUksSUFBSSxDQUFDLDBCQUEwQixDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3hELElBQUksQ0FBQyxFQUFFLENBQUMsVUFBVTtnQkFBRSxTQUFTO1lBQzdCLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQyxTQUFTLElBQUksRUFBRSxDQUFDO1lBQ2hDLGVBQWUsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO1lBQzlCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztnQkFBRSxTQUFTO1lBQzFDLGVBQWUsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO1lBRTlCLE1BQU0sV0FBVyxHQUNmLENBQUMsS0FBSyxJQUFJLFVBQVUsSUFBSSxVQUFVLENBQUMsU0FBUyxJQUFJLFVBQVUsQ0FBQyxjQUFjLEtBQUssRUFBRTtnQkFDOUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxXQUFXO2dCQUN4QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFVCxNQUFNLE9BQU8sR0FBNEUsRUFBRSxDQUFDO1lBQzVGLElBQUksQ0FBeUIsQ0FBQztZQUM5QixPQUFPLENBQUMsQ0FBQyxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxJQUFJLEVBQUU7Z0JBQ2hELE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUM7Z0JBQ3RCLE1BQU0sR0FBRyxHQUFHLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO2dCQUNoQyxtRUFBbUU7Z0JBQ25FLElBQUksV0FBVyxHQUFHLEtBQUssSUFBSSxXQUFXLEdBQUcsR0FBRztvQkFBRSxTQUFTO2dCQUN2RCxtREFBbUQ7Z0JBQ25ELE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNoQyxNQUFNLE1BQU0sR0FBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO2dCQUNyRCxJQUFJLENBQUMsSUFBSTtvQkFBRSxTQUFTO2dCQUNwQixPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQzthQUM1QztZQUNELElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTTtnQkFBRSxTQUFTO1lBRTlCLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1lBQy9DLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQztZQUNmLEtBQUssTUFBTSxFQUFFLElBQUksT0FBTyxFQUFFO2dCQUN4QixJQUFJLEVBQUUsQ0FBQyxLQUFLLEdBQUcsTUFBTSxFQUFFO29CQUNyQixJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDekU7Z0JBQ0QsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDaEQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDdkIsUUFBUSxHQUFHLElBQUksQ0FBQztnQkFDaEIsTUFBTSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUM7YUFDakI7WUFDRCxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFO2dCQUN4QixJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDL0Q7WUFDRCxFQUFFLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDckMsT0FBTyxHQUFHLElBQUksQ0FBQztTQUNoQjtRQUVELElBQUksT0FBTyxJQUFJLFFBQVE7WUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFTywwQkFBMEIsQ0FBQyxJQUFhO1FBQzlDLE1BQU0sR0FBRyxHQUFXLEVBQUUsQ0FBQztRQUN2QixNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxTQUFTLEVBQUU7WUFDbkUsVUFBVSxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUU7Z0JBQ25CLElBQUksQ0FBQyxHQUFnQixJQUFJLENBQUMsVUFBVSxDQUFDO2dCQUNyQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxFQUFFO29CQUN0QixJQUFLLENBQWEsQ0FBQyxTQUFTLEVBQUUsUUFBUSxFQUFFLENBQUMsY0FBYyxDQUFDLEVBQUU7d0JBQ3hELE9BQU8sVUFBVSxDQUFDLGFBQWEsQ0FBQztxQkFDakM7b0JBQ0QsQ0FBQyxHQUFHLENBQUMsQ0FBQyxVQUFVLENBQUM7aUJBQ2xCO2dCQUNELE9BQU8sVUFBVSxDQUFDLGFBQWEsQ0FBQztZQUNsQyxDQUFDO1NBQ0YsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFjLENBQUM7UUFDbkIsT0FBTyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7WUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQVMsQ0FBQyxDQUFDO1FBQ3BELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVELDhFQUE4RTtJQUV0RSxNQUFNLENBQUMsS0FBYTtRQUMxQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQztRQUM1QyxNQUFNLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsS0FBSztZQUFFLE9BQU87UUFDbkIsZUFBZSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUM7UUFDOUIsSUFBSSxTQUFTLEdBQUcsQ0FBQyxDQUFDO1FBQ2xCLElBQUksQ0FBeUIsQ0FBQztRQUM5QixPQUFPLENBQUMsQ0FBQyxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxJQUFJLEVBQUU7WUFDakQsSUFBSSxDQUFDLENBQUMsS0FBSyxHQUFHLFNBQVMsRUFBRTtnQkFDdkIsTUFBTSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDOUU7WUFDRCw4REFBOEQ7WUFDOUQsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDaEMsTUFBTSxNQUFNLEdBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztZQUNyRCxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDakQsU0FBUyxHQUFHLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztTQUNuQztRQUNELElBQUksU0FBUyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUU7WUFDNUIsTUFBTSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3JFO0lBQ0gsQ0FBQztJQUVPLFNBQVM7UUFDZixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQztRQUM1QyxJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUM7UUFDYixNQUFNLElBQUksR0FBRyxDQUFDLElBQVUsRUFBUSxFQUFFO1lBQ2hDLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxJQUFJLENBQUMsU0FBUyxFQUFFO2dCQUNwQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsR0FBRyxDQUFDLENBQUM7Z0JBQ3RELE9BQU87YUFDUjtZQUNELElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxJQUFJLENBQUMsWUFBWTtnQkFBRSxPQUFPO1lBQ2hELE1BQU0sRUFBRSxHQUFHLElBQW1CLENBQUM7WUFDL0IsSUFBSSxFQUFFLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsRUFBRTtnQkFDekMsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQy9DLE1BQU0sTUFBTSxHQUFJLEVBQUUsQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFnQixJQUFJLE9BQU8sQ0FBQztnQkFDekUsSUFBSSxJQUFJLEVBQUU7b0JBQ1IsR0FBRyxJQUFJLE1BQU0sS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsSUFBSSxHQUFHLEdBQUcsQ0FBQztpQkFDckU7Z0JBQ0QsT0FBTzthQUNSO1lBQ0QsSUFBSSxFQUFFLENBQUMsT0FBTyxLQUFLLElBQUksRUFBRTtnQkFDdkIsR0FBRyxJQUFJLElBQUksQ0FBQztnQkFDWixPQUFPO2FBQ1I7WUFDRCxNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUMsT0FBTyxLQUFLLEtBQUssSUFBSSxFQUFFLENBQUMsT0FBTyxLQUFLLEdBQUcsQ0FBQztZQUMzRCxJQUFJLE9BQU8sSUFBSSxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO2dCQUFFLEdBQUcsSUFBSSxJQUFJLENBQUM7WUFDbEUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUIsQ0FBQyxDQUFDO1FBQ0YsTUFBTSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEMsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRU8sU0FBUyxDQUFDLElBQVksRUFBRSxTQUFxQixPQUFPO1FBQzFELE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxjQUFjLENBQUM7UUFDaEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUM5QyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUN6QyxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzdDLEtBQUssQ0FBQyxTQUFTLEdBQUcscUJBQXFCLENBQUM7UUFDeEMsS0FBSyxDQUFDLFdBQVcsR0FBRyxNQUFNLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLElBQUksR0FBRyxHQUFHLENBQUM7UUFDakYsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM5QyxNQUFNLENBQUMsU0FBUyxHQUFHLHNCQUFzQixDQUFDO1FBQzFDLE1BQU0sQ0FBQyxXQUFXLEdBQUcsR0FBRyxDQUFDO1FBQ3pCLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDO1FBQ2hFLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNyQyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDbkIsQ0FBQyxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNkLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNqQixDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN6QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCw2RUFBNkU7SUFFckUsaUJBQWlCO1FBQ3ZCLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNsQyxJQUFJLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxVQUFVLEtBQUssQ0FBQztZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQzlDLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDOUUsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRU8sZUFBZTtRQUNyQixNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDbEMsSUFBSSxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsVUFBVSxLQUFLLENBQUM7WUFBRSxPQUFPLElBQUksQ0FBQztRQUM5QyxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2hDLElBQUksS0FBSyxDQUFDLFNBQVM7WUFBRSxPQUFPLElBQUksQ0FBQztRQUNqQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQztRQUM1QyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUM7WUFBRSxPQUFPLElBQUksQ0FBQztRQUNoRyxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLElBQUk7WUFBRSxPQUFPLElBQUksQ0FBQztRQUN2QixPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQztJQUM3QyxDQUFDO0lBRU8sZ0JBQWdCLENBQUMsS0FBWTtRQUNuQyxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDdkMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLGFBQWEsRUFBRSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFTyxrQkFBa0I7UUFDeEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDdkMsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDNUMsTUFBTSxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsR0FBRyxLQUFLLENBQUM7UUFDOUMsSUFBSSxjQUFjLENBQUMsUUFBUSxLQUFLLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDOUMsSUFBSSxXQUFXLEdBQUcsQ0FBQztnQkFBRSxPQUFPLElBQUksQ0FBQztZQUNqQyxPQUFPLGNBQWMsQ0FBQyxlQUFlLENBQUM7U0FDdkM7UUFDRCxPQUFPLGNBQWMsQ0FBQyxVQUFVLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQztJQUM1RCxDQUFDO0lBRU8sY0FBYztRQUNwQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUN2QyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVM7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUMxQyxJQUFJLElBQUksR0FBUyxLQUFLLENBQUMsY0FBYyxDQUFDO1FBQ3RDLElBQUksTUFBTSxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUM7UUFDL0IsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDcEMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDekMsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLElBQUksQ0FBQyxTQUFTO2dCQUFFLE9BQU8sRUFBRSxDQUFDO1lBQ3pELElBQUksR0FBRyxJQUFJLENBQUM7WUFDWixNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQztTQUN4QztRQUNELE1BQU0sSUFBSSxHQUFJLElBQWEsQ0FBQyxTQUFTLElBQUksRUFBRSxDQUFDO1FBQzVDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNyRCxJQUFJLFNBQVMsS0FBSyxDQUFDLENBQUMsRUFBRTtZQUNwQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDbEQsTUFBTSxzQkFBc0IsR0FBRyxRQUFRLEtBQUssQ0FBQyxDQUFDLElBQUksUUFBUSxHQUFHLE1BQU0sQ0FBQztZQUNwRSxJQUFJLENBQUMsc0JBQXNCLEVBQUU7Z0JBQzNCLE1BQU0sS0FBSyxHQUFHLFNBQVMsR0FBRyxDQUFDLENBQUM7Z0JBQzVCLE1BQU0sR0FBRyxHQUFHLFFBQVEsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO2dCQUNyRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO2FBQy9CO1NBQ0Y7UUFDRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUMvRCxPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVELDhFQUE4RTtJQUV0RSx3QkFBd0IsQ0FBQyxJQUFZLEVBQUUsS0FBWTtRQUN6RCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFTyw4QkFBOEIsQ0FBQyxJQUFZO1FBQ2pELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ3ZDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEMsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNWLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMvQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzNCLE9BQU87U0FDUjtRQUNELElBQUksSUFBSSxHQUFTLEtBQUssQ0FBQyxjQUFjLENBQUM7UUFDdEMsSUFBSSxNQUFNLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQztRQUMvQiw2RUFBNkU7UUFDN0UsMkVBQTJFO1FBQzNFLDJDQUEyQztRQUMzQyxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNwQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztZQUN6QyxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLElBQUksQ0FBQyxTQUFTLEVBQUU7Z0JBQzVDLElBQUksR0FBRyxJQUFJLENBQUM7Z0JBQ1osTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUM7YUFDeEM7aUJBQU07Z0JBQ0wsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDdkIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDM0IsT0FBTzthQUNSO1NBQ0Y7UUFDRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQztRQUNsQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNyQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2pDLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUNwRCxJQUFJLFVBQVUsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFDM0YsSUFBSSxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLElBQUksVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxTQUFTLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQzFELFVBQVUsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3JDLFNBQVMsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ2hDO2FBQU0sSUFBSSxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3BDLFVBQVUsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3RDO1FBQ0QsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFDL0MsSUFBSSxVQUFVO1lBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFDdEUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2QixJQUFJLFNBQVM7WUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUNwRSxJQUFJLENBQUMsVUFBVyxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDMUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRU8saUJBQWlCLENBQUMsSUFBaUI7UUFDekMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztRQUNsQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQzlCLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUM1QyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQztZQUMvQixJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO2dCQUFFLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN2RDtRQUNELElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUM1QyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQztZQUMvQixJQUFJLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDO2dCQUFFLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNwRDtJQUNILENBQUM7SUFFTyxzQkFBc0IsQ0FBQyxJQUFZO1FBQ3pDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDVixJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQ3hFLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN2QixPQUFPO1NBQ1I7UUFDRCxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQyxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVPLGVBQWUsQ0FBQyxJQUFVO1FBQ2hDLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNsQyxJQUFJLENBQUMsR0FBRztZQUFFLE9BQU87UUFDakIsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3JDLEtBQUssQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUIsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyQixHQUFHLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDdEIsR0FBRyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0QixDQUFDO0lBRU8sZUFBZTtRQUNyQixNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDbEMsSUFBSSxDQUFDLEdBQUc7WUFBRSxPQUFPO1FBQ2pCLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNyQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN2RCxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RCLEdBQUcsQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN0QixHQUFHLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RCLENBQUM7O3dIQXprQlUsMkJBQTJCOzRHQUEzQiwyQkFBMkIsNmlCQ3hDeEMsdXlDQWlDQTsyRkRPYSwyQkFBMkI7a0JBUHZDLFNBQVM7K0JBQ0UsMEJBQTBCLG1CQUduQix1QkFBdUIsQ0FBQyxNQUFNLFFBQ3pDLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRTtpSUFHckIsS0FBSztzQkFBYixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFFSSxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU07Z0JBRWdDLFNBQVM7c0JBQS9DLFNBQVM7dUJBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFpR3JDLFdBQVc7c0JBRFYsWUFBWTt1QkFBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBTXJDLG1CQUFtQjtzQkFEbEIsWUFBWTt1QkFBQyxvQkFBb0IsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFROUMseUJBQXlCO3NCQUR4QixZQUFZO3VCQUFDLDBCQUEwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uQ2hhbmdlcywgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGludGVyZmFjZSBNaXhlZFNlZ21lbnQge1xuICB0eXBlOiAndGV4dCcgfCAndmFyaWFibGUnO1xuICB2YWx1ZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1peGVkVmFyaWFibGVWYWxpZGl0eSB7XG4gIHZhbGlkOiBib29sZWFuO1xuICBlcnJvcjogc3RyaW5nIHwgbnVsbDtcbn1cblxuY29uc3QgVkFSX1BBVEggPSAnW0EtWmEtel9dW0EtWmEtejAtOV9dKig/OlxcXFwuW0EtWmEtel9dW0EtWmEtejAtOV9dKnxcXFxcW1xcXFxkK1xcXFxdKSonO1xuY29uc3QgVkFSX05BTUVfUkVHRVggPSBuZXcgUmVnRXhwKCdeJyArIFZBUl9QQVRIICsgJyQnKTtcbi8qKlxuICogVG9rZW4gcmVnZXggcmVjb2duaXplcyB0d28gd3JhcHBlcnM6XG4gKiAgIC0gYCR7bmFtZX1gICDihpIgbG9jYWwgKGRlZmF1bHQgY2hpcClcbiAqICAgLSBge3tuYW1lfX1gIOKGkiBHbG9iYWwgRGF0YVxuICpcbiAqIEdyb3VwIDE6IGxvY2FsIG5hbWUsIEdyb3VwIDI6IGdsb2JhbCBuYW1lLiBMaXN0IHRoZSBgJHsuLi59YCBmb3JtIGZpcnN0IHNvIGl0c1xuICogbGVhZGluZyBgJGAgaXMgY29uc3VtZWQgYmVmb3JlIHRoZSBiYXJlIGB7ey4uLn19YCBhbHRlcm5hdGl2ZSBjYW4gYmUgdHJpZWQuXG4gKi9cbmNvbnN0IFZBUl9UT0tFTl9SRUdFWCA9IG5ldyBSZWdFeHAoXG4gICdcXFxcJFxcXFx7KCcgKyBWQVJfUEFUSCArICcpXFxcXH18XFxcXHtcXFxceygnICsgVkFSX1BBVEggKyAnKVxcXFx9XFxcXH0nLFxuICAnZydcbik7XG5jb25zdCBWQVJfUEFUSF9UQUlMX1JFR0VYID0gbmV3IFJlZ0V4cCgnKCcgKyBWQVJfUEFUSCArICcpJCcpO1xuXG4vKiogUGVyLWNoaXAgd3JhcHBpbmcgc291cmNlLiAnZ2xvYmFsJyB1c2VzIGB7ey4uLn19YDsgJ3BsYWluJyAobG9jYWwpIHVzZXMgYCR7Li4ufWAuICovXG50eXBlIENoaXBTb3VyY2UgPSAncGxhaW4nIHwgJ2dsb2JhbCc7XG5jb25zdCBJTlZBTElEX1ZBUl9NRVNTQUdFID0gJ0ludmFsaWQgdmFyaWFibGUgbmFtZS4nO1xuY29uc3QgQkxVUl9ISURFX0RFTEFZX01TID0gMTUwO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjcWEtbWl4ZWQtdmFyaWFibGUtaW5wdXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vbWl4ZWQtdmFyaWFibGUtaW5wdXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFtdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaG9zdDogeyBjbGFzczogJ2NxYS11aS1yb290JyB9LFxufSlcbmV4cG9ydCBjbGFzcyBNaXhlZFZhcmlhYmxlSW5wdXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQge1xuICBASW5wdXQoKSB2YWx1ZSA9ICcnO1xuICBASW5wdXQoKSBwbGFjZWhvbGRlciA9ICdUZXh0IElucHV0JztcbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcblxuICBAT3V0cHV0KCkgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgQE91dHB1dCgpIHZhbGlkaXR5Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxNaXhlZFZhcmlhYmxlVmFsaWRpdHk+KCk7XG5cbiAgQFZpZXdDaGlsZCgnZWRpdG9yJywgeyBzdGF0aWM6IHRydWUgfSkgZWRpdG9yUmVmITogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XG5cbiAgc2hvd1N1Z2dlc3Rpb24gPSBmYWxzZTtcbiAgcGVuZGluZ1dvcmQgPSAnJztcbiAgY2FuQWRkQXNWYXJpYWJsZSA9IGZhbHNlO1xuICBlcnJvck1lc3NhZ2U6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gIHByaXZhdGUgc2VsZWN0aW9uUmFuZ2U6IFJhbmdlIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgc2VsZWN0aW9uTW9kZSA9IGZhbHNlO1xuICBwcml2YXRlIGxhc3RFbWl0dGVkID0gJyc7XG4gIHByaXZhdGUgbGFzdFZhbGlkOiBib29sZWFuIHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgaG9zdFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICkge31cblxuICAvLyAtLS0tIExpZmVjeWNsZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKCFjaGFuZ2VzWyd2YWx1ZSddIHx8ICF0aGlzLmVkaXRvclJlZikgcmV0dXJuO1xuICAgIGNvbnN0IGluY29taW5nID0gY2hhbmdlc1sndmFsdWUnXS5jdXJyZW50VmFsdWUgPz8gJyc7XG4gICAgaWYgKGluY29taW5nID09PSB0aGlzLmxhc3RFbWl0dGVkKSByZXR1cm47XG4gICAgdGhpcy5yZW5kZXIoaW5jb21pbmcpO1xuICAgIHRoaXMudmFsaWRhdGUoaW5jb21pbmcpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGNvbnN0IGluaXRpYWwgPSB0aGlzLnZhbHVlIHx8ICcnO1xuICAgIHRoaXMucmVuZGVyKGluaXRpYWwpO1xuICAgIHRoaXMudmFsaWRhdGUoaW5pdGlhbCk7XG4gIH1cblxuICAvLyAtLS0tIEVkaXRvciBldmVudCBoYW5kbGVycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIG9uSW5wdXQoKTogdm9pZCB7XG4gICAgdGhpcy5mbGF0dGVuU3RydWN0dXJlKCk7XG4gICAgdGhpcy5zYW5pdGl6ZUNoaXBzKCk7XG4gICAgdGhpcy5hdXRvQ2hpcGlmeSgpO1xuICAgIHRoaXMuZW1pdFZhbHVlKCk7XG4gICAgdGhpcy5yZWZyZXNoU3VnZ2VzdGlvbigpO1xuICB9XG5cbiAgb25FZGl0b3JGb2N1cygpOiB2b2lkIHtcbiAgICB0aGlzLnJlZnJlc2hTdWdnZXN0aW9uKCk7XG4gIH1cblxuICBvbkVkaXRvckJsdXIoKTogdm9pZCB7XG4gICAgLy8gRGVsYXkgc28gY2xpY2tzIG9uIHN1Z2dlc3Rpb24gYnV0dG9ucyByZWdpc3RlciBiZWZvcmUgd2UgaGlkZSB0aGVtLlxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5hdXRvQ2hpcGlmeSh0cnVlKTtcbiAgICAgIHRoaXMuaGlkZVN1Z2dlc3Rpb24oKTtcbiAgICB9LCBCTFVSX0hJREVfREVMQVlfTVMpO1xuICB9XG5cbiAgb25LZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VudGVyJykge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ1RhYicpIHJldHVybjtcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnRXNjYXBlJykge1xuICAgICAgaWYgKHRoaXMuc2hvd1N1Z2dlc3Rpb24pIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5oaWRlU3VnZ2VzdGlvbigpO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoZXZlbnQua2V5ID09PSAnQmFja3NwYWNlJykge1xuICAgICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZUJlZm9yZUNhcmV0KCk7XG4gICAgICBpZiAobm9kZSAmJiAobm9kZSBhcyBIVE1MRWxlbWVudCkuY2xhc3NMaXN0Py5jb250YWlucygnY3FhLXZhci1jaGlwJykpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgKG5vZGUgYXMgSFRNTEVsZW1lbnQpLnJlbW92ZSgpO1xuICAgICAgICB0aGlzLm9uSW5wdXQoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBvblBhc3RlKGV2ZW50OiBDbGlwYm9hcmRFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgY29uc3QgdGV4dCA9IGV2ZW50LmNsaXBib2FyZERhdGE/LmdldERhdGEoJ3RleHQvcGxhaW4nKSA/PyAnJztcbiAgICBpZiAoIXRleHQpIHJldHVybjtcbiAgICB0aGlzLmluc2VydFBsYWluVGV4dEF0Q2FyZXQodGV4dCk7XG4gICAgdGhpcy5vbklucHV0KCk7XG4gIH1cblxuICBvbkRyb3AoZXZlbnQ6IERyYWdFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgY29uc3QgdGV4dCA9IGV2ZW50LmRhdGFUcmFuc2Zlcj8uZ2V0RGF0YSgndGV4dC9wbGFpbicpID8/ICcnO1xuICAgIGlmICh0ZXh0KSB7XG4gICAgICB0aGlzLmVkaXRvclJlZi5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICB0aGlzLmluc2VydFBsYWluVGV4dEF0Q2FyZXQodGV4dCk7XG4gICAgfVxuICAgIHRoaXMub25JbnB1dCgpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZHJhZ3N0YXJ0JywgWyckZXZlbnQnXSlcbiAgb25EcmFnU3RhcnQoZXZlbnQ6IERyYWdFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDptb3VzZWRvd24nLCBbJyRldmVudCddKVxuICBvbkRvY3VtZW50TW91c2VEb3duKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnNob3dTdWdnZXN0aW9uKSByZXR1cm47XG4gICAgaWYgKHRoaXMuaG9zdFJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBOb2RlKSkgcmV0dXJuO1xuICAgIHRoaXMuaGlkZVN1Z2dlc3Rpb24oKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OnNlbGVjdGlvbmNoYW5nZScpXG4gIG9uRG9jdW1lbnRTZWxlY3Rpb25DaGFuZ2UoKTogdm9pZCB7XG4gICAgaWYgKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgIT09IHRoaXMuZWRpdG9yUmVmPy5uYXRpdmVFbGVtZW50KSByZXR1cm47XG4gICAgdGhpcy5yZWZyZXNoU3VnZ2VzdGlvbigpO1xuICB9XG5cbiAgLy8gLS0tLSBTdWdnZXN0aW9uIGFjdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgYWRkQXNUZXh0KCk6IHZvaWQge1xuICAgIHRoaXMuaGlkZVN1Z2dlc3Rpb24oKTtcbiAgICB0aGlzLmVkaXRvclJlZi5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gIH1cblxuICBhZGRBc1ZhcmlhYmxlKCk6IHZvaWQge1xuICAgIGNvbnN0IG5hbWUgPSB0aGlzLm5vcm1hbGl6ZUNhbmRpZGF0ZSh0aGlzLnBlbmRpbmdXb3JkIHx8ICcnKTtcbiAgICBpZiAoIW5hbWUgfHwgIVZBUl9OQU1FX1JFR0VYLnRlc3QobmFtZSkpIHtcbiAgICAgIHRoaXMuaGlkZVN1Z2dlc3Rpb24oKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uTW9kZSAmJiB0aGlzLnNlbGVjdGlvblJhbmdlKSB7XG4gICAgICBpZiAodGhpcy5yYW5nZUNyb3NzZXNDaGlwKHRoaXMuc2VsZWN0aW9uUmFuZ2UpKSB7XG4gICAgICAgIHRoaXMuaGlkZVN1Z2dlc3Rpb24oKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5pbnNlcnRDaGlwUmVwbGFjaW5nUmFuZ2UobmFtZSwgdGhpcy5zZWxlY3Rpb25SYW5nZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaW5zZXJ0Q2hpcFJlcGxhY2luZ0N1cnJlbnRXb3JkKG5hbWUpO1xuICAgIH1cbiAgICB0aGlzLmhpZGVTdWdnZXN0aW9uKCk7XG4gICAgdGhpcy5lbWl0VmFsdWUoKTtcbiAgfVxuXG4gIC8vIC0tLS0gVmFsdWUgZW1pc3Npb24gLyB2YWxpZGF0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgcHJpdmF0ZSBlbWl0VmFsdWUoKTogdm9pZCB7XG4gICAgY29uc3Qgc3RyID0gdGhpcy5zZXJpYWxpemUoKTtcbiAgICBpZiAoc3RyICE9PSB0aGlzLmxhc3RFbWl0dGVkKSB7XG4gICAgICB0aGlzLmxhc3RFbWl0dGVkID0gc3RyO1xuICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHN0cik7XG4gICAgfVxuICAgIHRoaXMudmFsaWRhdGUoc3RyKTtcbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGUoc3RyOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBlcnJvciA9IHRoaXMuZmluZFZhbGlkYXRpb25FcnJvcihzdHIpO1xuICAgIGNvbnN0IHZhbGlkID0gZXJyb3IgPT09IG51bGw7XG4gICAgaWYgKHRoaXMubGFzdFZhbGlkID09PSB2YWxpZCAmJiB0aGlzLmVycm9yTWVzc2FnZSA9PT0gZXJyb3IpIHJldHVybjtcbiAgICB0aGlzLmxhc3RWYWxpZCA9IHZhbGlkO1xuICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gZXJyb3I7XG4gICAgdGhpcy52YWxpZGl0eUNoYW5nZS5lbWl0KHsgdmFsaWQsIGVycm9yIH0pO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJpdmF0ZSBmaW5kVmFsaWRhdGlvbkVycm9yKHN0cjogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgaWYgKCFzdHIpIHJldHVybiBudWxsO1xuICAgIGNvbnN0IGJyYWNlQm9keSA9IC9cXCRcXHsoW159XSopXFx9L2c7XG4gICAgbGV0IG06IFJlZ0V4cEV4ZWNBcnJheSB8IG51bGw7XG4gICAgYnJhY2VCb2R5Lmxhc3RJbmRleCA9IDA7XG4gICAgd2hpbGUgKChtID0gYnJhY2VCb2R5LmV4ZWMoc3RyKSkgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGJvZHkgPSBtWzFdO1xuICAgICAgaWYgKGJvZHkgIT09IGJvZHkudHJpbSgpIHx8ICFWQVJfTkFNRV9SRUdFWC50ZXN0KGJvZHkpKSB7XG4gICAgICAgIHJldHVybiBJTlZBTElEX1ZBUl9NRVNTQUdFO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBvcGVuQ291bnQgPSAoc3RyLm1hdGNoKC9cXCRcXHsvZykgfHwgW10pLmxlbmd0aDtcbiAgICBjb25zdCBjbG9zZWRDb3VudCA9IChzdHIubWF0Y2goYnJhY2VCb2R5KSB8fCBbXSkubGVuZ3RoO1xuICAgIGlmIChvcGVuQ291bnQgPiBjbG9zZWRDb3VudCkgcmV0dXJuIElOVkFMSURfVkFSX01FU1NBR0U7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvLyAtLS0tIFN1Z2dlc3Rpb24gc3RhdGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICBwcml2YXRlIHJlZnJlc2hTdWdnZXN0aW9uKCk6IHZvaWQge1xuICAgIGNvbnN0IHNlbEluZm8gPSB0aGlzLmdldFNlbGVjdGVkSW5mbygpO1xuICAgIGlmIChzZWxJbmZvKSB7XG4gICAgICBjb25zdCBub3JtYWxpemVkID0gdGhpcy5ub3JtYWxpemVDYW5kaWRhdGUoc2VsSW5mby50ZXh0KTtcbiAgICAgIHRoaXMucGVuZGluZ1dvcmQgPSBub3JtYWxpemVkO1xuICAgICAgdGhpcy5zZWxlY3Rpb25SYW5nZSA9IHNlbEluZm8ucmFuZ2U7XG4gICAgICB0aGlzLnNlbGVjdGlvbk1vZGUgPSB0cnVlO1xuICAgICAgdGhpcy5zaG93U3VnZ2VzdGlvbiA9IHRydWU7XG4gICAgICB0aGlzLmNhbkFkZEFzVmFyaWFibGUgPVxuICAgICAgICAhIW5vcm1hbGl6ZWQgJiYgVkFSX05BTUVfUkVHRVgudGVzdChub3JtYWxpemVkKSAmJiAhdGhpcy5yYW5nZUNyb3NzZXNDaGlwKHNlbEluZm8ucmFuZ2UpO1xuICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc2VsZWN0aW9uTW9kZSA9IGZhbHNlO1xuICAgIHRoaXMuc2VsZWN0aW9uUmFuZ2UgPSBudWxsO1xuICAgIGNvbnN0IHdvcmQgPSB0aGlzLmdldEN1cnJlbnRXb3JkKCk7XG4gICAgdGhpcy5wZW5kaW5nV29yZCA9IHdvcmQ7XG4gICAgdGhpcy5zaG93U3VnZ2VzdGlvbiA9ICEhd29yZDtcbiAgICB0aGlzLmNhbkFkZEFzVmFyaWFibGUgPSAhIXdvcmQgJiYgVkFSX05BTUVfUkVHRVgudGVzdCh3b3JkKTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByaXZhdGUgaGlkZVN1Z2dlc3Rpb24oKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnNob3dTdWdnZXN0aW9uICYmICF0aGlzLnBlbmRpbmdXb3JkKSByZXR1cm47XG4gICAgdGhpcy5zaG93U3VnZ2VzdGlvbiA9IGZhbHNlO1xuICAgIHRoaXMucGVuZGluZ1dvcmQgPSAnJztcbiAgICB0aGlzLmNhbkFkZEFzVmFyaWFibGUgPSBmYWxzZTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByaXZhdGUgbm9ybWFsaXplQ2FuZGlkYXRlKHRleHQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgbGV0IHQgPSB0ZXh0LnRyaW0oKTtcbiAgICBpZiAodC5zdGFydHNXaXRoKCckeycpICYmIHQuZW5kc1dpdGgoJ30nKSkge1xuICAgICAgdCA9IHQuc2xpY2UoMiwgLTEpLnRyaW0oKTtcbiAgICB9XG4gICAgcmV0dXJuIHQ7XG4gIH1cblxuICAvLyAtLS0tIERPTSBzYW5pdGl6YXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICBwcml2YXRlIGZsYXR0ZW5TdHJ1Y3R1cmUoKTogdm9pZCB7XG4gICAgY29uc3QgZWRpdG9yID0gdGhpcy5lZGl0b3JSZWYubmF0aXZlRWxlbWVudDtcbiAgICBjb25zdCB3cmFwcGVycyA9IEFycmF5LmZyb20oZWRpdG9yLnF1ZXJ5U2VsZWN0b3JBbGwoJ2RpdiwgcCcpKSBhcyBIVE1MRWxlbWVudFtdO1xuICAgIGNvbnN0IHN0cmF5SW5saW5lcyA9IEFycmF5LmZyb20oZWRpdG9yLnF1ZXJ5U2VsZWN0b3JBbGwoJ3NwYW4nKSkuZmlsdGVyKFxuICAgICAgKHMpID0+ICFzLmNsYXNzTGlzdC5jb250YWlucygnY3FhLXZhci1jaGlwJykgJiYgIXMuY2xvc2VzdCgnLmNxYS12YXItY2hpcCcpLFxuICAgICkgYXMgSFRNTEVsZW1lbnRbXTtcbiAgICBmb3IgKGNvbnN0IGVsIG9mIFsuLi53cmFwcGVycywgLi4uc3RyYXlJbmxpbmVzXSkge1xuICAgICAgaWYgKGVsLmNsb3Nlc3QoJy5jcWEtdmFyLWNoaXAnKSkgY29udGludWU7XG4gICAgICB3aGlsZSAoZWwuZmlyc3RDaGlsZCkgZWwucGFyZW50Tm9kZT8uaW5zZXJ0QmVmb3JlKGVsLmZpcnN0Q2hpbGQsIGVsKTtcbiAgICAgIGVsLnJlbW92ZSgpO1xuICAgIH1cbiAgICBjb25zdCBicnMgPSBBcnJheS5mcm9tKGVkaXRvci5xdWVyeVNlbGVjdG9yQWxsKCdicicpKSBhcyBIVE1MRWxlbWVudFtdO1xuICAgIGZvciAoY29uc3QgYnIgb2YgYnJzKSB7XG4gICAgICBpZiAoYnIuY2xvc2VzdCgnLmNxYS12YXItY2hpcCcpKSBjb250aW51ZTtcbiAgICAgIGJyLnBhcmVudE5vZGU/LnJlcGxhY2VDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnICcpLCBicik7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzYW5pdGl6ZUNoaXBzKCk6IHZvaWQge1xuICAgIGNvbnN0IGVkaXRvciA9IHRoaXMuZWRpdG9yUmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgY29uc3QgY2hpcHMgPSBBcnJheS5mcm9tKGVkaXRvci5xdWVyeVNlbGVjdG9yQWxsKCcuY3FhLXZhci1jaGlwJykpIGFzIEhUTUxFbGVtZW50W107XG4gICAgZm9yIChjb25zdCBjaGlwIG9mIGNoaXBzKSB7XG4gICAgICBjb25zdCBuYW1lID0gKGNoaXAuZ2V0QXR0cmlidXRlKCdkYXRhLXZhcicpIHx8ICcnKS50cmltKCk7XG4gICAgICBpZiAoIW5hbWUgfHwgIVZBUl9OQU1FX1JFR0VYLnRlc3QobmFtZSkpIHtcbiAgICAgICAgY2hpcC5wYXJlbnROb2RlPy5yZXBsYWNlQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY2hpcC50ZXh0Q29udGVudCB8fCAnJyksIGNoaXApO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHN0cnVjdHVyZUJyb2tlbiA9XG4gICAgICAgIGNoaXAuZ2V0QXR0cmlidXRlKCdjb250ZW50ZWRpdGFibGUnKSAhPT0gJ2ZhbHNlJyB8fFxuICAgICAgICAhY2hpcC5xdWVyeVNlbGVjdG9yKCcuY3FhLXZhci1jaGlwX19yZW1vdmUnKTtcbiAgICAgIGlmIChzdHJ1Y3R1cmVCcm9rZW4pIHtcbiAgICAgICAgY29uc3Qgc291cmNlID0gKGNoaXAuZ2V0QXR0cmlidXRlKCdkYXRhLXNvdXJjZScpIGFzIENoaXBTb3VyY2UpIHx8ICdwbGFpbic7XG4gICAgICAgIGNoaXAucGFyZW50Tm9kZT8ucmVwbGFjZUNoaWxkKHRoaXMuYnVpbGRDaGlwKG5hbWUsIHNvdXJjZSksIGNoaXApO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBSZW1vdmUgc3RyYXkgcmVtb3ZlIGljb25zIGxlZnQgZnJvbSBwYXJ0aWFsIHVuZG8vcmVkbyBzdGF0ZXMuXG4gICAgY29uc3Qgb3JwaGFucyA9IEFycmF5LmZyb20oZWRpdG9yLnF1ZXJ5U2VsZWN0b3JBbGwoJy5jcWEtdmFyLWNoaXBfX3JlbW92ZScpKSBhcyBIVE1MRWxlbWVudFtdO1xuICAgIGZvciAoY29uc3QgbyBvZiBvcnBoYW5zKSB7XG4gICAgICBpZiAoIW8uY2xvc2VzdCgnLmNxYS12YXItY2hpcCcpKSBvLnJlbW92ZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8vIC0tLS0gQ2hpcGlmaWNhdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIHByaXZhdGUgYXV0b0NoaXBpZnkoZm9yY2UgPSBmYWxzZSk6IHZvaWQge1xuICAgIGNvbnN0IGVkaXRvciA9IHRoaXMuZWRpdG9yUmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgY29uc3QgY2FyZXRSYW5nZSA9IHRoaXMuZ2V0U2VsZWN0aW9uUmFuZ2UoKTtcbiAgICBsZXQgY2hhbmdlZCA9IGZhbHNlO1xuICAgIGxldCBsYXN0Q2hpcDogTm9kZSB8IG51bGwgPSBudWxsO1xuXG4gICAgZm9yIChjb25zdCB0biBvZiB0aGlzLmNvbGxlY3REZXNjZW5kYW50VGV4dE5vZGVzKGVkaXRvcikpIHtcbiAgICAgIGlmICghdG4ucGFyZW50Tm9kZSkgY29udGludWU7XG4gICAgICBjb25zdCB0ZXh0ID0gdG4ubm9kZVZhbHVlIHx8ICcnO1xuICAgICAgVkFSX1RPS0VOX1JFR0VYLmxhc3RJbmRleCA9IDA7XG4gICAgICBpZiAoIVZBUl9UT0tFTl9SRUdFWC50ZXN0KHRleHQpKSBjb250aW51ZTtcbiAgICAgIFZBUl9UT0tFTl9SRUdFWC5sYXN0SW5kZXggPSAwO1xuXG4gICAgICBjb25zdCBjYXJldE9mZnNldCA9XG4gICAgICAgICFmb3JjZSAmJiBjYXJldFJhbmdlICYmIGNhcmV0UmFuZ2UuY29sbGFwc2VkICYmIGNhcmV0UmFuZ2Uuc3RhcnRDb250YWluZXIgPT09IHRuXG4gICAgICAgICAgPyBjYXJldFJhbmdlLnN0YXJ0T2Zmc2V0XG4gICAgICAgICAgOiAtMTtcblxuICAgICAgY29uc3QgbWF0Y2hlczogQXJyYXk8eyBzdGFydDogbnVtYmVyOyBlbmQ6IG51bWJlcjsgbmFtZTogc3RyaW5nOyBzb3VyY2U6IENoaXBTb3VyY2UgfT4gPSBbXTtcbiAgICAgIGxldCBtOiBSZWdFeHBFeGVjQXJyYXkgfCBudWxsO1xuICAgICAgd2hpbGUgKChtID0gVkFSX1RPS0VOX1JFR0VYLmV4ZWModGV4dCkpICE9PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gbS5pbmRleDtcbiAgICAgICAgY29uc3QgZW5kID0gc3RhcnQgKyBtWzBdLmxlbmd0aDtcbiAgICAgICAgLy8gS2VlcCB0aGUgdG9rZW4gYXMgcGxhaW4gdGV4dCB3aGlsZSB0aGUgY2FyZXQgaXMgc3RyaWN0bHkgaW5zaWRlLlxuICAgICAgICBpZiAoY2FyZXRPZmZzZXQgPiBzdGFydCAmJiBjYXJldE9mZnNldCA8IGVuZCkgY29udGludWU7XG4gICAgICAgIC8vIENhcHR1cmUgZ3JvdXBzOiAxPWxvY2FsICR7Li4ufSwgMj1nbG9iYWwge3suLi59fVxuICAgICAgICBjb25zdCBuYW1lID0gbVsxXSA/PyBtWzJdID8/ICcnO1xuICAgICAgICBjb25zdCBzb3VyY2U6IENoaXBTb3VyY2UgPSBtWzJdID8gJ2dsb2JhbCcgOiAncGxhaW4nO1xuICAgICAgICBpZiAoIW5hbWUpIGNvbnRpbnVlO1xuICAgICAgICBtYXRjaGVzLnB1c2goeyBzdGFydCwgZW5kLCBuYW1lLCBzb3VyY2UgfSk7XG4gICAgICB9XG4gICAgICBpZiAoIW1hdGNoZXMubGVuZ3RoKSBjb250aW51ZTtcblxuICAgICAgY29uc3QgZnJhZyA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtcbiAgICAgIGxldCBjdXJzb3IgPSAwO1xuICAgICAgZm9yIChjb25zdCBtdCBvZiBtYXRjaGVzKSB7XG4gICAgICAgIGlmIChtdC5zdGFydCA+IGN1cnNvcikge1xuICAgICAgICAgIGZyYWcuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGV4dC5zbGljZShjdXJzb3IsIG10LnN0YXJ0KSkpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNoaXAgPSB0aGlzLmJ1aWxkQ2hpcChtdC5uYW1lLCBtdC5zb3VyY2UpO1xuICAgICAgICBmcmFnLmFwcGVuZENoaWxkKGNoaXApO1xuICAgICAgICBsYXN0Q2hpcCA9IGNoaXA7XG4gICAgICAgIGN1cnNvciA9IG10LmVuZDtcbiAgICAgIH1cbiAgICAgIGlmIChjdXJzb3IgPCB0ZXh0Lmxlbmd0aCkge1xuICAgICAgICBmcmFnLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRleHQuc2xpY2UoY3Vyc29yKSkpO1xuICAgICAgfVxuICAgICAgdG4ucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQoZnJhZywgdG4pO1xuICAgICAgY2hhbmdlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZWQgJiYgbGFzdENoaXApIHRoaXMucGxhY2VDYXJldEFmdGVyKGxhc3RDaGlwKTtcbiAgfVxuXG4gIHByaXZhdGUgY29sbGVjdERlc2NlbmRhbnRUZXh0Tm9kZXMocm9vdDogRWxlbWVudCk6IFRleHRbXSB7XG4gICAgY29uc3Qgb3V0OiBUZXh0W10gPSBbXTtcbiAgICBjb25zdCB3YWxrZXIgPSBkb2N1bWVudC5jcmVhdGVUcmVlV2Fsa2VyKHJvb3QsIE5vZGVGaWx0ZXIuU0hPV19URVhULCB7XG4gICAgICBhY2NlcHROb2RlOiAobm9kZSkgPT4ge1xuICAgICAgICBsZXQgcDogTm9kZSB8IG51bGwgPSBub2RlLnBhcmVudE5vZGU7XG4gICAgICAgIHdoaWxlIChwICYmIHAgIT09IHJvb3QpIHtcbiAgICAgICAgICBpZiAoKHAgYXMgRWxlbWVudCkuY2xhc3NMaXN0Py5jb250YWlucz8uKCdjcWEtdmFyLWNoaXAnKSkge1xuICAgICAgICAgICAgcmV0dXJuIE5vZGVGaWx0ZXIuRklMVEVSX1JFSkVDVDtcbiAgICAgICAgICB9XG4gICAgICAgICAgcCA9IHAucGFyZW50Tm9kZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gTm9kZUZpbHRlci5GSUxURVJfQUNDRVBUO1xuICAgICAgfSxcbiAgICB9KTtcbiAgICBsZXQgbjogTm9kZSB8IG51bGw7XG4gICAgd2hpbGUgKChuID0gd2Fsa2VyLm5leHROb2RlKCkpKSBvdXQucHVzaChuIGFzIFRleHQpO1xuICAgIHJldHVybiBvdXQ7XG4gIH1cblxuICAvLyAtLS0tIFJlbmRlciAvIHNlcmlhbGl6ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICBwcml2YXRlIHJlbmRlcih2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgZWRpdG9yID0gdGhpcy5lZGl0b3JSZWYubmF0aXZlRWxlbWVudDtcbiAgICBlZGl0b3IuaW5uZXJIVE1MID0gJyc7XG4gICAgaWYgKCF2YWx1ZSkgcmV0dXJuO1xuICAgIFZBUl9UT0tFTl9SRUdFWC5sYXN0SW5kZXggPSAwO1xuICAgIGxldCBsYXN0SW5kZXggPSAwO1xuICAgIGxldCBtOiBSZWdFeHBFeGVjQXJyYXkgfCBudWxsO1xuICAgIHdoaWxlICgobSA9IFZBUl9UT0tFTl9SRUdFWC5leGVjKHZhbHVlKSkgIT09IG51bGwpIHtcbiAgICAgIGlmIChtLmluZGV4ID4gbGFzdEluZGV4KSB7XG4gICAgICAgIGVkaXRvci5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh2YWx1ZS5zbGljZShsYXN0SW5kZXgsIG0uaW5kZXgpKSk7XG4gICAgICB9XG4gICAgICAvLyBDYXB0dXJlIGdyb3VwIDEgPSBsb2NhbCAoYCR7Li4ufWApLCAyID0gZ2xvYmFsIChge3suLi59fWApLlxuICAgICAgY29uc3QgbmFtZSA9IG1bMV0gPz8gbVsyXSA/PyAnJztcbiAgICAgIGNvbnN0IHNvdXJjZTogQ2hpcFNvdXJjZSA9IG1bMl0gPyAnZ2xvYmFsJyA6ICdwbGFpbic7XG4gICAgICBlZGl0b3IuYXBwZW5kQ2hpbGQodGhpcy5idWlsZENoaXAobmFtZSwgc291cmNlKSk7XG4gICAgICBsYXN0SW5kZXggPSBtLmluZGV4ICsgbVswXS5sZW5ndGg7XG4gICAgfVxuICAgIGlmIChsYXN0SW5kZXggPCB2YWx1ZS5sZW5ndGgpIHtcbiAgICAgIGVkaXRvci5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh2YWx1ZS5zbGljZShsYXN0SW5kZXgpKSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXJpYWxpemUoKTogc3RyaW5nIHtcbiAgICBjb25zdCBlZGl0b3IgPSB0aGlzLmVkaXRvclJlZi5uYXRpdmVFbGVtZW50O1xuICAgIGxldCBvdXQgPSAnJztcbiAgICBjb25zdCB3YWxrID0gKG5vZGU6IE5vZGUpOiB2b2lkID0+IHtcbiAgICAgIGlmIChub2RlLm5vZGVUeXBlID09PSBOb2RlLlRFWFRfTk9ERSkge1xuICAgICAgICBvdXQgKz0gKG5vZGUubm9kZVZhbHVlIHx8ICcnKS5yZXBsYWNlKC9cXHUwMGEwL2csICcgJyk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChub2RlLm5vZGVUeXBlICE9PSBOb2RlLkVMRU1FTlRfTk9ERSkgcmV0dXJuO1xuICAgICAgY29uc3QgZWwgPSBub2RlIGFzIEhUTUxFbGVtZW50O1xuICAgICAgaWYgKGVsLmNsYXNzTGlzdC5jb250YWlucygnY3FhLXZhci1jaGlwJykpIHtcbiAgICAgICAgY29uc3QgbmFtZSA9IGVsLmdldEF0dHJpYnV0ZSgnZGF0YS12YXInKSB8fCAnJztcbiAgICAgICAgY29uc3Qgc291cmNlID0gKGVsLmdldEF0dHJpYnV0ZSgnZGF0YS1zb3VyY2UnKSBhcyBDaGlwU291cmNlKSB8fCAncGxhaW4nO1xuICAgICAgICBpZiAobmFtZSkge1xuICAgICAgICAgIG91dCArPSBzb3VyY2UgPT09ICdnbG9iYWwnID8gJ3t7JyArIG5hbWUgKyAnfX0nIDogJyR7JyArIG5hbWUgKyAnfSc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKGVsLnRhZ05hbWUgPT09ICdCUicpIHtcbiAgICAgICAgb3V0ICs9ICdcXG4nO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCBpc0Jsb2NrID0gZWwudGFnTmFtZSA9PT0gJ0RJVicgfHwgZWwudGFnTmFtZSA9PT0gJ1AnO1xuICAgICAgaWYgKGlzQmxvY2sgJiYgb3V0Lmxlbmd0aCA+IDAgJiYgIW91dC5lbmRzV2l0aCgnXFxuJykpIG91dCArPSAnXFxuJztcbiAgICAgIGVsLmNoaWxkTm9kZXMuZm9yRWFjaCh3YWxrKTtcbiAgICB9O1xuICAgIGVkaXRvci5jaGlsZE5vZGVzLmZvckVhY2god2Fsayk7XG4gICAgcmV0dXJuIG91dDtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRDaGlwKG5hbWU6IHN0cmluZywgc291cmNlOiBDaGlwU291cmNlID0gJ3BsYWluJyk6IEhUTUxFbGVtZW50IHtcbiAgICBjb25zdCBjaGlwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICAgIGNoaXAuY2xhc3NOYW1lID0gJ2NxYS12YXItY2hpcCc7XG4gICAgY2hpcC5zZXRBdHRyaWJ1dGUoJ2NvbnRlbnRlZGl0YWJsZScsICdmYWxzZScpO1xuICAgIGNoaXAuc2V0QXR0cmlidXRlKCdkYXRhLXZhcicsIG5hbWUpO1xuICAgIGNoaXAuc2V0QXR0cmlidXRlKCdkYXRhLXNvdXJjZScsIHNvdXJjZSk7XG4gICAgY29uc3QgbGFiZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG4gICAgbGFiZWwuY2xhc3NOYW1lID0gJ2NxYS12YXItY2hpcF9fbGFiZWwnO1xuICAgIGxhYmVsLnRleHRDb250ZW50ID0gc291cmNlID09PSAnZ2xvYmFsJyA/ICd7eycgKyBuYW1lICsgJ319JyA6ICckeycgKyBuYW1lICsgJ30nO1xuICAgIGNvbnN0IHJlbW92ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcbiAgICByZW1vdmUuY2xhc3NOYW1lID0gJ2NxYS12YXItY2hpcF9fcmVtb3ZlJztcbiAgICByZW1vdmUudGV4dENvbnRlbnQgPSAnw5cnO1xuICAgIHJlbW92ZS5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCAoZSkgPT4gZS5wcmV2ZW50RGVmYXVsdCgpKTtcbiAgICByZW1vdmUuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZSkgPT4ge1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIGNoaXAucmVtb3ZlKCk7XG4gICAgICB0aGlzLm9uSW5wdXQoKTtcbiAgICB9KTtcbiAgICBjaGlwLmFwcGVuZENoaWxkKGxhYmVsKTtcbiAgICBjaGlwLmFwcGVuZENoaWxkKHJlbW92ZSk7XG4gICAgcmV0dXJuIGNoaXA7XG4gIH1cblxuICAvLyAtLS0tIFNlbGVjdGlvbiAvIGNhcmV0IGhlbHBlcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIHByaXZhdGUgZ2V0U2VsZWN0aW9uUmFuZ2UoKTogUmFuZ2UgfCBudWxsIHtcbiAgICBjb25zdCBzZWwgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG4gICAgaWYgKCFzZWwgfHwgc2VsLnJhbmdlQ291bnQgPT09IDApIHJldHVybiBudWxsO1xuICAgIGNvbnN0IHJhbmdlID0gc2VsLmdldFJhbmdlQXQoMCk7XG4gICAgaWYgKCF0aGlzLmVkaXRvclJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKHJhbmdlLnN0YXJ0Q29udGFpbmVyKSkgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuIHJhbmdlO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTZWxlY3RlZEluZm8oKTogeyB0ZXh0OiBzdHJpbmc7IHJhbmdlOiBSYW5nZSB9IHwgbnVsbCB7XG4gICAgY29uc3Qgc2VsID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xuICAgIGlmICghc2VsIHx8IHNlbC5yYW5nZUNvdW50ID09PSAwKSByZXR1cm4gbnVsbDtcbiAgICBjb25zdCByYW5nZSA9IHNlbC5nZXRSYW5nZUF0KDApO1xuICAgIGlmIChyYW5nZS5jb2xsYXBzZWQpIHJldHVybiBudWxsO1xuICAgIGNvbnN0IGVkaXRvciA9IHRoaXMuZWRpdG9yUmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgaWYgKCFlZGl0b3IuY29udGFpbnMocmFuZ2Uuc3RhcnRDb250YWluZXIpIHx8ICFlZGl0b3IuY29udGFpbnMocmFuZ2UuZW5kQ29udGFpbmVyKSkgcmV0dXJuIG51bGw7XG4gICAgY29uc3QgdGV4dCA9IHJhbmdlLnRvU3RyaW5nKCk7XG4gICAgaWYgKCF0ZXh0KSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4geyB0ZXh0LCByYW5nZTogcmFuZ2UuY2xvbmVSYW5nZSgpIH07XG4gIH1cblxuICBwcml2YXRlIHJhbmdlQ3Jvc3Nlc0NoaXAocmFuZ2U6IFJhbmdlKTogYm9vbGVhbiB7XG4gICAgY29uc3QgY29udGVudHMgPSByYW5nZS5jbG9uZUNvbnRlbnRzKCk7XG4gICAgcmV0dXJuICEhY29udGVudHMucXVlcnlTZWxlY3Rvcj8uKCcuY3FhLXZhci1jaGlwJyk7XG4gIH1cblxuICBwcml2YXRlIGdldE5vZGVCZWZvcmVDYXJldCgpOiBOb2RlIHwgbnVsbCB7XG4gICAgY29uc3QgcmFuZ2UgPSB0aGlzLmdldFNlbGVjdGlvblJhbmdlKCk7XG4gICAgaWYgKCFyYW5nZSB8fCAhcmFuZ2UuY29sbGFwc2VkKSByZXR1cm4gbnVsbDtcbiAgICBjb25zdCB7IHN0YXJ0Q29udGFpbmVyLCBzdGFydE9mZnNldCB9ID0gcmFuZ2U7XG4gICAgaWYgKHN0YXJ0Q29udGFpbmVyLm5vZGVUeXBlID09PSBOb2RlLlRFWFRfTk9ERSkge1xuICAgICAgaWYgKHN0YXJ0T2Zmc2V0ID4gMCkgcmV0dXJuIG51bGw7XG4gICAgICByZXR1cm4gc3RhcnRDb250YWluZXIucHJldmlvdXNTaWJsaW5nO1xuICAgIH1cbiAgICByZXR1cm4gc3RhcnRDb250YWluZXIuY2hpbGROb2Rlc1tzdGFydE9mZnNldCAtIDFdIHx8IG51bGw7XG4gIH1cblxuICBwcml2YXRlIGdldEN1cnJlbnRXb3JkKCk6IHN0cmluZyB7XG4gICAgY29uc3QgcmFuZ2UgPSB0aGlzLmdldFNlbGVjdGlvblJhbmdlKCk7XG4gICAgaWYgKCFyYW5nZSB8fCAhcmFuZ2UuY29sbGFwc2VkKSByZXR1cm4gJyc7XG4gICAgbGV0IG5vZGU6IE5vZGUgPSByYW5nZS5zdGFydENvbnRhaW5lcjtcbiAgICBsZXQgb2Zmc2V0ID0gcmFuZ2Uuc3RhcnRPZmZzZXQ7XG4gICAgaWYgKG5vZGUubm9kZVR5cGUgIT09IE5vZGUuVEVYVF9OT0RFKSB7XG4gICAgICBjb25zdCBwcmV2ID0gbm9kZS5jaGlsZE5vZGVzW29mZnNldCAtIDFdO1xuICAgICAgaWYgKCFwcmV2IHx8IHByZXYubm9kZVR5cGUgIT09IE5vZGUuVEVYVF9OT0RFKSByZXR1cm4gJyc7XG4gICAgICBub2RlID0gcHJldjtcbiAgICAgIG9mZnNldCA9IChwcmV2Lm5vZGVWYWx1ZSB8fCAnJykubGVuZ3RoO1xuICAgIH1cbiAgICBjb25zdCB0ZXh0ID0gKG5vZGUgYXMgVGV4dCkubm9kZVZhbHVlIHx8ICcnO1xuICAgIGNvbnN0IGJyYWNlT3BlbiA9IHRleHQubGFzdEluZGV4T2YoJyR7Jywgb2Zmc2V0IC0gMSk7XG4gICAgaWYgKGJyYWNlT3BlbiAhPT0gLTEpIHtcbiAgICAgIGNvbnN0IGNsb3NlSWR4ID0gdGV4dC5pbmRleE9mKCd9JywgYnJhY2VPcGVuICsgMik7XG4gICAgICBjb25zdCB0b2tlbkNsb3NlZEJlZm9yZUNhcmV0ID0gY2xvc2VJZHggIT09IC0xICYmIGNsb3NlSWR4IDwgb2Zmc2V0O1xuICAgICAgaWYgKCF0b2tlbkNsb3NlZEJlZm9yZUNhcmV0KSB7XG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gYnJhY2VPcGVuICsgMjtcbiAgICAgICAgY29uc3QgZW5kID0gY2xvc2VJZHggPT09IC0xID8gdGV4dC5sZW5ndGggOiBjbG9zZUlkeDtcbiAgICAgICAgcmV0dXJuIHRleHQuc2xpY2Uoc3RhcnQsIGVuZCk7XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IG1hdGNoID0gdGV4dC5zbGljZSgwLCBvZmZzZXQpLm1hdGNoKFZBUl9QQVRIX1RBSUxfUkVHRVgpO1xuICAgIHJldHVybiBtYXRjaCA/IG1hdGNoWzFdIDogJyc7XG4gIH1cblxuICAvLyAtLS0tIENoaXAgaW5zZXJ0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICBwcml2YXRlIGluc2VydENoaXBSZXBsYWNpbmdSYW5nZShuYW1lOiBzdHJpbmcsIHJhbmdlOiBSYW5nZSk6IHZvaWQge1xuICAgIGNvbnN0IGNoaXAgPSB0aGlzLmJ1aWxkQ2hpcChuYW1lKTtcbiAgICByYW5nZS5kZWxldGVDb250ZW50cygpO1xuICAgIHJhbmdlLmluc2VydE5vZGUoY2hpcCk7XG4gICAgdGhpcy5zdHJpcEJyYWNlc0Fyb3VuZChjaGlwKTtcbiAgICB0aGlzLnBsYWNlQ2FyZXRBZnRlcihjaGlwKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5zZXJ0Q2hpcFJlcGxhY2luZ0N1cnJlbnRXb3JkKG5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IHJhbmdlID0gdGhpcy5nZXRTZWxlY3Rpb25SYW5nZSgpO1xuICAgIGNvbnN0IGNoaXAgPSB0aGlzLmJ1aWxkQ2hpcChuYW1lKTtcbiAgICBpZiAoIXJhbmdlKSB7XG4gICAgICB0aGlzLmVkaXRvclJlZi5uYXRpdmVFbGVtZW50LmFwcGVuZENoaWxkKGNoaXApO1xuICAgICAgdGhpcy5wbGFjZUNhcmV0QWZ0ZXIoY2hpcCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGxldCBub2RlOiBOb2RlID0gcmFuZ2Uuc3RhcnRDb250YWluZXI7XG4gICAgbGV0IG9mZnNldCA9IHJhbmdlLnN0YXJ0T2Zmc2V0O1xuICAgIC8vIENhcmV0IG1heSBzaXQgb24gdGhlIGVkaXRvciBlbGVtZW50IChlLmcuIHJpZ2h0IGFmdGVyIGEgcGFzdGVkIHRleHQgbm9kZSkuXG4gICAgLy8gV2FsayBpbnRvIHRoZSBwcmV2aW91cyB0ZXh0IG5vZGUgc28gd2UgcmVwbGFjZSB0aGUgdHJhaWxpbmcgd29yZCBpbnN0ZWFkXG4gICAgLy8gb2YganVzdCBpbnNlcnRpbmcgdGhlIGNoaXAgYWxvbmdzaWRlIGl0LlxuICAgIGlmIChub2RlLm5vZGVUeXBlICE9PSBOb2RlLlRFWFRfTk9ERSkge1xuICAgICAgY29uc3QgcHJldiA9IG5vZGUuY2hpbGROb2Rlc1tvZmZzZXQgLSAxXTtcbiAgICAgIGlmIChwcmV2ICYmIHByZXYubm9kZVR5cGUgPT09IE5vZGUuVEVYVF9OT0RFKSB7XG4gICAgICAgIG5vZGUgPSBwcmV2O1xuICAgICAgICBvZmZzZXQgPSAocHJldi5ub2RlVmFsdWUgfHwgJycpLmxlbmd0aDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJhbmdlLmluc2VydE5vZGUoY2hpcCk7XG4gICAgICAgIHRoaXMucGxhY2VDYXJldEFmdGVyKGNoaXApO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IHRleHQgPSBub2RlLm5vZGVWYWx1ZSB8fCAnJztcbiAgICBjb25zdCBiZWZvcmUgPSB0ZXh0LnNsaWNlKDAsIG9mZnNldCk7XG4gICAgY29uc3QgYWZ0ZXIgPSB0ZXh0LnNsaWNlKG9mZnNldCk7XG4gICAgY29uc3Qgd29yZE1hdGNoID0gYmVmb3JlLm1hdGNoKFZBUl9QQVRIX1RBSUxfUkVHRVgpO1xuICAgIGxldCBiZWZvcmVLZXB0ID0gd29yZE1hdGNoID8gYmVmb3JlLnNsaWNlKDAsIGJlZm9yZS5sZW5ndGggLSB3b3JkTWF0Y2hbMV0ubGVuZ3RoKSA6IGJlZm9yZTtcbiAgICBsZXQgYWZ0ZXJLZXB0ID0gYWZ0ZXI7XG4gICAgaWYgKGJlZm9yZUtlcHQuZW5kc1dpdGgoJyR7JykgJiYgYWZ0ZXJLZXB0LnN0YXJ0c1dpdGgoJ30nKSkge1xuICAgICAgYmVmb3JlS2VwdCA9IGJlZm9yZUtlcHQuc2xpY2UoMCwgLTIpO1xuICAgICAgYWZ0ZXJLZXB0ID0gYWZ0ZXJLZXB0LnNsaWNlKDEpO1xuICAgIH0gZWxzZSBpZiAoYmVmb3JlS2VwdC5lbmRzV2l0aCgnJHsnKSkge1xuICAgICAgYmVmb3JlS2VwdCA9IGJlZm9yZUtlcHQuc2xpY2UoMCwgLTIpO1xuICAgIH1cbiAgICBjb25zdCBmcmFnID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpO1xuICAgIGlmIChiZWZvcmVLZXB0KSBmcmFnLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGJlZm9yZUtlcHQpKTtcbiAgICBmcmFnLmFwcGVuZENoaWxkKGNoaXApO1xuICAgIGlmIChhZnRlcktlcHQpIGZyYWcuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoYWZ0ZXJLZXB0KSk7XG4gICAgbm9kZS5wYXJlbnROb2RlIS5yZXBsYWNlQ2hpbGQoZnJhZywgbm9kZSk7XG4gICAgdGhpcy5wbGFjZUNhcmV0QWZ0ZXIoY2hpcCk7XG4gIH1cblxuICBwcml2YXRlIHN0cmlwQnJhY2VzQXJvdW5kKGNoaXA6IEhUTUxFbGVtZW50KTogdm9pZCB7XG4gICAgY29uc3QgcHJldiA9IGNoaXAucHJldmlvdXNTaWJsaW5nO1xuICAgIGNvbnN0IG5leHQgPSBjaGlwLm5leHRTaWJsaW5nO1xuICAgIGlmIChwcmV2ICYmIHByZXYubm9kZVR5cGUgPT09IE5vZGUuVEVYVF9OT0RFKSB7XG4gICAgICBjb25zdCB0ID0gcHJldi5ub2RlVmFsdWUgfHwgJyc7XG4gICAgICBpZiAodC5lbmRzV2l0aCgnJHsnKSkgcHJldi5ub2RlVmFsdWUgPSB0LnNsaWNlKDAsIC0yKTtcbiAgICB9XG4gICAgaWYgKG5leHQgJiYgbmV4dC5ub2RlVHlwZSA9PT0gTm9kZS5URVhUX05PREUpIHtcbiAgICAgIGNvbnN0IHQgPSBuZXh0Lm5vZGVWYWx1ZSB8fCAnJztcbiAgICAgIGlmICh0LnN0YXJ0c1dpdGgoJ30nKSkgbmV4dC5ub2RlVmFsdWUgPSB0LnNsaWNlKDEpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaW5zZXJ0UGxhaW5UZXh0QXRDYXJldCh0ZXh0OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCByYW5nZSA9IHRoaXMuZ2V0U2VsZWN0aW9uUmFuZ2UoKTtcbiAgICBpZiAoIXJhbmdlKSB7XG4gICAgICB0aGlzLmVkaXRvclJlZi5uYXRpdmVFbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRleHQpKTtcbiAgICAgIHRoaXMucGxhY2VDYXJldEF0RW5kKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHJhbmdlLmRlbGV0ZUNvbnRlbnRzKCk7XG4gICAgY29uc3Qgbm9kZSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRleHQpO1xuICAgIHJhbmdlLmluc2VydE5vZGUobm9kZSk7XG4gICAgdGhpcy5wbGFjZUNhcmV0QWZ0ZXIobm9kZSk7XG4gIH1cblxuICBwcml2YXRlIHBsYWNlQ2FyZXRBZnRlcihub2RlOiBOb2RlKTogdm9pZCB7XG4gICAgY29uc3Qgc2VsID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xuICAgIGlmICghc2VsKSByZXR1cm47XG4gICAgY29uc3QgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpO1xuICAgIHJhbmdlLnNldFN0YXJ0QWZ0ZXIobm9kZSk7XG4gICAgcmFuZ2UuY29sbGFwc2UodHJ1ZSk7XG4gICAgc2VsLnJlbW92ZUFsbFJhbmdlcygpO1xuICAgIHNlbC5hZGRSYW5nZShyYW5nZSk7XG4gIH1cblxuICBwcml2YXRlIHBsYWNlQ2FyZXRBdEVuZCgpOiB2b2lkIHtcbiAgICBjb25zdCBzZWwgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG4gICAgaWYgKCFzZWwpIHJldHVybjtcbiAgICBjb25zdCByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7XG4gICAgcmFuZ2Uuc2VsZWN0Tm9kZUNvbnRlbnRzKHRoaXMuZWRpdG9yUmVmLm5hdGl2ZUVsZW1lbnQpO1xuICAgIHJhbmdlLmNvbGxhcHNlKGZhbHNlKTtcbiAgICBzZWwucmVtb3ZlQWxsUmFuZ2VzKCk7XG4gICAgc2VsLmFkZFJhbmdlKHJhbmdlKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImNxYS1taXhlZC12YXItd3JhcHBlclwiPlxuICA8ZGl2XG4gICAgI2VkaXRvclxuICAgIGNsYXNzPVwiY3FhLW1peGVkLXZhci1lZGl0b3JcIlxuICAgIHJvbGU9XCJ0ZXh0Ym94XCJcbiAgICBzcGVsbGNoZWNrPVwiZmFsc2VcIlxuICAgIFthdHRyLmNvbnRlbnRlZGl0YWJsZV09XCIhZGlzYWJsZWRcIlxuICAgIFthdHRyLmRhdGEtcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgIFthdHRyLmFyaWEtaW52YWxpZF09XCJlcnJvck1lc3NhZ2UgPyAndHJ1ZScgOiBudWxsXCJcbiAgICBbY2xhc3MuY3FhLW1peGVkLXZhci1lZGl0b3ItLWludmFsaWRdPVwiZXJyb3JNZXNzYWdlXCJcbiAgICAoaW5wdXQpPVwib25JbnB1dCgpXCJcbiAgICAoa2V5ZG93bik9XCJvbktleURvd24oJGV2ZW50KVwiXG4gICAgKGZvY3VzKT1cIm9uRWRpdG9yRm9jdXMoKVwiXG4gICAgKHBhc3RlKT1cIm9uUGFzdGUoJGV2ZW50KVwiXG4gICAgKGRyb3ApPVwib25Ecm9wKCRldmVudClcIlxuICAgIChibHVyKT1cIm9uRWRpdG9yQmx1cigpXCI+XG4gIDwvZGl2PlxuICA8cCAqbmdJZj1cImVycm9yTWVzc2FnZVwiIGNsYXNzPVwiY3FhLW1peGVkLXZhci1lcnJvclwiIHJvbGU9XCJhbGVydFwiPnt7IGVycm9yTWVzc2FnZSB9fTwvcD5cblxuICA8ZGl2XG4gICAgKm5nSWY9XCJzaG93U3VnZ2VzdGlvblwiXG4gICAgY2xhc3M9XCJjcWEtbWl4ZWQtdmFyLXN1Z2dlc3RcIlxuICAgIChtb3VzZWRvd24pPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIj5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImNxYS1taXhlZC12YXItc3VnZ2VzdF9faXRlbVwiIChjbGljayk9XCJhZGRBc1RleHQoKVwiPlxuICAgICAgQWRkIGFzIFRleHQgPHNwYW4gKm5nSWY9XCJwZW5kaW5nV29yZFwiIGNsYXNzPVwiY3FhLW1peGVkLXZhci1zdWdnZXN0X19oaW50XCI+XCJ7eyBwZW5kaW5nV29yZCB9fVwiPC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b24gKm5nSWY9XCJjYW5BZGRBc1ZhcmlhYmxlXCIgdHlwZT1cImJ1dHRvblwiXG4gICAgICBjbGFzcz1cImNxYS1taXhlZC12YXItc3VnZ2VzdF9faXRlbSBjcWEtbWl4ZWQtdmFyLXN1Z2dlc3RfX2l0ZW0tLXByaW1hcnlcIlxuICAgICAgKGNsaWNrKT1cImFkZEFzVmFyaWFibGUoKVwiPlxuICAgICAgQWRkIGFzIGxvY2FsIHZhcmlhYmxlIDxzcGFuIGNsYXNzPVwiY3FhLW1peGVkLXZhci1zdWdnZXN0X19oaW50XCI+JHt7ICd7JyB9fXt7IHBlbmRpbmdXb3JkIH19e3sgJ30nIH19PC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
592
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWl4ZWQtdmFyaWFibGUtaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9taXhlZC12YXJpYWJsZS1pbnB1dC9taXhlZC12YXJpYWJsZS1pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL21peGVkLXZhcmlhYmxlLWlucHV0L21peGVkLXZhcmlhYmxlLWlucHV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsdUJBQXVCLEVBQXFCLFNBQVMsRUFBYyxZQUFZLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBYSxNQUFNLEVBQWlCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBWWpNLE1BQU0sUUFBUSxHQUFHLGlFQUFpRSxDQUFDO0FBQ25GLE1BQU0sY0FBYyxHQUFHLElBQUksTUFBTSxDQUFDLEdBQUcsR0FBRyxRQUFRLEdBQUcsR0FBRyxDQUFDLENBQUM7QUFDeEQsTUFBTSxlQUFlLEdBQUcsSUFBSSxNQUFNLENBQUMsU0FBUyxHQUFHLFFBQVEsR0FBRyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDdkUsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLE1BQU0sQ0FBQyxHQUFHLEdBQUcsUUFBUSxHQUFHLElBQUksQ0FBQyxDQUFDO0FBQzlELE1BQU0sbUJBQW1CLEdBQUcsd0JBQXdCLENBQUM7QUFDckQsTUFBTSxrQkFBa0IsR0FBRyxHQUFHLENBQUM7QUFTL0IsTUFBTSxPQUFPLDJCQUEyQjtJQW9CdEMsWUFDVSxHQUFzQixFQUN0QixPQUFnQztRQURoQyxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixZQUFPLEdBQVAsT0FBTyxDQUF5QjtRQXJCakMsVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUNYLGdCQUFXLEdBQUcsWUFBWSxDQUFDO1FBQzNCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFFaEIsZ0JBQVcs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ZnRlclZpZXdJbml0LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkNoYW5nZXMsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcywgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWl4ZWRTZWdtZW50IHtcbiAgdHlwZTogJ3RleHQnIHwgJ3ZhcmlhYmxlJztcbiAgdmFsdWU6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNaXhlZFZhcmlhYmxlVmFsaWRpdHkge1xuICB2YWxpZDogYm9vbGVhbjtcbiAgZXJyb3I6IHN0cmluZyB8IG51bGw7XG59XG5cbmNvbnN0IFZBUl9QQVRIID0gJ1tBLVphLXpfXVtBLVphLXowLTlfXSooPzpcXFxcLltBLVphLXpfXVtBLVphLXowLTlfXSp8XFxcXFtcXFxcZCtcXFxcXSkqJztcbmNvbnN0IFZBUl9OQU1FX1JFR0VYID0gbmV3IFJlZ0V4cCgnXicgKyBWQVJfUEFUSCArICckJyk7XG5jb25zdCBWQVJfVE9LRU5fUkVHRVggPSBuZXcgUmVnRXhwKCdcXFxcJFxcXFx7KCcgKyBWQVJfUEFUSCArICcpXFxcXH0nLCAnZycpO1xuY29uc3QgVkFSX1BBVEhfVEFJTF9SRUdFWCA9IG5ldyBSZWdFeHAoJygnICsgVkFSX1BBVEggKyAnKSQnKTtcbmNvbnN0IElOVkFMSURfVkFSX01FU1NBR0UgPSAnSW52YWxpZCB2YXJpYWJsZSBuYW1lLic7XG5jb25zdCBCTFVSX0hJREVfREVMQVlfTVMgPSAxNTA7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NxYS1taXhlZC12YXJpYWJsZS1pbnB1dCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9taXhlZC12YXJpYWJsZS1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogW10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBob3N0OiB7IGNsYXNzOiAnY3FhLXVpLXJvb3QnIH0sXG59KVxuZXhwb3J0IGNsYXNzIE1peGVkVmFyaWFibGVJbnB1dENvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBJbnB1dCgpIHZhbHVlID0gJyc7XG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyID0gJ1RleHQgSW5wdXQnO1xuICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKSB2YWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBAT3V0cHV0KCkgdmFsaWRpdHlDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE1peGVkVmFyaWFibGVWYWxpZGl0eT4oKTtcblxuICBAVmlld0NoaWxkKCdlZGl0b3InLCB7IHN0YXRpYzogdHJ1ZSB9KSBlZGl0b3JSZWYhOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcblxuICBzaG93U3VnZ2VzdGlvbiA9IGZhbHNlO1xuICBwZW5kaW5nV29yZCA9ICcnO1xuICBjYW5BZGRBc1ZhcmlhYmxlID0gZmFsc2U7XG4gIGVycm9yTWVzc2FnZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgcHJpdmF0ZSBzZWxlY3Rpb25SYW5nZTogUmFuZ2UgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBzZWxlY3Rpb25Nb2RlID0gZmFsc2U7XG4gIHByaXZhdGUgbGFzdEVtaXR0ZWQgPSAnJztcbiAgcHJpdmF0ZSBsYXN0VmFsaWQ6IGJvb2xlYW4gfCBudWxsID0gbnVsbDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBob3N0UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgKSB7fVxuXG4gIC8vIC0tLS0gTGlmZWN5Y2xlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoIWNoYW5nZXNbJ3ZhbHVlJ10gfHwgIXRoaXMuZWRpdG9yUmVmKSByZXR1cm47XG4gICAgY29uc3QgaW5jb21pbmcgPSBjaGFuZ2VzWyd2YWx1ZSddLmN1cnJlbnRWYWx1ZSA/PyAnJztcbiAgICBpZiAoaW5jb21pbmcgPT09IHRoaXMubGFzdEVtaXR0ZWQpIHJldHVybjtcbiAgICB0aGlzLnJlbmRlcihpbmNvbWluZyk7XG4gICAgdGhpcy52YWxpZGF0ZShpbmNvbWluZyk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgY29uc3QgaW5pdGlhbCA9IHRoaXMudmFsdWUgfHwgJyc7XG4gICAgdGhpcy5yZW5kZXIoaW5pdGlhbCk7XG4gICAgdGhpcy52YWxpZGF0ZShpbml0aWFsKTtcbiAgfVxuXG4gIC8vIC0tLS0gRWRpdG9yIGV2ZW50IGhhbmRsZXJzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgb25JbnB1dCgpOiB2b2lkIHtcbiAgICB0aGlzLmZsYXR0ZW5TdHJ1Y3R1cmUoKTtcbiAgICB0aGlzLnNhbml0aXplQ2hpcHMoKTtcbiAgICB0aGlzLmF1dG9DaGlwaWZ5KCk7XG4gICAgdGhpcy5lbWl0VmFsdWUoKTtcbiAgICB0aGlzLnJlZnJlc2hTdWdnZXN0aW9uKCk7XG4gIH1cblxuICBvbkVkaXRvckZvY3VzKCk6IHZvaWQge1xuICAgIHRoaXMucmVmcmVzaFN1Z2dlc3Rpb24oKTtcbiAgfVxuXG4gIG9uRWRpdG9yQmx1cigpOiB2b2lkIHtcbiAgICAvLyBEZWxheSBzbyBjbGlja3Mgb24gc3VnZ2VzdGlvbiBidXR0b25zIHJlZ2lzdGVyIGJlZm9yZSB3ZSBoaWRlIHRoZW0uXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmF1dG9DaGlwaWZ5KHRydWUpO1xuICAgICAgdGhpcy5oaWRlU3VnZ2VzdGlvbigpO1xuICAgIH0sIEJMVVJfSElERV9ERUxBWV9NUyk7XG4gIH1cblxuICBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoZXZlbnQua2V5ID09PSAnVGFiJykgcmV0dXJuO1xuICAgIGlmIChldmVudC5rZXkgPT09ICdFc2NhcGUnKSB7XG4gICAgICBpZiAodGhpcy5zaG93U3VnZ2VzdGlvbikge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLmhpZGVTdWdnZXN0aW9uKCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChldmVudC5rZXkgPT09ICdCYWNrc3BhY2UnKSB7XG4gICAgICBjb25zdCBub2RlID0gdGhpcy5nZXROb2RlQmVmb3JlQ2FyZXQoKTtcbiAgICAgIGlmIChub2RlICYmIChub2RlIGFzIEhUTUxFbGVtZW50KS5jbGFzc0xpc3Q/LmNvbnRhaW5zKCdjcWEtdmFyLWNoaXAnKSkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAobm9kZSBhcyBIVE1MRWxlbWVudCkucmVtb3ZlKCk7XG4gICAgICAgIHRoaXMub25JbnB1dCgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG9uUGFzdGUoZXZlbnQ6IENsaXBib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBjb25zdCB0ZXh0ID0gZXZlbnQuY2xpcGJvYXJkRGF0YT8uZ2V0RGF0YSgndGV4dC9wbGFpbicpID8/ICcnO1xuICAgIGlmICghdGV4dCkgcmV0dXJuO1xuICAgIHRoaXMuaW5zZXJ0UGxhaW5UZXh0QXRDYXJldCh0ZXh0KTtcbiAgICB0aGlzLm9uSW5wdXQoKTtcbiAgfVxuXG4gIG9uRHJvcChldmVudDogRHJhZ0V2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBjb25zdCB0ZXh0ID0gZXZlbnQuZGF0YVRyYW5zZmVyPy5nZXREYXRhKCd0ZXh0L3BsYWluJykgPz8gJyc7XG4gICAgaWYgKHRleHQpIHtcbiAgICAgIHRoaXMuZWRpdG9yUmVmLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgIHRoaXMuaW5zZXJ0UGxhaW5UZXh0QXRDYXJldCh0ZXh0KTtcbiAgICB9XG4gICAgdGhpcy5vbklucHV0KCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkcmFnc3RhcnQnLCBbJyRldmVudCddKVxuICBvbkRyYWdTdGFydChldmVudDogRHJhZ0V2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50Om1vdXNlZG93bicsIFsnJGV2ZW50J10pXG4gIG9uRG9jdW1lbnRNb3VzZURvd24oZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc2hvd1N1Z2dlc3Rpb24pIHJldHVybjtcbiAgICBpZiAodGhpcy5ob3N0UmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIE5vZGUpKSByZXR1cm47XG4gICAgdGhpcy5oaWRlU3VnZ2VzdGlvbigpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6c2VsZWN0aW9uY2hhbmdlJylcbiAgb25Eb2N1bWVudFNlbGVjdGlvbkNoYW5nZSgpOiB2b2lkIHtcbiAgICBpZiAoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCAhPT0gdGhpcy5lZGl0b3JSZWY/Lm5hdGl2ZUVsZW1lbnQpIHJldHVybjtcbiAgICB0aGlzLnJlZnJlc2hTdWdnZXN0aW9uKCk7XG4gIH1cblxuICAvLyAtLS0tIFN1Z2dlc3Rpb24gYWN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICBhZGRBc1RleHQoKTogdm9pZCB7XG4gICAgdGhpcy5oaWRlU3VnZ2VzdGlvbigpO1xuICAgIHRoaXMuZWRpdG9yUmVmLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgfVxuXG4gIGFkZEFzVmFyaWFibGUoKTogdm9pZCB7XG4gICAgY29uc3QgbmFtZSA9IHRoaXMubm9ybWFsaXplQ2FuZGlkYXRlKHRoaXMucGVuZGluZ1dvcmQgfHwgJycpO1xuICAgIGlmICghbmFtZSB8fCAhVkFSX05BTUVfUkVHRVgudGVzdChuYW1lKSkge1xuICAgICAgdGhpcy5oaWRlU3VnZ2VzdGlvbigpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodGhpcy5zZWxlY3Rpb25Nb2RlICYmIHRoaXMuc2VsZWN0aW9uUmFuZ2UpIHtcbiAgICAgIGlmICh0aGlzLnJhbmdlQ3Jvc3Nlc0NoaXAodGhpcy5zZWxlY3Rpb25SYW5nZSkpIHtcbiAgICAgICAgdGhpcy5oaWRlU3VnZ2VzdGlvbigpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLmluc2VydENoaXBSZXBsYWNpbmdSYW5nZShuYW1lLCB0aGlzLnNlbGVjdGlvblJhbmdlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pbnNlcnRDaGlwUmVwbGFjaW5nQ3VycmVudFdvcmQobmFtZSk7XG4gICAgfVxuICAgIHRoaXMuaGlkZVN1Z2dlc3Rpb24oKTtcbiAgICB0aGlzLmVtaXRWYWx1ZSgpO1xuICB9XG5cbiAgLy8gLS0tLSBWYWx1ZSBlbWlzc2lvbiAvIHZhbGlkYXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICBwcml2YXRlIGVtaXRWYWx1ZSgpOiB2b2lkIHtcbiAgICBjb25zdCBzdHIgPSB0aGlzLnNlcmlhbGl6ZSgpO1xuICAgIGlmIChzdHIgIT09IHRoaXMubGFzdEVtaXR0ZWQpIHtcbiAgICAgIHRoaXMubGFzdEVtaXR0ZWQgPSBzdHI7XG4gICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQoc3RyKTtcbiAgICB9XG4gICAgdGhpcy52YWxpZGF0ZShzdHIpO1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZShzdHI6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IGVycm9yID0gdGhpcy5maW5kVmFsaWRhdGlvbkVycm9yKHN0cik7XG4gICAgY29uc3QgdmFsaWQgPSBlcnJvciA9PT0gbnVsbDtcbiAgICBpZiAodGhpcy5sYXN0VmFsaWQgPT09IHZhbGlkICYmIHRoaXMuZXJyb3JNZXNzYWdlID09PSBlcnJvcikgcmV0dXJuO1xuICAgIHRoaXMubGFzdFZhbGlkID0gdmFsaWQ7XG4gICAgdGhpcy5lcnJvck1lc3NhZ2UgPSBlcnJvcjtcbiAgICB0aGlzLnZhbGlkaXR5Q2hhbmdlLmVtaXQoeyB2YWxpZCwgZXJyb3IgfSk7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwcml2YXRlIGZpbmRWYWxpZGF0aW9uRXJyb3Ioc3RyOiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgICBpZiAoIXN0cikgcmV0dXJuIG51bGw7XG4gICAgY29uc3QgYnJhY2VCb2R5ID0gL1xcJFxceyhbXn1dKilcXH0vZztcbiAgICBsZXQgbTogUmVnRXhwRXhlY0FycmF5IHwgbnVsbDtcbiAgICBicmFjZUJvZHkubGFzdEluZGV4ID0gMDtcbiAgICB3aGlsZSAoKG0gPSBicmFjZUJvZHkuZXhlYyhzdHIpKSAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgYm9keSA9IG1bMV07XG4gICAgICBpZiAoYm9keSAhPT0gYm9keS50cmltKCkgfHwgIVZBUl9OQU1FX1JFR0VYLnRlc3QoYm9keSkpIHtcbiAgICAgICAgcmV0dXJuIElOVkFMSURfVkFSX01FU1NBR0U7XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IG9wZW5Db3VudCA9IChzdHIubWF0Y2goL1xcJFxcey9nKSB8fCBbXSkubGVuZ3RoO1xuICAgIGNvbnN0IGNsb3NlZENvdW50ID0gKHN0ci5tYXRjaChicmFjZUJvZHkpIHx8IFtdKS5sZW5ndGg7XG4gICAgaWYgKG9wZW5Db3VudCA+IGNsb3NlZENvdW50KSByZXR1cm4gSU5WQUxJRF9WQVJfTUVTU0FHRTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8vIC0tLS0gU3VnZ2VzdGlvbiBzdGF0ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIHByaXZhdGUgcmVmcmVzaFN1Z2dlc3Rpb24oKTogdm9pZCB7XG4gICAgY29uc3Qgc2VsSW5mbyA9IHRoaXMuZ2V0U2VsZWN0ZWRJbmZvKCk7XG4gICAgaWYgKHNlbEluZm8pIHtcbiAgICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSB0aGlzLm5vcm1hbGl6ZUNhbmRpZGF0ZShzZWxJbmZvLnRleHQpO1xuICAgICAgdGhpcy5wZW5kaW5nV29yZCA9IG5vcm1hbGl6ZWQ7XG4gICAgICB0aGlzLnNlbGVjdGlvblJhbmdlID0gc2VsSW5mby5yYW5nZTtcbiAgICAgIHRoaXMuc2VsZWN0aW9uTW9kZSA9IHRydWU7XG4gICAgICB0aGlzLnNob3dTdWdnZXN0aW9uID0gdHJ1ZTtcbiAgICAgIHRoaXMuY2FuQWRkQXNWYXJpYWJsZSA9XG4gICAgICAgICEhbm9ybWFsaXplZCAmJiBWQVJfTkFNRV9SRUdFWC50ZXN0KG5vcm1hbGl6ZWQpICYmICF0aGlzLnJhbmdlQ3Jvc3Nlc0NoaXAoc2VsSW5mby5yYW5nZSk7XG4gICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5zZWxlY3Rpb25Nb2RlID0gZmFsc2U7XG4gICAgdGhpcy5zZWxlY3Rpb25SYW5nZSA9IG51bGw7XG4gICAgY29uc3Qgd29yZCA9IHRoaXMuZ2V0Q3VycmVudFdvcmQoKTtcbiAgICB0aGlzLnBlbmRpbmdXb3JkID0gd29yZDtcbiAgICB0aGlzLnNob3dTdWdnZXN0aW9uID0gISF3b3JkO1xuICAgIHRoaXMuY2FuQWRkQXNWYXJpYWJsZSA9ICEhd29yZCAmJiBWQVJfTkFNRV9SRUdFWC50ZXN0KHdvcmQpO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJpdmF0ZSBoaWRlU3VnZ2VzdGlvbigpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc2hvd1N1Z2dlc3Rpb24gJiYgIXRoaXMucGVuZGluZ1dvcmQpIHJldHVybjtcbiAgICB0aGlzLnNob3dTdWdnZXN0aW9uID0gZmFsc2U7XG4gICAgdGhpcy5wZW5kaW5nV29yZCA9ICcnO1xuICAgIHRoaXMuY2FuQWRkQXNWYXJpYWJsZSA9IGZhbHNlO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJpdmF0ZSBub3JtYWxpemVDYW5kaWRhdGUodGV4dDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBsZXQgdCA9IHRleHQudHJpbSgpO1xuICAgIGlmICh0LnN0YXJ0c1dpdGgoJyR7JykgJiYgdC5lbmRzV2l0aCgnfScpKSB7XG4gICAgICB0ID0gdC5zbGljZSgyLCAtMSkudHJpbSgpO1xuICAgIH1cbiAgICByZXR1cm4gdDtcbiAgfVxuXG4gIC8vIC0tLS0gRE9NIHNhbml0aXphdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIHByaXZhdGUgZmxhdHRlblN0cnVjdHVyZSgpOiB2b2lkIHtcbiAgICBjb25zdCBlZGl0b3IgPSB0aGlzLmVkaXRvclJlZi5uYXRpdmVFbGVtZW50O1xuICAgIGNvbnN0IHdyYXBwZXJzID0gQXJyYXkuZnJvbShlZGl0b3IucXVlcnlTZWxlY3RvckFsbCgnZGl2LCBwJykpIGFzIEhUTUxFbGVtZW50W107XG4gICAgY29uc3Qgc3RyYXlJbmxpbmVzID0gQXJyYXkuZnJvbShlZGl0b3IucXVlcnlTZWxlY3RvckFsbCgnc3BhbicpKS5maWx0ZXIoXG4gICAgICAocykgPT4gIXMuY2xhc3NMaXN0LmNvbnRhaW5zKCdjcWEtdmFyLWNoaXAnKSAmJiAhcy5jbG9zZXN0KCcuY3FhLXZhci1jaGlwJyksXG4gICAgKSBhcyBIVE1MRWxlbWVudFtdO1xuICAgIGZvciAoY29uc3QgZWwgb2YgWy4uLndyYXBwZXJzLCAuLi5zdHJheUlubGluZXNdKSB7XG4gICAgICBpZiAoZWwuY2xvc2VzdCgnLmNxYS12YXItY2hpcCcpKSBjb250aW51ZTtcbiAgICAgIHdoaWxlIChlbC5maXJzdENoaWxkKSBlbC5wYXJlbnROb2RlPy5pbnNlcnRCZWZvcmUoZWwuZmlyc3RDaGlsZCwgZWwpO1xuICAgICAgZWwucmVtb3ZlKCk7XG4gICAgfVxuICAgIGNvbnN0IGJycyA9IEFycmF5LmZyb20oZWRpdG9yLnF1ZXJ5U2VsZWN0b3JBbGwoJ2JyJykpIGFzIEhUTUxFbGVtZW50W107XG4gICAgZm9yIChjb25zdCBiciBvZiBicnMpIHtcbiAgICAgIGlmIChici5jbG9zZXN0KCcuY3FhLXZhci1jaGlwJykpIGNvbnRpbnVlO1xuICAgICAgYnIucGFyZW50Tm9kZT8ucmVwbGFjZUNoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCcgJyksIGJyKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNhbml0aXplQ2hpcHMoKTogdm9pZCB7XG4gICAgY29uc3QgZWRpdG9yID0gdGhpcy5lZGl0b3JSZWYubmF0aXZlRWxlbWVudDtcbiAgICBjb25zdCBjaGlwcyA9IEFycmF5LmZyb20oZWRpdG9yLnF1ZXJ5U2VsZWN0b3JBbGwoJy5jcWEtdmFyLWNoaXAnKSkgYXMgSFRNTEVsZW1lbnRbXTtcbiAgICBmb3IgKGNvbnN0IGNoaXAgb2YgY2hpcHMpIHtcbiAgICAgIGNvbnN0IG5hbWUgPSAoY2hpcC5nZXRBdHRyaWJ1dGUoJ2RhdGEtdmFyJykgfHwgJycpLnRyaW0oKTtcbiAgICAgIGlmICghbmFtZSB8fCAhVkFSX05BTUVfUkVHRVgudGVzdChuYW1lKSkge1xuICAgICAgICBjaGlwLnBhcmVudE5vZGU/LnJlcGxhY2VDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjaGlwLnRleHRDb250ZW50IHx8ICcnKSwgY2hpcCk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgY29uc3Qgc3RydWN0dXJlQnJva2VuID1cbiAgICAgICAgY2hpcC5nZXRBdHRyaWJ1dGUoJ2NvbnRlbnRlZGl0YWJsZScpICE9PSAnZmFsc2UnIHx8XG4gICAgICAgICFjaGlwLnF1ZXJ5U2VsZWN0b3IoJy5jcWEtdmFyLWNoaXBfX3JlbW92ZScpO1xuICAgICAgaWYgKHN0cnVjdHVyZUJyb2tlbikge1xuICAgICAgICBjaGlwLnBhcmVudE5vZGU/LnJlcGxhY2VDaGlsZCh0aGlzLmJ1aWxkQ2hpcChuYW1lKSwgY2hpcCk7XG4gICAgICB9XG4gICAgfVxuICAgIC8vIFJlbW92ZSBzdHJheSByZW1vdmUgaWNvbnMgbGVmdCBmcm9tIHBhcnRpYWwgdW5kby9yZWRvIHN0YXRlcy5cbiAgICBjb25zdCBvcnBoYW5zID0gQXJyYXkuZnJvbShlZGl0b3IucXVlcnlTZWxlY3RvckFsbCgnLmNxYS12YXItY2hpcF9fcmVtb3ZlJykpIGFzIEhUTUxFbGVtZW50W107XG4gICAgZm9yIChjb25zdCBvIG9mIG9ycGhhbnMpIHtcbiAgICAgIGlmICghby5jbG9zZXN0KCcuY3FhLXZhci1jaGlwJykpIG8ucmVtb3ZlKCk7XG4gICAgfVxuICB9XG5cbiAgLy8gLS0tLSBDaGlwaWZpY2F0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgcHJpdmF0ZSBhdXRvQ2hpcGlmeShmb3JjZSA9IGZhbHNlKTogdm9pZCB7XG4gICAgY29uc3QgZWRpdG9yID0gdGhpcy5lZGl0b3JSZWYubmF0aXZlRWxlbWVudDtcbiAgICBjb25zdCBjYXJldFJhbmdlID0gdGhpcy5nZXRTZWxlY3Rpb25SYW5nZSgpO1xuICAgIGxldCBjaGFuZ2VkID0gZmFsc2U7XG4gICAgbGV0IGxhc3RDaGlwOiBOb2RlIHwgbnVsbCA9IG51bGw7XG5cbiAgICBmb3IgKGNvbnN0IHRuIG9mIHRoaXMuY29sbGVjdERlc2NlbmRhbnRUZXh0Tm9kZXMoZWRpdG9yKSkge1xuICAgICAgaWYgKCF0bi5wYXJlbnROb2RlKSBjb250aW51ZTtcbiAgICAgIGNvbnN0IHRleHQgPSB0bi5ub2RlVmFsdWUgfHwgJyc7XG4gICAgICBWQVJfVE9LRU5fUkVHRVgubGFzdEluZGV4ID0gMDtcbiAgICAgIGlmICghVkFSX1RPS0VOX1JFR0VYLnRlc3QodGV4dCkpIGNvbnRpbnVlO1xuICAgICAgVkFSX1RPS0VOX1JFR0VYLmxhc3RJbmRleCA9IDA7XG5cbiAgICAgIGNvbnN0IGNhcmV0T2Zmc2V0ID1cbiAgICAgICAgIWZvcmNlICYmIGNhcmV0UmFuZ2UgJiYgY2FyZXRSYW5nZS5jb2xsYXBzZWQgJiYgY2FyZXRSYW5nZS5zdGFydENvbnRhaW5lciA9PT0gdG5cbiAgICAgICAgICA/IGNhcmV0UmFuZ2Uuc3RhcnRPZmZzZXRcbiAgICAgICAgICA6IC0xO1xuXG4gICAgICBjb25zdCBtYXRjaGVzOiBBcnJheTx7IHN0YXJ0OiBudW1iZXI7IGVuZDogbnVtYmVyOyBuYW1lOiBzdHJpbmcgfT4gPSBbXTtcbiAgICAgIGxldCBtOiBSZWdFeHBFeGVjQXJyYXkgfCBudWxsO1xuICAgICAgd2hpbGUgKChtID0gVkFSX1RPS0VOX1JFR0VYLmV4ZWModGV4dCkpICE9PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gbS5pbmRleDtcbiAgICAgICAgY29uc3QgZW5kID0gc3RhcnQgKyBtWzBdLmxlbmd0aDtcbiAgICAgICAgLy8gS2VlcCB0aGUgdG9rZW4gYXMgcGxhaW4gdGV4dCB3aGlsZSB0aGUgY2FyZXQgaXMgc3RyaWN0bHkgaW5zaWRlLlxuICAgICAgICBpZiAoY2FyZXRPZmZzZXQgPiBzdGFydCAmJiBjYXJldE9mZnNldCA8IGVuZCkgY29udGludWU7XG4gICAgICAgIG1hdGNoZXMucHVzaCh7IHN0YXJ0LCBlbmQsIG5hbWU6IG1bMV0gfSk7XG4gICAgICB9XG4gICAgICBpZiAoIW1hdGNoZXMubGVuZ3RoKSBjb250aW51ZTtcblxuICAgICAgY29uc3QgZnJhZyA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtcbiAgICAgIGxldCBjdXJzb3IgPSAwO1xuICAgICAgZm9yIChjb25zdCBtdCBvZiBtYXRjaGVzKSB7XG4gICAgICAgIGlmIChtdC5zdGFydCA+IGN1cnNvcikge1xuICAgICAgICAgIGZyYWcuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGV4dC5zbGljZShjdXJzb3IsIG10LnN0YXJ0KSkpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNoaXAgPSB0aGlzLmJ1aWxkQ2hpcChtdC5uYW1lKTtcbiAgICAgICAgZnJhZy5hcHBlbmRDaGlsZChjaGlwKTtcbiAgICAgICAgbGFzdENoaXAgPSBjaGlwO1xuICAgICAgICBjdXJzb3IgPSBtdC5lbmQ7XG4gICAgICB9XG4gICAgICBpZiAoY3Vyc29yIDwgdGV4dC5sZW5ndGgpIHtcbiAgICAgICAgZnJhZy5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0ZXh0LnNsaWNlKGN1cnNvcikpKTtcbiAgICAgIH1cbiAgICAgIHRuLnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKGZyYWcsIHRuKTtcbiAgICAgIGNoYW5nZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VkICYmIGxhc3RDaGlwKSB0aGlzLnBsYWNlQ2FyZXRBZnRlcihsYXN0Q2hpcCk7XG4gIH1cblxuICBwcml2YXRlIGNvbGxlY3REZXNjZW5kYW50VGV4dE5vZGVzKHJvb3Q6IEVsZW1lbnQpOiBUZXh0W10ge1xuICAgIGNvbnN0IG91dDogVGV4dFtdID0gW107XG4gICAgY29uc3Qgd2Fsa2VyID0gZG9jdW1lbnQuY3JlYXRlVHJlZVdhbGtlcihyb290LCBOb2RlRmlsdGVyLlNIT1dfVEVYVCwge1xuICAgICAgYWNjZXB0Tm9kZTogKG5vZGUpID0+IHtcbiAgICAgICAgbGV0IHA6IE5vZGUgfCBudWxsID0gbm9kZS5wYXJlbnROb2RlO1xuICAgICAgICB3aGlsZSAocCAmJiBwICE9PSByb290KSB7XG4gICAgICAgICAgaWYgKChwIGFzIEVsZW1lbnQpLmNsYXNzTGlzdD8uY29udGFpbnM/LignY3FhLXZhci1jaGlwJykpIHtcbiAgICAgICAgICAgIHJldHVybiBOb2RlRmlsdGVyLkZJTFRFUl9SRUpFQ1Q7XG4gICAgICAgICAgfVxuICAgICAgICAgIHAgPSBwLnBhcmVudE5vZGU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIE5vZGVGaWx0ZXIuRklMVEVSX0FDQ0VQVDtcbiAgICAgIH0sXG4gICAgfSk7XG4gICAgbGV0IG46IE5vZGUgfCBudWxsO1xuICAgIHdoaWxlICgobiA9IHdhbGtlci5uZXh0Tm9kZSgpKSkgb3V0LnB1c2gobiBhcyBUZXh0KTtcbiAgICByZXR1cm4gb3V0O1xuICB9XG5cbiAgLy8gLS0tLSBSZW5kZXIgLyBzZXJpYWxpemUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgcHJpdmF0ZSByZW5kZXIodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IGVkaXRvciA9IHRoaXMuZWRpdG9yUmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgZWRpdG9yLmlubmVySFRNTCA9ICcnO1xuICAgIGlmICghdmFsdWUpIHJldHVybjtcbiAgICBWQVJfVE9LRU5fUkVHRVgubGFzdEluZGV4ID0gMDtcbiAgICBsZXQgbGFzdEluZGV4ID0gMDtcbiAgICBsZXQgbTogUmVnRXhwRXhlY0FycmF5IHwgbnVsbDtcbiAgICB3aGlsZSAoKG0gPSBWQVJfVE9LRU5fUkVHRVguZXhlYyh2YWx1ZSkpICE9PSBudWxsKSB7XG4gICAgICBpZiAobS5pbmRleCA+IGxhc3RJbmRleCkge1xuICAgICAgICBlZGl0b3IuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodmFsdWUuc2xpY2UobGFzdEluZGV4LCBtLmluZGV4KSkpO1xuICAgICAgfVxuICAgICAgZWRpdG9yLmFwcGVuZENoaWxkKHRoaXMuYnVpbGRDaGlwKG1bMV0pKTtcbiAgICAgIGxhc3RJbmRleCA9IG0uaW5kZXggKyBtWzBdLmxlbmd0aDtcbiAgICB9XG4gICAgaWYgKGxhc3RJbmRleCA8IHZhbHVlLmxlbmd0aCkge1xuICAgICAgZWRpdG9yLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHZhbHVlLnNsaWNlKGxhc3RJbmRleCkpKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNlcmlhbGl6ZSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IGVkaXRvciA9IHRoaXMuZWRpdG9yUmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgbGV0IG91dCA9ICcnO1xuICAgIGNvbnN0IHdhbGsgPSAobm9kZTogTm9kZSk6IHZvaWQgPT4ge1xuICAgICAgaWYgKG5vZGUubm9kZVR5cGUgPT09IE5vZGUuVEVYVF9OT0RFKSB7XG4gICAgICAgIG91dCArPSAobm9kZS5ub2RlVmFsdWUgfHwgJycpLnJlcGxhY2UoL1xcdTAwYTAvZywgJyAnKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKG5vZGUubm9kZVR5cGUgIT09IE5vZGUuRUxFTUVOVF9OT0RFKSByZXR1cm47XG4gICAgICBjb25zdCBlbCA9IG5vZGUgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICBpZiAoZWwuY2xhc3NMaXN0LmNvbnRhaW5zKCdjcWEtdmFyLWNoaXAnKSkge1xuICAgICAgICBjb25zdCBuYW1lID0gZWwuZ2V0QXR0cmlidXRlKCdkYXRhLXZhcicpIHx8ICcnO1xuICAgICAgICBpZiAobmFtZSkgb3V0ICs9ICckeycgKyBuYW1lICsgJ30nO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoZWwudGFnTmFtZSA9PT0gJ0JSJykge1xuICAgICAgICBvdXQgKz0gJ1xcbic7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGlzQmxvY2sgPSBlbC50YWdOYW1lID09PSAnRElWJyB8fCBlbC50YWdOYW1lID09PSAnUCc7XG4gICAgICBpZiAoaXNCbG9jayAmJiBvdXQubGVuZ3RoID4gMCAmJiAhb3V0LmVuZHNXaXRoKCdcXG4nKSkgb3V0ICs9ICdcXG4nO1xuICAgICAgZWwuY2hpbGROb2Rlcy5mb3JFYWNoKHdhbGspO1xuICAgIH07XG4gICAgZWRpdG9yLmNoaWxkTm9kZXMuZm9yRWFjaCh3YWxrKTtcbiAgICByZXR1cm4gb3V0O1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZENoaXAobmFtZTogc3RyaW5nKTogSFRNTEVsZW1lbnQge1xuICAgIGNvbnN0IGNoaXAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG4gICAgY2hpcC5jbGFzc05hbWUgPSAnY3FhLXZhci1jaGlwJztcbiAgICBjaGlwLnNldEF0dHJpYnV0ZSgnY29udGVudGVkaXRhYmxlJywgJ2ZhbHNlJyk7XG4gICAgY2hpcC5zZXRBdHRyaWJ1dGUoJ2RhdGEtdmFyJywgbmFtZSk7XG4gICAgY29uc3QgbGFiZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG4gICAgbGFiZWwuY2xhc3NOYW1lID0gJ2NxYS12YXItY2hpcF9fbGFiZWwnO1xuICAgIGxhYmVsLnRleHRDb250ZW50ID0gJyR7JyArIG5hbWUgKyAnfSc7XG4gICAgY29uc3QgcmVtb3ZlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICAgIHJlbW92ZS5jbGFzc05hbWUgPSAnY3FhLXZhci1jaGlwX19yZW1vdmUnO1xuICAgIHJlbW92ZS50ZXh0Q29udGVudCA9ICfDlyc7XG4gICAgcmVtb3ZlLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIChlKSA9PiBlLnByZXZlbnREZWZhdWx0KCkpO1xuICAgIHJlbW92ZS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIChlKSA9PiB7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgY2hpcC5yZW1vdmUoKTtcbiAgICAgIHRoaXMub25JbnB1dCgpO1xuICAgIH0pO1xuICAgIGNoaXAuYXBwZW5kQ2hpbGQobGFiZWwpO1xuICAgIGNoaXAuYXBwZW5kQ2hpbGQocmVtb3ZlKTtcbiAgICByZXR1cm4gY2hpcDtcbiAgfVxuXG4gIC8vIC0tLS0gU2VsZWN0aW9uIC8gY2FyZXQgaGVscGVycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgcHJpdmF0ZSBnZXRTZWxlY3Rpb25SYW5nZSgpOiBSYW5nZSB8IG51bGwge1xuICAgIGNvbnN0IHNlbCA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcbiAgICBpZiAoIXNlbCB8fCBzZWwucmFuZ2VDb3VudCA9PT0gMCkgcmV0dXJuIG51bGw7XG4gICAgY29uc3QgcmFuZ2UgPSBzZWwuZ2V0UmFuZ2VBdCgwKTtcbiAgICBpZiAoIXRoaXMuZWRpdG9yUmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMocmFuZ2Uuc3RhcnRDb250YWluZXIpKSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4gcmFuZ2U7XG4gIH1cblxuICBwcml2YXRlIGdldFNlbGVjdGVkSW5mbygpOiB7IHRleHQ6IHN0cmluZzsgcmFuZ2U6IFJhbmdlIH0gfCBudWxsIHtcbiAgICBjb25zdCBzZWwgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG4gICAgaWYgKCFzZWwgfHwgc2VsLnJhbmdlQ291bnQgPT09IDApIHJldHVybiBudWxsO1xuICAgIGNvbnN0IHJhbmdlID0gc2VsLmdldFJhbmdlQXQoMCk7XG4gICAgaWYgKHJhbmdlLmNvbGxhcHNlZCkgcmV0dXJuIG51bGw7XG4gICAgY29uc3QgZWRpdG9yID0gdGhpcy5lZGl0b3JSZWYubmF0aXZlRWxlbWVudDtcbiAgICBpZiAoIWVkaXRvci5jb250YWlucyhyYW5nZS5zdGFydENvbnRhaW5lcikgfHwgIWVkaXRvci5jb250YWlucyhyYW5nZS5lbmRDb250YWluZXIpKSByZXR1cm4gbnVsbDtcbiAgICBjb25zdCB0ZXh0ID0gcmFuZ2UudG9TdHJpbmcoKTtcbiAgICBpZiAoIXRleHQpIHJldHVybiBudWxsO1xuICAgIHJldHVybiB7IHRleHQsIHJhbmdlOiByYW5nZS5jbG9uZVJhbmdlKCkgfTtcbiAgfVxuXG4gIHByaXZhdGUgcmFuZ2VDcm9zc2VzQ2hpcChyYW5nZTogUmFuZ2UpOiBib29sZWFuIHtcbiAgICBjb25zdCBjb250ZW50cyA9IHJhbmdlLmNsb25lQ29udGVudHMoKTtcbiAgICByZXR1cm4gISFjb250ZW50cy5xdWVyeVNlbGVjdG9yPy4oJy5jcWEtdmFyLWNoaXAnKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Tm9kZUJlZm9yZUNhcmV0KCk6IE5vZGUgfCBudWxsIHtcbiAgICBjb25zdCByYW5nZSA9IHRoaXMuZ2V0U2VsZWN0aW9uUmFuZ2UoKTtcbiAgICBpZiAoIXJhbmdlIHx8ICFyYW5nZS5jb2xsYXBzZWQpIHJldHVybiBudWxsO1xuICAgIGNvbnN0IHsgc3RhcnRDb250YWluZXIsIHN0YXJ0T2Zmc2V0IH0gPSByYW5nZTtcbiAgICBpZiAoc3RhcnRDb250YWluZXIubm9kZVR5cGUgPT09IE5vZGUuVEVYVF9OT0RFKSB7XG4gICAgICBpZiAoc3RhcnRPZmZzZXQgPiAwKSByZXR1cm4gbnVsbDtcbiAgICAgIHJldHVybiBzdGFydENvbnRhaW5lci5wcmV2aW91c1NpYmxpbmc7XG4gICAgfVxuICAgIHJldHVybiBzdGFydENvbnRhaW5lci5jaGlsZE5vZGVzW3N0YXJ0T2Zmc2V0IC0gMV0gfHwgbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q3VycmVudFdvcmQoKTogc3RyaW5nIHtcbiAgICBjb25zdCByYW5nZSA9IHRoaXMuZ2V0U2VsZWN0aW9uUmFuZ2UoKTtcbiAgICBpZiAoIXJhbmdlIHx8ICFyYW5nZS5jb2xsYXBzZWQpIHJldHVybiAnJztcbiAgICBsZXQgbm9kZTogTm9kZSA9IHJhbmdlLnN0YXJ0Q29udGFpbmVyO1xuICAgIGxldCBvZmZzZXQgPSByYW5nZS5zdGFydE9mZnNldDtcbiAgICBpZiAobm9kZS5ub2RlVHlwZSAhPT0gTm9kZS5URVhUX05PREUpIHtcbiAgICAgIGNvbnN0IHByZXYgPSBub2RlLmNoaWxkTm9kZXNbb2Zmc2V0IC0gMV07XG4gICAgICBpZiAoIXByZXYgfHwgcHJldi5ub2RlVHlwZSAhPT0gTm9kZS5URVhUX05PREUpIHJldHVybiAnJztcbiAgICAgIG5vZGUgPSBwcmV2O1xuICAgICAgb2Zmc2V0ID0gKHByZXYubm9kZVZhbHVlIHx8ICcnKS5sZW5ndGg7XG4gICAgfVxuICAgIGNvbnN0IHRleHQgPSAobm9kZSBhcyBUZXh0KS5ub2RlVmFsdWUgfHwgJyc7XG4gICAgY29uc3QgYnJhY2VPcGVuID0gdGV4dC5sYXN0SW5kZXhPZignJHsnLCBvZmZzZXQgLSAxKTtcbiAgICBpZiAoYnJhY2VPcGVuICE9PSAtMSkge1xuICAgICAgY29uc3QgY2xvc2VJZHggPSB0ZXh0LmluZGV4T2YoJ30nLCBicmFjZU9wZW4gKyAyKTtcbiAgICAgIGNvbnN0IHRva2VuQ2xvc2VkQmVmb3JlQ2FyZXQgPSBjbG9zZUlkeCAhPT0gLTEgJiYgY2xvc2VJZHggPCBvZmZzZXQ7XG4gICAgICBpZiAoIXRva2VuQ2xvc2VkQmVmb3JlQ2FyZXQpIHtcbiAgICAgICAgY29uc3Qgc3RhcnQgPSBicmFjZU9wZW4gKyAyO1xuICAgICAgICBjb25zdCBlbmQgPSBjbG9zZUlkeCA9PT0gLTEgPyB0ZXh0Lmxlbmd0aCA6IGNsb3NlSWR4O1xuICAgICAgICByZXR1cm4gdGV4dC5zbGljZShzdGFydCwgZW5kKTtcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgbWF0Y2ggPSB0ZXh0LnNsaWNlKDAsIG9mZnNldCkubWF0Y2goVkFSX1BBVEhfVEFJTF9SRUdFWCk7XG4gICAgcmV0dXJuIG1hdGNoID8gbWF0Y2hbMV0gOiAnJztcbiAgfVxuXG4gIC8vIC0tLS0gQ2hpcCBpbnNlcnRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIHByaXZhdGUgaW5zZXJ0Q2hpcFJlcGxhY2luZ1JhbmdlKG5hbWU6IHN0cmluZywgcmFuZ2U6IFJhbmdlKTogdm9pZCB7XG4gICAgY29uc3QgY2hpcCA9IHRoaXMuYnVpbGRDaGlwKG5hbWUpO1xuICAgIHJhbmdlLmRlbGV0ZUNvbnRlbnRzKCk7XG4gICAgcmFuZ2UuaW5zZXJ0Tm9kZShjaGlwKTtcbiAgICB0aGlzLnN0cmlwQnJhY2VzQXJvdW5kKGNoaXApO1xuICAgIHRoaXMucGxhY2VDYXJldEFmdGVyKGNoaXApO1xuICB9XG5cbiAgcHJpdmF0ZSBpbnNlcnRDaGlwUmVwbGFjaW5nQ3VycmVudFdvcmQobmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgcmFuZ2UgPSB0aGlzLmdldFNlbGVjdGlvblJhbmdlKCk7XG4gICAgY29uc3QgY2hpcCA9IHRoaXMuYnVpbGRDaGlwKG5hbWUpO1xuICAgIGlmICghcmFuZ2UpIHtcbiAgICAgIHRoaXMuZWRpdG9yUmVmLm5hdGl2ZUVsZW1lbnQuYXBwZW5kQ2hpbGQoY2hpcCk7XG4gICAgICB0aGlzLnBsYWNlQ2FyZXRBZnRlcihjaGlwKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbGV0IG5vZGU6IE5vZGUgPSByYW5nZS5zdGFydENvbnRhaW5lcjtcbiAgICBsZXQgb2Zmc2V0ID0gcmFuZ2Uuc3RhcnRPZmZzZXQ7XG4gICAgLy8gQ2FyZXQgbWF5IHNpdCBvbiB0aGUgZWRpdG9yIGVsZW1lbnQgKGUuZy4gcmlnaHQgYWZ0ZXIgYSBwYXN0ZWQgdGV4dCBub2RlKS5cbiAgICAvLyBXYWxrIGludG8gdGhlIHByZXZpb3VzIHRleHQgbm9kZSBzbyB3ZSByZXBsYWNlIHRoZSB0cmFpbGluZyB3b3JkIGluc3RlYWRcbiAgICAvLyBvZiBqdXN0IGluc2VydGluZyB0aGUgY2hpcCBhbG9uZ3NpZGUgaXQuXG4gICAgaWYgKG5vZGUubm9kZVR5cGUgIT09IE5vZGUuVEVYVF9OT0RFKSB7XG4gICAgICBjb25zdCBwcmV2ID0gbm9kZS5jaGlsZE5vZGVzW29mZnNldCAtIDFdO1xuICAgICAgaWYgKHByZXYgJiYgcHJldi5ub2RlVHlwZSA9PT0gTm9kZS5URVhUX05PREUpIHtcbiAgICAgICAgbm9kZSA9IHByZXY7XG4gICAgICAgIG9mZnNldCA9IChwcmV2Lm5vZGVWYWx1ZSB8fCAnJykubGVuZ3RoO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmFuZ2UuaW5zZXJ0Tm9kZShjaGlwKTtcbiAgICAgICAgdGhpcy5wbGFjZUNhcmV0QWZ0ZXIoY2hpcCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgdGV4dCA9IG5vZGUubm9kZVZhbHVlIHx8ICcnO1xuICAgIGNvbnN0IGJlZm9yZSA9IHRleHQuc2xpY2UoMCwgb2Zmc2V0KTtcbiAgICBjb25zdCBhZnRlciA9IHRleHQuc2xpY2Uob2Zmc2V0KTtcbiAgICBjb25zdCB3b3JkTWF0Y2ggPSBiZWZvcmUubWF0Y2goVkFSX1BBVEhfVEFJTF9SRUdFWCk7XG4gICAgbGV0IGJlZm9yZUtlcHQgPSB3b3JkTWF0Y2ggPyBiZWZvcmUuc2xpY2UoMCwgYmVmb3JlLmxlbmd0aCAtIHdvcmRNYXRjaFsxXS5sZW5ndGgpIDogYmVmb3JlO1xuICAgIGxldCBhZnRlcktlcHQgPSBhZnRlcjtcbiAgICBpZiAoYmVmb3JlS2VwdC5lbmRzV2l0aCgnJHsnKSAmJiBhZnRlcktlcHQuc3RhcnRzV2l0aCgnfScpKSB7XG4gICAgICBiZWZvcmVLZXB0ID0gYmVmb3JlS2VwdC5zbGljZSgwLCAtMik7XG4gICAgICBhZnRlcktlcHQgPSBhZnRlcktlcHQuc2xpY2UoMSk7XG4gICAgfSBlbHNlIGlmIChiZWZvcmVLZXB0LmVuZHNXaXRoKCckeycpKSB7XG4gICAgICBiZWZvcmVLZXB0ID0gYmVmb3JlS2VwdC5zbGljZSgwLCAtMik7XG4gICAgfVxuICAgIGNvbnN0IGZyYWcgPSBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7XG4gICAgaWYgKGJlZm9yZUtlcHQpIGZyYWcuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoYmVmb3JlS2VwdCkpO1xuICAgIGZyYWcuYXBwZW5kQ2hpbGQoY2hpcCk7XG4gICAgaWYgKGFmdGVyS2VwdCkgZnJhZy5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShhZnRlcktlcHQpKTtcbiAgICBub2RlLnBhcmVudE5vZGUhLnJlcGxhY2VDaGlsZChmcmFnLCBub2RlKTtcbiAgICB0aGlzLnBsYWNlQ2FyZXRBZnRlcihjaGlwKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RyaXBCcmFjZXNBcm91bmQoY2hpcDogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICBjb25zdCBwcmV2ID0gY2hpcC5wcmV2aW91c1NpYmxpbmc7XG4gICAgY29uc3QgbmV4dCA9IGNoaXAubmV4dFNpYmxpbmc7XG4gICAgaWYgKHByZXYgJiYgcHJldi5ub2RlVHlwZSA9PT0gTm9kZS5URVhUX05PREUpIHtcbiAgICAgIGNvbnN0IHQgPSBwcmV2Lm5vZGVWYWx1ZSB8fCAnJztcbiAgICAgIGlmICh0LmVuZHNXaXRoKCckeycpKSBwcmV2Lm5vZGVWYWx1ZSA9IHQuc2xpY2UoMCwgLTIpO1xuICAgIH1cbiAgICBpZiAobmV4dCAmJiBuZXh0Lm5vZGVUeXBlID09PSBOb2RlLlRFWFRfTk9ERSkge1xuICAgICAgY29uc3QgdCA9IG5leHQubm9kZVZhbHVlIHx8ICcnO1xuICAgICAgaWYgKHQuc3RhcnRzV2l0aCgnfScpKSBuZXh0Lm5vZGVWYWx1ZSA9IHQuc2xpY2UoMSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpbnNlcnRQbGFpblRleHRBdENhcmV0KHRleHQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IHJhbmdlID0gdGhpcy5nZXRTZWxlY3Rpb25SYW5nZSgpO1xuICAgIGlmICghcmFuZ2UpIHtcbiAgICAgIHRoaXMuZWRpdG9yUmVmLm5hdGl2ZUVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGV4dCkpO1xuICAgICAgdGhpcy5wbGFjZUNhcmV0QXRFbmQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgcmFuZ2UuZGVsZXRlQ29udGVudHMoKTtcbiAgICBjb25zdCBub2RlID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGV4dCk7XG4gICAgcmFuZ2UuaW5zZXJ0Tm9kZShub2RlKTtcbiAgICB0aGlzLnBsYWNlQ2FyZXRBZnRlcihub2RlKTtcbiAgfVxuXG4gIHByaXZhdGUgcGxhY2VDYXJldEFmdGVyKG5vZGU6IE5vZGUpOiB2b2lkIHtcbiAgICBjb25zdCBzZWwgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG4gICAgaWYgKCFzZWwpIHJldHVybjtcbiAgICBjb25zdCByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7XG4gICAgcmFuZ2Uuc2V0U3RhcnRBZnRlcihub2RlKTtcbiAgICByYW5nZS5jb2xsYXBzZSh0cnVlKTtcbiAgICBzZWwucmVtb3ZlQWxsUmFuZ2VzKCk7XG4gICAgc2VsLmFkZFJhbmdlKHJhbmdlKTtcbiAgfVxuXG4gIHByaXZhdGUgcGxhY2VDYXJldEF0RW5kKCk6IHZvaWQge1xuICAgIGNvbnN0IHNlbCA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcbiAgICBpZiAoIXNlbCkgcmV0dXJuO1xuICAgIGNvbnN0IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTtcbiAgICByYW5nZS5zZWxlY3ROb2RlQ29udGVudHModGhpcy5lZGl0b3JSZWYubmF0aXZlRWxlbWVudCk7XG4gICAgcmFuZ2UuY29sbGFwc2UoZmFsc2UpO1xuICAgIHNlbC5yZW1vdmVBbGxSYW5nZXMoKTtcbiAgICBzZWwuYWRkUmFuZ2UocmFuZ2UpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiY3FhLW1peGVkLXZhci13cmFwcGVyXCI+XG4gIDxkaXZcbiAgICAjZWRpdG9yXG4gICAgY2xhc3M9XCJjcWEtbWl4ZWQtdmFyLWVkaXRvclwiXG4gICAgcm9sZT1cInRleHRib3hcIlxuICAgIHNwZWxsY2hlY2s9XCJmYWxzZVwiXG4gICAgW2F0dHIuY29udGVudGVkaXRhYmxlXT1cIiFkaXNhYmxlZFwiXG4gICAgW2F0dHIuZGF0YS1wbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgW2F0dHIuYXJpYS1pbnZhbGlkXT1cImVycm9yTWVzc2FnZSA/ICd0cnVlJyA6IG51bGxcIlxuICAgIFtjbGFzcy5jcWEtbWl4ZWQtdmFyLWVkaXRvci0taW52YWxpZF09XCJlcnJvck1lc3NhZ2VcIlxuICAgIChpbnB1dCk9XCJvbklucHV0KClcIlxuICAgIChrZXlkb3duKT1cIm9uS2V5RG93bigkZXZlbnQpXCJcbiAgICAoZm9jdXMpPVwib25FZGl0b3JGb2N1cygpXCJcbiAgICAocGFzdGUpPVwib25QYXN0ZSgkZXZlbnQpXCJcbiAgICAoZHJvcCk9XCJvbkRyb3AoJGV2ZW50KVwiXG4gICAgKGJsdXIpPVwib25FZGl0b3JCbHVyKClcIj5cbiAgPC9kaXY+XG4gIDxwICpuZ0lmPVwiZXJyb3JNZXNzYWdlXCIgY2xhc3M9XCJjcWEtbWl4ZWQtdmFyLWVycm9yXCIgcm9sZT1cImFsZXJ0XCI+e3sgZXJyb3JNZXNzYWdlIH19PC9wPlxuXG4gIDxkaXZcbiAgICAqbmdJZj1cInNob3dTdWdnZXN0aW9uXCJcbiAgICBjbGFzcz1cImNxYS1taXhlZC12YXItc3VnZ2VzdFwiXG4gICAgKG1vdXNlZG93bik9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKVwiPlxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiY3FhLW1peGVkLXZhci1zdWdnZXN0X19pdGVtXCIgKGNsaWNrKT1cImFkZEFzVGV4dCgpXCI+XG4gICAgICBBZGQgYXMgVGV4dCA8c3BhbiAqbmdJZj1cInBlbmRpbmdXb3JkXCIgY2xhc3M9XCJjcWEtbWl4ZWQtdmFyLXN1Z2dlc3RfX2hpbnRcIj5cInt7IHBlbmRpbmdXb3JkIH19XCI8L3NwYW4+XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvbiAqbmdJZj1cImNhbkFkZEFzVmFyaWFibGVcIiB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIGNsYXNzPVwiY3FhLW1peGVkLXZhci1zdWdnZXN0X19pdGVtIGNxYS1taXhlZC12YXItc3VnZ2VzdF9faXRlbS0tcHJpbWFyeVwiXG4gICAgICAoY2xpY2spPVwiYWRkQXNWYXJpYWJsZSgpXCI+XG4gICAgICBBZGQgYXMgbG9jYWwgdmFyaWFibGUgPHNwYW4gY2xhc3M9XCJjcWEtbWl4ZWQtdmFyLXN1Z2dlc3RfX2hpbnRcIj4ke3sgJ3snIH19e3sgcGVuZGluZ1dvcmQgfX17eyAnfScgfX08L3NwYW4+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -3,15 +3,13 @@ import * as i0 from "@angular/core";
3
3
  import * as i1 from "../custom-input/custom-input.component";
4
4
  import * as i2 from "../dropdown-button/dropdown-button.component";
5
5
  import * as i3 from "../permission-toggle/permission-toggle.component";
6
- import * as i4 from "./global-variable-tags-input.component";
7
- import * as i5 from "../custom-textarea/custom-textarea.component";
8
- import * as i6 from "@angular/common";
6
+ import * as i4 from "../custom-textarea/custom-textarea.component";
7
+ import * as i5 from "@angular/common";
9
8
  export class NewGlobalVariableDialogComponent {
10
9
  constructor(cdr) {
11
10
  this.cdr = cdr;
12
11
  this.mode = 'create';
13
12
  this.existingNames = [];
14
- this.availableTags = [];
15
13
  this.typeOptions = ['String', 'Number', 'Boolean', 'Password'];
16
14
  this.typeDropdownOptions = [
17
15
  { label: 'String', value: 'String' },
@@ -28,7 +26,6 @@ export class NewGlobalVariableDialogComponent {
28
26
  this.value = '';
29
27
  this.readWriteMode = 'RW';
30
28
  this.description = '';
31
- this.tags = [];
32
29
  this.passwordTouched = false;
33
30
  this.nameError = null;
34
31
  this.valueError = null;
@@ -40,7 +37,6 @@ export class NewGlobalVariableDialogComponent {
40
37
  this.value = this.initialValue.value ?? '';
41
38
  this.readWriteMode = this.initialValue.readWriteMode ?? 'RW';
42
39
  this.description = this.initialValue.description ?? '';
43
- this.tags = Array.isArray(this.initialValue.tags) ? [...this.initialValue.tags] : [];
44
40
  }
45
41
  if (this.type === 'Boolean' && this.value !== 'true' && this.value !== 'false') {
46
42
  this.value = 'false';
@@ -136,10 +132,6 @@ export class NewGlobalVariableDialogComponent {
136
132
  this.description = next;
137
133
  this.cdr.markForCheck();
138
134
  }
139
- onTagsChange(next) {
140
- this.tags = Array.isArray(next) ? [...next] : [];
141
- this.cdr.markForCheck();
142
- }
143
135
  /**
144
136
  * Called by the host (via DialogRef.getComponentInstance()) when the primary
145
137
  * button is clicked. Returns the captured value when valid, or null when the
@@ -173,7 +165,6 @@ export class NewGlobalVariableDialogComponent {
173
165
  value: omitPasswordValue ? null : this.serializeValue(),
174
166
  readWriteMode: this.readWriteMode,
175
167
  description: this.description ? this.description : null,
176
- tags: [...this.tags],
177
168
  };
178
169
  }
179
170
  serializeValue() {
@@ -199,17 +190,15 @@ export class NewGlobalVariableDialogComponent {
199
190
  }
200
191
  }
201
192
  NewGlobalVariableDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: NewGlobalVariableDialogComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
202
- NewGlobalVariableDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: NewGlobalVariableDialogComponent, selector: "cqa-new-global-variable-dialog", inputs: { mode: "mode", initialValue: "initialValue", existingNames: "existingNames", availableTags: "availableTags" }, host: { styleAttribute: "display:block;width:100%;", classAttribute: "cqa-ui-root" }, ngImport: i0, template: "<div class=\"cqa-flex cqa-flex-col cqa-gap-4 cqa-w-full\">\n\n <!-- Name -->\n <div class=\"cqa-flex cqa-flex-col\">\n <cqa-custom-input\n label=\"Name\"\n placeholder=\"e.g. ihg_api_key\"\n type=\"text\"\n [value]=\"name\"\n [required]=\"true\"\n [fullWidth]=\"true\"\n [errors]=\"nameErrorsArray\"\n inputInlineStyle=\"font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', monospace;\"\n (valueChange)=\"onNameChange($event)\">\n </cqa-custom-input>\n <span *ngIf=\"!nameError\"\n class=\"cqa-text-xs cqa-text-gray-500 cqa-mt-1\">\n Names must be unique across the entire workspace (primary key \u2014 no duplicates).\n </span>\n </div>\n\n <!-- Type + Permission row -->\n <div class=\"cqa-grid cqa-grid-cols-2 cqa-gap-4\">\n <div class=\"cqa-flex cqa-flex-col\">\n <label class=\"cqa-text-sm cqa-mb-1.5 cqa-font-medium cqa-text-gray-700\">Type</label>\n <cqa-dropdown-button\n [options]=\"typeDropdownOptions\"\n [selectedValue]=\"type\"\n (selectionChange)=\"onTypeChange($event)\">\n </cqa-dropdown-button>\n </div>\n <div class=\"cqa-flex cqa-flex-col\">\n <label class=\"cqa-text-sm cqa-mb-1.5 cqa-font-medium cqa-text-gray-700\">Permission</label>\n <div class=\"cqa-pt-0.5\">\n <cqa-permission-toggle\n [value]=\"readWriteMode\"\n (valueChange)=\"onPermissionChange($event)\">\n </cqa-permission-toggle>\n </div>\n </div>\n </div>\n\n <!-- Value -->\n <div class=\"cqa-flex cqa-flex-col\">\n <ng-container *ngIf=\"isBoolean; else nonBooleanValue\">\n <label class=\"cqa-text-sm cqa-mb-1.5 cqa-font-medium cqa-text-gray-700\">Value</label>\n <cqa-dropdown-button\n [options]=\"booleanDropdownOptions\"\n [selectedValue]=\"value\"\n (selectionChange)=\"onBooleanValueChange($event)\">\n </cqa-dropdown-button>\n </ng-container>\n <ng-template #nonBooleanValue>\n <cqa-custom-input\n label=\"Value\"\n [type]=\"isPassword ? 'password' : 'text'\"\n [value]=\"value\"\n [placeholder]=\"valuePlaceholder\"\n [fullWidth]=\"true\"\n [errors]=\"valueErrorsArray\"\n inputInlineStyle=\"font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', monospace;\"\n (valueChange)=\"onValueChange($event)\">\n </cqa-custom-input>\n </ng-template>\n </div>\n\n <!-- Tags (optional) \u2014 between Value and Description per design -->\n <div class=\"cqa-flex cqa-flex-col\">\n <label class=\"cqa-text-sm cqa-mb-1.5 cqa-font-medium cqa-text-gray-700\">\n Tags <span class=\"cqa-text-xs cqa-font-normal cqa-text-gray-500\">(optional \u2014 for filtering &amp; grouping)</span>\n </label>\n <lib-global-variable-tags-input\n [tags]=\"tags\"\n [availableTags]=\"availableTags\"\n (tagsChange)=\"onTagsChange($event)\">\n </lib-global-variable-tags-input>\n </div>\n\n <!-- Description -->\n <div class=\"cqa-flex cqa-flex-col\">\n <cqa-custom-textarea\n label=\"Description\"\n placeholder=\"What is this variable used for?\"\n [value]=\"description\"\n [rows]=\"2\"\n [fullWidth]=\"true\"\n (valueChange)=\"onDescriptionChange($event)\">\n </cqa-custom-textarea>\n </div>\n\n</div>\n", components: [{ type: i1.CustomInputComponent, selector: "cqa-custom-input", inputs: ["inputId", "label", "type", "placeholder", "value", "disabled", "errors", "required", "ariaLabel", "size", "fullWidth", "maxLength", "showCharCount", "inputInlineStyle", "labelInlineStyle"], outputs: ["valueChange", "blurred", "focused", "enterPressed"] }, { type: i2.DropdownButtonComponent, selector: "cqa-dropdown-button", inputs: ["label", "options", "selectedValue", "disabled", "placeholder"], outputs: ["selectionChange", "opened", "closed"] }, { type: i3.PermissionToggleComponent, selector: "cqa-permission-toggle", inputs: ["value", "disabled", "roTooltip", "rwTooltip"], outputs: ["valueChange"] }, { type: i4.GlobalVariableTagsInputComponent, selector: "lib-global-variable-tags-input", inputs: ["tags", "availableTags"], outputs: ["tagsChange"] }, { type: i5.CustomTextareaComponent, selector: "cqa-custom-textarea", inputs: ["label", "placeholder", "value", "enableMarkdown", "disabled", "errors", "required", "ariaLabel", "size", "fullWidth", "maxLength", "showCharCount", "rows", "cols", "resize", "textareaInlineStyle", "labelInlineStyle"], outputs: ["valueChange", "blurred", "focused"] }], directives: [{ type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
193
+ NewGlobalVariableDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: NewGlobalVariableDialogComponent, selector: "cqa-new-global-variable-dialog", inputs: { mode: "mode", initialValue: "initialValue", existingNames: "existingNames" }, host: { styleAttribute: "display:block;width:100%;", classAttribute: "cqa-ui-root" }, ngImport: i0, template: "<div class=\"cqa-flex cqa-flex-col cqa-gap-4 cqa-w-full\">\n\n <!-- Name -->\n <div class=\"cqa-flex cqa-flex-col\">\n <cqa-custom-input\n label=\"Name\"\n placeholder=\"e.g. ihg_api_key\"\n type=\"text\"\n [value]=\"name\"\n [required]=\"true\"\n [fullWidth]=\"true\"\n [errors]=\"nameErrorsArray\"\n inputInlineStyle=\"font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', monospace;\"\n (valueChange)=\"onNameChange($event)\">\n </cqa-custom-input>\n <span *ngIf=\"!nameError\"\n class=\"cqa-text-xs cqa-text-gray-500 cqa-mt-1\">\n Names must be unique across the entire workspace (primary key \u2014 no duplicates).\n </span>\n </div>\n\n <!-- Type + Permission row -->\n <div class=\"cqa-grid cqa-grid-cols-2 cqa-gap-4\">\n <div class=\"cqa-flex cqa-flex-col\">\n <label class=\"cqa-text-sm cqa-mb-1.5 cqa-font-medium cqa-text-gray-700\">Type</label>\n <cqa-dropdown-button\n [options]=\"typeDropdownOptions\"\n [selectedValue]=\"type\"\n (selectionChange)=\"onTypeChange($event)\">\n </cqa-dropdown-button>\n </div>\n <div class=\"cqa-flex cqa-flex-col\">\n <label class=\"cqa-text-sm cqa-mb-1.5 cqa-font-medium cqa-text-gray-700\">Permission</label>\n <div class=\"cqa-pt-0.5\">\n <cqa-permission-toggle\n [value]=\"readWriteMode\"\n (valueChange)=\"onPermissionChange($event)\">\n </cqa-permission-toggle>\n </div>\n </div>\n </div>\n\n <!-- Value -->\n <div class=\"cqa-flex cqa-flex-col\">\n <ng-container *ngIf=\"isBoolean; else nonBooleanValue\">\n <label class=\"cqa-text-sm cqa-mb-1.5 cqa-font-medium cqa-text-gray-700\">Value</label>\n <cqa-dropdown-button\n [options]=\"booleanDropdownOptions\"\n [selectedValue]=\"value\"\n (selectionChange)=\"onBooleanValueChange($event)\">\n </cqa-dropdown-button>\n </ng-container>\n <ng-template #nonBooleanValue>\n <cqa-custom-input\n label=\"Value\"\n [type]=\"isPassword ? 'password' : 'text'\"\n [value]=\"value\"\n [placeholder]=\"valuePlaceholder\"\n [fullWidth]=\"true\"\n [errors]=\"valueErrorsArray\"\n inputInlineStyle=\"font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', monospace;\"\n (valueChange)=\"onValueChange($event)\">\n </cqa-custom-input>\n </ng-template>\n </div>\n\n <!-- Description -->\n <div class=\"cqa-flex cqa-flex-col\">\n <cqa-custom-textarea\n label=\"Description\"\n placeholder=\"What is this variable used for?\"\n [value]=\"description\"\n [rows]=\"2\"\n [fullWidth]=\"true\"\n (valueChange)=\"onDescriptionChange($event)\">\n </cqa-custom-textarea>\n </div>\n\n</div>\n", components: [{ type: i1.CustomInputComponent, selector: "cqa-custom-input", inputs: ["inputId", "label", "type", "placeholder", "value", "disabled", "errors", "required", "ariaLabel", "size", "fullWidth", "maxLength", "showCharCount", "inputInlineStyle", "labelInlineStyle"], outputs: ["valueChange", "blurred", "focused", "enterPressed"] }, { type: i2.DropdownButtonComponent, selector: "cqa-dropdown-button", inputs: ["label", "options", "selectedValue", "disabled", "placeholder"], outputs: ["selectionChange", "opened", "closed"] }, { type: i3.PermissionToggleComponent, selector: "cqa-permission-toggle", inputs: ["value", "disabled", "roTooltip", "rwTooltip"], outputs: ["valueChange"] }, { type: i4.CustomTextareaComponent, selector: "cqa-custom-textarea", inputs: ["label", "placeholder", "value", "enableMarkdown", "disabled", "errors", "required", "ariaLabel", "size", "fullWidth", "maxLength", "showCharCount", "rows", "cols", "resize", "textareaInlineStyle", "labelInlineStyle"], outputs: ["valueChange", "blurred", "focused"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
203
194
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: NewGlobalVariableDialogComponent, decorators: [{
204
195
  type: Component,
205
- args: [{ selector: 'cqa-new-global-variable-dialog', changeDetection: ChangeDetectionStrategy.OnPush, host: { class: 'cqa-ui-root', style: 'display:block;width:100%;' }, template: "<div class=\"cqa-flex cqa-flex-col cqa-gap-4 cqa-w-full\">\n\n <!-- Name -->\n <div class=\"cqa-flex cqa-flex-col\">\n <cqa-custom-input\n label=\"Name\"\n placeholder=\"e.g. ihg_api_key\"\n type=\"text\"\n [value]=\"name\"\n [required]=\"true\"\n [fullWidth]=\"true\"\n [errors]=\"nameErrorsArray\"\n inputInlineStyle=\"font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', monospace;\"\n (valueChange)=\"onNameChange($event)\">\n </cqa-custom-input>\n <span *ngIf=\"!nameError\"\n class=\"cqa-text-xs cqa-text-gray-500 cqa-mt-1\">\n Names must be unique across the entire workspace (primary key \u2014 no duplicates).\n </span>\n </div>\n\n <!-- Type + Permission row -->\n <div class=\"cqa-grid cqa-grid-cols-2 cqa-gap-4\">\n <div class=\"cqa-flex cqa-flex-col\">\n <label class=\"cqa-text-sm cqa-mb-1.5 cqa-font-medium cqa-text-gray-700\">Type</label>\n <cqa-dropdown-button\n [options]=\"typeDropdownOptions\"\n [selectedValue]=\"type\"\n (selectionChange)=\"onTypeChange($event)\">\n </cqa-dropdown-button>\n </div>\n <div class=\"cqa-flex cqa-flex-col\">\n <label class=\"cqa-text-sm cqa-mb-1.5 cqa-font-medium cqa-text-gray-700\">Permission</label>\n <div class=\"cqa-pt-0.5\">\n <cqa-permission-toggle\n [value]=\"readWriteMode\"\n (valueChange)=\"onPermissionChange($event)\">\n </cqa-permission-toggle>\n </div>\n </div>\n </div>\n\n <!-- Value -->\n <div class=\"cqa-flex cqa-flex-col\">\n <ng-container *ngIf=\"isBoolean; else nonBooleanValue\">\n <label class=\"cqa-text-sm cqa-mb-1.5 cqa-font-medium cqa-text-gray-700\">Value</label>\n <cqa-dropdown-button\n [options]=\"booleanDropdownOptions\"\n [selectedValue]=\"value\"\n (selectionChange)=\"onBooleanValueChange($event)\">\n </cqa-dropdown-button>\n </ng-container>\n <ng-template #nonBooleanValue>\n <cqa-custom-input\n label=\"Value\"\n [type]=\"isPassword ? 'password' : 'text'\"\n [value]=\"value\"\n [placeholder]=\"valuePlaceholder\"\n [fullWidth]=\"true\"\n [errors]=\"valueErrorsArray\"\n inputInlineStyle=\"font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', monospace;\"\n (valueChange)=\"onValueChange($event)\">\n </cqa-custom-input>\n </ng-template>\n </div>\n\n <!-- Tags (optional) \u2014 between Value and Description per design -->\n <div class=\"cqa-flex cqa-flex-col\">\n <label class=\"cqa-text-sm cqa-mb-1.5 cqa-font-medium cqa-text-gray-700\">\n Tags <span class=\"cqa-text-xs cqa-font-normal cqa-text-gray-500\">(optional \u2014 for filtering &amp; grouping)</span>\n </label>\n <lib-global-variable-tags-input\n [tags]=\"tags\"\n [availableTags]=\"availableTags\"\n (tagsChange)=\"onTagsChange($event)\">\n </lib-global-variable-tags-input>\n </div>\n\n <!-- Description -->\n <div class=\"cqa-flex cqa-flex-col\">\n <cqa-custom-textarea\n label=\"Description\"\n placeholder=\"What is this variable used for?\"\n [value]=\"description\"\n [rows]=\"2\"\n [fullWidth]=\"true\"\n (valueChange)=\"onDescriptionChange($event)\">\n </cqa-custom-textarea>\n </div>\n\n</div>\n" }]
196
+ args: [{ selector: 'cqa-new-global-variable-dialog', changeDetection: ChangeDetectionStrategy.OnPush, host: { class: 'cqa-ui-root', style: 'display:block;width:100%;' }, template: "<div class=\"cqa-flex cqa-flex-col cqa-gap-4 cqa-w-full\">\n\n <!-- Name -->\n <div class=\"cqa-flex cqa-flex-col\">\n <cqa-custom-input\n label=\"Name\"\n placeholder=\"e.g. ihg_api_key\"\n type=\"text\"\n [value]=\"name\"\n [required]=\"true\"\n [fullWidth]=\"true\"\n [errors]=\"nameErrorsArray\"\n inputInlineStyle=\"font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', monospace;\"\n (valueChange)=\"onNameChange($event)\">\n </cqa-custom-input>\n <span *ngIf=\"!nameError\"\n class=\"cqa-text-xs cqa-text-gray-500 cqa-mt-1\">\n Names must be unique across the entire workspace (primary key \u2014 no duplicates).\n </span>\n </div>\n\n <!-- Type + Permission row -->\n <div class=\"cqa-grid cqa-grid-cols-2 cqa-gap-4\">\n <div class=\"cqa-flex cqa-flex-col\">\n <label class=\"cqa-text-sm cqa-mb-1.5 cqa-font-medium cqa-text-gray-700\">Type</label>\n <cqa-dropdown-button\n [options]=\"typeDropdownOptions\"\n [selectedValue]=\"type\"\n (selectionChange)=\"onTypeChange($event)\">\n </cqa-dropdown-button>\n </div>\n <div class=\"cqa-flex cqa-flex-col\">\n <label class=\"cqa-text-sm cqa-mb-1.5 cqa-font-medium cqa-text-gray-700\">Permission</label>\n <div class=\"cqa-pt-0.5\">\n <cqa-permission-toggle\n [value]=\"readWriteMode\"\n (valueChange)=\"onPermissionChange($event)\">\n </cqa-permission-toggle>\n </div>\n </div>\n </div>\n\n <!-- Value -->\n <div class=\"cqa-flex cqa-flex-col\">\n <ng-container *ngIf=\"isBoolean; else nonBooleanValue\">\n <label class=\"cqa-text-sm cqa-mb-1.5 cqa-font-medium cqa-text-gray-700\">Value</label>\n <cqa-dropdown-button\n [options]=\"booleanDropdownOptions\"\n [selectedValue]=\"value\"\n (selectionChange)=\"onBooleanValueChange($event)\">\n </cqa-dropdown-button>\n </ng-container>\n <ng-template #nonBooleanValue>\n <cqa-custom-input\n label=\"Value\"\n [type]=\"isPassword ? 'password' : 'text'\"\n [value]=\"value\"\n [placeholder]=\"valuePlaceholder\"\n [fullWidth]=\"true\"\n [errors]=\"valueErrorsArray\"\n inputInlineStyle=\"font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', monospace;\"\n (valueChange)=\"onValueChange($event)\">\n </cqa-custom-input>\n </ng-template>\n </div>\n\n <!-- Description -->\n <div class=\"cqa-flex cqa-flex-col\">\n <cqa-custom-textarea\n label=\"Description\"\n placeholder=\"What is this variable used for?\"\n [value]=\"description\"\n [rows]=\"2\"\n [fullWidth]=\"true\"\n (valueChange)=\"onDescriptionChange($event)\">\n </cqa-custom-textarea>\n </div>\n\n</div>\n" }]
206
197
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { mode: [{
207
198
  type: Input
208
199
  }], initialValue: [{
209
200
  type: Input
210
201
  }], existingNames: [{
211
202
  type: Input
212
- }], availableTags: [{
213
- type: Input
214
203
  }] } });
215
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV3LWdsb2JhbC12YXJpYWJsZS1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9uZXctZ2xvYmFsLXZhcmlhYmxlLWRpYWxvZy9uZXctZ2xvYmFsLXZhcmlhYmxlLWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL25ldy1nbG9iYWwtdmFyaWFibGUtZGlhbG9nL25ldy1nbG9iYWwtdmFyaWFibGUtZGlhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBcUIsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7QUFjckcsTUFBTSxPQUFPLGdDQUFnQztJQStCM0MsWUFBNkIsR0FBc0I7UUFBdEIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUE5QjFDLFNBQUksR0FBc0IsUUFBUSxDQUFDO1FBRW5DLGtCQUFhLEdBQWEsRUFBRSxDQUFDO1FBQzdCLGtCQUFhLEdBQThCLEVBQUUsQ0FBQztRQUU5QyxnQkFBVyxHQUEyQixDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBRWxGLHdCQUFtQixHQUFxRDtZQUMvRSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRTtZQUNwQyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRTtZQUNwQyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRTtZQUN0QyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRTtTQUN6QyxDQUFDO1FBRU8sdUJBQWtCLEdBQUc7WUFDNUIsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFrQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUU7WUFDeEUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFrQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUU7U0FDekUsQ0FBQztRQUVGLFNBQUksR0FBRyxFQUFFLENBQUM7UUFDVixTQUFJLEdBQXlCLFFBQVEsQ0FBQztRQUN0QyxVQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ1gsa0JBQWEsR0FBK0IsSUFBSSxDQUFDO1FBQ2pELGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLFNBQUksR0FBYSxFQUFFLENBQUM7UUFDcEIsb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFFeEIsY0FBUyxHQUFrQixJQUFJLENBQUM7UUFDaEMsZUFBVSxHQUFrQixJQUFJLENBQUM7SUFFcUIsQ0FBQztJQUV2RCxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3JCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ3pDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLElBQUksUUFBUSxDQUFDO1lBQy9DLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO1lBQzNDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDO1lBQzdELElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDO1lBQ3ZELElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1NBQ3RGO1FBQ0QsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFNBQVMsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLE1BQU0sSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLE9BQU8sRUFBRTtZQUM5RSxJQUFJLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQztTQUN0QjtRQUNELElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxNQUFNLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxVQUFVLEVBQUU7WUFDcEQsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7U0FDakI7SUFDSCxDQUFDO0lBRUQsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsSUFBSSxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUFDO0lBQy9FLENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDVixPQUFPLGtFQUFrRSxDQUFDO0lBQzVFLENBQUM7SUFFRCxJQUFJLGtCQUFrQjtRQUNwQixPQUFPLElBQUksQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDO0lBQ25FLENBQUM7SUFFRCxJQUFJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxJQUFJLEtBQUssU0FBUyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxJQUFJLFVBQVU7UUFDWixPQUFPLElBQUksQ0FBQyxJQUFJLEtBQUssVUFBVSxDQUFDO0lBQ2xDLENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxJQUFJLGdCQUFnQjtRQUNsQixJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxNQUFNLEVBQUU7WUFDM0MsT0FBTyx1Q0FBdUMsQ0FBQztTQUNoRDtRQUNELE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVELElBQUksY0FBYztRQUNoQixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDbEIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO1NBQ3ZCO1FBQ0QsT0FBTyxpRkFBaUYsQ0FBQztJQUMzRixDQUFDO0lBRUQsSUFBSSxlQUFlO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUNoRCxDQUFDO0lBRUQsSUFBSSxnQkFBZ0I7UUFDbEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ2xELENBQUM7SUFFRCxJQUFJLGNBQWM7UUFDaEIsT0FBTztZQUNMLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO1lBQ2hDLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFO1NBQ25DLENBQUM7SUFDSixDQUFDO0lBRUQsSUFBSSxzQkFBc0I7UUFDeEIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQzdCLENBQUM7SUFFRCxZQUFZLENBQUMsSUFBWTtRQUN2QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUN0QixJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxZQUFZLENBQUMsSUFBMEI7UUFDckMsSUFBSSxDQUFDLElBQUksRUFBRTtZQUFFLE9BQU87U0FBRTtRQUN0QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssU0FBUyxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssTUFBTSxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssT0FBTyxFQUFFO1lBQzlFLElBQUksQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDO1NBQ3RCO1FBQ0QsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFVBQVUsRUFBRTtZQUM1QixJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztZQUM3QixJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssTUFBTSxFQUFFO2dCQUN4QixJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQzthQUNqQjtTQUNGO1FBQ0QsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDdkIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsa0JBQWtCLENBQUMsSUFBWTtRQUM3QixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ2pELElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELGFBQWEsQ0FBQyxJQUFZO1FBQ3hCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNuQixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztTQUM3QjtRQUNELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELG9CQUFvQixDQUFDLElBQVk7UUFDL0IsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDbEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsbUJBQW1CLENBQUMsSUFBWTtRQUM5QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUN4QixJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxZQUFZLENBQUMsSUFBYztRQUN6QixJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ2pELElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxRQUFRO1FBQ04sTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUVyQyxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ2hCLElBQUksQ0FBQyxTQUFTLEdBQUcsbUJBQW1CLENBQUM7U0FDdEM7YUFBTSxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLEVBQUU7WUFDNUMsSUFBSSxDQUFDLFNBQVMsR0FBRyx5RUFBeUUsQ0FBQztTQUM1RjthQUFNO1lBQ0wsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7U0FDdkI7UUFFRCxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ2xFLElBQUksQ0FBQyxVQUFVLEdBQUcseUJBQXlCLENBQUM7U0FDN0M7YUFBTTtZQUNMLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1NBQ3hCO1FBRUQsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDckMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN4QixPQUFPLElBQUksQ0FBQztTQUNiO1FBRUQsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQztRQUUzRixPQUFPO1lBQ0wsSUFBSSxFQUFFLFdBQVc7WUFDakIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsS0FBSyxFQUFFLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDdkQsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhO1lBQ2pDLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJO1lBQ3ZELElBQUksRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztTQUNyQixDQUFDO0lBQ0osQ0FBQztJQUVPLGNBQWM7UUFDcEIsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2xCLE9BQU8sSUFBSSxDQUFDLEtBQUssS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO1NBQ2pEO1FBQ0QsT0FBTyxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRU8sZUFBZSxDQUFDLFNBQWlCO1FBQ3ZDLE1BQU0sUUFBUSxHQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZFLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxNQUFNLEVBQUU7WUFDeEIsTUFBTSxRQUFRLEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUN4RCxPQUFPLFNBQVMsS0FBSyxRQUFRLElBQUksUUFBUSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUMvRDtRQUNELE9BQU8sUUFBUSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRU8sYUFBYSxDQUFDLEdBQVc7UUFDL0IsTUFBTSxPQUFPLEdBQUcsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFBRSxPQUFPLElBQUksQ0FBQztTQUFFO1FBQzlCLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7OzZIQXpOVSxnQ0FBZ0M7aUhBQWhDLGdDQUFnQyxvUkNkN0MsaTBHQTJGQTsyRkQ3RWEsZ0NBQWdDO2tCQU41QyxTQUFTOytCQUNFLGdDQUFnQyxtQkFFekIsdUJBQXVCLENBQUMsTUFBTSxRQUN6QyxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLDJCQUEyQixFQUFFO3dHQUd6RCxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgR2xvYmFsVmFyaWFibGVEaWFsb2dWYWx1ZSxcbiAgR2xvYmFsVmFyaWFibGVUYWdPcHRpb24sXG4gIEdsb2JhbFZhcmlhYmxlVUlQZXJtaXNzaW9uLFxuICBHbG9iYWxWYXJpYWJsZVVJVHlwZSxcbn0gZnJvbSAnLi9uZXctZ2xvYmFsLXZhcmlhYmxlLWRpYWxvZy5tb2RlbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjcWEtbmV3LWdsb2JhbC12YXJpYWJsZS1kaWFsb2cnLFxuICB0ZW1wbGF0ZVVybDogJy4vbmV3LWdsb2JhbC12YXJpYWJsZS1kaWFsb2cuY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaG9zdDogeyBjbGFzczogJ2NxYS11aS1yb290Jywgc3R5bGU6ICdkaXNwbGF5OmJsb2NrO3dpZHRoOjEwMCU7JyB9LFxufSlcbmV4cG9ydCBjbGFzcyBOZXdHbG9iYWxWYXJpYWJsZURpYWxvZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIG1vZGU6ICdjcmVhdGUnIHwgJ2VkaXQnID0gJ2NyZWF0ZSc7XG4gIEBJbnB1dCgpIGluaXRpYWxWYWx1ZT86IFBhcnRpYWw8R2xvYmFsVmFyaWFibGVEaWFsb2dWYWx1ZT47XG4gIEBJbnB1dCgpIGV4aXN0aW5nTmFtZXM6IHN0cmluZ1tdID0gW107XG4gIEBJbnB1dCgpIGF2YWlsYWJsZVRhZ3M6IEdsb2JhbFZhcmlhYmxlVGFnT3B0aW9uW10gPSBbXTtcblxuICByZWFkb25seSB0eXBlT3B0aW9uczogR2xvYmFsVmFyaWFibGVVSVR5cGVbXSA9IFsnU3RyaW5nJywgJ051bWJlcicsICdCb29sZWFuJywgJ1Bhc3N3b3JkJ107XG5cbiAgcmVhZG9ubHkgdHlwZURyb3Bkb3duT3B0aW9uczogeyBsYWJlbDogc3RyaW5nOyB2YWx1ZTogR2xvYmFsVmFyaWFibGVVSVR5cGUgfVtdID0gW1xuICAgIHsgbGFiZWw6ICdTdHJpbmcnLCB2YWx1ZTogJ1N0cmluZycgfSxcbiAgICB7IGxhYmVsOiAnTnVtYmVyJywgdmFsdWU6ICdOdW1iZXInIH0sXG4gICAgeyBsYWJlbDogJ0Jvb2xlYW4nLCB2YWx1ZTogJ0Jvb2xlYW4nIH0sXG4gICAgeyBsYWJlbDogJ1Bhc3N3b3JkJywgdmFsdWU6ICdQYXNzd29yZCcgfSxcbiAgXTtcblxuICByZWFkb25seSBwZXJtaXNzaW9uU2VnbWVudHMgPSBbXG4gICAgeyBsYWJlbDogJ1JPJywgdmFsdWU6ICdSTycgYXMgR2xvYmFsVmFyaWFibGVVSVBlcm1pc3Npb24sIGljb246ICdsb2NrJyB9LFxuICAgIHsgbGFiZWw6ICdSVycsIHZhbHVlOiAnUlcnIGFzIEdsb2JhbFZhcmlhYmxlVUlQZXJtaXNzaW9uLCBpY29uOiAnZWRpdCcgfSxcbiAgXTtcblxuICBuYW1lID0gJyc7XG4gIHR5cGU6IEdsb2JhbFZhcmlhYmxlVUlUeXBlID0gJ1N0cmluZyc7XG4gIHZhbHVlID0gJyc7XG4gIHJlYWRXcml0ZU1vZGU6IEdsb2JhbFZhcmlhYmxlVUlQZXJtaXNzaW9uID0gJ1JXJztcbiAgZGVzY3JpcHRpb24gPSAnJztcbiAgdGFnczogc3RyaW5nW10gPSBbXTtcbiAgcGFzc3dvcmRUb3VjaGVkID0gZmFsc2U7XG5cbiAgbmFtZUVycm9yOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgdmFsdWVFcnJvcjogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmluaXRpYWxWYWx1ZSkge1xuICAgICAgdGhpcy5uYW1lID0gdGhpcy5pbml0aWFsVmFsdWUubmFtZSA/PyAnJztcbiAgICAgIHRoaXMudHlwZSA9IHRoaXMuaW5pdGlhbFZhbHVlLnR5cGUgPz8gJ1N0cmluZyc7XG4gICAgICB0aGlzLnZhbHVlID0gdGhpcy5pbml0aWFsVmFsdWUudmFsdWUgPz8gJyc7XG4gICAgICB0aGlzLnJlYWRXcml0ZU1vZGUgPSB0aGlzLmluaXRpYWxWYWx1ZS5yZWFkV3JpdGVNb2RlID8/ICdSVyc7XG4gICAgICB0aGlzLmRlc2NyaXB0aW9uID0gdGhpcy5pbml0aWFsVmFsdWUuZGVzY3JpcHRpb24gPz8gJyc7XG4gICAgICB0aGlzLnRhZ3MgPSBBcnJheS5pc0FycmF5KHRoaXMuaW5pdGlhbFZhbHVlLnRhZ3MpID8gWy4uLnRoaXMuaW5pdGlhbFZhbHVlLnRhZ3NdIDogW107XG4gICAgfVxuICAgIGlmICh0aGlzLnR5cGUgPT09ICdCb29sZWFuJyAmJiB0aGlzLnZhbHVlICE9PSAndHJ1ZScgJiYgdGhpcy52YWx1ZSAhPT0gJ2ZhbHNlJykge1xuICAgICAgdGhpcy52YWx1ZSA9ICdmYWxzZSc7XG4gICAgfVxuICAgIGlmICh0aGlzLm1vZGUgPT09ICdlZGl0JyAmJiB0aGlzLnR5cGUgPT09ICdQYXNzd29yZCcpIHtcbiAgICAgIHRoaXMudmFsdWUgPSAnJztcbiAgICB9XG4gIH1cblxuICBnZXQgdGl0bGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5tb2RlID09PSAnZWRpdCcgPyAnRWRpdCBnbG9iYWwgdmFyaWFibGUnIDogJ05ldyBnbG9iYWwgdmFyaWFibGUnO1xuICB9XG5cbiAgZ2V0IHN1YnRpdGxlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICdXb3Jrc3BhY2Utd2lkZSDigJQgYWNjZXNzaWJsZSBmcm9tIGFueSB0ZXN0IGNhc2UsIGFueSBlbnZpcm9ubWVudC4nO1xuICB9XG5cbiAgZ2V0IHByaW1hcnlCdXR0b25MYWJlbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLm1vZGUgPT09ICdlZGl0JyA/ICdTYXZlIGNoYW5nZXMnIDogJ0NyZWF0ZSB2YXJpYWJsZSc7XG4gIH1cblxuICBnZXQgaXNCb29sZWFuKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnR5cGUgPT09ICdCb29sZWFuJztcbiAgfVxuXG4gIGdldCBpc1Bhc3N3b3JkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnR5cGUgPT09ICdQYXNzd29yZCc7XG4gIH1cblxuICBnZXQgaXNOdW1iZXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudHlwZSA9PT0gJ051bWJlcic7XG4gIH1cblxuICBnZXQgdmFsdWVQbGFjZWhvbGRlcigpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLmlzUGFzc3dvcmQgJiYgdGhpcy5tb2RlID09PSAnZWRpdCcpIHtcbiAgICAgIHJldHVybiAn4oCi4oCi4oCi4oCi4oCi4oCiIChsZWF2ZSBibGFuayB0byBrZWVwIGV4aXN0aW5nKSc7XG4gICAgfVxuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIGdldCBuYW1lSGVscGVyVGV4dCgpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLm5hbWVFcnJvcikge1xuICAgICAgcmV0dXJuIHRoaXMubmFtZUVycm9yO1xuICAgIH1cbiAgICByZXR1cm4gJ05hbWVzIG11c3QgYmUgdW5pcXVlIGFjcm9zcyB0aGUgZW50aXJlIHdvcmtzcGFjZSAocHJpbWFyeSBrZXkg4oCUIG5vIGR1cGxpY2F0ZXMpLic7XG4gIH1cblxuICBnZXQgbmFtZUVycm9yc0FycmF5KCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5uYW1lRXJyb3IgPyBbdGhpcy5uYW1lRXJyb3JdIDogW107XG4gIH1cblxuICBnZXQgdmFsdWVFcnJvcnNBcnJheSgpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWVFcnJvciA/IFt0aGlzLnZhbHVlRXJyb3JdIDogW107XG4gIH1cblxuICBnZXQgYm9vbGVhbk9wdGlvbnMoKTogeyBsYWJlbDogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIH1bXSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIHsgbGFiZWw6ICd0cnVlJywgdmFsdWU6ICd0cnVlJyB9LFxuICAgICAgeyBsYWJlbDogJ2ZhbHNlJywgdmFsdWU6ICdmYWxzZScgfSxcbiAgICBdO1xuICB9XG5cbiAgZ2V0IGJvb2xlYW5Ecm9wZG93bk9wdGlvbnMoKTogeyBsYWJlbDogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIH1bXSB7XG4gICAgcmV0dXJuIHRoaXMuYm9vbGVhbk9wdGlvbnM7XG4gIH1cblxuICBvbk5hbWVDaGFuZ2UobmV4dDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5uYW1lID0gbmV4dDtcbiAgICB0aGlzLm5hbWVFcnJvciA9IG51bGw7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBvblR5cGVDaGFuZ2UobmV4dDogR2xvYmFsVmFyaWFibGVVSVR5cGUpOiB2b2lkIHtcbiAgICBpZiAoIW5leHQpIHsgcmV0dXJuOyB9XG4gICAgdGhpcy50eXBlID0gbmV4dDtcbiAgICBpZiAodGhpcy50eXBlID09PSAnQm9vbGVhbicgJiYgdGhpcy52YWx1ZSAhPT0gJ3RydWUnICYmIHRoaXMudmFsdWUgIT09ICdmYWxzZScpIHtcbiAgICAgIHRoaXMudmFsdWUgPSAnZmFsc2UnO1xuICAgIH1cbiAgICBpZiAodGhpcy50eXBlID09PSAnUGFzc3dvcmQnKSB7XG4gICAgICB0aGlzLnBhc3N3b3JkVG91Y2hlZCA9IGZhbHNlO1xuICAgICAgaWYgKHRoaXMubW9kZSA9PT0gJ2VkaXQnKSB7XG4gICAgICAgIHRoaXMudmFsdWUgPSAnJztcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy52YWx1ZUVycm9yID0gbnVsbDtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIG9uUGVybWlzc2lvbkNoYW5nZShuZXh0OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnJlYWRXcml0ZU1vZGUgPSBuZXh0ID09PSAnUk8nID8gJ1JPJyA6ICdSVyc7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBvblZhbHVlQ2hhbmdlKG5leHQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMudmFsdWUgPSBuZXh0O1xuICAgIGlmICh0aGlzLmlzUGFzc3dvcmQpIHtcbiAgICAgIHRoaXMucGFzc3dvcmRUb3VjaGVkID0gdHJ1ZTtcbiAgICB9XG4gICAgdGhpcy52YWx1ZUVycm9yID0gbnVsbDtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIG9uQm9vbGVhblZhbHVlQ2hhbmdlKG5leHQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMudmFsdWUgPSBuZXh0O1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgb25EZXNjcmlwdGlvbkNoYW5nZShuZXh0OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmRlc2NyaXB0aW9uID0gbmV4dDtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIG9uVGFnc0NoYW5nZShuZXh0OiBzdHJpbmdbXSk6IHZvaWQge1xuICAgIHRoaXMudGFncyA9IEFycmF5LmlzQXJyYXkobmV4dCkgPyBbLi4ubmV4dF0gOiBbXTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgYnkgdGhlIGhvc3QgKHZpYSBEaWFsb2dSZWYuZ2V0Q29tcG9uZW50SW5zdGFuY2UoKSkgd2hlbiB0aGUgcHJpbWFyeVxuICAgKiBidXR0b24gaXMgY2xpY2tlZC4gUmV0dXJucyB0aGUgY2FwdHVyZWQgdmFsdWUgd2hlbiB2YWxpZCwgb3IgbnVsbCB3aGVuIHRoZVxuICAgKiBmb3JtIGhhcyBlcnJvcnMg4oCUIGluIHdoaWNoIGNhc2UgdGhlIGhvc3Qgc2hvdWxkIGxlYXZlIHRoZSBkaWFsb2cgb3Blbi5cbiAgICovXG4gIGdldFZhbHVlKCk6IEdsb2JhbFZhcmlhYmxlRGlhbG9nVmFsdWUgfCBudWxsIHtcbiAgICBjb25zdCB0cmltbWVkTmFtZSA9IHRoaXMubmFtZS50cmltKCk7XG5cbiAgICBpZiAoIXRyaW1tZWROYW1lKSB7XG4gICAgICB0aGlzLm5hbWVFcnJvciA9ICdOYW1lIGlzIHJlcXVpcmVkLic7XG4gICAgfSBlbHNlIGlmICh0aGlzLmlzRHVwbGljYXRlTmFtZSh0cmltbWVkTmFtZSkpIHtcbiAgICAgIHRoaXMubmFtZUVycm9yID0gJ0EgZ2xvYmFsIHZhcmlhYmxlIHdpdGggdGhpcyBuYW1lIGFscmVhZHkgZXhpc3RzIOKAlCBuYW1lcyBtdXN0IGJlIHVuaXF1ZS4nO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm5hbWVFcnJvciA9IG51bGw7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNOdW1iZXIgJiYgdGhpcy52YWx1ZSAmJiAhdGhpcy5pc1ZhbGlkTnVtYmVyKHRoaXMudmFsdWUpKSB7XG4gICAgICB0aGlzLnZhbHVlRXJyb3IgPSAnVmFsdWUgbXVzdCBiZSBhIG51bWJlci4nO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnZhbHVlRXJyb3IgPSBudWxsO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm5hbWVFcnJvciB8fCB0aGlzLnZhbHVlRXJyb3IpIHtcbiAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3Qgb21pdFBhc3N3b3JkVmFsdWUgPSB0aGlzLmlzUGFzc3dvcmQgJiYgdGhpcy5tb2RlID09PSAnZWRpdCcgJiYgIXRoaXMucGFzc3dvcmRUb3VjaGVkO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6IHRyaW1tZWROYW1lLFxuICAgICAgdHlwZTogdGhpcy50eXBlLFxuICAgICAgdmFsdWU6IG9taXRQYXNzd29yZFZhbHVlID8gbnVsbCA6IHRoaXMuc2VyaWFsaXplVmFsdWUoKSxcbiAgICAgIHJlYWRXcml0ZU1vZGU6IHRoaXMucmVhZFdyaXRlTW9kZSxcbiAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLmRlc2NyaXB0aW9uID8gdGhpcy5kZXNjcmlwdGlvbiA6IG51bGwsXG4gICAgICB0YWdzOiBbLi4udGhpcy50YWdzXSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBzZXJpYWxpemVWYWx1ZSgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICBpZiAodGhpcy5pc0Jvb2xlYW4pIHtcbiAgICAgIHJldHVybiB0aGlzLnZhbHVlID09PSAndHJ1ZScgPyAndHJ1ZScgOiAnZmFsc2UnO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy52YWx1ZSA/PyAnJztcbiAgfVxuXG4gIHByaXZhdGUgaXNEdXBsaWNhdGVOYW1lKGNhbmRpZGF0ZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc3QgZXhpc3RpbmcgPSAodGhpcy5leGlzdGluZ05hbWVzID8/IFtdKS5tYXAobiA9PiAobiA/PyAnJykudHJpbSgpKTtcbiAgICBpZiAodGhpcy5tb2RlID09PSAnZWRpdCcpIHtcbiAgICAgIGNvbnN0IG9yaWdpbmFsID0gKHRoaXMuaW5pdGlhbFZhbHVlPy5uYW1lID8/ICcnKS50cmltKCk7XG4gICAgICByZXR1cm4gY2FuZGlkYXRlICE9PSBvcmlnaW5hbCAmJiBleGlzdGluZy5pbmNsdWRlcyhjYW5kaWRhdGUpO1xuICAgIH1cbiAgICByZXR1cm4gZXhpc3RpbmcuaW5jbHVkZXMoY2FuZGlkYXRlKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNWYWxpZE51bWJlcihyYXc6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHRyaW1tZWQgPSByYXcudHJpbSgpO1xuICAgIGlmICghdHJpbW1lZCkgeyByZXR1cm4gdHJ1ZTsgfVxuICAgIHJldHVybiAhTnVtYmVyLmlzTmFOKE51bWJlcih0cmltbWVkKSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWdhcC00IGNxYS13LWZ1bGxcIj5cblxuICA8IS0tIE5hbWUgLS0+XG4gIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2xcIj5cbiAgICA8Y3FhLWN1c3RvbS1pbnB1dFxuICAgICAgbGFiZWw9XCJOYW1lXCJcbiAgICAgIHBsYWNlaG9sZGVyPVwiZS5nLiBpaGdfYXBpX2tleVwiXG4gICAgICB0eXBlPVwidGV4dFwiXG4gICAgICBbdmFsdWVdPVwibmFtZVwiXG4gICAgICBbcmVxdWlyZWRdPVwidHJ1ZVwiXG4gICAgICBbZnVsbFdpZHRoXT1cInRydWVcIlxuICAgICAgW2Vycm9yc109XCJuYW1lRXJyb3JzQXJyYXlcIlxuICAgICAgaW5wdXRJbmxpbmVTdHlsZT1cImZvbnQtZmFtaWx5OiB1aS1tb25vc3BhY2UsIFNGTW9uby1SZWd1bGFyLCBNZW5sbywgTW9uYWNvLCBDb25zb2xhcywgJ0xpYmVyYXRpb24gTW9ubycsIG1vbm9zcGFjZTtcIlxuICAgICAgKHZhbHVlQ2hhbmdlKT1cIm9uTmFtZUNoYW5nZSgkZXZlbnQpXCI+XG4gICAgPC9jcWEtY3VzdG9tLWlucHV0PlxuICAgIDxzcGFuICpuZ0lmPVwiIW5hbWVFcnJvclwiXG4gICAgICBjbGFzcz1cImNxYS10ZXh0LXhzIGNxYS10ZXh0LWdyYXktNTAwIGNxYS1tdC0xXCI+XG4gICAgICBOYW1lcyBtdXN0IGJlIHVuaXF1ZSBhY3Jvc3MgdGhlIGVudGlyZSB3b3Jrc3BhY2UgKHByaW1hcnkga2V5IOKAlCBubyBkdXBsaWNhdGVzKS5cbiAgICA8L3NwYW4+XG4gIDwvZGl2PlxuXG4gIDwhLS0gVHlwZSArIFBlcm1pc3Npb24gcm93IC0tPlxuICA8ZGl2IGNsYXNzPVwiY3FhLWdyaWQgY3FhLWdyaWQtY29scy0yIGNxYS1nYXAtNFwiPlxuICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2xcIj5cbiAgICAgIDxsYWJlbCBjbGFzcz1cImNxYS10ZXh0LXNtIGNxYS1tYi0xLjUgY3FhLWZvbnQtbWVkaXVtIGNxYS10ZXh0LWdyYXktNzAwXCI+VHlwZTwvbGFiZWw+XG4gICAgICA8Y3FhLWRyb3Bkb3duLWJ1dHRvblxuICAgICAgICBbb3B0aW9uc109XCJ0eXBlRHJvcGRvd25PcHRpb25zXCJcbiAgICAgICAgW3NlbGVjdGVkVmFsdWVdPVwidHlwZVwiXG4gICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwib25UeXBlQ2hhbmdlKCRldmVudClcIj5cbiAgICAgIDwvY3FhLWRyb3Bkb3duLWJ1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sXCI+XG4gICAgICA8bGFiZWwgY2xhc3M9XCJjcWEtdGV4dC1zbSBjcWEtbWItMS41IGNxYS1mb250LW1lZGl1bSBjcWEtdGV4dC1ncmF5LTcwMFwiPlBlcm1pc3Npb248L2xhYmVsPlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS1wdC0wLjVcIj5cbiAgICAgICAgPGNxYS1wZXJtaXNzaW9uLXRvZ2dsZVxuICAgICAgICAgIFt2YWx1ZV09XCJyZWFkV3JpdGVNb2RlXCJcbiAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwib25QZXJtaXNzaW9uQ2hhbmdlKCRldmVudClcIj5cbiAgICAgICAgPC9jcWEtcGVybWlzc2lvbi10b2dnbGU+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBWYWx1ZSAtLT5cbiAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0Jvb2xlYW47IGVsc2Ugbm9uQm9vbGVhblZhbHVlXCI+XG4gICAgICA8bGFiZWwgY2xhc3M9XCJjcWEtdGV4dC1zbSBjcWEtbWItMS41IGNxYS1mb250LW1lZGl1bSBjcWEtdGV4dC1ncmF5LTcwMFwiPlZhbHVlPC9sYWJlbD5cbiAgICAgIDxjcWEtZHJvcGRvd24tYnV0dG9uXG4gICAgICAgIFtvcHRpb25zXT1cImJvb2xlYW5Ecm9wZG93bk9wdGlvbnNcIlxuICAgICAgICBbc2VsZWN0ZWRWYWx1ZV09XCJ2YWx1ZVwiXG4gICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwib25Cb29sZWFuVmFsdWVDaGFuZ2UoJGV2ZW50KVwiPlxuICAgICAgPC9jcWEtZHJvcGRvd24tYnV0dG9uPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy10ZW1wbGF0ZSAjbm9uQm9vbGVhblZhbHVlPlxuICAgICAgPGNxYS1jdXN0b20taW5wdXRcbiAgICAgICAgbGFiZWw9XCJWYWx1ZVwiXG4gICAgICAgIFt0eXBlXT1cImlzUGFzc3dvcmQgPyAncGFzc3dvcmQnIDogJ3RleHQnXCJcbiAgICAgICAgW3ZhbHVlXT1cInZhbHVlXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cInZhbHVlUGxhY2Vob2xkZXJcIlxuICAgICAgICBbZnVsbFdpZHRoXT1cInRydWVcIlxuICAgICAgICBbZXJyb3JzXT1cInZhbHVlRXJyb3JzQXJyYXlcIlxuICAgICAgICBpbnB1dElubGluZVN0eWxlPVwiZm9udC1mYW1pbHk6IHVpLW1vbm9zcGFjZSwgU0ZNb25vLVJlZ3VsYXIsIE1lbmxvLCBNb25hY28sIENvbnNvbGFzLCAnTGliZXJhdGlvbiBNb25vJywgbW9ub3NwYWNlO1wiXG4gICAgICAgICh2YWx1ZUNoYW5nZSk9XCJvblZhbHVlQ2hhbmdlKCRldmVudClcIj5cbiAgICAgIDwvY3FhLWN1c3RvbS1pbnB1dD5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2Rpdj5cblxuICA8IS0tIFRhZ3MgKG9wdGlvbmFsKSDigJQgYmV0d2VlbiBWYWx1ZSBhbmQgRGVzY3JpcHRpb24gcGVyIGRlc2lnbiAtLT5cbiAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbFwiPlxuICAgIDxsYWJlbCBjbGFzcz1cImNxYS10ZXh0LXNtIGNxYS1tYi0xLjUgY3FhLWZvbnQtbWVkaXVtIGNxYS10ZXh0LWdyYXktNzAwXCI+XG4gICAgICBUYWdzIDxzcGFuIGNsYXNzPVwiY3FhLXRleHQteHMgY3FhLWZvbnQtbm9ybWFsIGNxYS10ZXh0LWdyYXktNTAwXCI+KG9wdGlvbmFsIOKAlCBmb3IgZmlsdGVyaW5nICZhbXA7IGdyb3VwaW5nKTwvc3Bhbj5cbiAgICA8L2xhYmVsPlxuICAgIDxsaWItZ2xvYmFsLXZhcmlhYmxlLXRhZ3MtaW5wdXRcbiAgICAgIFt0YWdzXT1cInRhZ3NcIlxuICAgICAgW2F2YWlsYWJsZVRhZ3NdPVwiYXZhaWxhYmxlVGFnc1wiXG4gICAgICAodGFnc0NoYW5nZSk9XCJvblRhZ3NDaGFuZ2UoJGV2ZW50KVwiPlxuICAgIDwvbGliLWdsb2JhbC12YXJpYWJsZS10YWdzLWlucHV0PlxuICA8L2Rpdj5cblxuICA8IS0tIERlc2NyaXB0aW9uIC0tPlxuICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sXCI+XG4gICAgPGNxYS1jdXN0b20tdGV4dGFyZWFcbiAgICAgIGxhYmVsPVwiRGVzY3JpcHRpb25cIlxuICAgICAgcGxhY2Vob2xkZXI9XCJXaGF0IGlzIHRoaXMgdmFyaWFibGUgdXNlZCBmb3I/XCJcbiAgICAgIFt2YWx1ZV09XCJkZXNjcmlwdGlvblwiXG4gICAgICBbcm93c109XCIyXCJcbiAgICAgIFtmdWxsV2lkdGhdPVwidHJ1ZVwiXG4gICAgICAodmFsdWVDaGFuZ2UpPVwib25EZXNjcmlwdGlvbkNoYW5nZSgkZXZlbnQpXCI+XG4gICAgPC9jcWEtY3VzdG9tLXRleHRhcmVhPlxuICA8L2Rpdj5cblxuPC9kaXY+XG4iXX0=
204
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV3LWdsb2JhbC12YXJpYWJsZS1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9uZXctZ2xvYmFsLXZhcmlhYmxlLWRpYWxvZy9uZXctZ2xvYmFsLXZhcmlhYmxlLWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL25ldy1nbG9iYWwtdmFyaWFibGUtZGlhbG9nL25ldy1nbG9iYWwtdmFyaWFibGUtZGlhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBcUIsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQzs7Ozs7OztBQWFyRyxNQUFNLE9BQU8sZ0NBQWdDO0lBNkIzQyxZQUE2QixHQUFzQjtRQUF0QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQTVCMUMsU0FBSSxHQUFzQixRQUFRLENBQUM7UUFFbkMsa0JBQWEsR0FBYSxFQUFFLENBQUM7UUFFN0IsZ0JBQVcsR0FBMkIsQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUVsRix3QkFBbUIsR0FBcUQ7WUFDL0UsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUU7WUFDcEMsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUU7WUFDcEMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUU7WUFDdEMsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUU7U0FDekMsQ0FBQztRQUVPLHVCQUFrQixHQUFHO1lBQzVCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBa0MsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO1lBQ3hFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBa0MsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO1NBQ3pFLENBQUM7UUFFRixTQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ1YsU0FBSSxHQUF5QixRQUFRLENBQUM7UUFDdEMsVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUNYLGtCQUFhLEdBQStCLElBQUksQ0FBQztRQUNqRCxnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQUNqQixvQkFBZSxHQUFHLEtBQUssQ0FBQztRQUV4QixjQUFTLEdBQWtCLElBQUksQ0FBQztRQUNoQyxlQUFVLEdBQWtCLElBQUksQ0FBQztJQUVxQixDQUFDO0lBRXZELFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDckIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7WUFDekMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksSUFBSSxRQUFRLENBQUM7WUFDL0MsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDM0MsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUM7WUFDN0QsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUM7U0FDeEQ7UUFDRCxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssU0FBUyxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssTUFBTSxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssT0FBTyxFQUFFO1lBQzlFLElBQUksQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDO1NBQ3RCO1FBQ0QsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLE1BQU0sSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFVBQVUsRUFBRTtZQUNwRCxJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztTQUNqQjtJQUNILENBQUM7SUFFRCxJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUMscUJBQXFCLENBQUM7SUFDL0UsQ0FBQztJQUVELElBQUksUUFBUTtRQUNWLE9BQU8sa0VBQWtFLENBQUM7SUFDNUUsQ0FBQztJQUVELElBQUksa0JBQWtCO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLElBQUksS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUM7SUFDbkUsQ0FBQztJQUVELElBQUksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLElBQUksS0FBSyxTQUFTLENBQUM7SUFDakMsQ0FBQztJQUVELElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLElBQUksS0FBSyxVQUFVLENBQUM7SUFDbEMsQ0FBQztJQUVELElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLElBQUksS0FBSyxRQUFRLENBQUM7SUFDaEMsQ0FBQztJQUVELElBQUksZ0JBQWdCO1FBQ2xCLElBQUksSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLE1BQU0sRUFBRTtZQUMzQyxPQUFPLHVDQUF1QyxDQUFDO1NBQ2hEO1FBQ0QsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsSUFBSSxjQUFjO1FBQ2hCLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNsQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7U0FDdkI7UUFDRCxPQUFPLGlGQUFpRixDQUFDO0lBQzNGLENBQUM7SUFFRCxJQUFJLGVBQWU7UUFDakIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ2hELENBQUM7SUFFRCxJQUFJLGdCQUFnQjtRQUNsQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDbEQsQ0FBQztJQUVELElBQUksY0FBYztRQUNoQixPQUFPO1lBQ0wsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUU7WUFDaEMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUU7U0FDbkMsQ0FBQztJQUNKLENBQUM7SUFFRCxJQUFJLHNCQUFzQjtRQUN4QixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDN0IsQ0FBQztJQUVELFlBQVksQ0FBQyxJQUFZO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELFlBQVksQ0FBQyxJQUEwQjtRQUNyQyxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQUUsT0FBTztTQUFFO1FBQ3RCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxNQUFNLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxPQUFPLEVBQUU7WUFDOUUsSUFBSSxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUM7U0FDdEI7UUFDRCxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssVUFBVSxFQUFFO1lBQzVCLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1lBQzdCLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxNQUFNLEVBQUU7Z0JBQ3hCLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO2FBQ2pCO1NBQ0Y7UUFDRCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUN2QixJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxJQUFZO1FBQzdCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDakQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsYUFBYSxDQUFDLElBQVk7UUFDeEIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDbEIsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ25CLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1NBQzdCO1FBQ0QsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDdkIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsb0JBQW9CLENBQUMsSUFBWTtRQUMvQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUNsQixJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxJQUFZO1FBQzlCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxRQUFRO1FBQ04sTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUVyQyxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ2hCLElBQUksQ0FBQyxTQUFTLEdBQUcsbUJBQW1CLENBQUM7U0FDdEM7YUFBTSxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLEVBQUU7WUFDNUMsSUFBSSxDQUFDLFNBQVMsR0FBRyx5RUFBeUUsQ0FBQztTQUM1RjthQUFNO1lBQ0wsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7U0FDdkI7UUFFRCxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ2xFLElBQUksQ0FBQyxVQUFVLEdBQUcseUJBQXlCLENBQUM7U0FDN0M7YUFBTTtZQUNMLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1NBQ3hCO1FBRUQsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDckMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN4QixPQUFPLElBQUksQ0FBQztTQUNiO1FBRUQsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQztRQUUzRixPQUFPO1lBQ0wsSUFBSSxFQUFFLFdBQVc7WUFDakIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsS0FBSyxFQUFFLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDdkQsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhO1lBQ2pDLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJO1NBQ3hELENBQUM7SUFDSixDQUFDO0lBRU8sY0FBYztRQUNwQixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDbEIsT0FBTyxJQUFJLENBQUMsS0FBSyxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7U0FDakQ7UUFDRCxPQUFPLElBQUksQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFTyxlQUFlLENBQUMsU0FBaUI7UUFDdkMsTUFBTSxRQUFRLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDdkUsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLE1BQU0sRUFBRTtZQUN4QixNQUFNLFFBQVEsR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3hELE9BQU8sU0FBUyxLQUFLLFFBQVEsSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQy9EO1FBQ0QsT0FBTyxRQUFRLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFTyxhQUFhLENBQUMsR0FBVztRQUMvQixNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUFFLE9BQU8sSUFBSSxDQUFDO1NBQUU7UUFDOUIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDeEMsQ0FBQzs7NkhBaE5VLGdDQUFnQztpSEFBaEMsZ0NBQWdDLG9QQ2I3Qyx3eUZBK0VBOzJGRGxFYSxnQ0FBZ0M7a0JBTjVDLFNBQVM7K0JBQ0UsZ0NBQWdDLG1CQUV6Qix1QkFBdUIsQ0FBQyxNQUFNLFFBQ3pDLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsMkJBQTJCLEVBQUU7d0dBR3pELElBQUk7c0JBQVosS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgR2xvYmFsVmFyaWFibGVEaWFsb2dWYWx1ZSxcbiAgR2xvYmFsVmFyaWFibGVVSVBlcm1pc3Npb24sXG4gIEdsb2JhbFZhcmlhYmxlVUlUeXBlLFxufSBmcm9tICcuL25ldy1nbG9iYWwtdmFyaWFibGUtZGlhbG9nLm1vZGVscyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NxYS1uZXctZ2xvYmFsLXZhcmlhYmxlLWRpYWxvZycsXG4gIHRlbXBsYXRlVXJsOiAnLi9uZXctZ2xvYmFsLXZhcmlhYmxlLWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBob3N0OiB7IGNsYXNzOiAnY3FhLXVpLXJvb3QnLCBzdHlsZTogJ2Rpc3BsYXk6YmxvY2s7d2lkdGg6MTAwJTsnIH0sXG59KVxuZXhwb3J0IGNsYXNzIE5ld0dsb2JhbFZhcmlhYmxlRGlhbG9nQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgbW9kZTogJ2NyZWF0ZScgfCAnZWRpdCcgPSAnY3JlYXRlJztcbiAgQElucHV0KCkgaW5pdGlhbFZhbHVlPzogUGFydGlhbDxHbG9iYWxWYXJpYWJsZURpYWxvZ1ZhbHVlPjtcbiAgQElucHV0KCkgZXhpc3RpbmdOYW1lczogc3RyaW5nW10gPSBbXTtcblxuICByZWFkb25seSB0eXBlT3B0aW9uczogR2xvYmFsVmFyaWFibGVVSVR5cGVbXSA9IFsnU3RyaW5nJywgJ051bWJlcicsICdCb29sZWFuJywgJ1Bhc3N3b3JkJ107XG5cbiAgcmVhZG9ubHkgdHlwZURyb3Bkb3duT3B0aW9uczogeyBsYWJlbDogc3RyaW5nOyB2YWx1ZTogR2xvYmFsVmFyaWFibGVVSVR5cGUgfVtdID0gW1xuICAgIHsgbGFiZWw6ICdTdHJpbmcnLCB2YWx1ZTogJ1N0cmluZycgfSxcbiAgICB7IGxhYmVsOiAnTnVtYmVyJywgdmFsdWU6ICdOdW1iZXInIH0sXG4gICAgeyBsYWJlbDogJ0Jvb2xlYW4nLCB2YWx1ZTogJ0Jvb2xlYW4nIH0sXG4gICAgeyBsYWJlbDogJ1Bhc3N3b3JkJywgdmFsdWU6ICdQYXNzd29yZCcgfSxcbiAgXTtcblxuICByZWFkb25seSBwZXJtaXNzaW9uU2VnbWVudHMgPSBbXG4gICAgeyBsYWJlbDogJ1JPJywgdmFsdWU6ICdSTycgYXMgR2xvYmFsVmFyaWFibGVVSVBlcm1pc3Npb24sIGljb246ICdsb2NrJyB9LFxuICAgIHsgbGFiZWw6ICdSVycsIHZhbHVlOiAnUlcnIGFzIEdsb2JhbFZhcmlhYmxlVUlQZXJtaXNzaW9uLCBpY29uOiAnZWRpdCcgfSxcbiAgXTtcblxuICBuYW1lID0gJyc7XG4gIHR5cGU6IEdsb2JhbFZhcmlhYmxlVUlUeXBlID0gJ1N0cmluZyc7XG4gIHZhbHVlID0gJyc7XG4gIHJlYWRXcml0ZU1vZGU6IEdsb2JhbFZhcmlhYmxlVUlQZXJtaXNzaW9uID0gJ1JXJztcbiAgZGVzY3JpcHRpb24gPSAnJztcbiAgcGFzc3dvcmRUb3VjaGVkID0gZmFsc2U7XG5cbiAgbmFtZUVycm9yOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgdmFsdWVFcnJvcjogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmluaXRpYWxWYWx1ZSkge1xuICAgICAgdGhpcy5uYW1lID0gdGhpcy5pbml0aWFsVmFsdWUubmFtZSA/PyAnJztcbiAgICAgIHRoaXMudHlwZSA9IHRoaXMuaW5pdGlhbFZhbHVlLnR5cGUgPz8gJ1N0cmluZyc7XG4gICAgICB0aGlzLnZhbHVlID0gdGhpcy5pbml0aWFsVmFsdWUudmFsdWUgPz8gJyc7XG4gICAgICB0aGlzLnJlYWRXcml0ZU1vZGUgPSB0aGlzLmluaXRpYWxWYWx1ZS5yZWFkV3JpdGVNb2RlID8/ICdSVyc7XG4gICAgICB0aGlzLmRlc2NyaXB0aW9uID0gdGhpcy5pbml0aWFsVmFsdWUuZGVzY3JpcHRpb24gPz8gJyc7XG4gICAgfVxuICAgIGlmICh0aGlzLnR5cGUgPT09ICdCb29sZWFuJyAmJiB0aGlzLnZhbHVlICE9PSAndHJ1ZScgJiYgdGhpcy52YWx1ZSAhPT0gJ2ZhbHNlJykge1xuICAgICAgdGhpcy52YWx1ZSA9ICdmYWxzZSc7XG4gICAgfVxuICAgIGlmICh0aGlzLm1vZGUgPT09ICdlZGl0JyAmJiB0aGlzLnR5cGUgPT09ICdQYXNzd29yZCcpIHtcbiAgICAgIHRoaXMudmFsdWUgPSAnJztcbiAgICB9XG4gIH1cblxuICBnZXQgdGl0bGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5tb2RlID09PSAnZWRpdCcgPyAnRWRpdCBnbG9iYWwgdmFyaWFibGUnIDogJ05ldyBnbG9iYWwgdmFyaWFibGUnO1xuICB9XG5cbiAgZ2V0IHN1YnRpdGxlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICdXb3Jrc3BhY2Utd2lkZSDigJQgYWNjZXNzaWJsZSBmcm9tIGFueSB0ZXN0IGNhc2UsIGFueSBlbnZpcm9ubWVudC4nO1xuICB9XG5cbiAgZ2V0IHByaW1hcnlCdXR0b25MYWJlbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLm1vZGUgPT09ICdlZGl0JyA/ICdTYXZlIGNoYW5nZXMnIDogJ0NyZWF0ZSB2YXJpYWJsZSc7XG4gIH1cblxuICBnZXQgaXNCb29sZWFuKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnR5cGUgPT09ICdCb29sZWFuJztcbiAgfVxuXG4gIGdldCBpc1Bhc3N3b3JkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnR5cGUgPT09ICdQYXNzd29yZCc7XG4gIH1cblxuICBnZXQgaXNOdW1iZXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudHlwZSA9PT0gJ051bWJlcic7XG4gIH1cblxuICBnZXQgdmFsdWVQbGFjZWhvbGRlcigpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLmlzUGFzc3dvcmQgJiYgdGhpcy5tb2RlID09PSAnZWRpdCcpIHtcbiAgICAgIHJldHVybiAn4oCi4oCi4oCi4oCi4oCi4oCiIChsZWF2ZSBibGFuayB0byBrZWVwIGV4aXN0aW5nKSc7XG4gICAgfVxuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIGdldCBuYW1lSGVscGVyVGV4dCgpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLm5hbWVFcnJvcikge1xuICAgICAgcmV0dXJuIHRoaXMubmFtZUVycm9yO1xuICAgIH1cbiAgICByZXR1cm4gJ05hbWVzIG11c3QgYmUgdW5pcXVlIGFjcm9zcyB0aGUgZW50aXJlIHdvcmtzcGFjZSAocHJpbWFyeSBrZXkg4oCUIG5vIGR1cGxpY2F0ZXMpLic7XG4gIH1cblxuICBnZXQgbmFtZUVycm9yc0FycmF5KCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5uYW1lRXJyb3IgPyBbdGhpcy5uYW1lRXJyb3JdIDogW107XG4gIH1cblxuICBnZXQgdmFsdWVFcnJvcnNBcnJheSgpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWVFcnJvciA/IFt0aGlzLnZhbHVlRXJyb3JdIDogW107XG4gIH1cblxuICBnZXQgYm9vbGVhbk9wdGlvbnMoKTogeyBsYWJlbDogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIH1bXSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIHsgbGFiZWw6ICd0cnVlJywgdmFsdWU6ICd0cnVlJyB9LFxuICAgICAgeyBsYWJlbDogJ2ZhbHNlJywgdmFsdWU6ICdmYWxzZScgfSxcbiAgICBdO1xuICB9XG5cbiAgZ2V0IGJvb2xlYW5Ecm9wZG93bk9wdGlvbnMoKTogeyBsYWJlbDogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIH1bXSB7XG4gICAgcmV0dXJuIHRoaXMuYm9vbGVhbk9wdGlvbnM7XG4gIH1cblxuICBvbk5hbWVDaGFuZ2UobmV4dDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5uYW1lID0gbmV4dDtcbiAgICB0aGlzLm5hbWVFcnJvciA9IG51bGw7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBvblR5cGVDaGFuZ2UobmV4dDogR2xvYmFsVmFyaWFibGVVSVR5cGUpOiB2b2lkIHtcbiAgICBpZiAoIW5leHQpIHsgcmV0dXJuOyB9XG4gICAgdGhpcy50eXBlID0gbmV4dDtcbiAgICBpZiAodGhpcy50eXBlID09PSAnQm9vbGVhbicgJiYgdGhpcy52YWx1ZSAhPT0gJ3RydWUnICYmIHRoaXMudmFsdWUgIT09ICdmYWxzZScpIHtcbiAgICAgIHRoaXMudmFsdWUgPSAnZmFsc2UnO1xuICAgIH1cbiAgICBpZiAodGhpcy50eXBlID09PSAnUGFzc3dvcmQnKSB7XG4gICAgICB0aGlzLnBhc3N3b3JkVG91Y2hlZCA9IGZhbHNlO1xuICAgICAgaWYgKHRoaXMubW9kZSA9PT0gJ2VkaXQnKSB7XG4gICAgICAgIHRoaXMudmFsdWUgPSAnJztcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy52YWx1ZUVycm9yID0gbnVsbDtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIG9uUGVybWlzc2lvbkNoYW5nZShuZXh0OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnJlYWRXcml0ZU1vZGUgPSBuZXh0ID09PSAnUk8nID8gJ1JPJyA6ICdSVyc7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBvblZhbHVlQ2hhbmdlKG5leHQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMudmFsdWUgPSBuZXh0O1xuICAgIGlmICh0aGlzLmlzUGFzc3dvcmQpIHtcbiAgICAgIHRoaXMucGFzc3dvcmRUb3VjaGVkID0gdHJ1ZTtcbiAgICB9XG4gICAgdGhpcy52YWx1ZUVycm9yID0gbnVsbDtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIG9uQm9vbGVhblZhbHVlQ2hhbmdlKG5leHQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMudmFsdWUgPSBuZXh0O1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgb25EZXNjcmlwdGlvbkNoYW5nZShuZXh0OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmRlc2NyaXB0aW9uID0gbmV4dDtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgYnkgdGhlIGhvc3QgKHZpYSBEaWFsb2dSZWYuZ2V0Q29tcG9uZW50SW5zdGFuY2UoKSkgd2hlbiB0aGUgcHJpbWFyeVxuICAgKiBidXR0b24gaXMgY2xpY2tlZC4gUmV0dXJucyB0aGUgY2FwdHVyZWQgdmFsdWUgd2hlbiB2YWxpZCwgb3IgbnVsbCB3aGVuIHRoZVxuICAgKiBmb3JtIGhhcyBlcnJvcnMg4oCUIGluIHdoaWNoIGNhc2UgdGhlIGhvc3Qgc2hvdWxkIGxlYXZlIHRoZSBkaWFsb2cgb3Blbi5cbiAgICovXG4gIGdldFZhbHVlKCk6IEdsb2JhbFZhcmlhYmxlRGlhbG9nVmFsdWUgfCBudWxsIHtcbiAgICBjb25zdCB0cmltbWVkTmFtZSA9IHRoaXMubmFtZS50cmltKCk7XG5cbiAgICBpZiAoIXRyaW1tZWROYW1lKSB7XG4gICAgICB0aGlzLm5hbWVFcnJvciA9ICdOYW1lIGlzIHJlcXVpcmVkLic7XG4gICAgfSBlbHNlIGlmICh0aGlzLmlzRHVwbGljYXRlTmFtZSh0cmltbWVkTmFtZSkpIHtcbiAgICAgIHRoaXMubmFtZUVycm9yID0gJ0EgZ2xvYmFsIHZhcmlhYmxlIHdpdGggdGhpcyBuYW1lIGFscmVhZHkgZXhpc3RzIOKAlCBuYW1lcyBtdXN0IGJlIHVuaXF1ZS4nO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm5hbWVFcnJvciA9IG51bGw7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNOdW1iZXIgJiYgdGhpcy52YWx1ZSAmJiAhdGhpcy5pc1ZhbGlkTnVtYmVyKHRoaXMudmFsdWUpKSB7XG4gICAgICB0aGlzLnZhbHVlRXJyb3IgPSAnVmFsdWUgbXVzdCBiZSBhIG51bWJlci4nO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnZhbHVlRXJyb3IgPSBudWxsO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm5hbWVFcnJvciB8fCB0aGlzLnZhbHVlRXJyb3IpIHtcbiAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3Qgb21pdFBhc3N3b3JkVmFsdWUgPSB0aGlzLmlzUGFzc3dvcmQgJiYgdGhpcy5tb2RlID09PSAnZWRpdCcgJiYgIXRoaXMucGFzc3dvcmRUb3VjaGVkO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6IHRyaW1tZWROYW1lLFxuICAgICAgdHlwZTogdGhpcy50eXBlLFxuICAgICAgdmFsdWU6IG9taXRQYXNzd29yZFZhbHVlID8gbnVsbCA6IHRoaXMuc2VyaWFsaXplVmFsdWUoKSxcbiAgICAgIHJlYWRXcml0ZU1vZGU6IHRoaXMucmVhZFdyaXRlTW9kZSxcbiAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLmRlc2NyaXB0aW9uID8gdGhpcy5kZXNjcmlwdGlvbiA6IG51bGwsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgc2VyaWFsaXplVmFsdWUoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgaWYgKHRoaXMuaXNCb29sZWFuKSB7XG4gICAgICByZXR1cm4gdGhpcy52YWx1ZSA9PT0gJ3RydWUnID8gJ3RydWUnIDogJ2ZhbHNlJztcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMudmFsdWUgPz8gJyc7XG4gIH1cblxuICBwcml2YXRlIGlzRHVwbGljYXRlTmFtZShjYW5kaWRhdGU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGV4aXN0aW5nID0gKHRoaXMuZXhpc3RpbmdOYW1lcyA/PyBbXSkubWFwKG4gPT4gKG4gPz8gJycpLnRyaW0oKSk7XG4gICAgaWYgKHRoaXMubW9kZSA9PT0gJ2VkaXQnKSB7XG4gICAgICBjb25zdCBvcmlnaW5hbCA9ICh0aGlzLmluaXRpYWxWYWx1ZT8ubmFtZSA/PyAnJykudHJpbSgpO1xuICAgICAgcmV0dXJuIGNhbmRpZGF0ZSAhPT0gb3JpZ2luYWwgJiYgZXhpc3RpbmcuaW5jbHVkZXMoY2FuZGlkYXRlKTtcbiAgICB9XG4gICAgcmV0dXJuIGV4aXN0aW5nLmluY2x1ZGVzKGNhbmRpZGF0ZSk7XG4gIH1cblxuICBwcml2YXRlIGlzVmFsaWROdW1iZXIocmF3OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBjb25zdCB0cmltbWVkID0gcmF3LnRyaW0oKTtcbiAgICBpZiAoIXRyaW1tZWQpIHsgcmV0dXJuIHRydWU7IH1cbiAgICByZXR1cm4gIU51bWJlci5pc05hTihOdW1iZXIodHJpbW1lZCkpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1nYXAtNCBjcWEtdy1mdWxsXCI+XG5cbiAgPCEtLSBOYW1lIC0tPlxuICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sXCI+XG4gICAgPGNxYS1jdXN0b20taW5wdXRcbiAgICAgIGxhYmVsPVwiTmFtZVwiXG4gICAgICBwbGFjZWhvbGRlcj1cImUuZy4gaWhnX2FwaV9rZXlcIlxuICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgW3ZhbHVlXT1cIm5hbWVcIlxuICAgICAgW3JlcXVpcmVkXT1cInRydWVcIlxuICAgICAgW2Z1bGxXaWR0aF09XCJ0cnVlXCJcbiAgICAgIFtlcnJvcnNdPVwibmFtZUVycm9yc0FycmF5XCJcbiAgICAgIGlucHV0SW5saW5lU3R5bGU9XCJmb250LWZhbWlseTogdWktbW9ub3NwYWNlLCBTRk1vbm8tUmVndWxhciwgTWVubG8sIE1vbmFjbywgQ29uc29sYXMsICdMaWJlcmF0aW9uIE1vbm8nLCBtb25vc3BhY2U7XCJcbiAgICAgICh2YWx1ZUNoYW5nZSk9XCJvbk5hbWVDaGFuZ2UoJGV2ZW50KVwiPlxuICAgIDwvY3FhLWN1c3RvbS1pbnB1dD5cbiAgICA8c3BhbiAqbmdJZj1cIiFuYW1lRXJyb3JcIlxuICAgICAgY2xhc3M9XCJjcWEtdGV4dC14cyBjcWEtdGV4dC1ncmF5LTUwMCBjcWEtbXQtMVwiPlxuICAgICAgTmFtZXMgbXVzdCBiZSB1bmlxdWUgYWNyb3NzIHRoZSBlbnRpcmUgd29ya3NwYWNlIChwcmltYXJ5IGtleSDigJQgbm8gZHVwbGljYXRlcykuXG4gICAgPC9zcGFuPlxuICA8L2Rpdj5cblxuICA8IS0tIFR5cGUgKyBQZXJtaXNzaW9uIHJvdyAtLT5cbiAgPGRpdiBjbGFzcz1cImNxYS1ncmlkIGNxYS1ncmlkLWNvbHMtMiBjcWEtZ2FwLTRcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sXCI+XG4gICAgICA8bGFiZWwgY2xhc3M9XCJjcWEtdGV4dC1zbSBjcWEtbWItMS41IGNxYS1mb250LW1lZGl1bSBjcWEtdGV4dC1ncmF5LTcwMFwiPlR5cGU8L2xhYmVsPlxuICAgICAgPGNxYS1kcm9wZG93bi1idXR0b25cbiAgICAgICAgW29wdGlvbnNdPVwidHlwZURyb3Bkb3duT3B0aW9uc1wiXG4gICAgICAgIFtzZWxlY3RlZFZhbHVlXT1cInR5cGVcIlxuICAgICAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cIm9uVHlwZUNoYW5nZSgkZXZlbnQpXCI+XG4gICAgICA8L2NxYS1kcm9wZG93bi1idXR0b24+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbFwiPlxuICAgICAgPGxhYmVsIGNsYXNzPVwiY3FhLXRleHQtc20gY3FhLW1iLTEuNSBjcWEtZm9udC1tZWRpdW0gY3FhLXRleHQtZ3JheS03MDBcIj5QZXJtaXNzaW9uPC9sYWJlbD5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcWEtcHQtMC41XCI+XG4gICAgICAgIDxjcWEtcGVybWlzc2lvbi10b2dnbGVcbiAgICAgICAgICBbdmFsdWVdPVwicmVhZFdyaXRlTW9kZVwiXG4gICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cIm9uUGVybWlzc2lvbkNoYW5nZSgkZXZlbnQpXCI+XG4gICAgICAgIDwvY3FhLXBlcm1pc3Npb24tdG9nZ2xlPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDwhLS0gVmFsdWUgLS0+XG4gIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2xcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNCb29sZWFuOyBlbHNlIG5vbkJvb2xlYW5WYWx1ZVwiPlxuICAgICAgPGxhYmVsIGNsYXNzPVwiY3FhLXRleHQtc20gY3FhLW1iLTEuNSBjcWEtZm9udC1tZWRpdW0gY3FhLXRleHQtZ3JheS03MDBcIj5WYWx1ZTwvbGFiZWw+XG4gICAgICA8Y3FhLWRyb3Bkb3duLWJ1dHRvblxuICAgICAgICBbb3B0aW9uc109XCJib29sZWFuRHJvcGRvd25PcHRpb25zXCJcbiAgICAgICAgW3NlbGVjdGVkVmFsdWVdPVwidmFsdWVcIlxuICAgICAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cIm9uQm9vbGVhblZhbHVlQ2hhbmdlKCRldmVudClcIj5cbiAgICAgIDwvY3FhLWRyb3Bkb3duLWJ1dHRvbj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI25vbkJvb2xlYW5WYWx1ZT5cbiAgICAgIDxjcWEtY3VzdG9tLWlucHV0XG4gICAgICAgIGxhYmVsPVwiVmFsdWVcIlxuICAgICAgICBbdHlwZV09XCJpc1Bhc3N3b3JkID8gJ3Bhc3N3b3JkJyA6ICd0ZXh0J1wiXG4gICAgICAgIFt2YWx1ZV09XCJ2YWx1ZVwiXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJ2YWx1ZVBsYWNlaG9sZGVyXCJcbiAgICAgICAgW2Z1bGxXaWR0aF09XCJ0cnVlXCJcbiAgICAgICAgW2Vycm9yc109XCJ2YWx1ZUVycm9yc0FycmF5XCJcbiAgICAgICAgaW5wdXRJbmxpbmVTdHlsZT1cImZvbnQtZmFtaWx5OiB1aS1tb25vc3BhY2UsIFNGTW9uby1SZWd1bGFyLCBNZW5sbywgTW9uYWNvLCBDb25zb2xhcywgJ0xpYmVyYXRpb24gTW9ubycsIG1vbm9zcGFjZTtcIlxuICAgICAgICAodmFsdWVDaGFuZ2UpPVwib25WYWx1ZUNoYW5nZSgkZXZlbnQpXCI+XG4gICAgICA8L2NxYS1jdXN0b20taW5wdXQ+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9kaXY+XG5cbiAgPCEtLSBEZXNjcmlwdGlvbiAtLT5cbiAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbFwiPlxuICAgIDxjcWEtY3VzdG9tLXRleHRhcmVhXG4gICAgICBsYWJlbD1cIkRlc2NyaXB0aW9uXCJcbiAgICAgIHBsYWNlaG9sZGVyPVwiV2hhdCBpcyB0aGlzIHZhcmlhYmxlIHVzZWQgZm9yP1wiXG4gICAgICBbdmFsdWVdPVwiZGVzY3JpcHRpb25cIlxuICAgICAgW3Jvd3NdPVwiMlwiXG4gICAgICBbZnVsbFdpZHRoXT1cInRydWVcIlxuICAgICAgKHZhbHVlQ2hhbmdlKT1cIm9uRGVzY3JpcHRpb25DaGFuZ2UoJGV2ZW50KVwiPlxuICAgIDwvY3FhLWN1c3RvbS10ZXh0YXJlYT5cbiAgPC9kaXY+XG5cbjwvZGl2PlxuIl19
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV3LWdsb2JhbC12YXJpYWJsZS1kaWFsb2cubW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9uZXctZ2xvYmFsLXZhcmlhYmxlLWRpYWxvZy9uZXctZ2xvYmFsLXZhcmlhYmxlLWRpYWxvZy5tb2RlbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIEdsb2JhbFZhcmlhYmxlVUlUeXBlID0gJ1N0cmluZycgfCAnTnVtYmVyJyB8ICdCb29sZWFuJyB8ICdQYXNzd29yZCc7XG5leHBvcnQgdHlwZSBHbG9iYWxWYXJpYWJsZVVJUGVybWlzc2lvbiA9ICdSTycgfCAnUlcnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEdsb2JhbFZhcmlhYmxlRGlhbG9nVmFsdWUge1xuICBuYW1lOiBzdHJpbmc7XG4gIHR5cGU6IEdsb2JhbFZhcmlhYmxlVUlUeXBlO1xuICB2YWx1ZTogc3RyaW5nIHwgbnVsbDtcbiAgcmVhZFdyaXRlTW9kZTogR2xvYmFsVmFyaWFibGVVSVBlcm1pc3Npb247XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmcgfCBudWxsO1xuICB0YWdzOiBzdHJpbmdbXTtcbn1cblxuLyoqIEEgdGFnIG9wdGlvbiBmb3IgdGhlIGRpYWxvZydzIGF1dG9jb21wbGV0ZS4gYGNvdW50YCBkcml2ZXMgdGhlIHNtYWxsIHVzYWdlXG4gKiAgYmFkZ2UgaW4gdGhlIHN1Z2dlc3Rpb24gbGlzdDsgcGFzcyAwIChvciBvbWl0KSBmb3IgbmV3bHktY3JlYXRlZCBlbnRyaWVzLiAqL1xuZXhwb3J0IGludGVyZmFjZSBHbG9iYWxWYXJpYWJsZVRhZ09wdGlvbiB7XG4gIG5hbWU6IHN0cmluZztcbiAgY291bnQ/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmV3R2xvYmFsVmFyaWFibGVEaWFsb2dJbnB1dHMge1xuICBtb2RlPzogJ2NyZWF0ZScgfCAnZWRpdCc7XG4gIGluaXRpYWxWYWx1ZT86IFBhcnRpYWw8R2xvYmFsVmFyaWFibGVEaWFsb2dWYWx1ZT47XG4gIGV4aXN0aW5nTmFtZXM/OiBzdHJpbmdbXTtcbiAgYXZhaWxhYmxlVGFncz86IEdsb2JhbFZhcmlhYmxlVGFnT3B0aW9uW107XG59XG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV3LWdsb2JhbC12YXJpYWJsZS1kaWFsb2cubW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9uZXctZ2xvYmFsLXZhcmlhYmxlLWRpYWxvZy9uZXctZ2xvYmFsLXZhcmlhYmxlLWRpYWxvZy5tb2RlbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIEdsb2JhbFZhcmlhYmxlVUlUeXBlID0gJ1N0cmluZycgfCAnTnVtYmVyJyB8ICdCb29sZWFuJyB8ICdQYXNzd29yZCc7XG5leHBvcnQgdHlwZSBHbG9iYWxWYXJpYWJsZVVJUGVybWlzc2lvbiA9ICdSTycgfCAnUlcnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEdsb2JhbFZhcmlhYmxlRGlhbG9nVmFsdWUge1xuICBuYW1lOiBzdHJpbmc7XG4gIHR5cGU6IEdsb2JhbFZhcmlhYmxlVUlUeXBlO1xuICB2YWx1ZTogc3RyaW5nIHwgbnVsbDtcbiAgcmVhZFdyaXRlTW9kZTogR2xvYmFsVmFyaWFibGVVSVBlcm1pc3Npb247XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmcgfCBudWxsO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5ld0dsb2JhbFZhcmlhYmxlRGlhbG9nSW5wdXRzIHtcbiAgbW9kZT86ICdjcmVhdGUnIHwgJ2VkaXQnO1xuICBpbml0aWFsVmFsdWU/OiBQYXJ0aWFsPEdsb2JhbFZhcmlhYmxlRGlhbG9nVmFsdWU+O1xuICBleGlzdGluZ05hbWVzPzogc3RyaW5nW107XG59XG4iXX0=