angular-three 2.0.0-beta.230 → 2.0.0-beta.232

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 (60) hide show
  1. package/esm2022/index.mjs +1 -2
  2. package/esm2022/lib/canvas.mjs +9 -11
  3. package/esm2022/lib/directives/args.mjs +12 -24
  4. package/esm2022/lib/directives/common.mjs +28 -5
  5. package/esm2022/lib/directives/parent.mjs +9 -24
  6. package/esm2022/lib/dom/events.mjs +1 -1
  7. package/esm2022/lib/events.mjs +12 -13
  8. package/esm2022/lib/instance.mjs +1 -1
  9. package/esm2022/lib/loader.mjs +2 -2
  10. package/esm2022/lib/loop.mjs +8 -20
  11. package/esm2022/lib/portal.mjs +22 -25
  12. package/esm2022/lib/ref.mjs +1 -1
  13. package/esm2022/lib/renderer/index.mjs +69 -68
  14. package/esm2022/lib/renderer/store.mjs +98 -104
  15. package/esm2022/lib/renderer/utils.mjs +4 -35
  16. package/esm2022/lib/roots.mjs +20 -21
  17. package/esm2022/lib/routed-scene.mjs +3 -3
  18. package/esm2022/lib/store.mjs +8 -8
  19. package/esm2022/lib/three-types.mjs +1 -1
  20. package/esm2022/lib/utils/apply-props.mjs +13 -13
  21. package/esm2022/lib/utils/attach.mjs +1 -1
  22. package/esm2022/lib/utils/before-render.mjs +2 -2
  23. package/esm2022/lib/utils/create-api-token.mjs +1 -1
  24. package/esm2022/lib/utils/is.mjs +1 -1
  25. package/esm2022/lib/utils/make.mjs +7 -8
  26. package/esm2022/lib/utils/signal-store.mjs +1 -1
  27. package/esm2022/lib/utils/update.mjs +1 -1
  28. package/fesm2022/angular-three.mjs +295 -370
  29. package/fesm2022/angular-three.mjs.map +1 -1
  30. package/index.d.ts +0 -1
  31. package/lib/canvas.d.ts +798 -793
  32. package/lib/directives/args.d.ts +4 -5
  33. package/lib/directives/common.d.ts +8 -3
  34. package/lib/directives/parent.d.ts +5 -7
  35. package/lib/dom/events.d.ts +3 -3
  36. package/lib/events.d.ts +13 -13
  37. package/lib/instance.d.ts +6 -6
  38. package/lib/loader.d.ts +5 -5
  39. package/lib/loop.d.ts +2 -26
  40. package/lib/portal.d.ts +15 -17
  41. package/lib/ref.d.ts +2 -2
  42. package/lib/renderer/index.d.ts +6 -6
  43. package/lib/renderer/store.d.ts +4 -4
  44. package/lib/renderer/utils.d.ts +1 -1
  45. package/lib/roots.d.ts +3 -3
  46. package/lib/store.d.ts +18 -18
  47. package/lib/three-types.d.ts +132 -134
  48. package/lib/utils/apply-props.d.ts +2 -2
  49. package/lib/utils/attach.d.ts +4 -4
  50. package/lib/utils/before-render.d.ts +1 -1
  51. package/lib/utils/create-api-token.d.ts +2 -2
  52. package/lib/utils/is.d.ts +11 -11
  53. package/lib/utils/make.d.ts +10 -10
  54. package/lib/utils/signal-store.d.ts +1 -1
  55. package/lib/utils/update.d.ts +1 -1
  56. package/metadata.json +1 -1
  57. package/package.json +71 -71
  58. package/web-types.json +1 -1
  59. package/esm2022/lib/utils/inputs.mjs +0 -18
  60. package/lib/utils/inputs.d.ts +0 -5
@@ -5,38 +5,6 @@ import { getLocalState, invalidateInstance } from '../instance';
5
5
  import { attach, detach } from '../utils/attach';
6
6
  import { is } from '../utils/is';
7
7
  import { SPECIAL_EVENTS } from './constants';
8
- // @internal
9
- export var NgtRendererClassId;
10
- (function (NgtRendererClassId) {
11
- NgtRendererClassId[NgtRendererClassId["type"] = 0] = "type";
12
- NgtRendererClassId[NgtRendererClassId["parent"] = 1] = "parent";
13
- NgtRendererClassId[NgtRendererClassId["injectedParent"] = 2] = "injectedParent";
14
- NgtRendererClassId[NgtRendererClassId["children"] = 3] = "children";
15
- NgtRendererClassId[NgtRendererClassId["destroyed"] = 4] = "destroyed";
16
- NgtRendererClassId[NgtRendererClassId["compound"] = 5] = "compound";
17
- NgtRendererClassId[NgtRendererClassId["compoundParent"] = 6] = "compoundParent";
18
- NgtRendererClassId[NgtRendererClassId["compounded"] = 7] = "compounded";
19
- NgtRendererClassId[NgtRendererClassId["queueOps"] = 8] = "queueOps";
20
- NgtRendererClassId[NgtRendererClassId["attributes"] = 9] = "attributes";
21
- NgtRendererClassId[NgtRendererClassId["properties"] = 10] = "properties";
22
- NgtRendererClassId[NgtRendererClassId["rawValue"] = 11] = "rawValue";
23
- NgtRendererClassId[NgtRendererClassId["ref"] = 12] = "ref";
24
- NgtRendererClassId[NgtRendererClassId["portalContainer"] = 13] = "portalContainer";
25
- NgtRendererClassId[NgtRendererClassId["injectorFactory"] = 14] = "injectorFactory";
26
- })(NgtRendererClassId || (NgtRendererClassId = {}));
27
- // @internal
28
- export var NgtCompoundClassId;
29
- (function (NgtCompoundClassId) {
30
- NgtCompoundClassId[NgtCompoundClassId["applyFirst"] = 0] = "applyFirst";
31
- NgtCompoundClassId[NgtCompoundClassId["props"] = 1] = "props";
32
- })(NgtCompoundClassId || (NgtCompoundClassId = {}));
33
- // @internal
34
- export var NgtQueueOpClassId;
35
- (function (NgtQueueOpClassId) {
36
- NgtQueueOpClassId[NgtQueueOpClassId["type"] = 0] = "type";
37
- NgtQueueOpClassId[NgtQueueOpClassId["op"] = 1] = "op";
38
- NgtQueueOpClassId[NgtQueueOpClassId["done"] = 2] = "done";
39
- })(NgtQueueOpClassId || (NgtQueueOpClassId = {}));
40
8
  export function kebabToPascal(str) {
41
9
  // split the string at each hyphen
42
10
  const parts = str.split('-');
@@ -85,9 +53,9 @@ export function attachThreeChild(parent, child) {
85
53
  cLS.setParent(parent);
86
54
  }
87
55
  // at this point we don't have rawValue yet, so we bail and wait until the Renderer recalls attach
88
- if (child.__ngt_renderer__[NgtRendererClassId.rawValue] === undefined)
56
+ if (child.__ngt_renderer__[11 /* NgtRendererClassId.rawValue */] === undefined)
89
57
  return;
90
- attach(parent, child.__ngt_renderer__[NgtRendererClassId.rawValue], attachProp);
58
+ attach(parent, child.__ngt_renderer__[11 /* NgtRendererClassId.rawValue */], attachProp);
91
59
  }
92
60
  else {
93
61
  attach(parent, child, attachProp);
@@ -164,6 +132,7 @@ export function processThreeEvent(instance, priority, eventName, callback) {
164
132
  }
165
133
  return () => {
166
134
  sub.unsubscribe();
135
+ const emitter = lS[eventName];
167
136
  if (emitter && !emitter.observed) {
168
137
  emitter.complete();
169
138
  }
@@ -198,4 +167,4 @@ export function processThreeEvent(instance, priority, eventName, callback) {
198
167
  }
199
168
  };
200
169
  }
201
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9yZW5kZXJlci91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ2hELE9BQU8sRUFBRSxhQUFhLEVBQUUsa0JBQWtCLEVBQXdCLE1BQU0sYUFBYSxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNqQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTdDLFlBQVk7QUFDWixNQUFNLENBQU4sSUFBa0Isa0JBZ0JqQjtBQWhCRCxXQUFrQixrQkFBa0I7SUFDbkMsMkRBQUksQ0FBQTtJQUNKLCtEQUFNLENBQUE7SUFDTiwrRUFBYyxDQUFBO0lBQ2QsbUVBQVEsQ0FBQTtJQUNSLHFFQUFTLENBQUE7SUFDVCxtRUFBUSxDQUFBO0lBQ1IsK0VBQWMsQ0FBQTtJQUNkLHVFQUFVLENBQUE7SUFDVixtRUFBUSxDQUFBO0lBQ1IsdUVBQVUsQ0FBQTtJQUNWLHdFQUFVLENBQUE7SUFDVixvRUFBUSxDQUFBO0lBQ1IsMERBQUcsQ0FBQTtJQUNILGtGQUFlLENBQUE7SUFDZixrRkFBZSxDQUFBO0FBQ2hCLENBQUMsRUFoQmlCLGtCQUFrQixLQUFsQixrQkFBa0IsUUFnQm5DO0FBRUQsWUFBWTtBQUNaLE1BQU0sQ0FBTixJQUFrQixrQkFHakI7QUFIRCxXQUFrQixrQkFBa0I7SUFDbkMsdUVBQVUsQ0FBQTtJQUNWLDZEQUFLLENBQUE7QUFDTixDQUFDLEVBSGlCLGtCQUFrQixLQUFsQixrQkFBa0IsUUFHbkM7QUFFRCxZQUFZO0FBQ1osTUFBTSxDQUFOLElBQWtCLGlCQUlqQjtBQUpELFdBQWtCLGlCQUFpQjtJQUNsQyx5REFBSSxDQUFBO0lBQ0oscURBQUUsQ0FBQTtJQUNGLHlEQUFJLENBQUE7QUFDTCxDQUFDLEVBSmlCLGlCQUFpQixLQUFqQixpQkFBaUIsUUFJbEM7QUFFRCxNQUFNLFVBQVUsYUFBYSxDQUFDLEdBQVc7SUFDeEMsa0NBQWtDO0lBQ2xDLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFN0IsaUVBQWlFO0lBQ2pFLE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRXRGLGdFQUFnRTtJQUNoRSxPQUFPLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDN0IsQ0FBQztBQUVELE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxNQUF1QixFQUFFLEtBQXNCO0lBQy9FLE1BQU0sR0FBRyxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNsQyxNQUFNLEdBQUcsR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFakMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLE1BQU0sSUFBSSxLQUFLLENBQUMsNkRBQTZELENBQUMsQ0FBQztJQUNoRixDQUFDO0lBRUQsNkRBQTZEO0lBQzdELElBQUksS0FBSyxHQUFHLEtBQUssQ0FBQztJQUVsQiw2Q0FBNkM7SUFDN0MsK0NBQStDO0lBQy9DLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxJQUFJLEdBQUcsQ0FBQyxLQUFLLEtBQUssR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQztRQUMvRCxHQUFHLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUM7SUFDdkIsQ0FBQztJQUVELElBQUksR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2hCLE1BQU0sVUFBVSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUM7UUFFOUIsSUFBSSxPQUFPLFVBQVUsS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUN0QyxNQUFNLGFBQWEsR0FBRyxVQUFVLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDM0QsSUFBSSxhQUFhO2dCQUFFLEdBQUcsQ0FBQyxjQUFjLEdBQUcsYUFBYSxDQUFDO1FBQ3ZELENBQUM7YUFBTSxDQUFDO1lBQ1Asd0NBQXdDO1lBQ3hDLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxLQUFLLE1BQU0sRUFBRSxDQUFDO2dCQUM5QixrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDMUIsT0FBTztZQUNSLENBQUM7WUFFRCx3QkFBd0I7WUFDeEIsSUFDQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEtBQUssVUFBVTtnQkFDNUIsVUFBVSxDQUFDLENBQUMsQ0FBQztnQkFDYixPQUFPLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxRQUFRO2dCQUN6QyxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztnQkFDbEIsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUNqQyxDQUFDO2dCQUNGLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDekIsQ0FBQztZQUVELFNBQVM7WUFDVCxJQUFJLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDZixJQUFJLEdBQUcsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxLQUFLLE1BQU0sRUFBRSxDQUFDO29CQUNoRCxHQUFHLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUN2QixDQUFDO2dCQUNELGtHQUFrRztnQkFDbEcsSUFBSSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLEtBQUssU0FBUztvQkFBRSxPQUFPO2dCQUM5RSxNQUFNLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQztZQUNqRixDQUFDO2lCQUFNLENBQUM7Z0JBQ1AsTUFBTSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFDbkMsQ0FBQztZQUNELGFBQWE7WUFDYixHQUFHLENBQUMsY0FBYyxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDdEYsQ0FBQztJQUNGLENBQUM7U0FBTSxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3RELE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbEIsS0FBSyxHQUFHLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUM7SUFFakQsSUFBSSxHQUFHLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsS0FBSyxNQUFNLEVBQUUsQ0FBQztRQUNoRCxHQUFHLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUFJLEdBQUcsQ0FBQyxXQUFXO1FBQUUsR0FBRyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7SUFFbkUsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUIsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDNUIsQ0FBQztBQUVELE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxNQUF1QixFQUFFLEtBQXNCLEVBQUUsT0FBaUI7SUFDbEcsTUFBTSxHQUFHLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2xDLE1BQU0sR0FBRyxHQUFHLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUVqQyxtQkFBbUI7SUFDbkIsR0FBRyxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUVyQiwyQkFBMkI7SUFDM0IsR0FBRyxFQUFFLE1BQU0sQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDOUIsR0FBRyxFQUFFLE1BQU0sQ0FBQyxLQUFLLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFFakMsSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUM7UUFDakIsTUFBTSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ25DLENBQUM7U0FBTSxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3RELE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckIsTUFBTSxLQUFLLEdBQUcsR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxDQUFDO1FBQ3ZDLElBQUksS0FBSztZQUFFLG1CQUFtQixDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQsTUFBTSxXQUFXLEdBQUcsR0FBRyxFQUFFLFNBQVMsQ0FBQztJQUNuQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbEIsb0JBQW9CLENBQUMsR0FBRyxFQUFFLGFBQWEsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDaEYsb0JBQW9CLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRCxVQUFVO0lBQ1YsSUFBSSxDQUFDLFdBQVcsSUFBSSxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDMUQsY0FBYyxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzVCLENBQUM7QUFFRCxTQUFTLG9CQUFvQixDQUFDLEtBQXdCLEVBQUUsTUFBdUIsRUFBRSxPQUFnQjtJQUNoRyxJQUFJLEtBQUs7UUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7QUFDcEYsQ0FBQztBQUVELE1BQU0sVUFBVSxpQkFBaUIsQ0FDaEMsUUFBeUIsRUFDekIsUUFBZ0IsRUFDaEIsU0FBaUIsRUFDakIsUUFBOEI7SUFFOUIsTUFBTSxFQUFFLEdBQUcsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ25DLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNULE9BQU8sQ0FBQyxJQUFJLENBQUMsMkNBQTJDLENBQUMsQ0FBQztRQUMxRCxPQUFPLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztJQUNqQixDQUFDO0lBRUQsSUFBSSxTQUFTLEtBQUssY0FBYyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ2hELE9BQU8sRUFBRSxDQUFDLEtBQUs7YUFDYixHQUFHLENBQUMsVUFBVSxDQUFDO2FBQ2YsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsUUFBUSxJQUFJLEVBQUUsQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDN0YsQ0FBQztJQUVELElBQUksU0FBUyxLQUFLLGNBQWMsQ0FBQyxZQUFZLElBQUksU0FBUyxLQUFLLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUM1RixJQUFJLE9BQU8sR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDNUIsSUFBSSxDQUFDLE9BQU87WUFBRSxPQUFPLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzdELE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFeEMscUVBQXFFO1FBQ3JFLHlDQUF5QztRQUN6QyxJQUFJLFNBQVMsS0FBSyxjQUFjLENBQUMsWUFBWSxJQUFJLFNBQVMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUN2RSxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDaEUsQ0FBQztRQUVELE9BQU8sR0FBRyxFQUFFO1lBQ1gsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2xCLElBQUksT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNsQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDcEIsQ0FBQztRQUNGLENBQUMsQ0FBQztJQUNILENBQUM7SUFFRCxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVE7UUFBRSxFQUFFLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUVuQyxvSEFBb0g7SUFDcEgsTUFBTSxlQUFlLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxTQUFxQyxDQUFDLENBQUM7SUFDM0Usd0JBQXdCO0lBQ3hCLE1BQU0sZUFBZSxHQUFvQixDQUFDLEtBQUssRUFBRSxFQUFFO1FBQ2xELElBQUksZUFBZTtZQUFFLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1QyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakIsQ0FBQyxDQUFDO0lBRUYsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsRUFBRSxlQUFlLEVBQUUsQ0FBQyxDQUFDO0lBRTdELGdDQUFnQztJQUNoQyxFQUFFLENBQUMsVUFBVSxJQUFJLENBQUMsQ0FBQztJQUNuQix1SEFBdUg7SUFDdkgsMkNBQTJDO0lBQzNDLElBQUksRUFBRSxDQUFDLFVBQVUsS0FBSyxDQUFDLElBQUksUUFBUSxDQUFDLFNBQVMsQ0FBQztRQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFdkcsZ0ZBQWdGO0lBQ2hGLE9BQU8sR0FBRyxFQUFFO1FBQ1gsTUFBTSxFQUFFLEdBQUcsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ25DLElBQUksRUFBRSxFQUFFLENBQUM7WUFDUixFQUFFLENBQUMsVUFBVSxJQUFJLENBQUMsQ0FBQztZQUNuQixNQUFNLFlBQVksR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ25FLE1BQU0sS0FBSyxHQUFHLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzFFLElBQUksS0FBSyxJQUFJLENBQUM7Z0JBQUUsWUFBWSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDL0MsQ0FBQztJQUNGLENBQUMsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1bnRyYWNrZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJlcGxheVN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHJlbW92ZUludGVyYWN0aXZpdHkgfSBmcm9tICcuLi9ldmVudHMnO1xuaW1wb3J0IHsgZ2V0TG9jYWxTdGF0ZSwgaW52YWxpZGF0ZUluc3RhbmNlLCB0eXBlIE5ndEluc3RhbmNlTm9kZSB9IGZyb20gJy4uL2luc3RhbmNlJztcbmltcG9ydCB7IGF0dGFjaCwgZGV0YWNoIH0gZnJvbSAnLi4vdXRpbHMvYXR0YWNoJztcbmltcG9ydCB7IGlzIH0gZnJvbSAnLi4vdXRpbHMvaXMnO1xuaW1wb3J0IHsgU1BFQ0lBTF9FVkVOVFMgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5cbi8vIEBpbnRlcm5hbFxuZXhwb3J0IGNvbnN0IGVudW0gTmd0UmVuZGVyZXJDbGFzc0lkIHtcblx0dHlwZSxcblx0cGFyZW50LFxuXHRpbmplY3RlZFBhcmVudCxcblx0Y2hpbGRyZW4sXG5cdGRlc3Ryb3llZCxcblx0Y29tcG91bmQsXG5cdGNvbXBvdW5kUGFyZW50LFxuXHRjb21wb3VuZGVkLFxuXHRxdWV1ZU9wcyxcblx0YXR0cmlidXRlcyxcblx0cHJvcGVydGllcyxcblx0cmF3VmFsdWUsXG5cdHJlZixcblx0cG9ydGFsQ29udGFpbmVyLFxuXHRpbmplY3RvckZhY3RvcnksXG59XG5cbi8vIEBpbnRlcm5hbFxuZXhwb3J0IGNvbnN0IGVudW0gTmd0Q29tcG91bmRDbGFzc0lkIHtcblx0YXBwbHlGaXJzdCxcblx0cHJvcHMsXG59XG5cbi8vIEBpbnRlcm5hbFxuZXhwb3J0IGNvbnN0IGVudW0gTmd0UXVldWVPcENsYXNzSWQge1xuXHR0eXBlLFxuXHRvcCxcblx0ZG9uZSxcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGtlYmFiVG9QYXNjYWwoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuXHQvLyBzcGxpdCB0aGUgc3RyaW5nIGF0IGVhY2ggaHlwaGVuXG5cdGNvbnN0IHBhcnRzID0gc3RyLnNwbGl0KCctJyk7XG5cblx0Ly8gbWFwIG92ZXIgdGhlIHBhcnRzLCBjYXBpdGFsaXppbmcgdGhlIGZpcnN0IGxldHRlciBvZiBlYWNoIHBhcnRcblx0Y29uc3QgcGFzY2FsUGFydHMgPSBwYXJ0cy5tYXAoKHBhcnQpID0+IHBhcnQuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBwYXJ0LnNsaWNlKDEpKTtcblxuXHQvLyBqb2luIHRoZSBwYXJ0cyB0b2dldGhlciB0byBjcmVhdGUgdGhlIGZpbmFsIFBhc2NhbENhc2Ugc3RyaW5nXG5cdHJldHVybiBwYXNjYWxQYXJ0cy5qb2luKCcnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGF0dGFjaFRocmVlQ2hpbGQocGFyZW50OiBOZ3RJbnN0YW5jZU5vZGUsIGNoaWxkOiBOZ3RJbnN0YW5jZU5vZGUpIHtcblx0Y29uc3QgcExTID0gZ2V0TG9jYWxTdGF0ZShwYXJlbnQpO1xuXHRjb25zdCBjTFMgPSBnZXRMb2NhbFN0YXRlKGNoaWxkKTtcblxuXHRpZiAoIXBMUyB8fCAhY0xTKSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKGBbTkdUXSBUSFJFRSBpbnN0YW5jZXMgbmVlZCB0byBiZSBwcmVwYXJlZCB3aXRoIGxvY2FsIHN0YXRlLmApO1xuXHR9XG5cblx0Ly8gd2hldGhlciB0aGUgY2hpbGQgaXMgYWRkZWQgdG8gdGhlIHBhcmVudCB3aXRoIHBhcmVudC5hZGQoKVxuXHRsZXQgYWRkZWQgPSBmYWxzZTtcblxuXHQvLyBhc3NpZ24gc3RvcmUgb24gY2hpbGQgaWYgbm90IGFscmVhZHkgZXhpc3Rcblx0Ly8gb3IgY2hpbGQgc3RvcmUgaXMgdGhlIHBhcmVudCBvZiBwYXJlbnQgc3RvcmVcblx0aWYgKCFjTFMuc3RvcmUgfHwgY0xTLnN0b3JlID09PSBwTFMuc3RvcmUuZ2V0KCdwcmV2aW91c1Jvb3QnKSkge1xuXHRcdGNMUy5zdG9yZSA9IHBMUy5zdG9yZTtcblx0fVxuXG5cdGlmIChjTFMuYXR0YWNoKSB7XG5cdFx0Y29uc3QgYXR0YWNoUHJvcCA9IGNMUy5hdHRhY2g7XG5cblx0XHRpZiAodHlwZW9mIGF0dGFjaFByb3AgPT09ICdmdW5jdGlvbicpIHtcblx0XHRcdGNvbnN0IGF0dGFjaENsZWFuVXAgPSBhdHRhY2hQcm9wKHBhcmVudCwgY2hpbGQsIGNMUy5zdG9yZSk7XG5cdFx0XHRpZiAoYXR0YWNoQ2xlYW5VcCkgY0xTLnByZXZpb3VzQXR0YWNoID0gYXR0YWNoQ2xlYW5VcDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gd2Ugc2tpcCBhdHRhY2ggbm9uZSBpZiBzZXQgZXhwbGljaXRseVxuXHRcdFx0aWYgKGF0dGFjaFByb3BbMF0gPT09ICdub25lJykge1xuXHRcdFx0XHRpbnZhbGlkYXRlSW5zdGFuY2UoY2hpbGQpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdC8vIGhhbmRsZSBtYXRlcmlhbCBhcnJheVxuXHRcdFx0aWYgKFxuXHRcdFx0XHRhdHRhY2hQcm9wWzBdID09PSAnbWF0ZXJpYWwnICYmXG5cdFx0XHRcdGF0dGFjaFByb3BbMV0gJiZcblx0XHRcdFx0dHlwZW9mIE51bWJlcihhdHRhY2hQcm9wWzFdKSA9PT0gJ251bWJlcicgJiZcblx0XHRcdFx0aXMubWF0ZXJpYWwoY2hpbGQpICYmXG5cdFx0XHRcdCFBcnJheS5pc0FycmF5KHBhcmVudFsnbWF0ZXJpYWwnXSlcblx0XHRcdCkge1xuXHRcdFx0XHRwYXJlbnRbJ21hdGVyaWFsJ10gPSBbXTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gYXR0YWNoXG5cdFx0XHRpZiAoY0xTLmlzUmF3KSB7XG5cdFx0XHRcdGlmIChjTFMuaW5zdGFuY2VTdG9yZS5nZXQoJ3BhcmVudCcpICE9PSBwYXJlbnQpIHtcblx0XHRcdFx0XHRjTFMuc2V0UGFyZW50KHBhcmVudCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0Ly8gYXQgdGhpcyBwb2ludCB3ZSBkb24ndCBoYXZlIHJhd1ZhbHVlIHlldCwgc28gd2UgYmFpbCBhbmQgd2FpdCB1bnRpbCB0aGUgUmVuZGVyZXIgcmVjYWxscyBhdHRhY2hcblx0XHRcdFx0aWYgKGNoaWxkLl9fbmd0X3JlbmRlcmVyX19bTmd0UmVuZGVyZXJDbGFzc0lkLnJhd1ZhbHVlXSA9PT0gdW5kZWZpbmVkKSByZXR1cm47XG5cdFx0XHRcdGF0dGFjaChwYXJlbnQsIGNoaWxkLl9fbmd0X3JlbmRlcmVyX19bTmd0UmVuZGVyZXJDbGFzc0lkLnJhd1ZhbHVlXSwgYXR0YWNoUHJvcCk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRhdHRhY2gocGFyZW50LCBjaGlsZCwgYXR0YWNoUHJvcCk7XG5cdFx0XHR9XG5cdFx0XHQvLyBzYXZlIHZhbHVlXG5cdFx0XHRjTFMucHJldmlvdXNBdHRhY2ggPSBhdHRhY2hQcm9wLnJlZHVjZSgodmFsdWUsIHByb3BlcnR5KSA9PiB2YWx1ZVtwcm9wZXJ0eV0sIHBhcmVudCk7XG5cdFx0fVxuXHR9IGVsc2UgaWYgKGlzLm9iamVjdDNEKHBhcmVudCkgJiYgaXMub2JqZWN0M0QoY2hpbGQpKSB7XG5cdFx0cGFyZW50LmFkZChjaGlsZCk7XG5cdFx0YWRkZWQgPSB0cnVlO1xuXHR9XG5cblx0cExTLmFkZChjaGlsZCwgYWRkZWQgPyAnb2JqZWN0cycgOiAnbm9uT2JqZWN0cycpO1xuXG5cdGlmIChjTFMuaW5zdGFuY2VTdG9yZS5nZXQoJ3BhcmVudCcpICE9PSBwYXJlbnQpIHtcblx0XHRjTFMuc2V0UGFyZW50KHBhcmVudCk7XG5cdH1cblxuXHRpZiAoY0xTLmFmdGVyQXR0YWNoKSBjTFMuYWZ0ZXJBdHRhY2gubmV4dCh7IHBhcmVudCwgbm9kZTogY2hpbGQgfSk7XG5cblx0aW52YWxpZGF0ZUluc3RhbmNlKGNoaWxkKTtcblx0aW52YWxpZGF0ZUluc3RhbmNlKHBhcmVudCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVUaHJlZUNoaWxkKHBhcmVudDogTmd0SW5zdGFuY2VOb2RlLCBjaGlsZDogTmd0SW5zdGFuY2VOb2RlLCBkaXNwb3NlPzogYm9vbGVhbikge1xuXHRjb25zdCBwTFMgPSBnZXRMb2NhbFN0YXRlKHBhcmVudCk7XG5cdGNvbnN0IGNMUyA9IGdldExvY2FsU3RhdGUoY2hpbGQpO1xuXG5cdC8vIGNsZWFyIHBhcmVudCByZWZcblx0Y0xTPy5zZXRQYXJlbnQobnVsbCk7XG5cblx0Ly8gcmVtb3ZlIGNoaWxkIGZyb20gcGFyZW50XG5cdHBMUz8ucmVtb3ZlKGNoaWxkLCAnb2JqZWN0cycpO1xuXHRwTFM/LnJlbW92ZShjaGlsZCwgJ25vbk9iamVjdHMnKTtcblxuXHRpZiAoY0xTPy5hdHRhY2gpIHtcblx0XHRkZXRhY2gocGFyZW50LCBjaGlsZCwgY0xTLmF0dGFjaCk7XG5cdH0gZWxzZSBpZiAoaXMub2JqZWN0M0QocGFyZW50KSAmJiBpcy5vYmplY3QzRChjaGlsZCkpIHtcblx0XHRwYXJlbnQucmVtb3ZlKGNoaWxkKTtcblx0XHRjb25zdCBzdG9yZSA9IGNMUz8uc3RvcmUgfHwgcExTPy5zdG9yZTtcblx0XHRpZiAoc3RvcmUpIHJlbW92ZUludGVyYWN0aXZpdHkoc3RvcmUsIGNoaWxkKTtcblx0fVxuXG5cdGNvbnN0IGlzUHJpbWl0aXZlID0gY0xTPy5wcmltaXRpdmU7XG5cdGlmICghaXNQcmltaXRpdmUpIHtcblx0XHRyZW1vdmVUaHJlZVJlY3Vyc2l2ZShjTFM/Lmluc3RhbmNlU3RvcmUuZ2V0KCdvYmplY3RzJykgfHwgW10sIGNoaWxkLCAhIWRpc3Bvc2UpO1xuXHRcdHJlbW92ZVRocmVlUmVjdXJzaXZlKGNoaWxkLmNoaWxkcmVuLCBjaGlsZCwgISFkaXNwb3NlKTtcblx0fVxuXG5cdC8vIGRpc3Bvc2Vcblx0aWYgKCFpc1ByaW1pdGl2ZSAmJiBjaGlsZFsnZGlzcG9zZSddICYmICFpcy5zY2VuZShjaGlsZCkpIHtcblx0XHRxdWV1ZU1pY3JvdGFzaygoKSA9PiBjaGlsZFsnZGlzcG9zZSddKCkpO1xuXHR9XG5cblx0aW52YWxpZGF0ZUluc3RhbmNlKHBhcmVudCk7XG59XG5cbmZ1bmN0aW9uIHJlbW92ZVRocmVlUmVjdXJzaXZlKGFycmF5OiBOZ3RJbnN0YW5jZU5vZGVbXSwgcGFyZW50OiBOZ3RJbnN0YW5jZU5vZGUsIGRpc3Bvc2U6IGJvb2xlYW4pIHtcblx0aWYgKGFycmF5KSBbLi4uYXJyYXldLmZvckVhY2goKGNoaWxkKSA9PiByZW1vdmVUaHJlZUNoaWxkKHBhcmVudCwgY2hpbGQsIGRpc3Bvc2UpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb2Nlc3NUaHJlZUV2ZW50KFxuXHRpbnN0YW5jZTogTmd0SW5zdGFuY2VOb2RlLFxuXHRwcmlvcml0eTogbnVtYmVyLFxuXHRldmVudE5hbWU6IHN0cmluZyxcblx0Y2FsbGJhY2s6IChldmVudDogYW55KSA9PiB2b2lkLFxuKTogKCkgPT4gdm9pZCB7XG5cdGNvbnN0IGxTID0gZ2V0TG9jYWxTdGF0ZShpbnN0YW5jZSk7XG5cdGlmICghbFMpIHtcblx0XHRjb25zb2xlLndhcm4oJ1tOR1RdIGluc3RhbmNlIGhhcyBub3QgYmVlbiBwcmVwYXJlZCB5ZXQuJyk7XG5cdFx0cmV0dXJuICgpID0+IHt9O1xuXHR9XG5cblx0aWYgKGV2ZW50TmFtZSA9PT0gU1BFQ0lBTF9FVkVOVFMuQkVGT1JFX1JFTkRFUikge1xuXHRcdHJldHVybiBsUy5zdG9yZVxuXHRcdFx0LmdldCgnaW50ZXJuYWwnKVxuXHRcdFx0LnN1YnNjcmliZSgoc3RhdGUpID0+IGNhbGxiYWNrKHsgc3RhdGUsIG9iamVjdDogaW5zdGFuY2UgfSksIHByaW9yaXR5IHx8IGxTLnByaW9yaXR5IHx8IDApO1xuXHR9XG5cblx0aWYgKGV2ZW50TmFtZSA9PT0gU1BFQ0lBTF9FVkVOVFMuQUZURVJfVVBEQVRFIHx8IGV2ZW50TmFtZSA9PT0gU1BFQ0lBTF9FVkVOVFMuQUZURVJfQVRUQUNIKSB7XG5cdFx0bGV0IGVtaXR0ZXIgPSBsU1tldmVudE5hbWVdO1xuXHRcdGlmICghZW1pdHRlcikgZW1pdHRlciA9IGxTW2V2ZW50TmFtZV0gPSBuZXcgUmVwbGF5U3ViamVjdCgxKTtcblx0XHRjb25zdCBzdWIgPSBlbWl0dGVyLnN1YnNjcmliZShjYWxsYmFjayk7XG5cblx0XHQvLyBOT1RFOiBmb3IgYWZ0ZXJBdHRhY2ggZXZlbnQsIGlmIHRoZSBpbnN0YW5jZSBhbHJlYWR5IGhhcyBhIHBhcmVudCxcblx0XHQvLyAgdGhlbiB3ZSdsbCBlbWl0IHRoZSBldmVudCBpbW1lZGlhdGVseVxuXHRcdGlmIChldmVudE5hbWUgPT09IFNQRUNJQUxfRVZFTlRTLkFGVEVSX0FUVEFDSCAmJiB1bnRyYWNrZWQobFMucGFyZW50KSkge1xuXHRcdFx0ZW1pdHRlci5uZXh0KHsgcGFyZW50OiB1bnRyYWNrZWQobFMucGFyZW50KSwgbm9kZTogaW5zdGFuY2UgfSk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuICgpID0+IHtcblx0XHRcdHN1Yi51bnN1YnNjcmliZSgpO1xuXHRcdFx0aWYgKGVtaXR0ZXIgJiYgIWVtaXR0ZXIub2JzZXJ2ZWQpIHtcblx0XHRcdFx0ZW1pdHRlci5jb21wbGV0ZSgpO1xuXHRcdFx0fVxuXHRcdH07XG5cdH1cblxuXHRpZiAoIWxTLmhhbmRsZXJzKSBsUy5oYW5kbGVycyA9IHt9O1xuXG5cdC8vIHRyeSB0byBnZXQgdGhlIHByZXZpb3VzIGhhbmRsZXIuIGNvbXBvdW5kIG1pZ2h0IGhhdmUgb25lLCB0aGUgVEhSRUUgb2JqZWN0IG1pZ2h0IGFsc28gaGF2ZSBvbmUgd2l0aCB0aGUgc2FtZSBuYW1lXG5cdGNvbnN0IHByZXZpb3VzSGFuZGxlciA9IGxTLmhhbmRsZXJzW2V2ZW50TmFtZSBhcyBrZXlvZiB0eXBlb2YgbFMuaGFuZGxlcnNdO1xuXHQvLyByZWFkanVzdCB0aGUgY2FsbGJhY2tcblx0Y29uc3QgdXBkYXRlZENhbGxiYWNrOiB0eXBlb2YgY2FsbGJhY2sgPSAoZXZlbnQpID0+IHtcblx0XHRpZiAocHJldmlvdXNIYW5kbGVyKSBwcmV2aW91c0hhbmRsZXIoZXZlbnQpO1xuXHRcdGNhbGxiYWNrKGV2ZW50KTtcblx0fTtcblxuXHRPYmplY3QuYXNzaWduKGxTLmhhbmRsZXJzLCB7IFtldmVudE5hbWVdOiB1cGRhdGVkQ2FsbGJhY2sgfSk7XG5cblx0Ly8gaW5jcmVtZW50IHRoZSBjb3VudCBldmVyeXRpbWVcblx0bFMuZXZlbnRDb3VudCArPSAxO1xuXHQvLyBidXQgb25seSBhZGQgdGhlIGluc3RhbmNlICh0YXJnZXQpIHRvIHRoZSBpbnRlcmFjdGlvbiBhcnJheSAoc28gdGhhdCBpdCBpcyBoYW5kbGVkIGJ5IHRoZSBFdmVudE1hbmFnZXIgd2l0aCBSYXljYXN0KVxuXHQvLyB0aGUgZmlyc3QgdGltZSBldmVudENvdW50IGlzIGluY3JlbWVudGVkXG5cdGlmIChsUy5ldmVudENvdW50ID09PSAxICYmIGluc3RhbmNlWydyYXljYXN0J10pIGxTLnN0b3JlLmdldCgnaW50ZXJuYWwnLCAnaW50ZXJhY3Rpb24nKS5wdXNoKGluc3RhbmNlKTtcblxuXHQvLyBjbGVhbiB1cCB0aGUgZXZlbnQgbGlzdGVuZXIgYnkgcmVtb3ZpbmcgdGhlIHRhcmdldCBmcm9tIHRoZSBpbnRlcmFjdGlvbiBhcnJheVxuXHRyZXR1cm4gKCkgPT4ge1xuXHRcdGNvbnN0IGxTID0gZ2V0TG9jYWxTdGF0ZShpbnN0YW5jZSk7XG5cdFx0aWYgKGxTKSB7XG5cdFx0XHRsUy5ldmVudENvdW50IC09IDE7XG5cdFx0XHRjb25zdCBpbnRlcmFjdGlvbnMgPSBsUy5zdG9yZS5nZXQoJ2ludGVybmFsJywgJ2ludGVyYWN0aW9uJykgfHwgW107XG5cdFx0XHRjb25zdCBpbmRleCA9IGludGVyYWN0aW9ucy5maW5kSW5kZXgoKG9iaikgPT4gb2JqLnV1aWQgPT09IGluc3RhbmNlLnV1aWQpO1xuXHRcdFx0aWYgKGluZGV4ID49IDApIGludGVyYWN0aW9ucy5zcGxpY2UoaW5kZXgsIDEpO1xuXHRcdH1cblx0fTtcbn1cbiJdfQ==
170
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9yZW5kZXJlci91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ2hELE9BQU8sRUFBRSxhQUFhLEVBQUUsa0JBQWtCLEVBQW1CLE1BQU0sYUFBYSxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNqQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBa0M3QyxNQUFNLFVBQVUsYUFBYSxDQUFDLEdBQVc7SUFDeEMsa0NBQWtDO0lBQ2xDLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFN0IsaUVBQWlFO0lBQ2pFLE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRXRGLGdFQUFnRTtJQUNoRSxPQUFPLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDN0IsQ0FBQztBQUVELE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxNQUF1QixFQUFFLEtBQXNCO0lBQy9FLE1BQU0sR0FBRyxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNsQyxNQUFNLEdBQUcsR0FB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LENBQUMsVUFBVSxJQUFJLENBQUMsQ0FBQztZQUNuQixNQUFNLFlBQVksR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ25FLE1BQU0sS0FBSyxHQUFHLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzFFLElBQUksS0FBSyxJQUFJLENBQUM7Z0JBQUUsWUFBWSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDL0MsQ0FBQztJQUNGLENBQUMsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1bnRyYWNrZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJlcGxheVN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHJlbW92ZUludGVyYWN0aXZpdHkgfSBmcm9tICcuLi9ldmVudHMnO1xuaW1wb3J0IHsgZ2V0TG9jYWxTdGF0ZSwgaW52YWxpZGF0ZUluc3RhbmNlLCBOZ3RJbnN0YW5jZU5vZGUgfSBmcm9tICcuLi9pbnN0YW5jZSc7XG5pbXBvcnQgeyBhdHRhY2gsIGRldGFjaCB9IGZyb20gJy4uL3V0aWxzL2F0dGFjaCc7XG5pbXBvcnQgeyBpcyB9IGZyb20gJy4uL3V0aWxzL2lzJztcbmltcG9ydCB7IFNQRUNJQUxfRVZFTlRTIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuXG4vLyBAaW50ZXJuYWxcbmV4cG9ydCBjb25zdCBlbnVtIE5ndFJlbmRlcmVyQ2xhc3NJZCB7XG5cdHR5cGUsXG5cdHBhcmVudCxcblx0aW5qZWN0ZWRQYXJlbnQsXG5cdGNoaWxkcmVuLFxuXHRkZXN0cm95ZWQsXG5cdGNvbXBvdW5kLFxuXHRjb21wb3VuZFBhcmVudCxcblx0Y29tcG91bmRlZCxcblx0cXVldWVPcHMsXG5cdGF0dHJpYnV0ZXMsXG5cdHByb3BlcnRpZXMsXG5cdHJhd1ZhbHVlLFxuXHRyZWYsXG5cdHBvcnRhbENvbnRhaW5lcixcblx0aW5qZWN0b3JGYWN0b3J5LFxufVxuXG4vLyBAaW50ZXJuYWxcbmV4cG9ydCBjb25zdCBlbnVtIE5ndENvbXBvdW5kQ2xhc3NJZCB7XG5cdGFwcGx5Rmlyc3QsXG5cdHByb3BzLFxufVxuXG4vLyBAaW50ZXJuYWxcbmV4cG9ydCBjb25zdCBlbnVtIE5ndFF1ZXVlT3BDbGFzc0lkIHtcblx0dHlwZSxcblx0b3AsXG5cdGRvbmUsXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBrZWJhYlRvUGFzY2FsKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcblx0Ly8gc3BsaXQgdGhlIHN0cmluZyBhdCBlYWNoIGh5cGhlblxuXHRjb25zdCBwYXJ0cyA9IHN0ci5zcGxpdCgnLScpO1xuXG5cdC8vIG1hcCBvdmVyIHRoZSBwYXJ0cywgY2FwaXRhbGl6aW5nIHRoZSBmaXJzdCBsZXR0ZXIgb2YgZWFjaCBwYXJ0XG5cdGNvbnN0IHBhc2NhbFBhcnRzID0gcGFydHMubWFwKChwYXJ0KSA9PiBwYXJ0LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgcGFydC5zbGljZSgxKSk7XG5cblx0Ly8gam9pbiB0aGUgcGFydHMgdG9nZXRoZXIgdG8gY3JlYXRlIHRoZSBmaW5hbCBQYXNjYWxDYXNlIHN0cmluZ1xuXHRyZXR1cm4gcGFzY2FsUGFydHMuam9pbignJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhdHRhY2hUaHJlZUNoaWxkKHBhcmVudDogTmd0SW5zdGFuY2VOb2RlLCBjaGlsZDogTmd0SW5zdGFuY2VOb2RlKSB7XG5cdGNvbnN0IHBMUyA9IGdldExvY2FsU3RhdGUocGFyZW50KTtcblx0Y29uc3QgY0xTID0gZ2V0TG9jYWxTdGF0ZShjaGlsZCk7XG5cblx0aWYgKCFwTFMgfHwgIWNMUykge1xuXHRcdHRocm93IG5ldyBFcnJvcihgW05HVF0gVEhSRUUgaW5zdGFuY2VzIG5lZWQgdG8gYmUgcHJlcGFyZWQgd2l0aCBsb2NhbCBzdGF0ZS5gKTtcblx0fVxuXG5cdC8vIHdoZXRoZXIgdGhlIGNoaWxkIGlzIGFkZGVkIHRvIHRoZSBwYXJlbnQgd2l0aCBwYXJlbnQuYWRkKClcblx0bGV0IGFkZGVkID0gZmFsc2U7XG5cblx0Ly8gYXNzaWduIHN0b3JlIG9uIGNoaWxkIGlmIG5vdCBhbHJlYWR5IGV4aXN0XG5cdC8vIG9yIGNoaWxkIHN0b3JlIGlzIHRoZSBwYXJlbnQgb2YgcGFyZW50IHN0b3JlXG5cdGlmICghY0xTLnN0b3JlIHx8IGNMUy5zdG9yZSA9PT0gcExTLnN0b3JlLmdldCgncHJldmlvdXNSb290JykpIHtcblx0XHRjTFMuc3RvcmUgPSBwTFMuc3RvcmU7XG5cdH1cblxuXHRpZiAoY0xTLmF0dGFjaCkge1xuXHRcdGNvbnN0IGF0dGFjaFByb3AgPSBjTFMuYXR0YWNoO1xuXG5cdFx0aWYgKHR5cGVvZiBhdHRhY2hQcm9wID09PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHRjb25zdCBhdHRhY2hDbGVhblVwID0gYXR0YWNoUHJvcChwYXJlbnQsIGNoaWxkLCBjTFMuc3RvcmUpO1xuXHRcdFx0aWYgKGF0dGFjaENsZWFuVXApIGNMUy5wcmV2aW91c0F0dGFjaCA9IGF0dGFjaENsZWFuVXA7XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIHdlIHNraXAgYXR0YWNoIG5vbmUgaWYgc2V0IGV4cGxpY2l0bHlcblx0XHRcdGlmIChhdHRhY2hQcm9wWzBdID09PSAnbm9uZScpIHtcblx0XHRcdFx0aW52YWxpZGF0ZUluc3RhbmNlKGNoaWxkKTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBoYW5kbGUgbWF0ZXJpYWwgYXJyYXlcblx0XHRcdGlmIChcblx0XHRcdFx0YXR0YWNoUHJvcFswXSA9PT0gJ21hdGVyaWFsJyAmJlxuXHRcdFx0XHRhdHRhY2hQcm9wWzFdICYmXG5cdFx0XHRcdHR5cGVvZiBOdW1iZXIoYXR0YWNoUHJvcFsxXSkgPT09ICdudW1iZXInICYmXG5cdFx0XHRcdGlzLm1hdGVyaWFsKGNoaWxkKSAmJlxuXHRcdFx0XHQhQXJyYXkuaXNBcnJheShwYXJlbnRbJ21hdGVyaWFsJ10pXG5cdFx0XHQpIHtcblx0XHRcdFx0cGFyZW50WydtYXRlcmlhbCddID0gW107XG5cdFx0XHR9XG5cblx0XHRcdC8vIGF0dGFjaFxuXHRcdFx0aWYgKGNMUy5pc1Jhdykge1xuXHRcdFx0XHRpZiAoY0xTLmluc3RhbmNlU3RvcmUuZ2V0KCdwYXJlbnQnKSAhPT0gcGFyZW50KSB7XG5cdFx0XHRcdFx0Y0xTLnNldFBhcmVudChwYXJlbnQpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdC8vIGF0IHRoaXMgcG9pbnQgd2UgZG9uJ3QgaGF2ZSByYXdWYWx1ZSB5ZXQsIHNvIHdlIGJhaWwgYW5kIHdhaXQgdW50aWwgdGhlIFJlbmRlcmVyIHJlY2FsbHMgYXR0YWNoXG5cdFx0XHRcdGlmIChjaGlsZC5fX25ndF9yZW5kZXJlcl9fW05ndFJlbmRlcmVyQ2xhc3NJZC5yYXdWYWx1ZV0gPT09IHVuZGVmaW5lZCkgcmV0dXJuO1xuXHRcdFx0XHRhdHRhY2gocGFyZW50LCBjaGlsZC5fX25ndF9yZW5kZXJlcl9fW05ndFJlbmRlcmVyQ2xhc3NJZC5yYXdWYWx1ZV0sIGF0dGFjaFByb3ApO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0YXR0YWNoKHBhcmVudCwgY2hpbGQsIGF0dGFjaFByb3ApO1xuXHRcdFx0fVxuXHRcdFx0Ly8gc2F2ZSB2YWx1ZVxuXHRcdFx0Y0xTLnByZXZpb3VzQXR0YWNoID0gYXR0YWNoUHJvcC5yZWR1Y2UoKHZhbHVlLCBwcm9wZXJ0eSkgPT4gdmFsdWVbcHJvcGVydHldLCBwYXJlbnQpO1xuXHRcdH1cblx0fSBlbHNlIGlmIChpcy5vYmplY3QzRChwYXJlbnQpICYmIGlzLm9iamVjdDNEKGNoaWxkKSkge1xuXHRcdHBhcmVudC5hZGQoY2hpbGQpO1xuXHRcdGFkZGVkID0gdHJ1ZTtcblx0fVxuXG5cdHBMUy5hZGQoY2hpbGQsIGFkZGVkID8gJ29iamVjdHMnIDogJ25vbk9iamVjdHMnKTtcblxuXHRpZiAoY0xTLmluc3RhbmNlU3RvcmUuZ2V0KCdwYXJlbnQnKSAhPT0gcGFyZW50KSB7XG5cdFx0Y0xTLnNldFBhcmVudChwYXJlbnQpO1xuXHR9XG5cblx0aWYgKGNMUy5hZnRlckF0dGFjaCkgY0xTLmFmdGVyQXR0YWNoLm5leHQoeyBwYXJlbnQsIG5vZGU6IGNoaWxkIH0pO1xuXG5cdGludmFsaWRhdGVJbnN0YW5jZShjaGlsZCk7XG5cdGludmFsaWRhdGVJbnN0YW5jZShwYXJlbnQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlVGhyZWVDaGlsZChwYXJlbnQ6IE5ndEluc3RhbmNlTm9kZSwgY2hpbGQ6IE5ndEluc3RhbmNlTm9kZSwgZGlzcG9zZT86IGJvb2xlYW4pIHtcblx0Y29uc3QgcExTID0gZ2V0TG9jYWxTdGF0ZShwYXJlbnQpO1xuXHRjb25zdCBjTFMgPSBnZXRMb2NhbFN0YXRlKGNoaWxkKTtcblxuXHQvLyBjbGVhciBwYXJlbnQgcmVmXG5cdGNMUz8uc2V0UGFyZW50KG51bGwpO1xuXG5cdC8vIHJlbW92ZSBjaGlsZCBmcm9tIHBhcmVudFxuXHRwTFM/LnJlbW92ZShjaGlsZCwgJ29iamVjdHMnKTtcblx0cExTPy5yZW1vdmUoY2hpbGQsICdub25PYmplY3RzJyk7XG5cblx0aWYgKGNMUz8uYXR0YWNoKSB7XG5cdFx0ZGV0YWNoKHBhcmVudCwgY2hpbGQsIGNMUy5hdHRhY2gpO1xuXHR9IGVsc2UgaWYgKGlzLm9iamVjdDNEKHBhcmVudCkgJiYgaXMub2JqZWN0M0QoY2hpbGQpKSB7XG5cdFx0cGFyZW50LnJlbW92ZShjaGlsZCk7XG5cdFx0Y29uc3Qgc3RvcmUgPSBjTFM/LnN0b3JlIHx8IHBMUz8uc3RvcmU7XG5cdFx0aWYgKHN0b3JlKSByZW1vdmVJbnRlcmFjdGl2aXR5KHN0b3JlLCBjaGlsZCk7XG5cdH1cblxuXHRjb25zdCBpc1ByaW1pdGl2ZSA9IGNMUz8ucHJpbWl0aXZlO1xuXHRpZiAoIWlzUHJpbWl0aXZlKSB7XG5cdFx0cmVtb3ZlVGhyZWVSZWN1cnNpdmUoY0xTPy5pbnN0YW5jZVN0b3JlLmdldCgnb2JqZWN0cycpIHx8IFtdLCBjaGlsZCwgISFkaXNwb3NlKTtcblx0XHRyZW1vdmVUaHJlZVJlY3Vyc2l2ZShjaGlsZC5jaGlsZHJlbiwgY2hpbGQsICEhZGlzcG9zZSk7XG5cdH1cblxuXHQvLyBkaXNwb3NlXG5cdGlmICghaXNQcmltaXRpdmUgJiYgY2hpbGRbJ2Rpc3Bvc2UnXSAmJiAhaXMuc2NlbmUoY2hpbGQpKSB7XG5cdFx0cXVldWVNaWNyb3Rhc2soKCkgPT4gY2hpbGRbJ2Rpc3Bvc2UnXSgpKTtcblx0fVxuXG5cdGludmFsaWRhdGVJbnN0YW5jZShwYXJlbnQpO1xufVxuXG5mdW5jdGlvbiByZW1vdmVUaHJlZVJlY3Vyc2l2ZShhcnJheTogTmd0SW5zdGFuY2VOb2RlW10sIHBhcmVudDogTmd0SW5zdGFuY2VOb2RlLCBkaXNwb3NlOiBib29sZWFuKSB7XG5cdGlmIChhcnJheSkgWy4uLmFycmF5XS5mb3JFYWNoKChjaGlsZCkgPT4gcmVtb3ZlVGhyZWVDaGlsZChwYXJlbnQsIGNoaWxkLCBkaXNwb3NlKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9jZXNzVGhyZWVFdmVudChcblx0aW5zdGFuY2U6IE5ndEluc3RhbmNlTm9kZSxcblx0cHJpb3JpdHk6IG51bWJlcixcblx0ZXZlbnROYW1lOiBzdHJpbmcsXG5cdGNhbGxiYWNrOiAoZXZlbnQ6IGFueSkgPT4gdm9pZCxcbik6ICgpID0+IHZvaWQge1xuXHRjb25zdCBsUyA9IGdldExvY2FsU3RhdGUoaW5zdGFuY2UpO1xuXHRpZiAoIWxTKSB7XG5cdFx0Y29uc29sZS53YXJuKCdbTkdUXSBpbnN0YW5jZSBoYXMgbm90IGJlZW4gcHJlcGFyZWQgeWV0LicpO1xuXHRcdHJldHVybiAoKSA9PiB7fTtcblx0fVxuXG5cdGlmIChldmVudE5hbWUgPT09IFNQRUNJQUxfRVZFTlRTLkJFRk9SRV9SRU5ERVIpIHtcblx0XHRyZXR1cm4gbFMuc3RvcmVcblx0XHRcdC5nZXQoJ2ludGVybmFsJylcblx0XHRcdC5zdWJzY3JpYmUoKHN0YXRlKSA9PiBjYWxsYmFjayh7IHN0YXRlLCBvYmplY3Q6IGluc3RhbmNlIH0pLCBwcmlvcml0eSB8fCBsUy5wcmlvcml0eSB8fCAwKTtcblx0fVxuXG5cdGlmIChldmVudE5hbWUgPT09IFNQRUNJQUxfRVZFTlRTLkFGVEVSX1VQREFURSB8fCBldmVudE5hbWUgPT09IFNQRUNJQUxfRVZFTlRTLkFGVEVSX0FUVEFDSCkge1xuXHRcdGxldCBlbWl0dGVyID0gbFNbZXZlbnROYW1lXTtcblx0XHRpZiAoIWVtaXR0ZXIpIGVtaXR0ZXIgPSBsU1tldmVudE5hbWVdID0gbmV3IFJlcGxheVN1YmplY3QoMSk7XG5cdFx0Y29uc3Qgc3ViID0gZW1pdHRlci5zdWJzY3JpYmUoY2FsbGJhY2spO1xuXHRcdC8vIE5PVEU6IGZvciBhZnRlckF0dGFjaCBldmVudCwgaWYgdGhlIGluc3RhbmNlIGFscmVhZHkgaGFzIGEgcGFyZW50LFxuXHRcdC8vICB0aGVuIHdlJ2xsIGVtaXQgdGhlIGV2ZW50IGltbWVkaWF0ZWx5XG5cdFx0aWYgKGV2ZW50TmFtZSA9PT0gU1BFQ0lBTF9FVkVOVFMuQUZURVJfQVRUQUNIICYmIHVudHJhY2tlZChsUy5wYXJlbnQpKSB7XG5cdFx0XHRlbWl0dGVyLm5leHQoeyBwYXJlbnQ6IHVudHJhY2tlZChsUy5wYXJlbnQpLCBub2RlOiBpbnN0YW5jZSB9KTtcblx0XHR9XG5cdFx0cmV0dXJuICgpID0+IHtcblx0XHRcdHN1Yi51bnN1YnNjcmliZSgpO1xuXHRcdFx0Y29uc3QgZW1pdHRlciA9IGxTW2V2ZW50TmFtZV07XG5cdFx0XHRpZiAoZW1pdHRlciAmJiAhZW1pdHRlci5vYnNlcnZlZCkge1xuXHRcdFx0XHRlbWl0dGVyLmNvbXBsZXRlKCk7XG5cdFx0XHR9XG5cdFx0fTtcblx0fVxuXG5cdGlmICghbFMuaGFuZGxlcnMpIGxTLmhhbmRsZXJzID0ge307XG5cblx0Ly8gdHJ5IHRvIGdldCB0aGUgcHJldmlvdXMgaGFuZGxlci4gY29tcG91bmQgbWlnaHQgaGF2ZSBvbmUsIHRoZSBUSFJFRSBvYmplY3QgbWlnaHQgYWxzbyBoYXZlIG9uZSB3aXRoIHRoZSBzYW1lIG5hbWVcblx0Y29uc3QgcHJldmlvdXNIYW5kbGVyID0gbFMuaGFuZGxlcnNbZXZlbnROYW1lIGFzIGtleW9mIHR5cGVvZiBsUy5oYW5kbGVyc107XG5cdC8vIHJlYWRqdXN0IHRoZSBjYWxsYmFja1xuXHRjb25zdCB1cGRhdGVkQ2FsbGJhY2s6IHR5cGVvZiBjYWxsYmFjayA9IChldmVudCkgPT4ge1xuXHRcdGlmIChwcmV2aW91c0hhbmRsZXIpIHByZXZpb3VzSGFuZGxlcihldmVudCk7XG5cdFx0Y2FsbGJhY2soZXZlbnQpO1xuXHR9O1xuXG5cdE9iamVjdC5hc3NpZ24obFMuaGFuZGxlcnMsIHsgW2V2ZW50TmFtZV06IHVwZGF0ZWRDYWxsYmFjayB9KTtcblxuXHQvLyBpbmNyZW1lbnQgdGhlIGNvdW50IGV2ZXJ5dGltZVxuXHRsUy5ldmVudENvdW50ICs9IDE7XG5cdC8vIGJ1dCBvbmx5IGFkZCB0aGUgaW5zdGFuY2UgKHRhcmdldCkgdG8gdGhlIGludGVyYWN0aW9uIGFycmF5IChzbyB0aGF0IGl0IGlzIGhhbmRsZWQgYnkgdGhlIEV2ZW50TWFuYWdlciB3aXRoIFJheWNhc3QpXG5cdC8vIHRoZSBmaXJzdCB0aW1lIGV2ZW50Q291bnQgaXMgaW5jcmVtZW50ZWRcblx0aWYgKGxTLmV2ZW50Q291bnQgPT09IDEgJiYgaW5zdGFuY2VbJ3JheWNhc3QnXSkgbFMuc3RvcmUuZ2V0KCdpbnRlcm5hbCcsICdpbnRlcmFjdGlvbicpLnB1c2goaW5zdGFuY2UpO1xuXG5cdC8vIGNsZWFuIHVwIHRoZSBldmVudCBsaXN0ZW5lciBieSByZW1vdmluZyB0aGUgdGFyZ2V0IGZyb20gdGhlIGludGVyYWN0aW9uIGFycmF5XG5cdHJldHVybiAoKSA9PiB7XG5cdFx0Y29uc3QgbFMgPSBnZXRMb2NhbFN0YXRlKGluc3RhbmNlKTtcblx0XHRpZiAobFMpIHtcblx0XHRcdGxTLmV2ZW50Q291bnQgLT0gMTtcblx0XHRcdGNvbnN0IGludGVyYWN0aW9ucyA9IGxTLnN0b3JlLmdldCgnaW50ZXJuYWwnLCAnaW50ZXJhY3Rpb24nKSB8fCBbXTtcblx0XHRcdGNvbnN0IGluZGV4ID0gaW50ZXJhY3Rpb25zLmZpbmRJbmRleCgob2JqKSA9PiBvYmoudXVpZCA9PT0gaW5zdGFuY2UudXVpZCk7XG5cdFx0XHRpZiAoaW5kZXggPj0gMCkgaW50ZXJhY3Rpb25zLnNwbGljZShpbmRleCwgMSk7XG5cdFx0fVxuXHR9O1xufVxuIl19
@@ -1,6 +1,5 @@
1
- import { Injector } from '@angular/core';
2
1
  import { assertInjector } from 'ngxtension/assert-injector';
3
- import * as THREE from 'three';
2
+ import { ACESFilmicToneMapping, BasicShadowMap, ColorManagement, NoToneMapping, PCFShadowMap, PCFSoftShadowMap, Raycaster, Scene, VSMShadowMap, Vector3, } from 'three';
4
3
  import { prepare } from './instance';
5
4
  import { injectNgtLoop } from './loop';
6
5
  import { injectNgtStore } from './store';
@@ -63,7 +62,7 @@ export function injectCanvasRootInitializer(injector) {
63
62
  // setup raycaster
64
63
  let raycaster = state.raycaster;
65
64
  if (!raycaster)
66
- stateToUpdate.raycaster = raycaster = new THREE.Raycaster();
65
+ stateToUpdate.raycaster = raycaster = new Raycaster();
67
66
  // set raycaster options
68
67
  const { params, ...options } = raycasterOptions || {};
69
68
  if (!is.equ(options, raycaster, shallowLoose))
@@ -93,7 +92,7 @@ export function injectCanvasRootInitializer(injector) {
93
92
  if (!state.camera && !cameraOptions?.rotation && !cameraOptions?.quaternion) {
94
93
  if (Array.isArray(lookAt))
95
94
  camera.lookAt(lookAt[0], lookAt[1], lookAt[2]);
96
- else if (lookAt instanceof THREE.Vector3)
95
+ else if (lookAt instanceof Vector3)
97
96
  camera.lookAt(lookAt);
98
97
  else
99
98
  camera.lookAt(0, 0, 0);
@@ -111,11 +110,11 @@ export function injectCanvasRootInitializer(injector) {
111
110
  // Set up scene (one time only!)
112
111
  if (!state.scene) {
113
112
  let scene;
114
- if (sceneOptions instanceof THREE.Scene) {
113
+ if (sceneOptions instanceof Scene) {
115
114
  scene = sceneOptions;
116
115
  }
117
116
  else {
118
- scene = new THREE.Scene();
117
+ scene = new Scene();
119
118
  if (sceneOptions)
120
119
  applyProps(scene, sceneOptions);
121
120
  }
@@ -160,16 +159,16 @@ export function injectCanvasRootInitializer(injector) {
160
159
  const oldType = gl.shadowMap.type;
161
160
  gl.shadowMap.enabled = !!shadows;
162
161
  if (typeof shadows === 'boolean') {
163
- gl.shadowMap.type = THREE.PCFSoftShadowMap;
162
+ gl.shadowMap.type = PCFSoftShadowMap;
164
163
  }
165
164
  else if (typeof shadows === 'string') {
166
165
  const types = {
167
- basic: THREE.BasicShadowMap,
168
- percentage: THREE.PCFShadowMap,
169
- soft: THREE.PCFSoftShadowMap,
170
- variance: THREE.VSMShadowMap,
166
+ basic: BasicShadowMap,
167
+ percentage: PCFShadowMap,
168
+ soft: PCFSoftShadowMap,
169
+ variance: VSMShadowMap,
171
170
  };
172
- gl.shadowMap.type = types[shadows] ?? THREE.PCFSoftShadowMap;
171
+ gl.shadowMap.type = types[shadows] ?? PCFSoftShadowMap;
173
172
  }
174
173
  else if (is.obj(shadows)) {
175
174
  Object.assign(gl.shadowMap, shadows);
@@ -178,13 +177,13 @@ export function injectCanvasRootInitializer(injector) {
178
177
  checkNeedsUpdate(gl.shadowMap);
179
178
  }
180
179
  // Safely set color management if available.
181
- // Avoid accessing THREE.ColorManagement to play nice with older versions
182
- if (THREE.ColorManagement) {
183
- const ColorManagement = THREE.ColorManagement;
184
- if ('enabled' in ColorManagement)
185
- ColorManagement['enabled'] = !legacy || false;
186
- else if ('legacyMode' in ColorManagement)
187
- ColorManagement['legacyMode'] = legacy || true;
180
+ // Avoid accessing ColorManagement to play nice with older versions
181
+ if (ColorManagement) {
182
+ const colorManagement = ColorManagement;
183
+ if ('enabled' in colorManagement)
184
+ colorManagement['enabled'] = !legacy ?? false;
185
+ else if ('legacyMode' in colorManagement)
186
+ colorManagement['legacyMode'] = legacy ?? true;
188
187
  }
189
188
  if (!isConfigured) {
190
189
  // set color space and tonemapping preferences once
@@ -192,7 +191,7 @@ export function injectCanvasRootInitializer(injector) {
192
191
  const sRGBEncoding = 3001;
193
192
  applyProps(gl, {
194
193
  outputEncoding: linear ? LinearEncoding : sRGBEncoding,
195
- toneMapping: flat ? THREE.NoToneMapping : THREE.ACESFilmicToneMapping,
194
+ toneMapping: flat ? NoToneMapping : ACESFilmicToneMapping,
196
195
  });
197
196
  }
198
197
  // Update color management state
@@ -258,4 +257,4 @@ function dispose(obj) {
258
257
  delete obj[p];
259
258
  }
260
259
  }
261
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9vdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9yb290cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM1RCxPQUFPLEtBQUssS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUUvQixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDdkMsT0FBTyxFQUFFLGNBQWMsRUFBK0IsTUFBTSxTQUFTLENBQUM7QUFFdEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDaEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUVqRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUlsRCxNQUFNLFlBQVksR0FBRyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBa0IsQ0FBQztBQUUzRSxNQUFNLENBQUMsTUFBTSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQThDLENBQUM7QUFFM0UsTUFBTSxVQUFVLDJCQUEyQixDQUFDLFFBQW1CO0lBQzlELE9BQU8sY0FBYyxDQUFDLDJCQUEyQixFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUU7UUFDakUsTUFBTSxhQUFhLEdBQUcsY0FBYyxFQUFFLENBQUM7UUFDdkMsTUFBTSxJQUFJLEdBQUcsYUFBYSxFQUFFLENBQUM7UUFFN0IsT0FBTyxDQUFDLE1BQXdCLEVBQUUsRUFBRTtZQUNuQyxNQUFNLEtBQUssR0FBRyxL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RUFBRSxNQUFNLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ3hFLENBQUM7SUFFRCxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDO0FBQ2pELENBQUM7QUFFRCw0Q0FBNEM7QUFDNUMsU0FBUyxPQUFPLENBQTJFLEdBQVM7SUFDbkcsSUFBSSxHQUFHLENBQUMsT0FBTyxJQUFJLEdBQUcsQ0FBQyxJQUFJLEtBQUssT0FBTztRQUFFLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUN2RCxLQUFLLE1BQU0sQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLENBQVMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO1FBQ3ZCLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2YsQ0FBQztBQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgYXNzZXJ0SW5qZWN0b3IgfSBmcm9tICduZ3h0ZW5zaW9uL2Fzc2VydC1pbmplY3Rvcic7XG5pbXBvcnQgKiBhcyBUSFJFRSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgdHlwZSB7IE5ndENhbnZhc0lucHV0cyB9IGZyb20gJy4vY2FudmFzJztcbmltcG9ydCB7IHByZXBhcmUgfSBmcm9tICcuL2luc3RhbmNlJztcbmltcG9ydCB7IGluamVjdE5ndExvb3AgfSBmcm9tICcuL2xvb3AnO1xuaW1wb3J0IHsgaW5qZWN0Tmd0U3RvcmUsIHR5cGUgTmd0U2l6ZSwgdHlwZSBOZ3RTdGF0ZSB9IGZyb20gJy4vc3RvcmUnO1xuaW1wb3J0IHR5cGUgeyBOZ3RBbnlSZWNvcmQsIE5ndEVxdUNvbmZpZyB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgYXBwbHlQcm9wcyB9IGZyb20gJy4vdXRpbHMvYXBwbHktcHJvcHMnO1xuaW1wb3J0IHsgaXMgfSBmcm9tICcuL3V0aWxzL2lzJztcbmltcG9ydCB7IG1ha2VDYW1lcmFJbnN0YW5jZSwgbWFrZURwciwgbWFrZVJlbmRlcmVySW5zdGFuY2UgfSBmcm9tICcuL3V0aWxzL21ha2UnO1xuaW1wb3J0IHR5cGUgeyBOZ3RTaWduYWxTdG9yZSB9IGZyb20gJy4vdXRpbHMvc2lnbmFsLXN0b3JlJztcbmltcG9ydCB7IGNoZWNrTmVlZHNVcGRhdGUgfSBmcm9tICcuL3V0aWxzL3VwZGF0ZSc7XG5cbmV4cG9ydCB0eXBlIE5ndENhbnZhc0VsZW1lbnQgPSBIVE1MQ2FudmFzRWxlbWVudCB8IE9mZnNjcmVlbkNhbnZhcztcblxuY29uc3Qgc2hhbGxvd0xvb3NlID0geyBvYmplY3RzOiAnc2hhbGxvdycsIHN0cmljdDogZmFsc2UgfSBhcyBOZ3RFcXVDb25maWc7XG5cbmV4cG9ydCBjb25zdCByb290cyA9IG5ldyBNYXA8Tmd0Q2FudmFzRWxlbWVudCwgTmd0U2lnbmFsU3RvcmU8Tmd0U3RhdGU+PigpO1xuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0Q2FudmFzUm9vdEluaXRpYWxpemVyKGluamVjdG9yPzogSW5qZWN0b3IpIHtcblx0cmV0dXJuIGFzc2VydEluamVjdG9yKGluamVjdENhbnZhc1Jvb3RJbml0aWFsaXplciwgaW5qZWN0b3IsICgpID0+IHtcblx0XHRjb25zdCBpbmplY3RlZFN0b3JlID0gaW5qZWN0Tmd0U3RvcmUoKTtcblx0XHRjb25zdCBsb29wID0gaW5qZWN0Tmd0TG9vcCgpO1xuXG5cdFx0cmV0dXJuIChjYW52YXM6IE5ndENhbnZhc0VsZW1lbnQpID0+IHtcblx0XHRcdGNvbnN0IGV4aXN0ID0gcm9vdHMuaGFzKGNhbnZhcyk7XG5cdFx0XHRsZXQgc3RvcmUgPSByb290cy5nZXQoY2FudmFzKSBhcyBOZ3RTaWduYWxTdG9yZTxOZ3RTdGF0ZT47XG5cblx0XHRcdGlmIChzdG9yZSkge1xuXHRcdFx0XHRjb25zb2xlLndhcm4oJ1tOR1RdIFNhbWUgY2FudmFzIHJvb3QgaXMgYmVpbmcgY3JlYXRlZCB0d2ljZScpO1xuXHRcdFx0fVxuXG5cdFx0XHRzdG9yZSB8fD0gaW5qZWN0ZWRTdG9yZTtcblxuXHRcdFx0aWYgKCFzdG9yZSkge1xuXHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ1tOR1RdIE5vIHN0b3JlIGluaXRpYWxpemVkJyk7XG5cdFx0XHR9XG5cblx0XHRcdGlmICghZXhpc3QpIHtcblx0XHRcdFx0cm9vdHMuc2V0KGNhbnZhcywgc3RvcmUpO1xuXHRcdFx0fVxuXG5cdFx0XHRsZXQgaXNDb25maWd1cmVkID0gZmFsc2U7XG5cdFx0XHRsZXQgbGFzdENhbWVyYTogTmd0Q2FudmFzSW5wdXRzWydjYW1lcmEnXTtcblxuXHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0aXNDb25maWd1cmVkLFxuXHRcdFx0XHRkZXN0cm95OiAodGltZW91dCA9IDUwMCkgPT4ge1xuXHRcdFx0XHRcdGNvbnN0IHJvb3QgPSByb290cy5nZXQoY2FudmFzKTtcblx0XHRcdFx0XHRpZiAocm9vdCkge1xuXHRcdFx0XHRcdFx0cm9vdC51cGRhdGUoKHN0YXRlKSA9PiAoeyBpbnRlcm5hbDogeyAuLi5zdGF0ZS5pbnRlcm5hbCwgYWN0aXZlOiBmYWxzZSB9IH0pKTtcblx0XHRcdFx0XHRcdHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IHN0YXRlID0gcm9vdC5nZXQoKTtcblx0XHRcdFx0XHRcdFx0XHRzdGF0ZS5ldmVudHMuZGlzY29ubmVjdD8uKCk7XG5cdFx0XHRcdFx0XHRcdFx0c3RhdGUuZ2w/LnJlbmRlckxpc3RzPy5kaXNwb3NlPy4oKTtcblx0XHRcdFx0XHRcdFx0XHRzdGF0ZS5nbD8uZm9yY2VDb250ZXh0TG9zcz8uKCk7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKHN0YXRlLmdsPy54cikgc3RhdGUueHIuZGlzY29ubmVjdCgpO1xuXHRcdFx0XHRcdFx0XHRcdGRpc3Bvc2Uoc3RhdGUpO1xuXHRcdFx0XHRcdFx0XHRcdHJvb3RzLmRlbGV0ZShjYW52YXMpO1xuXHRcdFx0XHRcdFx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5lcnJvcignW05HVF0gVW5leHBlY3RlZCBlcnJvciB3aGlsZSBkZXN0cm95aW5nIENhbnZhcyBSb290JywgZSk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH0sIHRpbWVvdXQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSxcblx0XHRcdFx0Y29uZmlndXJlOiAoaW5wdXRzOiBOZ3RDYW52YXNJbnB1dHMpID0+IHtcblx0XHRcdFx0XHRjb25zdCB7XG5cdFx0XHRcdFx0XHRzaGFkb3dzID0gZmFsc2UsXG5cdFx0XHRcdFx0XHRsaW5lYXIgPSBmYWxzZSxcblx0XHRcdFx0XHRcdGZsYXQgPSBmYWxzZSxcblx0XHRcdFx0XHRcdGxlZ2FjeSA9IGZhbHNlLFxuXHRcdFx0XHRcdFx0b3J0aG9ncmFwaGljID0gZmFsc2UsXG5cdFx0XHRcdFx0XHRmcmFtZWxvb3AgPSAnYWx3YXlzJyxcblx0XHRcdFx0XHRcdGRwciA9IFsxLCAyXSxcblx0XHRcdFx0XHRcdGdsOiBnbE9wdGlvbnMsXG5cdFx0XHRcdFx0XHRzaXplOiBzaXplT3B0aW9ucyxcblx0XHRcdFx0XHRcdGNhbWVyYTogY2FtZXJhT3B0aW9ucyxcblx0XHRcdFx0XHRcdHJheWNhc3RlcjogcmF5Y2FzdGVyT3B0aW9ucyxcblx0XHRcdFx0XHRcdHNjZW5lOiBzY2VuZU9wdGlvbnMsXG5cdFx0XHRcdFx0XHRldmVudHMsXG5cdFx0XHRcdFx0XHRsb29rQXQsXG5cdFx0XHRcdFx0XHRwZXJmb3JtYW5jZSxcblx0XHRcdFx0XHR9ID0gaW5wdXRzO1xuXG5cdFx0XHRcdFx0Y29uc3Qgc3RhdGUgPSBzdG9yZS5zbmFwc2hvdDtcblx0XHRcdFx0XHRjb25zdCBzdGF0ZVRvVXBkYXRlOiBQYXJ0aWFsPE5ndFN0YXRlPiA9IHt9O1xuXG5cdFx0XHRcdFx0Ly8gc2V0dXAgcmVuZGVyZXJcblx0XHRcdFx0XHRsZXQgZ2wgPSBzdGF0ZS5nbDtcblx0XHRcdFx0XHRpZiAoIXN0YXRlLmdsKSBzdGF0ZVRvVXBkYXRlLmdsID0gZ2wgPSBtYWtlUmVuZGVyZXJJbnN0YW5jZShnbE9wdGlvbnMsIGNhbnZhcyk7XG5cblx0XHRcdFx0XHQvLyBzZXR1cCByYXljYXN0ZXJcblx0XHRcdFx0XHRsZXQgcmF5Y2FzdGVyID0gc3RhdGUucmF5Y2FzdGVyO1xuXHRcdFx0XHRcdGlmICghcmF5Y2FzdGVyKSBzdGF0ZVRvVXBkYXRlLnJheWNhc3RlciA9IHJheWNhc3RlciA9IG5ldyBUSFJFRS5SYXljYXN0ZXIoKTtcblxuXHRcdFx0XHRcdC8vIHNldCByYXljYXN0ZXIgb3B0aW9uc1xuXHRcdFx0XHRcdGNvbnN0IHsgcGFyYW1zLCAuLi5vcHRpb25zIH0gPSByYXljYXN0ZXJPcHRpb25zIHx8IHt9O1xuXHRcdFx0XHRcdGlmICghaXMuZXF1KG9wdGlvbnMsIHJheWNhc3Rlciwgc2hhbGxvd0xvb3NlKSkgYXBwbHlQcm9wcyhyYXljYXN0ZXIsIG9wdGlvbnMpO1xuXHRcdFx0XHRcdGlmICghaXMuZXF1KHBhcmFtcywgcmF5Y2FzdGVyLnBhcmFtcywgc2hhbGxvd0xvb3NlKSkge1xuXHRcdFx0XHRcdFx0YXBwbHlQcm9wcyhyYXljYXN0ZXIsIHsgcGFyYW1zOiB7IC4uLnJheWNhc3Rlci5wYXJhbXMsIC4uLihwYXJhbXMgfHwge30pIH0gfSk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ly8gQ3JlYXRlIGRlZmF1bHQgY2FtZXJhLCBkb24ndCBvdmVyd3JpdGUgYW55IHVzZXItc2V0IHN0YXRlXG5cdFx0XHRcdFx0aWYgKCFzdGF0ZS5jYW1lcmEgfHwgKHN0YXRlLmNhbWVyYSA9PT0gbGFzdENhbWVyYSAmJiAhaXMuZXF1KGxhc3RDYW1lcmEsIGNhbWVyYU9wdGlvbnMsIHNoYWxsb3dMb29zZSkpKSB7XG5cdFx0XHRcdFx0XHRsYXN0Q2FtZXJhID0gY2FtZXJhT3B0aW9ucztcblx0XHRcdFx0XHRcdGNvbnN0IGlzQ2FtZXJhID0gaXMuY2FtZXJhKGNhbWVyYU9wdGlvbnMpO1xuXHRcdFx0XHRcdFx0bGV0IGNhbWVyYSA9IGlzQ2FtZXJhID8gY2FtZXJhT3B0aW9ucyA6IG1ha2VDYW1lcmFJbnN0YW5jZShvcnRob2dyYXBoaWMsIHN0YXRlLnNpemUpO1xuXG5cdFx0XHRcdFx0XHRpZiAoIWlzQ2FtZXJhKSB7XG5cdFx0XHRcdFx0XHRcdGNhbWVyYS5wb3NpdGlvbi56ID0gNTtcblx0XHRcdFx0XHRcdFx0aWYgKGNhbWVyYU9wdGlvbnMpIHtcblx0XHRcdFx0XHRcdFx0XHRhcHBseVByb3BzKGNhbWVyYSwgY2FtZXJhT3B0aW9ucyk7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdFx0XHRcdFx0J2FzcGVjdCcgaW4gY2FtZXJhT3B0aW9ucyB8fFxuXHRcdFx0XHRcdFx0XHRcdFx0J2xlZnQnIGluIGNhbWVyYU9wdGlvbnMgfHxcblx0XHRcdFx0XHRcdFx0XHRcdCdyaWdodCcgaW4gY2FtZXJhT3B0aW9ucyB8fFxuXHRcdFx0XHRcdFx0XHRcdFx0J3RvcCcgaW4gY2FtZXJhT3B0aW9ucyB8fFxuXHRcdFx0XHRcdFx0XHRcdFx0J2JvdHRvbScgaW4gY2FtZXJhT3B0aW9uc1xuXHRcdFx0XHRcdFx0XHRcdCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0T2JqZWN0LmFzc2lnbihjYW1lcmEsIHsgbWFudWFsOiB0cnVlIH0pO1xuXHRcdFx0XHRcdFx0XHRcdFx0Y2FtZXJhPy51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0Ly8gYWx3YXlzIGxvb2sgYXQgY2VudGVyIG9yIHBhc3NlZC1pbiBsb29rQXQgYnkgZGVmYXVsdFxuXHRcdFx0XHRcdFx0XHRpZiAoIXN0YXRlLmNhbWVyYSAmJiAhY2FtZXJhT3B0aW9ucz8ucm90YXRpb24gJiYgIWNhbWVyYU9wdGlvbnM/LnF1YXRlcm5pb24pIHtcblx0XHRcdFx0XHRcdFx0XHRpZiAoQXJyYXkuaXNBcnJheShsb29rQXQpKSBjYW1lcmEubG9va0F0KGxvb2tBdFswXSwgbG9va0F0WzFdLCBsb29rQXRbMl0pO1xuXHRcdFx0XHRcdFx0XHRcdGVsc2UgaWYgKGxvb2tBdCBpbnN0YW5jZW9mIFRIUkVFLlZlY3RvcjMpIGNhbWVyYS5sb29rQXQobG9va0F0KTtcblx0XHRcdFx0XHRcdFx0XHRlbHNlIGNhbWVyYS5sb29rQXQoMCwgMCwgMCk7XG5cdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHQvLyB1cGRhdGUgcHJvamVjdGlvbiBtYXRyaXggYWZ0ZXIgYXBwbHlwcm9wc1xuXHRcdFx0XHRcdFx0XHRjYW1lcmEudXBkYXRlUHJvamVjdGlvbk1hdHJpeD8uKCk7XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdGlmICghaXMuaW5zdGFuY2UoY2FtZXJhKSkgY2FtZXJhID0gcHJlcGFyZShjYW1lcmEsIHsgc3RvcmUgfSk7XG5cblx0XHRcdFx0XHRcdHN0YXRlVG9VcGRhdGUuY2FtZXJhID0gY2FtZXJhO1xuXG5cdFx0XHRcdFx0XHQvLyBDb25maWd1cmUgcmF5Y2FzdGVyXG5cdFx0XHRcdFx0XHQvLyBodHRwczovL2dpdGh1Yi5jb20vcG1uZHJzL3JlYWN0LXhyL2lzc3Vlcy8zMDBcblx0XHRcdFx0XHRcdHJheWNhc3Rlci5jYW1lcmEgPSBjYW1lcmE7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ly8gU2V0IHVwIHNjZW5lIChvbmUgdGltZSBvbmx5ISlcblx0XHRcdFx0XHRpZiAoIXN0YXRlLnNjZW5lKSB7XG5cdFx0XHRcdFx0XHRsZXQgc2NlbmU6IFRIUkVFLlNjZW5lO1xuXG5cdFx0XHRcdFx0XHRpZiAoc2NlbmVPcHRpb25zIGluc3RhbmNlb2YgVEhSRUUuU2NlbmUpIHtcblx0XHRcdFx0XHRcdFx0c2NlbmUgPSBzY2VuZU9wdGlvbnM7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRzY2VuZSA9IG5ldyBUSFJFRS5TY2VuZSgpO1xuXHRcdFx0XHRcdFx0XHRpZiAoc2NlbmVPcHRpb25zKSBhcHBseVByb3BzKHNjZW5lLCBzY2VuZU9wdGlvbnMpO1xuXHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRzdGF0ZVRvVXBkYXRlLnNjZW5lID0gcHJlcGFyZShzY2VuZSwgeyBzdG9yZSB9KTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHQvLyBTZXQgdXAgWFIgKG9uZSB0aW1lIG9ubHkhKVxuXHRcdFx0XHRcdGlmICghc3RhdGUueHIpIHtcblx0XHRcdFx0XHRcdC8vIEhhbmRsZSBmcmFtZSBiZWhhdmlvciBpbiBXZWJYUlxuXHRcdFx0XHRcdFx0Y29uc3QgaGFuZGxlWFJGcmFtZTogWFJGcmFtZVJlcXVlc3RDYWxsYmFjayA9ICh0aW1lc3RhbXA6IG51bWJlciwgZnJhbWU/OiBYUkZyYW1lKSA9PiB7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IHN0YXRlID0gc3RvcmUuc25hcHNob3Q7XG5cdFx0XHRcdFx0XHRcdGlmIChzdGF0ZS5mcmFtZWxvb3AgPT09ICduZXZlcicpIHJldHVybjtcblx0XHRcdFx0XHRcdFx0bG9vcC5hZHZhbmNlKHRpbWVzdGFtcCwgdHJ1ZSwgc3RvcmUsIGZyYW1lKTtcblx0XHRcdFx0XHRcdH07XG5cblx0XHRcdFx0XHRcdC8vIFRvZ2dsZSByZW5kZXIgc3dpdGNoaW5nIG9uIHNlc3Npb25cblx0XHRcdFx0XHRcdGNvbnN0IGhhbmRsZVNlc3Npb25DaGFuZ2UgPSAoKSA9PiB7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IHN0YXRlID0gc3RvcmUuc25hcHNob3Q7XG5cdFx0XHRcdFx0XHRcdHN0YXRlLmdsLnhyLmVuYWJsZWQgPSBzdGF0ZS5nbC54ci5pc1ByZXNlbnRpbmc7XG5cdFx0XHRcdFx0XHRcdHN0YXRlLmdsLnhyLnNldEFuaW1hdGlvbkxvb3Aoc3RhdGUuZ2wueHIuaXNQcmVzZW50aW5nID8gaGFuZGxlWFJGcmFtZSA6IG51bGwpO1xuXHRcdFx0XHRcdFx0XHRpZiAoIXN0YXRlLmdsLnhyLmlzUHJlc2VudGluZykgbG9vcC5pbnZhbGlkYXRlKHN0b3JlKTtcblx0XHRcdFx0XHRcdH07XG5cblx0XHRcdFx0XHRcdC8vIFdlYlhSIHNlc3Npb24gbWFuYWdlclxuXHRcdFx0XHRcdFx0Y29uc3QgeHIgPSB7XG5cdFx0XHRcdFx0XHRcdGNvbm5lY3Q6ICgpID0+IHtcblx0XHRcdFx0XHRcdFx0XHRnbC54ci5hZGRFdmVudExpc3RlbmVyKCdzZXNzaW9uc3RhcnQnLCBoYW5kbGVTZXNzaW9uQ2hhbmdlKTtcblx0XHRcdFx0XHRcdFx0XHRnbC54ci5hZGRFdmVudExpc3RlbmVyKCdzZXNzaW9uZW5kJywgaGFuZGxlU2Vzc2lvbkNoYW5nZSk7XG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdGRpc2Nvbm5lY3Q6ICgpID0+IHtcblx0XHRcdFx0XHRcdFx0XHRnbC54ci5yZW1vdmVFdmVudExpc3RlbmVyKCdzZXNzaW9uc3RhcnQnLCBoYW5kbGVTZXNzaW9uQ2hhbmdlKTtcblx0XHRcdFx0XHRcdFx0XHRnbC54ci5yZW1vdmVFdmVudExpc3RlbmVyKCdzZXNzaW9uZW5kJywgaGFuZGxlU2Vzc2lvbkNoYW5nZSk7XG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR9O1xuXG5cdFx0XHRcdFx0XHQvLyBTdWJzY3JpYmUgdG8gV2ViWFIgc2Vzc2lvbiBldmVudHNcblx0XHRcdFx0XHRcdGlmIChnbC54ciAmJiB0eXBlb2YgZ2wueHIuYWRkRXZlbnRMaXN0ZW5lciA9PT0gJ2Z1bmN0aW9uJykgeHIuY29ubmVjdCgpO1xuXHRcdFx0XHRcdFx0c3RhdGVUb1VwZGF0ZS54ciA9IHhyO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdC8vIFNldCBzaGFkb3dtYXBcblx0XHRcdFx0XHRpZiAoZ2wuc2hhZG93TWFwKSB7XG5cdFx0XHRcdFx0XHRjb25zdCBvbGRFbmFibGVkID0gZ2wuc2hhZG93TWFwLmVuYWJsZWQ7XG5cdFx0XHRcdFx0XHRjb25zdCBvbGRUeXBlID0gZ2wuc2hhZG93TWFwLnR5cGU7XG5cdFx0XHRcdFx0XHRnbC5zaGFkb3dNYXAuZW5hYmxlZCA9ICEhc2hhZG93cztcblxuXHRcdFx0XHRcdFx0aWYgKHR5cGVvZiBzaGFkb3dzID09PSAnYm9vbGVhbicpIHtcblx0XHRcdFx0XHRcdFx0Z2wuc2hhZG93TWFwLnR5cGUgPSBUSFJFRS5QQ0ZTb2Z0U2hhZG93TWFwO1xuXHRcdFx0XHRcdFx0fSBlbHNlIGlmICh0eXBlb2Ygc2hhZG93cyA9PT0gJ3N0cmluZycpIHtcblx0XHRcdFx0XHRcdFx0Y29uc3QgdHlwZXMgPSB7XG5cdFx0XHRcdFx0XHRcdFx0YmFzaWM6IFRIUkVFLkJhc2ljU2hhZG93TWFwLFxuXHRcdFx0XHRcdFx0XHRcdHBlcmNlbnRhZ2U6IFRIUkVFLlBDRlNoYWRvd01hcCxcblx0XHRcdFx0XHRcdFx0XHRzb2Z0OiBUSFJFRS5QQ0ZTb2Z0U2hhZG93TWFwLFxuXHRcdFx0XHRcdFx0XHRcdHZhcmlhbmNlOiBUSFJFRS5WU01TaGFkb3dNYXAsXG5cdFx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0XHRcdGdsLnNoYWRvd01hcC50eXBlID0gdHlwZXNbc2hhZG93c10gPz8gVEhSRUUuUENGU29mdFNoYWRvd01hcDtcblx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoaXMub2JqKHNoYWRvd3MpKSB7XG5cdFx0XHRcdFx0XHRcdE9iamVjdC5hc3NpZ24oZ2wuc2hhZG93TWFwLCBzaGFkb3dzKTtcblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0aWYgKG9sZEVuYWJsZWQgIT09IGdsLnNoYWRvd01hcC5lbmFibGVkIHx8IG9sZFR5cGUgIT09IGdsLnNoYWRvd01hcC50eXBlKSBjaGVja05lZWRzVXBkYXRlKGdsLnNoYWRvd01hcCk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ly8gU2FmZWx5IHNldCBjb2xvciBtYW5hZ2VtZW50IGlmIGF2YWlsYWJsZS5cblx0XHRcdFx0XHQvLyBBdm9pZCBhY2Nlc3NpbmcgVEhSRUUuQ29sb3JNYW5hZ2VtZW50IHRvIHBsYXkgbmljZSB3aXRoIG9sZGVyIHZlcnNpb25zXG5cdFx0XHRcdFx0aWYgKFRIUkVFLkNvbG9yTWFuYWdlbWVudCkge1xuXHRcdFx0XHRcdFx0Y29uc3QgQ29sb3JNYW5hZ2VtZW50ID0gVEhSRUUuQ29sb3JNYW5hZ2VtZW50IGFzIE5ndEFueVJlY29yZDtcblx0XHRcdFx0XHRcdGlmICgnZW5hYmxlZCcgaW4gQ29sb3JNYW5hZ2VtZW50KSBDb2xvck1hbmFnZW1lbnRbJ2VuYWJsZWQnXSA9ICFsZWdhY3kgfHwgZmFsc2U7XG5cdFx0XHRcdFx0XHRlbHNlIGlmICgnbGVnYWN5TW9kZScgaW4gQ29sb3JNYW5hZ2VtZW50KSBDb2xvck1hbmFnZW1lbnRbJ2xlZ2FjeU1vZGUnXSA9IGxlZ2FjeSB8fCB0cnVlO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGlmICghaXNDb25maWd1cmVkKSB7XG5cdFx0XHRcdFx0XHQvLyBzZXQgY29sb3Igc3BhY2UgYW5kIHRvbmVtYXBwaW5nIHByZWZlcmVuY2VzIG9uY2Vcblx0XHRcdFx0XHRcdGNvbnN0IExpbmVhckVuY29kaW5nID0gMzAwMDtcblx0XHRcdFx0XHRcdGNvbnN0IHNSR0JFbmNvZGluZyA9IDMwMDE7XG5cdFx0XHRcdFx0XHRhcHBseVByb3BzKGdsLCB7XG5cdFx0XHRcdFx0XHRcdG91dHB1dEVuY29kaW5nOiBsaW5lYXIgPyBMaW5lYXJFbmNvZGluZyA6IHNSR0JFbmNvZGluZyxcblx0XHRcdFx0XHRcdFx0dG9uZU1hcHBpbmc6IGZsYXQgPyBUSFJFRS5Ob1RvbmVNYXBwaW5nIDogVEhSRUUuQUNFU0ZpbG1pY1RvbmVNYXBwaW5nLFxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ly8gVXBkYXRlIGNvbG9yIG1hbmFnZW1lbnQgc3RhdGVcblx0XHRcdFx0XHRpZiAoc3RhdGUubGVnYWN5ICE9PSBsZWdhY3kpIHN0YXRlVG9VcGRhdGUubGVnYWN5ID0gbGVnYWN5O1xuXHRcdFx0XHRcdGlmIChzdGF0ZS5saW5lYXIgIT09IGxpbmVhcikgc3RhdGVUb1VwZGF0ZS5saW5lYXIgPSBsaW5lYXI7XG5cdFx0XHRcdFx0aWYgKHN0YXRlLmZsYXQgIT09IGZsYXQpIHN0YXRlVG9VcGRhdGUuZmxhdCA9IGZsYXQ7XG5cblx0XHRcdFx0XHQvLyBTZXQgZ2wgcHJvcHNcblx0XHRcdFx0XHRnbC5zZXRDbGVhckFscGhhKDApO1xuXHRcdFx0XHRcdGdsLnNldFBpeGVsUmF0aW8obWFrZURwcihzdGF0ZS52aWV3cG9ydC5kcHIpKTtcblx0XHRcdFx0XHRnbC5zZXRTaXplKHN0YXRlLnNpemUud2lkdGgsIHN0YXRlLnNpemUuaGVpZ2h0KTtcblxuXHRcdFx0XHRcdGlmIChcblx0XHRcdFx0XHRcdGlzLm9iaihnbE9wdGlvbnMpICYmXG5cdFx0XHRcdFx0XHQhKHR5cGVvZiBnbE9wdGlvbnMgPT09ICdmdW5jdGlvbicpICYmXG5cdFx0XHRcdFx0XHQhaXMucmVuZGVyZXIoZ2xPcHRpb25zKSAmJlxuXHRcdFx0XHRcdFx0IWlzLmVxdShnbE9wdGlvbnMsIGdsLCBzaGFsbG93TG9vc2UpXG5cdFx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0XHRhcHBseVByb3BzKGdsLCBnbE9wdGlvbnMpO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdC8vIFN0b3JlIGV2ZW50cyBpbnRlcm5hbGx5XG5cdFx0XHRcdFx0aWYgKGV2ZW50cyAmJiAhc3RhdGUuZXZlbnRzLmhhbmRsZXJzKSBzdGF0ZVRvVXBkYXRlLmV2ZW50cyA9IGV2ZW50cyhzdG9yZSk7XG5cblx0XHRcdFx0XHQvLyBDaGVjayBwZXJmb3JtYW5jZVxuXHRcdFx0XHRcdGlmIChwZXJmb3JtYW5jZSAmJiAhaXMuZXF1KHBlcmZvcm1hbmNlLCBzdGF0ZS5wZXJmb3JtYW5jZSwgc2hhbGxvd0xvb3NlKSkge1xuXHRcdFx0XHRcdFx0c3RhdGVUb1VwZGF0ZS5wZXJmb3JtYW5jZSA9IHsgLi4uc3RhdGUucGVyZm9ybWFuY2UsIC4uLnBlcmZvcm1hbmNlIH07XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0c3RvcmUudXBkYXRlKHN0YXRlVG9VcGRhdGUpO1xuXG5cdFx0XHRcdFx0Ly8gQ2hlY2sgc2l6ZSwgYWxsb3cgaXQgdG8gdGFrZSBvbiBjb250YWluZXIgYm91bmRzIGluaXRpYWxseVxuXHRcdFx0XHRcdGNvbnN0IHNpemUgPSBjb21wdXRlSW5pdGlhbFNpemUoY2FudmFzLCBzaXplT3B0aW9ucyk7XG5cdFx0XHRcdFx0aWYgKCFpcy5lcXUoc2l6ZSwgc3RhdGUuc2l6ZSwgc2hhbGxvd0xvb3NlKSkge1xuXHRcdFx0XHRcdFx0c3RhdGUuc2V0U2l6ZShzaXplLndpZHRoLCBzaXplLmhlaWdodCwgc2l6ZS50b3AsIHNpemUubGVmdCk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ly8gQ2hlY2sgcGl4ZWxyYXRpb1xuXHRcdFx0XHRcdGlmIChkcHIgJiYgc3RhdGUudmlld3BvcnQuZHByICE9PSBtYWtlRHByKGRwcikpIHN0YXRlLnNldERwcihkcHIpO1xuXHRcdFx0XHRcdC8vIENoZWNrIGZyYW1lbG9vcFxuXHRcdFx0XHRcdGlmIChzdGF0ZS5mcmFtZWxvb3AgIT09IGZyYW1lbG9vcCkgc3RhdGUuc2V0RnJhbWVsb29wKGZyYW1lbG9vcCk7XG5cblx0XHRcdFx0XHRpc0NvbmZpZ3VyZWQgPSB0cnVlO1xuXHRcdFx0XHR9LFxuXHRcdFx0fTtcblx0XHR9O1xuXHR9KTtcbn1cblxuZXhwb3J0IHR5cGUgTmd0Q2FudmFzQ29uZmlndXJhdG9yID0gUmV0dXJuVHlwZTxSZXR1cm5UeXBlPHR5cGVvZiBpbmplY3RDYW52YXNSb290SW5pdGlhbGl6ZXI+PjtcblxuZnVuY3Rpb24gY29tcHV0ZUluaXRpYWxTaXplKGNhbnZhczogTmd0Q2FudmFzRWxlbWVudCwgZGVmYXVsdFNpemU/OiBOZ3RTaXplKTogTmd0U2l6ZSB7XG5cdGlmIChkZWZhdWx0U2l6ZSkge1xuXHRcdHJldHVybiBkZWZhdWx0U2l6ZTtcblx0fVxuXG5cdGlmICh0eXBlb2YgSFRNTENhbnZhc0VsZW1lbnQgIT09ICd1bmRlZmluZWQnICYmIGNhbnZhcyBpbnN0YW5jZW9mIEhUTUxDYW52YXNFbGVtZW50ICYmIGNhbnZhcy5wYXJlbnRFbGVtZW50KSB7XG5cdFx0cmV0dXJuIGNhbnZhcy5wYXJlbnRFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXHR9XG5cblx0aWYgKHR5cGVvZiBPZmZzY3JlZW5DYW52YXMgIT09ICd1bmRlZmluZWQnICYmIGNhbnZhcyBpbnN0YW5jZW9mIE9mZnNjcmVlbkNhbnZhcykge1xuXHRcdHJldHVybiB7IHdpZHRoOiBjYW52YXMud2lkdGgsIGhlaWdodDogY2FudmFzLmhlaWdodCwgdG9wOiAwLCBsZWZ0OiAwIH07XG5cdH1cblxuXHRyZXR1cm4geyB3aWR0aDogMCwgaGVpZ2h0OiAwLCB0b3A6IDAsIGxlZnQ6IDAgfTtcbn1cblxuLy8gRGlzcG9zZXMgYW4gb2JqZWN0IGFuZCBhbGwgaXRzIHByb3BlcnRpZXNcbmZ1bmN0aW9uIGRpc3Bvc2U8VE9iaiBleHRlbmRzIHsgZGlzcG9zZT86ICgpID0+IHZvaWQ7IHR5cGU/OiBzdHJpbmc7IFtrZXk6IHN0cmluZ106IGFueSB9PihvYmo6IFRPYmopIHtcblx0aWYgKG9iai5kaXNwb3NlICYmIG9iai50eXBlICE9PSAnU2NlbmUnKSBvYmouZGlzcG9zZSgpO1xuXHRmb3IgKGNvbnN0IHAgaW4gb2JqKSB7XG5cdFx0KHAgYXMgYW55KS5kaXNwb3NlPy4oKTtcblx0XHRkZWxldGUgb2JqW3BdO1xuXHR9XG59XG4iXX0=
260
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9vdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9yb290cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDNUQsT0FBTyxFQUNOLHFCQUFxQixFQUNyQixjQUFjLEVBQ2QsZUFBZSxFQUNmLGFBQWEsRUFDYixZQUFZLEVBQ1osZ0JBQWdCLEVBQ2hCLFNBQVMsRUFDVCxLQUFLLEVBQ0wsWUFBWSxFQUNaLE9BQU8sR0FDUCxNQUFNLE9BQU8sQ0FBQztBQUVmLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDckMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUN2QyxPQUFPLEVBQXFCLGNBQWMsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUU1RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNoQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRWpGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSWxELE1BQU0sWUFBWSxHQUFHLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFrQixDQUFDO0FBRTNFLE1BQU0sQ0FBQyxNQUFNLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBOEMsQ0FBQztBQUUzRSxNQUFNLFVBQVUsMkJBQTJCLENBQUMsUUFBbUI7SUFDOUQsT0FBTyxjQUFjLENBQUMsMkJBQTJCLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRTtRQUNqRSxNQUFNLGFBQWEsR0FBRyxjQUFjLEVBQUUsQ0FBQztRQUN2QyxNQUFNLElBQUksR0FBRyxhQUFhLEVBQUUs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QUVELE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUM7QUFDakQsQ0FBQztBQUVELDRDQUE0QztBQUM1QyxTQUFTLE9BQU8sQ0FBMkUsR0FBUztJQUNuRyxJQUFJLEdBQUcsQ0FBQyxPQUFPLElBQUksR0FBRyxDQUFDLElBQUksS0FBSyxPQUFPO1FBQUUsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3ZELEtBQUssTUFBTSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUM7UUFDcEIsQ0FBUyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7UUFDdkIsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDZixDQUFDO0FBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBhc3NlcnRJbmplY3RvciB9IGZyb20gJ25neHRlbnNpb24vYXNzZXJ0LWluamVjdG9yJztcbmltcG9ydCB7XG5cdEFDRVNGaWxtaWNUb25lTWFwcGluZyxcblx0QmFzaWNTaGFkb3dNYXAsXG5cdENvbG9yTWFuYWdlbWVudCxcblx0Tm9Ub25lTWFwcGluZyxcblx0UENGU2hhZG93TWFwLFxuXHRQQ0ZTb2Z0U2hhZG93TWFwLFxuXHRSYXljYXN0ZXIsXG5cdFNjZW5lLFxuXHRWU01TaGFkb3dNYXAsXG5cdFZlY3RvcjMsXG59IGZyb20gJ3RocmVlJztcbmltcG9ydCB7IE5ndENhbnZhc0lucHV0cyB9IGZyb20gJy4vY2FudmFzJztcbmltcG9ydCB7IHByZXBhcmUgfSBmcm9tICcuL2luc3RhbmNlJztcbmltcG9ydCB7IGluamVjdE5ndExvb3AgfSBmcm9tICcuL2xvb3AnO1xuaW1wb3J0IHsgTmd0U2l6ZSwgTmd0U3RhdGUsIGluamVjdE5ndFN0b3JlIH0gZnJvbSAnLi9zdG9yZSc7XG5pbXBvcnQgeyBOZ3RBbnlSZWNvcmQsIE5ndEVxdUNvbmZpZyB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgYXBwbHlQcm9wcyB9IGZyb20gJy4vdXRpbHMvYXBwbHktcHJvcHMnO1xuaW1wb3J0IHsgaXMgfSBmcm9tICcuL3V0aWxzL2lzJztcbmltcG9ydCB7IG1ha2VDYW1lcmFJbnN0YW5jZSwgbWFrZURwciwgbWFrZVJlbmRlcmVySW5zdGFuY2UgfSBmcm9tICcuL3V0aWxzL21ha2UnO1xuaW1wb3J0IHsgTmd0U2lnbmFsU3RvcmUgfSBmcm9tICcuL3V0aWxzL3NpZ25hbC1zdG9yZSc7XG5pbXBvcnQgeyBjaGVja05lZWRzVXBkYXRlIH0gZnJvbSAnLi91dGlscy91cGRhdGUnO1xuXG5leHBvcnQgdHlwZSBOZ3RDYW52YXNFbGVtZW50ID0gSFRNTENhbnZhc0VsZW1lbnQgfCBPZmZzY3JlZW5DYW52YXM7XG5cbmNvbnN0IHNoYWxsb3dMb29zZSA9IHsgb2JqZWN0czogJ3NoYWxsb3cnLCBzdHJpY3Q6IGZhbHNlIH0gYXMgTmd0RXF1Q29uZmlnO1xuXG5leHBvcnQgY29uc3Qgcm9vdHMgPSBuZXcgTWFwPE5ndENhbnZhc0VsZW1lbnQsIE5ndFNpZ25hbFN0b3JlPE5ndFN0YXRlPj4oKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdENhbnZhc1Jvb3RJbml0aWFsaXplcihpbmplY3Rvcj86IEluamVjdG9yKSB7XG5cdHJldHVybiBhc3NlcnRJbmplY3RvcihpbmplY3RDYW52YXNSb290SW5pdGlhbGl6ZXIsIGluamVjdG9yLCAoKSA9PiB7XG5cdFx0Y29uc3QgaW5qZWN0ZWRTdG9yZSA9IGluamVjdE5ndFN0b3JlKCk7XG5cdFx0Y29uc3QgbG9vcCA9IGluamVjdE5ndExvb3AoKTtcblxuXHRcdHJldHVybiAoY2FudmFzOiBOZ3RDYW52YXNFbGVtZW50KSA9PiB7XG5cdFx0XHRjb25zdCBleGlzdCA9IHJvb3RzLmhhcyhjYW52YXMpO1xuXHRcdFx0bGV0IHN0b3JlID0gcm9vdHMuZ2V0KGNhbnZhcykgYXMgTmd0U2lnbmFsU3RvcmU8Tmd0U3RhdGU+O1xuXG5cdFx0XHRpZiAoc3RvcmUpIHtcblx0XHRcdFx0Y29uc29sZS53YXJuKCdbTkdUXSBTYW1lIGNhbnZhcyByb290IGlzIGJlaW5nIGNyZWF0ZWQgdHdpY2UnKTtcblx0XHRcdH1cblxuXHRcdFx0c3RvcmUgfHw9IGluamVjdGVkU3RvcmU7XG5cblx0XHRcdGlmICghc3RvcmUpIHtcblx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKCdbTkdUXSBObyBzdG9yZSBpbml0aWFsaXplZCcpO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIWV4aXN0KSB7XG5cdFx0XHRcdHJvb3RzLnNldChjYW52YXMsIHN0b3JlKTtcblx0XHRcdH1cblxuXHRcdFx0bGV0IGlzQ29uZmlndXJlZCA9IGZhbHNlO1xuXHRcdFx0bGV0IGxhc3RDYW1lcmE6IE5ndENhbnZhc0lucHV0c1snY2FtZXJhJ107XG5cblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdGlzQ29uZmlndXJlZCxcblx0XHRcdFx0ZGVzdHJveTogKHRpbWVvdXQgPSA1MDApID0+IHtcblx0XHRcdFx0XHRjb25zdCByb290ID0gcm9vdHMuZ2V0KGNhbnZhcyk7XG5cdFx0XHRcdFx0aWYgKHJvb3QpIHtcblx0XHRcdFx0XHRcdHJvb3QudXBkYXRlKChzdGF0ZSkgPT4gKHsgaW50ZXJuYWw6IHsgLi4uc3RhdGUuaW50ZXJuYWwsIGFjdGl2ZTogZmFsc2UgfSB9KSk7XG5cdFx0XHRcdFx0XHRzZXRUaW1lb3V0KCgpID0+IHtcblx0XHRcdFx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRcdFx0XHRjb25zdCBzdGF0ZSA9IHJvb3QuZ2V0KCk7XG5cdFx0XHRcdFx0XHRcdFx0c3RhdGUuZXZlbnRzLmRpc2Nvbm5lY3Q/LigpO1xuXHRcdFx0XHRcdFx0XHRcdHN0YXRlLmdsPy5yZW5kZXJMaXN0cz8uZGlzcG9zZT8uKCk7XG5cdFx0XHRcdFx0XHRcdFx0c3RhdGUuZ2w/LmZvcmNlQ29udGV4dExvc3M/LigpO1xuXHRcdFx0XHRcdFx0XHRcdGlmIChzdGF0ZS5nbD8ueHIpIHN0YXRlLnhyLmRpc2Nvbm5lY3QoKTtcblx0XHRcdFx0XHRcdFx0XHRkaXNwb3NlKHN0YXRlKTtcblx0XHRcdFx0XHRcdFx0XHRyb290cy5kZWxldGUoY2FudmFzKTtcblx0XHRcdFx0XHRcdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0XHRcdFx0XHRcdGNvbnNvbGUuZXJyb3IoJ1tOR1RdIFVuZXhwZWN0ZWQgZXJyb3Igd2hpbGUgZGVzdHJveWluZyBDYW52YXMgUm9vdCcsIGUpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9LCB0aW1lb3V0KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0sXG5cdFx0XHRcdGNvbmZpZ3VyZTogKGlucHV0czogTmd0Q2FudmFzSW5wdXRzKSA9PiB7XG5cdFx0XHRcdFx0Y29uc3Qge1xuXHRcdFx0XHRcdFx0c2hhZG93cyA9IGZhbHNlLFxuXHRcdFx0XHRcdFx0bGluZWFyID0gZmFsc2UsXG5cdFx0XHRcdFx0XHRmbGF0ID0gZmFsc2UsXG5cdFx0XHRcdFx0XHRsZWdhY3kgPSBmYWxzZSxcblx0XHRcdFx0XHRcdG9ydGhvZ3JhcGhpYyA9IGZhbHNlLFxuXHRcdFx0XHRcdFx0ZnJhbWVsb29wID0gJ2Fsd2F5cycsXG5cdFx0XHRcdFx0XHRkcHIgPSBbMSwgMl0sXG5cdFx0XHRcdFx0XHRnbDogZ2xPcHRpb25zLFxuXHRcdFx0XHRcdFx0c2l6ZTogc2l6ZU9wdGlvbnMsXG5cdFx0XHRcdFx0XHRjYW1lcmE6IGNhbWVyYU9wdGlvbnMsXG5cdFx0XHRcdFx0XHRyYXljYXN0ZXI6IHJheWNhc3Rlck9wdGlvbnMsXG5cdFx0XHRcdFx0XHRzY2VuZTogc2NlbmVPcHRpb25zLFxuXHRcdFx0XHRcdFx0ZXZlbnRzLFxuXHRcdFx0XHRcdFx0bG9va0F0LFxuXHRcdFx0XHRcdFx0cGVyZm9ybWFuY2UsXG5cdFx0XHRcdFx0fSA9IGlucHV0cztcblxuXHRcdFx0XHRcdGNvbnN0IHN0YXRlID0gc3RvcmUuc25hcHNob3Q7XG5cdFx0XHRcdFx0Y29uc3Qgc3RhdGVUb1VwZGF0ZTogUGFydGlhbDxOZ3RTdGF0ZT4gPSB7fTtcblxuXHRcdFx0XHRcdC8vIHNldHVwIHJlbmRlcmVyXG5cdFx0XHRcdFx0bGV0IGdsID0gc3RhdGUuZ2w7XG5cdFx0XHRcdFx0aWYgKCFzdGF0ZS5nbCkgc3RhdGVUb1VwZGF0ZS5nbCA9IGdsID0gbWFrZVJlbmRlcmVySW5zdGFuY2UoZ2xPcHRpb25zLCBjYW52YXMpO1xuXG5cdFx0XHRcdFx0Ly8gc2V0dXAgcmF5Y2FzdGVyXG5cdFx0XHRcdFx0bGV0IHJheWNhc3RlciA9IHN0YXRlLnJheWNhc3Rlcjtcblx0XHRcdFx0XHRpZiAoIXJheWNhc3Rlcikgc3RhdGVUb1VwZGF0ZS5yYXljYXN0ZXIgPSByYXljYXN0ZXIgPSBuZXcgUmF5Y2FzdGVyKCk7XG5cblx0XHRcdFx0XHQvLyBzZXQgcmF5Y2FzdGVyIG9wdGlvbnNcblx0XHRcdFx0XHRjb25zdCB7IHBhcmFtcywgLi4ub3B0aW9ucyB9ID0gcmF5Y2FzdGVyT3B0aW9ucyB8fCB7fTtcblx0XHRcdFx0XHRpZiAoIWlzLmVxdShvcHRpb25zLCByYXljYXN0ZXIsIHNoYWxsb3dMb29zZSkpIGFwcGx5UHJvcHMocmF5Y2FzdGVyLCBvcHRpb25zKTtcblx0XHRcdFx0XHRpZiAoIWlzLmVxdShwYXJhbXMsIHJheWNhc3Rlci5wYXJhbXMsIHNoYWxsb3dMb29zZSkpIHtcblx0XHRcdFx0XHRcdGFwcGx5UHJvcHMocmF5Y2FzdGVyLCB7IHBhcmFtczogeyAuLi5yYXljYXN0ZXIucGFyYW1zLCAuLi4ocGFyYW1zIHx8IHt9KSB9IH0pO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdC8vIENyZWF0ZSBkZWZhdWx0IGNhbWVyYSwgZG9uJ3Qgb3ZlcndyaXRlIGFueSB1c2VyLXNldCBzdGF0ZVxuXHRcdFx0XHRcdGlmICghc3RhdGUuY2FtZXJhIHx8IChzdGF0ZS5jYW1lcmEgPT09IGxhc3RDYW1lcmEgJiYgIWlzLmVxdShsYXN0Q2FtZXJhLCBjYW1lcmFPcHRpb25zLCBzaGFsbG93TG9vc2UpKSkge1xuXHRcdFx0XHRcdFx0bGFzdENhbWVyYSA9IGNhbWVyYU9wdGlvbnM7XG5cdFx0XHRcdFx0XHRjb25zdCBpc0NhbWVyYSA9IGlzLmNhbWVyYShjYW1lcmFPcHRpb25zKTtcblx0XHRcdFx0XHRcdGxldCBjYW1lcmEgPSBpc0NhbWVyYSA/IGNhbWVyYU9wdGlvbnMgOiBtYWtlQ2FtZXJhSW5zdGFuY2Uob3J0aG9ncmFwaGljLCBzdGF0ZS5zaXplKTtcblxuXHRcdFx0XHRcdFx0aWYgKCFpc0NhbWVyYSkge1xuXHRcdFx0XHRcdFx0XHRjYW1lcmEucG9zaXRpb24ueiA9IDU7XG5cdFx0XHRcdFx0XHRcdGlmIChjYW1lcmFPcHRpb25zKSB7XG5cdFx0XHRcdFx0XHRcdFx0YXBwbHlQcm9wcyhjYW1lcmEsIGNhbWVyYU9wdGlvbnMpO1xuXHRcdFx0XHRcdFx0XHRcdGlmIChcblx0XHRcdFx0XHRcdFx0XHRcdCdhc3BlY3QnIGluIGNhbWVyYU9wdGlvbnMgfHxcblx0XHRcdFx0XHRcdFx0XHRcdCdsZWZ0JyBpbiBjYW1lcmFPcHRpb25zIHx8XG5cdFx0XHRcdFx0XHRcdFx0XHQncmlnaHQnIGluIGNhbWVyYU9wdGlvbnMgfHxcblx0XHRcdFx0XHRcdFx0XHRcdCd0b3AnIGluIGNhbWVyYU9wdGlvbnMgfHxcblx0XHRcdFx0XHRcdFx0XHRcdCdib3R0b20nIGluIGNhbWVyYU9wdGlvbnNcblx0XHRcdFx0XHRcdFx0XHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdE9iamVjdC5hc3NpZ24oY2FtZXJhLCB7IG1hbnVhbDogdHJ1ZSB9KTtcblx0XHRcdFx0XHRcdFx0XHRcdGNhbWVyYT8udXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdC8vIGFsd2F5cyBsb29rIGF0IGNlbnRlciBvciBwYXNzZWQtaW4gbG9va0F0IGJ5IGRlZmF1bHRcblx0XHRcdFx0XHRcdFx0aWYgKCFzdGF0ZS5jYW1lcmEgJiYgIWNhbWVyYU9wdGlvbnM/LnJvdGF0aW9uICYmICFjYW1lcmFPcHRpb25zPy5xdWF0ZXJuaW9uKSB7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKEFycmF5LmlzQXJyYXkobG9va0F0KSkgY2FtZXJhLmxvb2tBdChsb29rQXRbMF0sIGxvb2tBdFsxXSwgbG9va0F0WzJdKTtcblx0XHRcdFx0XHRcdFx0XHRlbHNlIGlmIChsb29rQXQgaW5zdGFuY2VvZiBWZWN0b3IzKSBjYW1lcmEubG9va0F0KGxvb2tBdCk7XG5cdFx0XHRcdFx0XHRcdFx0ZWxzZSBjYW1lcmEubG9va0F0KDAsIDAsIDApO1xuXHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0Ly8gdXBkYXRlIHByb2plY3Rpb24gbWF0cml4IGFmdGVyIGFwcGx5cHJvcHNcblx0XHRcdFx0XHRcdFx0Y2FtZXJhLnVwZGF0ZVByb2plY3Rpb25NYXRyaXg/LigpO1xuXHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRpZiAoIWlzLmluc3RhbmNlKGNhbWVyYSkpIGNhbWVyYSA9IHByZXBhcmUoY2FtZXJhLCB7IHN0b3JlIH0pO1xuXG5cdFx0XHRcdFx0XHRzdGF0ZVRvVXBkYXRlLmNhbWVyYSA9IGNhbWVyYTtcblxuXHRcdFx0XHRcdFx0Ly8gQ29uZmlndXJlIHJheWNhc3RlclxuXHRcdFx0XHRcdFx0Ly8gaHR0cHM6Ly9naXRodWIuY29tL3BtbmRycy9yZWFjdC14ci9pc3N1ZXMvMzAwXG5cdFx0XHRcdFx0XHRyYXljYXN0ZXIuY2FtZXJhID0gY2FtZXJhO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdC8vIFNldCB1cCBzY2VuZSAob25lIHRpbWUgb25seSEpXG5cdFx0XHRcdFx0aWYgKCFzdGF0ZS5zY2VuZSkge1xuXHRcdFx0XHRcdFx0bGV0IHNjZW5lOiBTY2VuZTtcblxuXHRcdFx0XHRcdFx0aWYgKHNjZW5lT3B0aW9ucyBpbnN0YW5jZW9mIFNjZW5lKSB7XG5cdFx0XHRcdFx0XHRcdHNjZW5lID0gc2NlbmVPcHRpb25zO1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0c2NlbmUgPSBuZXcgU2NlbmUoKTtcblx0XHRcdFx0XHRcdFx0aWYgKHNjZW5lT3B0aW9ucykgYXBwbHlQcm9wcyhzY2VuZSwgc2NlbmVPcHRpb25zKTtcblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0c3RhdGVUb1VwZGF0ZS5zY2VuZSA9IHByZXBhcmUoc2NlbmUsIHsgc3RvcmUgfSk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ly8gU2V0IHVwIFhSIChvbmUgdGltZSBvbmx5ISlcblx0XHRcdFx0XHRpZiAoIXN0YXRlLnhyKSB7XG5cdFx0XHRcdFx0XHQvLyBIYW5kbGUgZnJhbWUgYmVoYXZpb3IgaW4gV2ViWFJcblx0XHRcdFx0XHRcdGNvbnN0IGhhbmRsZVhSRnJhbWU6IFhSRnJhbWVSZXF1ZXN0Q2FsbGJhY2sgPSAodGltZXN0YW1wOiBudW1iZXIsIGZyYW1lPzogWFJGcmFtZSkgPT4ge1xuXHRcdFx0XHRcdFx0XHRjb25zdCBzdGF0ZSA9IHN0b3JlLnNuYXBzaG90O1xuXHRcdFx0XHRcdFx0XHRpZiAoc3RhdGUuZnJhbWVsb29wID09PSAnbmV2ZXInKSByZXR1cm47XG5cdFx0XHRcdFx0XHRcdGxvb3AuYWR2YW5jZSh0aW1lc3RhbXAsIHRydWUsIHN0b3JlLCBmcmFtZSk7XG5cdFx0XHRcdFx0XHR9O1xuXG5cdFx0XHRcdFx0XHQvLyBUb2dnbGUgcmVuZGVyIHN3aXRjaGluZyBvbiBzZXNzaW9uXG5cdFx0XHRcdFx0XHRjb25zdCBoYW5kbGVTZXNzaW9uQ2hhbmdlID0gKCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRjb25zdCBzdGF0ZSA9IHN0b3JlLnNuYXBzaG90O1xuXHRcdFx0XHRcdFx0XHRzdGF0ZS5nbC54ci5lbmFibGVkID0gc3RhdGUuZ2wueHIuaXNQcmVzZW50aW5nO1xuXHRcdFx0XHRcdFx0XHRzdGF0ZS5nbC54ci5zZXRBbmltYXRpb25Mb29wKHN0YXRlLmdsLnhyLmlzUHJlc2VudGluZyA/IGhhbmRsZVhSRnJhbWUgOiBudWxsKTtcblx0XHRcdFx0XHRcdFx0aWYgKCFzdGF0ZS5nbC54ci5pc1ByZXNlbnRpbmcpIGxvb3AuaW52YWxpZGF0ZShzdG9yZSk7XG5cdFx0XHRcdFx0XHR9O1xuXG5cdFx0XHRcdFx0XHQvLyBXZWJYUiBzZXNzaW9uIG1hbmFnZXJcblx0XHRcdFx0XHRcdGNvbnN0IHhyID0ge1xuXHRcdFx0XHRcdFx0XHRjb25uZWN0OiAoKSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0Z2wueHIuYWRkRXZlbnRMaXN0ZW5lcignc2Vzc2lvbnN0YXJ0JywgaGFuZGxlU2Vzc2lvbkNoYW5nZSk7XG5cdFx0XHRcdFx0XHRcdFx0Z2wueHIuYWRkRXZlbnRMaXN0ZW5lcignc2Vzc2lvbmVuZCcsIGhhbmRsZVNlc3Npb25DaGFuZ2UpO1xuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRkaXNjb25uZWN0OiAoKSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0Z2wueHIucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Vzc2lvbnN0YXJ0JywgaGFuZGxlU2Vzc2lvbkNoYW5nZSk7XG5cdFx0XHRcdFx0XHRcdFx0Z2wueHIucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Vzc2lvbmVuZCcsIGhhbmRsZVNlc3Npb25DaGFuZ2UpO1xuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0fTtcblxuXHRcdFx0XHRcdFx0Ly8gU3Vic2NyaWJlIHRvIFdlYlhSIHNlc3Npb24gZXZlbnRzXG5cdFx0XHRcdFx0XHRpZiAoZ2wueHIgJiYgdHlwZW9mIGdsLnhyLmFkZEV2ZW50TGlzdGVuZXIgPT09ICdmdW5jdGlvbicpIHhyLmNvbm5lY3QoKTtcblx0XHRcdFx0XHRcdHN0YXRlVG9VcGRhdGUueHIgPSB4cjtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHQvLyBTZXQgc2hhZG93bWFwXG5cdFx0XHRcdFx0aWYgKGdsLnNoYWRvd01hcCkge1xuXHRcdFx0XHRcdFx0Y29uc3Qgb2xkRW5hYmxlZCA9IGdsLnNoYWRvd01hcC5lbmFibGVkO1xuXHRcdFx0XHRcdFx0Y29uc3Qgb2xkVHlwZSA9IGdsLnNoYWRvd01hcC50eXBlO1xuXHRcdFx0XHRcdFx0Z2wuc2hhZG93TWFwLmVuYWJsZWQgPSAhIXNoYWRvd3M7XG5cblx0XHRcdFx0XHRcdGlmICh0eXBlb2Ygc2hhZG93cyA9PT0gJ2Jvb2xlYW4nKSB7XG5cdFx0XHRcdFx0XHRcdGdsLnNoYWRvd01hcC50eXBlID0gUENGU29mdFNoYWRvd01hcDtcblx0XHRcdFx0XHRcdH0gZWxzZSBpZiAodHlwZW9mIHNoYWRvd3MgPT09ICdzdHJpbmcnKSB7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IHR5cGVzID0ge1xuXHRcdFx0XHRcdFx0XHRcdGJhc2ljOiBCYXNpY1NoYWRvd01hcCxcblx0XHRcdFx0XHRcdFx0XHRwZXJjZW50YWdlOiBQQ0ZTaGFkb3dNYXAsXG5cdFx0XHRcdFx0XHRcdFx0c29mdDogUENGU29mdFNoYWRvd01hcCxcblx0XHRcdFx0XHRcdFx0XHR2YXJpYW5jZTogVlNNU2hhZG93TWFwLFxuXHRcdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0XHRnbC5zaGFkb3dNYXAudHlwZSA9IHR5cGVzW3NoYWRvd3NdID8/IFBDRlNvZnRTaGFkb3dNYXA7XG5cdFx0XHRcdFx0XHR9IGVsc2UgaWYgKGlzLm9iaihzaGFkb3dzKSkge1xuXHRcdFx0XHRcdFx0XHRPYmplY3QuYXNzaWduKGdsLnNoYWRvd01hcCwgc2hhZG93cyk7XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdGlmIChvbGRFbmFibGVkICE9PSBnbC5zaGFkb3dNYXAuZW5hYmxlZCB8fCBvbGRUeXBlICE9PSBnbC5zaGFkb3dNYXAudHlwZSkgY2hlY2tOZWVkc1VwZGF0ZShnbC5zaGFkb3dNYXApO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdC8vIFNhZmVseSBzZXQgY29sb3IgbWFuYWdlbWVudCBpZiBhdmFpbGFibGUuXG5cdFx0XHRcdFx0Ly8gQXZvaWQgYWNjZXNzaW5nIENvbG9yTWFuYWdlbWVudCB0byBwbGF5IG5pY2Ugd2l0aCBvbGRlciB2ZXJzaW9uc1xuXHRcdFx0XHRcdGlmIChDb2xvck1hbmFnZW1lbnQpIHtcblx0XHRcdFx0XHRcdGNvbnN0IGNvbG9yTWFuYWdlbWVudCA9IENvbG9yTWFuYWdlbWVudCBhcyBOZ3RBbnlSZWNvcmQ7XG5cdFx0XHRcdFx0XHRpZiAoJ2VuYWJsZWQnIGluIGNvbG9yTWFuYWdlbWVudCkgY29sb3JNYW5hZ2VtZW50WydlbmFibGVkJ10gPSAhbGVnYWN5ID8/IGZhbHNlO1xuXHRcdFx0XHRcdFx0ZWxzZSBpZiAoJ2xlZ2FjeU1vZGUnIGluIGNvbG9yTWFuYWdlbWVudCkgY29sb3JNYW5hZ2VtZW50WydsZWdhY3lNb2RlJ10gPSBsZWdhY3kgPz8gdHJ1ZTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRpZiAoIWlzQ29uZmlndXJlZCkge1xuXHRcdFx0XHRcdFx0Ly8gc2V0IGNvbG9yIHNwYWNlIGFuZCB0b25lbWFwcGluZyBwcmVmZXJlbmNlcyBvbmNlXG5cdFx0XHRcdFx0XHRjb25zdCBMaW5lYXJFbmNvZGluZyA9IDMwMDA7XG5cdFx0XHRcdFx0XHRjb25zdCBzUkdCRW5jb2RpbmcgPSAzMDAxO1xuXHRcdFx0XHRcdFx0YXBwbHlQcm9wcyhnbCwge1xuXHRcdFx0XHRcdFx0XHRvdXRwdXRFbmNvZGluZzogbGluZWFyID8gTGluZWFyRW5jb2RpbmcgOiBzUkdCRW5jb2RpbmcsXG5cdFx0XHRcdFx0XHRcdHRvbmVNYXBwaW5nOiBmbGF0ID8gTm9Ub25lTWFwcGluZyA6IEFDRVNGaWxtaWNUb25lTWFwcGluZyxcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdC8vIFVwZGF0ZSBjb2xvciBtYW5hZ2VtZW50IHN0YXRlXG5cdFx0XHRcdFx0aWYgKHN0YXRlLmxlZ2FjeSAhPT0gbGVnYWN5KSBzdGF0ZVRvVXBkYXRlLmxlZ2FjeSA9IGxlZ2FjeTtcblx0XHRcdFx0XHRpZiAoc3RhdGUubGluZWFyICE9PSBsaW5lYXIpIHN0YXRlVG9VcGRhdGUubGluZWFyID0gbGluZWFyO1xuXHRcdFx0XHRcdGlmIChzdGF0ZS5mbGF0ICE9PSBmbGF0KSBzdGF0ZVRvVXBkYXRlLmZsYXQgPSBmbGF0O1xuXG5cdFx0XHRcdFx0Ly8gU2V0IGdsIHByb3BzXG5cdFx0XHRcdFx0Z2wuc2V0Q2xlYXJBbHBoYSgwKTtcblx0XHRcdFx0XHRnbC5zZXRQaXhlbFJhdGlvKG1ha2VEcHIoc3RhdGUudmlld3BvcnQuZHByKSk7XG5cdFx0XHRcdFx0Z2wuc2V0U2l6ZShzdGF0ZS5zaXplLndpZHRoLCBzdGF0ZS5zaXplLmhlaWdodCk7XG5cblx0XHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0XHRpcy5vYmooZ2xPcHRpb25zKSAmJlxuXHRcdFx0XHRcdFx0ISh0eXBlb2YgZ2xPcHRpb25zID09PSAnZnVuY3Rpb24nKSAmJlxuXHRcdFx0XHRcdFx0IWlzLnJlbmRlcmVyKGdsT3B0aW9ucykgJiZcblx0XHRcdFx0XHRcdCFpcy5lcXUoZ2xPcHRpb25zLCBnbCwgc2hhbGxvd0xvb3NlKVxuXHRcdFx0XHRcdCkge1xuXHRcdFx0XHRcdFx0YXBwbHlQcm9wcyhnbCwgZ2xPcHRpb25zKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHQvLyBTdG9yZSBldmVudHMgaW50ZXJuYWxseVxuXHRcdFx0XHRcdGlmIChldmVudHMgJiYgIXN0YXRlLmV2ZW50cy5oYW5kbGVycykgc3RhdGVUb1VwZGF0ZS5ldmVudHMgPSBldmVudHMoc3RvcmUpO1xuXG5cdFx0XHRcdFx0Ly8gQ2hlY2sgcGVyZm9ybWFuY2Vcblx0XHRcdFx0XHRpZiAocGVyZm9ybWFuY2UgJiYgIWlzLmVxdShwZXJmb3JtYW5jZSwgc3RhdGUucGVyZm9ybWFuY2UsIHNoYWxsb3dMb29zZSkpIHtcblx0XHRcdFx0XHRcdHN0YXRlVG9VcGRhdGUucGVyZm9ybWFuY2UgPSB7IC4uLnN0YXRlLnBlcmZvcm1hbmNlLCAuLi5wZXJmb3JtYW5jZSB9O1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdHN0b3JlLnVwZGF0ZShzdGF0ZVRvVXBkYXRlKTtcblxuXHRcdFx0XHRcdC8vIENoZWNrIHNpemUsIGFsbG93IGl0IHRvIHRha2Ugb24gY29udGFpbmVyIGJvdW5kcyBpbml0aWFsbHlcblx0XHRcdFx0XHRjb25zdCBzaXplID0gY29tcHV0ZUluaXRpYWxTaXplKGNhbnZhcywgc2l6ZU9wdGlvbnMpO1xuXHRcdFx0XHRcdGlmICghaXMuZXF1KHNpemUsIHN0YXRlLnNpemUsIHNoYWxsb3dMb29zZSkpIHtcblx0XHRcdFx0XHRcdHN0YXRlLnNldFNpemUoc2l6ZS53aWR0aCwgc2l6ZS5oZWlnaHQsIHNpemUudG9wLCBzaXplLmxlZnQpO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdC8vIENoZWNrIHBpeGVscmF0aW9cblx0XHRcdFx0XHRpZiAoZHByICYmIHN0YXRlLnZpZXdwb3J0LmRwciAhPT0gbWFrZURwcihkcHIpKSBzdGF0ZS5zZXREcHIoZHByKTtcblx0XHRcdFx0XHQvLyBDaGVjayBmcmFtZWxvb3Bcblx0XHRcdFx0XHRpZiAoc3RhdGUuZnJhbWVsb29wICE9PSBmcmFtZWxvb3ApIHN0YXRlLnNldEZyYW1lbG9vcChmcmFtZWxvb3ApO1xuXG5cdFx0XHRcdFx0aXNDb25maWd1cmVkID0gdHJ1ZTtcblx0XHRcdFx0fSxcblx0XHRcdH07XG5cdFx0fTtcblx0fSk7XG59XG5cbmV4cG9ydCB0eXBlIE5ndENhbnZhc0NvbmZpZ3VyYXRvciA9IFJldHVyblR5cGU8UmV0dXJuVHlwZTx0eXBlb2YgaW5qZWN0Q2FudmFzUm9vdEluaXRpYWxpemVyPj47XG5cbmZ1bmN0aW9uIGNvbXB1dGVJbml0aWFsU2l6ZShjYW52YXM6IE5ndENhbnZhc0VsZW1lbnQsIGRlZmF1bHRTaXplPzogTmd0U2l6ZSk6IE5ndFNpemUge1xuXHRpZiAoZGVmYXVsdFNpemUpIHtcblx0XHRyZXR1cm4gZGVmYXVsdFNpemU7XG5cdH1cblxuXHRpZiAodHlwZW9mIEhUTUxDYW52YXNFbGVtZW50ICE9PSAndW5kZWZpbmVkJyAmJiBjYW52YXMgaW5zdGFuY2VvZiBIVE1MQ2FudmFzRWxlbWVudCAmJiBjYW52YXMucGFyZW50RWxlbWVudCkge1xuXHRcdHJldHVybiBjYW52YXMucGFyZW50RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblx0fVxuXG5cdGlmICh0eXBlb2YgT2Zmc2NyZWVuQ2FudmFzICE9PSAndW5kZWZpbmVkJyAmJiBjYW52YXMgaW5zdGFuY2VvZiBPZmZzY3JlZW5DYW52YXMpIHtcblx0XHRyZXR1cm4geyB3aWR0aDogY2FudmFzLndpZHRoLCBoZWlnaHQ6IGNhbnZhcy5oZWlnaHQsIHRvcDogMCwgbGVmdDogMCB9O1xuXHR9XG5cblx0cmV0dXJuIHsgd2lkdGg6IDAsIGhlaWdodDogMCwgdG9wOiAwLCBsZWZ0OiAwIH07XG59XG5cbi8vIERpc3Bvc2VzIGFuIG9iamVjdCBhbmQgYWxsIGl0cyBwcm9wZXJ0aWVzXG5mdW5jdGlvbiBkaXNwb3NlPFRPYmogZXh0ZW5kcyB7IGRpc3Bvc2U/OiAoKSA9PiB2b2lkOyB0eXBlPzogc3RyaW5nOyBba2V5OiBzdHJpbmddOiBhbnkgfT4ob2JqOiBUT2JqKSB7XG5cdGlmIChvYmouZGlzcG9zZSAmJiBvYmoudHlwZSAhPT0gJ1NjZW5lJykgb2JqLmRpc3Bvc2UoKTtcblx0Zm9yIChjb25zdCBwIGluIG9iaikge1xuXHRcdChwIGFzIGFueSkuZGlzcG9zZT8uKCk7XG5cdFx0ZGVsZXRlIG9ialtwXTtcblx0fVxufVxuIl19
@@ -14,12 +14,12 @@ export class NgtRoutedScene {
14
14
  .pipe(filter((event) => event instanceof ActivationEnd), takeUntilDestroyed())
15
15
  .subscribe(cdr.detectChanges.bind(cdr));
16
16
  }
17
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: NgtRoutedScene, deps: [{ token: i1.Router }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
18
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.0", type: NgtRoutedScene, isStandalone: true, selector: "ngt-routed-scene", ngImport: i0, template: `
17
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: NgtRoutedScene, deps: [{ token: i1.Router }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
18
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.3", type: NgtRoutedScene, isStandalone: true, selector: "ngt-routed-scene", ngImport: i0, template: `
19
19
  <router-outlet />
20
20
  `, isInline: true, dependencies: [{ kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }] }); }
21
21
  }
22
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: NgtRoutedScene, decorators: [{
22
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: NgtRoutedScene, decorators: [{
23
23
  type: Component,
24
24
  args: [{
25
25
  standalone: true,
@@ -2,7 +2,7 @@ import { DOCUMENT } from '@angular/common';
2
2
  import { ElementRef, InjectionToken, Optional, SkipSelf, effect, inject } from '@angular/core';
3
3
  import { createInjectionToken } from 'ngxtension/create-injection-token';
4
4
  import { Subject } from 'rxjs';
5
- import * as THREE from 'three';
5
+ import { Clock, Vector2, Vector3 } from 'three';
6
6
  import { injectNgtLoop } from './loop';
7
7
  import { is } from './utils/is';
8
8
  import { makeDpr } from './utils/make';
@@ -20,13 +20,13 @@ function storeFactory(previousStore) {
20
20
  const pointerMissed$ = new Subject();
21
21
  const store = signalStore(({ get, update }) => {
22
22
  const { invalidate, advance } = loop;
23
- const position = new THREE.Vector3();
24
- const defaultTarget = new THREE.Vector3();
25
- const tempTarget = new THREE.Vector3();
23
+ const position = new Vector3();
24
+ const defaultTarget = new Vector3();
25
+ const tempTarget = new Vector3();
26
26
  function getCurrentViewport(camera = get('camera'), target = defaultTarget, size = get('size')) {
27
27
  const { width, height, top, left } = size;
28
28
  const aspect = width / height;
29
- if (target instanceof THREE.Vector3)
29
+ if (target instanceof Vector3)
30
30
  tempTarget.copy(target);
31
31
  else
32
32
  tempTarget.set(...target);
@@ -41,7 +41,7 @@ function storeFactory(previousStore) {
41
41
  }
42
42
  let performanceTimeout = undefined;
43
43
  const setPerformanceCurrent = (current) => update((state) => ({ performance: { ...state.performance, current } }));
44
- const pointer = new THREE.Vector2();
44
+ const pointer = new Vector2();
45
45
  return {
46
46
  pointerMissed$: pointerMissed$.asObservable(),
47
47
  events: { priority: 1, enabled: true, connected: false },
@@ -51,7 +51,7 @@ function storeFactory(previousStore) {
51
51
  linear: false,
52
52
  flat: false,
53
53
  controls: null,
54
- clock: new THREE.Clock(),
54
+ clock: new Clock(),
55
55
  pointer,
56
56
  frameloop: 'always',
57
57
  performance: {
@@ -178,4 +178,4 @@ export const [injectNgtStore, provideNgtStore] = createInjectionToken(storeFacto
178
178
  deps: [[new Optional(), new SkipSelf(), NGT_STORE]],
179
179
  token: NGT_STORE,
180
180
  });
181
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9GLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxPQUFPLEVBQW1CLE1BQU0sTUFBTSxDQUFDO0FBQ2hELE9BQU8sS0FBSyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBRy9CLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDdkMsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNoQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxXQUFXLEVBQXVCLE1BQU0sc0JBQXNCLENBQUM7QUFDeEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBOEg5QyxTQUFTLFlBQVksQ0FBQyxhQUE4QztJQUNuRSxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbEMsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLFdBQVcsQ0FBQztJQUVwQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDYixnRUFBZ0U7UUFDaEUsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRCxNQUFNLElBQUksR0FBRyxhQUFhLEVBQUUsQ0FBQztJQUU3QixvRUFBb0U7SUFDcEUsTUFBTSxjQUFjLEdBQUcsSUFBSSxPQUFPLEVBQWMsQ0FBQztJQUVqRCxN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LEtBQUssV0FBVyxJQUFJLEVBQUUsQ0FBQyxVQUFVLFlBQVksaUJBQWlCLENBQUM7WUFDM0csRUFBRSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDeEQsQ0FBQztRQUVELDBDQUEwQztRQUMxQyxJQUFJLFNBQVMsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUM3QixTQUFTLEdBQUcsU0FBUyxDQUFDO1lBQ3RCLFlBQVksQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDakMsa0JBQWtCO1lBQ2xCLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsRUFBRSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQUUsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDakgsQ0FBQztJQUNGLENBQUMsQ0FBQyxDQUFDO0lBRUgsT0FBTyxLQUFLLENBQUM7QUFDZCxDQUFDO0FBRUQsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLElBQUksY0FBYyxDQUEyQixnQkFBZ0IsQ0FBQyxDQUFDO0FBQ3hGLE1BQU0sQ0FBQyxNQUFNLENBQUMsY0FBYyxFQUFFLGVBQWUsQ0FBQyxHQUFHLG9CQUFvQixDQUFDLFlBQVksRUFBRTtJQUNuRixNQUFNLEVBQUUsS0FBSztJQUNiLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxRQUFRLEVBQUUsRUFBRSxJQUFJLFFBQVEsRUFBRSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ25ELEtBQUssRUFBRSxTQUFTO0NBQ2hCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEVsZW1lbnRSZWYsIEluamVjdGlvblRva2VuLCBPcHRpb25hbCwgU2tpcFNlbGYsIGVmZmVjdCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjcmVhdGVJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ25neHRlbnNpb24vY3JlYXRlLWluamVjdGlvbi10b2tlbic7XG5pbXBvcnQgeyBTdWJqZWN0LCB0eXBlIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCAqIGFzIFRIUkVFIGZyb20gJ3RocmVlJztcbmltcG9ydCB0eXBlIHsgTmd0Q2FtZXJhLCBOZ3REb21FdmVudCwgTmd0RXZlbnRNYW5hZ2VyLCBOZ3RQb2ludGVyQ2FwdHVyZVRhcmdldCwgTmd0VGhyZWVFdmVudCB9IGZyb20gJy4vZXZlbnRzJztcbmltcG9ydCB0eXBlIHsgTmd0SW5zdGFuY2VOb2RlIH0gZnJvbSAnLi9pbnN0YW5jZSc7XG5pbXBvcnQgeyBpbmplY3ROZ3RMb29wIH0gZnJvbSAnLi9sb29wJztcbmltcG9ydCB7IGlzIH0gZnJvbSAnLi91dGlscy9pcyc7XG5pbXBvcnQgeyBtYWtlRHByIH0gZnJvbSAnLi91dGlscy9tYWtlJztcbmltcG9ydCB7IHNpZ25hbFN0b3JlLCB0eXBlIE5ndFNpZ25hbFN0b3JlIH0gZnJvbSAnLi91dGlscy9zaWduYWwtc3RvcmUnO1xuaW1wb3J0IHsgdXBkYXRlQ2FtZXJhIH0gZnJvbSAnLi91dGlscy91cGRhdGUnO1xuXG5leHBvcnQgdHlwZSBOZ3RSZW5kZXJlckxpa2UgPSB7IHJlbmRlcjogKHNjZW5lOiBUSFJFRS5TY2VuZSwgY2FtZXJhOiBUSFJFRS5DYW1lcmEpID0+IGFueSB9O1xuZXhwb3J0IHR5cGUgTmd0Q2FtZXJhTWFudWFsID0gTmd0Q2FtZXJhICYgeyBtYW51YWw/OiBib29sZWFuIH07XG5leHBvcnQgdHlwZSBOZ3REcHIgPSBudW1iZXIgfCBbbWluOiBudW1iZXIsIG1heDogbnVtYmVyXTtcbmV4cG9ydCB0eXBlIE5ndFNpemUgPSB7IHdpZHRoOiBudW1iZXI7IGhlaWdodDogbnVtYmVyOyB0b3A6IG51bWJlcjsgbGVmdDogbnVtYmVyIH07XG5cbmV4cG9ydCB0eXBlIE5ndFZpZXdwb3J0ID0gTmd0U2l6ZSAmIHtcblx0LyoqIFRoZSBpbml0aWFsIHBpeGVsIHJhdGlvICovXG5cdGluaXRpYWxEcHI6IG51bWJlcjtcblx0LyoqIEN1cnJlbnQgcGl4ZWwgcmF0aW8gKi9cblx0ZHByOiBudW1iZXI7XG5cdC8qKiBzaXplLndpZHRoIC8gdmlld3BvcnQud2lkdGggKi9cblx0ZmFjdG9yOiBudW1iZXI7XG5cdC8qKiBDYW1lcmEgZGlzdGFuY2UgKi9cblx0ZGlzdGFuY2U6IG51bWJlcjtcblx0LyoqIENhbWVyYSBhc3BlY3QgcmF0aW86IHdpZHRoIC8gaGVpZ2h0ICovXG5cdGFzcGVjdDogbnVtYmVyO1xufTtcblxuZXhwb3J0IHR5cGUgTmd0UGVyZm9ybWFuY2UgPSB7XG5cdC8qKiBDdXJyZW50IHBlcmZvcm1hbmNlIG5vcm1hbCwgYmV0d2VlbiBtaW4gYW5kIG1heCAqL1xuXHRjdXJyZW50OiBudW1iZXI7XG5cdC8qKiBIb3cgbG93IHRoZSBwZXJmb3JtYW5jZSBjYW4gZ28sIGJldHdlZW4gMCBhbmQgbWF4ICovXG5cdG1pbjogbnVtYmVyO1xuXHQvKiogSG93IGhpZ2ggdGhlIHBlcmZvcm1hbmNlIGNhbiBnbywgYmV0d2VlbiBtaW4gYW5kIG1heCAqL1xuXHRtYXg6IG51bWJlcjtcblx0LyoqIFRpbWUgdW50aWwgY3VycmVudCByZXR1cm5zIHRvIG1heCBpbiBtcyAqL1xuXHRkZWJvdW5jZTogbnVtYmVyO1xuXHQvKiogU2V0cyBjdXJyZW50IHRvIG1pbiwgcHV0cyB0aGUgc3lzdGVtIGluIHJlZ3Jlc3Npb24gKi9cblx0cmVncmVzczogKCkgPT4gdm9pZDtcbn07XG5cbmV4cG9ydCB0eXBlIE5ndFJlbmRlclN0YXRlID0gTmd0U3RhdGUgJiB7IGRlbHRhOiBudW1iZXI7IGZyYW1lPzogWFJGcmFtZSB9O1xuXG5leHBvcnQgdHlwZSBOZ3RCZWZvcmVSZW5kZXJFdmVudDxUT2JqZWN0IGV4dGVuZHMgTmd0SW5zdGFuY2VOb2RlID0gTmd0SW5zdGFuY2VOb2RlPiA9IHtcblx0c3RhdGU6IE5ndFJlbmRlclN0YXRlO1xuXHRvYmplY3Q6IFRPYmplY3Q7XG59O1xuXG5leHBvcnQgdHlwZSBOZ3RCZWZvcmVSZW5kZXJSZWNvcmQgPSB7XG5cdGNhbGxiYWNrOiAoc3RhdGU6IE5ndFJlbmRlclN0YXRlKSA9PiB2b2lkO1xuXHRzdG9yZTogTmd0U2lnbmFsU3RvcmU8Tmd0U3RhdGU+O1xuXHRwcmlvcml0eT86IG51bWJlcjtcbn07XG5cbmV4cG9ydCB0eXBlIE5ndEludGVybmFsU3RhdGUgPSB7XG5cdGFjdGl2ZTogYm9vbGVhbjtcblx0cHJpb3JpdHk6IG51bWJlcjtcblx0ZnJhbWVzOiBudW1iZXI7XG5cdGxhc3RFdmVudDogRWxlbWVudFJlZjxOZ3REb21FdmVudCB8IG51bGw+O1xuXHRpbnRlcmFjdGlvbjogVEhSRUUuT2JqZWN0M0RbXTtcblx0aG92ZXJlZDogTWFwPHN0cmluZywgTmd0VGhyZWVFdmVudDxOZ3REb21FdmVudD4+O1xuXHRjYXB0dXJlZE1hcDogTWFwPG51bWJlciwgTWFwPFRIUkVFLk9iamVjdDNELCBOZ3RQb2ludGVyQ2FwdHVyZVRhcmdldD4+O1xuXHRpbml0aWFsQ2xpY2s6IFt4OiBudW1iZXIsIHk6IG51bWJlcl07XG5cdGluaXRpYWxIaXRzOiBUSFJFRS5PYmplY3QzRFtdO1xuXHRzdWJzY3JpYmVyczogTmd0QmVmb3JlUmVuZGVyUmVjb3JkW107XG5cdHN1YnNjcmliZTogKFxuXHRcdGNhbGxiYWNrOiBOZ3RCZWZvcmVSZW5kZXJSZWNvcmRbJ2NhbGxiYWNrJ10sXG5cdFx0cHJpb3JpdHk/OiBudW1iZXIsXG5cdFx0c3RvcmU/OiBOZ3RTaWduYWxTdG9yZTxOZ3RTdGF0ZT4sXG5cdCkgPT4gKCkgPT4gdm9pZDtcbn07XG5cbmV4cG9ydCB0eXBlIE5ndFN0YXRlID0ge1xuXHQvKiogVGhlIGluc3RhbmNlIG9mIHRoZSByZW5kZXJlciAqL1xuXHRnbDogVEhSRUUuV2ViR0xSZW5kZXJlcjtcblx0LyoqIERlZmF1bHQgY2FtZXJhICovXG5cdGNhbWVyYTogTmd0Q2FtZXJhTWFudWFsO1xuXHQvKiogRGVmYXVsdCBzY2VuZSAqL1xuXHRzY2VuZTogVEhSRUUuU2NlbmU7XG5cdC8qKiBEZWZhdWx0IHJheWNhc3RlciAqL1xuXHRyYXljYXN0ZXI6IFRIUkVFLlJheWNhc3Rlcjtcblx0LyoqIERlZmF1bHQgY2xvY2sgKi9cblx0Y2xvY2s6IFRIUkVFLkNsb2NrO1xuXHQvKiogRXZlbnQgbGF5ZXIgaW50ZXJmYWNlLCBjb250YWlucyB0aGUgZXZlbnQgaGFuZGxlciBhbmQgdGhlIG5vZGUgdGhleSdyZSBjb25uZWN0ZWQgdG8gKi9cblx0ZXZlbnRzOiBOZ3RFdmVudE1hbmFnZXI8YW55Pjtcblx0LyoqIFhSIGludGVyZmFjZSAqL1xuXHR4cjogeyBjb25uZWN0OiAoKSA9PiB2b2lkOyBkaXNjb25uZWN0OiAoKSA9PiB2b2lkIH07XG5cdC8qKiBDdXJyZW50bHkgdXNlZCBjb250cm9scyAqL1xuXHRjb250cm9sczogVEhSRUUuRXZlbnREaXNwYXRjaGVyIHwgbnVsbDtcblx0LyoqIE5vcm1hbGl6ZWQgZXZlbnQgY29vcmRpbmF0ZXMgKi9cblx0cG9pbnRlcjogVEhSRUUuVmVjdG9yMjtcblx0LyogV2hldGhlciB0byBlbmFibGUgcjEzOSdzIFRIUkVFLkNvbG9yTWFuYWdlbWVudCAqL1xuXHRsZWdhY3k6IGJvb2xlYW47XG5cdC8qKiBTaG9ydGN1dCB0byBnbC5vdXRwdXRDb2xvclNwYWNlID0gVEhSRUUuTGluZWFyU1JHQkNvbG9yU3BhY2UgKi9cblx0bGluZWFyOiBib29sZWFuO1xuXHQvKiogU2hvcnRjdXQgdG8gZ2wudG9uZU1hcHBpbmcgPSBOb1RvbmVtYXBwaW5nICovXG5cdGZsYXQ6IGJvb2xlYW47XG5cdC8qKiBSZW5kZXIgbG9vcCBmbGFncyAqL1xuXHRmcmFtZWxvb3A6ICdhbHdheXMnIHwgJ2RlbWFuZCcgfCAnbmV2ZXInO1xuXHQvKiogQWRhcHRpdmUgcGVyZm9ybWFuY2UgaW50ZXJmYWNlICovXG5cdHBlcmZvcm1hbmNlOiBOZ3RQZXJmb3JtYW5jZTtcblx0LyoqIFJlYWN0aXZlIHBpeGVsLXNpemUgb2YgdGhlIGNhbnZhcyAqL1xuXHRzaXplOiBOZ3RTaXplO1xuXHQvKiogUmVhY3RpdmUgc2l6ZSBvZiB0aGUgdmlld3BvcnQgaW4gdGhyZWVqcyB1bml0cyAqL1xuXHR2aWV3cG9ydDogTmd0Vmlld3BvcnQgJiB7XG5cdFx0Z2V0Q3VycmVudFZpZXdwb3J0OiAoXG5cdFx0XHRjYW1lcmE/OiBOZ3RDYW1lcmEsXG5cdFx0XHR0YXJnZXQ/OiBUSFJFRS5WZWN0b3IzIHwgUGFyYW1ldGVyczxUSFJFRS5WZWN0b3IzWydzZXQnXT4sXG5cdFx0XHRzaXplPzogTmd0U2l6ZSxcblx0XHQpID0+IE9taXQ8Tmd0Vmlld3BvcnQsICdkcHInIHwgJ2luaXRpYWxEcHInPjtcblx0fTtcblx0LyoqIEZsYWdzIHRoZSBjYW52YXMgZm9yIHJlbmRlciwgYnV0IGRvZXNuJ3QgcmVuZGVyIGluIGl0c2VsZiAqL1xuXHRpbnZhbGlkYXRlOiAoZnJhbWVzPzogbnVtYmVyKSA9PiB2b2lkO1xuXHQvKiogQWR2YW5jZSAocmVuZGVyKSBvbmUgc3RlcCAqL1xuXHRhZHZhbmNlOiAodGltZXN0YW1wOiBudW1iZXIsIHJ1bkdsb2JhbEVmZmVjdHM/OiBib29sZWFuKSA9PiB2b2lkO1xuXHQvKiogU2hvcnRjdXQgdG8gc2V0dGluZyB0aGUgZXZlbnQgbGF5ZXIgKi9cblx0c2V0RXZlbnRzOiAoZXZlbnRzOiBQYXJ0aWFsPE5ndEV2ZW50TWFuYWdlcjxhbnk+PikgPT4gdm9pZDtcblx0LyoqXG5cdCAqIFNob3J0Y3V0IHRvIG1hbnVhbCBzaXppbmdcblx0ICovXG5cdHNldFNpemU6ICh3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlciwgdG9wPzogbnVtYmVyLCBsZWZ0PzogbnVtYmVyKSA9PiB2b2lkO1xuXHQvKiogU2hvcnRjdXQgdG8gbWFudWFsIHNldHRpbmcgdGhlIHBpeGVsIHJhdGlvICovXG5cdHNldERwcjogKGRwcjogTmd0RHByKSA9PiB2b2lkO1xuXHQvKiogU2hvcnRjdXQgdG8gZnJhbWVsb29wIGZsYWdzICovXG5cdHNldEZyYW1lbG9vcDogKGZyYW1lbG9vcD86ICdhbHdheXMnIHwgJ2RlbWFuZCcgfCAnbmV2ZXInKSA9PiB2b2lkO1xuXHQvKiogV2hlbiB0aGUgY2FudmFzIHdhcyBjbGlja2VkIGJ1dCBub3RoaW5nIHdhcyBoaXQgKi9cblx0LyoqIFBvaW50ZXJNaXNzZWQgT2JzZXJ2YWJsZSAqL1xuXHRwb2ludGVyTWlzc2VkJDogT2JzZXJ2YWJsZTxNb3VzZUV2ZW50Pjtcblx0LyoqIElmIHRoaXMgc3RhdGUgbW9kZWwgaXMgbGF5ZXJlZCAodmlhIGNyZWF0ZVBvcnRhbCkgdGhlbiB0aGlzIGNvbnRhaW5zIHRoZSBwcmV2aW91cyBsYXllciAqL1xuXHRwcmV2aW91c1Jvb3Q6IE5ndFNpZ25hbFN0b3JlPE5ndFN0YXRlPiB8IG51bGw7XG5cdC8qKiBJbnRlcm5hbHMgKi9cblx0aW50ZXJuYWw6IE5ndEludGVybmFsU3RhdGU7XG59O1xuXG5mdW5jdGlvbiBzdG9yZUZhY3RvcnkocHJldmlvdXNTdG9yZTogTmd0U2lnbmFsU3RvcmU8Tmd0U3RhdGU+IHwgbnVsbCkge1xuXHRjb25zdCBkb2N1bWVudCA9IGluamVjdChET0NVTUVOVCk7XG5cdGNvbnN0IHdpbmRvdyA9IGRvY3VtZW50LmRlZmF1bHRWaWV3O1xuXG5cdGlmICghd2luZG93KSB7XG5cdFx0Ly8gVE9ETzogcmV2aXNpdCB0aGlzIHdoZW4gd2UgbmVlZCB0byBzdXBwb3J0IG11bHRpcGxlIHBsYXRmb3Jtc1xuXHRcdHRocm93IG5ldyBFcnJvcihgW05HVF0gV2luZG93IGlzIG5vdCBhdmFpbGFibGUuYCk7XG5cdH1cblxuXHRjb25zdCBsb29wID0gaW5qZWN0Tmd0TG9vcCgpO1xuXG5cdC8vIE5PVEU6IHVzaW5nIFN1YmplY3QgYmVjYXVzZSB3ZSBkbyBub3QgY2FyZSBhYm91dCBsYXRlLXN1YnNjcmliZXJzXG5cdGNvbnN0IHBvaW50ZXJNaXNzZWQkID0gbmV3IFN1YmplY3Q8TW91c2VFdmVudD4oKTtcblxuXHRjb25zdCBzdG9yZTogTmd0U2lnbmFsU3RvcmU8Tmd0U3RhdGU+ID0gc2lnbmFsU3RvcmU8Tmd0U3RhdGU+KCh7IGdldCwgdXBkYXRlIH0pID0+IHtcblx0XHRjb25zdCB7IGludmFsaWRhdGUsIGFkdmFuY2UgfSA9IGxvb3A7XG5cblx0XHRjb25zdCBwb3NpdGlvbiA9IG5ldyBUSFJFRS5WZWN0b3IzKCk7XG5cdFx0Y29uc3QgZGVmYXVsdFRhcmdldCA9IG5ldyBUSFJFRS5WZWN0b3IzKCk7XG5cdFx0Y29uc3QgdGVtcFRhcmdldCA9IG5ldyBUSFJFRS5WZWN0b3IzKCk7XG5cblx0XHRmdW5jdGlvbiBnZXRDdXJyZW50Vmlld3BvcnQoXG5cdFx0XHRjYW1lcmE6IE5ndENhbWVyYSA9IGdldCgnY2FtZXJhJyksXG5cdFx0XHR0YXJnZXQ6IFRIUkVFLlZlY3RvcjMgfCBQYXJhbWV0ZXJzPFRIUkVFLlZlY3RvcjNbJ3NldCddPiA9IGRlZmF1bHRUYXJnZXQsXG5cdFx0XHRzaXplOiBOZ3RTaXplID0gZ2V0KCdzaXplJyksXG5cdFx0KTogT21pdDxOZ3RWaWV3cG9ydCwgJ2RwcicgfCAnaW5pdGlhbERwcic+IHtcblx0XHRcdGNvbnN0IHsgd2lkdGgsIGhlaWdodCwgdG9wLCBsZWZ0IH0gPSBzaXplO1xuXHRcdFx0Y29uc3QgYXNwZWN0ID0gd2lkdGggLyBoZWlnaHQ7XG5cblx0XHRcdGlmICh0YXJnZXQgaW5zdGFuY2VvZiBUSFJFRS5WZWN0b3IzKSB0ZW1wVGFyZ2V0LmNvcHkodGFyZ2V0KTtcblx0XHRcdGVsc2UgdGVtcFRhcmdldC5zZXQoLi4udGFyZ2V0KTtcblxuXHRcdFx0Y29uc3QgZGlzdGFuY2UgPSBjYW1lcmEuZ2V0V29ybGRQb3NpdGlvbihwb3NpdGlvbikuZGlzdGFuY2VUbyh0ZW1wVGFyZ2V0KTtcblxuXHRcdFx0aWYgKGlzLm9ydGhvZ3JhcGhpY0NhbWVyYShjYW1lcmEpKSB7XG5cdFx0XHRcdHJldHVybiB7IHdpZHRoOiB3aWR0aCAvIGNhbWVyYS56b29tLCBoZWlnaHQ6IGhlaWdodCAvIGNhbWVyYS56b29tLCB0b3AsIGxlZnQsIGZhY3RvcjogMSwgZGlzdGFuY2UsIGFzcGVjdCB9O1xuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCBmb3YgPSAoY2FtZXJhLmZvdiAqIE1hdGguUEkpIC8gMTgwOyAvLyBjb252ZXJ0IHZlcnRpY2FsIGZvdiB0byByYWRpYW5zXG5cdFx0XHRjb25zdCBoID0gMiAqIE1hdGgudGFuKGZvdiAvIDIpICogZGlzdGFuY2U7IC8vIHZpc2libGUgaGVpZ2h0XG5cdFx0XHRjb25zdCB3ID0gaCAqICh3aWR0aCAvIGhlaWdodCk7XG5cdFx0XHRyZXR1cm4geyB3aWR0aDogdywgaGVpZ2h0OiBoLCB0b3AsIGxlZnQsIGZhY3Rvcjogd2lkdGggLyB3LCBkaXN0YW5jZSwgYXNwZWN0IH07XG5cdFx0fVxuXG5cdFx0bGV0IHBlcmZvcm1hbmNlVGltZW91dDogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG5cdFx0Y29uc3Qgc2V0UGVyZm9ybWFuY2VDdXJyZW50ID0gKGN1cnJlbnQ6IG51bWJlcikgPT5cblx0XHRcdHVwZGF0ZSgoc3RhdGUpID0+ICh7IHBlcmZvcm1hbmNlOiB7IC4uLnN0YXRlLnBlcmZvcm1hbmNlLCBjdXJyZW50IH0gfSkpO1xuXG5cdFx0Y29uc3QgcG9pbnRlciA9IG5ldyBUSFJFRS5WZWN0b3IyKCk7XG5cblx0XHRyZXR1cm4ge1xuXHRcdFx0cG9pbnRlck1pc3NlZCQ6IHBvaW50ZXJNaXNzZWQkLmFzT2JzZXJ2YWJsZSgpLFxuXHRcdFx0ZXZlbnRzOiB7IHByaW9yaXR5OiAxLCBlbmFibGVkOiB0cnVlLCBjb25uZWN0ZWQ6IGZhbHNlIH0sXG5cblx0XHRcdGludmFsaWRhdGU6IChmcmFtZXMgPSAxKSA9PiBpbnZhbGlkYXRlKHN0b3JlLCBmcmFtZXMpLFxuXHRcdFx0YWR2YW5jZTogKHRpbWVzdGFtcDogbnVtYmVyLCBydW5HbG9iYWxFZmZlY3RzPzogYm9vbGVhbikgPT4gYWR2YW5jZSh0aW1lc3RhbXAsIHJ1bkdsb2JhbEVmZmVjdHMsIHN0b3JlKSxcblxuXHRcdFx0bGVnYWN5OiBmYWxzZSxcblx0XHRcdGxpbmVhcjogZmFsc2UsXG5cdFx0XHRmbGF0OiBmYWxzZSxcblxuXHRcdFx0Y29udHJvbHM6IG51bGwsXG5cdFx0XHRjbG9jazogbmV3IFRIUkVFLkNsb2NrKCksXG5cdFx0XHRwb2ludGVyLFxuXG5cdFx0XHRmcmFtZWxvb3A6ICdhbHdheXMnLFxuXG5cdFx0XHRwZXJmb3JtYW5jZToge1xuXHRcdFx0XHRjdXJyZW50OiAxLFxuXHRcdFx0XHRtaW46IDAuNSxcblx0XHRcdFx0bWF4OiAxLFxuXHRcdFx0XHRkZWJvdW5jZTogMjAwLFxuXHRcdFx0XHRyZWdyZXNzOiAoKSA9PiB7XG5cdFx0XHRcdFx0Y29uc3Qgc3RhdGUgPSBnZXQoKTtcblx0XHRcdFx0XHQvLyBDbGVhciB0aW1lb3V0XG5cdFx0XHRcdFx0aWYgKHBlcmZvcm1hbmNlVGltZW91dCkgY2xlYXJUaW1lb3V0KHBlcmZvcm1hbmNlVGltZW91dCk7XG5cdFx0XHRcdFx0Ly8gU2V0IGxvd2VyIGJvdW5kIHBlcmZvcm1hbmNlXG5cdFx0XHRcdFx0aWYgKHN0YXRlLnBlcmZvcm1hbmNlLmN1cnJlbnQgIT09IHN0YXRlLnBlcmZvcm1hbmNlLm1pbikgc2V0UGVyZm9ybWFuY2VDdXJyZW50KHN0YXRlLnBlcmZvcm1hbmNlLm1pbik7XG5cdFx0XHRcdFx0Ly8gR28gYmFjayB0byB1cHBlciBib3VuZCBwZXJmb3JtYW5jZSBhZnRlciBhIHdoaWxlIHVubGVzcyBzb21ldGhpbmcgcmVncmVzc2VzIG1lYW53aGlsZVxuXHRcdFx0XHRcdHBlcmZvcm1hbmNlVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0XHRcdFx0c2V0UGVyZm9ybWFuY2VDdXJyZW50KGdldCgncGVyZm9ybWFuY2UnLCAnbWF4JykpO1xuXHRcdFx0XHRcdFx0Ly8gc2FmZURldGVjdENoYW5nZXMoY2RyKTtcblx0XHRcdFx0XHR9LCBzdGF0ZS5wZXJmb3JtYW5jZS5kZWJvdW5jZSk7XG5cdFx0XHRcdH0sXG5cdFx0XHR9LFxuXG5cdFx0XHRzaXplOiB7IHdpZHRoOiAwLCBoZWlnaHQ6IDAsIHRvcDogMCwgbGVmdDogMCwgdXBkYXRlU3R5bGU6IGZhbHNlIH0sXG5cdFx0XHR2aWV3cG9ydDoge1xuXHRcdFx0XHRpbml0aWFsRHByOiAwLFxuXHRcdFx0XHRkcHI6IDAsXG5cdFx0XHRcdHdpZHRoOiAwLFxuXHRcdFx0XHRoZWlnaHQ6IDAsXG5cdFx0XHRcdHRvcDogMCxcblx0XHRcdFx0bGVmdDogMCxcblx0XHRcdFx0YXNwZWN0OiAwLFxuXHRcdFx0XHRkaXN0YW5jZTogMCxcblx0XHRcdFx0ZmFjdG9yOiAwLFxuXHRcdFx0XHRnZXRDdXJyZW50Vmlld3BvcnQsXG5cdFx0XHR9LFxuXG5cdFx0XHRzZXRFdmVudHM6IChldmVudHM6IFBhcnRpYWw8Tmd0RXZlbnRNYW5hZ2VyPGFueT4+KSA9PlxuXHRcdFx0XHR1cGRhdGUoKHN0YXRlKSA9PiAoeyAuLi5zdGF0ZSwgZXZlbnRzOiB7IC4uLnN0YXRlLmV2ZW50cywgLi4uZXZlbnRzIH0gfSkpLFxuXHRcdFx0c2V0U2l6ZTogKHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyLCB0b3A/OiBudW1iZXIsIGxlZnQ/OiBudW1iZXIpID0+IHtcblx0XHRcdFx0Y29uc3QgY2FtZXJhID0gZ2V0KCdjYW1lcmEnKTtcblx0XHRcdFx0Y29uc3Qgc2l6ZSA9IHsgd2lkdGgsIGhlaWdodCwgdG9wOiB0b3AgfHwgMCwgbGVmdDogbGVmdCB8fCAwIH07XG5cdFx0XHRcdHVwZGF0ZSgoc3RhdGUpID0+ICh7XG5cdFx0XHRcdFx0c2l6ZSxcblx0XHRcdFx0XHR2aWV3cG9ydDogeyAuLi5zdGF0ZS52aWV3cG9ydCwgLi4uZ2V0Q3VycmVudFZpZXdwb3J0KGNhbWVyYSwgZGVmYXVsdFRhcmdldCwgc2l6ZSkgfSxcblx0XHRcdFx0fSkpO1xuXHRcdFx0fSxcblx0XHRcdHNldERwcjogKGRwcjogTmd0RHByKSA9PlxuXHRcdFx0XHR1cGRhdGUoKHN0YXRlKSA9PiB7XG5cdFx0XHRcdFx0Y29uc3QgcmVzb2x2ZWQgPSBtYWtlRHByKGRwciwgd2luZG93KTtcblx0XHRcdFx0XHRyZXR1cm4geyB2aWV3cG9ydDogeyAuLi5zdGF0ZS52aWV3cG9ydCwgZHByOiByZXNvbHZlZCwgaW5pdGlhbERwcjogc3RhdGUudmlld3BvcnQuaW5pdGlhbERwciB8fCByZXNvbHZlZCB9IH07XG5cdFx0XHRcdH0pLFxuXHRcdFx0c2V0RnJhbWVsb29wOiAoZnJhbWVsb29wOiAnYWx3YXlzJyB8ICdkZW1hbmQnIHwgJ25ldmVyJyA9ICdhbHdheXMnKSA9PiB7XG5cdFx0XHRcdGNvbnN0IGNsb2NrID0gZ2V0KCdjbG9jaycpO1xuXG5cdFx0XHRcdC8vIGlmIGZyYW1lbG9vcCA9PT0gXCJuZXZlclwiIGNsb2NrLmVsYXBzZWRUaW1lIGlzIHVwZGF0ZWQgdXNpbmcgYWR2YW5jZSh0aW1lc3RhbXApXG5cdFx0XHRcdGNsb2NrLnN0b3AoKTtcblx0XHRcdFx0Y2xvY2suZWxhcHNlZFRpbWUgPSAwO1xuXG5cdFx0XHRcdGlmIChmcmFtZWxvb3AgIT09ICduZXZlcicpIHtcblx0XHRcdFx0XHRjbG9jay5zdGFydCgpO1xuXHRcdFx0XHRcdGNsb2NrLmVsYXBzZWRUaW1lID0gMDtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHVwZGF0ZSgoKSA9PiAoeyBmcmFtZWxvb3AgfSkpO1xuXHRcdFx0fSxcblxuXHRcdFx0cHJldmlvdXNSb290OiBwcmV2aW91c1N0b3JlLFxuXHRcdFx0aW50ZXJuYWw6IHtcblx0XHRcdFx0YWN0aXZlOiBmYWxzZSxcblx0XHRcdFx0cHJpb3JpdHk6IDAsXG5cdFx0XHRcdGZyYW1lczogMCxcblx0XHRcdFx0bGFzdEV2ZW50OiBuZXcgRWxlbWVudFJlZihudWxsKSxcblx0XHRcdFx0aW50ZXJhY3Rpb246IFtdLFxuXHRcdFx0XHRob3ZlcmVkOiBuZXcgTWFwKCksXG5cdFx0XHRcdHN1YnNjcmliZXJzOiBbXSxcblx0XHRcdFx0aW5pdGlhbENsaWNrOiBbMCwgMF0sXG5cdFx0XHRcdGluaXRpYWxIaXRzOiBbXSxcblx0XHRcdFx0Y2FwdHVyZWRNYXA6IG5ldyBNYXAoKSxcblx0XHRcdFx0c3Vic2NyaWJlOiAoXG5cdFx0XHRcdFx0Y2FsbGJhY2s6IE5ndEJlZm9yZVJlbmRlclJlY29yZFsnY2FsbGJhY2snXSxcblx0XHRcdFx0XHRwcmlvcml0eSA9IDAsXG5cdFx0XHRcdFx0X3N0b3JlOiBOZ3RTaWduYWxTdG9yZTxOZ3RTdGF0ZT4gPSBzdG9yZSxcblx0XHRcdFx0KSA9PiB7XG5cdFx0XHRcdFx0Y29uc3QgaW50ZXJuYWwgPSBnZXQoJ2ludGVybmFsJyk7XG5cdFx0XHRcdFx0Ly8gSWYgdGhpcyBzdWJzY3JpcHRpb24gd2FzIGdpdmVuIGEgcHJpb3JpdHksIGl0IHRha2VzIHJlbmRlcmluZyBpbnRvIGl0cyBvd24gaGFuZHNcblx0XHRcdFx0XHQvLyBGb3IgdGhhdCByZWFzb24gd2Ugc3dpdGNoIG9mZiBhdXRvbWF0aWMgcmVuZGVyaW5nIGFuZCBpbmNyZWFzZSB0aGUgbWFudWFsIGZsYWdcblx0XHRcdFx0XHQvLyBBcyBsb25nIGFzIHRoaXMgZmxhZyBpcyBwb3NpdGl2ZSB0aGVyZSBjYW4gYmUgbm8gaW50ZXJuYWwgcmVuZGVyaW5nIGF0IGFsbFxuXHRcdFx0XHRcdC8vIGJlY2F1c2UgdGhlcmUgY291bGQgYmUgbXVsdGlwbGUgcmVuZGVyIHN1YnNjcmlwdGlvbnNcblx0XHRcdFx0XHRpbnRlcm5hbC5wcmlvcml0eSA9IGludGVybmFsLnByaW9yaXR5ICsgKHByaW9yaXR5ID4gMCA/IDEgOiAwKTtcblx0XHRcdFx0XHRpbnRlcm5hbC5zdWJzY3JpYmVycy5wdXNoKHsgY2FsbGJhY2ssIHByaW9yaXR5LCBzdG9yZTogX3N0b3JlIH0pO1xuXHRcdFx0XHRcdC8vIFJlZ2lzdGVyIHN1YnNjcmliZXIgYW5kIHNvcnQgbGF5ZXJzIGZyb20gbG93ZXN0IHRvIGhpZ2hlc3QsIG1lYW5pbmcsXG5cdFx0XHRcdFx0Ly8gaGlnaGVzdCBwcmlvcml0eSByZW5kZXJzIGxhc3QgKG9uIHRvcCBvZiB0aGUgb3RoZXIgZnJhbWVzKVxuXHRcdFx0XHRcdGludGVybmFsLnN1YnNjcmliZXJzID0gaW50ZXJuYWwuc3Vic2NyaWJlcnMuc29ydCgoYSwgYikgPT4gKGEucHJpb3JpdHkgfHwgMCkgLSAoYi5wcmlvcml0eSB8fCAwKSk7XG5cblx0XHRcdFx0XHRyZXR1cm4gKCkgPT4ge1xuXHRcdFx0XHRcdFx0Y29uc3QgaW50ZXJuYWwgPSBnZXQoJ2ludGVybmFsJyk7XG5cdFx0XHRcdFx0XHRpZiAoaW50ZXJuYWw/LnN1YnNjcmliZXJzKSB7XG5cdFx0XHRcdFx0XHRcdC8vIERlY3JlYXNlIG1hbnVhbCBmbGFnIGlmIHRoaXMgc3Vic2NyaXB0aW9uIGhhZCBhIHByaW9yaXR5XG5cdFx0XHRcdFx0XHRcdGludGVybmFsLnByaW9yaXR5ID0gaW50ZXJuYWwucHJpb3JpdHkgLSAocHJpb3JpdHkgPiAwID8gMSA6IDApO1xuXHRcdFx0XHRcdFx0XHQvLyBSZW1vdmUgc3Vic2NyaWJlciBmcm9tIGxpc3Rcblx0XHRcdFx0XHRcdFx0aW50ZXJuYWwuc3Vic2NyaWJlcnMgPSBpbnRlcm5hbC5zdWJzY3JpYmVycy5maWx0ZXIoKHMpID0+IHMuY2FsbGJhY2sgIT09IGNhbGxiYWNrKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR9LFxuXHRcdFx0fSxcblx0XHR9O1xuXHR9KTtcblxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoc3RvcmUsICdwb2ludGVyTWlzc2VkJCcsIHsgZ2V0OiAoKSA9PiBwb2ludGVyTWlzc2VkJCB9KTtcblxuXHRsZXQge1xuXHRcdHNpemU6IG9sZFNpemUsXG5cdFx0dmlld3BvcnQ6IHsgZHByOiBvbGREcHIgfSxcblx0XHRjYW1lcmE6IG9sZENhbWVyYSxcblx0fSA9IHN0b3JlLnNuYXBzaG90O1xuXG5cdGNvbnN0IFtjYW1lcmEsIHNpemUsIHZpZXdwb3J0RHByXSA9IFtzdG9yZS5zZWxlY3QoJ2NhbWVyYScpLCBzdG9yZS5zZWxlY3QoJ3NpemUnKSwgc3RvcmUuc2VsZWN0KCd2aWV3cG9ydCcsICdkcHInKV07XG5cblx0ZWZmZWN0KCgpID0+IHtcblx0XHRjb25zdCBbbmV3Q2FtZXJhLCBuZXdTaXplLCBuZXdEcHIsIGdsXSA9IFtjYW1lcmEoKSwgc2l6ZSgpLCB2aWV3cG9ydERwcigpLCBzdG9yZS5zbmFwc2hvdC5nbF07XG5cblx0XHQvLyBSZXNpemUgY2FtZXJhIGFuZCByZW5kZXJlciBvbiBjaGFuZ2VzIHRvIHNpemUgYW5kIHBpeGVsLXJhdGlvXG5cdFx0aWYgKG5ld1NpemUgIT09IG9sZFNpemUgfHwgbmV3RHByICE9PSBvbGREcHIpIHtcblx0XHRcdG9sZFNpemUgPSBuZXdTaXplO1xuXHRcdFx0b2xkRHByID0gbmV3RHByO1xuXHRcdFx0Ly8gVXBkYXRlIGNhbWVyYSAmIHJlbmRlcmVyXG5cdFx0XHR1cGRhdGVDYW1lcmEobmV3Q2FtZXJhLCBuZXdTaXplKTtcblx0XHRcdGdsLnNldFBpeGVsUmF0aW8obmV3RHByKTtcblxuXHRcdFx0Y29uc3QgdXBkYXRlU3R5bGUgPSB0eXBlb2YgSFRNTENhbnZhc0VsZW1lbnQgIT09ICd1bmRlZmluZWQnICYmIGdsLmRvbUVsZW1lbnQgaW5zdGFuY2VvZiBIVE1MQ2FudmFzRWxlbWVudDtcblx0XHRcdGdsLnNldFNpemUobmV3U2l6ZS53aWR0aCwgbmV3U2l6ZS5oZWlnaHQsIHVwZGF0ZVN0eWxlKTtcblx0XHR9XG5cblx0XHQvLyBVcGRhdGUgdmlld3BvcnQgb25jZSB0aGUgY2FtZXJhIGNoYW5nZXNcblx0XHRpZiAobmV3Q2FtZXJhICE9PSBvbGRDYW1lcmEpIHtcblx0XHRcdG9sZENhbWVyYSA9IG5ld0NhbWVyYTtcblx0XHRcdHVwZGF0ZUNhbWVyYShuZXdDYW1lcmEsIG5ld1NpemUpO1xuXHRcdFx0Ly8gVXBkYXRlIHZpZXdwb3J0XG5cdFx0XHRzdG9yZS51cGRhdGUoKHN0YXRlKSA9PiAoeyB2aWV3cG9ydDogeyAuLi5zdGF0ZS52aWV3cG9ydCwgLi4uc3RhdGUudmlld3BvcnQuZ2V0Q3VycmVudFZpZXdwb3J0KG5ld0NhbWVyYSkgfSB9KSk7XG5cdFx0fVxuXHR9KTtcblxuXHRyZXR1cm4gc3RvcmU7XG59XG5cbmV4cG9ydCBjb25zdCBOR1RfU1RPUkUgPSBuZXcgSW5qZWN0aW9uVG9rZW48Tmd0U2lnbmFsU3RvcmU8Tmd0U3RhdGU+PignTmd0U3RvcmUgVG9rZW4nKTtcbmV4cG9ydCBjb25zdCBbaW5qZWN0Tmd0U3RvcmUsIHByb3ZpZGVOZ3RTdG9yZV0gPSBjcmVhdGVJbmplY3Rpb25Ub2tlbihzdG9yZUZhY3RvcnksIHtcblx0aXNSb290OiBmYWxzZSxcblx0ZGVwczogW1tuZXcgT3B0aW9uYWwoKSwgbmV3IFNraXBTZWxmKCksIE5HVF9TVE9SRV1dLFxuXHR0b2tlbjogTkdUX1NUT1JFLFxufSk7XG4iXX0=
181
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9GLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3pFLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFVLEtBQUssRUFBK0MsT0FBTyxFQUFFLE9BQU8sRUFBaUIsTUFBTSxPQUFPLENBQUM7QUFHcEgsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUN2QyxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ2hDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDdkMsT0FBTyxFQUFrQixXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUE4SDlDLFNBQVMsWUFBWSxDQUFDLGFBQThDO0lBQ25FLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNsQyxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsV0FBVyxDQUFDO0lBRXBDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNiLGdFQUFnRTtRQUNoRSxNQUFNLElBQUksS0FBSyxDQUFDLGdDQUFnQyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVELE1BQU0sSUFBSSxHQUFHLGFBQWEsRUFBRSxDQUFDO0lBRTdCLG9FQUFvRTtJQUNwRSxNQUFNLGNBQWMsR0FBRyxJ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WSxpQkFBaUIsQ0FBQztZQUMzRyxFQUFFLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQztRQUN4RCxDQUFDO1FBRUQsMENBQTBDO1FBQzFDLElBQUksU0FBUyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQzdCLFNBQVMsR0FBRyxTQUFTLENBQUM7WUFDdEIsWUFBWSxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUNqQyxrQkFBa0I7WUFDbEIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxFQUFFLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBRSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNqSCxDQUFDO0lBQ0YsQ0FBQyxDQUFDLENBQUM7SUFFSCxPQUFPLEtBQUssQ0FBQztBQUNkLENBQUM7QUFFRCxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsSUFBSSxjQUFjLENBQTJCLGdCQUFnQixDQUFDLENBQUM7QUFDeEYsTUFBTSxDQUFDLE1BQU0sQ0FBQyxjQUFjLEVBQUUsZUFBZSxDQUFDLEdBQUcsb0JBQW9CLENBQUMsWUFBWSxFQUFFO0lBQ25GLE1BQU0sRUFBRSxLQUFLO0lBQ2IsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLFFBQVEsRUFBRSxFQUFFLElBQUksUUFBUSxFQUFFLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDbkQsS0FBSyxFQUFFLFNBQVM7Q0FDaEIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRWxlbWVudFJlZiwgSW5qZWN0aW9uVG9rZW4sIE9wdGlvbmFsLCBTa2lwU2VsZiwgZWZmZWN0LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNyZWF0ZUluamVjdGlvblRva2VuIH0gZnJvbSAnbmd4dGVuc2lvbi9jcmVhdGUtaW5qZWN0aW9uLXRva2VuJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENhbWVyYSwgQ2xvY2ssIEV2ZW50RGlzcGF0Y2hlciwgT2JqZWN0M0QsIFJheWNhc3RlciwgU2NlbmUsIFZlY3RvcjIsIFZlY3RvcjMsIFdlYkdMUmVuZGVyZXIgfSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBOZ3RDYW1lcmEsIE5ndERvbUV2ZW50LCBOZ3RFdmVudE1hbmFnZXIsIE5ndFBvaW50ZXJDYXB0dXJlVGFyZ2V0LCBOZ3RUaHJlZUV2ZW50IH0gZnJvbSAnLi9ldmVudHMnO1xuaW1wb3J0IHsgTmd0SW5zdGFuY2VOb2RlIH0gZnJvbSAnLi9pbnN0YW5jZSc7XG5pbXBvcnQgeyBpbmplY3ROZ3RMb29wIH0gZnJvbSAnLi9sb29wJztcbmltcG9ydCB7IGlzIH0gZnJvbSAnLi91dGlscy9pcyc7XG5pbXBvcnQgeyBtYWtlRHByIH0gZnJvbSAnLi91dGlscy9tYWtlJztcbmltcG9ydCB7IE5ndFNpZ25hbFN0b3JlLCBzaWduYWxTdG9yZSB9IGZyb20gJy4vdXRpbHMvc2lnbmFsLXN0b3JlJztcbmltcG9ydCB7IHVwZGF0ZUNhbWVyYSB9IGZyb20gJy4vdXRpbHMvdXBkYXRlJztcblxuZXhwb3J0IHR5cGUgTmd0UmVuZGVyZXJMaWtlID0geyByZW5kZXI6IChzY2VuZTogU2NlbmUsIGNhbWVyYTogQ2FtZXJhKSA9PiBhbnkgfTtcbmV4cG9ydCB0eXBlIE5ndENhbWVyYU1hbnVhbCA9IE5ndENhbWVyYSAmIHsgbWFudWFsPzogYm9vbGVhbiB9O1xuZXhwb3J0IHR5cGUgTmd0RHByID0gbnVtYmVyIHwgW21pbjogbnVtYmVyLCBtYXg6IG51bWJlcl07XG5leHBvcnQgdHlwZSBOZ3RTaXplID0geyB3aWR0aDogbnVtYmVyOyBoZWlnaHQ6IG51bWJlcjsgdG9wOiBudW1iZXI7IGxlZnQ6IG51bWJlciB9O1xuXG5leHBvcnQgdHlwZSBOZ3RWaWV3cG9ydCA9IE5ndFNpemUgJiB7XG5cdC8qKiBUaGUgaW5pdGlhbCBwaXhlbCByYXRpbyAqL1xuXHRpbml0aWFsRHByOiBudW1iZXI7XG5cdC8qKiBDdXJyZW50IHBpeGVsIHJhdGlvICovXG5cdGRwcjogbnVtYmVyO1xuXHQvKiogc2l6ZS53aWR0aCAvIHZpZXdwb3J0LndpZHRoICovXG5cdGZhY3RvcjogbnVtYmVyO1xuXHQvKiogQ2FtZXJhIGRpc3RhbmNlICovXG5cdGRpc3RhbmNlOiBudW1iZXI7XG5cdC8qKiBDYW1lcmEgYXNwZWN0IHJhdGlvOiB3aWR0aCAvIGhlaWdodCAqL1xuXHRhc3BlY3Q6IG51bWJlcjtcbn07XG5cbmV4cG9ydCB0eXBlIE5ndFBlcmZvcm1hbmNlID0ge1xuXHQvKiogQ3VycmVudCBwZXJmb3JtYW5jZSBub3JtYWwsIGJldHdlZW4gbWluIGFuZCBtYXggKi9cblx0Y3VycmVudDogbnVtYmVyO1xuXHQvKiogSG93IGxvdyB0aGUgcGVyZm9ybWFuY2UgY2FuIGdvLCBiZXR3ZWVuIDAgYW5kIG1heCAqL1xuXHRtaW46IG51bWJlcjtcblx0LyoqIEhvdyBoaWdoIHRoZSBwZXJmb3JtYW5jZSBjYW4gZ28sIGJldHdlZW4gbWluIGFuZCBtYXggKi9cblx0bWF4OiBudW1iZXI7XG5cdC8qKiBUaW1lIHVudGlsIGN1cnJlbnQgcmV0dXJucyB0byBtYXggaW4gbXMgKi9cblx0ZGVib3VuY2U6IG51bWJlcjtcblx0LyoqIFNldHMgY3VycmVudCB0byBtaW4sIHB1dHMgdGhlIHN5c3RlbSBpbiByZWdyZXNzaW9uICovXG5cdHJlZ3Jlc3M6ICgpID0+IHZvaWQ7XG59O1xuXG5leHBvcnQgdHlwZSBOZ3RSZW5kZXJTdGF0ZSA9IE5ndFN0YXRlICYgeyBkZWx0YTogbnVtYmVyOyBmcmFtZT86IFhSRnJhbWUgfTtcblxuZXhwb3J0IHR5cGUgTmd0QmVmb3JlUmVuZGVyRXZlbnQ8VE9iamVjdCBleHRlbmRzIE5ndEluc3RhbmNlTm9kZSA9IE5ndEluc3RhbmNlTm9kZT4gPSB7XG5cdHN0YXRlOiBOZ3RSZW5kZXJTdGF0ZTtcblx0b2JqZWN0OiBUT2JqZWN0O1xufTtcblxuZXhwb3J0IHR5cGUgTmd0QmVmb3JlUmVuZGVyUmVjb3JkID0ge1xuXHRjYWxsYmFjazogKHN0YXRlOiBOZ3RSZW5kZXJTdGF0ZSkgPT4gdm9pZDtcblx0c3RvcmU6IE5ndFNpZ25hbFN0b3JlPE5ndFN0YXRlPjtcblx0cHJpb3JpdHk/OiBudW1iZXI7XG59O1xuXG5leHBvcnQgdHlwZSBOZ3RJbnRlcm5hbFN0YXRlID0ge1xuXHRhY3RpdmU6IGJvb2xlYW47XG5cdHByaW9yaXR5OiBudW1iZXI7XG5cdGZyYW1lczogbnVtYmVyO1xuXHRsYXN0RXZlbnQ6IEVsZW1lbnRSZWY8Tmd0RG9tRXZlbnQgfCBudWxsPjtcblx0aW50ZXJhY3Rpb246IE9iamVjdDNEW107XG5cdGhvdmVyZWQ6IE1hcDxzdHJpbmcsIE5ndFRocmVlRXZlbnQ8Tmd0RG9tRXZlbnQ+Pjtcblx0Y2FwdHVyZWRNYXA6IE1hcDxudW1iZXIsIE1hcDxPYmplY3QzRCwgTmd0UG9pbnRlckNhcHR1cmVUYXJnZXQ+Pjtcblx0aW5pdGlhbENsaWNrOiBbeDogbnVtYmVyLCB5OiBudW1iZXJdO1xuXHRpbml0aWFsSGl0czogT2JqZWN0M0RbXTtcblx0c3Vic2NyaWJlcnM6IE5ndEJlZm9yZVJlbmRlclJlY29yZFtdO1xuXHRzdWJzY3JpYmU6IChcblx0XHRjYWxsYmFjazogTmd0QmVmb3JlUmVuZGVyUmVjb3JkWydjYWxsYmFjayddLFxuXHRcdHByaW9yaXR5PzogbnVtYmVyLFxuXHRcdHN0b3JlPzogTmd0U2lnbmFsU3RvcmU8Tmd0U3RhdGU+LFxuXHQpID0+ICgpID0+IHZvaWQ7XG59O1xuXG5leHBvcnQgdHlwZSBOZ3RTdGF0ZSA9IHtcblx0LyoqIFRoZSBpbnN0YW5jZSBvZiB0aGUgcmVuZGVyZXIgKi9cblx0Z2w6IFdlYkdMUmVuZGVyZXI7XG5cdC8qKiBEZWZhdWx0IGNhbWVyYSAqL1xuXHRjYW1lcmE6IE5ndENhbWVyYU1hbnVhbDtcblx0LyoqIERlZmF1bHQgc2NlbmUgKi9cblx0c2NlbmU6IFNjZW5lO1xuXHQvKiogRGVmYXVsdCByYXljYXN0ZXIgKi9cblx0cmF5Y2FzdGVyOiBSYXljYXN0ZXI7XG5cdC8qKiBEZWZhdWx0IGNsb2NrICovXG5cdGNsb2NrOiBDbG9jaztcblx0LyoqIEV2ZW50IGxheWVyIGludGVyZmFjZSwgY29udGFpbnMgdGhlIGV2ZW50IGhhbmRsZXIgYW5kIHRoZSBub2RlIHRoZXkncmUgY29ubmVjdGVkIHRvICovXG5cdGV2ZW50czogTmd0RXZlbnRNYW5hZ2VyPGFueT47XG5cdC8qKiBYUiBpbnRlcmZhY2UgKi9cblx0eHI6IHsgY29ubmVjdDogKCkgPT4gdm9pZDsgZGlzY29ubmVjdDogKCkgPT4gdm9pZCB9O1xuXHQvKiogQ3VycmVudGx5IHVzZWQgY29udHJvbHMgKi9cblx0Y29udHJvbHM6IEV2ZW50RGlzcGF0Y2hlciB8IG51bGw7XG5cdC8qKiBOb3JtYWxpemVkIGV2ZW50IGNvb3JkaW5hdGVzICovXG5cdHBvaW50ZXI6IFZlY3RvcjI7XG5cdC8qIFdoZXRoZXIgdG8gZW5hYmxlIHIxMzkncyBDb2xvck1hbmFnZW1lbnQgKi9cblx0bGVnYWN5OiBib29sZWFuO1xuXHQvKiogU2hvcnRjdXQgdG8gZ2wub3V0cHV0Q29sb3JTcGFjZSA9IExpbmVhclNSR0JDb2xvclNwYWNlICovXG5cdGxpbmVhcjogYm9vbGVhbjtcblx0LyoqIFNob3J0Y3V0IHRvIGdsLnRvbmVNYXBwaW5nID0gTm9Ub25lbWFwcGluZyAqL1xuXHRmbGF0OiBib29sZWFuO1xuXHQvKiogUmVuZGVyIGxvb3AgZmxhZ3MgKi9cblx0ZnJhbWVsb29wOiAnYWx3YXlzJyB8ICdkZW1hbmQnIHwgJ25ldmVyJztcblx0LyoqIEFkYXB0aXZlIHBlcmZvcm1hbmNlIGludGVyZmFjZSAqL1xuXHRwZXJmb3JtYW5jZTogTmd0UGVyZm9ybWFuY2U7XG5cdC8qKiBSZWFjdGl2ZSBwaXhlbC1zaXplIG9mIHRoZSBjYW52YXMgKi9cblx0c2l6ZTogTmd0U2l6ZTtcblx0LyoqIFJlYWN0aXZlIHNpemUgb2YgdGhlIHZpZXdwb3J0IGluIHRocmVlanMgdW5pdHMgKi9cblx0dmlld3BvcnQ6IE5ndFZpZXdwb3J0ICYge1xuXHRcdGdldEN1cnJlbnRWaWV3cG9ydDogKFxuXHRcdFx0Y2FtZXJhPzogTmd0Q2FtZXJhLFxuXHRcdFx0dGFyZ2V0PzogVmVjdG9yMyB8IFBhcmFtZXRlcnM8VmVjdG9yM1snc2V0J10+LFxuXHRcdFx0c2l6ZT86IE5ndFNpemUsXG5cdFx0KSA9PiBPbWl0PE5ndFZpZXdwb3J0LCAnZHByJyB8ICdpbml0aWFsRHByJz47XG5cdH07XG5cdC8qKiBGbGFncyB0aGUgY2FudmFzIGZvciByZW5kZXIsIGJ1dCBkb2Vzbid0IHJlbmRlciBpbiBpdHNlbGYgKi9cblx0aW52YWxpZGF0ZTogKGZyYW1lcz86IG51bWJlcikgPT4gdm9pZDtcblx0LyoqIEFkdmFuY2UgKHJlbmRlcikgb25lIHN0ZXAgKi9cblx0YWR2YW5jZTogKHRpbWVzdGFtcDogbnVtYmVyLCBydW5HbG9iYWxFZmZlY3RzPzogYm9vbGVhbikgPT4gdm9pZDtcblx0LyoqIFNob3J0Y3V0IHRvIHNldHRpbmcgdGhlIGV2ZW50IGxheWVyICovXG5cdHNldEV2ZW50czogKGV2ZW50czogUGFydGlhbDxOZ3RFdmVudE1hbmFnZXI8YW55Pj4pID0+IHZvaWQ7XG5cdC8qKlxuXHQgKiBTaG9ydGN1dCB0byBtYW51YWwgc2l6aW5nXG5cdCAqL1xuXHRzZXRTaXplOiAod2lkdGg6IG51bWJlciwgaGVpZ2h0OiBudW1iZXIsIHRvcD86IG51bWJlciwgbGVmdD86IG51bWJlcikgPT4gdm9pZDtcblx0LyoqIFNob3J0Y3V0IHRvIG1hbnVhbCBzZXR0aW5nIHRoZSBwaXhlbCByYXRpbyAqL1xuXHRzZXREcHI6IChkcHI6IE5ndERwcikgPT4gdm9pZDtcblx0LyoqIFNob3J0Y3V0IHRvIGZyYW1lbG9vcCBmbGFncyAqL1xuXHRzZXRGcmFtZWxvb3A6IChmcmFtZWxvb3A/OiAnYWx3YXlzJyB8ICdkZW1hbmQnIHwgJ25ldmVyJykgPT4gdm9pZDtcblx0LyoqIFdoZW4gdGhlIGNhbnZhcyB3YXMgY2xpY2tlZCBidXQgbm90aGluZyB3YXMgaGl0ICovXG5cdC8qKiBQb2ludGVyTWlzc2VkIE9ic2VydmFibGUgKi9cblx0cG9pbnRlck1pc3NlZCQ6IE9ic2VydmFibGU8TW91c2VFdmVudD47XG5cdC8qKiBJZiB0aGlzIHN0YXRlIG1vZGVsIGlzIGxheWVyZWQgKHZpYSBjcmVhdGVQb3J0YWwpIHRoZW4gdGhpcyBjb250YWlucyB0aGUgcHJldmlvdXMgbGF5ZXIgKi9cblx0cHJldmlvdXNSb290OiBOZ3RTaWduYWxTdG9yZTxOZ3RTdGF0ZT4gfCBudWxsO1xuXHQvKiogSW50ZXJuYWxzICovXG5cdGludGVybmFsOiBOZ3RJbnRlcm5hbFN0YXRlO1xufTtcblxuZnVuY3Rpb24gc3RvcmVGYWN0b3J5KHByZXZpb3VzU3RvcmU6IE5ndFNpZ25hbFN0b3JlPE5ndFN0YXRlPiB8IG51bGwpIHtcblx0Y29uc3QgZG9jdW1lbnQgPSBpbmplY3QoRE9DVU1FTlQpO1xuXHRjb25zdCB3aW5kb3cgPSBkb2N1bWVudC5kZWZhdWx0VmlldztcblxuXHRpZiAoIXdpbmRvdykge1xuXHRcdC8vIFRPRE86IHJldmlzaXQgdGhpcyB3aGVuIHdlIG5lZWQgdG8gc3VwcG9ydCBtdWx0aXBsZSBwbGF0Zm9ybXNcblx0XHR0aHJvdyBuZXcgRXJyb3IoYFtOR1RdIFdpbmRvdyBpcyBub3QgYXZhaWxhYmxlLmApO1xuXHR9XG5cblx0Y29uc3QgbG9vcCA9IGluamVjdE5ndExvb3AoKTtcblxuXHQvLyBOT1RFOiB1c2luZyBTdWJqZWN0IGJlY2F1c2Ugd2UgZG8gbm90IGNhcmUgYWJvdXQgbGF0ZS1zdWJzY3JpYmVyc1xuXHRjb25zdCBwb2ludGVyTWlzc2VkJCA9IG5ldyBTdWJqZWN0PE1vdXNlRXZlbnQ+KCk7XG5cblx0Y29uc3Qgc3RvcmU6IE5ndFNpZ25hbFN0b3JlPE5ndFN0YXRlPiA9IHNpZ25hbFN0b3JlPE5ndFN0YXRlPigoeyBnZXQsIHVwZGF0ZSB9KSA9PiB7XG5cdFx0Y29uc3QgeyBpbnZhbGlkYXRlLCBhZHZhbmNlIH0gPSBsb29wO1xuXG5cdFx0Y29uc3QgcG9zaXRpb24gPSBuZXcgVmVjdG9yMygpO1xuXHRcdGNvbnN0IGRlZmF1bHRUYXJnZXQgPSBuZXcgVmVjdG9yMygpO1xuXHRcdGNvbnN0IHRlbXBUYXJnZXQgPSBuZXcgVmVjdG9yMygpO1xuXG5cdFx0ZnVuY3Rpb24gZ2V0Q3VycmVudFZpZXdwb3J0KFxuXHRcdFx0Y2FtZXJhOiBOZ3RDYW1lcmEgPSBnZXQoJ2NhbWVyYScpLFxuXHRcdFx0dGFyZ2V0OiBWZWN0b3IzIHwgUGFyYW1ldGVyczxWZWN0b3IzWydzZXQnXT4gPSBkZWZhdWx0VGFyZ2V0LFxuXHRcdFx0c2l6ZTogTmd0U2l6ZSA9IGdldCgnc2l6ZScpLFxuXHRcdCk6IE9taXQ8Tmd0Vmlld3BvcnQsICdkcHInIHwgJ2luaXRpYWxEcHInPiB7XG5cdFx0XHRjb25zdCB7IHdpZHRoLCBoZWlnaHQsIHRvcCwgbGVmdCB9ID0gc2l6ZTtcblx0XHRcdGNvbnN0IGFzcGVjdCA9IHdpZHRoIC8gaGVpZ2h0O1xuXG5cdFx0XHRpZiAodGFyZ2V0IGluc3RhbmNlb2YgVmVjdG9yMykgdGVtcFRhcmdldC5jb3B5KHRhcmdldCk7XG5cdFx0XHRlbHNlIHRlbXBUYXJnZXQuc2V0KC4uLnRhcmdldCk7XG5cblx0XHRcdGNvbnN0IGRpc3RhbmNlID0gY2FtZXJhLmdldFdvcmxkUG9zaXRpb24ocG9zaXRpb24pLmRpc3RhbmNlVG8odGVtcFRhcmdldCk7XG5cblx0XHRcdGlmIChpcy5vcnRob2dyYXBoaWNDYW1lcmEoY2FtZXJhKSkge1xuXHRcdFx0XHRyZXR1cm4geyB3aWR0aDogd2lkdGggLyBjYW1lcmEuem9vbSwgaGVpZ2h0OiBoZWlnaHQgLyBjYW1lcmEuem9vbSwgdG9wLCBsZWZ0LCBmYWN0b3I6IDEsIGRpc3RhbmNlLCBhc3BlY3QgfTtcblx0XHRcdH1cblxuXHRcdFx0Y29uc3QgZm92ID0gKGNhbWVyYS5mb3YgKiBNYXRoLlBJKSAvIDE4MDsgLy8gY29udmVydCB2ZXJ0aWNhbCBmb3YgdG8gcmFkaWFuc1xuXHRcdFx0Y29uc3QgaCA9IDIgKiBNYXRoLnRhbihmb3YgLyAyKSAqIGRpc3RhbmNlOyAvLyB2aXNpYmxlIGhlaWdodFxuXHRcdFx0Y29uc3QgdyA9IGggKiAod2lkdGggLyBoZWlnaHQpO1xuXHRcdFx0cmV0dXJuIHsgd2lkdGg6IHcsIGhlaWdodDogaCwgdG9wLCBsZWZ0LCBmYWN0b3I6IHdpZHRoIC8gdywgZGlzdGFuY2UsIGFzcGVjdCB9O1xuXHRcdH1cblxuXHRcdGxldCBwZXJmb3JtYW5jZVRpbWVvdXQ6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuXHRcdGNvbnN0IHNldFBlcmZvcm1hbmNlQ3VycmVudCA9IChjdXJyZW50OiBudW1iZXIpID0+XG5cdFx0XHR1cGRhdGUoKHN0YXRlKSA9PiAoeyBwZXJmb3JtYW5jZTogeyAuLi5zdGF0ZS5wZXJmb3JtYW5jZSwgY3VycmVudCB9IH0pKTtcblxuXHRcdGNvbnN0IHBvaW50ZXIgPSBuZXcgVmVjdG9yMigpO1xuXG5cdFx0cmV0dXJuIHtcblx0XHRcdHBvaW50ZXJNaXNzZWQkOiBwb2ludGVyTWlzc2VkJC5hc09ic2VydmFibGUoKSxcblx0XHRcdGV2ZW50czogeyBwcmlvcml0eTogMSwgZW5hYmxlZDogdHJ1ZSwgY29ubmVjdGVkOiBmYWxzZSB9LFxuXG5cdFx0XHRpbnZhbGlkYXRlOiAoZnJhbWVzID0gMSkgPT4gaW52YWxpZGF0ZShzdG9yZSwgZnJhbWVzKSxcblx0XHRcdGFkdmFuY2U6ICh0aW1lc3RhbXA6IG51bWJlciwgcnVuR2xvYmFsRWZmZWN0cz86IGJvb2xlYW4pID0+IGFkdmFuY2UodGltZXN0YW1wLCBydW5HbG9iYWxFZmZlY3RzLCBzdG9yZSksXG5cblx0XHRcdGxlZ2FjeTogZmFsc2UsXG5cdFx0XHRsaW5lYXI6IGZhbHNlLFxuXHRcdFx0ZmxhdDogZmFsc2UsXG5cblx0XHRcdGNvbnRyb2xzOiBudWxsLFxuXHRcdFx0Y2xvY2s6IG5ldyBDbG9jaygpLFxuXHRcdFx0cG9pbnRlcixcblxuXHRcdFx0ZnJhbWVsb29wOiAnYWx3YXlzJyxcblxuXHRcdFx0cGVyZm9ybWFuY2U6IHtcblx0XHRcdFx0Y3VycmVudDogMSxcblx0XHRcdFx0bWluOiAwLjUsXG5cdFx0XHRcdG1heDogMSxcblx0XHRcdFx0ZGVib3VuY2U6IDIwMCxcblx0XHRcdFx0cmVncmVzczogKCkgPT4ge1xuXHRcdFx0XHRcdGNvbnN0IHN0YXRlID0gZ2V0KCk7XG5cdFx0XHRcdFx0Ly8gQ2xlYXIgdGltZW91dFxuXHRcdFx0XHRcdGlmIChwZXJmb3JtYW5jZVRpbWVvdXQpIGNsZWFyVGltZW91dChwZXJmb3JtYW5jZVRpbWVvdXQpO1xuXHRcdFx0XHRcdC8vIFNldCBsb3dlciBib3VuZCBwZXJmb3JtYW5jZVxuXHRcdFx0XHRcdGlmIChzdGF0ZS5wZXJmb3JtYW5jZS5jdXJyZW50ICE9PSBzdGF0ZS5wZXJmb3JtYW5jZS5taW4pIHNldFBlcmZvcm1hbmNlQ3VycmVudChzdGF0ZS5wZXJmb3JtYW5jZS5taW4pO1xuXHRcdFx0XHRcdC8vIEdvIGJhY2sgdG8gdXBwZXIgYm91bmQgcGVyZm9ybWFuY2UgYWZ0ZXIgYSB3aGlsZSB1bmxlc3Mgc29tZXRoaW5nIHJlZ3Jlc3NlcyBtZWFud2hpbGVcblx0XHRcdFx0XHRwZXJmb3JtYW5jZVRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcblx0XHRcdFx0XHRcdHNldFBlcmZvcm1hbmNlQ3VycmVudChnZXQoJ3BlcmZvcm1hbmNlJywgJ21heCcpKTtcblx0XHRcdFx0XHRcdC8vIHNhZmVEZXRlY3RDaGFuZ2VzKGNkcik7XG5cdFx0XHRcdFx0fSwgc3RhdGUucGVyZm9ybWFuY2UuZGVib3VuY2UpO1xuXHRcdFx0XHR9LFxuXHRcdFx0fSxcblxuXHRcdFx0c2l6ZTogeyB3aWR0aDogMCwgaGVpZ2h0OiAwLCB0b3A6IDAsIGxlZnQ6IDAsIHVwZGF0ZVN0eWxlOiBmYWxzZSB9LFxuXHRcdFx0dmlld3BvcnQ6IHtcblx0XHRcdFx0aW5pdGlhbERwcjogMCxcblx0XHRcdFx0ZHByOiAwLFxuXHRcdFx0XHR3aWR0aDogMCxcblx0XHRcdFx0aGVpZ2h0OiAwLFxuXHRcdFx0XHR0b3A6IDAsXG5cdFx0XHRcdGxlZnQ6IDAsXG5cdFx0XHRcdGFzcGVjdDogMCxcblx0XHRcdFx0ZGlzdGFuY2U6IDAsXG5cdFx0XHRcdGZhY3RvcjogMCxcblx0XHRcdFx0Z2V0Q3VycmVudFZpZXdwb3J0LFxuXHRcdFx0fSxcblxuXHRcdFx0c2V0RXZlbnRzOiAoZXZlbnRzOiBQYXJ0aWFsPE5ndEV2ZW50TWFuYWdlcjxhbnk+PikgPT5cblx0XHRcdFx0dXBkYXRlKChzdGF0ZSkgPT4gKHsgLi4uc3RhdGUsIGV2ZW50czogeyAuLi5zdGF0ZS5ldmVudHMsIC4uLmV2ZW50cyB9IH0pKSxcblx0XHRcdHNldFNpemU6ICh3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlciwgdG9wPzogbnVtYmVyLCBsZWZ0PzogbnVtYmVyKSA9PiB7XG5cdFx0XHRcdGNvbnN0IGNhbWVyYSA9IGdldCgnY2FtZXJhJyk7XG5cdFx0XHRcdGNvbnN0IHNpemUgPSB7IHdpZHRoLCBoZWlnaHQsIHRvcDogdG9wIHx8IDAsIGxlZnQ6IGxlZnQgfHwgMCB9O1xuXHRcdFx0XHR1cGRhdGUoKHN0YXRlKSA9PiAoe1xuXHRcdFx0XHRcdHNpemUsXG5cdFx0XHRcdFx0dmlld3BvcnQ6IHsgLi4uc3RhdGUudmlld3BvcnQsIC4uLmdldEN1cnJlbnRWaWV3cG9ydChjYW1lcmEsIGRlZmF1bHRUYXJnZXQsIHNpemUpIH0sXG5cdFx0XHRcdH0pKTtcblx0XHRcdH0sXG5cdFx0XHRzZXREcHI6IChkcHI6IE5ndERwcikgPT5cblx0XHRcdFx0dXBkYXRlKChzdGF0ZSkgPT4ge1xuXHRcdFx0XHRcdGNvbnN0IHJlc29sdmVkID0gbWFrZURwcihkcHIsIHdpbmRvdyk7XG5cdFx0XHRcdFx0cmV0dXJuIHsgdmlld3BvcnQ6IHsgLi4uc3RhdGUudmlld3BvcnQsIGRwcjogcmVzb2x2ZWQsIGluaXRpYWxEcHI6IHN0YXRlLnZpZXdwb3J0LmluaXRpYWxEcHIgfHwgcmVzb2x2ZWQgfSB9O1xuXHRcdFx0XHR9KSxcblx0XHRcdHNldEZyYW1lbG9vcDogKGZyYW1lbG9vcDogJ2Fsd2F5cycgfCAnZGVtYW5kJyB8ICduZXZlcicgPSAnYWx3YXlzJykgPT4ge1xuXHRcdFx0XHRjb25zdCBjbG9jayA9IGdldCgnY2xvY2snKTtcblxuXHRcdFx0XHQvLyBpZiBmcmFtZWxvb3AgPT09IFwibmV2ZXJcIiBjbG9jay5lbGFwc2VkVGltZSBpcyB1cGRhdGVkIHVzaW5nIGFkdmFuY2UodGltZXN0YW1wKVxuXHRcdFx0XHRjbG9jay5zdG9wKCk7XG5cdFx0XHRcdGNsb2NrLmVsYXBzZWRUaW1lID0gMDtcblxuXHRcdFx0XHRpZiAoZnJhbWVsb29wICE9PSAnbmV2ZXInKSB7XG5cdFx0XHRcdFx0Y2xvY2suc3RhcnQoKTtcblx0XHRcdFx0XHRjbG9jay5lbGFwc2VkVGltZSA9IDA7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHR1cGRhdGUoKCkgPT4gKHsgZnJhbWVsb29wIH0pKTtcblx0XHRcdH0sXG5cblx0XHRcdHByZXZpb3VzUm9vdDogcHJldmlvdXNTdG9yZSxcblx0XHRcdGludGVybmFsOiB7XG5cdFx0XHRcdGFjdGl2ZTogZmFsc2UsXG5cdFx0XHRcdHByaW9yaXR5OiAwLFxuXHRcdFx0XHRmcmFtZXM6IDAsXG5cdFx0XHRcdGxhc3RFdmVudDogbmV3IEVsZW1lbnRSZWYobnVsbCksXG5cdFx0XHRcdGludGVyYWN0aW9uOiBbXSxcblx0XHRcdFx0aG92ZXJlZDogbmV3IE1hcCgpLFxuXHRcdFx0XHRzdWJzY3JpYmVyczogW10sXG5cdFx0XHRcdGluaXRpYWxDbGljazogWzAsIDBdLFxuXHRcdFx0XHRpbml0aWFsSGl0czogW10sXG5cdFx0XHRcdGNhcHR1cmVkTWFwOiBuZXcgTWFwKCksXG5cdFx0XHRcdHN1YnNjcmliZTogKFxuXHRcdFx0XHRcdGNhbGxiYWNrOiBOZ3RCZWZvcmVSZW5kZXJSZWNvcmRbJ2NhbGxiYWNrJ10sXG5cdFx0XHRcdFx0cHJpb3JpdHkgPSAwLFxuXHRcdFx0XHRcdF9zdG9yZTogTmd0U2lnbmFsU3RvcmU8Tmd0U3RhdGU+ID0gc3RvcmUsXG5cdFx0XHRcdCkgPT4ge1xuXHRcdFx0XHRcdGNvbnN0IGludGVybmFsID0gZ2V0KCdpbnRlcm5hbCcpO1xuXHRcdFx0XHRcdC8vIElmIHRoaXMgc3Vic2NyaXB0aW9uIHdhcyBnaXZlbiBhIHByaW9yaXR5LCBpdCB0YWtlcyByZW5kZXJpbmcgaW50byBpdHMgb3duIGhhbmRzXG5cdFx0XHRcdFx0Ly8gRm9yIHRoYXQgcmVhc29uIHdlIHN3aXRjaCBvZmYgYXV0b21hdGljIHJlbmRlcmluZyBhbmQgaW5jcmVhc2UgdGhlIG1hbnVhbCBmbGFnXG5cdFx0XHRcdFx0Ly8gQXMgbG9uZyBhcyB0aGlzIGZsYWcgaXMgcG9zaXRpdmUgdGhlcmUgY2FuIGJlIG5vIGludGVybmFsIHJlbmRlcmluZyBhdCBhbGxcblx0XHRcdFx0XHQvLyBiZWNhdXNlIHRoZXJlIGNvdWxkIGJlIG11bHRpcGxlIHJlbmRlciBzdWJzY3JpcHRpb25zXG5cdFx0XHRcdFx0aW50ZXJuYWwucHJpb3JpdHkgPSBpbnRlcm5hbC5wcmlvcml0eSArIChwcmlvcml0eSA+IDAgPyAxIDogMCk7XG5cdFx0XHRcdFx0aW50ZXJuYWwuc3Vic2NyaWJlcnMucHVzaCh7IGNhbGxiYWNrLCBwcmlvcml0eSwgc3RvcmU6IF9zdG9yZSB9KTtcblx0XHRcdFx0XHQvLyBSZWdpc3RlciBzdWJzY3JpYmVyIGFuZCBzb3J0IGxheWVycyBmcm9tIGxvd2VzdCB0byBoaWdoZXN0LCBtZWFuaW5nLFxuXHRcdFx0XHRcdC8vIGhpZ2hlc3QgcHJpb3JpdHkgcmVuZGVycyBsYXN0IChvbiB0b3Agb2YgdGhlIG90aGVyIGZyYW1lcylcblx0XHRcdFx0XHRpbnRlcm5hbC5zdWJzY3JpYmVycyA9IGludGVybmFsLnN1YnNjcmliZXJzLnNvcnQoKGEsIGIpID0+IChhLnByaW9yaXR5IHx8IDApIC0gKGIucHJpb3JpdHkgfHwgMCkpO1xuXG5cdFx0XHRcdFx0cmV0dXJuICgpID0+IHtcblx0XHRcdFx0XHRcdGNvbnN0IGludGVybmFsID0gZ2V0KCdpbnRlcm5hbCcpO1xuXHRcdFx0XHRcdFx0aWYgKGludGVybmFsPy5zdWJzY3JpYmVycykge1xuXHRcdFx0XHRcdFx0XHQvLyBEZWNyZWFzZSBtYW51YWwgZmxhZyBpZiB0aGlzIHN1YnNjcmlwdGlvbiBoYWQgYSBwcmlvcml0eVxuXHRcdFx0XHRcdFx0XHRpbnRlcm5hbC5wcmlvcml0eSA9IGludGVybmFsLnByaW9yaXR5IC0gKHByaW9yaXR5ID4gMCA/IDEgOiAwKTtcblx0XHRcdFx0XHRcdFx0Ly8gUmVtb3ZlIHN1YnNjcmliZXIgZnJvbSBsaXN0XG5cdFx0XHRcdFx0XHRcdGludGVybmFsLnN1YnNjcmliZXJzID0gaW50ZXJuYWwuc3Vic2NyaWJlcnMuZmlsdGVyKChzKSA9PiBzLmNhbGxiYWNrICE9PSBjYWxsYmFjayk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0fSxcblx0XHRcdH0sXG5cdFx0fTtcblx0fSk7XG5cblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KHN0b3JlLCAncG9pbnRlck1pc3NlZCQnLCB7IGdldDogKCkgPT4gcG9pbnRlck1pc3NlZCQgfSk7XG5cblx0bGV0IHtcblx0XHRzaXplOiBvbGRTaXplLFxuXHRcdHZpZXdwb3J0OiB7IGRwcjogb2xkRHByIH0sXG5cdFx0Y2FtZXJhOiBvbGRDYW1lcmEsXG5cdH0gPSBzdG9yZS5zbmFwc2hvdDtcblxuXHRjb25zdCBbY2FtZXJhLCBzaXplLCB2aWV3cG9ydERwcl0gPSBbc3RvcmUuc2VsZWN0KCdjYW1lcmEnKSwgc3RvcmUuc2VsZWN0KCdzaXplJyksIHN0b3JlLnNlbGVjdCgndmlld3BvcnQnLCAnZHByJyldO1xuXG5cdGVmZmVjdCgoKSA9PiB7XG5cdFx0Y29uc3QgW25ld0NhbWVyYSwgbmV3U2l6ZSwgbmV3RHByLCBnbF0gPSBbY2FtZXJhKCksIHNpemUoKSwgdmlld3BvcnREcHIoKSwgc3RvcmUuc25hcHNob3QuZ2xdO1xuXG5cdFx0Ly8gUmVzaXplIGNhbWVyYSBhbmQgcmVuZGVyZXIgb24gY2hhbmdlcyB0byBzaXplIGFuZCBwaXhlbC1yYXRpb1xuXHRcdGlmIChuZXdTaXplICE9PSBvbGRTaXplIHx8IG5ld0RwciAhPT0gb2xkRHByKSB7XG5cdFx0XHRvbGRTaXplID0gbmV3U2l6ZTtcblx0XHRcdG9sZERwciA9IG5ld0Rwcjtcblx0XHRcdC8vIFVwZGF0ZSBjYW1lcmEgJiByZW5kZXJlclxuXHRcdFx0dXBkYXRlQ2FtZXJhKG5ld0NhbWVyYSwgbmV3U2l6ZSk7XG5cdFx0XHRnbC5zZXRQaXhlbFJhdGlvKG5ld0Rwcik7XG5cblx0XHRcdGNvbnN0IHVwZGF0ZVN0eWxlID0gdHlwZW9mIEhUTUxDYW52YXNFbGVtZW50ICE9PSAndW5kZWZpbmVkJyAmJiBnbC5kb21FbGVtZW50IGluc3RhbmNlb2YgSFRNTENhbnZhc0VsZW1lbnQ7XG5cdFx0XHRnbC5zZXRTaXplKG5ld1NpemUud2lkdGgsIG5ld1NpemUuaGVpZ2h0LCB1cGRhdGVTdHlsZSk7XG5cdFx0fVxuXG5cdFx0Ly8gVXBkYXRlIHZpZXdwb3J0IG9uY2UgdGhlIGNhbWVyYSBjaGFuZ2VzXG5cdFx0aWYgKG5ld0NhbWVyYSAhPT0gb2xkQ2FtZXJhKSB7XG5cdFx0XHRvbGRDYW1lcmEgPSBuZXdDYW1lcmE7XG5cdFx0XHR1cGRhdGVDYW1lcmEobmV3Q2FtZXJhLCBuZXdTaXplKTtcblx0XHRcdC8vIFVwZGF0ZSB2aWV3cG9ydFxuXHRcdFx0c3RvcmUudXBkYXRlKChzdGF0ZSkgPT4gKHsgdmlld3BvcnQ6IHsgLi4uc3RhdGUudmlld3BvcnQsIC4uLnN0YXRlLnZpZXdwb3J0LmdldEN1cnJlbnRWaWV3cG9ydChuZXdDYW1lcmEpIH0gfSkpO1xuXHRcdH1cblx0fSk7XG5cblx0cmV0dXJuIHN0b3JlO1xufVxuXG5leHBvcnQgY29uc3QgTkdUX1NUT1JFID0gbmV3IEluamVjdGlvblRva2VuPE5ndFNpZ25hbFN0b3JlPE5ndFN0YXRlPj4oJ05ndFN0b3JlIFRva2VuJyk7XG5leHBvcnQgY29uc3QgW2luamVjdE5ndFN0b3JlLCBwcm92aWRlTmd0U3RvcmVdID0gY3JlYXRlSW5qZWN0aW9uVG9rZW4oc3RvcmVGYWN0b3J5LCB7XG5cdGlzUm9vdDogZmFsc2UsXG5cdGRlcHM6IFtbbmV3IE9wdGlvbmFsKCksIG5ldyBTa2lwU2VsZigpLCBOR1RfU1RPUkVdXSxcblx0dG9rZW46IE5HVF9TVE9SRSxcbn0pO1xuIl19