@limble/limble-tree 1.0.0-beta.1 → 1.0.0-beta.3

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 (128) hide show
  1. package/esm2020/lib/components/branch/branch.component.mjs +4 -4
  2. package/esm2020/lib/components/branch/index.mjs +2 -0
  3. package/esm2020/lib/components/dragover-no-change-detect.mjs +39 -0
  4. package/esm2020/lib/components/dropzone/dropzone.component.mjs +2 -2
  5. package/esm2020/lib/components/dropzone/index.mjs +2 -0
  6. package/esm2020/lib/components/host-component.interface.mjs +1 -1
  7. package/esm2020/lib/components/index.mjs +7 -0
  8. package/esm2020/lib/components/node-component.interface.mjs +1 -1
  9. package/esm2020/lib/components/root/index.mjs +2 -0
  10. package/esm2020/lib/components/root/root.component.mjs +3 -3
  11. package/esm2020/lib/core/branch-options.interface.mjs +1 -1
  12. package/esm2020/lib/core/branchable.interface.mjs +2 -0
  13. package/esm2020/lib/core/component-container.interface.mjs +2 -0
  14. package/esm2020/lib/core/configuration/configuration.mjs +1 -1
  15. package/esm2020/lib/core/configuration/index.mjs +3 -0
  16. package/esm2020/lib/core/configuration/tree-options.interface.mjs +1 -1
  17. package/esm2020/lib/core/index.mjs +11 -5
  18. package/esm2020/lib/core/tree-branch/branch-controller.mjs +4 -4
  19. package/esm2020/lib/core/tree-branch/graftable.interface.mjs +2 -0
  20. package/esm2020/lib/core/tree-branch/index.mjs +4 -0
  21. package/esm2020/lib/core/tree-branch/tree-branch.mjs +37 -12
  22. package/esm2020/lib/core/tree-node-base.mjs +14 -3
  23. package/esm2020/lib/core/tree-node.interface.mjs +2 -0
  24. package/esm2020/lib/core/tree-plot.interface.mjs +2 -0
  25. package/esm2020/lib/core/tree-root/index.mjs +3 -0
  26. package/esm2020/lib/core/tree-root/root-controller.mjs +4 -4
  27. package/esm2020/lib/core/tree-root/tree-root.mjs +19 -6
  28. package/esm2020/lib/core/tree-service/index.mjs +2 -0
  29. package/esm2020/lib/core/tree-service/tree.service.mjs +3 -3
  30. package/esm2020/lib/events/drag/drag-end-event.mjs +1 -1
  31. package/esm2020/lib/events/drag/drag-start-event.mjs +1 -1
  32. package/esm2020/lib/events/drag/drop-event.mjs +1 -1
  33. package/esm2020/lib/events/general/destruction-event.mjs +1 -1
  34. package/esm2020/lib/events/index.mjs +3 -2
  35. package/esm2020/lib/events/relational/graft-event.mjs +1 -1
  36. package/esm2020/lib/events/relational/index.mjs +2 -1
  37. package/esm2020/lib/events/relational/prune-event.mjs +1 -1
  38. package/esm2020/lib/events/relational/relational-tree-event.interface.mjs +1 -1
  39. package/esm2020/lib/events/relational/tree-relationship.interface.mjs +2 -0
  40. package/esm2020/lib/events/tree-event.interface.mjs +2 -0
  41. package/esm2020/lib/extras/collapse/collapse.mjs +1 -1
  42. package/esm2020/lib/extras/collapse/index.mjs +2 -1
  43. package/esm2020/lib/extras/drag-and-drop/drag-and-drop.mjs +4 -6
  44. package/esm2020/lib/extras/drag-and-drop/drag-and-drop.module.mjs +4 -5
  45. package/esm2020/lib/extras/drag-and-drop/drag-and-drop.service.mjs +1 -1
  46. package/esm2020/lib/extras/drag-and-drop/drag-state.mjs +2 -2
  47. package/esm2020/lib/extras/drag-and-drop/dropzone-renderer.mjs +6 -8
  48. package/esm2020/lib/extras/drag-and-drop/index.mjs +4 -2
  49. package/esm2020/lib/legacy/legacy-tree.mjs +3 -4
  50. package/esm2020/lib/legacy/limble-tree-legacy.module.mjs +2 -2
  51. package/esm2020/lib/legacy/limble-tree-root/limble-tree-root.component.mjs +2 -2
  52. package/esm2020/public-api.mjs +9 -9
  53. package/esm2020/shared/has-property.mjs +4 -0
  54. package/esm2020/shared/index.mjs +3 -0
  55. package/fesm2015/limble-limble-tree.mjs +294 -241
  56. package/fesm2015/limble-limble-tree.mjs.map +1 -1
  57. package/fesm2020/limble-limble-tree.mjs +292 -239
  58. package/fesm2020/limble-limble-tree.mjs.map +1 -1
  59. package/lib/components/branch/branch.component.d.ts +4 -4
  60. package/lib/components/branch/index.d.ts +1 -0
  61. package/lib/components/dropzone/index.d.ts +1 -0
  62. package/lib/components/host-component.interface.d.ts +1 -1
  63. package/lib/components/index.d.ts +6 -0
  64. package/lib/components/node-component.interface.d.ts +1 -1
  65. package/lib/components/root/index.d.ts +1 -0
  66. package/lib/components/root/root.component.d.ts +3 -3
  67. package/lib/core/branch-options.interface.d.ts +1 -1
  68. package/lib/core/branchable.interface.d.ts +8 -0
  69. package/lib/core/configuration/configuration.d.ts +1 -1
  70. package/lib/core/configuration/index.d.ts +2 -0
  71. package/lib/core/configuration/tree-options.interface.d.ts +2 -2
  72. package/lib/core/index.d.ts +10 -4
  73. package/lib/core/tree-branch/branch-controller.d.ts +4 -4
  74. package/lib/core/tree-branch/graftable.interface.d.ts +7 -0
  75. package/lib/core/tree-branch/index.d.ts +3 -0
  76. package/lib/core/tree-branch/tree-branch.d.ts +15 -11
  77. package/lib/core/tree-node-base.d.ts +10 -10
  78. package/lib/core/tree-node.interface.d.ts +16 -0
  79. package/lib/core/tree-root/index.d.ts +2 -0
  80. package/lib/core/tree-root/root-controller.d.ts +4 -4
  81. package/lib/core/tree-root/tree-root.d.ts +11 -9
  82. package/lib/core/tree-service/index.d.ts +1 -0
  83. package/lib/core/tree-service/tree.service.d.ts +2 -2
  84. package/lib/events/drag/drag-end-event.d.ts +9 -11
  85. package/lib/events/drag/drag-start-event.d.ts +5 -6
  86. package/lib/events/drag/drop-event.d.ts +6 -7
  87. package/lib/events/general/destruction-event.d.ts +5 -5
  88. package/lib/events/index.d.ts +2 -1
  89. package/lib/events/relational/graft-event.d.ts +7 -6
  90. package/lib/events/relational/index.d.ts +1 -0
  91. package/lib/events/relational/prune-event.d.ts +7 -6
  92. package/lib/events/relational/relational-tree-event.interface.d.ts +5 -4
  93. package/lib/events/relational/tree-relationship.interface.d.ts +6 -0
  94. package/lib/events/tree-event.interface.d.ts +5 -0
  95. package/lib/extras/collapse/collapse.d.ts +1 -1
  96. package/lib/extras/collapse/index.d.ts +1 -0
  97. package/lib/extras/drag-and-drop/drag-and-drop.d.ts +2 -4
  98. package/lib/extras/drag-and-drop/drag-and-drop.module.d.ts +1 -2
  99. package/lib/extras/drag-and-drop/drag-and-drop.service.d.ts +3 -3
  100. package/lib/extras/drag-and-drop/drag-state.d.ts +1 -1
  101. package/lib/extras/drag-and-drop/dropzone-renderer.d.ts +8 -9
  102. package/lib/extras/drag-and-drop/index.d.ts +3 -1
  103. package/package.json +1 -1
  104. package/public-api.d.ts +8 -8
  105. package/shared/has-property.d.ts +3 -0
  106. package/shared/index.d.ts +2 -0
  107. package/esm2020/lib/core/relationship.interface.mjs +0 -2
  108. package/esm2020/lib/extras/drag-and-drop/dragover-no-change-detect.mjs +0 -39
  109. package/esm2020/lib/structure/branchable.interface.mjs +0 -2
  110. package/esm2020/lib/structure/component-container.interface.mjs +0 -2
  111. package/esm2020/lib/structure/graftable.interface.mjs +0 -2
  112. package/esm2020/lib/structure/index.mjs +0 -9
  113. package/esm2020/lib/structure/tree-branch-node.interface.mjs +0 -2
  114. package/esm2020/lib/structure/tree-event.interface.mjs +0 -2
  115. package/esm2020/lib/structure/tree-node.interface.mjs +0 -2
  116. package/esm2020/lib/structure/tree-plot.mjs +0 -2
  117. package/esm2020/lib/structure/tree-relationship.interface.mjs +0 -2
  118. package/lib/core/relationship.interface.d.ts +0 -5
  119. package/lib/structure/branchable.interface.d.ts +0 -4
  120. package/lib/structure/graftable.interface.d.ts +0 -6
  121. package/lib/structure/index.d.ts +0 -8
  122. package/lib/structure/tree-branch-node.interface.d.ts +0 -5
  123. package/lib/structure/tree-event.interface.d.ts +0 -5
  124. package/lib/structure/tree-node.interface.d.ts +0 -14
  125. package/lib/structure/tree-relationship.interface.d.ts +0 -7
  126. /package/lib/{extras/drag-and-drop → components}/dragover-no-change-detect.d.ts +0 -0
  127. /package/lib/{structure → core}/component-container.interface.d.ts +0 -0
  128. /package/lib/{structure/tree-plot.d.ts → core/tree-plot.interface.d.ts} +0 -0
@@ -1,12 +1,12 @@
1
- import { assert } from "../../../shared/assert";
2
- import { TreeNodeBase } from "../tree-node-base";
1
+ import { assert } from "../../../shared";
3
2
  import { TreeError } from "../../errors";
4
- import { dropzoneRenderer } from "../../extras/drag-and-drop/dropzone-renderer";
5
- import { config } from "../configuration/configuration";
6
- import { TreeRoot } from "..";
7
- import { treeCollapser } from "../../extras/collapse/collapse";
8
- import { DestructionEvent, GraftEvent, PruneEvent } from "../../events";
3
+ import { dropzoneRenderer } from "../../extras/drag-and-drop";
4
+ import { TreeRoot } from "../tree-root";
5
+ import { TreeNodeBase } from "../tree-node-base";
6
+ import { config } from "../configuration";
9
7
  import { BranchController } from "./branch-controller";
8
+ import { treeCollapser } from "../../extras/collapse";
9
+ import { DestructionEvent, GraftEvent, PruneEvent } from "../../events";
10
10
  /** Represents a standard node in a tree. Renders a BranchComponent.
11
11
  *
12
12
  * @remarks
@@ -24,21 +24,22 @@ export class TreeBranch {
24
24
  const parentBranchesContainer = parent.getBranchesContainer();
25
25
  assert(parentBranchesContainer !== undefined);
26
26
  this.branchController = new BranchController(this, parentBranchesContainer);
27
+ const hostView = this.branchController.getHostView();
27
28
  this.setIndentation(parent);
28
29
  if (parent instanceof TreeBranch &&
29
30
  parent.branchOptions.defaultCollapsed === true) {
30
31
  treeCollapser.storePrecollapsedNode(parent, this);
31
- this.detachedView = this.branchController.getHostView();
32
+ this.detachedView = hostView;
32
33
  }
33
34
  else {
34
- parentBranchesContainer.insert(this.branchController.getHostView());
35
- this.detectChanges();
35
+ parentBranchesContainer.insert(hostView);
36
36
  this._parent = parent;
37
37
  this.dispatch(new GraftEvent(this, {
38
38
  parent: this._parent,
39
39
  child: this,
40
40
  index: this._parent.branches().length
41
41
  }));
42
+ this.detectChanges();
42
43
  }
43
44
  }
44
45
  /** @returns All child branches as an array of TreeBranch instances, in order. */
@@ -190,7 +191,12 @@ export class TreeBranch {
190
191
  if (this.isDestroyed()) {
191
192
  throw new TreeError("Cannot grow a branch on a destroyed tree branch");
192
193
  }
193
- return new TreeBranch(this, { component, ...options });
194
+ try {
195
+ return new TreeBranch(this, { component, ...options });
196
+ }
197
+ catch (error) {
198
+ this.handleUserlandError(error);
199
+ }
194
200
  }
195
201
  /**
196
202
  * Determines this branch's index in relation to its sibling branches.
@@ -373,9 +379,28 @@ export class TreeBranch {
373
379
  }
374
380
  });
375
381
  }
382
+ handleUserlandError(error) {
383
+ // When an error occurs in a userland component during a tree operation,
384
+ // it can cause undefined, bizarre behavior in the tree. To prevent this,
385
+ // we destroy the tree and throw an error instead. This helps protect
386
+ // the end-user's data from corruption.
387
+ this.furthestAncestor().destroy();
388
+ this.treeNodeBase.handleUserlandError(error);
389
+ }
376
390
  indexIsOutOfRange(parent, index) {
377
391
  return index < 0 || index > parent.branches().length;
378
392
  }
393
+ furthestAncestor() {
394
+ // eslint-disable-next-line @typescript-eslint/no-this-alias -- This code is for an iteration, not to make `this` available in other scopes (which is what the rule is intended to protect against).
395
+ let node = this;
396
+ while (node instanceof TreeBranch) {
397
+ const parent = node.parent();
398
+ if (parent === undefined)
399
+ break;
400
+ node = parent;
401
+ }
402
+ return node;
403
+ }
379
404
  reattachView(index) {
380
405
  assert(this._parent !== undefined);
381
406
  assert(this.detachedView !== null);
@@ -397,4 +422,4 @@ export class TreeBranch {
397
422
  branchesContainerEl.style.marginLeft = `${options?.indentation ?? 16}px`;
398
423
  }
399
424
  }
400
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1icmFuY2guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9saW1ibGUtdHJlZS9zcmMvbGliL2NvcmUvdHJlZS1icmFuY2gvdHJlZS1icmFuY2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBVWhELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBS3pDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN4RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQzlCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMvRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQU94RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV2RDs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sT0FBTyxVQUFVO0lBZXBCLFlBQ0csTUFBOEQsRUFDOUMsYUFBbUQ7UUFBbkQsa0JBQWEsR0FBYixhQUFhLENBQXNDO1FBUjlELGlCQUFZLEdBQW1CLElBQUksQ0FBQztRQVV6QyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDdkMsTUFBTSx1QkFBdUIsR0FBRyxNQUFNLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUM5RCxNQUFNLENBQUMsdUJBQXVCLEtBQUssU0FBUyxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksZ0JBQWdCLENBQ3pDLElBQUksRUFDSix1QkFBdUIs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QUFDO1FBQ3ZDLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxDQUFDLGdCQUFnQjthQUM3QyxnQkFBZ0IsRUFBRTthQUNsQixzQkFBc0IsQ0FBQyxvQkFBb0IsQ0FBQzthQUM1QyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDWixNQUFNLENBQUMsbUJBQW1CLFlBQVksV0FBVyxDQUFDLENBQUM7UUFDbkQsbUJBQW1CLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxHQUFHLE9BQU8sRUFBRSxXQUFXLElBQUksRUFBRSxJQUFJLENBQUM7SUFDNUUsQ0FBQztDQUNIIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYXNzZXJ0IH0gZnJvbSBcIi4uLy4uLy4uL3NoYXJlZC9hc3NlcnRcIjtcbmltcG9ydCB0eXBlIHsgT2JzZXJ2YWJsZSB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgdHlwZSB7XG4gICBDb21wb25lbnRSZWYsXG4gICBUeXBlLFxuICAgVmlld0NvbnRhaW5lclJlZixcbiAgIFZpZXdSZWZcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEJyYW5jaENvbXBvbmVudCB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL2JyYW5jaC9icmFuY2guY29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSB7IE5vZGVDb21wb25lbnQgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy9ub2RlLWNvbXBvbmVudC5pbnRlcmZhY2VcIjtcbmltcG9ydCB7IFRyZWVOb2RlQmFzZSB9IGZyb20gXCIuLi90cmVlLW5vZGUtYmFzZVwiO1xuaW1wb3J0IHsgVHJlZUVycm9yIH0gZnJvbSBcIi4uLy4uL2Vycm9yc1wiO1xuaW1wb3J0IHR5cGUge1xuICAgQnJhbmNoT3B0aW9ucyxcbiAgIEZ1bGxCcmFuY2hPcHRpb25zXG59IGZyb20gXCIuLi9icmFuY2gtb3B0aW9ucy5pbnRlcmZhY2VcIjtcbmltcG9ydCB7IGRyb3B6b25lUmVuZGVyZXIgfSBmcm9tIFwiLi4vLi4vZXh0cmFzL2RyYWctYW5kLWRyb3AvZHJvcHpvbmUtcmVuZGVyZXJcIjtcbmltcG9ydCB7IGNvbmZpZyB9IGZyb20gXCIuLi9jb25maWd1cmF0aW9uL2NvbmZpZ3VyYXRpb25cIjtcbmltcG9ydCB7IFRyZWVSb290IH0gZnJvbSBcIi4uXCI7XG5pbXBvcnQgeyB0cmVlQ29sbGFwc2VyIH0gZnJvbSBcIi4uLy4uL2V4dHJhcy9jb2xsYXBzZS9jb2xsYXBzZVwiO1xuaW1wb3J0IHsgRGVzdHJ1Y3Rpb25FdmVudCwgR3JhZnRFdmVudCwgUHJ1bmVFdmVudCB9IGZyb20gXCIuLi8uLi9ldmVudHNcIjtcbmltcG9ydCB0eXBlIHtcbiAgIFRyZWVOb2RlLFxuICAgVHJlZVBsb3QsXG4gICBUcmVlRXZlbnQsXG4gICBUcmVlQnJhbmNoTm9kZVxufSBmcm9tIFwiLi4vLi4vc3RydWN0dXJlXCI7XG5pbXBvcnQgeyBCcmFuY2hDb250cm9sbGVyIH0gZnJvbSBcIi4vYnJhbmNoLWNvbnRyb2xsZXJcIjtcblxuLyoqIFJlcHJlc2VudHMgYSBzdGFuZGFyZCBub2RlIGluIGEgdHJlZS4gUmVuZGVycyBhIEJyYW5jaENvbXBvbmVudC5cbiAqXG4gKiBAcmVtYXJrc1xuICogVGhpcyBjbGFzcyByZW5kZXJzIGEgYnJhbmNoIGNvbXBvbmVudCwgd2hpY2ggZG9lcyB0aGUgZm9sbG93aW5nOlxuICogMS4gUmVuZGVycyBhIGNvbXBvbmVudCBwcm92aWRlZCBieSB0aGUgdXNlclxuICogMi4gUHJvdmlkZXMgYSBjb250YWluZXIgaW4gd2hpY2ggY2hpbGQgYnJhbmNoZXMgbWF5IGJlIHJlbmRlcmVkXG4gKiAzLiBDb250YWlucyB0d28gRHJvcHpvbmVzOiBvbmUgZm9yIGRyb3BwaW5nIGJyYW5jaGVzIGJlbG93IHRoaXMgYnJhbmNoIChhcyBhXG4gKiBzaWJsaW5nKSwgYW5kIG9uZSBmb3IgZHJvcHBpbmcgYnJhbmNoZXMgYXMgYSBmaXJzdCBjaGlsZCBvZiB0aGlzIGJyYW5jaC5cbiAqL1xuZXhwb3J0IGNsYXNzIFRyZWVCcmFuY2g8VXNlcmxhbmRDb21wb25lbnQ+XG4gICBpbXBsZW1lbnRzXG4gICAgICBUcmVlQnJhbmNoTm9kZTxcbiAgICAgICAgIEJyYW5jaENvbXBvbmVudDxVc2VybGFuZENvbXBvbmVudD4sXG4gICAgICAgICBUcmVlQnJhbmNoPFVzZXJsYW5kQ29tcG9uZW50PixcbiAgICAgICAgIE5vZGVDb21wb25lbnRcbiAgICAgID5cbntcbiAgIHByaXZhdGUgcmVhZG9ubHkgYnJhbmNoQ29udHJvbGxlcjogQnJhbmNoQ29udHJvbGxlcjxVc2VybGFuZENvbXBvbmVudD47XG4gICBwcml2YXRlIGRldGFjaGVkVmlldzogVmlld1JlZiB8IG51bGwgPSBudWxsO1xuICAgcHJpdmF0ZSBfcGFyZW50OlxuICAgICAgfCBUcmVlTm9kZTxUcmVlQnJhbmNoPFVzZXJsYW5kQ29tcG9uZW50PiwgTm9kZUNvbXBvbmVudD5cbiAgICAgIHwgdW5kZWZpbmVkO1xuICAgcHJpdmF0ZSByZWFkb25seSB0cmVlTm9kZUJhc2U6IFRyZWVOb2RlQmFzZTxVc2VybGFuZENvbXBvbmVudD47XG5cbiAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICAgIHBhcmVudDogVHJlZU5vZGU8VHJlZUJyYW5jaDxVc2VybGFuZENvbXBvbmVudD4sIE5vZGVDb21wb25lbnQ+LFxuICAgICAgcHVibGljIHJlYWRvbmx5IGJyYW5jaE9wdGlvbnM6IEZ1bGxCcmFuY2hPcHRpb25zPFVzZXJsYW5kQ29tcG9uZW50PlxuICAgKSB7XG4gICAgICB0aGlzLnRyZWVOb2RlQmFzZSA9IG5ldyBUcmVlTm9kZUJhc2UoKTtcbiAgICAgIGNvbnN0IHBhcmVudEJyYW5jaGVzQ29udGFpbmVyID0gcGFyZW50LmdldEJyYW5jaGVzQ29udGFpbmVyKCk7XG4gICAgICBhc3NlcnQocGFyZW50QnJhbmNoZXNDb250YWluZXIgIT09IHVuZGVmaW5lZCk7XG4gICAgICB0aGlzLmJyYW5jaENvbnRyb2xsZXIgPSBuZXcgQnJhbmNoQ29udHJvbGxlcihcbiAgICAgICAgIHRoaXMsXG4gICAgICAgICBwYXJlbnRCcmFuY2hlc0NvbnRhaW5lclxuICAgICAgKTtcbiAgICAgIHRoaXMuc2V0SW5kZW50YXRpb24ocGFyZW50KTtcbiAgICAgIGlmIChcbiAgICAgICAgIHBhcmVudCBpbnN0YW5jZW9mIFRyZWVCcmFuY2ggJiZcbiAgICAgICAgIHBhcmVudC5icmFuY2hPcHRpb25zLmRlZmF1bHRDb2xsYXBzZWQgPT09IHRydWVcbiAgICAgICkge1xuICAgICAgICAgdHJlZUNvbGxhcHNlci5zdG9yZVByZWNvbGxhcHNlZE5vZGUocGFyZW50LCB0aGlzKTtcbiAgICAgICAgIHRoaXMuZGV0YWNoZWRWaWV3ID0gdGhpcy5icmFuY2hDb250cm9sbGVyLmdldEhvc3RWaWV3KCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAgcGFyZW50QnJhbmNoZXNDb250YWluZXIuaW5zZXJ0KHRoaXMuYnJhbmNoQ29udHJvbGxlci5nZXRIb3N0VmlldygpKTtcbiAgICAgICAgIHRoaXMuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgdGhpcy5fcGFyZW50ID0gcGFyZW50O1xuICAgICAgICAgdGhpcy5kaXNwYXRjaChcbiAgICAgICAgICAgIG5ldyBHcmFmdEV2ZW50KHRoaXMsIHtcbiAgICAgICAgICAgICAgIHBhcmVudDogdGhpcy5fcGFyZW50LFxuICAgICAgICAgICAgICAgY2hpbGQ6IHRoaXMsXG4gICAgICAgICAgICAgICBpbmRleDogdGhpcy5fcGFyZW50LmJyYW5jaGVzKCkubGVuZ3RoXG4gICAgICAgICAgICB9KVxuICAgICAgICAgKTtcbiAgICAgIH1cbiAgIH1cblxuICAgLyoqIEByZXR1cm5zIEFsbCBjaGlsZCBicmFuY2hlcyBhcyBhbiBhcnJheSBvZiBUcmVlQnJhbmNoIGluc3RhbmNlcywgaW4gb3JkZXIuICovXG4gICBwdWJsaWMgYnJhbmNoZXMoKTogQXJyYXk8VHJlZUJyYW5jaDxVc2VybGFuZENvbXBvbmVudD4+IHtcbiAgICAgIHJldHVybiB0aGlzLnRyZWVOb2RlQmFzZS5icmFuY2hlcygpO1xuICAgfVxuXG4gICAvKipcbiAgICAqIFJlY3Vyc2l2ZWx5IGRlc3Ryb3lzIGFsbCBkZXNjZW5kYW50IGJyYW5jaGVzLCBhcyB3ZWxsIGFzIGl0c2VsZi4gVGhpc1xuICAgICogcmVsZWFzZXMgYWxsIHJlc291cmNlcyBoZWxkIG9yIGNvbnN1bWVkIGJ5IHRoaXMgYnJhbmNoIGFuZCBpdHMgZGVzY2VuZGFudHMuXG4gICAgKlxuICAgICogQHJlbWFya3NcbiAgICAqIEl0IGlzIGltcG9ydGFudCB0byBjYWxsIHRoaXMgbWV0aG9kIHdoZW4gYSBicmFuY2ggaXMgZGlzY2FyZGVkLCBvdGhlcndpc2VcbiAgICAqIHRoZSBicmFuY2ggd2lsbCByZW1haW4gaW4gbWVtb3J5IGFuZCBjb250aW51ZSB0byBjb25zdW1lIHJlc291cmNlcy5cbiAgICAqL1xuICAgcHVibGljIGRlc3Ryb3koKTogdm9pZCB7XG4gICAgICBpZiAodGhpcy5pc0Rlc3Ryb3llZCgpKSB7XG4gICAgICAgICB0aHJvdyBuZXcgVHJlZUVycm9yKFwiQ2Fubm90IGRlc3Ryb3kgYSBkZXN0cm95ZWQgdHJlZSBicmFuY2hcIik7XG4gICAgICB9XG4gICAgICB0aGlzLnBydW5lKCk7XG4gICAgICB0cmVlQ29sbGFwc2VyLmV4cGFuZCh0aGlzKTtcbiAgICAgIGRyb3B6b25lUmVuZGVyZXIuY2xlYXJUcmVlRnJvbVJlZ2lzdHJ5KHRoaXMpO1xuICAgICAgdGhpcy5icmFuY2hDb250cm9sbGVyLmdldEhvc3RWaWV3KCkuZGVzdHJveSgpO1xuICAgICAgdGhpcy50cmVlTm9kZUJhc2UuZGVzdHJveSgpO1xuICAgICAgdGhpcy5icmFuY2hDb250cm9sbGVyLmRlc3Ryb3koKTtcbiAgICAgIHRoaXMuZGlzcGF0Y2gobmV3IERlc3RydWN0aW9uRXZlbnQodGhpcykpO1xuICAgfVxuXG4gICAvKiogUnVuIEFuZ3VsYXIgY2hhbmdlIGRldGVjdGlvbiBvbiB0aGlzIGJyYW5jaCAqL1xuICAgcHVibGljIGRldGVjdENoYW5nZXMoKTogdm9pZCB7XG4gICAgICB0aGlzLmJyYW5jaENvbnRyb2xsZXIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgfVxuXG4gICAvKipcbiAgICAqIEVtaXRzIHRoZSBzcGVjaWZpZWQgVHJlZUV2ZW50LlxuICAgICpcbiAgICAqIEByZW1hcmtzXG4gICAgKiBDYXV0aW9uOiBJdCBpcyBub3QgcmVjb21tZW5kZWQgdG8gbWFudWFsbHkgZW1pdCBUcmVlRXZlbnRzIHRoYXQgYXJlIGFscmVhZHlcbiAgICAqIHByb3ZpZGVkIGJ5IHRoZSBsaWJyYXJ5LiBGb3IgZXhhbXBsZSwgaXQgaXMgbm90IHJlY29tbWVuZGVkIHRvIGVtaXQgYVxuICAgICogYEdyYWZ0RXZlbnRgLCBgRGVzdHJ1Y3Rpb25FdmVudGAsIGV0Yy4gVGhlc2UgZXZlbnRzIG1heSBiZSB1c2VkIGJ5IHRoZSB0cmVlLFxuICAgICogYW5kIGVtaXR0aW5nIHRoZW0gbWFudWFsbHkgbWF5IGNhdXNlIHVuZXhwZWN0ZWQgYmVoYXZpb3IuIEluc3RlYWQsIHdlXG4gICAgKiByZWNvbW1lbmQgaW1wbGVtZW50aW5nIHRoZSBUcmVlRXZlbnQgaW50ZXJmYWNlIHdpdGggeW91ciBvd24gY3VzdG9tIGV2ZW50c1xuICAgICogYW5kIGRpc3BhdGNoaW5nIHRob3NlLlxuICAgICpcbiAgICAqIEBwYXJhbSBldmVudCAtIFRoZSBUcmVlRXZlbnQgdGhhdCB3aWxsIGJlIGVtaXR0ZWQuXG4gICAgKi9cbiAgIHB1YmxpYyBkaXNwYXRjaChldmVudDogVHJlZUV2ZW50KTogdm9pZCB7XG4gICAgICB0aGlzLnRyZWVOb2RlQmFzZS5kaXNwYXRjaChldmVudCk7XG4gICAgICB0aGlzLl9wYXJlbnQ/LmRpc3BhdGNoKGV2ZW50KTtcbiAgIH1cblxuICAgLyoqXG4gICAgKiBAcmV0dXJuc1xuICAgICogQW4gb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIFRyZWVFdmVudHMgd2hlbmV2ZXIgYW4gZXZlbnQgaXMgZGlzcGF0Y2hlZFxuICAgICogaW4gdGhpcyBicmFuY2ggb3IgYW55IG9mIGl0cyBkZXNjZW5kYW50IGJyYW5jaGVzLlxuICAgICovXG4gICBwdWJsaWMgZXZlbnRzKCk6IE9ic2VydmFibGU8VHJlZUV2ZW50PiB7XG4gICAgICByZXR1cm4gdGhpcy50cmVlTm9kZUJhc2UuZXZlbnRzKCk7XG4gICB9XG5cbiAgIC8qKlxuICAgICogQHBhcmFtIGluZGV4IC0gVGhlIGluZGV4IG9mIHRoZSBjaGlsZCBicmFuY2ggdG8gcmV0cmlldmUuXG4gICAgKlxuICAgICogQHJldHVybnNcbiAgICAqIFRoZSBjaGlsZCBicmFuY2ggYXQgdGhlIHNwZWNpZmllZCBpbmRleCwgb3IgdW5kZWZpbmVkIGlmIHRoZXJlIGlzXG4gICAgKiBubyBjaGlsZCBicmFuY2ggYXQgdGhlIHNwZWNpZmllZCBpbmRleC5cbiAgICAqL1xuICAgcHVibGljIGdldEJyYW5jaChpbmRleDogbnVtYmVyKTogVHJlZUJyYW5jaDxVc2VybGFuZENvbXBvbmVudD4gfCB1bmRlZmluZWQge1xuICAgICAgcmV0dXJuIHRoaXMudHJlZU5vZGVCYXNlLmdldEJyYW5jaChpbmRleCk7XG4gICB9XG5cbiAgIC8qKiBAcmV0dXJucyBUaGUgVmlld0NvbnRhaW5lclJlZiBpbiB3aGljaCBjaGlsZCBicmFuY2hlcyBhcmUgcmVuZGVyZWQgKi9cbiAgIHB1YmxpYyBnZXRCcmFuY2hlc0NvbnRhaW5lcigpOiBWaWV3Q29udGFpbmVyUmVmIHwgdW5kZWZpbmVkIHtcbiAgICAgIGlmICh0aGlzLmlzRGVzdHJveWVkKCkpIHtcbiAgICAgICAgIHRocm93IG5ldyBUcmVlRXJyb3IoXG4gICAgICAgICAgICBcIkNhbm5vdCBnZXQgYnJhbmNoZXMgY29udGFpbmVyIGZyb20gYSBkZXN0cm95ZWQgdHJlZSBicmFuY2hcIlxuICAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLmJyYW5jaENvbnRyb2xsZXIuZ2V0QnJhbmNoZXNDb250YWluZXIoKTtcbiAgIH1cblxuICAgLyoqIEByZXR1cm5zIFRoZSBpbnN0YW5jZSBvZiBCcmFuY2hDb21wb25lbnQgdGhhdCBpcyByZW5kZXJlZCBieSB0aGlzIGNsYXNzLiAqL1xuICAgcHVibGljIGdldENvbXBvbmVudEluc3RhbmNlKCk6IEJyYW5jaENvbXBvbmVudDxVc2VybGFuZENvbXBvbmVudD4ge1xuICAgICAgaWYgKHRoaXMuaXNEZXN0cm95ZWQoKSkge1xuICAgICAgICAgdGhyb3cgbmV3IFRyZWVFcnJvcihcbiAgICAgICAgICAgIFwiQ2Fubm90IGdldCBjb21wb25lbnQgaW5zdGFuY2UgZnJvbSBhIGRlc3Ryb3llZCB0cmVlIGJyYW5jaFwiXG4gICAgICAgICApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMuYnJhbmNoQ29udHJvbGxlci5nZXRDb21wb25lbnRJbnN0YW5jZSgpO1xuICAgfVxuXG4gICAvKiogQHJldHVybnMgVGhlIEhvc3QgVmlldyBpbiB3aGljaCB0aGUgQnJhbmNoQ29tcG9uZW50IGlzIHJlbmRlcmVkICovXG4gICBwdWJsaWMgZ2V0SG9zdFZpZXcoKTogVmlld1JlZiB7XG4gICAgICBpZiAodGhpcy5pc0Rlc3Ryb3llZCgpKSB7XG4gICAgICAgICB0aHJvdyBuZXcgVHJlZUVycm9yKFxuICAgICAgICAgICAgXCJDYW5ub3QgZ2V0IGNvbXBvbmVudCBob3N0IHZpZXcgZnJvbSBhIGRlc3Ryb3llZCB0cmVlIGJyYW5jaFwiXG4gICAgICAgICApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMuYnJhbmNoQ29udHJvbGxlci5nZXRIb3N0VmlldygpO1xuICAgfVxuXG4gICAvKiogQHJldHVybnMgVGhlIEJyYW5jaENvbXBvbmVudCBhcyBhIG5hdGl2ZSBIVE1MIEVsZW1lbnQgKi9cbiAgIHB1YmxpYyBnZXROYXRpdmVFbGVtZW50KCk6IEhUTUxFbGVtZW50IHtcbiAgICAgIGlmICh0aGlzLmlzRGVzdHJveWVkKCkpIHtcbiAgICAgICAgIHRocm93IG5ldyBUcmVlRXJyb3IoXG4gICAgICAgICAgICBcIkNhbm5vdCBnZXQgbmF0aXZlIGVsZW1lbnQgZnJvbSBhIGRlc3Ryb3llZCB0cmVlIGJyYW5jaFwiXG4gICAgICAgICApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMuYnJhbmNoQ29udHJvbGxlci5nZXROYXRpdmVFbGVtZW50KCk7XG4gICB9XG5cbiAgIC8qKlxuICAgICogQHJldHVybnNcbiAgICAqIEEgQ29tcG9uZW50UmVmIGNvbnRhaW5pbmcgdGhlIGluc3RhbmNlIG9mIHRoZSB1c2VyLXByb3ZpZGVkXG4gICAgKiBjb21wb25lbnQgd2hpY2ggaXMgcmVuZGVyZWQgYnkgdGhpcyBicmFuY2guXG4gICAgKi9cbiAgIHB1YmxpYyBnZXRVc2VybGFuZENvbXBvbmVudFJlZigpOlxuICAgICAgfCBDb21wb25lbnRSZWY8VXNlcmxhbmRDb21wb25lbnQ+XG4gICAgICB8IHVuZGVmaW5lZCB7XG4gICAgICBpZiAodGhpcy5pc0Rlc3Ryb3llZCgpKSB7XG4gICAgICAgICB0aHJvdyBuZXcgVHJlZUVycm9yKFxuICAgICAgICAgICAgXCJDYW5ub3QgZ2V0IHVzZXJsYW5kIGNvbXBvbmVudCBmcm9tIGEgZGVzdHJveWVkIHRyZWUgYnJhbmNoXCJcbiAgICAgICAgICk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5icmFuY2hDb250cm9sbGVyLmdldFVzZXJsYW5kQ29tcG9uZW50UmVmKCk7XG4gICB9XG5cbiAgIC8qKlxuICAgICogQXR0YWNoZXMgYSBicmFuY2ggdG8gYSBuZXcgcGFyZW50IG5vZGUuXG4gICAgKlxuICAgICogQHJlbWFya3NcbiAgICAqIElmIG5vdCBhbHJlYWR5IHBydW5lZCwgdGhpcyBtZXRob2QgcHJ1bmVzIChyZW1vdmVzKSB0aGlzIGJyYW5jaCBmcm9tIGl0c1xuICAgICogY3VycmVudCBwb3NpdGlvbiBpbiB0aGUgdHJlZTsgdGhlbiBncmFmdHMgKHJlYXR0YWNoZXMpIGl0IGFzIGEgY2hpbGQgb2YgdGhlXG4gICAgKiBzcGVjaWZpZWQgcGFyZW50IGJyYW5jaCBhdCB0aGUgc3BlY2lmaWVkIGluZGV4LiBJZiBubyBpbmRleCBpcyBzcGVjaWZpZWQsXG4gICAgKiB0aGUgYnJhbmNoIGlzIGFwcGVuZGVkIGFzIHRoZSBsYXN0IGNoaWxkIG9mIHRoZSBwYXJlbnQuIFRoaXMgY2F1c2VzIHRoaXNcbiAgICAqIGJyYW5jaCdzIGFzc29jaWF0ZWQgQnJhbmNoQ29tcG9uZW50IHRvIGJlIHJlLXJlbmRlcmVkIGluIHRoZSBET00gYXQgdGhlXG4gICAgKiBuZXcgbG9jYXRpb24uXG4gICAgKlxuICAgICogQHBhcmFtIG5ld1BhcmVudCAtIFRoZSBuZXcgcGFyZW50IGJyYW5jaCB1bnRvIHdoaWNoIHRoaXMgYnJhbmNoIHdpbGwgYmUgZ3JhZnRlZC5cbiAgICAqIEBwYXJhbSBpbmRleCAtIFRoZSBpbmRleCBhdCB3aGljaCB0aGlzIGJyYW5jaCB3aWxsIGJlIGdyYWZ0ZWQuIElmIG5vdCBzcGVjaWZpZWQsXG4gICAgKiB0aGlzIGJyYW5jaCB3aWxsIGJlIGFwcGVuZGVkIGFzIHRoZSBsYXN0IGNoaWxkIG9mIHRoZSBuZXcgcGFyZW50LlxuICAgICpcbiAgICAqIEByZXR1cm5zIFRoZSBpbmRleCBhdCB3aGljaCB0aGlzIGJyYW5jaCB3YXMgZ3JhZnRlZC5cbiAgICAqL1xuICAgcHVibGljIGdyYWZ0VG8oXG4gICAgICBuZXdQYXJlbnQ6IFRyZWVOb2RlPFRyZWVCcmFuY2g8VXNlcmxhbmRDb21wb25lbnQ+LCBOb2RlQ29tcG9uZW50PixcbiAgICAgIGluZGV4PzogbnVtYmVyXG4gICApOiBudW1iZXIge1xuICAgICAgdGhpcy5jaGVja0dyYWZ0TG9jYXRpb25WYWxpZGl0eShuZXdQYXJlbnQsIGluZGV4KTtcbiAgICAgIGNvbnN0IG93bkluZGV4ID0gdGhpcy5pbmRleCgpO1xuICAgICAgaWYgKG93bkluZGV4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgIHRoaXMucHJ1bmUoKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX3BhcmVudCA9IG5ld1BhcmVudDtcbiAgICAgIGNvbnN0IG5ld0luZGV4ID0gaW5kZXggPz8gbmV3UGFyZW50LmJyYW5jaGVzKCkubGVuZ3RoO1xuICAgICAgdGhpcy5yZWF0dGFjaFZpZXcobmV3SW5kZXgpO1xuICAgICAgdGhpcy5kaXNwYXRjaChcbiAgICAgICAgIG5ldyBHcmFmdEV2ZW50KHRoaXMsIHtcbiAgICAgICAgICAgIHBhcmVudDogbmV3UGFyZW50LFxuICAgICAgICAgICAgY2hpbGQ6IHRoaXMsXG4gICAgICAgICAgICBpbmRleDogbmV3SW5kZXhcbiAgICAgICAgIH0pXG4gICAgICApO1xuICAgICAgcmV0dXJuIG5ld0luZGV4O1xuICAgfVxuXG4gICAvKipcbiAgICAqIEFwcGVuZHMgYSBuZXcgY2hpbGQgYnJhbmNoIHRvIHRoaXMgYnJhbmNoLiBUaGUgY2hpbGQgYnJhbmNoIHdpbGwgcmVuZGVyXG4gICAgKiB0aGUgc3BlY2lmaWVkIGNvbXBvbmVudCBhY2NvcmRpbmcgdG8gdGhlIChvcHRpb25hbCkgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXIuXG4gICAgKlxuICAgICogQHBhcmFtIGNvbXBvbmVudCAtIFRoZSBjb21wb25lbnQgdG8gcmVuZGVyIGluIHRoZSBuZXcgY2hpbGQgYnJhbmNoLlxuICAgICogQHBhcmFtIG9wdGlvbnMgLSBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBuZXcgY2hpbGQgYnJhbmNoLlxuICAgICpcbiAgICAqIEByZXR1cm5zXG4gICAgKiBUaGUgbmV3bHktY3JlYXRlZCBjaGlsZCBicmFuY2guXG4gICAgKi9cbiAgIHB1YmxpYyBncm93KFxuICAgICAgY29tcG9uZW50OiBUeXBlPFVzZXJsYW5kQ29tcG9uZW50PixcbiAgICAgIG9wdGlvbnM/OiBCcmFuY2hPcHRpb25zPFVzZXJsYW5kQ29tcG9uZW50PlxuICAgKTogVHJlZUJyYW5jaDxVc2VybGFuZENvbXBvbmVudD4ge1xuICAgICAgaWYgKHRoaXMuaXNEZXN0cm95ZWQoKSkge1xuICAgICAgICAgdGhyb3cgbmV3IFRyZWVFcnJvcihcIkNhbm5vdCBncm93IGEgYnJhbmNoIG9uIGEgZGVzdHJveWVkIHRyZWUgYnJhbmNoXCIpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG5ldyBUcmVlQnJhbmNoKHRoaXMsIHsgY29tcG9uZW50LCAuLi5vcHRpb25zIH0pO1xuICAgfVxuXG4gICAvKipcbiAgICAqIERldGVybWluZXMgdGhpcyBicmFuY2gncyBpbmRleCBpbiByZWxhdGlvbiB0byBpdHMgc2libGluZyBicmFuY2hlcy5cbiAgICAqXG4gICAgKiBAcmVtYXJrc1xuICAgICogRm9yIGV4YW1wbGUsIGlmIGl0IGlzIHRoZSBmaXJzdCBjaGlsZCBvZiBpdHMgcGFyZW50LCB0aGlzIG1ldGhvZCB3aWxsIHJldHVyblxuICAgICogMC4gSWYgaXQgaXMgdGhlIHNlY29uZCBjaGlsZCBvZiBpdHMgcGFyZW50LCB0aGlzIG1ldGhvZCB3aWxsIHJldHVybiAxLlxuICAgICpcbiAgICAqIElmIHRoaXMgYnJhbmNoIGhhcyBubyBwYXJlbnQsIChlZywgaWYgdGhpcyBicmFuY2ggaGFzIGJlZW4gcHJ1bmVkKSB0aGlzXG4gICAgKiBtZXRob2Qgd2lsbCByZXR1cm4gdW5kZWZpbmVkLlxuICAgICpcbiAgICAqIEByZXR1cm5zXG4gICAgKiBUaGUgaW5kZXggb2YgdGhpcyBicmFuY2ggaW4gcmVsYXRpb24gdG8gaXRzIHNpYmxpbmcgYnJhbmNoZXMsIG9yIHVuZGVmaW5lZC5cbiAgICAqL1xuICAgcHVibGljIGluZGV4KCk6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gICAgICBpZiAoIXRoaXMuX3BhcmVudCkge1xuICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5fcGFyZW50XG4gICAgICAgICAuYnJhbmNoZXMoKVxuICAgICAgICAgLmZpbmRJbmRleCgoYnJhbmNoKSA9PiBicmFuY2ggPT09IHRoaXMpO1xuICAgICAgYXNzZXJ0KGluZGV4ID49IDApO1xuICAgICAgcmV0dXJuIGluZGV4O1xuICAgfVxuXG4gICAvKiogQHJldHVybnMgYHRydWVgIGlmIHRoZSBicmFuY2ggaXMgZGVzdHJveWVkLCBgZmFsc2VgIG90aGVyd2lzZSAqL1xuICAgcHVibGljIGlzRGVzdHJveWVkKCk6IGJvb2xlYW4ge1xuICAgICAgcmV0dXJuIHRoaXMudHJlZU5vZGVCYXNlLmlzRGVzdHJveWVkKCk7XG4gICB9XG5cbiAgIC8qKlxuICAgICogQHJldHVybnNcbiAgICAqIFRoZSBkYXRhIHRoYXQgd2FzIHBhc3NlZCBpbnRvIHRoZSBgYnJhbmNoT3B0aW9uc2AnIGBtZXRhYCBwcm9wZXJ0eVxuICAgICogYXQgY29uc3RydWN0aW9uLlxuICAgICovXG4gICBwdWJsaWMgbWV0YSgpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcbiAgICAgIHJldHVybiB0aGlzLmJyYW5jaE9wdGlvbnMubWV0YSA/PyB7fTtcbiAgIH1cblxuICAgLyoqXG4gICAgKiBAcmV0dXJuc1xuICAgICogVGhpcyBicmFuY2gncyBwYXJlbnQgbm9kZSAod2hpY2ggbWF5IGJlIGEgVHJlZUJyYW5jaCBvciBUcmVlUm9vdCkuXG4gICAgKiBJZiB0aGlzIGJyYW5jaCBoYXMgbm8gcGFyZW50LCAoZWcsIGlmIHRoaXMgYnJhbmNoIGhhcyBiZWVuIHBydW5lZCkgdGhpc1xuICAgICogbWV0aG9kIHdpbGwgcmV0dXJuIHVuZGVmaW5lZC5cbiAgICAqL1xuICAgcHVibGljIHBhcmVudCgpOlxuICAgICAgfCBUcmVlTm9kZTxUcmVlQnJhbmNoPFVzZXJsYW5kQ29tcG9uZW50PiwgTm9kZUNvbXBvbmVudD5cbiAgICAgIHwgdW5kZWZpbmVkIHtcbiAgICAgIHJldHVybiB0aGlzLl9wYXJlbnQ7XG4gICB9XG5cbiAgIC8qKlxuICAgICogUHJvdmlkZXMgYSBtb2RlbCBkZXNjcmliaW5nIHRoaXMgYnJhbmNoJ3MgZGVzY2VuZGFudHMuXG4gICAgKlxuICAgICogQHJldHVybnNcbiAgICAqIEEgbXVsdGktZGltZW5zaW9uYWwgTWFwIHdoaWNoIGRlc2NyaWJlcyB0aGUgc2hhcGUgb2YgdGhpcyBicmFuY2gnc1xuICAgICogZGVzY2VuZGFudHMuXG4gICAgKlxuICAgICogQGV4YW1wbGVcbiAgICAqIEEgYnJhbmNoIHdpdGggbm8gY2hpbGRyZW4gd2lsbCByZXR1cm4gYW4gZW1wdHkgTWFwLiBBIGJyYW5jaCB3aXRoXG4gICAgKiBhIHNpbmdsZSBjaGlsZCB3aWxsIHJldHVybiBhIE1hcCB3aXRoIGEgc2luZ2xlIGVudHJ5LCB3aGVyZSB0aGUga2V5IGlzIHRoZSBpbmRleFxuICAgICogb2YgdGhlIGJyYW5jaCAoemVybykgYW5kIHRoZSB2YWx1ZSBpcyBhbiBlbXB0eSBNYXAuIEEgVHJlZSBsaWtlIHRoaXM6XG4gICAgKlxuICAgICogYGBgXG4gICAgKiAgICAgICAgIC0tLUJyYW5jaC0tLS0tLS1CcmFuY2hcbiAgICAqICAgICAgICAvXG4gICAgKiBCcmFuY2gtLS0tLS0tQnJhbmNoXG4gICAgKiAgICAgICAgXFxcbiAgICAqICAgICAgICAgLS0tQnJhbmNoXG4gICAgKiBgYGBcbiAgICAqIFdpbGwgcmV0dXJuIGEgTWFwIG9mIG1hdGNoaW5nIHNoYXBlOlxuICAgICogYGBgXG4gICAgKiBNYXAge1xuICAgICogICAgMDogTWFwIHsgMDogTWFwIHt9fSxcbiAgICAqICAgIDE6IE1hcCB7fSxcbiAgICAqICAgIDI6IE1hcCB7fVxuICAgICogfVxuICAgICogYGBgXG4gICAgKi9cbiAgIHB1YmxpYyBwbG90KCk6IFRyZWVQbG90IHtcbiAgICAgIHJldHVybiB0aGlzLnRyZWVOb2RlQmFzZS5wbG90KCk7XG4gICB9XG5cbiAgIC8qKlxuICAgICogQ2FsY3VsYXRlcyB0aGUgYnJhbmNoJ3MgcG9zaXRpb24gaW4gdGhlIHRyZWUgcmVsYXRpdmUgdG8gdGhlIFJvb3QuXG4gICAgKlxuICAgICogQHJlbWFya3NcbiAgICAqIFRoZSBwb3NpdGlvbiBpcyBkZXNjcmliZWQgYXMgYW4gYXJyYXkgb2YgbnVtYmVycywgd2hlcmUgZWFjaCBudW1iZXJcbiAgICAqIHJlcHJlc2VudHMgdGhlIGluZGV4IG9mIHRoZSBicmFuY2ggYXQgdGhhdCBsZXZlbCBvZiB0aGUgdHJlZS5cbiAgICAqXG4gICAgKiBGb3IgZXhhbXBsZSwgaWYgdGhpcyBicmFuY2ggaXMgdGhlIGZpcnN0IGNoaWxkIG9mIHRoZSBSb290LCB0aGlzIG1ldGhvZFxuICAgICogd2lsbCByZXR1cm4gWzBdLiBJZiB0aGlzIGJyYW5jaCBpcyB0aGUgc2Vjb25kIGNoaWxkIG9mIHRoZSBmaXJzdCBjaGlsZFxuICAgICogb2YgdGhlIFJvb3QsIHRoaXMgbWV0aG9kIHdpbGwgcmV0dXJuIFswLCAxXS5cbiAgICAqXG4gICAgKiBJZiB0aGUgYnJhbmNoIGlzIG5vdCByZWxhdGVkIHRvIGEgVHJlZVJvb3QsIChzdWNoIGFzIHdoZW4gaXQgaGFzIGJlZW5cbiAgICAqIHBydW5lZCwpIHRoaXMgbWV0aG9kIHdpbGwgdGhyb3cgYW4gZXJyb3IuXG4gICAgKlxuICAgICogQHJldHVybnNcbiAgICAqIEFuIGFycmF5IG9mIG51bWJlcnMgd2hpY2ggZGVzY3JpYmUgdGhlIGJyYW5jaCdzIHBvc2l0aW9uIGluIHRoZSB0cmVlXG4gICAgKiByZWxhdGl2ZSB0byB0aGUgUm9vdC5cbiAgICAqL1xuICAgcHVibGljIHBvc2l0aW9uKCk6IEFycmF5PG51bWJlcj4ge1xuICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmluZGV4KCk7XG4gICAgICBpZiAoaW5kZXggPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgdGhyb3cgbmV3IFRyZWVFcnJvcihcbiAgICAgICAgICAgIFwiYnJhbmNoIGhhcyBubyBwYXJlbnQuIFBvc2l0aW9uIGNhbm5vdCBiZSBkZXRlcm1pbmVkLlwiXG4gICAgICAgICApO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuX3BhcmVudCBpbnN0YW5jZW9mIFRyZWVCcmFuY2gpIHtcbiAgICAgICAgIGNvbnN0IHBhcmVudFBvc2l0aW9uID0gdGhpcy5fcGFyZW50LnBvc2l0aW9uKCk7XG4gICAgICAgICByZXR1cm4gWy4uLnBhcmVudFBvc2l0aW9uLCBpbmRleF07XG4gICAgICB9XG4gICAgICByZXR1cm4gW2luZGV4XTtcbiAgIH1cblxuICAgLyoqXG4gICAgKiBSZW1vdmVzIGEgYnJhbmNoIGZyb20gaXRzIHRyZWUgd2l0aG91dCBkZXN0cm95aW5nIGl0LlxuICAgICpcbiAgICAqIEByZW1hcmtzXG4gICAgKiBSZW1vdmVzIHRoaXMgYnJhbmNoIGZyb20gaXRzIHBhcmVudCBhbmQgZGV0YWNoZXMgaXRzIGFzc29jaWF0ZWRcbiAgICAqIEJyYW5jaENvbXBvbmVudCBmcm9tIHRoZSBET00uIFRoaXMgcHV0cyB0aGUgYnJhbmNoIGluIGEgXCJwcnVuZWRcIiBzdGF0ZSxcbiAgICAqIHdoaWNoIG1heSBhZmZlY3QgdGhlIGJlaGF2aW9yIG9mIG90aGVyIG1ldGhvZHMuXG4gICAgKlxuICAgICogQSBwcnVuZWQgYnJhbmNoIGNhbiBiZSByZWF0dGFjaGVkIHRvIGFueSBvdGhlciBub2RlIHVzaW5nIHRoZSBgZ3JhZnRUb2AgbWV0aG9kLlxuICAgICpcbiAgICAqIEByZXR1cm5zXG4gICAgKiBJdHNlbGYsIG9yIHVuZGVmaW5lZCBpZiBpdCBpcyBhbHJlYWR5IGluIGEgcHJ1bmVkIHN0YXRlLlxuICAgICovXG4gICBwdWJsaWMgcHJ1bmUoKTogdGhpcyB8IHVuZGVmaW5lZCB7XG4gICAgICBpZiAodGhpcy5pc0Rlc3Ryb3llZCgpKSB7XG4gICAgICAgICB0aHJvdyBuZXcgVHJlZUVycm9yKFwiQ2Fubm90IHBydW5lIGEgZGVzdHJveWVkIHRyZWUgYnJhbmNoXCIpO1xuICAgICAgfVxuICAgICAgY29uc3QgcGFyZW50ID0gdGhpcy5fcGFyZW50O1xuICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmluZGV4KCk7XG4gICAgICBpZiAoaW5kZXggPT09IHVuZGVmaW5lZCB8fCBwYXJlbnQgPT09IHVuZGVmaW5lZCkgcmV0dXJuO1xuICAgICAgY29uc3QgY29udGFpbmVyID0gcGFyZW50LmdldEJyYW5jaGVzQ29udGFpbmVyKCk7XG4gICAgICBhc3NlcnQoY29udGFpbmVyICE9PSB1bmRlZmluZWQpO1xuICAgICAgdGhpcy5kZXRhY2hlZFZpZXcgPSBjb250YWluZXIuZGV0YWNoKGluZGV4KTtcbiAgICAgIGFzc2VydCh0aGlzLmRldGFjaGVkVmlldyAhPT0gbnVsbCk7XG4gICAgICB0aGlzLmRldGFjaGVkVmlldy5kZXRhY2goKTtcbiAgICAgIHRoaXMuZGlzcGF0Y2goXG4gICAgICAgICBuZXcgUHJ1bmVFdmVudCh0aGlzLCB7XG4gICAgICAgICAgICBwYXJlbnQ6IHBhcmVudCxcbiAgICAgICAgICAgIGNoaWxkOiB0aGlzLFxuICAgICAgICAgICAgaW5kZXg6IGluZGV4XG4gICAgICAgICB9KVxuICAgICAgKTtcbiAgICAgIHRoaXMuX3BhcmVudCA9IHVuZGVmaW5lZDtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgfVxuXG4gICAvKipcbiAgICAqIEdldCB0aGUgcm9vdCBvZiB0aGUgdHJlZSB0byB3aGljaCB0aGlzIEJyYW5jaCBpcyBhdHRhY2hlZC5cbiAgICAqXG4gICAgKiBAcmV0dXJuc1xuICAgICogVGhlIFRyZWVSb290IG9mIHRoZSB0cmVlIHRoaXMgYnJhbmNoIGlzIGluLiBJZiB0aGlzIGJyYW5jaCBpc1xuICAgICogZG9lcyBub3QgaGF2ZSBhIHJvb3QgKHN1Y2ggYXMgd2hlbiBpdCBoYXMgYmVlbiBwcnVuZWQpIHRoaXMgbWV0aG9kIHdpbGxcbiAgICAqIHJldHVybiB1bmRlZmluZWQuXG4gICAgKi9cbiAgIHB1YmxpYyByb290KCk6IFRyZWVSb290PFVzZXJsYW5kQ29tcG9uZW50PiB8IHVuZGVmaW5lZCB7XG4gICAgICBjb25zdCBwYXJlbnQgPSB0aGlzLnBhcmVudCgpO1xuICAgICAgaWYgKHBhcmVudCBpbnN0YW5jZW9mIFRyZWVCcmFuY2gpIHtcbiAgICAgICAgIHJldHVybiBwYXJlbnQucm9vdCgpO1xuICAgICAgfVxuICAgICAgYXNzZXJ0KHBhcmVudCBpbnN0YW5jZW9mIFRyZWVSb290IHx8IHBhcmVudCA9PT0gdW5kZWZpbmVkKTtcbiAgICAgIHJldHVybiBwYXJlbnQ7XG4gICB9XG5cbiAgIC8qKlxuICAgICogVHJhdmVyc2VzIHRoaXMgYnJhbmNoJ3MgZGVzY2VuZGFudHMgaW4gZGVwdGgtZmlyc3QgcHJlLW9yZGVyLCBleGVjdXRpbmdcbiAgICAqIHRoZSBwcm92aWRlZCBjYWxsYmFjayBmdW5jdGlvbiBvbiBlYWNoIG5vZGUuIFRyYXZlcnNhbCBpbmNsdWRlcyB0aGlzIGJyYW5jaC5cbiAgICAqXG4gICAgKiBAcGFyYW0gY2FsbGJhY2sgLSBBIGZ1bmN0aW9uIHRvIGV4ZWN1dGUgb24gZWFjaCBub2RlLlxuICAgICovXG4gICBwdWJsaWMgdHJhdmVyc2UoXG4gICAgICBjYWxsYmFjazogKFxuICAgICAgICAgbm9kZTogVHJlZU5vZGU8VHJlZUJyYW5jaDxVc2VybGFuZENvbXBvbmVudD4sIE5vZGVDb21wb25lbnQ+XG4gICAgICApID0+IHZvaWRcbiAgICk6IHZvaWQge1xuICAgICAgY2FsbGJhY2sodGhpcyk7XG4gICAgICB0aGlzLnRyZWVOb2RlQmFzZS50cmF2ZXJzZShjYWxsYmFjayk7XG4gICB9XG5cbiAgIHByaXZhdGUgY2hlY2tHcmFmdExvY2F0aW9uVmFsaWRpdHkoXG4gICAgICBuZXdQYXJlbnQ6IFRyZWVOb2RlPFRyZWVCcmFuY2g8VXNlcmxhbmRDb21wb25lbnQ+LCBOb2RlQ29tcG9uZW50PixcbiAgICAgIGluZGV4PzogbnVtYmVyXG4gICApOiB2b2lkIHtcbiAgICAgIGlmICh0aGlzLmlzRGVzdHJveWVkKCkpIHtcbiAgICAgICAgIHRocm93IG5ldyBUcmVlRXJyb3IoXCJDYW5ub3QgZ3JhZnQgYSBkZXN0cm95ZWQgdHJlZSBicmFuY2hcIik7XG4gICAgICB9XG4gICAgICBpZiAobmV3UGFyZW50LmlzRGVzdHJveWVkKCkpIHtcbiAgICAgICAgIHRocm93IG5ldyBUcmVlRXJyb3IoXCJDYW5ub3QgZ3JhZnQgdG8gYSBkZXN0cm95ZWQgdHJlZSBicmFuY2hcIik7XG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgICB0eXBlb2YgaW5kZXggPT09IFwibnVtYmVyXCIgJiZcbiAgICAgICAgIHRoaXMuaW5kZXhJc091dE9mUmFuZ2UobmV3UGFyZW50LCBpbmRleClcbiAgICAgICkge1xuICAgICAgICAgdGhyb3cgbmV3IFRyZWVFcnJvcihcbiAgICAgICAgICAgIGBDYW5ub3QgZ3JhZnQgYnJhbmNoIGF0IGluZGV4ICR7aW5kZXh9IG9mIHRoZSBwYXJlbnQuIE91dCBvZiByYW5nZS5gXG4gICAgICAgICApO1xuICAgICAgfVxuICAgICAgdGhpcy50cmF2ZXJzZSgobm9kZSkgPT4ge1xuICAgICAgICAgaWYgKG5vZGUgPT09IG5ld1BhcmVudCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFRyZWVFcnJvcihcbiAgICAgICAgICAgICAgIFwiQ2Fubm90IGdyYWZ0IGEgYnJhbmNoIHRvIGl0c2VsZiBvciBhbnkgb2YgaXRzIG93biBkZXNjZW5kYW50c1wiXG4gICAgICAgICAgICApO1xuICAgICAgICAgfVxuICAgICAgfSk7XG4gICB9XG5cbiAgIHByaXZhdGUgaW5kZXhJc091dE9mUmFuZ2UoXG4gICAgICBwYXJlbnQ6IFRyZWVOb2RlPFRyZWVCcmFuY2g8VXNlcmxhbmRDb21wb25lbnQ+LCBOb2RlQ29tcG9uZW50PixcbiAgICAgIGluZGV4OiBudW1iZXJcbiAgICk6IGJvb2xlYW4ge1xuICAgICAgcmV0dXJuIGluZGV4IDwgMCB8fCBpbmRleCA+IHBhcmVudC5icmFuY2hlcygpLmxlbmd0aDtcbiAgIH1cblxuICAgcHJpdmF0ZSByZWF0dGFjaFZpZXcoaW5kZXg/OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgIGFzc2VydCh0aGlzLl9wYXJlbnQgIT09IHVuZGVmaW5lZCk7XG4gICAgICBhc3NlcnQodGhpcy5kZXRhY2hlZFZpZXcgIT09IG51bGwpO1xuICAgICAgY29uc3QgY29udGFpbmVyID0gdGhpcy5fcGFyZW50LmdldEJyYW5jaGVzQ29udGFpbmVyKCk7XG4gICAgICBhc3NlcnQoY29udGFpbmVyICE9PSB1bmRlZmluZWQpO1xuICAgICAgdGhpcy5kZXRhY2hlZFZpZXcucmVhdHRhY2goKTtcbiAgICAgIGNvbnRhaW5lci5pbnNlcnQodGhpcy5kZXRhY2hlZFZpZXcsIGluZGV4KTtcbiAgICAgIHRoaXMuZGV0YWNoZWRWaWV3ID0gbnVsbDtcbiAgIH1cblxuICAgcHJpdmF0ZSBzZXRJbmRlbnRhdGlvbihcbiAgICAgIHBhcmVudDogVHJlZU5vZGU8VHJlZUJyYW5jaDxVc2VybGFuZENvbXBvbmVudD4sIE5vZGVDb21wb25lbnQ+XG4gICApOiB2b2lkIHtcbiAgICAgIGNvbnN0IHJvb3QgPSBwYXJlbnQucm9vdCgpO1xuICAgICAgYXNzZXJ0KHJvb3QgIT09IHVuZGVmaW5lZCk7XG4gICAgICBjb25zdCBvcHRpb25zID0gY29uZmlnLmdldENvbmZpZyhyb290KTtcbiAgICAgIGNvbnN0IGJyYW5jaGVzQ29udGFpbmVyRWwgPSB0aGlzLmJyYW5jaENvbnRyb2xsZXJcbiAgICAgICAgIC5nZXROYXRpdmVFbGVtZW50KClcbiAgICAgICAgIC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwiYnJhbmNoZXMtY29udGFpbmVyXCIpXG4gICAgICAgICAuaXRlbSgwKTtcbiAgICAgIGFzc2VydChicmFuY2hlc0NvbnRhaW5lckVsIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpO1xuICAgICAgYnJhbmNoZXNDb250YWluZXJFbC5zdHlsZS5tYXJnaW5MZWZ0ID0gYCR7b3B0aW9ucz8uaW5kZW50YXRpb24gPz8gMTZ9cHhgO1xuICAgfVxufVxuIl19
425
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1icmFuY2guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9saW1ibGUtdHJlZS9zcmMvbGliL2NvcmUvdHJlZS1icmFuY2gvdHJlZS1icmFuY2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBU3pDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDekMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUd4QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDakQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBSzFDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RCxPQUFPLEVBQ0osZ0JBQWdCLEVBQ2hCLFVBQVUsRUFDVixVQUFVLEVBRVosTUFBTSxjQUFjLENBQUM7QUFFdEI7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLE9BQU8sVUFBVTtJQVFwQixZQUNHLE1BQW1DLEVBQ25CLGFBQW1EO1FBQW5ELGtCQUFhLEdBQWIsYUFBYSxDQUFzQztRQU45RCxpQkFBWSxHQUFtQixJQUFJLENBQUM7UUFRekMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3ZDLE1BQU0sdUJBQXVCLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDOUQsTUFBTSxDQUFDLHVCQUF1QixLQUFLLFNBQVMsQ0FBQyxDQUFDO1FBQzlDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLGdCQUFnQixDQUN6QyxJQUFJLEVBQ0osdUJBQXVC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QUNoQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sS0FBSyxTQUFTLENBQUMsQ0FBQztRQUNuQyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksS0FBSyxJQUFJLENBQUMsQ0FBQztRQUNuQyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDdEQsTUFBTSxDQUFDLFNBQVMsS0FBSyxTQUFTLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzdCLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMzQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztJQUM1QixDQUFDO0lBRU8sY0FBYyxDQUFDLE1BQW1DO1FBQ3ZELE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMzQixNQUFNLENBQUMsSUFBSSxLQUFLLFNBQVMsQ0FBQyxDQUFDO1FBQzNCLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkMsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLENBQUMsZ0JBQWdCO2FBQzdDLGdCQUFnQixFQUFFO2FBQ2xCLHNCQUFzQixDQUFDLG9CQUFvQixDQUFDO2FBQzVDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNaLE1BQU0sQ0FBQyxtQkFBbUIsWUFBWSxXQUFXLENBQUMsQ0FBQztRQUNuRCxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFHLEdBQUcsT0FBTyxFQUFFLFdBQVcsSUFBSSxFQUFFLElBQUksQ0FBQztJQUM1RSxDQUFDO0NBQ0giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhc3NlcnQgfSBmcm9tIFwiLi4vLi4vLi4vc2hhcmVkXCI7XG5pbXBvcnQgdHlwZSB7IE9ic2VydmFibGUgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHR5cGUge1xuICAgQ29tcG9uZW50UmVmLFxuICAgVHlwZSxcbiAgIFZpZXdDb250YWluZXJSZWYsXG4gICBWaWV3UmVmXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBCcmFuY2hDb21wb25lbnQgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50c1wiO1xuaW1wb3J0IHsgVHJlZUVycm9yIH0gZnJvbSBcIi4uLy4uL2Vycm9yc1wiO1xuaW1wb3J0IHsgZHJvcHpvbmVSZW5kZXJlciB9IGZyb20gXCIuLi8uLi9leHRyYXMvZHJhZy1hbmQtZHJvcFwiO1xuaW1wb3J0IHsgVHJlZVJvb3QgfSBmcm9tIFwiLi4vdHJlZS1yb290XCI7XG5pbXBvcnQgdHlwZSB7IFRyZWVOb2RlIH0gZnJvbSBcIi4uL3RyZWUtbm9kZS5pbnRlcmZhY2VcIjtcbmltcG9ydCB0eXBlIHsgVHJlZVBsb3QgfSBmcm9tIFwiLi4vdHJlZS1wbG90LmludGVyZmFjZVwiO1xuaW1wb3J0IHsgVHJlZU5vZGVCYXNlIH0gZnJvbSBcIi4uL3RyZWUtbm9kZS1iYXNlXCI7XG5pbXBvcnQgeyBjb25maWcgfSBmcm9tIFwiLi4vY29uZmlndXJhdGlvblwiO1xuaW1wb3J0IHR5cGUge1xuICAgQnJhbmNoT3B0aW9ucyxcbiAgIEZ1bGxCcmFuY2hPcHRpb25zXG59IGZyb20gXCIuLi9icmFuY2gtb3B0aW9ucy5pbnRlcmZhY2VcIjtcbmltcG9ydCB7IEJyYW5jaENvbnRyb2xsZXIgfSBmcm9tIFwiLi9icmFuY2gtY29udHJvbGxlclwiO1xuaW1wb3J0IHR5cGUgeyBHcmFmdGFibGUgfSBmcm9tIFwiLi9ncmFmdGFibGUuaW50ZXJmYWNlXCI7XG5pbXBvcnQgeyB0cmVlQ29sbGFwc2VyIH0gZnJvbSBcIi4uLy4uL2V4dHJhcy9jb2xsYXBzZVwiO1xuaW1wb3J0IHtcbiAgIERlc3RydWN0aW9uRXZlbnQsXG4gICBHcmFmdEV2ZW50LFxuICAgUHJ1bmVFdmVudCxcbiAgIHR5cGUgVHJlZUV2ZW50XG59IGZyb20gXCIuLi8uLi9ldmVudHNcIjtcblxuLyoqIFJlcHJlc2VudHMgYSBzdGFuZGFyZCBub2RlIGluIGEgdHJlZS4gUmVuZGVycyBhIEJyYW5jaENvbXBvbmVudC5cbiAqXG4gKiBAcmVtYXJrc1xuICogVGhpcyBjbGFzcyByZW5kZXJzIGEgYnJhbmNoIGNvbXBvbmVudCwgd2hpY2ggZG9lcyB0aGUgZm9sbG93aW5nOlxuICogMS4gUmVuZGVycyBhIGNvbXBvbmVudCBwcm92aWRlZCBieSB0aGUgdXNlclxuICogMi4gUHJvdmlkZXMgYSBjb250YWluZXIgaW4gd2hpY2ggY2hpbGQgYnJhbmNoZXMgbWF5IGJlIHJlbmRlcmVkXG4gKiAzLiBDb250YWlucyB0d28gRHJvcHpvbmVzOiBvbmUgZm9yIGRyb3BwaW5nIGJyYW5jaGVzIGJlbG93IHRoaXMgYnJhbmNoIChhcyBhXG4gKiBzaWJsaW5nKSwgYW5kIG9uZSBmb3IgZHJvcHBpbmcgYnJhbmNoZXMgYXMgYSBmaXJzdCBjaGlsZCBvZiB0aGlzIGJyYW5jaC5cbiAqL1xuZXhwb3J0IGNsYXNzIFRyZWVCcmFuY2g8VXNlcmxhbmRDb21wb25lbnQ+XG4gICBpbXBsZW1lbnRzIFRyZWVOb2RlPFVzZXJsYW5kQ29tcG9uZW50PiwgR3JhZnRhYmxlPFVzZXJsYW5kQ29tcG9uZW50Plxue1xuICAgcHJpdmF0ZSByZWFkb25seSBicmFuY2hDb250cm9sbGVyOiBCcmFuY2hDb250cm9sbGVyPFVzZXJsYW5kQ29tcG9uZW50PjtcbiAgIHByaXZhdGUgZGV0YWNoZWRWaWV3OiBWaWV3UmVmIHwgbnVsbCA9IG51bGw7XG4gICBwcml2YXRlIF9wYXJlbnQ6IFRyZWVOb2RlPFVzZXJsYW5kQ29tcG9uZW50PiB8IHVuZGVmaW5lZDtcbiAgIHByaXZhdGUgcmVhZG9ubHkgdHJlZU5vZGVCYXNlOiBUcmVlTm9kZUJhc2U8VXNlcmxhbmRDb21wb25lbnQ+O1xuXG4gICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgICBwYXJlbnQ6IFRyZWVOb2RlPFVzZXJsYW5kQ29tcG9uZW50PixcbiAgICAgIHB1YmxpYyByZWFkb25seSBicmFuY2hPcHRpb25zOiBGdWxsQnJhbmNoT3B0aW9uczxVc2VybGFuZENvbXBvbmVudD5cbiAgICkge1xuICAgICAgdGhpcy50cmVlTm9kZUJhc2UgPSBuZXcgVHJlZU5vZGVCYXNlKCk7XG4gICAgICBjb25zdCBwYXJlbnRCcmFuY2hlc0NvbnRhaW5lciA9IHBhcmVudC5nZXRCcmFuY2hlc0NvbnRhaW5lcigpO1xuICAgICAgYXNzZXJ0KHBhcmVudEJyYW5jaGVzQ29udGFpbmVyICE9PSB1bmRlZmluZWQpO1xuICAgICAgdGhpcy5icmFuY2hDb250cm9sbGVyID0gbmV3IEJyYW5jaENvbnRyb2xsZXIoXG4gICAgICAgICB0aGlzLFxuICAgICAgICAgcGFyZW50QnJhbmNoZXNDb250YWluZXJcbiAgICAgICk7XG4gICAgICBjb25zdCBob3N0VmlldyA9IHRoaXMuYnJhbmNoQ29udHJvbGxlci5nZXRIb3N0VmlldygpO1xuICAgICAgdGhpcy5zZXRJbmRlbnRhdGlvbihwYXJlbnQpO1xuICAgICAgaWYgKFxuICAgICAgICAgcGFyZW50IGluc3RhbmNlb2YgVHJlZUJyYW5jaCAmJlxuICAgICAgICAgcGFyZW50LmJyYW5jaE9wdGlvbnMuZGVmYXVsdENvbGxhcHNlZCA9PT0gdHJ1ZVxuICAgICAgKSB7XG4gICAgICAgICB0cmVlQ29sbGFwc2VyLnN0b3JlUHJlY29sbGFwc2VkTm9kZShwYXJlbnQsIHRoaXMpO1xuICAgICAgICAgdGhpcy5kZXRhY2hlZFZpZXcgPSBob3N0VmlldztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgICBwYXJlbnRCcmFuY2hlc0NvbnRhaW5lci5pbnNlcnQoaG9zdFZpZXcpO1xuICAgICAgICAgdGhpcy5fcGFyZW50ID0gcGFyZW50O1xuICAgICAgICAgdGhpcy5kaXNwYXRjaChcbiAgICAgICAgICAgIG5ldyBHcmFmdEV2ZW50KHRoaXMsIHtcbiAgICAgICAgICAgICAgIHBhcmVudDogdGhpcy5fcGFyZW50LFxuICAgICAgICAgICAgICAgY2hpbGQ6IHRoaXMsXG4gICAgICAgICAgICAgICBpbmRleDogdGhpcy5fcGFyZW50LmJyYW5jaGVzKCkubGVuZ3RoXG4gICAgICAgICAgICB9KVxuICAgICAgICAgKTtcbiAgICAgICAgIHRoaXMuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfVxuICAgfVxuXG4gICAvKiogQHJldHVybnMgQWxsIGNoaWxkIGJyYW5jaGVzIGFzIGFuIGFycmF5IG9mIFRyZWVCcmFuY2ggaW5zdGFuY2VzLCBpbiBvcmRlci4gKi9cbiAgIHB1YmxpYyBicmFuY2hlcygpOiBBcnJheTxUcmVlQnJhbmNoPFVzZXJsYW5kQ29tcG9uZW50Pj4ge1xuICAgICAgcmV0dXJuIHRoaXMudHJlZU5vZGVCYXNlLmJyYW5jaGVzKCk7XG4gICB9XG5cbiAgIC8qKlxuICAgICogUmVjdXJzaXZlbHkgZGVzdHJveXMgYWxsIGRlc2NlbmRhbnQgYnJhbmNoZXMsIGFzIHdlbGwgYXMgaXRzZWxmLiBUaGlzXG4gICAgKiByZWxlYXNlcyBhbGwgcmVzb3VyY2VzIGhlbGQgb3IgY29uc3VtZWQgYnkgdGhpcyBicmFuY2ggYW5kIGl0cyBkZXNjZW5kYW50cy5cbiAgICAqXG4gICAgKiBAcmVtYXJrc1xuICAgICogSXQgaXMgaW1wb3J0YW50IHRvIGNhbGwgdGhpcyBtZXRob2Qgd2hlbiBhIGJyYW5jaCBpcyBkaXNjYXJkZWQsIG90aGVyd2lzZVxuICAgICogdGhlIGJyYW5jaCB3aWxsIHJlbWFpbiBpbiBtZW1vcnkgYW5kIGNvbnRpbnVlIHRvIGNvbnN1bWUgcmVzb3VyY2VzLlxuICAgICovXG4gICBwdWJsaWMgZGVzdHJveSgpOiB2b2lkIHtcbiAgICAgIGlmICh0aGlzLmlzRGVzdHJveWVkKCkpIHtcbiAgICAgICAgIHRocm93IG5ldyBUcmVlRXJyb3IoXCJDYW5ub3QgZGVzdHJveSBhIGRlc3Ryb3llZCB0cmVlIGJyYW5jaFwiKTtcbiAgICAgIH1cbiAgICAgIHRoaXMucHJ1bmUoKTtcbiAgICAgIHRyZWVDb2xsYXBzZXIuZXhwYW5kKHRoaXMpO1xuICAgICAgZHJvcHpvbmVSZW5kZXJlci5jbGVhclRyZWVGcm9tUmVnaXN0cnkodGhpcyk7XG4gICAgICB0aGlzLmJyYW5jaENvbnRyb2xsZXIuZ2V0SG9zdFZpZXcoKS5kZXN0cm95KCk7XG4gICAgICB0aGlzLnRyZWVOb2RlQmFzZS5kZXN0cm95KCk7XG4gICAgICB0aGlzLmJyYW5jaENvbnRyb2xsZXIuZGVzdHJveSgpO1xuICAgICAgdGhpcy5kaXNwYXRjaChuZXcgRGVzdHJ1Y3Rpb25FdmVudCh0aGlzKSk7XG4gICB9XG5cbiAgIC8qKiBSdW4gQW5ndWxhciBjaGFuZ2UgZGV0ZWN0aW9uIG9uIHRoaXMgYnJhbmNoICovXG4gICBwdWJsaWMgZGV0ZWN0Q2hhbmdlcygpOiB2b2lkIHtcbiAgICAgIHRoaXMuYnJhbmNoQ29udHJvbGxlci5kZXRlY3RDaGFuZ2VzKCk7XG4gICB9XG5cbiAgIC8qKlxuICAgICogRW1pdHMgdGhlIHNwZWNpZmllZCBUcmVlRXZlbnQuXG4gICAgKlxuICAgICogQHJlbWFya3NcbiAgICAqIENhdXRpb246IEl0IGlzIG5vdCByZWNvbW1lbmRlZCB0byBtYW51YWxseSBlbWl0IFRyZWVFdmVudHMgdGhhdCBhcmUgYWxyZWFkeVxuICAgICogcHJvdmlkZWQgYnkgdGhlIGxpYnJhcnkuIEZvciBleGFtcGxlLCBpdCBpcyBub3QgcmVjb21tZW5kZWQgdG8gZW1pdCBhXG4gICAgKiBgR3JhZnRFdmVudGAsIGBEZXN0cnVjdGlvbkV2ZW50YCwgZXRjLiBUaGVzZSBldmVudHMgbWF5IGJlIHVzZWQgYnkgdGhlIHRyZWUsXG4gICAgKiBhbmQgZW1pdHRpbmcgdGhlbSBtYW51YWxseSBtYXkgY2F1c2UgdW5leHBlY3RlZCBiZWhhdmlvci4gSW5zdGVhZCwgd2VcbiAgICAqIHJlY29tbWVuZCBpbXBsZW1lbnRpbmcgdGhlIFRyZWVFdmVudCBpbnRlcmZhY2Ugd2l0aCB5b3VyIG93biBjdXN0b20gZXZlbnRzXG4gICAgKiBhbmQgZGlzcGF0Y2hpbmcgdGhvc2UuXG4gICAgKlxuICAgICogQHBhcmFtIGV2ZW50IC0gVGhlIFRyZWVFdmVudCB0aGF0IHdpbGwgYmUgZW1pdHRlZC5cbiAgICAqL1xuICAgcHVibGljIGRpc3BhdGNoKGV2ZW50OiBUcmVlRXZlbnQ8VXNlcmxhbmRDb21wb25lbnQ+KTogdm9pZCB7XG4gICAgICB0aGlzLnRyZWVOb2RlQmFzZS5kaXNwYXRjaChldmVudCk7XG4gICAgICB0aGlzLl9wYXJlbnQ/LmRpc3BhdGNoKGV2ZW50KTtcbiAgIH1cblxuICAgLyoqXG4gICAgKiBAcmV0dXJuc1xuICAgICogQW4gb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIFRyZWVFdmVudHMgd2hlbmV2ZXIgYW4gZXZlbnQgaXMgZGlzcGF0Y2hlZFxuICAgICogaW4gdGhpcyBicmFuY2ggb3IgYW55IG9mIGl0cyBkZXNjZW5kYW50IGJyYW5jaGVzLlxuICAgICovXG4gICBwdWJsaWMgZXZlbnRzKCk6IE9ic2VydmFibGU8VHJlZUV2ZW50PFVzZXJsYW5kQ29tcG9uZW50Pj4ge1xuICAgICAgcmV0dXJuIHRoaXMudHJlZU5vZGVCYXNlLmV2ZW50cygpO1xuICAgfVxuXG4gICAvKipcbiAgICAqIEBwYXJhbSBpbmRleCAtIFRoZSBpbmRleCBvZiB0aGUgY2hpbGQgYnJhbmNoIHRvIHJldHJpZXZlLlxuICAgICpcbiAgICAqIEByZXR1cm5zXG4gICAgKiBUaGUgY2hpbGQgYnJhbmNoIGF0IHRoZSBzcGVjaWZpZWQgaW5kZXgsIG9yIHVuZGVmaW5lZCBpZiB0aGVyZSBpc1xuICAgICogbm8gY2hpbGQgYnJhbmNoIGF0IHRoZSBzcGVjaWZpZWQgaW5kZXguXG4gICAgKi9cbiAgIHB1YmxpYyBnZXRCcmFuY2goaW5kZXg6IG51bWJlcik6IFRyZWVCcmFuY2g8VXNlcmxhbmRDb21wb25lbnQ+IHwgdW5kZWZpbmVkIHtcbiAgICAgIHJldHVybiB0aGlzLnRyZWVOb2RlQmFzZS5nZXRCcmFuY2goaW5kZXgpO1xuICAgfVxuXG4gICAvKiogQHJldHVybnMgVGhlIFZpZXdDb250YWluZXJSZWYgaW4gd2hpY2ggY2hpbGQgYnJhbmNoZXMgYXJlIHJlbmRlcmVkICovXG4gICBwdWJsaWMgZ2V0QnJhbmNoZXNDb250YWluZXIoKTogVmlld0NvbnRhaW5lclJlZiB8IHVuZGVmaW5lZCB7XG4gICAgICBpZiAodGhpcy5pc0Rlc3Ryb3llZCgpKSB7XG4gICAgICAgICB0aHJvdyBuZXcgVHJlZUVycm9yKFxuICAgICAgICAgICAgXCJDYW5ub3QgZ2V0IGJyYW5jaGVzIGNvbnRhaW5lciBmcm9tIGEgZGVzdHJveWVkIHRyZWUgYnJhbmNoXCJcbiAgICAgICAgICk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5icmFuY2hDb250cm9sbGVyLmdldEJyYW5jaGVzQ29udGFpbmVyKCk7XG4gICB9XG5cbiAgIC8qKiBAcmV0dXJucyBUaGUgaW5zdGFuY2Ugb2YgQnJhbmNoQ29tcG9uZW50IHRoYXQgaXMgcmVuZGVyZWQgYnkgdGhpcyBjbGFzcy4gKi9cbiAgIHB1YmxpYyBnZXRDb21wb25lbnRJbnN0YW5jZSgpOiBCcmFuY2hDb21wb25lbnQ8VXNlcmxhbmRDb21wb25lbnQ+IHtcbiAgICAgIGlmICh0aGlzLmlzRGVzdHJveWVkKCkpIHtcbiAgICAgICAgIHRocm93IG5ldyBUcmVlRXJyb3IoXG4gICAgICAgICAgICBcIkNhbm5vdCBnZXQgY29tcG9uZW50IGluc3RhbmNlIGZyb20gYSBkZXN0cm95ZWQgdHJlZSBicmFuY2hcIlxuICAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLmJyYW5jaENvbnRyb2xsZXIuZ2V0Q29tcG9uZW50SW5zdGFuY2UoKTtcbiAgIH1cblxuICAgLyoqIEByZXR1cm5zIFRoZSBIb3N0IFZpZXcgaW4gd2hpY2ggdGhlIEJyYW5jaENvbXBvbmVudCBpcyByZW5kZXJlZCAqL1xuICAgcHVibGljIGdldEhvc3RWaWV3KCk6IFZpZXdSZWYge1xuICAgICAgaWYgKHRoaXMuaXNEZXN0cm95ZWQoKSkge1xuICAgICAgICAgdGhyb3cgbmV3IFRyZWVFcnJvcihcbiAgICAgICAgICAgIFwiQ2Fubm90IGdldCBjb21wb25lbnQgaG9zdCB2aWV3IGZyb20gYSBkZXN0cm95ZWQgdHJlZSBicmFuY2hcIlxuICAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLmJyYW5jaENvbnRyb2xsZXIuZ2V0SG9zdFZpZXcoKTtcbiAgIH1cblxuICAgLyoqIEByZXR1cm5zIFRoZSBCcmFuY2hDb21wb25lbnQgYXMgYSBuYXRpdmUgSFRNTCBFbGVtZW50ICovXG4gICBwdWJsaWMgZ2V0TmF0aXZlRWxlbWVudCgpOiBIVE1MRWxlbWVudCB7XG4gICAgICBpZiAodGhpcy5pc0Rlc3Ryb3llZCgpKSB7XG4gICAgICAgICB0aHJvdyBuZXcgVHJlZUVycm9yKFxuICAgICAgICAgICAgXCJDYW5ub3QgZ2V0IG5hdGl2ZSBlbGVtZW50IGZyb20gYSBkZXN0cm95ZWQgdHJlZSBicmFuY2hcIlxuICAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLmJyYW5jaENvbnRyb2xsZXIuZ2V0TmF0aXZlRWxlbWVudCgpO1xuICAgfVxuXG4gICAvKipcbiAgICAqIEByZXR1cm5zXG4gICAgKiBBIENvbXBvbmVudFJlZiBjb250YWluaW5nIHRoZSBpbnN0YW5jZSBvZiB0aGUgdXNlci1wcm92aWRlZFxuICAgICogY29tcG9uZW50IHdoaWNoIGlzIHJlbmRlcmVkIGJ5IHRoaXMgYnJhbmNoLlxuICAgICovXG4gICBwdWJsaWMgZ2V0VXNlcmxhbmRDb21wb25lbnRSZWYoKTpcbiAgICAgIHwgQ29tcG9uZW50UmVmPFVzZXJsYW5kQ29tcG9uZW50PlxuICAgICAgfCB1bmRlZmluZWQge1xuICAgICAgaWYgKHRoaXMuaXNEZXN0cm95ZWQoKSkge1xuICAgICAgICAgdGhyb3cgbmV3IFRyZWVFcnJvcihcbiAgICAgICAgICAgIFwiQ2Fubm90IGdldCB1c2VybGFuZCBjb21wb25lbnQgZnJvbSBhIGRlc3Ryb3llZCB0cmVlIGJyYW5jaFwiXG4gICAgICAgICApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMuYnJhbmNoQ29udHJvbGxlci5nZXRVc2VybGFuZENvbXBvbmVudFJlZigpO1xuICAgfVxuXG4gICAvKipcbiAgICAqIEF0dGFjaGVzIGEgYnJhbmNoIHRvIGEgbmV3IHBhcmVudCBub2RlLlxuICAgICpcbiAgICAqIEByZW1hcmtzXG4gICAgKiBJZiBub3QgYWxyZWFkeSBwcnVuZWQsIHRoaXMgbWV0aG9kIHBydW5lcyAocmVtb3ZlcykgdGhpcyBicmFuY2ggZnJvbSBpdHNcbiAgICAqIGN1cnJlbnQgcG9zaXRpb24gaW4gdGhlIHRyZWU7IHRoZW4gZ3JhZnRzIChyZWF0dGFjaGVzKSBpdCBhcyBhIGNoaWxkIG9mIHRoZVxuICAgICogc3BlY2lmaWVkIHBhcmVudCBicmFuY2ggYXQgdGhlIHNwZWNpZmllZCBpbmRleC4gSWYgbm8gaW5kZXggaXMgc3BlY2lmaWVkLFxuICAgICogdGhlIGJyYW5jaCBpcyBhcHBlbmRlZCBhcyB0aGUgbGFzdCBjaGlsZCBvZiB0aGUgcGFyZW50LiBUaGlzIGNhdXNlcyB0aGlzXG4gICAgKiBicmFuY2gncyBhc3NvY2lhdGVkIEJyYW5jaENvbXBvbmVudCB0byBiZSByZS1yZW5kZXJlZCBpbiB0aGUgRE9NIGF0IHRoZVxuICAgICogbmV3IGxvY2F0aW9uLlxuICAgICpcbiAgICAqIEBwYXJhbSBuZXdQYXJlbnQgLSBUaGUgbmV3IHBhcmVudCBicmFuY2ggdW50byB3aGljaCB0aGlzIGJyYW5jaCB3aWxsIGJlIGdyYWZ0ZWQuXG4gICAgKiBAcGFyYW0gaW5kZXggLSBUaGUgaW5kZXggYXQgd2hpY2ggdGhpcyBicmFuY2ggd2lsbCBiZSBncmFmdGVkLiBJZiBub3Qgc3BlY2lmaWVkLFxuICAgICogdGhpcyBicmFuY2ggd2lsbCBiZSBhcHBlbmRlZCBhcyB0aGUgbGFzdCBjaGlsZCBvZiB0aGUgbmV3IHBhcmVudC5cbiAgICAqXG4gICAgKiBAcmV0dXJucyBUaGUgaW5kZXggYXQgd2hpY2ggdGhpcyBicmFuY2ggd2FzIGdyYWZ0ZWQuXG4gICAgKi9cbiAgIHB1YmxpYyBncmFmdFRvKFxuICAgICAgbmV3UGFyZW50OiBUcmVlTm9kZTxVc2VybGFuZENvbXBvbmVudD4sXG4gICAgICBpbmRleD86IG51bWJlclxuICAgKTogbnVtYmVyIHtcbiAgICAgIHRoaXMuY2hlY2tHcmFmdExvY2F0aW9uVmFsaWRpdHkobmV3UGFyZW50LCBpbmRleCk7XG4gICAgICBjb25zdCBvd25JbmRleCA9IHRoaXMuaW5kZXgoKTtcbiAgICAgIGlmIChvd25JbmRleCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICB0aGlzLnBydW5lKCk7XG4gICAgICB9XG4gICAgICB0aGlzLl9wYXJlbnQgPSBuZXdQYXJlbnQ7XG4gICAgICBjb25zdCBuZXdJbmRleCA9IGluZGV4ID8/IG5ld1BhcmVudC5icmFuY2hlcygpLmxlbmd0aDtcbiAgICAgIHRoaXMucmVhdHRhY2hWaWV3KG5ld0luZGV4KTtcbiAgICAgIHRoaXMuZGlzcGF0Y2goXG4gICAgICAgICBuZXcgR3JhZnRFdmVudCh0aGlzLCB7XG4gICAgICAgICAgICBwYXJlbnQ6IG5ld1BhcmVudCxcbiAgICAgICAgICAgIGNoaWxkOiB0aGlzLFxuICAgICAgICAgICAgaW5kZXg6IG5ld0luZGV4XG4gICAgICAgICB9KVxuICAgICAgKTtcbiAgICAgIHJldHVybiBuZXdJbmRleDtcbiAgIH1cblxuICAgLyoqXG4gICAgKiBBcHBlbmRzIGEgbmV3IGNoaWxkIGJyYW5jaCB0byB0aGlzIGJyYW5jaC4gVGhlIGNoaWxkIGJyYW5jaCB3aWxsIHJlbmRlclxuICAgICogdGhlIHNwZWNpZmllZCBjb21wb25lbnQgYWNjb3JkaW5nIHRvIHRoZSAob3B0aW9uYWwpIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyLlxuICAgICpcbiAgICAqIEBwYXJhbSBjb21wb25lbnQgLSBUaGUgY29tcG9uZW50IHRvIHJlbmRlciBpbiB0aGUgbmV3IGNoaWxkIGJyYW5jaC5cbiAgICAqIEBwYXJhbSBvcHRpb25zIC0gQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgbmV3IGNoaWxkIGJyYW5jaC5cbiAgICAqXG4gICAgKiBAcmV0dXJuc1xuICAgICogVGhlIG5ld2x5LWNyZWF0ZWQgY2hpbGQgYnJhbmNoLlxuICAgICovXG4gICBwdWJsaWMgZ3JvdyhcbiAgICAgIGNvbXBvbmVudDogVHlwZTxVc2VybGFuZENvbXBvbmVudD4sXG4gICAgICBvcHRpb25zPzogQnJhbmNoT3B0aW9uczxVc2VybGFuZENvbXBvbmVudD5cbiAgICk6IFRyZWVCcmFuY2g8VXNlcmxhbmRDb21wb25lbnQ+IHtcbiAgICAgIGlmICh0aGlzLmlzRGVzdHJveWVkKCkpIHtcbiAgICAgICAgIHRocm93IG5ldyBUcmVlRXJyb3IoXCJDYW5ub3QgZ3JvdyBhIGJyYW5jaCBvbiBhIGRlc3Ryb3llZCB0cmVlIGJyYW5jaFwiKTtcbiAgICAgIH1cbiAgICAgIHRyeSB7XG4gICAgICAgICByZXR1cm4gbmV3IFRyZWVCcmFuY2godGhpcywgeyBjb21wb25lbnQsIC4uLm9wdGlvbnMgfSk7XG4gICAgICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgICAgICAgdGhpcy5oYW5kbGVVc2VybGFuZEVycm9yKGVycm9yKTtcbiAgICAgIH1cbiAgIH1cblxuICAgLyoqXG4gICAgKiBEZXRlcm1pbmVzIHRoaXMgYnJhbmNoJ3MgaW5kZXggaW4gcmVsYXRpb24gdG8gaXRzIHNpYmxpbmcgYnJhbmNoZXMuXG4gICAgKlxuICAgICogQHJlbWFya3NcbiAgICAqIEZvciBleGFtcGxlLCBpZiBpdCBpcyB0aGUgZmlyc3QgY2hpbGQgb2YgaXRzIHBhcmVudCwgdGhpcyBtZXRob2Qgd2lsbCByZXR1cm5cbiAgICAqIDAuIElmIGl0IGlzIHRoZSBzZWNvbmQgY2hpbGQgb2YgaXRzIHBhcmVudCwgdGhpcyBtZXRob2Qgd2lsbCByZXR1cm4gMS5cbiAgICAqXG4gICAgKiBJZiB0aGlzIGJyYW5jaCBoYXMgbm8gcGFyZW50LCAoZWcsIGlmIHRoaXMgYnJhbmNoIGhhcyBiZWVuIHBydW5lZCkgdGhpc1xuICAgICogbWV0aG9kIHdpbGwgcmV0dXJuIHVuZGVmaW5lZC5cbiAgICAqXG4gICAgKiBAcmV0dXJuc1xuICAgICogVGhlIGluZGV4IG9mIHRoaXMgYnJhbmNoIGluIHJlbGF0aW9uIHRvIGl0cyBzaWJsaW5nIGJyYW5jaGVzLCBvciB1bmRlZmluZWQuXG4gICAgKi9cbiAgIHB1YmxpYyBpbmRleCgpOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICAgICAgaWYgKCF0aGlzLl9wYXJlbnQpIHtcbiAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICBjb25zdCBpbmRleCA9IHRoaXMuX3BhcmVudFxuICAgICAgICAgLmJyYW5jaGVzKClcbiAgICAgICAgIC5maW5kSW5kZXgoKGJyYW5jaCkgPT4gYnJhbmNoID09PSB0aGlzKTtcbiAgICAgIGFzc2VydChpbmRleCA+PSAwKTtcbiAgICAgIHJldHVybiBpbmRleDtcbiAgIH1cblxuICAgLyoqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgYnJhbmNoIGlzIGRlc3Ryb3llZCwgYGZhbHNlYCBvdGhlcndpc2UgKi9cbiAgIHB1YmxpYyBpc0Rlc3Ryb3llZCgpOiBib29sZWFuIHtcbiAgICAgIHJldHVybiB0aGlzLnRyZWVOb2RlQmFzZS5pc0Rlc3Ryb3llZCgpO1xuICAgfVxuXG4gICAvKipcbiAgICAqIEByZXR1cm5zXG4gICAgKiBUaGUgZGF0YSB0aGF0IHdhcyBwYXNzZWQgaW50byB0aGUgYGJyYW5jaE9wdGlvbnNgJyBgbWV0YWAgcHJvcGVydHlcbiAgICAqIGF0IGNvbnN0cnVjdGlvbi5cbiAgICAqL1xuICAgcHVibGljIG1ldGEoKTogUmVjb3JkPHN0cmluZywgYW55PiB7XG4gICAgICByZXR1cm4gdGhpcy5icmFuY2hPcHRpb25zLm1ldGEgPz8ge307XG4gICB9XG5cbiAgIC8qKlxuICAgICogQHJldHVybnNcbiAgICAqIFRoaXMgYnJhbmNoJ3MgcGFyZW50IG5vZGUgKHdoaWNoIG1heSBiZSBhIFRyZWVCcmFuY2ggb3IgVHJlZVJvb3QpLlxuICAgICogSWYgdGhpcyBicmFuY2ggaGFzIG5vIHBhcmVudCwgKGVnLCBpZiB0aGlzIGJyYW5jaCBoYXMgYmVlbiBwcnVuZWQpIHRoaXNcbiAgICAqIG1ldGhvZCB3aWxsIHJldHVybiB1bmRlZmluZWQuXG4gICAgKi9cbiAgIHB1YmxpYyBwYXJlbnQoKTogVHJlZU5vZGU8VXNlcmxhbmRDb21wb25lbnQ+IHwgdW5kZWZpbmVkIHtcbiAgICAgIHJldHVybiB0aGlzLl9wYXJlbnQ7XG4gICB9XG5cbiAgIC8qKlxuICAgICogUHJvdmlkZXMgYSBtb2RlbCBkZXNjcmliaW5nIHRoaXMgYnJhbmNoJ3MgZGVzY2VuZGFudHMuXG4gICAgKlxuICAgICogQHJldHVybnNcbiAgICAqIEEgbXVsdGktZGltZW5zaW9uYWwgTWFwIHdoaWNoIGRlc2NyaWJlcyB0aGUgc2hhcGUgb2YgdGhpcyBicmFuY2gnc1xuICAgICogZGVzY2VuZGFudHMuXG4gICAgKlxuICAgICogQGV4YW1wbGVcbiAgICAqIEEgYnJhbmNoIHdpdGggbm8gY2hpbGRyZW4gd2lsbCByZXR1cm4gYW4gZW1wdHkgTWFwLiBBIGJyYW5jaCB3aXRoXG4gICAgKiBhIHNpbmdsZSBjaGlsZCB3aWxsIHJldHVybiBhIE1hcCB3aXRoIGEgc2luZ2xlIGVudHJ5LCB3aGVyZSB0aGUga2V5IGlzIHRoZSBpbmRleFxuICAgICogb2YgdGhlIGJyYW5jaCAoemVybykgYW5kIHRoZSB2YWx1ZSBpcyBhbiBlbXB0eSBNYXAuIEEgVHJlZSBsaWtlIHRoaXM6XG4gICAgKlxuICAgICogYGBgXG4gICAgKiAgICAgICAgIC0tLUJyYW5jaC0tLS0tLS1CcmFuY2hcbiAgICAqICAgICAgICAvXG4gICAgKiBCcmFuY2gtLS0tLS0tQnJhbmNoXG4gICAgKiAgICAgICAgXFxcbiAgICAqICAgICAgICAgLS0tQnJhbmNoXG4gICAgKiBgYGBcbiAgICAqIFdpbGwgcmV0dXJuIGEgTWFwIG9mIG1hdGNoaW5nIHNoYXBlOlxuICAgICogYGBgXG4gICAgKiBNYXAge1xuICAgICogICAgMDogTWFwIHsgMDogTWFwIHt9fSxcbiAgICAqICAgIDE6IE1hcCB7fSxcbiAgICAqICAgIDI6IE1hcCB7fVxuICAgICogfVxuICAgICogYGBgXG4gICAgKi9cbiAgIHB1YmxpYyBwbG90KCk6IFRyZWVQbG90IHtcbiAgICAgIHJldHVybiB0aGlzLnRyZWVOb2RlQmFzZS5wbG90KCk7XG4gICB9XG5cbiAgIC8qKlxuICAgICogQ2FsY3VsYXRlcyB0aGUgYnJhbmNoJ3MgcG9zaXRpb24gaW4gdGhlIHRyZWUgcmVsYXRpdmUgdG8gdGhlIFJvb3QuXG4gICAgKlxuICAgICogQHJlbWFya3NcbiAgICAqIFRoZSBwb3NpdGlvbiBpcyBkZXNjcmliZWQgYXMgYW4gYXJyYXkgb2YgbnVtYmVycywgd2hlcmUgZWFjaCBudW1iZXJcbiAgICAqIHJlcHJlc2VudHMgdGhlIGluZGV4IG9mIHRoZSBicmFuY2ggYXQgdGhhdCBsZXZlbCBvZiB0aGUgdHJlZS5cbiAgICAqXG4gICAgKiBGb3IgZXhhbXBsZSwgaWYgdGhpcyBicmFuY2ggaXMgdGhlIGZpcnN0IGNoaWxkIG9mIHRoZSBSb290LCB0aGlzIG1ldGhvZFxuICAgICogd2lsbCByZXR1cm4gWzBdLiBJZiB0aGlzIGJyYW5jaCBpcyB0aGUgc2Vjb25kIGNoaWxkIG9mIHRoZSBmaXJzdCBjaGlsZFxuICAgICogb2YgdGhlIFJvb3QsIHRoaXMgbWV0aG9kIHdpbGwgcmV0dXJuIFswLCAxXS5cbiAgICAqXG4gICAgKiBJZiB0aGUgYnJhbmNoIGlzIG5vdCByZWxhdGVkIHRvIGEgVHJlZVJvb3QsIChzdWNoIGFzIHdoZW4gaXQgaGFzIGJlZW5cbiAgICAqIHBydW5lZCwpIHRoaXMgbWV0aG9kIHdpbGwgdGhyb3cgYW4gZXJyb3IuXG4gICAgKlxuICAgICogQHJldHVybnNcbiAgICAqIEFuIGFycmF5IG9mIG51bWJlcnMgd2hpY2ggZGVzY3JpYmUgdGhlIGJyYW5jaCdzIHBvc2l0aW9uIGluIHRoZSB0cmVlXG4gICAgKiByZWxhdGl2ZSB0byB0aGUgUm9vdC5cbiAgICAqL1xuICAgcHVibGljIHBvc2l0aW9uKCk6IEFycmF5PG51bWJlcj4ge1xuICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmluZGV4KCk7XG4gICAgICBpZiAoaW5kZXggPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgdGhyb3cgbmV3IFRyZWVFcnJvcihcbiAgICAgICAgICAgIFwiYnJhbmNoIGhhcyBubyBwYXJlbnQuIFBvc2l0aW9uIGNhbm5vdCBiZSBkZXRlcm1pbmVkLlwiXG4gICAgICAgICApO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuX3BhcmVudCBpbnN0YW5jZW9mIFRyZWVCcmFuY2gpIHtcbiAgICAgICAgIGNvbnN0IHBhcmVudFBvc2l0aW9uID0gdGhpcy5fcGFyZW50LnBvc2l0aW9uKCk7XG4gICAgICAgICByZXR1cm4gWy4uLnBhcmVudFBvc2l0aW9uLCBpbmRleF07XG4gICAgICB9XG4gICAgICByZXR1cm4gW2luZGV4XTtcbiAgIH1cblxuICAgLyoqXG4gICAgKiBSZW1vdmVzIGEgYnJhbmNoIGZyb20gaXRzIHRyZWUgd2l0aG91dCBkZXN0cm95aW5nIGl0LlxuICAgICpcbiAgICAqIEByZW1hcmtzXG4gICAgKiBSZW1vdmVzIHRoaXMgYnJhbmNoIGZyb20gaXRzIHBhcmVudCBhbmQgZGV0YWNoZXMgaXRzIGFzc29jaWF0ZWRcbiAgICAqIEJyYW5jaENvbXBvbmVudCBmcm9tIHRoZSBET00uIFRoaXMgcHV0cyB0aGUgYnJhbmNoIGluIGEgXCJwcnVuZWRcIiBzdGF0ZSxcbiAgICAqIHdoaWNoIG1heSBhZmZlY3QgdGhlIGJlaGF2aW9yIG9mIG90aGVyIG1ldGhvZHMuXG4gICAgKlxuICAgICogQSBwcnVuZWQgYnJhbmNoIGNhbiBiZSByZWF0dGFjaGVkIHRvIGFueSBvdGhlciBub2RlIHVzaW5nIHRoZSBgZ3JhZnRUb2AgbWV0aG9kLlxuICAgICpcbiAgICAqIEByZXR1cm5zXG4gICAgKiBJdHNlbGYsIG9yIHVuZGVmaW5lZCBpZiBpdCBpcyBhbHJlYWR5IGluIGEgcHJ1bmVkIHN0YXRlLlxuICAgICovXG4gICBwdWJsaWMgcHJ1bmUoKTogdGhpcyB8IHVuZGVmaW5lZCB7XG4gICAgICBpZiAodGhpcy5pc0Rlc3Ryb3llZCgpKSB7XG4gICAgICAgICB0aHJvdyBuZXcgVHJlZUVycm9yKFwiQ2Fubm90IHBydW5lIGEgZGVzdHJveWVkIHRyZWUgYnJhbmNoXCIpO1xuICAgICAgfVxuICAgICAgY29uc3QgcGFyZW50ID0gdGhpcy5fcGFyZW50O1xuICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmluZGV4KCk7XG4gICAgICBpZiAoaW5kZXggPT09IHVuZGVmaW5lZCB8fCBwYXJlbnQgPT09IHVuZGVmaW5lZCkgcmV0dXJuO1xuICAgICAgY29uc3QgY29udGFpbmVyID0gcGFyZW50LmdldEJyYW5jaGVzQ29udGFpbmVyKCk7XG4gICAgICBhc3NlcnQoY29udGFpbmVyICE9PSB1bmRlZmluZWQpO1xuICAgICAgdGhpcy5kZXRhY2hlZFZpZXcgPSBjb250YWluZXIuZGV0YWNoKGluZGV4KTtcbiAgICAgIGFzc2VydCh0aGlzLmRldGFjaGVkVmlldyAhPT0gbnVsbCk7XG4gICAgICB0aGlzLmRldGFjaGVkVmlldy5kZXRhY2goKTtcbiAgICAgIHRoaXMuZGlzcGF0Y2goXG4gICAgICAgICBuZXcgUHJ1bmVFdmVudCh0aGlzLCB7XG4gICAgICAgICAgICBwYXJlbnQ6IHBhcmVudCxcbiAgICAgICAgICAgIGNoaWxkOiB0aGlzLFxuICAgICAgICAgICAgaW5kZXg6IGluZGV4XG4gICAgICAgICB9KVxuICAgICAgKTtcbiAgICAgIHRoaXMuX3BhcmVudCA9IHVuZGVmaW5lZDtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgfVxuXG4gICAvKipcbiAgICAqIEdldCB0aGUgcm9vdCBvZiB0aGUgdHJlZSB0byB3aGljaCB0aGlzIEJyYW5jaCBpcyBhdHRhY2hlZC5cbiAgICAqXG4gICAgKiBAcmV0dXJuc1xuICAgICogVGhlIFRyZWVSb290IG9mIHRoZSB0cmVlIHRoaXMgYnJhbmNoIGlzIGluLiBJZiB0aGlzIGJyYW5jaCBpc1xuICAgICogZG9lcyBub3QgaGF2ZSBhIHJvb3QgKHN1Y2ggYXMgd2hlbiBpdCBoYXMgYmVlbiBwcnVuZWQpIHRoaXMgbWV0aG9kIHdpbGxcbiAgICAqIHJldHVybiB1bmRlZmluZWQuXG4gICAgKi9cbiAgIHB1YmxpYyByb290KCk6IFRyZWVSb290PFVzZXJsYW5kQ29tcG9uZW50PiB8IHVuZGVmaW5lZCB7XG4gICAgICBjb25zdCBwYXJlbnQgPSB0aGlzLnBhcmVudCgpO1xuICAgICAgaWYgKHBhcmVudCBpbnN0YW5jZW9mIFRyZWVCcmFuY2gpIHtcbiAgICAgICAgIHJldHVybiBwYXJlbnQucm9vdCgpO1xuICAgICAgfVxuICAgICAgYXNzZXJ0KHBhcmVudCBpbnN0YW5jZW9mIFRyZWVSb290IHx8IHBhcmVudCA9PT0gdW5kZWZpbmVkKTtcbiAgICAgIHJldHVybiBwYXJlbnQ7XG4gICB9XG5cbiAgIC8qKlxuICAgICogVHJhdmVyc2VzIHRoaXMgYnJhbmNoJ3MgZGVzY2VuZGFudHMgaW4gZGVwdGgtZmlyc3QgcHJlLW9yZGVyLCBleGVjdXRpbmdcbiAgICAqIHRoZSBwcm92aWRlZCBjYWxsYmFjayBmdW5jdGlvbiBvbiBlYWNoIG5vZGUuIFRyYXZlcnNhbCBpbmNsdWRlcyB0aGlzIGJyYW5jaC5cbiAgICAqXG4gICAgKiBAcGFyYW0gY2FsbGJhY2sgLSBBIGZ1bmN0aW9uIHRvIGV4ZWN1dGUgb24gZWFjaCBub2RlLlxuICAgICovXG4gICBwdWJsaWMgdHJhdmVyc2UoXG4gICAgICBjYWxsYmFjazogKG5vZGU6IFRyZWVCcmFuY2g8VXNlcmxhbmRDb21wb25lbnQ+KSA9PiB2b2lkXG4gICApOiB2b2lkIHtcbiAgICAgIGNhbGxiYWNrKHRoaXMpO1xuICAgICAgdGhpcy50cmVlTm9kZUJhc2UudHJhdmVyc2UoY2FsbGJhY2spO1xuICAgfVxuXG4gICBwcml2YXRlIGNoZWNrR3JhZnRMb2NhdGlvblZhbGlkaXR5KFxuICAgICAgbmV3UGFyZW50OiBUcmVlTm9kZTxVc2VybGFuZENvbXBvbmVudD4sXG4gICAgICBpbmRleD86IG51bWJlclxuICAgKTogdm9pZCB7XG4gICAgICBpZiAodGhpcy5pc0Rlc3Ryb3llZCgpKSB7XG4gICAgICAgICB0aHJvdyBuZXcgVHJlZUVycm9yKFwiQ2Fubm90IGdyYWZ0IGEgZGVzdHJveWVkIHRyZWUgYnJhbmNoXCIpO1xuICAgICAgfVxuICAgICAgaWYgKG5ld1BhcmVudC5pc0Rlc3Ryb3llZCgpKSB7XG4gICAgICAgICB0aHJvdyBuZXcgVHJlZUVycm9yKFwiQ2Fubm90IGdyYWZ0IHRvIGEgZGVzdHJveWVkIHRyZWUgYnJhbmNoXCIpO1xuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICAgdHlwZW9mIGluZGV4ID09PSBcIm51bWJlclwiICYmXG4gICAgICAgICB0aGlzLmluZGV4SXNPdXRPZlJhbmdlKG5ld1BhcmVudCwgaW5kZXgpXG4gICAgICApIHtcbiAgICAgICAgIHRocm93IG5ldyBUcmVlRXJyb3IoXG4gICAgICAgICAgICBgQ2Fubm90IGdyYWZ0IGJyYW5jaCBhdCBpbmRleCAke2luZGV4fSBvZiB0aGUgcGFyZW50LiBPdXQgb2YgcmFuZ2UuYFxuICAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHRoaXMudHJhdmVyc2UoKG5vZGUpID0+IHtcbiAgICAgICAgIGlmIChub2RlID09PSBuZXdQYXJlbnQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBUcmVlRXJyb3IoXG4gICAgICAgICAgICAgICBcIkNhbm5vdCBncmFmdCBhIGJyYW5jaCB0byBpdHNlbGYgb3IgYW55IG9mIGl0cyBvd24gZGVzY2VuZGFudHNcIlxuICAgICAgICAgICAgKTtcbiAgICAgICAgIH1cbiAgICAgIH0pO1xuICAgfVxuXG4gICBwcml2YXRlIGhhbmRsZVVzZXJsYW5kRXJyb3IoZXJyb3I6IHVua25vd24pOiBuZXZlciB7XG4gICAgICAvLyBXaGVuIGFuIGVycm9yIG9jY3VycyBpbiBhIHVzZXJsYW5kIGNvbXBvbmVudCBkdXJpbmcgYSB0cmVlIG9wZXJhdGlvbixcbiAgICAgIC8vIGl0IGNhbiBjYXVzZSB1bmRlZmluZWQsIGJpemFycmUgYmVoYXZpb3IgaW4gdGhlIHRyZWUuIFRvIHByZXZlbnQgdGhpcyxcbiAgICAgIC8vIHdlIGRlc3Ryb3kgdGhlIHRyZWUgYW5kIHRocm93IGFuIGVycm9yIGluc3RlYWQuIFRoaXMgaGVscHMgcHJvdGVjdFxuICAgICAgLy8gdGhlIGVuZC11c2VyJ3MgZGF0YSBmcm9tIGNvcnJ1cHRpb24uXG4gICAgICB0aGlzLmZ1cnRoZXN0QW5jZXN0b3IoKS5kZXN0cm95KCk7XG4gICAgICB0aGlzLnRyZWVOb2RlQmFzZS5oYW5kbGVVc2VybGFuZEVycm9yKGVycm9yKTtcbiAgIH1cblxuICAgcHJpdmF0ZSBpbmRleElzT3V0T2ZSYW5nZShcbiAgICAgIHBhcmVudDogVHJlZU5vZGU8VXNlcmxhbmRDb21wb25lbnQ+LFxuICAgICAgaW5kZXg6IG51bWJlclxuICAgKTogYm9vbGVhbiB7XG4gICAgICByZXR1cm4gaW5kZXggPCAwIHx8IGluZGV4ID4gcGFyZW50LmJyYW5jaGVzKCkubGVuZ3RoO1xuICAgfVxuXG4gICBwcml2YXRlIGZ1cnRoZXN0QW5jZXN0b3IoKTogVHJlZU5vZGU8VXNlcmxhbmRDb21wb25lbnQ+IHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdGhpcy1hbGlhcyAtLSBUaGlzIGNvZGUgaXMgZm9yIGFuIGl0ZXJhdGlvbiwgbm90IHRvIG1ha2UgYHRoaXNgIGF2YWlsYWJsZSBpbiBvdGhlciBzY29wZXMgKHdoaWNoIGlzIHdoYXQgdGhlIHJ1bGUgaXMgaW50ZW5kZWQgdG8gcHJvdGVjdCBhZ2FpbnN0KS5cbiAgICAgIGxldCBub2RlOiBUcmVlTm9kZTxVc2VybGFuZENvbXBvbmVudD4gPSB0aGlzO1xuICAgICAgd2hpbGUgKG5vZGUgaW5zdGFuY2VvZiBUcmVlQnJhbmNoKSB7XG4gICAgICAgICBjb25zdCBwYXJlbnQgPSBub2RlLnBhcmVudCgpO1xuICAgICAgICAgaWYgKHBhcmVudCA9PT0gdW5kZWZpbmVkKSBicmVhaztcbiAgICAgICAgIG5vZGUgPSBwYXJlbnQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gbm9kZTtcbiAgIH1cblxuICAgcHJpdmF0ZSByZWF0dGFjaFZpZXcoaW5kZXg/OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgIGFzc2VydCh0aGlzLl9wYXJlbnQgIT09IHVuZGVmaW5lZCk7XG4gICAgICBhc3NlcnQodGhpcy5kZXRhY2hlZFZpZXcgIT09IG51bGwpO1xuICAgICAgY29uc3QgY29udGFpbmVyID0gdGhpcy5fcGFyZW50LmdldEJyYW5jaGVzQ29udGFpbmVyKCk7XG4gICAgICBhc3NlcnQoY29udGFpbmVyICE9PSB1bmRlZmluZWQpO1xuICAgICAgdGhpcy5kZXRhY2hlZFZpZXcucmVhdHRhY2goKTtcbiAgICAgIGNvbnRhaW5lci5pbnNlcnQodGhpcy5kZXRhY2hlZFZpZXcsIGluZGV4KTtcbiAgICAgIHRoaXMuZGV0YWNoZWRWaWV3ID0gbnVsbDtcbiAgIH1cblxuICAgcHJpdmF0ZSBzZXRJbmRlbnRhdGlvbihwYXJlbnQ6IFRyZWVOb2RlPFVzZXJsYW5kQ29tcG9uZW50Pik6IHZvaWQge1xuICAgICAgY29uc3Qgcm9vdCA9IHBhcmVudC5yb290KCk7XG4gICAgICBhc3NlcnQocm9vdCAhPT0gdW5kZWZpbmVkKTtcbiAgICAgIGNvbnN0IG9wdGlvbnMgPSBjb25maWcuZ2V0Q29uZmlnKHJvb3QpO1xuICAgICAgY29uc3QgYnJhbmNoZXNDb250YWluZXJFbCA9IHRoaXMuYnJhbmNoQ29udHJvbGxlclxuICAgICAgICAgLmdldE5hdGl2ZUVsZW1lbnQoKVxuICAgICAgICAgLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJicmFuY2hlcy1jb250YWluZXJcIilcbiAgICAgICAgIC5pdGVtKDApO1xuICAgICAgYXNzZXJ0KGJyYW5jaGVzQ29udGFpbmVyRWwgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCk7XG4gICAgICBicmFuY2hlc0NvbnRhaW5lckVsLnN0eWxlLm1hcmdpbkxlZnQgPSBgJHtvcHRpb25zPy5pbmRlbnRhdGlvbiA/PyAxNn1weGA7XG4gICB9XG59XG4iXX0=
@@ -1,7 +1,7 @@
1
1
  import { filter, Subject } from "rxjs";
2
+ import { hasProperty } from "../../shared";
2
3
  import { TreeError } from "../errors";
3
- import { GraftEvent } from "../events/relational/graft-event";
4
- import { PruneEvent } from "../events/relational/prune-event";
4
+ import { GraftEvent, PruneEvent } from "../events";
5
5
  export class TreeNodeBase {
6
6
  constructor() {
7
7
  this.destroyed = false;
@@ -37,6 +37,17 @@ export class TreeNodeBase {
37
37
  getBranch(index) {
38
38
  return this._branches[index];
39
39
  }
40
+ handleUserlandError(error) {
41
+ const message = hasProperty(error, "message")
42
+ ? error.message
43
+ : "Unknown error";
44
+ throw new TreeError(`Failed to grow branch: ${message}`, {
45
+ // This cast to `any` is due to an issue in typescript that has been
46
+ // resolved at least by version 4.9.5. When we upgrade our typescript
47
+ // version we can remove the cast.
48
+ cause: error
49
+ });
50
+ }
40
51
  isDestroyed() {
41
52
  return this.destroyed;
42
53
  }
@@ -66,4 +77,4 @@ export class TreeNodeBase {
66
77
  this._branches.splice(index, 0, child);
67
78
  }
68
79
  }
69
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1ub2RlLWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9saW1ibGUtdHJlZS9zcmMvbGliL2NvcmUvdHJlZS1ub2RlLWJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBYyxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBRWpFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDdEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQzlELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQU85RCxNQUFNLE9BQU8sWUFBWTtJQVF0QjtRQUhRLGNBQVMsR0FBWSxLQUFLLENBQUM7UUFJaEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxhQUFhLEdBQUc7WUFDbEIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO2dCQUNyQyxJQUFJLENBQUMseUJBQXlCLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBQ2hFLENBQUMsQ0FBQztZQUNGLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDckMsSUFBSSxDQUFDLDJCQUEyQixDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBQ25ELENBQUMsQ0FBQztTQUNKLENBQUM7SUFDTCxDQUFDO0lBRU0sUUFBUTtRQUNaLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRU0sT0FBTztRQUNYLElBQUks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Q0giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmaWx0ZXIsIE9ic2VydmFibGUsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBOb2RlQ29tcG9uZW50IH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvbm9kZS1jb21wb25lbnQuaW50ZXJmYWNlXCI7XG5pbXBvcnQgeyBUcmVlRXJyb3IgfSBmcm9tIFwiLi4vZXJyb3JzXCI7XG5pbXBvcnQgeyBHcmFmdEV2ZW50IH0gZnJvbSBcIi4uL2V2ZW50cy9yZWxhdGlvbmFsL2dyYWZ0LWV2ZW50XCI7XG5pbXBvcnQgeyBQcnVuZUV2ZW50IH0gZnJvbSBcIi4uL2V2ZW50cy9yZWxhdGlvbmFsL3BydW5lLWV2ZW50XCI7XG5pbXBvcnQgeyBUcmVlRXZlbnQgfSBmcm9tIFwiLi4vc3RydWN0dXJlL3RyZWUtZXZlbnQuaW50ZXJmYWNlXCI7XG5pbXBvcnQgeyBUcmVlTm9kZSB9IGZyb20gXCIuLi9zdHJ1Y3R1cmUvdHJlZS1ub2RlLmludGVyZmFjZVwiO1xuaW1wb3J0IHsgVHJlZVBsb3QgfSBmcm9tIFwiLi4vc3RydWN0dXJlL3RyZWUtcGxvdFwiO1xuaW1wb3J0IHsgUmVsYXRpb25zaGlwIH0gZnJvbSBcIi4vcmVsYXRpb25zaGlwLmludGVyZmFjZVwiO1xuaW1wb3J0IHsgVHJlZUJyYW5jaCB9IGZyb20gXCIuL3RyZWUtYnJhbmNoL3RyZWUtYnJhbmNoXCI7XG5cbmV4cG9ydCBjbGFzcyBUcmVlTm9kZUJhc2U8VXNlcmxhbmRDb21wb25lbnQ+XG4gICBpbXBsZW1lbnRzIFBhcnRpYWw8VHJlZU5vZGU8VHJlZUJyYW5jaDxVc2VybGFuZENvbXBvbmVudD4sIE5vZGVDb21wb25lbnQ+Plxue1xuICAgcHJpdmF0ZSByZWFkb25seSBfYnJhbmNoZXM6IEFycmF5PFRyZWVCcmFuY2g8VXNlcmxhbmRDb21wb25lbnQ+PjtcbiAgIHByaXZhdGUgcmVhZG9ubHkgZXZlbnRzJDogU3ViamVjdDxUcmVlRXZlbnQ+O1xuICAgcHJpdmF0ZSBkZXN0cm95ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgIHByaXZhdGUgcmVhZG9ubHkgc3Vic2NyaXB0aW9uczogQXJyYXk8U3Vic2NyaXB0aW9uPjtcblxuICAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgICAgdGhpcy5fYnJhbmNoZXMgPSBbXTtcbiAgICAgIHRoaXMuZXZlbnRzJCA9IG5ldyBTdWJqZWN0KCk7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMgPSBbXG4gICAgICAgICB0aGlzLmdyYWZ0c1RvU2VsZigpLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgICAgIHRoaXMucmVnaXN0ZXJDaGlsZFJlbGF0aW9uc2hpcChldmVudC5jaGlsZCgpLCBldmVudC5pbmRleCgpKTtcbiAgICAgICAgIH0pLFxuICAgICAgICAgdGhpcy5wcnVuZXNUb1NlbGYoKS5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmRlcmVnaXN0ZXJDaGlsZFJlbGF0aW9uc2hpcChldmVudC5jaGlsZCgpKTtcbiAgICAgICAgIH0pXG4gICAgICBdO1xuICAgfVxuXG4gICBwdWJsaWMgYnJhbmNoZXMoKTogQXJyYXk8VHJlZUJyYW5jaDxVc2VybGFuZENvbXBvbmVudD4+IHtcbiAgICAgIHJldHVybiBbLi4udGhpcy5fYnJhbmNoZXNdO1xuICAgfVxuXG4gICBwdWJsaWMgZGVzdHJveSgpOiB2b2lkIHtcbiAgICAgIHRoaXMuYnJhbmNoZXMoKS5mb3JFYWNoKChicmFuY2gpID0+IHtcbiAgICAgICAgIGJyYW5jaC5kZXN0cm95KCk7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKChzdWIpID0+IHtcbiAgICAgICAgIHN1Yi51bnN1YnNjcmliZSgpO1xuICAgICAgfSk7XG4gICAgICB0aGlzLmRlc3Ryb3llZCA9IHRydWU7XG4gICB9XG5cbiAgIHB1YmxpYyBkaXNwYXRjaChldmVudDogVHJlZUV2ZW50KTogdm9pZCB7XG4gICAgICB0aGlzLmV2ZW50cyQubmV4dChldmVudCk7XG4gICB9XG5cbiAgIHB1YmxpYyBldmVudHMoKTogT2JzZXJ2YWJsZTxUcmVlRXZlbnQ+IHtcbiAgICAgIHJldHVybiB0aGlzLmV2ZW50cyQ7XG4gICB9XG5cbiAgIHB1YmxpYyBnZXRCcmFuY2goaW5kZXg6IG51bWJlcik6IFRyZWVCcmFuY2g8VXNlcmxhbmRDb21wb25lbnQ+IHwgdW5kZWZpbmVkIHtcbiAgICAgIHJldHVybiB0aGlzLl9icmFuY2hlc1tpbmRleF07XG4gICB9XG5cbiAgIHB1YmxpYyBpc0Rlc3Ryb3llZCgpOiBib29sZWFuIHtcbiAgICAgIHJldHVybiB0aGlzLmRlc3Ryb3llZDtcbiAgIH1cblxuICAgcHVibGljIHBsb3QoKTogVHJlZVBsb3Qge1xuICAgICAgcmV0dXJuIG5ldyBNYXAoXG4gICAgICAgICB0aGlzLmJyYW5jaGVzKCkubWFwKChicmFuY2gsIGluZGV4KSA9PiBbaW5kZXgsIGJyYW5jaC5wbG90KCldKVxuICAgICAgKTtcbiAgIH1cblxuICAgcHVibGljIHRyYXZlcnNlKFxuICAgICAgY2FsbGJhY2s6IChcbiAgICAgICAgIG5vZGU6IFRyZWVOb2RlPFRyZWVCcmFuY2g8VXNlcmxhbmRDb21wb25lbnQ+LCBOb2RlQ29tcG9uZW50PlxuICAgICAgKSA9PiB2b2lkXG4gICApOiB2b2lkIHtcbiAgICAgIHRoaXMuYnJhbmNoZXMoKS5mb3JFYWNoKChicmFuY2gpID0+IHtcbiAgICAgICAgIGJyYW5jaC50cmF2ZXJzZShjYWxsYmFjayk7XG4gICAgICB9KTtcbiAgIH1cblxuICAgcHJpdmF0ZSBkZXJlZ2lzdGVyQ2hpbGRSZWxhdGlvbnNoaXAoXG4gICAgICBjaGlsZDogVHJlZUJyYW5jaDxVc2VybGFuZENvbXBvbmVudD5cbiAgICk6IHZvaWQge1xuICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmJyYW5jaGVzKCkuZmluZEluZGV4KChicmFuY2gpID0+IGJyYW5jaCA9PT0gY2hpbGQpO1xuICAgICAgdGhpcy5fYnJhbmNoZXMuc3BsaWNlKGluZGV4LCAxKTtcbiAgIH1cblxuICAgcHJpdmF0ZSBncmFmdHNUb1NlbGYoKTogT2JzZXJ2YWJsZTxcbiAgICAgIEdyYWZ0RXZlbnQ8UmVsYXRpb25zaGlwPFVzZXJsYW5kQ29tcG9uZW50Pj5cbiAgID4ge1xuICAgICAgcmV0dXJuIHRoaXMuZXZlbnRzKCkucGlwZShcbiAgICAgICAgIGZpbHRlcihcbiAgICAgICAgICAgIChldmVudCk6IGV2ZW50IGlzIEdyYWZ0RXZlbnQ8UmVsYXRpb25zaGlwPFVzZXJsYW5kQ29tcG9uZW50Pj4gPT5cbiAgICAgICAgICAgICAgIGV2ZW50IGluc3RhbmNlb2YgR3JhZnRFdmVudFxuICAgICAgICAgKSxcbiAgICAgICAgIGZpbHRlcigoZXZlbnQpID0+IGV2ZW50LnBhcmVudCgpLmV2ZW50cygpID09PSB0aGlzLmV2ZW50cyQpXG4gICAgICApO1xuICAgfVxuXG4gICBwcml2YXRlIHBydW5lc1RvU2VsZigpOiBPYnNlcnZhYmxlPFxuICAgICAgUHJ1bmVFdmVudDxSZWxhdGlvbnNoaXA8VXNlcmxhbmRDb21wb25lbnQ+PlxuICAgPiB7XG4gICAgICByZXR1cm4gdGhpcy5ldmVudHMoKS5waXBlKFxuICAgICAgICAgZmlsdGVyKFxuICAgICAgICAgICAgKGV2ZW50KTogZXZlbnQgaXMgUHJ1bmVFdmVudDxSZWxhdGlvbnNoaXA8VXNlcmxhbmRDb21wb25lbnQ+PiA9PlxuICAgICAgICAgICAgICAgZXZlbnQgaW5zdGFuY2VvZiBQcnVuZUV2ZW50XG4gICAgICAgICApLFxuICAgICAgICAgZmlsdGVyKChldmVudCkgPT4gZXZlbnQucGFyZW50KCkuZXZlbnRzKCkgPT09IHRoaXMuZXZlbnRzJClcbiAgICAgICk7XG4gICB9XG5cbiAgIHByaXZhdGUgcmVnaXN0ZXJDaGlsZFJlbGF0aW9uc2hpcChcbiAgICAgIGNoaWxkOiBUcmVlQnJhbmNoPFVzZXJsYW5kQ29tcG9uZW50PixcbiAgICAgIGluZGV4OiBudW1iZXJcbiAgICk6IHZvaWQge1xuICAgICAgY29uc3QgYnJhbmNoZXMgPSB0aGlzLmJyYW5jaGVzKCk7XG4gICAgICBpZiAoaW5kZXggPCAwIHx8IGluZGV4ID4gYnJhbmNoZXMubGVuZ3RoKSB7XG4gICAgICAgICB0aHJvdyBuZXcgVHJlZUVycm9yKFxuICAgICAgICAgICAgYENhbid0IHJlZ2lzdGVyIGNoaWxkIGF0IGluZGV4ICR7aW5kZXh9LiBPdXQgb2YgcmFuZ2UuYFxuICAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX2JyYW5jaGVzLnNwbGljZShpbmRleCwgMCwgY2hpbGQpO1xuICAgfVxufVxuIl19
80
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1ub2RlLWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9saW1ibGUtdHJlZS9zcmMvbGliL2NvcmUvdHJlZS1ub2RlLWJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBbUIsT0FBTyxFQUFxQixNQUFNLE1BQU0sQ0FBQztBQUMzRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDdEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQWtCLE1BQU0sV0FBVyxDQUFDO0FBS25FLE1BQU0sT0FBTyxZQUFZO0lBUXRCO1FBSFEsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUloQyxJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLGFBQWEsR0FBRztZQUNsQixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ3JDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDaEUsQ0FBQyxDQUFDO1lBQ0YsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO2dCQUNyQyxJQUFJLENBQUMsMkJBQTJCLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDbkQsQ0FBQyxDQUFDO1NBQ0osQ0FBQztJQUNMLENBQUM7SUFFTSxRQUFRO1FBQ1osT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFTSxPQUFPO1FB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QUM5QixLQUFvQyxFQUNwQyxLQUFhO1FBRWIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2pDLElBQUksS0FBSyxHQUFHLENBQUMsSUFBSSxLQUFLLEdBQUcsUUFBUSxDQUFDLE1BQU0sRUFBRTtZQUN2QyxNQUFNLElBQUksU0FBUyxDQUNoQixpQ0FBaUMsS0FBSyxpQkFBaUIsQ0FDekQsQ0FBQztTQUNKO1FBQ0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMxQyxDQUFDO0NBQ0giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmaWx0ZXIsIHR5cGUgT2JzZXJ2YWJsZSwgU3ViamVjdCwgdHlwZSBTdWJzY3JpcHRpb24gfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgaGFzUHJvcGVydHkgfSBmcm9tIFwiLi4vLi4vc2hhcmVkXCI7XG5pbXBvcnQgeyBUcmVlRXJyb3IgfSBmcm9tIFwiLi4vZXJyb3JzXCI7XG5pbXBvcnQgeyBHcmFmdEV2ZW50LCBQcnVuZUV2ZW50LCB0eXBlIFRyZWVFdmVudCB9IGZyb20gXCIuLi9ldmVudHNcIjtcbmltcG9ydCB7IFRyZWVCcmFuY2ggfSBmcm9tIFwiLi90cmVlLWJyYW5jaFwiO1xuaW1wb3J0IHR5cGUgeyBUcmVlUGxvdCB9IGZyb20gXCIuL3RyZWUtcGxvdC5pbnRlcmZhY2VcIjtcbmltcG9ydCB0eXBlIHsgVHJlZU5vZGUgfSBmcm9tIFwiLi90cmVlLW5vZGUuaW50ZXJmYWNlXCI7XG5cbmV4cG9ydCBjbGFzcyBUcmVlTm9kZUJhc2U8VXNlcmxhbmRDb21wb25lbnQ+XG4gICBpbXBsZW1lbnRzIFBhcnRpYWw8VHJlZU5vZGU8VXNlcmxhbmRDb21wb25lbnQ+Plxue1xuICAgcHJpdmF0ZSByZWFkb25seSBfYnJhbmNoZXM6IEFycmF5PFRyZWVCcmFuY2g8VXNlcmxhbmRDb21wb25lbnQ+PjtcbiAgIHByaXZhdGUgcmVhZG9ubHkgZXZlbnRzJDogU3ViamVjdDxUcmVlRXZlbnQ8VXNlcmxhbmRDb21wb25lbnQ+PjtcbiAgIHByaXZhdGUgZGVzdHJveWVkOiBib29sZWFuID0gZmFsc2U7XG4gICBwcml2YXRlIHJlYWRvbmx5IHN1YnNjcmlwdGlvbnM6IEFycmF5PFN1YnNjcmlwdGlvbj47XG5cbiAgIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICAgIHRoaXMuX2JyYW5jaGVzID0gW107XG4gICAgICB0aGlzLmV2ZW50cyQgPSBuZXcgU3ViamVjdCgpO1xuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zID0gW1xuICAgICAgICAgdGhpcy5ncmFmdHNUb1NlbGYoKS5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJlZ2lzdGVyQ2hpbGRSZWxhdGlvbnNoaXAoZXZlbnQuY2hpbGQoKSwgZXZlbnQuaW5kZXgoKSk7XG4gICAgICAgICB9KSxcbiAgICAgICAgIHRoaXMucHJ1bmVzVG9TZWxmKCkuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5kZXJlZ2lzdGVyQ2hpbGRSZWxhdGlvbnNoaXAoZXZlbnQuY2hpbGQoKSk7XG4gICAgICAgICB9KVxuICAgICAgXTtcbiAgIH1cblxuICAgcHVibGljIGJyYW5jaGVzKCk6IEFycmF5PFRyZWVCcmFuY2g8VXNlcmxhbmRDb21wb25lbnQ+PiB7XG4gICAgICByZXR1cm4gWy4uLnRoaXMuX2JyYW5jaGVzXTtcbiAgIH1cblxuICAgcHVibGljIGRlc3Ryb3koKTogdm9pZCB7XG4gICAgICB0aGlzLmJyYW5jaGVzKCkuZm9yRWFjaCgoYnJhbmNoKSA9PiB7XG4gICAgICAgICBicmFuY2guZGVzdHJveSgpO1xuICAgICAgfSk7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaCgoc3ViKSA9PiB7XG4gICAgICAgICBzdWIudW5zdWJzY3JpYmUoKTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5kZXN0cm95ZWQgPSB0cnVlO1xuICAgfVxuXG4gICBwdWJsaWMgZGlzcGF0Y2goZXZlbnQ6IFRyZWVFdmVudDxVc2VybGFuZENvbXBvbmVudD4pOiB2b2lkIHtcbiAgICAgIHRoaXMuZXZlbnRzJC5uZXh0KGV2ZW50KTtcbiAgIH1cblxuICAgcHVibGljIGV2ZW50cygpOiBPYnNlcnZhYmxlPFRyZWVFdmVudDxVc2VybGFuZENvbXBvbmVudD4+IHtcbiAgICAgIHJldHVybiB0aGlzLmV2ZW50cyQ7XG4gICB9XG5cbiAgIHB1YmxpYyBnZXRCcmFuY2goaW5kZXg6IG51bWJlcik6IFRyZWVCcmFuY2g8VXNlcmxhbmRDb21wb25lbnQ+IHwgdW5kZWZpbmVkIHtcbiAgICAgIHJldHVybiB0aGlzLl9icmFuY2hlc1tpbmRleF07XG4gICB9XG5cbiAgIHB1YmxpYyBoYW5kbGVVc2VybGFuZEVycm9yKGVycm9yOiB1bmtub3duKTogbmV2ZXIge1xuICAgICAgY29uc3QgbWVzc2FnZSA9IGhhc1Byb3BlcnR5KGVycm9yLCBcIm1lc3NhZ2VcIilcbiAgICAgICAgID8gZXJyb3IubWVzc2FnZVxuICAgICAgICAgOiBcIlVua25vd24gZXJyb3JcIjtcbiAgICAgIHRocm93IG5ldyBUcmVlRXJyb3IoYEZhaWxlZCB0byBncm93IGJyYW5jaDogJHttZXNzYWdlfWAsIHtcbiAgICAgICAgIC8vIFRoaXMgY2FzdCB0byBgYW55YCBpcyBkdWUgdG8gYW4gaXNzdWUgaW4gdHlwZXNjcmlwdCB0aGF0IGhhcyBiZWVuXG4gICAgICAgICAvLyByZXNvbHZlZCBhdCBsZWFzdCBieSB2ZXJzaW9uIDQuOS41LiBXaGVuIHdlIHVwZ3JhZGUgb3VyIHR5cGVzY3JpcHRcbiAgICAgICAgIC8vIHZlcnNpb24gd2UgY2FuIHJlbW92ZSB0aGUgY2FzdC5cbiAgICAgICAgIGNhdXNlOiBlcnJvciBhcyBhbnlcbiAgICAgIH0pO1xuICAgfVxuXG4gICBwdWJsaWMgaXNEZXN0cm95ZWQoKTogYm9vbGVhbiB7XG4gICAgICByZXR1cm4gdGhpcy5kZXN0cm95ZWQ7XG4gICB9XG5cbiAgIHB1YmxpYyBwbG90KCk6IFRyZWVQbG90IHtcbiAgICAgIHJldHVybiBuZXcgTWFwKFxuICAgICAgICAgdGhpcy5icmFuY2hlcygpLm1hcCgoYnJhbmNoLCBpbmRleCkgPT4gW2luZGV4LCBicmFuY2gucGxvdCgpXSlcbiAgICAgICk7XG4gICB9XG5cbiAgIHB1YmxpYyB0cmF2ZXJzZShcbiAgICAgIGNhbGxiYWNrOiAobm9kZTogVHJlZUJyYW5jaDxVc2VybGFuZENvbXBvbmVudD4pID0+IHZvaWRcbiAgICk6IHZvaWQge1xuICAgICAgdGhpcy5icmFuY2hlcygpLmZvckVhY2goKGJyYW5jaCkgPT4ge1xuICAgICAgICAgYnJhbmNoLnRyYXZlcnNlKGNhbGxiYWNrKTtcbiAgICAgIH0pO1xuICAgfVxuXG4gICBwcml2YXRlIGRlcmVnaXN0ZXJDaGlsZFJlbGF0aW9uc2hpcChcbiAgICAgIGNoaWxkOiBUcmVlQnJhbmNoPFVzZXJsYW5kQ29tcG9uZW50PlxuICAgKTogdm9pZCB7XG4gICAgICBjb25zdCBpbmRleCA9IHRoaXMuYnJhbmNoZXMoKS5maW5kSW5kZXgoKGJyYW5jaCkgPT4gYnJhbmNoID09PSBjaGlsZCk7XG4gICAgICB0aGlzLl9icmFuY2hlcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgfVxuXG4gICBwcml2YXRlIGdyYWZ0c1RvU2VsZigpOiBPYnNlcnZhYmxlPEdyYWZ0RXZlbnQ8VXNlcmxhbmRDb21wb25lbnQ+PiB7XG4gICAgICByZXR1cm4gdGhpcy5ldmVudHMoKS5waXBlKFxuICAgICAgICAgZmlsdGVyKFxuICAgICAgICAgICAgKGV2ZW50KTogZXZlbnQgaXMgR3JhZnRFdmVudDxVc2VybGFuZENvbXBvbmVudD4gPT5cbiAgICAgICAgICAgICAgIGV2ZW50IGluc3RhbmNlb2YgR3JhZnRFdmVudFxuICAgICAgICAgKSxcbiAgICAgICAgIGZpbHRlcigoZXZlbnQpID0+IGV2ZW50LnBhcmVudCgpLmV2ZW50cygpID09PSB0aGlzLmV2ZW50cyQpXG4gICAgICApO1xuICAgfVxuXG4gICBwcml2YXRlIHBydW5lc1RvU2VsZigpOiBPYnNlcnZhYmxlPFBydW5lRXZlbnQ8VXNlcmxhbmRDb21wb25lbnQ+PiB7XG4gICAgICByZXR1cm4gdGhpcy5ldmVudHMoKS5waXBlKFxuICAgICAgICAgZmlsdGVyKFxuICAgICAgICAgICAgKGV2ZW50KTogZXZlbnQgaXMgUHJ1bmVFdmVudDxVc2VybGFuZENvbXBvbmVudD4gPT5cbiAgICAgICAgICAgICAgIGV2ZW50IGluc3RhbmNlb2YgUHJ1bmVFdmVudFxuICAgICAgICAgKSxcbiAgICAgICAgIGZpbHRlcigoZXZlbnQpID0+IGV2ZW50LnBhcmVudCgpLmV2ZW50cygpID09PSB0aGlzLmV2ZW50cyQpXG4gICAgICApO1xuICAgfVxuXG4gICBwcml2YXRlIHJlZ2lzdGVyQ2hpbGRSZWxhdGlvbnNoaXAoXG4gICAgICBjaGlsZDogVHJlZUJyYW5jaDxVc2VybGFuZENvbXBvbmVudD4sXG4gICAgICBpbmRleDogbnVtYmVyXG4gICApOiB2b2lkIHtcbiAgICAgIGNvbnN0IGJyYW5jaGVzID0gdGhpcy5icmFuY2hlcygpO1xuICAgICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+IGJyYW5jaGVzLmxlbmd0aCkge1xuICAgICAgICAgdGhyb3cgbmV3IFRyZWVFcnJvcihcbiAgICAgICAgICAgIGBDYW4ndCByZWdpc3RlciBjaGlsZCBhdCBpbmRleCAke2luZGV4fS4gT3V0IG9mIHJhbmdlLmBcbiAgICAgICAgICk7XG4gICAgICB9XG4gICAgICB0aGlzLl9icmFuY2hlcy5zcGxpY2UoaW5kZXgsIDAsIGNoaWxkKTtcbiAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1ub2RlLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2xpbWJsZS10cmVlL3NyYy9saWIvY29yZS90cmVlLW5vZGUuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFRyZWVSb290IH0gZnJvbSBcIi4vdHJlZS1yb290XCI7XG5pbXBvcnQgdHlwZSB7IFRyZWVQbG90IH0gZnJvbSBcIi4vdHJlZS1wbG90LmludGVyZmFjZVwiO1xuaW1wb3J0IHR5cGUgeyBCcmFuY2hhYmxlIH0gZnJvbSBcIi4vYnJhbmNoYWJsZS5pbnRlcmZhY2VcIjtcbmltcG9ydCB0eXBlIHsgQ29tcG9uZW50Q29udGFpbmVyIH0gZnJvbSBcIi4vY29tcG9uZW50LWNvbnRhaW5lci5pbnRlcmZhY2VcIjtcbmltcG9ydCB0eXBlIHsgT2JzZXJ2YWJsZSB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgdHlwZSB7IFRyZWVFdmVudCB9IGZyb20gXCIuLi9ldmVudHNcIjtcbmltcG9ydCB0eXBlIHsgTm9kZUNvbXBvbmVudCB9IGZyb20gXCIuLi9jb21wb25lbnRzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHJlZU5vZGU8VXNlcmxhbmRDb21wb25lbnQ+XG4gICBleHRlbmRzIEJyYW5jaGFibGU8VXNlcmxhbmRDb21wb25lbnQ+LFxuICAgICAgQ29tcG9uZW50Q29udGFpbmVyPE5vZGVDb21wb25lbnQ+IHtcbiAgIGRlc3Ryb3k6ICgpID0+IHZvaWQ7XG4gICBkaXNwYXRjaDogKGV2ZW50OiBUcmVlRXZlbnQ8VXNlcmxhbmRDb21wb25lbnQ+KSA9PiB2b2lkO1xuICAgZXZlbnRzOiAoKSA9PiBPYnNlcnZhYmxlPFRyZWVFdmVudDxVc2VybGFuZENvbXBvbmVudD4+O1xuICAgaXNEZXN0cm95ZWQ6ICgpID0+IGJvb2xlYW47XG4gICBwbG90OiAoKSA9PiBUcmVlUGxvdDtcbiAgIHJvb3Q6ICgpID0+IFRyZWVSb290PGFueT4gfCB1bmRlZmluZWQ7XG4gICB0cmF2ZXJzZTogKGNhbGxiYWNrOiAobm9kZTogVHJlZU5vZGU8VXNlcmxhbmRDb21wb25lbnQ+KSA9PiB2b2lkKSA9PiB2b2lkO1xufVxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1wbG90LmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2xpbWJsZS10cmVlL3NyYy9saWIvY29yZS90cmVlLXBsb3QuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBUcmVlUGxvdCA9IE1hcDxudW1iZXIsIFRyZWVQbG90PjtcbiJdfQ==
@@ -0,0 +1,3 @@
1
+ export * from "./tree-root";
2
+ export * from "./root-controller";
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9saW1ibGUtdHJlZS9zcmMvbGliL2NvcmUvdHJlZS1yb290L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsbUJBQW1CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi90cmVlLXJvb3RcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3Jvb3QtY29udHJvbGxlclwiO1xuIl19
@@ -1,6 +1,6 @@
1
- import { assert } from "../../../shared/assert";
2
- import { RootComponent } from "../../components/root/root.component";
3
- import { dropzoneRenderer } from "../../extras/drag-and-drop/dropzone-renderer";
1
+ import { assert } from "../../../shared";
2
+ import { RootComponent } from "../../components";
3
+ import { dropzoneRenderer } from "../../extras/drag-and-drop";
4
4
  /**
5
5
  * A wrapper around the BranchComponent that helps instantiate it and handles its events.
6
6
  */
@@ -39,4 +39,4 @@ export class RootController {
39
39
  return this.rootComponentRef.location.nativeElement;
40
40
  }
41
41
  }
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9vdC1jb250cm9sbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbGltYmxlLXRyZWUvc3JjL2xpYi9jb3JlL3RyZWUtcm9vdC9yb290LWNvbnRyb2xsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRWhELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUloRjs7R0FFRztBQUNILE1BQU0sT0FBTyxjQUFjO0lBSXhCLFlBQ29CLFFBQXFCLEVBQ3RDLGdCQUFrQztRQURqQixhQUFRLEdBQVIsUUFBUSxDQUFhO1FBR3RDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDeEUsTUFBTSxXQUFXLEdBQ2QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUN6RCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQztZQUN6RCxNQUFNLENBQUMsUUFBUSxLQUFLLFNBQVMsQ0FBQyxDQUFDO1lBQy9CLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDOUQsQ0FBQyxDQUFDLENBQUM7UUFDTixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQ2hFLEdBQUcsRUFBRTtZQUNGLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZELENBQUMsQ0FDSCxDQUFDO1FBQ0YsSUFBSSxDQUFDLHFCQUFxQixHQUFHLENBQUMsV0FBVyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFTSxPQUFPO1FBQ1gsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ3hDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNyQixDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7SUFFTSxhQUFhO1FBQ2pCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUMzRCxDQUFDO0lBRU0sb0JBQW9CO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQztJQUMzRCxDQUFDO0lBRU0sb0JBQW9CO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQztJQUN6QyxDQUFDO0lBRU0sV0FBVztRQUNmLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQztJQUN6QyxDQUFDO0lBRU0sZ0JBQWdCO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUM7SUFDdkQsQ0FBQztDQUNIIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50UmVmLCBWaWV3Q29udGFpbmVyUmVmLCBWaWV3UmVmIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IGFzc2VydCB9IGZyb20gXCIuLi8uLi8uLi9zaGFyZWQvYXNzZXJ0XCI7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgUm9vdENvbXBvbmVudCB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3Jvb3Qvcm9vdC5jb21wb25lbnRcIjtcbmltcG9ydCB7IGRyb3B6b25lUmVuZGVyZXIgfSBmcm9tIFwiLi4vLi4vZXh0cmFzL2RyYWctYW5kLWRyb3AvZHJvcHpvbmUtcmVuZGVyZXJcIjtcbmltcG9ydCB7IENvbXBvbmVudENvbnRhaW5lciB9IGZyb20gXCIuLi8uLi9zdHJ1Y3R1cmVcIjtcbmltcG9ydCB7IFRyZWVSb290IH0gZnJvbSBcIi4vdHJlZS1yb290XCI7XG5cbi8qKlxuICogQSB3cmFwcGVyIGFyb3VuZCB0aGUgQnJhbmNoQ29tcG9uZW50IHRoYXQgaGVscHMgaW5zdGFudGlhdGUgaXQgYW5kIGhhbmRsZXMgaXRzIGV2ZW50cy5cbiAqL1xuZXhwb3J0IGNsYXNzIFJvb3RDb250cm9sbGVyPFQ+IGltcGxlbWVudHMgQ29tcG9uZW50Q29udGFpbmVyPFJvb3RDb21wb25lbnQ+IHtcbiAgIHByaXZhdGUgcmVhZG9ubHkgcm9vdENvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPFJvb3RDb21wb25lbnQ+O1xuICAgcHJpdmF0ZSByZWFkb25seSBpbnN0YW5jZVN1YnNjcmlwdGlvbnM6IEFycmF5PFN1YnNjcmlwdGlvbj47XG5cbiAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICAgIHByaXZhdGUgcmVhZG9ubHkgdHJlZVJvb3Q6IFRyZWVSb290PFQ+LFxuICAgICAgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZlxuICAgKSB7XG4gICAgICB0aGlzLnJvb3RDb21wb25lbnRSZWYgPSB2aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudChSb290Q29tcG9uZW50KTtcbiAgICAgIGNvbnN0IHZpZXdJbml0U3ViID1cbiAgICAgICAgIHRoaXMucm9vdENvbXBvbmVudFJlZi5pbnN0YW5jZS5hZnRlclZpZXdJbml0LnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBkcm9wem9uZSA9IHRoaXMucm9vdENvbXBvbmVudFJlZi5pbnN0YW5jZS5kcm9wem9uZTtcbiAgICAgICAgICAgIGFzc2VydChkcm9wem9uZSAhPT0gdW5kZWZpbmVkKTtcbiAgICAgICAgICAgIGRyb3B6b25lUmVuZGVyZXIucmVnaXN0ZXJEcm9wem9uZShkcm9wem9uZSwgdGhpcy50cmVlUm9vdCk7XG4gICAgICAgICB9KTtcbiAgICAgIGNvbnN0IGRyb3BwZWRTdWIgPSB0aGlzLnJvb3RDb21wb25lbnRSZWYuaW5zdGFuY2UuZHJvcHBlZC5zdWJzY3JpYmUoXG4gICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICBkcm9wem9uZVJlbmRlcmVyLmhhbmRsZURyb3AodGhpcy50cmVlUm9vdCwgXCJpbm5lclwiKTtcbiAgICAgICAgIH1cbiAgICAgICk7XG4gICAgICB0aGlzLmluc3RhbmNlU3Vic2NyaXB0aW9ucyA9IFt2aWV3SW5pdFN1YiwgZHJvcHBlZFN1Yl07XG4gICB9XG5cbiAgIHB1YmxpYyBkZXN0cm95KCk6IHZvaWQge1xuICAgICAgdGhpcy5pbnN0YW5jZVN1YnNjcmlwdGlvbnMuZm9yRWFjaCgoc3ViKSA9PiB7XG4gICAgICAgICBzdWIudW5zdWJzY3JpYmUoKTtcbiAgICAgIH0pO1xuICAgfVxuXG4gICBwdWJsaWMgZGV0ZWN0Q2hhbmdlcygpOiB2b2lkIHtcbiAgICAgIHRoaXMucm9vdENvbXBvbmVudFJlZi5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICB9XG5cbiAgIHB1YmxpYyBnZXRCcmFuY2hlc0NvbnRhaW5lcigpOiBWaWV3Q29udGFpbmVyUmVmIHwgdW5kZWZpbmVkIHtcbiAgICAgIHJldHVybiB0aGlzLnJvb3RDb21wb25lbnRSZWYuaW5zdGFuY2UuYnJhbmNoZXNDb250YWluZXI7XG4gICB9XG5cbiAgIHB1YmxpYyBnZXRDb21wb25lbnRJbnN0YW5jZSgpOiBSb290Q29tcG9uZW50IHtcbiAgICAgIHJldHVybiB0aGlzLnJvb3RDb21wb25lbnRSZWYuaW5zdGFuY2U7XG4gICB9XG5cbiAgIHB1YmxpYyBnZXRIb3N0VmlldygpOiBWaWV3UmVmIHtcbiAgICAgIHJldHVybiB0aGlzLnJvb3RDb21wb25lbnRSZWYuaG9zdFZpZXc7XG4gICB9XG5cbiAgIHB1YmxpYyBnZXROYXRpdmVFbGVtZW50KCk6IEhUTUxFbGVtZW50IHtcbiAgICAgIHJldHVybiB0aGlzLnJvb3RDb21wb25lbnRSZWYubG9jYXRpb24ubmF0aXZlRWxlbWVudDtcbiAgIH1cbn1cbiJdfQ==
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9vdC1jb250cm9sbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbGltYmxlLXRyZWUvc3JjL2xpYi9jb3JlL3RyZWUtcm9vdC9yb290LWNvbnRyb2xsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXpDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUk5RDs7R0FFRztBQUNILE1BQU0sT0FBTyxjQUFjO0lBSXhCLFlBQ29CLFFBQXFCLEVBQ3RDLGdCQUFrQztRQURqQixhQUFRLEdBQVIsUUFBUSxDQUFhO1FBR3RDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDeEUsTUFBTSxXQUFXLEdBQ2QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUN6RCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQztZQUN6RCxNQUFNLENBQUMsUUFBUSxLQUFLLFNBQVMsQ0FBQyxDQUFDO1lBQy9CLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDOUQsQ0FBQyxDQUFDLENBQUM7UUFDTixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQ2hFLEdBQUcsRUFBRTtZQUNGLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZELENBQUMsQ0FDSCxDQUFDO1FBQ0YsSUFBSSxDQUFDLHFCQUFxQixHQUFHLENBQUMsV0FBVyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFTSxPQUFPO1FBQ1gsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ3hDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNyQixDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7SUFFTSxhQUFhO1FBQ2pCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUMzRCxDQUFDO0lBRU0sb0JBQW9CO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQztJQUMzRCxDQUFDO0lBRU0sb0JBQW9CO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQztJQUN6QyxDQUFDO0lBRU0sV0FBVztRQUNmLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQztJQUN6QyxDQUFDO0lBRU0sZ0JBQWdCO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUM7SUFDdkQsQ0FBQztDQUNIIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBDb21wb25lbnRSZWYsIFZpZXdDb250YWluZXJSZWYsIFZpZXdSZWYgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgYXNzZXJ0IH0gZnJvbSBcIi4uLy4uLy4uL3NoYXJlZFwiO1xuaW1wb3J0IHsgdHlwZSBTdWJzY3JpcHRpb24gfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgUm9vdENvbXBvbmVudCB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzXCI7XG5pbXBvcnQgeyBkcm9wem9uZVJlbmRlcmVyIH0gZnJvbSBcIi4uLy4uL2V4dHJhcy9kcmFnLWFuZC1kcm9wXCI7XG5pbXBvcnQgdHlwZSB7IFRyZWVSb290IH0gZnJvbSBcIi4vdHJlZS1yb290XCI7XG5pbXBvcnQgdHlwZSB7IENvbXBvbmVudENvbnRhaW5lciB9IGZyb20gXCIuLi9jb21wb25lbnQtY29udGFpbmVyLmludGVyZmFjZVwiO1xuXG4vKipcbiAqIEEgd3JhcHBlciBhcm91bmQgdGhlIEJyYW5jaENvbXBvbmVudCB0aGF0IGhlbHBzIGluc3RhbnRpYXRlIGl0IGFuZCBoYW5kbGVzIGl0cyBldmVudHMuXG4gKi9cbmV4cG9ydCBjbGFzcyBSb290Q29udHJvbGxlcjxUPiBpbXBsZW1lbnRzIENvbXBvbmVudENvbnRhaW5lcjxSb290Q29tcG9uZW50PiB7XG4gICBwcml2YXRlIHJlYWRvbmx5IHJvb3RDb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxSb290Q29tcG9uZW50PjtcbiAgIHByaXZhdGUgcmVhZG9ubHkgaW5zdGFuY2VTdWJzY3JpcHRpb25zOiBBcnJheTxTdWJzY3JpcHRpb24+O1xuXG4gICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgICBwcml2YXRlIHJlYWRvbmx5IHRyZWVSb290OiBUcmVlUm9vdDxUPixcbiAgICAgIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWZcbiAgICkge1xuICAgICAgdGhpcy5yb290Q29tcG9uZW50UmVmID0gdmlld0NvbnRhaW5lclJlZi5jcmVhdGVDb21wb25lbnQoUm9vdENvbXBvbmVudCk7XG4gICAgICBjb25zdCB2aWV3SW5pdFN1YiA9XG4gICAgICAgICB0aGlzLnJvb3RDb21wb25lbnRSZWYuaW5zdGFuY2UuYWZ0ZXJWaWV3SW5pdC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZHJvcHpvbmUgPSB0aGlzLnJvb3RDb21wb25lbnRSZWYuaW5zdGFuY2UuZHJvcHpvbmU7XG4gICAgICAgICAgICBhc3NlcnQoZHJvcHpvbmUgIT09IHVuZGVmaW5lZCk7XG4gICAgICAgICAgICBkcm9wem9uZVJlbmRlcmVyLnJlZ2lzdGVyRHJvcHpvbmUoZHJvcHpvbmUsIHRoaXMudHJlZVJvb3QpO1xuICAgICAgICAgfSk7XG4gICAgICBjb25zdCBkcm9wcGVkU3ViID0gdGhpcy5yb290Q29tcG9uZW50UmVmLmluc3RhbmNlLmRyb3BwZWQuc3Vic2NyaWJlKFxuICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgZHJvcHpvbmVSZW5kZXJlci5oYW5kbGVEcm9wKHRoaXMudHJlZVJvb3QsIFwiaW5uZXJcIik7XG4gICAgICAgICB9XG4gICAgICApO1xuICAgICAgdGhpcy5pbnN0YW5jZVN1YnNjcmlwdGlvbnMgPSBbdmlld0luaXRTdWIsIGRyb3BwZWRTdWJdO1xuICAgfVxuXG4gICBwdWJsaWMgZGVzdHJveSgpOiB2b2lkIHtcbiAgICAgIHRoaXMuaW5zdGFuY2VTdWJzY3JpcHRpb25zLmZvckVhY2goKHN1YikgPT4ge1xuICAgICAgICAgc3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgICB9KTtcbiAgIH1cblxuICAgcHVibGljIGRldGVjdENoYW5nZXMoKTogdm9pZCB7XG4gICAgICB0aGlzLnJvb3RDb21wb25lbnRSZWYuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgfVxuXG4gICBwdWJsaWMgZ2V0QnJhbmNoZXNDb250YWluZXIoKTogVmlld0NvbnRhaW5lclJlZiB8IHVuZGVmaW5lZCB7XG4gICAgICByZXR1cm4gdGhpcy5yb290Q29tcG9uZW50UmVmLmluc3RhbmNlLmJyYW5jaGVzQ29udGFpbmVyO1xuICAgfVxuXG4gICBwdWJsaWMgZ2V0Q29tcG9uZW50SW5zdGFuY2UoKTogUm9vdENvbXBvbmVudCB7XG4gICAgICByZXR1cm4gdGhpcy5yb290Q29tcG9uZW50UmVmLmluc3RhbmNlO1xuICAgfVxuXG4gICBwdWJsaWMgZ2V0SG9zdFZpZXcoKTogVmlld1JlZiB7XG4gICAgICByZXR1cm4gdGhpcy5yb290Q29tcG9uZW50UmVmLmhvc3RWaWV3O1xuICAgfVxuXG4gICBwdWJsaWMgZ2V0TmF0aXZlRWxlbWVudCgpOiBIVE1MRWxlbWVudCB7XG4gICAgICByZXR1cm4gdGhpcy5yb290Q29tcG9uZW50UmVmLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQ7XG4gICB9XG59XG4iXX0=
@@ -1,10 +1,10 @@
1
- import { TreeBranch } from "../tree-branch/tree-branch";
1
+ import { TreeBranch } from "../tree-branch";
2
2
  import { TreeNodeBase } from "../tree-node-base";
3
- import { dropzoneRenderer } from "../../extras/drag-and-drop/dropzone-renderer";
4
- import { config } from "../configuration/configuration";
3
+ import { config } from "../configuration";
4
+ import { RootController } from "../tree-root/root-controller";
5
+ import { dropzoneRenderer } from "../../extras/drag-and-drop";
5
6
  import { TreeError } from "../../errors";
6
7
  import { DestructionEvent } from "../../events";
7
- import { RootController } from "./root-controller";
8
8
  /**
9
9
  * Represents the base of the tree. It renders a very simple container for child
10
10
  * branches. It has methods for creating and accessing those branches. It emits
@@ -127,7 +127,12 @@ export class TreeRoot {
127
127
  if (this.isDestroyed()) {
128
128
  throw new TreeError("Cannot grow a branch on a destroyed tree root");
129
129
  }
130
- return new TreeBranch(this, { component, ...options });
130
+ try {
131
+ return new TreeBranch(this, { component, ...options });
132
+ }
133
+ catch (error) {
134
+ this.handleUserlandError(error);
135
+ }
131
136
  }
132
137
  /** @returns `true` if the tree is destroyed, `false` otherwise */
133
138
  isDestroyed() {
@@ -176,5 +181,13 @@ export class TreeRoot {
176
181
  callback(this);
177
182
  this.treeNodeBase.traverse(callback);
178
183
  }
184
+ handleUserlandError(error) {
185
+ // When an error occurs in a userland component during a tree operation,
186
+ // it can cause undefined, bizarre behavior in the tree. To prevent this,
187
+ // we destroy the tree and throw an error instead. This helps protect
188
+ // the end-user's data from corruption.
189
+ this.destroy();
190
+ this.treeNodeBase.handleUserlandError(error);
191
+ }
179
192
  }
180
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1yb290LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbGltYmxlLXRyZWUvc3JjL2xpYi9jb3JlL3RyZWUtcm9vdC90cmVlLXJvb3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBR3hELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUdqRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNoRixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDeEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN6QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFaEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRW5EOzs7O0dBSUc7QUFDSCxNQUFNLE9BQU8sUUFBUTtJQU1sQixZQUFvQyxnQkFBa0M7UUFBbEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNuRSxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDdkMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLGNBQWMsQ0FBQyxJQUFJLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztRQUNqRSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVELHNFQUFzRTtJQUMvRCxRQUFRO1FBQ1osT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3ZDLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNJLE9BQU87UUFDWCxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRTtZQUNyQixNQUFNLElBQUksU0FBUyxDQUFDLHNDQUFzQyxDQUFDLENBQUM7U0FDOUQ7UUFDRCxn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QUVULFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNmLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7Q0FDSCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgT2JzZXJ2YWJsZSB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBUcmVlQnJhbmNoIH0gZnJvbSBcIi4uL3RyZWUtYnJhbmNoL3RyZWUtYnJhbmNoXCI7XG5pbXBvcnQgdHlwZSB7IFR5cGUsIFZpZXdDb250YWluZXJSZWYsIFZpZXdSZWYgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgUm9vdENvbXBvbmVudCB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3Jvb3Qvcm9vdC5jb21wb25lbnRcIjtcbmltcG9ydCB7IFRyZWVOb2RlQmFzZSB9IGZyb20gXCIuLi90cmVlLW5vZGUtYmFzZVwiO1xuaW1wb3J0IHR5cGUgeyBOb2RlQ29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvbm9kZS1jb21wb25lbnQuaW50ZXJmYWNlXCI7XG5pbXBvcnQgdHlwZSB7IEJyYW5jaE9wdGlvbnMgfSBmcm9tIFwiLi4vYnJhbmNoLW9wdGlvbnMuaW50ZXJmYWNlXCI7XG5pbXBvcnQgeyBkcm9wem9uZVJlbmRlcmVyIH0gZnJvbSBcIi4uLy4uL2V4dHJhcy9kcmFnLWFuZC1kcm9wL2Ryb3B6b25lLXJlbmRlcmVyXCI7XG5pbXBvcnQgeyBjb25maWcgfSBmcm9tIFwiLi4vY29uZmlndXJhdGlvbi9jb25maWd1cmF0aW9uXCI7XG5pbXBvcnQgeyBUcmVlRXJyb3IgfSBmcm9tIFwiLi4vLi4vZXJyb3JzXCI7XG5pbXBvcnQgeyBEZXN0cnVjdGlvbkV2ZW50IH0gZnJvbSBcIi4uLy4uL2V2ZW50c1wiO1xuaW1wb3J0IHR5cGUgeyBUcmVlTm9kZSwgVHJlZVBsb3QsIFRyZWVFdmVudCB9IGZyb20gXCIuLi8uLi9zdHJ1Y3R1cmVcIjtcbmltcG9ydCB7IFJvb3RDb250cm9sbGVyIH0gZnJvbSBcIi4vcm9vdC1jb250cm9sbGVyXCI7XG5cbi8qKlxuICogUmVwcmVzZW50cyB0aGUgYmFzZSBvZiB0aGUgdHJlZS4gSXQgcmVuZGVycyBhIHZlcnkgc2ltcGxlIGNvbnRhaW5lciBmb3IgY2hpbGRcbiAqIGJyYW5jaGVzLiBJdCBoYXMgbWV0aG9kcyBmb3IgY3JlYXRpbmcgYW5kIGFjY2Vzc2luZyB0aG9zZSBicmFuY2hlcy4gSXQgZW1pdHNcbiAqIGV2ZW50cyB3aGVuIHRoaW5ncyBoYXBwZW4gaW4gdGhlIHRyZWUuXG4gKi9cbmV4cG9ydCBjbGFzcyBUcmVlUm9vdDxVc2VybGFuZENvbXBvbmVudD5cbiAgIGltcGxlbWVudHMgVHJlZU5vZGU8VHJlZUJyYW5jaDxVc2VybGFuZENvbXBvbmVudD4sIFJvb3RDb21wb25lbnQ+XG57XG4gICBwcml2YXRlIHJlYWRvbmx5IHJvb3RDb250cm9sbGVyOiBSb290Q29udHJvbGxlcjxVc2VybGFuZENvbXBvbmVudD47XG4gICBwcml2YXRlIHJlYWRvbmx5IHRyZWVOb2RlQmFzZTogVHJlZU5vZGVCYXNlPFVzZXJsYW5kQ29tcG9uZW50PjtcblxuICAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZikge1xuICAgICAgdGhpcy50cmVlTm9kZUJhc2UgPSBuZXcgVHJlZU5vZGVCYXNlKCk7XG4gICAgICB0aGlzLnJvb3RDb250cm9sbGVyID0gbmV3IFJvb3RDb250cm9sbGVyKHRoaXMsIHZpZXdDb250YWluZXJSZWYpO1xuICAgICAgdGhpcy5kZXRlY3RDaGFuZ2VzKCk7XG4gICB9XG5cbiAgIC8qKiBAcmV0dXJucyBBbGwgY2hpbGQgYnJhbmNoZXMgYXMgYW4gYXJyYXkgb2YgVHJlZUJyYW5jaCBpbnN0YW5jZXMgKi9cbiAgIHB1YmxpYyBicmFuY2hlcygpOiBBcnJheTxUcmVlQnJhbmNoPFVzZXJsYW5kQ29tcG9uZW50Pj4ge1xuICAgICAgcmV0dXJuIHRoaXMudHJlZU5vZGVCYXNlLmJyYW5jaGVzKCk7XG4gICB9XG5cbiAgIC8qKlxuICAgICogUmVjdXJzaXZlbHkgZGVzdHJveXMgYWxsIGJyYW5jaGVzIG9mIHRoZSB0cmVlLCBhcyB3ZWxsIGFzIGl0c2VsZi5cbiAgICAqXG4gICAgKiBAcmVtYXJrc1xuICAgICogVGhpcyByZWxlYXNlcyBhbGwgcmVzb3VyY2VzIGhlbGQgb3IgY29uc3VtZWQgYnkgdGhlIHRyZWUuXG4gICAgKlxuICAgICogSXQgaXMgaW1wb3J0YW50IHRvIGNhbGwgdGhpcyBtZXRob2Qgd2hlbiBhIHRyZWUgaXMgZGlzY2FyZGVkLCBvdGhlcndpc2VcbiAgICAqIHRoZSB0cmVlIHdpbGwgcmVtYWluIGluIG1lbW9yeSBhbmQgY29udGludWUgdG8gY29uc3VtZSByZXNvdXJjZXMuXG4gICAgKi9cbiAgIHB1YmxpYyBkZXN0cm95KCk6IHZvaWQge1xuICAgICAgaWYgKHRoaXMuaXNEZXN0cm95ZWQoKSkge1xuICAgICAgICAgdGhyb3cgbmV3IFRyZWVFcnJvcihcIkNhbm5vdCBkZXN0cm95IGEgZGVzdHJveWVkIHRyZWUgcm9vdFwiKTtcbiAgICAgIH1cbiAgICAgIGRyb3B6b25lUmVuZGVyZXIuY2xlYXJUcmVlRnJvbVJlZ2lzdHJ5KHRoaXMpO1xuICAgICAgdGhpcy50cmVlTm9kZUJhc2UuZGVzdHJveSgpO1xuICAgICAgdGhpcy5yb290Q29udHJvbGxlci5kZXN0cm95KCk7XG4gICAgICB0aGlzLnZpZXdDb250YWluZXJSZWYuY2xlYXIoKTtcbiAgICAgIGNvbmZpZy5kZWxldGUodGhpcyk7XG4gICAgICB0aGlzLmRpc3BhdGNoKG5ldyBEZXN0cnVjdGlvbkV2ZW50KHRoaXMpKTtcbiAgIH1cblxuICAgLyoqIFJ1biBBbmd1bGFyIGNoYW5nZSBkZXRlY3Rpb24gb24gdGhlIHJvb3Qgb2YgdGhlIHRyZWUgKi9cbiAgIHB1YmxpYyBkZXRlY3RDaGFuZ2VzKCk6IHZvaWQge1xuICAgICAgdGhpcy5yb290Q29udHJvbGxlci5kZXRlY3RDaGFuZ2VzKCk7XG4gICB9XG5cbiAgIC8qKlxuICAgICogRW1pdHMgdGhlIHNwZWNpZmllZCBUcmVlRXZlbnQuXG4gICAgKlxuICAgICogQHJlbWFya3NcbiAgICAqIENhdXRpb246IEl0IGlzIG5vdCByZWNvbW1lbmRlZCB0byBtYW51YWxseSBlbWl0IFRyZWVFdmVudHMgdGhhdCBhcmUgYWxyZWFkeVxuICAgICogcHJvdmlkZWQgYnkgdGhlIGxpYnJhcnkuIEZvciBleGFtcGxlLCBpdCBpcyBub3QgcmVjb21tZW5kZWQgdG8gZW1pdCBhXG4gICAgKiBgR3JhZnRFdmVudGAsIGBEZXN0cnVjdGlvbkV2ZW50YCwgZXRjLiBUaGVzZSBldmVudHMgbWF5IGJlIHVzZWQgYnkgdGhlIHRyZWUsXG4gICAgKiBhbmQgZW1pdHRpbmcgdGhlbSBtYW51YWxseSBtYXkgY2F1c2UgdW5leHBlY3RlZCBiZWhhdmlvci4gSW5zdGVhZCwgd2VcbiAgICAqIHJlY29tbWVuZCBpbXBsZW1lbnRpbmcgdGhlIFRyZWVFdmVudCBpbnRlcmZhY2Ugd2l0aCB5b3VyIG93biBjdXN0b20gZXZlbnRzXG4gICAgKiBhbmQgZGlzcGF0Y2hpbmcgdGhvc2UuXG4gICAgKlxuICAgICogQHBhcmFtIGV2ZW50IC0gVGhlIFRyZWVFdmVudCB0aGF0IHdpbGwgYmUgZW1pdHRlZC5cbiAgICAqL1xuICAgcHVibGljIGRpc3BhdGNoKGV2ZW50OiBUcmVlRXZlbnQpOiB2b2lkIHtcbiAgICAgIHRoaXMudHJlZU5vZGVCYXNlLmRpc3BhdGNoKGV2ZW50KTtcbiAgIH1cblxuICAgLyoqXG4gICAgKiBAcmV0dXJuc1xuICAgICogQW4gb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIFRyZWVFdmVudHMgd2hlbmV2ZXIgYW4gZXZlbnQgaXMgZGlzcGF0Y2hlZFxuICAgICogaW4gdGhlIHJvb3Qgb3IgYW55IG9mIGl0cyBkZXNjZW5kYW50IGJyYW5jaGVzLlxuICAgICovXG4gICBwdWJsaWMgZXZlbnRzKCk6IE9ic2VydmFibGU8VHJlZUV2ZW50PiB7XG4gICAgICByZXR1cm4gdGhpcy50cmVlTm9kZUJhc2UuZXZlbnRzKCk7XG4gICB9XG5cbiAgIC8qKlxuICAgICogQHJldHVybnNcbiAgICAqIFRoZSBjaGlsZCBicmFuY2ggYXQgdGhlIHNwZWNpZmllZCBpbmRleCwgb3IgdW5kZWZpbmVkIGlmIHRoZXJlIGlzXG4gICAgKiBubyBjaGlsZCBicmFuY2ggYXQgdGhlIHNwZWNpZmllZCBpbmRleC5cbiAgICAqL1xuICAgcHVibGljIGdldEJyYW5jaChpbmRleDogbnVtYmVyKTogVHJlZUJyYW5jaDxVc2VybGFuZENvbXBvbmVudD4gfCB1bmRlZmluZWQge1xuICAgICAgcmV0dXJuIHRoaXMudHJlZU5vZGVCYXNlLmdldEJyYW5jaChpbmRleCk7XG4gICB9XG5cbiAgIC8qKiBAcmV0dXJucyBUaGUgVmlld0NvbnRhaW5lclJlZiBpbiB3aGljaCBjaGlsZCBicmFuY2hlcyBhcmUgcmVuZGVyZWQgKi9cbiAgIHB1YmxpYyBnZXRCcmFuY2hlc0NvbnRhaW5lcigpOiBWaWV3Q29udGFpbmVyUmVmIHwgdW5kZWZpbmVkIHtcbiAgICAgIGlmICh0aGlzLmlzRGVzdHJveWVkKCkpIHtcbiAgICAgICAgIHRocm93IG5ldyBUcmVlRXJyb3IoXG4gICAgICAgICAgICBcIkNhbm5vdCBnZXQgYnJhbmNoZXMgY29udGFpbmVyIGZyb20gYSBkZXN0cm95ZWQgdHJlZSByb290XCJcbiAgICAgICAgICk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5yb290Q29udHJvbGxlci5nZXRCcmFuY2hlc0NvbnRhaW5lcigpO1xuICAgfVxuXG4gICAvKipcbiAgICAqIFJldHJpZXZlcyB0aGUgUm9vdENvbXBvbmVudC5cbiAgICAqXG4gICAgKiBAcmVtYXJrc1xuICAgICogVGhlIFJvb3RDb21wb25lbnQgaG9sZHMgdGhlIEJyYW5jaGVzQ29udGFpbmVyLCBhcyB3ZWxsIGFzIGEgc2luZ2xlIERyb3B6b25lXG4gICAgKiBmb3IgZHJhZy1hbmQtZHJvcCBvcGVyYXRpb25zLlxuICAgICpcbiAgICAqIEByZXR1cm5zIFRoZSBpbnN0YW5jZSBvZiBSb290Q29tcG9uZW50IHRoYXQgaXMgcmVuZGVyZWQgYnkgdGhpcyBjbGFzcy5cbiAgICAqL1xuICAgcHVibGljIGdldENvbXBvbmVudEluc3RhbmNlKCk6IFJvb3RDb21wb25lbnQge1xuICAgICAgaWYgKHRoaXMuaXNEZXN0cm95ZWQoKSkge1xuICAgICAgICAgdGhyb3cgbmV3IFRyZWVFcnJvcihcbiAgICAgICAgICAgIFwiQ2Fubm90IGdldCBjb21wb25lbnQgaW5zdGFuY2UgZnJvbSBhIGRlc3Ryb3llZCB0cmVlIHJvb3RcIlxuICAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLnJvb3RDb250cm9sbGVyLmdldENvbXBvbmVudEluc3RhbmNlKCk7XG4gICB9XG5cbiAgIC8qKiBAcmV0dXJucyBUaGUgSG9zdCBWaWV3IGluIHdoaWNoIHRoZSBSb290Q29tcG9uZW50IGlzIHJlbmRlcmVkICovXG4gICBwdWJsaWMgZ2V0SG9zdFZpZXcoKTogVmlld1JlZiB7XG4gICAgICBpZiAodGhpcy5pc0Rlc3Ryb3llZCgpKSB7XG4gICAgICAgICB0aHJvdyBuZXcgVHJlZUVycm9yKFxuICAgICAgICAgICAgXCJDYW5ub3QgZ2V0IGNvbXBvbmVudCBob3N0IHZpZXcgZnJvbSBhIGRlc3Ryb3llZCB0cmVlIHJvb3RcIlxuICAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLnJvb3RDb250cm9sbGVyLmdldEhvc3RWaWV3KCk7XG4gICB9XG5cbiAgIC8qKiBAcmV0dXJucyBUaGUgUm9vdENvbXBvbmVudCBhcyBhIG5hdGl2ZSBIVE1MIEVsZW1lbnQgKi9cbiAgIHB1YmxpYyBnZXROYXRpdmVFbGVtZW50KCk6IEhUTUxFbGVtZW50IHtcbiAgICAgIGlmICh0aGlzLmlzRGVzdHJveWVkKCkpIHtcbiAgICAgICAgIHRocm93IG5ldyBUcmVlRXJyb3IoXG4gICAgICAgICAgICBcIkNhbm5vdCBnZXQgbmF0aXZlIGVsZW1lbnQgZnJvbSBhIGRlc3Ryb3llZCB0cmVlIHJvb3RcIlxuICAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLnJvb3RDb250cm9sbGVyLmdldE5hdGl2ZUVsZW1lbnQoKTtcbiAgIH1cblxuICAgLyoqXG4gICAgKiBBcHBlbmRzIGEgbmV3IGNoaWxkIGJyYW5jaCB0byB0aGlzIGJyYW5jaC4gVGhlIGNoaWxkIGJyYW5jaCB3aWxsIHJlbmRlclxuICAgICogdGhlIHNwZWNpZmllZCBjb21wb25lbnQgYWNjb3JkaW5nIHRvIHRoZSAob3B0aW9uYWwpIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyLlxuICAgICpcbiAgICAqIEBwYXJhbSBjb21wb25lbnQgLSBUaGUgY29tcG9uZW50IHRvIHJlbmRlciBpbiB0aGUgbmV3IGNoaWxkIGJyYW5jaC5cbiAgICAqIEBwYXJhbSBvcHRpb25zIC0gQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgbmV3IGNoaWxkIGJyYW5jaC5cbiAgICAqXG4gICAgKiBAcmV0dXJuc1xuICAgICogVGhlIG5ld2x5LWNyZWF0ZWQgY2hpbGQgYnJhbmNoLlxuICAgICovXG4gICBwdWJsaWMgZ3JvdyhcbiAgICAgIGNvbXBvbmVudDogVHlwZTxVc2VybGFuZENvbXBvbmVudD4sXG4gICAgICBvcHRpb25zPzogQnJhbmNoT3B0aW9uczxVc2VybGFuZENvbXBvbmVudD5cbiAgICk6IFRyZWVCcmFuY2g8VXNlcmxhbmRDb21wb25lbnQ+IHtcbiAgICAgIGlmICh0aGlzLmlzRGVzdHJveWVkKCkpIHtcbiAgICAgICAgIHRocm93IG5ldyBUcmVlRXJyb3IoXCJDYW5ub3QgZ3JvdyBhIGJyYW5jaCBvbiBhIGRlc3Ryb3llZCB0cmVlIHJvb3RcIik7XG4gICAgICB9XG4gICAgICByZXR1cm4gbmV3IFRyZWVCcmFuY2godGhpcywgeyBjb21wb25lbnQsIC4uLm9wdGlvbnMgfSk7XG4gICB9XG5cbiAgIC8qKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHRyZWUgaXMgZGVzdHJveWVkLCBgZmFsc2VgIG90aGVyd2lzZSAqL1xuICAgcHVibGljIGlzRGVzdHJveWVkKCk6IGJvb2xlYW4ge1xuICAgICAgcmV0dXJuIHRoaXMudHJlZU5vZGVCYXNlLmlzRGVzdHJveWVkKCk7XG4gICB9XG5cbiAgIC8qKlxuICAgICogUHJvdmlkZXMgYSBtb2RlbCBkZXNjcmliaW5nIHRoZSBzaGFwZSBvZiB0aGUgdHJlZS5cbiAgICAqXG4gICAgKiBAcmV0dXJucyBBIG11bHRpLWRpbWVuc2lvbmFsIE1hcCB3aGljaCBkZXNjcmliZXMgdGhlIHNoYXBlIG9mIHRoZSB0cmVlLlxuICAgICpcbiAgICAqIEBleGFtcGxlXG4gICAgKiBGb3IgZXhhbXBsZSwgYW4gZW1wdHkgdHJlZSB3aWxsIHJldHVybiBhbiBlbXB0eSBNYXAuIEEgdHJlZSB3aXRoIGEgc2luZ2xlXG4gICAgKiBicmFuY2ggd2lsbCByZXR1cm4gYSBNYXAgd2l0aCBhIHNpbmdsZSBlbnRyeSwgd2hlcmUgdGhlIGtleSBpcyB0aGUgaW5kZXhcbiAgICAqIG9mIHRoZSBicmFuY2ggKHplcm8pIGFuZCB0aGUgdmFsdWUgaXMgYW4gZW1wdHkgTWFwLiBBIFRyZWUgbGlrZSB0aGlzOlxuICAgICpcbiAgICAqIGBgYFxuICAgICogICAgICAgICAtLS1CcmFuY2gtLS0tLS0tQnJhbmNoXG4gICAgKiAgICAgICAgL1xuICAgICogUm9vdC0tLS0tLS1CcmFuY2hcbiAgICAqICAgICAgICBcXFxuICAgICogICAgICAgICAtLS1CcmFuY2hcbiAgICAqIGBgYFxuICAgICogV2lsbCByZXR1cm4gYSBNYXAgb2YgbWF0Y2hpbmcgc2hhcGU6XG4gICAgKiBgYGBcbiAgICAqIE1hcCB7XG4gICAgKiAgICAwOiBNYXAgeyAwOiBNYXAge319LFxuICAgICogICAgMTogTWFwIHt9LFxuICAgICogICAgMjogTWFwIHt9XG4gICAgKiB9XG4gICAgKiBgYGBcbiAgICAqL1xuICAgcHVibGljIHBsb3QoKTogVHJlZVBsb3Qge1xuICAgICAgcmV0dXJuIHRoaXMudHJlZU5vZGVCYXNlLnBsb3QoKTtcbiAgIH1cblxuICAgLyoqIEByZXR1cm5zIEl0c2VsZiAqL1xuICAgcHVibGljIHJvb3QoKTogdGhpcyB7XG4gICAgICByZXR1cm4gdGhpcztcbiAgIH1cblxuICAgLyoqXG4gICAgKiBUcmF2ZXJzZXMgdGhlIHRyZWUgaW4gZGVwdGgtZmlyc3QgcHJlLW9yZGVyLCBleGVjdXRpbmcgdGhlIHByb3ZpZGVkXG4gICAgKiBjYWxsYmFjayBmdW5jdGlvbiBvbiBlYWNoIG5vZGUuIFRyYXZlcnNhbCBpbmNsdWRlcyB0aGUgUm9vdC5cbiAgICAqXG4gICAgKiBAcGFyYW0gY2FsbGJhY2sgLSBBIGZ1bmN0aW9uIHRvIGV4ZWN1dGUgb24gZWFjaCBub2RlLlxuICAgICovXG4gICBwdWJsaWMgdHJhdmVyc2UoXG4gICAgICBjYWxsYmFjazogKFxuICAgICAgICAgbm9kZTogVHJlZU5vZGU8VHJlZUJyYW5jaDxVc2VybGFuZENvbXBvbmVudD4sIE5vZGVDb21wb25lbnQ+XG4gICAgICApID0+IHZvaWRcbiAgICk6IHZvaWQge1xuICAgICAgY2FsbGJhY2sodGhpcyk7XG4gICAgICB0aGlzLnRyZWVOb2RlQmFzZS50cmF2ZXJzZShjYWxsYmFjayk7XG4gICB9XG59XG4iXX0=
193
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1yb290LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbGltYmxlLXRyZWUvc3JjL2xpYi9jb3JlL3RyZWUtcm9vdC90cmVlLXJvb3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzVDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVqRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDMUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRzlELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzlELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDekMsT0FBTyxFQUFFLGdCQUFnQixFQUFhLE1BQU0sY0FBYyxDQUFDO0FBRTNEOzs7O0dBSUc7QUFDSCxNQUFNLE9BQU8sUUFBUTtJQU1sQixZQUFvQyxnQkFBa0M7UUFBbEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNuRSxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDdkMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLGNBQWMsQ0FBQyxJQUFJLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztRQUNqRSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVELHNFQUFzRTtJQUMvRCxRQUFRO1FBQ1osT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3ZDLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNJLE9BQU87UUFDWCxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRTtZQUNyQixNQUFNLElBQUksU0FBUyxDQUFDLHNDQUFzQyxDQUFDLENBQUM7U0FDOUQ7UUFDRCxn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LHNCQUFzQjtJQUNmLElBQUk7UUFDUixPQUFPLElBQUksQ0FBQztJQUNmLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLFFBQVEsQ0FDWixRQUFxRDtRQUVyRCxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDZixJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRU8sbUJBQW1CLENBQUMsS0FBYztRQUN2Qyx3RUFBd0U7UUFDeEUseUVBQXlFO1FBQ3pFLHFFQUFxRTtRQUNyRSx1Q0FBdUM7UUFDdkMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2YsSUFBSSxDQUFDLFlBQVksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoRCxDQUFDO0NBQ0giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IE9ic2VydmFibGUgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgVHJlZUJyYW5jaCB9IGZyb20gXCIuLi90cmVlLWJyYW5jaFwiO1xuaW1wb3J0IHR5cGUgeyBUcmVlUGxvdCB9IGZyb20gXCIuLi90cmVlLXBsb3QuaW50ZXJmYWNlXCI7XG5pbXBvcnQgdHlwZSB7IFRyZWVOb2RlIH0gZnJvbSBcIi4uL3RyZWUtbm9kZS5pbnRlcmZhY2VcIjtcbmltcG9ydCB7IFRyZWVOb2RlQmFzZSB9IGZyb20gXCIuLi90cmVlLW5vZGUtYmFzZVwiO1xuaW1wb3J0IHR5cGUgeyBCcmFuY2hPcHRpb25zIH0gZnJvbSBcIi4uL2JyYW5jaC1vcHRpb25zLmludGVyZmFjZVwiO1xuaW1wb3J0IHsgY29uZmlnIH0gZnJvbSBcIi4uL2NvbmZpZ3VyYXRpb25cIjtcbmltcG9ydCB7IFJvb3RDb250cm9sbGVyIH0gZnJvbSBcIi4uL3RyZWUtcm9vdC9yb290LWNvbnRyb2xsZXJcIjtcbmltcG9ydCB0eXBlIHsgVHlwZSwgVmlld0NvbnRhaW5lclJlZiwgVmlld1JlZiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBSb290Q29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHNcIjtcbmltcG9ydCB7IGRyb3B6b25lUmVuZGVyZXIgfSBmcm9tIFwiLi4vLi4vZXh0cmFzL2RyYWctYW5kLWRyb3BcIjtcbmltcG9ydCB7IFRyZWVFcnJvciB9IGZyb20gXCIuLi8uLi9lcnJvcnNcIjtcbmltcG9ydCB7IERlc3RydWN0aW9uRXZlbnQsIFRyZWVFdmVudCB9IGZyb20gXCIuLi8uLi9ldmVudHNcIjtcblxuLyoqXG4gKiBSZXByZXNlbnRzIHRoZSBiYXNlIG9mIHRoZSB0cmVlLiBJdCByZW5kZXJzIGEgdmVyeSBzaW1wbGUgY29udGFpbmVyIGZvciBjaGlsZFxuICogYnJhbmNoZXMuIEl0IGhhcyBtZXRob2RzIGZvciBjcmVhdGluZyBhbmQgYWNjZXNzaW5nIHRob3NlIGJyYW5jaGVzLiBJdCBlbWl0c1xuICogZXZlbnRzIHdoZW4gdGhpbmdzIGhhcHBlbiBpbiB0aGUgdHJlZS5cbiAqL1xuZXhwb3J0IGNsYXNzIFRyZWVSb290PFVzZXJsYW5kQ29tcG9uZW50PlxuICAgaW1wbGVtZW50cyBUcmVlTm9kZTxVc2VybGFuZENvbXBvbmVudD5cbntcbiAgIHByaXZhdGUgcmVhZG9ubHkgcm9vdENvbnRyb2xsZXI6IFJvb3RDb250cm9sbGVyPFVzZXJsYW5kQ29tcG9uZW50PjtcbiAgIHByaXZhdGUgcmVhZG9ubHkgdHJlZU5vZGVCYXNlOiBUcmVlTm9kZUJhc2U8VXNlcmxhbmRDb21wb25lbnQ+O1xuXG4gICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmKSB7XG4gICAgICB0aGlzLnRyZWVOb2RlQmFzZSA9IG5ldyBUcmVlTm9kZUJhc2UoKTtcbiAgICAgIHRoaXMucm9vdENvbnRyb2xsZXIgPSBuZXcgUm9vdENvbnRyb2xsZXIodGhpcywgdmlld0NvbnRhaW5lclJlZik7XG4gICAgICB0aGlzLmRldGVjdENoYW5nZXMoKTtcbiAgIH1cblxuICAgLyoqIEByZXR1cm5zIEFsbCBjaGlsZCBicmFuY2hlcyBhcyBhbiBhcnJheSBvZiBUcmVlQnJhbmNoIGluc3RhbmNlcyAqL1xuICAgcHVibGljIGJyYW5jaGVzKCk6IEFycmF5PFRyZWVCcmFuY2g8VXNlcmxhbmRDb21wb25lbnQ+PiB7XG4gICAgICByZXR1cm4gdGhpcy50cmVlTm9kZUJhc2UuYnJhbmNoZXMoKTtcbiAgIH1cblxuICAgLyoqXG4gICAgKiBSZWN1cnNpdmVseSBkZXN0cm95cyBhbGwgYnJhbmNoZXMgb2YgdGhlIHRyZWUsIGFzIHdlbGwgYXMgaXRzZWxmLlxuICAgICpcbiAgICAqIEByZW1hcmtzXG4gICAgKiBUaGlzIHJlbGVhc2VzIGFsbCByZXNvdXJjZXMgaGVsZCBvciBjb25zdW1lZCBieSB0aGUgdHJlZS5cbiAgICAqXG4gICAgKiBJdCBpcyBpbXBvcnRhbnQgdG8gY2FsbCB0aGlzIG1ldGhvZCB3aGVuIGEgdHJlZSBpcyBkaXNjYXJkZWQsIG90aGVyd2lzZVxuICAgICogdGhlIHRyZWUgd2lsbCByZW1haW4gaW4gbWVtb3J5IGFuZCBjb250aW51ZSB0byBjb25zdW1lIHJlc291cmNlcy5cbiAgICAqL1xuICAgcHVibGljIGRlc3Ryb3koKTogdm9pZCB7XG4gICAgICBpZiAodGhpcy5pc0Rlc3Ryb3llZCgpKSB7XG4gICAgICAgICB0aHJvdyBuZXcgVHJlZUVycm9yKFwiQ2Fubm90IGRlc3Ryb3kgYSBkZXN0cm95ZWQgdHJlZSByb290XCIpO1xuICAgICAgfVxuICAgICAgZHJvcHpvbmVSZW5kZXJlci5jbGVhclRyZWVGcm9tUmVnaXN0cnkodGhpcyk7XG4gICAgICB0aGlzLnRyZWVOb2RlQmFzZS5kZXN0cm95KCk7XG4gICAgICB0aGlzLnJvb3RDb250cm9sbGVyLmRlc3Ryb3koKTtcbiAgICAgIHRoaXMudmlld0NvbnRhaW5lclJlZi5jbGVhcigpO1xuICAgICAgY29uZmlnLmRlbGV0ZSh0aGlzKTtcbiAgICAgIHRoaXMuZGlzcGF0Y2gobmV3IERlc3RydWN0aW9uRXZlbnQodGhpcykpO1xuICAgfVxuXG4gICAvKiogUnVuIEFuZ3VsYXIgY2hhbmdlIGRldGVjdGlvbiBvbiB0aGUgcm9vdCBvZiB0aGUgdHJlZSAqL1xuICAgcHVibGljIGRldGVjdENoYW5nZXMoKTogdm9pZCB7XG4gICAgICB0aGlzLnJvb3RDb250cm9sbGVyLmRldGVjdENoYW5nZXMoKTtcbiAgIH1cblxuICAgLyoqXG4gICAgKiBFbWl0cyB0aGUgc3BlY2lmaWVkIFRyZWVFdmVudC5cbiAgICAqXG4gICAgKiBAcmVtYXJrc1xuICAgICogQ2F1dGlvbjogSXQgaXMgbm90IHJlY29tbWVuZGVkIHRvIG1hbnVhbGx5IGVtaXQgVHJlZUV2ZW50cyB0aGF0IGFyZSBhbHJlYWR5XG4gICAgKiBwcm92aWRlZCBieSB0aGUgbGlicmFyeS4gRm9yIGV4YW1wbGUsIGl0IGlzIG5vdCByZWNvbW1lbmRlZCB0byBlbWl0IGFcbiAgICAqIGBHcmFmdEV2ZW50YCwgYERlc3RydWN0aW9uRXZlbnRgLCBldGMuIFRoZXNlIGV2ZW50cyBtYXkgYmUgdXNlZCBieSB0aGUgdHJlZSxcbiAgICAqIGFuZCBlbWl0dGluZyB0aGVtIG1hbnVhbGx5IG1heSBjYXVzZSB1bmV4cGVjdGVkIGJlaGF2aW9yLiBJbnN0ZWFkLCB3ZVxuICAgICogcmVjb21tZW5kIGltcGxlbWVudGluZyB0aGUgVHJlZUV2ZW50IGludGVyZmFjZSB3aXRoIHlvdXIgb3duIGN1c3RvbSBldmVudHNcbiAgICAqIGFuZCBkaXNwYXRjaGluZyB0aG9zZS5cbiAgICAqXG4gICAgKiBAcGFyYW0gZXZlbnQgLSBUaGUgVHJlZUV2ZW50IHRoYXQgd2lsbCBiZSBlbWl0dGVkLlxuICAgICovXG4gICBwdWJsaWMgZGlzcGF0Y2goZXZlbnQ6IFRyZWVFdmVudDxVc2VybGFuZENvbXBvbmVudD4pOiB2b2lkIHtcbiAgICAgIHRoaXMudHJlZU5vZGVCYXNlLmRpc3BhdGNoKGV2ZW50KTtcbiAgIH1cblxuICAgLyoqXG4gICAgKiBAcmV0dXJuc1xuICAgICogQW4gb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIFRyZWVFdmVudHMgd2hlbmV2ZXIgYW4gZXZlbnQgaXMgZGlzcGF0Y2hlZFxuICAgICogaW4gdGhlIHJvb3Qgb3IgYW55IG9mIGl0cyBkZXNjZW5kYW50IGJyYW5jaGVzLlxuICAgICovXG4gICBwdWJsaWMgZXZlbnRzKCk6IE9ic2VydmFibGU8VHJlZUV2ZW50PFVzZXJsYW5kQ29tcG9uZW50Pj4ge1xuICAgICAgcmV0dXJuIHRoaXMudHJlZU5vZGVCYXNlLmV2ZW50cygpO1xuICAgfVxuXG4gICAvKipcbiAgICAqIEByZXR1cm5zXG4gICAgKiBUaGUgY2hpbGQgYnJhbmNoIGF0IHRoZSBzcGVjaWZpZWQgaW5kZXgsIG9yIHVuZGVmaW5lZCBpZiB0aGVyZSBpc1xuICAgICogbm8gY2hpbGQgYnJhbmNoIGF0IHRoZSBzcGVjaWZpZWQgaW5kZXguXG4gICAgKi9cbiAgIHB1YmxpYyBnZXRCcmFuY2goaW5kZXg6IG51bWJlcik6IFRyZWVCcmFuY2g8VXNlcmxhbmRDb21wb25lbnQ+IHwgdW5kZWZpbmVkIHtcbiAgICAgIHJldHVybiB0aGlzLnRyZWVOb2RlQmFzZS5nZXRCcmFuY2goaW5kZXgpO1xuICAgfVxuXG4gICAvKiogQHJldHVybnMgVGhlIFZpZXdDb250YWluZXJSZWYgaW4gd2hpY2ggY2hpbGQgYnJhbmNoZXMgYXJlIHJlbmRlcmVkICovXG4gICBwdWJsaWMgZ2V0QnJhbmNoZXNDb250YWluZXIoKTogVmlld0NvbnRhaW5lclJlZiB8IHVuZGVmaW5lZCB7XG4gICAgICBpZiAodGhpcy5pc0Rlc3Ryb3llZCgpKSB7XG4gICAgICAgICB0aHJvdyBuZXcgVHJlZUVycm9yKFxuICAgICAgICAgICAgXCJDYW5ub3QgZ2V0IGJyYW5jaGVzIGNvbnRhaW5lciBmcm9tIGEgZGVzdHJveWVkIHRyZWUgcm9vdFwiXG4gICAgICAgICApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMucm9vdENvbnRyb2xsZXIuZ2V0QnJhbmNoZXNDb250YWluZXIoKTtcbiAgIH1cblxuICAgLyoqXG4gICAgKiBSZXRyaWV2ZXMgdGhlIFJvb3RDb21wb25lbnQuXG4gICAgKlxuICAgICogQHJlbWFya3NcbiAgICAqIFRoZSBSb290Q29tcG9uZW50IGhvbGRzIHRoZSBCcmFuY2hlc0NvbnRhaW5lciwgYXMgd2VsbCBhcyBhIHNpbmdsZSBEcm9wem9uZVxuICAgICogZm9yIGRyYWctYW5kLWRyb3Agb3BlcmF0aW9ucy5cbiAgICAqXG4gICAgKiBAcmV0dXJucyBUaGUgaW5zdGFuY2Ugb2YgUm9vdENvbXBvbmVudCB0aGF0IGlzIHJlbmRlcmVkIGJ5IHRoaXMgY2xhc3MuXG4gICAgKi9cbiAgIHB1YmxpYyBnZXRDb21wb25lbnRJbnN0YW5jZSgpOiBSb290Q29tcG9uZW50IHtcbiAgICAgIGlmICh0aGlzLmlzRGVzdHJveWVkKCkpIHtcbiAgICAgICAgIHRocm93IG5ldyBUcmVlRXJyb3IoXG4gICAgICAgICAgICBcIkNhbm5vdCBnZXQgY29tcG9uZW50IGluc3RhbmNlIGZyb20gYSBkZXN0cm95ZWQgdHJlZSByb290XCJcbiAgICAgICAgICk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5yb290Q29udHJvbGxlci5nZXRDb21wb25lbnRJbnN0YW5jZSgpO1xuICAgfVxuXG4gICAvKiogQHJldHVybnMgVGhlIEhvc3QgVmlldyBpbiB3aGljaCB0aGUgUm9vdENvbXBvbmVudCBpcyByZW5kZXJlZCAqL1xuICAgcHVibGljIGdldEhvc3RWaWV3KCk6IFZpZXdSZWYge1xuICAgICAgaWYgKHRoaXMuaXNEZXN0cm95ZWQoKSkge1xuICAgICAgICAgdGhyb3cgbmV3IFRyZWVFcnJvcihcbiAgICAgICAgICAgIFwiQ2Fubm90IGdldCBjb21wb25lbnQgaG9zdCB2aWV3IGZyb20gYSBkZXN0cm95ZWQgdHJlZSByb290XCJcbiAgICAgICAgICk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5yb290Q29udHJvbGxlci5nZXRIb3N0VmlldygpO1xuICAgfVxuXG4gICAvKiogQHJldHVybnMgVGhlIFJvb3RDb21wb25lbnQgYXMgYSBuYXRpdmUgSFRNTCBFbGVtZW50ICovXG4gICBwdWJsaWMgZ2V0TmF0aXZlRWxlbWVudCgpOiBIVE1MRWxlbWVudCB7XG4gICAgICBpZiAodGhpcy5pc0Rlc3Ryb3llZCgpKSB7XG4gICAgICAgICB0aHJvdyBuZXcgVHJlZUVycm9yKFxuICAgICAgICAgICAgXCJDYW5ub3QgZ2V0IG5hdGl2ZSBlbGVtZW50IGZyb20gYSBkZXN0cm95ZWQgdHJlZSByb290XCJcbiAgICAgICAgICk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5yb290Q29udHJvbGxlci5nZXROYXRpdmVFbGVtZW50KCk7XG4gICB9XG5cbiAgIC8qKlxuICAgICogQXBwZW5kcyBhIG5ldyBjaGlsZCBicmFuY2ggdG8gdGhpcyBicmFuY2guIFRoZSBjaGlsZCBicmFuY2ggd2lsbCByZW5kZXJcbiAgICAqIHRoZSBzcGVjaWZpZWQgY29tcG9uZW50IGFjY29yZGluZyB0byB0aGUgKG9wdGlvbmFsKSBjb25maWd1cmF0aW9uIHBhcmFtZXRlci5cbiAgICAqXG4gICAgKiBAcGFyYW0gY29tcG9uZW50IC0gVGhlIGNvbXBvbmVudCB0byByZW5kZXIgaW4gdGhlIG5ldyBjaGlsZCBicmFuY2guXG4gICAgKiBAcGFyYW0gb3B0aW9ucyAtIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIG5ldyBjaGlsZCBicmFuY2guXG4gICAgKlxuICAgICogQHJldHVybnNcbiAgICAqIFRoZSBuZXdseS1jcmVhdGVkIGNoaWxkIGJyYW5jaC5cbiAgICAqL1xuICAgcHVibGljIGdyb3coXG4gICAgICBjb21wb25lbnQ6IFR5cGU8VXNlcmxhbmRDb21wb25lbnQ+LFxuICAgICAgb3B0aW9ucz86IEJyYW5jaE9wdGlvbnM8VXNlcmxhbmRDb21wb25lbnQ+XG4gICApOiBUcmVlQnJhbmNoPFVzZXJsYW5kQ29tcG9uZW50PiB7XG4gICAgICBpZiAodGhpcy5pc0Rlc3Ryb3llZCgpKSB7XG4gICAgICAgICB0aHJvdyBuZXcgVHJlZUVycm9yKFwiQ2Fubm90IGdyb3cgYSBicmFuY2ggb24gYSBkZXN0cm95ZWQgdHJlZSByb290XCIpO1xuICAgICAgfVxuICAgICAgdHJ5IHtcbiAgICAgICAgIHJldHVybiBuZXcgVHJlZUJyYW5jaCh0aGlzLCB7IGNvbXBvbmVudCwgLi4ub3B0aW9ucyB9KTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICB0aGlzLmhhbmRsZVVzZXJsYW5kRXJyb3IoZXJyb3IpO1xuICAgICAgfVxuICAgfVxuXG4gICAvKiogQHJldHVybnMgYHRydWVgIGlmIHRoZSB0cmVlIGlzIGRlc3Ryb3llZCwgYGZhbHNlYCBvdGhlcndpc2UgKi9cbiAgIHB1YmxpYyBpc0Rlc3Ryb3llZCgpOiBib29sZWFuIHtcbiAgICAgIHJldHVybiB0aGlzLnRyZWVOb2RlQmFzZS5pc0Rlc3Ryb3llZCgpO1xuICAgfVxuXG4gICAvKipcbiAgICAqIFByb3ZpZGVzIGEgbW9kZWwgZGVzY3JpYmluZyB0aGUgc2hhcGUgb2YgdGhlIHRyZWUuXG4gICAgKlxuICAgICogQHJldHVybnMgQSBtdWx0aS1kaW1lbnNpb25hbCBNYXAgd2hpY2ggZGVzY3JpYmVzIHRoZSBzaGFwZSBvZiB0aGUgdHJlZS5cbiAgICAqXG4gICAgKiBAZXhhbXBsZVxuICAgICogRm9yIGV4YW1wbGUsIGFuIGVtcHR5IHRyZWUgd2lsbCByZXR1cm4gYW4gZW1wdHkgTWFwLiBBIHRyZWUgd2l0aCBhIHNpbmdsZVxuICAgICogYnJhbmNoIHdpbGwgcmV0dXJuIGEgTWFwIHdpdGggYSBzaW5nbGUgZW50cnksIHdoZXJlIHRoZSBrZXkgaXMgdGhlIGluZGV4XG4gICAgKiBvZiB0aGUgYnJhbmNoICh6ZXJvKSBhbmQgdGhlIHZhbHVlIGlzIGFuIGVtcHR5IE1hcC4gQSBUcmVlIGxpa2UgdGhpczpcbiAgICAqXG4gICAgKiBgYGBcbiAgICAqICAgICAgICAgLS0tQnJhbmNoLS0tLS0tLUJyYW5jaFxuICAgICogICAgICAgIC9cbiAgICAqIFJvb3QtLS0tLS0tQnJhbmNoXG4gICAgKiAgICAgICAgXFxcbiAgICAqICAgICAgICAgLS0tQnJhbmNoXG4gICAgKiBgYGBcbiAgICAqIFdpbGwgcmV0dXJuIGEgTWFwIG9mIG1hdGNoaW5nIHNoYXBlOlxuICAgICogYGBgXG4gICAgKiBNYXAge1xuICAgICogICAgMDogTWFwIHsgMDogTWFwIHt9fSxcbiAgICAqICAgIDE6IE1hcCB7fSxcbiAgICAqICAgIDI6IE1hcCB7fVxuICAgICogfVxuICAgICogYGBgXG4gICAgKi9cbiAgIHB1YmxpYyBwbG90KCk6IFRyZWVQbG90IHtcbiAgICAgIHJldHVybiB0aGlzLnRyZWVOb2RlQmFzZS5wbG90KCk7XG4gICB9XG5cbiAgIC8qKiBAcmV0dXJucyBJdHNlbGYgKi9cbiAgIHB1YmxpYyByb290KCk6IHRoaXMge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICB9XG5cbiAgIC8qKlxuICAgICogVHJhdmVyc2VzIHRoZSB0cmVlIGluIGRlcHRoLWZpcnN0IHByZS1vcmRlciwgZXhlY3V0aW5nIHRoZSBwcm92aWRlZFxuICAgICogY2FsbGJhY2sgZnVuY3Rpb24gb24gZWFjaCBub2RlLiBUcmF2ZXJzYWwgaW5jbHVkZXMgdGhlIFJvb3QuXG4gICAgKlxuICAgICogQHBhcmFtIGNhbGxiYWNrIC0gQSBmdW5jdGlvbiB0byBleGVjdXRlIG9uIGVhY2ggbm9kZS5cbiAgICAqL1xuICAgcHVibGljIHRyYXZlcnNlKFxuICAgICAgY2FsbGJhY2s6IChub2RlOiBUcmVlTm9kZTxVc2VybGFuZENvbXBvbmVudD4pID0+IHZvaWRcbiAgICk6IHZvaWQge1xuICAgICAgY2FsbGJhY2sodGhpcyk7XG4gICAgICB0aGlzLnRyZWVOb2RlQmFzZS50cmF2ZXJzZShjYWxsYmFjayk7XG4gICB9XG5cbiAgIHByaXZhdGUgaGFuZGxlVXNlcmxhbmRFcnJvcihlcnJvcjogdW5rbm93bik6IG5ldmVyIHtcbiAgICAgIC8vIFdoZW4gYW4gZXJyb3Igb2NjdXJzIGluIGEgdXNlcmxhbmQgY29tcG9uZW50IGR1cmluZyBhIHRyZWUgb3BlcmF0aW9uLFxuICAgICAgLy8gaXQgY2FuIGNhdXNlIHVuZGVmaW5lZCwgYml6YXJyZSBiZWhhdmlvciBpbiB0aGUgdHJlZS4gVG8gcHJldmVudCB0aGlzLFxuICAgICAgLy8gd2UgZGVzdHJveSB0aGUgdHJlZSBhbmQgdGhyb3cgYW4gZXJyb3IgaW5zdGVhZC4gVGhpcyBoZWxwcyBwcm90ZWN0XG4gICAgICAvLyB0aGUgZW5kLXVzZXIncyBkYXRhIGZyb20gY29ycnVwdGlvbi5cbiAgICAgIHRoaXMuZGVzdHJveSgpO1xuICAgICAgdGhpcy50cmVlTm9kZUJhc2UuaGFuZGxlVXNlcmxhbmRFcnJvcihlcnJvcik7XG4gICB9XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export * from "./tree.service";
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9saW1ibGUtdHJlZS9zcmMvbGliL2NvcmUvdHJlZS1zZXJ2aWNlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsZ0JBQWdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi90cmVlLnNlcnZpY2VcIjtcbiJdfQ==
@@ -1,6 +1,6 @@
1
1
  import { Injectable } from "@angular/core";
2
- import { config } from "../configuration/configuration";
3
- import { TreeRoot } from "../tree-root/tree-root";
2
+ import { config } from "../configuration";
3
+ import { TreeRoot } from "../tree-root";
4
4
  import * as i0 from "@angular/core";
5
5
  /** Responsible for the creation of new trees. */
6
6
  export class TreeService {
@@ -22,4 +22,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
22
22
  type: Injectable,
23
23
  args: [{ providedIn: "root" }]
24
24
  }] });
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbGltYmxlLXRyZWUvc3JjL2xpYi9jb3JlL3RyZWUtc2VydmljZS90cmVlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBeUIsTUFBTSxlQUFlLENBQUM7QUFDbEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRXhELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7QUFFbEQsaURBQWlEO0FBRWpELE1BQU0sT0FBTyxXQUFXO0lBQ3JCOzs7O09BSUc7SUFDSSxlQUFlLENBQ25CLFNBQTJCLEVBQzNCLFVBQXVCLEVBQUU7UUFFekIsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2xCLE1BQU0sSUFBSSxHQUFHLElBQUksUUFBUSxDQUFZLFNBQVMsQ0FBQyxDQUFDO1FBQ2hELE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ2hDLE9BQU8sSUFBSSxDQUFDO0lBQ2YsQ0FBQzs7eUdBZFMsV0FBVzs2R0FBWCxXQUFXLGNBREUsTUFBTTs0RkFDbkIsV0FBVztrQkFEdkIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCB0eXBlIFZpZXdDb250YWluZXJSZWYgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgY29uZmlnIH0gZnJvbSBcIi4uL2NvbmZpZ3VyYXRpb24vY29uZmlndXJhdGlvblwiO1xuaW1wb3J0IHR5cGUgeyBUcmVlT3B0aW9ucyB9IGZyb20gXCIuLi9jb25maWd1cmF0aW9uL3RyZWUtb3B0aW9ucy5pbnRlcmZhY2VcIjtcbmltcG9ydCB7IFRyZWVSb290IH0gZnJvbSBcIi4uL3RyZWUtcm9vdC90cmVlLXJvb3RcIjtcblxuLyoqIFJlc3BvbnNpYmxlIGZvciB0aGUgY3JlYXRpb24gb2YgbmV3IHRyZWVzLiAqL1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiBcInJvb3RcIiB9KVxuZXhwb3J0IGNsYXNzIFRyZWVTZXJ2aWNlIHtcbiAgIC8qKlxuICAgICogQ3JlYXRlcyBhIG5ldywgZW1wdHkgdHJlZSBzdHJ1Y3R1cmUgaW5zaWRlIHRoZSBwcm92aWRlZCBjb250YWluZXIuXG4gICAgKlxuICAgICogQHJldHVybnMgQSBgVHJlZVJvb3RgIHJlcHJlc2VudGluZyB0aGUgYmFzZSBvZiB0aGUgbmV3IHRyZWUuXG4gICAgKi9cbiAgIHB1YmxpYyBjcmVhdGVFbXB0eVRyZWU8Q29tcG9uZW50PihcbiAgICAgIGNvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZixcbiAgICAgIG9wdGlvbnM6IFRyZWVPcHRpb25zID0ge31cbiAgICk6IFRyZWVSb290PENvbXBvbmVudD4ge1xuICAgICAgY29udGFpbmVyLmNsZWFyKCk7XG4gICAgICBjb25zdCByb290ID0gbmV3IFRyZWVSb290PENvbXBvbmVudD4oY29udGFpbmVyKTtcbiAgICAgIGNvbmZpZy5zZXRDb25maWcocm9vdCwgb3B0aW9ucyk7XG4gICAgICByZXR1cm4gcm9vdDtcbiAgIH1cbn1cbiJdfQ==
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbGltYmxlLXRyZWUvc3JjL2xpYi9jb3JlL3RyZWUtc2VydmljZS90cmVlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBeUIsTUFBTSxlQUFlLENBQUM7QUFDbEUsT0FBTyxFQUFFLE1BQU0sRUFBb0IsTUFBTSxrQkFBa0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sY0FBYyxDQUFDOztBQUV4QyxpREFBaUQ7QUFFakQsTUFBTSxPQUFPLFdBQVc7SUFDckI7Ozs7T0FJRztJQUNJLGVBQWUsQ0FDbkIsU0FBMkIsRUFDM0IsVUFBdUIsRUFBRTtRQUV6QixTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDbEIsTUFBTSxJQUFJLEdBQUcsSUFBSSxRQUFRLENBQVksU0FBUyxDQUFDLENBQUM7UUFDaEQsTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDaEMsT0FBTyxJQUFJLENBQUM7SUFDZixDQUFDOzt5R0FkUyxXQUFXOzZHQUFYLFdBQVcsY0FERSxNQUFNOzRGQUNuQixXQUFXO2tCQUR2QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIHR5cGUgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBjb25maWcsIHR5cGUgVHJlZU9wdGlvbnMgfSBmcm9tIFwiLi4vY29uZmlndXJhdGlvblwiO1xuaW1wb3J0IHsgVHJlZVJvb3QgfSBmcm9tIFwiLi4vdHJlZS1yb290XCI7XG5cbi8qKiBSZXNwb25zaWJsZSBmb3IgdGhlIGNyZWF0aW9uIG9mIG5ldyB0cmVlcy4gKi9cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogXCJyb290XCIgfSlcbmV4cG9ydCBjbGFzcyBUcmVlU2VydmljZSB7XG4gICAvKipcbiAgICAqIENyZWF0ZXMgYSBuZXcsIGVtcHR5IHRyZWUgc3RydWN0dXJlIGluc2lkZSB0aGUgcHJvdmlkZWQgY29udGFpbmVyLlxuICAgICpcbiAgICAqIEByZXR1cm5zIEEgYFRyZWVSb290YCByZXByZXNlbnRpbmcgdGhlIGJhc2Ugb2YgdGhlIG5ldyB0cmVlLlxuICAgICovXG4gICBwdWJsaWMgY3JlYXRlRW1wdHlUcmVlPENvbXBvbmVudD4oXG4gICAgICBjb250YWluZXI6IFZpZXdDb250YWluZXJSZWYsXG4gICAgICBvcHRpb25zOiBUcmVlT3B0aW9ucyA9IHt9XG4gICApOiBUcmVlUm9vdDxDb21wb25lbnQ+IHtcbiAgICAgIGNvbnRhaW5lci5jbGVhcigpO1xuICAgICAgY29uc3Qgcm9vdCA9IG5ldyBUcmVlUm9vdDxDb21wb25lbnQ+KGNvbnRhaW5lcik7XG4gICAgICBjb25maWcuc2V0Q29uZmlnKHJvb3QsIG9wdGlvbnMpO1xuICAgICAgcmV0dXJuIHJvb3Q7XG4gICB9XG59XG4iXX0=
@@ -27,4 +27,4 @@ export class DragEndEvent {
27
27
  return this._source;
28
28
  }
29
29
  }
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZy1lbmQtZXZlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9saW1ibGUtdHJlZS9zcmMvbGliL2V2ZW50cy9kcmFnL2RyYWctZW5kLWV2ZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtBLDJEQUEyRDtBQUMzRCxNQUFNLE9BQU8sWUFBWTtJQU90QixZQUNHLE1BQThDLEVBQzlDLFNBS0M7UUFFRCxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztRQUN0QixJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUM7UUFDdEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQztRQUN0QyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUM7SUFDdkMsQ0FBQztJQUVELG1EQUFtRDtJQUM1QyxRQUFRO1FBQ1osT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxvREFBb0Q7SUFDN0MsU0FBUztRQUNiLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUMxQixDQUFDO0lBRUQscUVBQXFFO0lBQzlELFFBQVE7UUFDWixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDekIsQ0FBQztJQUVELHNFQUFzRTtJQUMvRCxTQUFTO1FBQ2IsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQzFCLENBQUM7SUFFTSxNQUFNO1FBQ1YsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3ZCLENBQUM7Q0FDSCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgTm9kZUNvbXBvbmVudCB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL25vZGUtY29tcG9uZW50LmludGVyZmFjZVwiO1xuaW1wb3J0IHR5cGUgeyBUcmVlQnJhbmNoIH0gZnJvbSBcIi4uLy4uL2NvcmVcIjtcbmltcG9ydCB0eXBlIHsgVHJlZU5vZGUgfSBmcm9tIFwiLi4vLi4vc3RydWN0dXJlXCI7XG5pbXBvcnQgdHlwZSB7IFRyZWVFdmVudCB9IGZyb20gXCIuLi8uLi9zdHJ1Y3R1cmUvdHJlZS1ldmVudC5pbnRlcmZhY2VcIjtcblxuLyoqIEVtaXR0ZWQgd2hlbiBhIGRyYWctYW5kLWRyb3Agb3BlcmF0aW9uIGhhcyBjb21wbGV0ZWQgKi9cbmV4cG9ydCBjbGFzcyBEcmFnRW5kRXZlbnQ8VD4gaW1wbGVtZW50cyBUcmVlRXZlbnQge1xuICAgcHJpdmF0ZSByZWFkb25seSBfc291cmNlOiBUcmVlTm9kZTxUcmVlQnJhbmNoPFQ+LCBOb2RlQ29tcG9uZW50PjtcbiAgIHByaXZhdGUgcmVhZG9ubHkgX25ld1BhcmVudDogVHJlZU5vZGU8VHJlZUJyYW5jaDxUPiwgTm9kZUNvbXBvbmVudD47XG4gICBwcml2YXRlIHJlYWRvbmx5IF9uZXdJbmRleDogbnVtYmVyO1xuICAgcHJpdmF0ZSByZWFkb25seSBfb2xkUGFyZW50OiBUcmVlTm9kZTxUcmVlQnJhbmNoPFQ+LCBOb2RlQ29tcG9uZW50PjtcbiAgIHByaXZhdGUgcmVhZG9ubHkgX29sZEluZGV4OiBudW1iZXI7XG5cbiAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICAgIHNvdXJjZTogVHJlZU5vZGU8VHJlZUJyYW5jaDxUPiwgTm9kZUNvbXBvbmVudD4sXG4gICAgICBlbmRwb2ludHM6IHtcbiAgICAgICAgIG9sZFBhcmVudDogVHJlZU5vZGU8VHJlZUJyYW5jaDxUPiwgTm9kZUNvbXBvbmVudD47XG4gICAgICAgICBvbGRJbmRleDogbnVtYmVyO1xuICAgICAgICAgbmV3UGFyZW50OiBUcmVlTm9kZTxUcmVlQnJhbmNoPFQ+LCBOb2RlQ29tcG9uZW50PjtcbiAgICAgICAgIG5ld0luZGV4OiBudW1iZXI7XG4gICAgICB9XG4gICApIHtcbiAgICAgIHRoaXMuX3NvdXJjZSA9IHNvdXJjZTtcbiAgICAgIHRoaXMuX29sZFBhcmVudCA9IGVuZHBvaW50cy5vbGRQYXJlbnQ7XG4gICAgICB0aGlzLl9vbGRJbmRleCA9IGVuZHBvaW50cy5vbGRJbmRleDtcbiAgICAgIHRoaXMuX25ld1BhcmVudCA9IGVuZHBvaW50cy5uZXdQYXJlbnQ7XG4gICAgICB0aGlzLl9uZXdJbmRleCA9IGVuZHBvaW50cy5uZXdJbmRleDtcbiAgIH1cblxuICAgLyoqIEByZXR1cm5zIFRoZSBuZXcgaW5kZXggb2YgdGhlIGRyb3BwZWQgYnJhbmNoICovXG4gICBwdWJsaWMgbmV3SW5kZXgoKTogbnVtYmVyIHtcbiAgICAgIHJldHVybiB0aGlzLl9uZXdJbmRleDtcbiAgIH1cblxuICAgLyoqIEByZXR1cm5zIFRoZSBuZXcgcGFyZW50IG9mIHRoZSBkcm9wcGVkIGJyYW5jaCAqL1xuICAgcHVibGljIG5ld1BhcmVudCgpOiBUcmVlTm9kZTxUcmVlQnJhbmNoPFQ+LCBOb2RlQ29tcG9uZW50PiB7XG4gICAgICByZXR1cm4gdGhpcy5fbmV3UGFyZW50O1xuICAgfVxuXG4gICAvKiogQHJldHVybnMgVGhlIGluZGV4IG9mIHRoZSBkcm9wcGVkIGJyYW5jaCBiZWZvcmUgaXQgd2FzIGRyYWdnZWQgKi9cbiAgIHB1YmxpYyBvbGRJbmRleCgpOiBudW1iZXIge1xuICAgICAgcmV0dXJuIHRoaXMuX29sZEluZGV4O1xuICAgfVxuXG4gICAvKiogQHJldHVybnMgVGhlIHBhcmVudCBvZiB0aGUgZHJvcHBlZCBicmFuY2ggYmVmb3JlIGl0IHdhcyBkcmFnZ2VkICovXG4gICBwdWJsaWMgb2xkUGFyZW50KCk6IFRyZWVOb2RlPFRyZWVCcmFuY2g8VD4sIE5vZGVDb21wb25lbnQ+IHtcbiAgICAgIHJldHVybiB0aGlzLl9vbGRQYXJlbnQ7XG4gICB9XG5cbiAgIHB1YmxpYyBzb3VyY2UoKTogVHJlZU5vZGU8VHJlZUJyYW5jaDxUPiwgTm9kZUNvbXBvbmVudD4ge1xuICAgICAgcmV0dXJuIHRoaXMuX3NvdXJjZTtcbiAgIH1cbn1cbiJdfQ==
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZy1lbmQtZXZlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9saW1ibGUtdHJlZS9zcmMvbGliL2V2ZW50cy9kcmFnL2RyYWctZW5kLWV2ZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLDJEQUEyRDtBQUMzRCxNQUFNLE9BQU8sWUFBWTtJQU90QixZQUNHLE1BQW1CLEVBQ25CLFNBS0M7UUFFRCxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztRQUN0QixJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUM7UUFDdEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQztRQUN0QyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUM7SUFDdkMsQ0FBQztJQUVELG1EQUFtRDtJQUM1QyxRQUFRO1FBQ1osT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxvREFBb0Q7SUFDN0MsU0FBUztRQUNiLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUMxQixDQUFDO0lBRUQscUVBQXFFO0lBQzlELFFBQVE7UUFDWixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDekIsQ0FBQztJQUVELHNFQUFzRTtJQUMvRCxTQUFTO1FBQ2IsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQzFCLENBQUM7SUFFTSxNQUFNO1FBQ1YsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3ZCLENBQUM7Q0FDSCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgVHJlZU5vZGUgfSBmcm9tIFwiLi4vLi4vY29yZVwiO1xuaW1wb3J0IHR5cGUgeyBUcmVlRXZlbnQgfSBmcm9tIFwiLi4vLi4vZXZlbnRzXCI7XG5cbi8qKiBFbWl0dGVkIHdoZW4gYSBkcmFnLWFuZC1kcm9wIG9wZXJhdGlvbiBoYXMgY29tcGxldGVkICovXG5leHBvcnQgY2xhc3MgRHJhZ0VuZEV2ZW50PFQ+IGltcGxlbWVudHMgVHJlZUV2ZW50PFQ+IHtcbiAgIHByaXZhdGUgcmVhZG9ubHkgX3NvdXJjZTogVHJlZU5vZGU8VD47XG4gICBwcml2YXRlIHJlYWRvbmx5IF9uZXdQYXJlbnQ6IFRyZWVOb2RlPFQ+O1xuICAgcHJpdmF0ZSByZWFkb25seSBfbmV3SW5kZXg6IG51bWJlcjtcbiAgIHByaXZhdGUgcmVhZG9ubHkgX29sZFBhcmVudDogVHJlZU5vZGU8VD47XG4gICBwcml2YXRlIHJlYWRvbmx5IF9vbGRJbmRleDogbnVtYmVyO1xuXG4gICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgICBzb3VyY2U6IFRyZWVOb2RlPFQ+LFxuICAgICAgZW5kcG9pbnRzOiB7XG4gICAgICAgICBvbGRQYXJlbnQ6IFRyZWVOb2RlPFQ+O1xuICAgICAgICAgb2xkSW5kZXg6IG51bWJlcjtcbiAgICAgICAgIG5ld1BhcmVudDogVHJlZU5vZGU8VD47XG4gICAgICAgICBuZXdJbmRleDogbnVtYmVyO1xuICAgICAgfVxuICAgKSB7XG4gICAgICB0aGlzLl9zb3VyY2UgPSBzb3VyY2U7XG4gICAgICB0aGlzLl9vbGRQYXJlbnQgPSBlbmRwb2ludHMub2xkUGFyZW50O1xuICAgICAgdGhpcy5fb2xkSW5kZXggPSBlbmRwb2ludHMub2xkSW5kZXg7XG4gICAgICB0aGlzLl9uZXdQYXJlbnQgPSBlbmRwb2ludHMubmV3UGFyZW50O1xuICAgICAgdGhpcy5fbmV3SW5kZXggPSBlbmRwb2ludHMubmV3SW5kZXg7XG4gICB9XG5cbiAgIC8qKiBAcmV0dXJucyBUaGUgbmV3IGluZGV4IG9mIHRoZSBkcm9wcGVkIGJyYW5jaCAqL1xuICAgcHVibGljIG5ld0luZGV4KCk6IG51bWJlciB7XG4gICAgICByZXR1cm4gdGhpcy5fbmV3SW5kZXg7XG4gICB9XG5cbiAgIC8qKiBAcmV0dXJucyBUaGUgbmV3IHBhcmVudCBvZiB0aGUgZHJvcHBlZCBicmFuY2ggKi9cbiAgIHB1YmxpYyBuZXdQYXJlbnQoKTogVHJlZU5vZGU8VD4ge1xuICAgICAgcmV0dXJuIHRoaXMuX25ld1BhcmVudDtcbiAgIH1cblxuICAgLyoqIEByZXR1cm5zIFRoZSBpbmRleCBvZiB0aGUgZHJvcHBlZCBicmFuY2ggYmVmb3JlIGl0IHdhcyBkcmFnZ2VkICovXG4gICBwdWJsaWMgb2xkSW5kZXgoKTogbnVtYmVyIHtcbiAgICAgIHJldHVybiB0aGlzLl9vbGRJbmRleDtcbiAgIH1cblxuICAgLyoqIEByZXR1cm5zIFRoZSBwYXJlbnQgb2YgdGhlIGRyb3BwZWQgYnJhbmNoIGJlZm9yZSBpdCB3YXMgZHJhZ2dlZCAqL1xuICAgcHVibGljIG9sZFBhcmVudCgpOiBUcmVlTm9kZTxUPiB7XG4gICAgICByZXR1cm4gdGhpcy5fb2xkUGFyZW50O1xuICAgfVxuXG4gICBwdWJsaWMgc291cmNlKCk6IFRyZWVOb2RlPFQ+IHtcbiAgICAgIHJldHVybiB0aGlzLl9zb3VyY2U7XG4gICB9XG59XG4iXX0=
@@ -7,4 +7,4 @@ export class DragStartEvent {
7
7
  return this._source;
8
8
  }
9
9
  }
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZy1zdGFydC1ldmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2xpbWJsZS10cmVlL3NyYy9saWIvZXZlbnRzL2RyYWcvZHJhZy1zdGFydC1ldmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxxREFBcUQ7QUFDckQsTUFBTSxPQUFPLGNBQWM7SUFHeEIsWUFBbUIsTUFBd0M7UUFDeEQsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7SUFDekIsQ0FBQztJQUVNLE1BQU07UUFDVixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdkIsQ0FBQztDQUNIIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBOb2RlQ29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvbm9kZS1jb21wb25lbnQuaW50ZXJmYWNlXCI7XG5pbXBvcnQgdHlwZSB7IFRyZWVOb2RlIH0gZnJvbSBcIi4uLy4uL3N0cnVjdHVyZVwiO1xuaW1wb3J0IHR5cGUgeyBUcmVlRXZlbnQgfSBmcm9tIFwiLi4vLi4vc3RydWN0dXJlL3RyZWUtZXZlbnQuaW50ZXJmYWNlXCI7XG5cbi8qKiBFbWl0dGVkIHdoZW4gYSBUcmVlQnJhbmNoIGJlZ2lucyBiZWluZyBkcmFnZ2VkICovXG5leHBvcnQgY2xhc3MgRHJhZ1N0YXJ0RXZlbnQgaW1wbGVtZW50cyBUcmVlRXZlbnQge1xuICAgcHJpdmF0ZSByZWFkb25seSBfc291cmNlOiBUcmVlTm9kZTx1bmtub3duLCBOb2RlQ29tcG9uZW50PjtcblxuICAgcHVibGljIGNvbnN0cnVjdG9yKHNvdXJjZTogVHJlZU5vZGU8dW5rbm93biwgTm9kZUNvbXBvbmVudD4pIHtcbiAgICAgIHRoaXMuX3NvdXJjZSA9IHNvdXJjZTtcbiAgIH1cblxuICAgcHVibGljIHNvdXJjZSgpOiBUcmVlTm9kZTx1bmtub3duLCBOb2RlQ29tcG9uZW50PiB7XG4gICAgICByZXR1cm4gdGhpcy5fc291cmNlO1xuICAgfVxufVxuIl19
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZy1zdGFydC1ldmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2xpbWJsZS10cmVlL3NyYy9saWIvZXZlbnRzL2RyYWcvZHJhZy1zdGFydC1ldmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxxREFBcUQ7QUFDckQsTUFBTSxPQUFPLGNBQWM7SUFHeEIsWUFBbUIsTUFBbUI7UUFDbkMsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7SUFDekIsQ0FBQztJQUVNLE1BQU07UUFDVixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdkIsQ0FBQztDQUNIIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBUcmVlTm9kZSB9IGZyb20gXCIuLi8uLi9jb3JlXCI7XG5pbXBvcnQgdHlwZSB7IFRyZWVFdmVudCB9IGZyb20gXCIuLi8uLi9ldmVudHNcIjtcblxuLyoqIEVtaXR0ZWQgd2hlbiBhIFRyZWVCcmFuY2ggYmVnaW5zIGJlaW5nIGRyYWdnZWQgKi9cbmV4cG9ydCBjbGFzcyBEcmFnU3RhcnRFdmVudDxUPiBpbXBsZW1lbnRzIFRyZWVFdmVudDxUPiB7XG4gICBwcml2YXRlIHJlYWRvbmx5IF9zb3VyY2U6IFRyZWVOb2RlPFQ+O1xuXG4gICBwdWJsaWMgY29uc3RydWN0b3Ioc291cmNlOiBUcmVlTm9kZTxUPikge1xuICAgICAgdGhpcy5fc291cmNlID0gc291cmNlO1xuICAgfVxuXG4gICBwdWJsaWMgc291cmNlKCk6IFRyZWVOb2RlPFQ+IHtcbiAgICAgIHJldHVybiB0aGlzLl9zb3VyY2U7XG4gICB9XG59XG4iXX0=
@@ -15,4 +15,4 @@ export class DropEvent {
15
15
  return this._parent;
16
16
  }
17
17
  }
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcC1ldmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2xpbWJsZS10cmVlL3NyYy9saWIvZXZlbnRzL2RyYWcvZHJvcC1ldmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxpRUFBaUU7QUFDakUsTUFBTSxPQUFPLFNBQVM7SUFLbkIsWUFDRyxNQUE4QyxFQUM5QyxNQUE4QyxFQUM5QyxLQUFhO1FBRWIsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDdEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDdEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDdkIsQ0FBQztJQUVNLE1BQU07UUFDVixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdkIsQ0FBQztJQUVNLEtBQUs7UUFDVCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDdEIsQ0FBQztJQUVNLE1BQU07UUFDVixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdkIsQ0FBQztDQUNIIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBOb2RlQ29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvbm9kZS1jb21wb25lbnQuaW50ZXJmYWNlXCI7XG5pbXBvcnQgdHlwZSB7IFRyZWVCcmFuY2ggfSBmcm9tIFwiLi4vLi4vY29yZVwiO1xuaW1wb3J0IHR5cGUgeyBUcmVlTm9kZSwgVHJlZUV2ZW50IH0gZnJvbSBcIi4uLy4uL3N0cnVjdHVyZVwiO1xuXG4vKiogRW1pdHRlZCB3aGVuIGEgVHJlZUJyYW5jaCBpcyBkcm9wcGVkIGludG8gYSB2YWxpZCBEcm9wem9uZSAqL1xuZXhwb3J0IGNsYXNzIERyb3BFdmVudDxUPiBpbXBsZW1lbnRzIFRyZWVFdmVudCB7XG4gICBwcml2YXRlIHJlYWRvbmx5IF9zb3VyY2U6IFRyZWVOb2RlPFRyZWVCcmFuY2g8VD4sIE5vZGVDb21wb25lbnQ+O1xuICAgcHJpdmF0ZSByZWFkb25seSBfcGFyZW50OiBUcmVlTm9kZTxUcmVlQnJhbmNoPFQ+LCBOb2RlQ29tcG9uZW50PjtcbiAgIHByaXZhdGUgcmVhZG9ubHkgX2luZGV4OiBudW1iZXI7XG5cbiAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICAgIHNvdXJjZTogVHJlZU5vZGU8VHJlZUJyYW5jaDxUPiwgTm9kZUNvbXBvbmVudD4sXG4gICAgICBwYXJlbnQ6IFRyZWVOb2RlPFRyZWVCcmFuY2g8VD4sIE5vZGVDb21wb25lbnQ+LFxuICAgICAgaW5kZXg6IG51bWJlclxuICAgKSB7XG4gICAgICB0aGlzLl9zb3VyY2UgPSBzb3VyY2U7XG4gICAgICB0aGlzLl9wYXJlbnQgPSBwYXJlbnQ7XG4gICAgICB0aGlzLl9pbmRleCA9IGluZGV4O1xuICAgfVxuXG4gICBwdWJsaWMgc291cmNlKCk6IFRyZWVOb2RlPFRyZWVCcmFuY2g8VD4sIE5vZGVDb21wb25lbnQ+IHtcbiAgICAgIHJldHVybiB0aGlzLl9zb3VyY2U7XG4gICB9XG5cbiAgIHB1YmxpYyBpbmRleCgpOiBudW1iZXIge1xuICAgICAgcmV0dXJuIHRoaXMuX2luZGV4O1xuICAgfVxuXG4gICBwdWJsaWMgcGFyZW50KCk6IFRyZWVOb2RlPFRyZWVCcmFuY2g8VD4sIE5vZGVDb21wb25lbnQ+IHtcbiAgICAgIHJldHVybiB0aGlzLl9wYXJlbnQ7XG4gICB9XG59XG4iXX0=
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcC1ldmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2xpbWJsZS10cmVlL3NyYy9saWIvZXZlbnRzL2RyYWcvZHJvcC1ldmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxpRUFBaUU7QUFDakUsTUFBTSxPQUFPLFNBQVM7SUFLbkIsWUFBbUIsTUFBbUIsRUFBRSxNQUFtQixFQUFFLEtBQWE7UUFDdkUsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDdEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDdEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDdkIsQ0FBQztJQUVNLE1BQU07UUFDVixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdkIsQ0FBQztJQUVNLEtBQUs7UUFDVCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDdEIsQ0FBQztJQUVNLE1BQU07UUFDVixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdkIsQ0FBQztDQUNIIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBUcmVlTm9kZSB9IGZyb20gXCIuLi8uLi9jb3JlXCI7XG5pbXBvcnQgdHlwZSB7IFRyZWVFdmVudCB9IGZyb20gXCIuLi8uLi9ldmVudHNcIjtcblxuLyoqIEVtaXR0ZWQgd2hlbiBhIFRyZWVCcmFuY2ggaXMgZHJvcHBlZCBpbnRvIGEgdmFsaWQgRHJvcHpvbmUgKi9cbmV4cG9ydCBjbGFzcyBEcm9wRXZlbnQ8VD4gaW1wbGVtZW50cyBUcmVlRXZlbnQ8VD4ge1xuICAgcHJpdmF0ZSByZWFkb25seSBfc291cmNlOiBUcmVlTm9kZTxUPjtcbiAgIHByaXZhdGUgcmVhZG9ubHkgX3BhcmVudDogVHJlZU5vZGU8VD47XG4gICBwcml2YXRlIHJlYWRvbmx5IF9pbmRleDogbnVtYmVyO1xuXG4gICBwdWJsaWMgY29uc3RydWN0b3Ioc291cmNlOiBUcmVlTm9kZTxUPiwgcGFyZW50OiBUcmVlTm9kZTxUPiwgaW5kZXg6IG51bWJlcikge1xuICAgICAgdGhpcy5fc291cmNlID0gc291cmNlO1xuICAgICAgdGhpcy5fcGFyZW50ID0gcGFyZW50O1xuICAgICAgdGhpcy5faW5kZXggPSBpbmRleDtcbiAgIH1cblxuICAgcHVibGljIHNvdXJjZSgpOiBUcmVlTm9kZTxUPiB7XG4gICAgICByZXR1cm4gdGhpcy5fc291cmNlO1xuICAgfVxuXG4gICBwdWJsaWMgaW5kZXgoKTogbnVtYmVyIHtcbiAgICAgIHJldHVybiB0aGlzLl9pbmRleDtcbiAgIH1cblxuICAgcHVibGljIHBhcmVudCgpOiBUcmVlTm9kZTxUPiB7XG4gICAgICByZXR1cm4gdGhpcy5fcGFyZW50O1xuICAgfVxufVxuIl19
@@ -7,4 +7,4 @@ export class DestructionEvent {
7
7
  return this._source;
8
8
  }
9
9
  }
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzdHJ1Y3Rpb24tZXZlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9saW1ibGUtdHJlZS9zcmMvbGliL2V2ZW50cy9nZW5lcmFsL2Rlc3RydWN0aW9uLWV2ZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLHVDQUF1QztBQUN2QyxNQUFNLE9BQU8sZ0JBQWdCO0lBRzFCLFlBQW1CLE1BQXdDO1FBQ3hELElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO0lBQ3pCLENBQUM7SUFFTSxNQUFNO1FBQ1YsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3ZCLENBQUM7Q0FDSCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgTm9kZUNvbXBvbmVudCB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL25vZGUtY29tcG9uZW50LmludGVyZmFjZVwiO1xuaW1wb3J0IHR5cGUgeyBUcmVlTm9kZSwgVHJlZUV2ZW50IH0gZnJvbSBcIi4uLy4uL3N0cnVjdHVyZVwiO1xuXG4vKiogRW1pdHRlZCB3aGVuIGEgbm9kZSBpcyBkZXN0cm95ZWQgKi9cbmV4cG9ydCBjbGFzcyBEZXN0cnVjdGlvbkV2ZW50IGltcGxlbWVudHMgVHJlZUV2ZW50IHtcbiAgIHByaXZhdGUgcmVhZG9ubHkgX3NvdXJjZTogVHJlZU5vZGU8dW5rbm93biwgTm9kZUNvbXBvbmVudD47XG5cbiAgIHB1YmxpYyBjb25zdHJ1Y3Rvcihzb3VyY2U6IFRyZWVOb2RlPHVua25vd24sIE5vZGVDb21wb25lbnQ+KSB7XG4gICAgICB0aGlzLl9zb3VyY2UgPSBzb3VyY2U7XG4gICB9XG5cbiAgIHB1YmxpYyBzb3VyY2UoKTogVHJlZU5vZGU8dW5rbm93biwgTm9kZUNvbXBvbmVudD4ge1xuICAgICAgcmV0dXJuIHRoaXMuX3NvdXJjZTtcbiAgIH1cbn1cbiJdfQ==
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzdHJ1Y3Rpb24tZXZlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9saW1ibGUtdHJlZS9zcmMvbGliL2V2ZW50cy9nZW5lcmFsL2Rlc3RydWN0aW9uLWV2ZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLHVDQUF1QztBQUN2QyxNQUFNLE9BQU8sZ0JBQWdCO0lBRzFCLFlBQW1CLE1BQW1CO1FBQ25DLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO0lBQ3pCLENBQUM7SUFFTSxNQUFNO1FBQ1YsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3ZCLENBQUM7Q0FDSCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgVHJlZU5vZGUgfSBmcm9tIFwiLi4vLi4vY29yZVwiO1xuaW1wb3J0IHR5cGUgeyBUcmVlRXZlbnQgfSBmcm9tIFwiLi4vLi4vZXZlbnRzXCI7XG5cbi8qKiBFbWl0dGVkIHdoZW4gYSBub2RlIGlzIGRlc3Ryb3llZCAqL1xuZXhwb3J0IGNsYXNzIERlc3RydWN0aW9uRXZlbnQ8VD4gaW1wbGVtZW50cyBUcmVlRXZlbnQ8VD4ge1xuICAgcHJpdmF0ZSByZWFkb25seSBfc291cmNlOiBUcmVlTm9kZTxUPjtcblxuICAgcHVibGljIGNvbnN0cnVjdG9yKHNvdXJjZTogVHJlZU5vZGU8VD4pIHtcbiAgICAgIHRoaXMuX3NvdXJjZSA9IHNvdXJjZTtcbiAgIH1cblxuICAgcHVibGljIHNvdXJjZSgpOiBUcmVlTm9kZTxUPiB7XG4gICAgICByZXR1cm4gdGhpcy5fc291cmNlO1xuICAgfVxufVxuIl19
@@ -1,4 +1,5 @@
1
- export * from "./relational";
2
1
  export * from "./drag";
3
2
  export * from "./general";
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9saW1ibGUtdHJlZS9zcmMvbGliL2V2ZW50cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLFFBQVEsQ0FBQztBQUN2QixjQUFjLFdBQVcsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL3JlbGF0aW9uYWxcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2RyYWdcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2dlbmVyYWxcIjtcbiJdfQ==
3
+ export * from "./relational";
4
+ export * from "./tree-event.interface";
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9saW1ibGUtdHJlZS9zcmMvbGliL2V2ZW50cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLFFBQVEsQ0FBQztBQUN2QixjQUFjLFdBQVcsQ0FBQztBQUMxQixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLHdCQUF3QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vZHJhZ1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vZ2VuZXJhbFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vcmVsYXRpb25hbFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdHJlZS1ldmVudC5pbnRlcmZhY2VcIjtcbiJdfQ==
@@ -19,4 +19,4 @@ export class GraftEvent {
19
19
  return this._source;
20
20
  }
21
21
  }
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhZnQtZXZlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9saW1ibGUtdHJlZS9zcmMvbGliL2V2ZW50cy9yZWxhdGlvbmFsL2dyYWZ0LWV2ZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLDBEQUEwRDtBQUMxRCxNQUFNLE9BQU8sVUFBVTtJQVFwQixZQUFtQixNQUFrQixFQUFFLFlBQWU7UUFDbkQsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDdEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxPQUFPLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQztRQUNuQyxJQUFJLENBQUMsTUFBTSxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUM7SUFDcEMsQ0FBQztJQUVNLEtBQUs7UUFDVCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDdEIsQ0FBQztJQUVNLEtBQUs7UUFDVCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDdEIsQ0FBQztJQUVNLE1BQU07UUFDVixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdkIsQ0FBQztJQUVNLE1BQU07UUFDVixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdkIsQ0FBQztDQUNIIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBSZWxhdGlvbmFsVHJlZUV2ZW50IH0gZnJvbSBcIi4vcmVsYXRpb25hbC10cmVlLWV2ZW50LmludGVyZmFjZVwiO1xuaW1wb3J0IHR5cGUgeyBUcmVlUmVsYXRpb25zaGlwIH0gZnJvbSBcIi4uLy4uL3N0cnVjdHVyZS90cmVlLXJlbGF0aW9uc2hpcC5pbnRlcmZhY2VcIjtcblxuLyoqIEVtaXRzIHdoZW4gYSBicmFuY2ggaXMgZ3JhZnRlZCB0byBhbm90aGVyIHRyZWUgbm9kZSAqL1xuZXhwb3J0IGNsYXNzIEdyYWZ0RXZlbnQ8VCBleHRlbmRzIFRyZWVSZWxhdGlvbnNoaXA8YW55LCBhbnk+PlxuICAgaW1wbGVtZW50cyBSZWxhdGlvbmFsVHJlZUV2ZW50PFRbXCJwYXJlbnRcIl0sIFRbXCJjaGlsZFwiXT5cbntcbiAgIHByaXZhdGUgcmVhZG9ubHkgX3NvdXJjZTogVFtcImNoaWxkXCJdO1xuICAgcHJpdmF0ZSByZWFkb25seSBfcGFyZW50OiBUW1wicGFyZW50XCJdO1xuICAgcHJpdmF0ZSByZWFkb25seSBfY2hpbGQ6IFRbXCJjaGlsZFwiXTtcbiAgIHByaXZhdGUgcmVhZG9ubHkgX2luZGV4OiBudW1iZXI7XG5cbiAgIHB1YmxpYyBjb25zdHJ1Y3Rvcihzb3VyY2U6IFRbXCJjaGlsZFwiXSwgcmVsYXRpb25zaGlwOiBUKSB7XG4gICAgICB0aGlzLl9zb3VyY2UgPSBzb3VyY2U7XG4gICAgICB0aGlzLl9jaGlsZCA9IHJlbGF0aW9uc2hpcC5jaGlsZDtcbiAgICAgIHRoaXMuX3BhcmVudCA9IHJlbGF0aW9uc2hpcC5wYXJlbnQ7XG4gICAgICB0aGlzLl9pbmRleCA9IHJlbGF0aW9uc2hpcC5pbmRleDtcbiAgIH1cblxuICAgcHVibGljIGNoaWxkKCk6IFRbXCJjaGlsZFwiXSB7XG4gICAgICByZXR1cm4gdGhpcy5fY2hpbGQ7XG4gICB9XG5cbiAgIHB1YmxpYyBpbmRleCgpOiBudW1iZXIge1xuICAgICAgcmV0dXJuIHRoaXMuX2luZGV4O1xuICAgfVxuXG4gICBwdWJsaWMgcGFyZW50KCk6IFRbXCJwYXJlbnRcIl0ge1xuICAgICAgcmV0dXJuIHRoaXMuX3BhcmVudDtcbiAgIH1cblxuICAgcHVibGljIHNvdXJjZSgpOiBUW1wiY2hpbGRcIl0ge1xuICAgICAgcmV0dXJuIHRoaXMuX3NvdXJjZTtcbiAgIH1cbn1cbiJdfQ==
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhZnQtZXZlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9saW1ibGUtdHJlZS9zcmMvbGliL2V2ZW50cy9yZWxhdGlvbmFsL2dyYWZ0LWV2ZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLDBEQUEwRDtBQUMxRCxNQUFNLE9BQU8sVUFBVTtJQVFwQixZQUNHLE1BQXFDLEVBQ3JDLFlBQWlEO1FBRWpELElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxNQUFNLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQztRQUNqQyxJQUFJLENBQUMsT0FBTyxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUM7UUFDbkMsSUFBSSxDQUFDLE1BQU0sR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDO0lBQ3BDLENBQUM7SUFFTSxLQUFLO1FBQ1QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3RCLENBQUM7SUFFTSxLQUFLO1FBQ1QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3RCLENBQUM7SUFFTSxNQUFNO1FBQ1YsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3ZCLENBQUM7SUFFTSxNQUFNO1FBQ1YsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3ZCLENBQUM7Q0FDSCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUmVsYXRpb25hbFRyZWVFdmVudCB9IGZyb20gXCIuL3JlbGF0aW9uYWwtdHJlZS1ldmVudC5pbnRlcmZhY2VcIjtcbmltcG9ydCB0eXBlIHsgVHJlZVJlbGF0aW9uc2hpcCB9IGZyb20gXCIuL3RyZWUtcmVsYXRpb25zaGlwLmludGVyZmFjZVwiO1xuaW1wb3J0IHR5cGUgeyBUcmVlQnJhbmNoLCBUcmVlTm9kZSB9IGZyb20gXCIuLi8uLi9jb3JlXCI7XG5cbi8qKiBFbWl0cyB3aGVuIGEgYnJhbmNoIGlzIGdyYWZ0ZWQgdG8gYW5vdGhlciB0cmVlIG5vZGUgKi9cbmV4cG9ydCBjbGFzcyBHcmFmdEV2ZW50PFVzZXJsYW5kQ29tcG9uZW50PlxuICAgaW1wbGVtZW50cyBSZWxhdGlvbmFsVHJlZUV2ZW50PFVzZXJsYW5kQ29tcG9uZW50Plxue1xuICAgcHJpdmF0ZSByZWFkb25seSBfc291cmNlOiBUcmVlQnJhbmNoPFVzZXJsYW5kQ29tcG9uZW50PjtcbiAgIHByaXZhdGUgcmVhZG9ubHkgX3BhcmVudDogVHJlZU5vZGU8VXNlcmxhbmRDb21wb25lbnQ+O1xuICAgcHJpdmF0ZSByZWFkb25seSBfY2hpbGQ6IFRyZWVCcmFuY2g8VXNlcmxhbmRDb21wb25lbnQ+O1xuICAgcHJpdmF0ZSByZWFkb25seSBfaW5kZXg6IG51bWJlcjtcblxuICAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgICAgc291cmNlOiBUcmVlQnJhbmNoPFVzZXJsYW5kQ29tcG9uZW50PixcbiAgICAgIHJlbGF0aW9uc2hpcDogVHJlZVJlbGF0aW9uc2hpcDxVc2VybGFuZENvbXBvbmVudD5cbiAgICkge1xuICAgICAgdGhpcy5fc291cmNlID0gc291cmNlO1xuICAgICAgdGhpcy5fY2hpbGQgPSByZWxhdGlvbnNoaXAuY2hpbGQ7XG4gICAgICB0aGlzLl9wYXJlbnQgPSByZWxhdGlvbnNoaXAucGFyZW50O1xuICAgICAgdGhpcy5faW5kZXggPSByZWxhdGlvbnNoaXAuaW5kZXg7XG4gICB9XG5cbiAgIHB1YmxpYyBjaGlsZCgpOiBUcmVlQnJhbmNoPFVzZXJsYW5kQ29tcG9uZW50PiB7XG4gICAgICByZXR1cm4gdGhpcy5fY2hpbGQ7XG4gICB9XG5cbiAgIHB1YmxpYyBpbmRleCgpOiBudW1iZXIge1xuICAgICAgcmV0dXJuIHRoaXMuX2luZGV4O1xuICAgfVxuXG4gICBwdWJsaWMgcGFyZW50KCk6IFRyZWVOb2RlPFVzZXJsYW5kQ29tcG9uZW50PiB7XG4gICAgICByZXR1cm4gdGhpcy5fcGFyZW50O1xuICAgfVxuXG4gICBwdWJsaWMgc291cmNlKCk6IFRyZWVCcmFuY2g8VXNlcmxhbmRDb21wb25lbnQ+IHtcbiAgICAgIHJldHVybiB0aGlzLl9zb3VyY2U7XG4gICB9XG59XG4iXX0=