angular-three 2.0.0-beta.25 → 2.0.0-beta.251

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 (122) hide show
  1. package/esm2022/index.mjs +5 -12
  2. package/esm2022/lib/canvas.mjs +124 -196
  3. package/esm2022/lib/directives/args.mjs +46 -20
  4. package/esm2022/lib/dom/events.mjs +2 -2
  5. package/esm2022/lib/events.mjs +33 -31
  6. package/esm2022/lib/instance.mjs +43 -36
  7. package/esm2022/lib/loader.mjs +50 -32
  8. package/esm2022/lib/loop.mjs +28 -25
  9. package/esm2022/lib/portal.mjs +173 -193
  10. package/esm2022/lib/renderer/catalogue.mjs +3 -3
  11. package/esm2022/lib/renderer/constants.mjs +5 -6
  12. package/esm2022/lib/renderer/index.mjs +345 -231
  13. package/esm2022/lib/renderer/state.mjs +49 -0
  14. package/esm2022/lib/renderer/utils.mjs +76 -87
  15. package/esm2022/lib/roots.mjs +87 -76
  16. package/esm2022/lib/routed-scene.mjs +6 -7
  17. package/esm2022/lib/store.mjs +170 -194
  18. package/esm2022/lib/three-types.mjs +2 -2
  19. package/esm2022/lib/utils/apply-props.mjs +24 -28
  20. package/esm2022/lib/utils/attach.mjs +6 -6
  21. package/esm2022/lib/utils/before-render.mjs +23 -0
  22. package/esm2022/lib/utils/create-api-token.mjs +13 -0
  23. package/esm2022/lib/utils/is.mjs +6 -5
  24. package/esm2022/lib/utils/make.mjs +19 -17
  25. package/esm2022/lib/utils/parameters.mjs +61 -0
  26. package/esm2022/lib/utils/resolve-ref.mjs +8 -0
  27. package/esm2022/lib/utils/signal-store.mjs +59 -60
  28. package/esm2022/lib/utils/update.mjs +6 -2
  29. package/fesm2022/angular-three.mjs +2254 -2683
  30. package/fesm2022/angular-three.mjs.map +1 -1
  31. package/index.d.ts +7 -11
  32. package/lib/canvas.d.ts +398 -53
  33. package/lib/directives/args.d.ts +13 -6
  34. package/lib/dom/events.d.ts +3 -3
  35. package/lib/events.d.ts +15 -15
  36. package/lib/instance.d.ts +25 -20
  37. package/lib/loader.d.ts +17 -7
  38. package/lib/loop.d.ts +9 -56
  39. package/lib/portal.d.ts +55 -48
  40. package/lib/renderer/catalogue.d.ts +6 -2
  41. package/lib/renderer/constants.d.ts +4 -5
  42. package/lib/renderer/index.d.ts +65 -4
  43. package/lib/renderer/state.d.ts +23 -0
  44. package/lib/renderer/utils.d.ts +8 -26
  45. package/lib/roots.d.ts +12 -6
  46. package/lib/store.d.ts +30 -32
  47. package/lib/three-types.d.ts +142 -145
  48. package/lib/utils/apply-props.d.ts +2 -3
  49. package/lib/utils/attach.d.ts +4 -4
  50. package/lib/utils/before-render.d.ts +10 -0
  51. package/lib/utils/create-api-token.d.ts +23 -0
  52. package/lib/utils/is.d.ts +13 -13
  53. package/lib/utils/make.d.ts +10 -9
  54. package/lib/utils/parameters.d.ts +15 -0
  55. package/lib/utils/resolve-ref.d.ts +2 -0
  56. package/lib/utils/signal-store.d.ts +13 -4
  57. package/lib/utils/update.d.ts +1 -1
  58. package/metadata.json +1 -1
  59. package/package.json +30 -11
  60. package/web-types.json +1 -1
  61. package/esm2022/lib/before-render.mjs +0 -13
  62. package/esm2022/lib/directives/common.mjs +0 -41
  63. package/esm2022/lib/directives/key.mjs +0 -29
  64. package/esm2022/lib/directives/parent.mjs +0 -35
  65. package/esm2022/lib/directives/repeat.mjs +0 -17
  66. package/esm2022/lib/ref.mjs +0 -48
  67. package/esm2022/lib/renderer/store.mjs +0 -408
  68. package/esm2022/lib/utils/assert-injection-context.mjs +0 -14
  69. package/esm2022/lib/utils/create-injection-token.mjs +0 -47
  70. package/esm2022/lib/utils/safe-detect-changes.mjs +0 -17
  71. package/lib/before-render.d.ts +0 -6
  72. package/lib/directives/common.d.ts +0 -15
  73. package/lib/directives/key.d.ts +0 -10
  74. package/lib/directives/parent.d.ts +0 -11
  75. package/lib/directives/repeat.d.ts +0 -7
  76. package/lib/ref.d.ts +0 -8
  77. package/lib/renderer/store.d.ts +0 -67
  78. package/lib/utils/assert-injection-context.d.ts +0 -2
  79. package/lib/utils/create-injection-token.d.ts +0 -27
  80. package/lib/utils/safe-detect-changes.d.ts +0 -2
  81. package/plugin/README.md +0 -11
  82. package/plugin/generators.json +0 -49
  83. package/plugin/package.json +0 -6
  84. package/plugin/src/generators/init/compat.d.ts +0 -4
  85. package/plugin/src/generators/init/compat.js +0 -6
  86. package/plugin/src/generators/init/compat.js.map +0 -1
  87. package/plugin/src/generators/init/files/experience/experience.component.html__tmpl__ +0 -4
  88. package/plugin/src/generators/init/files/experience/experience.component.ts__tmpl__ +0 -18
  89. package/plugin/src/generators/init/generator.d.ts +0 -6
  90. package/plugin/src/generators/init/generator.js +0 -155
  91. package/plugin/src/generators/init/generator.js.map +0 -1
  92. package/plugin/src/generators/init/schema.json +0 -17
  93. package/plugin/src/generators/init-cannon/compat.d.ts +0 -2
  94. package/plugin/src/generators/init-cannon/compat.js +0 -6
  95. package/plugin/src/generators/init-cannon/compat.js.map +0 -1
  96. package/plugin/src/generators/init-cannon/generator.d.ts +0 -2
  97. package/plugin/src/generators/init-cannon/generator.js +0 -22
  98. package/plugin/src/generators/init-cannon/generator.js.map +0 -1
  99. package/plugin/src/generators/init-cannon/schema.json +0 -6
  100. package/plugin/src/generators/init-postprocessing/compat.d.ts +0 -2
  101. package/plugin/src/generators/init-postprocessing/compat.js +0 -6
  102. package/plugin/src/generators/init-postprocessing/compat.js.map +0 -1
  103. package/plugin/src/generators/init-postprocessing/generator.d.ts +0 -2
  104. package/plugin/src/generators/init-postprocessing/generator.js +0 -20
  105. package/plugin/src/generators/init-postprocessing/generator.js.map +0 -1
  106. package/plugin/src/generators/init-postprocessing/schema.json +0 -6
  107. package/plugin/src/generators/init-soba/compat.d.ts +0 -2
  108. package/plugin/src/generators/init-soba/compat.js +0 -6
  109. package/plugin/src/generators/init-soba/compat.js.map +0 -1
  110. package/plugin/src/generators/init-soba/generator.d.ts +0 -2
  111. package/plugin/src/generators/init-soba/generator.js +0 -26
  112. package/plugin/src/generators/init-soba/generator.js.map +0 -1
  113. package/plugin/src/generators/init-soba/schema.json +0 -6
  114. package/plugin/src/generators/utils.d.ts +0 -2
  115. package/plugin/src/generators/utils.js +0 -34
  116. package/plugin/src/generators/utils.js.map +0 -1
  117. package/plugin/src/generators/versions.d.ts +0 -12
  118. package/plugin/src/generators/versions.js +0 -16
  119. package/plugin/src/generators/versions.js.map +0 -1
  120. package/plugin/src/index.d.ts +0 -3
  121. package/plugin/src/index.js +0 -10
  122. package/plugin/src/index.js.map +0 -1
@@ -0,0 +1,61 @@
1
+ import { computed } from '@angular/core';
2
+ import { Vector2, Vector3 } from 'three';
3
+ export function omit(objFn, keysToOmit) {
4
+ return computed(() => {
5
+ const obj = objFn();
6
+ const result = {};
7
+ for (const key of Object.keys(obj)) {
8
+ if (keysToOmit.includes(key))
9
+ continue;
10
+ Object.assign(result, { [key]: obj[key] });
11
+ }
12
+ return result;
13
+ });
14
+ }
15
+ export function pick(objFn, keyOrKeys) {
16
+ if (Array.isArray(keyOrKeys)) {
17
+ return computed(() => {
18
+ const obj = objFn();
19
+ const result = {};
20
+ for (const key of keyOrKeys) {
21
+ if (!(key in obj))
22
+ continue;
23
+ Object.assign(result, { [key]: obj[key] });
24
+ }
25
+ return result;
26
+ });
27
+ }
28
+ return computed(() => objFn()[keyOrKeys]);
29
+ }
30
+ export function merge(objFn, toMerge, mode = 'override') {
31
+ if (mode === 'override')
32
+ return computed(() => ({ ...objFn(), ...toMerge }));
33
+ return computed(() => ({ ...toMerge, ...objFn() }));
34
+ }
35
+ export function vector2(options, key, keepUndefined = false) {
36
+ return computed(() => {
37
+ const value = options()[key];
38
+ if (keepUndefined && value == undefined)
39
+ return undefined;
40
+ if (typeof value === 'number')
41
+ return new Vector2(value, value);
42
+ else if (value)
43
+ return new Vector2(...value);
44
+ else
45
+ return new Vector2();
46
+ }, { equal: (a, b) => !!a && !!b && a.equals(b) });
47
+ }
48
+ export function vector3(options, key, keepUndefined = false) {
49
+ return computed(() => {
50
+ const value = options()[key];
51
+ if (keepUndefined && value == undefined)
52
+ return undefined;
53
+ if (typeof value === 'number')
54
+ return new Vector3(value, value, value);
55
+ else if (value)
56
+ return new Vector3(...value);
57
+ else
58
+ return new Vector3();
59
+ }, { equal: (a, b) => !!a && !!b && a.equals(b) });
60
+ }
61
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYW1ldGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3V0aWxzL3BhcmFtZXRlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFVLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsT0FBTyxFQUFnQixPQUFPLEVBQWdCLE1BQU0sT0FBTyxDQUFDO0FBZXJFLE1BQU0sVUFBVSxJQUFJLENBQUMsS0FBeUIsRUFBRSxVQUFvQjtJQUNuRSxPQUFPLFFBQVEsQ0FBQyxHQUFHLEVBQUU7UUFDcEIsTUFBTSxHQUFHLEdBQUcsS0FBSyxFQUFFLENBQUM7UUFDcEIsTUFBTSxNQUFNLEdBQUcsRUFBa0IsQ0FBQztRQUVsQyxLQUFLLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNwQyxJQUFJLFVBQVUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDO2dCQUFFLFNBQVM7WUFDdkMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDNUMsQ0FBQztRQUVELE9BQU8sTUFBTSxDQUFDO0lBQ2YsQ0FBQyxDQUFDLENBQUM7QUFDSixDQUFDO0FBVUQsTUFBTSxVQUFVLElBQUksQ0FBQyxLQUF5QixFQUFFLFNBQTRCO0lBQzNFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1FBQzlCLE9BQU8sUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUNwQixNQUFNLEdBQUcsR0FBRyxLQUFLLEVBQUUsQ0FBQztZQUNwQixNQUFNLE1BQU0sR0FBRyxFQUFrQixDQUFDO1lBQ2xDLEtBQUssTUFBTSxHQUFHLElBQUksU0FBUyxFQUFFLENBQUM7Z0JBQzdCLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUM7b0JBQUUsU0FBUztnQkFDNUIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDNUMsQ0FBQztZQUNELE9BQU8sTUFBTSxDQUFDO1FBQ2YsQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDO0lBRUQsT0FBTyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztBQUMzQyxDQUFDO0FBRUQsTUFBTSxVQUFVLEtBQUssQ0FDcEIsS0FBb0IsRUFDcEIsT0FBeUIsRUFDekIsT0FBZ0MsVUFBVTtJQUUxQyxJQUFJLElBQUksS0FBSyxVQUFVO1FBQUUsT0FBTyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsS0FBSyxFQUFFLEVBQUUsR0FBRyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDN0UsT0FBTyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsT0FBTyxFQUFFLEdBQUcsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDckQsQ0FBQztBQVdELE1BQU0sVUFBVSxPQUFPLENBQUMsT0FBNkIsRUFBRSxHQUFXLEVBQUUsYUFBYSxHQUFHLEtBQUs7SUFDeEYsT0FBTyxRQUFRLENBQ2QsR0FBRyxFQUFFO1FBQ0osTUFBTSxLQUFLLEdBQUcsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDN0IsSUFBSSxhQUFhLElBQUksS0FBSyxJQUFJLFNBQVM7WUFBRSxPQUFPLFNBQVMsQ0FBQztRQUMxRCxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVE7WUFBRSxPQUFPLElBQUksT0FBTyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQzthQUMzRCxJQUFJLEtBQUs7WUFBRSxPQUFPLElBQUksT0FBTyxDQUFDLEdBQUksS0FBc0IsQ0FBQyxDQUFDOztZQUMxRCxPQUFPLElBQUksT0FBTyxFQUFFLENBQUM7SUFDM0IsQ0FBQyxFQUNELEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FDOUMsQ0FBQztBQUNILENBQUM7QUFVRCxNQUFNLFVBQVUsT0FBTyxDQUFDLE9BQTZCLEVBQUUsR0FBVyxFQUFFLGFBQWEsR0FBRyxLQUFLO0lBQ3hGLE9BQU8sUUFBUSxDQUNkLEdBQUcsRUFBRTtRQUNKLE1BQU0sS0FBSyxHQUFHLE9BQU8sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzdCLElBQUksYUFBYSxJQUFJLEtBQUssSUFBSSxTQUFTO1lBQUUsT0FBTyxTQUFTLENBQUM7UUFDMUQsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRO1lBQUUsT0FBTyxJQUFJLE9BQU8sQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO2FBQ2xFLElBQUksS0FBSztZQUFFLE9BQU8sSUFBSSxPQUFPLENBQUMsR0FBSSxLQUFzQixDQUFDLENBQUM7O1lBQzFELE9BQU8sSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUMzQixDQUFDLEVBQ0QsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUM5QyxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNpZ25hbCwgY29tcHV0ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFZlY3RvcjIsIFZlY3RvcjJUdXBsZSwgVmVjdG9yMywgVmVjdG9yM1R1cGxlIH0gZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgTmd0VmVjdG9yMiwgTmd0VmVjdG9yMyB9IGZyb20gJy4uL3RocmVlLXR5cGVzJztcbmltcG9ydCB7IE5ndEFueVJlY29yZCB9IGZyb20gJy4uL3R5cGVzJztcblxudHlwZSBLZXlzT2ZUeXBlPFRPYmplY3QgZXh0ZW5kcyBvYmplY3QsIFRUeXBlPiA9IEV4Y2x1ZGU8XG5cdHtcblx0XHRbSyBpbiBrZXlvZiBUT2JqZWN0XTogVE9iamVjdFtLXSBleHRlbmRzIFRUeXBlIHwgdW5kZWZpbmVkIHwgbnVsbCA/IEsgOiBuZXZlcjtcblx0fVtrZXlvZiBUT2JqZWN0XSxcblx0dW5kZWZpbmVkXG4+O1xuXG5leHBvcnQgZnVuY3Rpb24gb21pdDxUT2JqZWN0IGV4dGVuZHMgb2JqZWN0LCBUS2V5cyBleHRlbmRzIChrZXlvZiBUT2JqZWN0KVtdPihcblx0b2JqRm46ICgpID0+IFRPYmplY3QsXG5cdGtleXNUb09taXQ6IFRLZXlzLFxuKTogU2lnbmFsPE9taXQ8VE9iamVjdCwgVEtleXNbbnVtYmVyXT4+O1xuZXhwb3J0IGZ1bmN0aW9uIG9taXQob2JqRm46ICgpID0+IE5ndEFueVJlY29yZCwga2V5c1RvT21pdDogc3RyaW5nW10pIHtcblx0cmV0dXJuIGNvbXB1dGVkKCgpID0+IHtcblx0XHRjb25zdCBvYmogPSBvYmpGbigpO1xuXHRcdGNvbnN0IHJlc3VsdCA9IHt9IGFzIE5ndEFueVJlY29yZDtcblxuXHRcdGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKG9iaikpIHtcblx0XHRcdGlmIChrZXlzVG9PbWl0LmluY2x1ZGVzKGtleSkpIGNvbnRpbnVlO1xuXHRcdFx0T2JqZWN0LmFzc2lnbihyZXN1bHQsIHsgW2tleV06IG9ialtrZXldIH0pO1xuXHRcdH1cblxuXHRcdHJldHVybiByZXN1bHQ7XG5cdH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGljazxUT2JqZWN0IGV4dGVuZHMgb2JqZWN0LCBUS2V5IGV4dGVuZHMga2V5b2YgVE9iamVjdD4oXG5cdG9iakZuOiAoKSA9PiBUT2JqZWN0LFxuXHRrZXk6IFRLZXksXG4pOiBTaWduYWw8VE9iamVjdFtUS2V5XT47XG5leHBvcnQgZnVuY3Rpb24gcGljazxUT2JqZWN0IGV4dGVuZHMgb2JqZWN0LCBUS2V5cyBleHRlbmRzIChrZXlvZiBUT2JqZWN0KVtdPihcblx0b2JqRm46ICgpID0+IFRPYmplY3QsXG5cdGtleXM6IFRLZXlzLFxuKTogU2lnbmFsPFBpY2s8VE9iamVjdCwgVEtleXNbbnVtYmVyXT4+O1xuZXhwb3J0IGZ1bmN0aW9uIHBpY2sob2JqRm46ICgpID0+IE5ndEFueVJlY29yZCwga2V5T3JLZXlzOiBzdHJpbmcgfCBzdHJpbmdbXSkge1xuXHRpZiAoQXJyYXkuaXNBcnJheShrZXlPcktleXMpKSB7XG5cdFx0cmV0dXJuIGNvbXB1dGVkKCgpID0+IHtcblx0XHRcdGNvbnN0IG9iaiA9IG9iakZuKCk7XG5cdFx0XHRjb25zdCByZXN1bHQgPSB7fSBhcyBOZ3RBbnlSZWNvcmQ7XG5cdFx0XHRmb3IgKGNvbnN0IGtleSBvZiBrZXlPcktleXMpIHtcblx0XHRcdFx0aWYgKCEoa2V5IGluIG9iaikpIGNvbnRpbnVlO1xuXHRcdFx0XHRPYmplY3QuYXNzaWduKHJlc3VsdCwgeyBba2V5XTogb2JqW2tleV0gfSk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gcmVzdWx0O1xuXHRcdH0pO1xuXHR9XG5cblx0cmV0dXJuIGNvbXB1dGVkKCgpID0+IG9iakZuKClba2V5T3JLZXlzXSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZTxUT2JqZWN0IGV4dGVuZHMgb2JqZWN0Pihcblx0b2JqRm46ICgpID0+IFRPYmplY3QsXG5cdHRvTWVyZ2U6IFBhcnRpYWw8VE9iamVjdD4sXG5cdG1vZGU6ICdvdmVycmlkZScgfCAnYmFja2ZpbGwnID0gJ292ZXJyaWRlJyxcbikge1xuXHRpZiAobW9kZSA9PT0gJ292ZXJyaWRlJykgcmV0dXJuIGNvbXB1dGVkKCgpID0+ICh7IC4uLm9iakZuKCksIC4uLnRvTWVyZ2UgfSkpO1xuXHRyZXR1cm4gY29tcHV0ZWQoKCkgPT4gKHsgLi4udG9NZXJnZSwgLi4ub2JqRm4oKSB9KSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2ZWN0b3IyPFRPYmplY3QgZXh0ZW5kcyBvYmplY3Q+KFxuXHRvcHRpb25zOiBTaWduYWw8VE9iamVjdD4sXG5cdGtleTogS2V5c09mVHlwZTxUT2JqZWN0LCBOZ3RWZWN0b3IyPixcbik6IFNpZ25hbDxWZWN0b3IyPjtcbmV4cG9ydCBmdW5jdGlvbiB2ZWN0b3IyPFRPYmplY3QgZXh0ZW5kcyBvYmplY3Q+KFxuXHRvcHRpb25zOiBTaWduYWw8VE9iamVjdD4sXG5cdGtleTogS2V5c09mVHlwZTxUT2JqZWN0LCBOZ3RWZWN0b3IyPixcblx0a2VlcFVuZGVmaW5lZDogdHJ1ZSxcbik6IFNpZ25hbDxWZWN0b3IyIHwgdW5kZWZpbmVkPjtcbmV4cG9ydCBmdW5jdGlvbiB2ZWN0b3IyKG9wdGlvbnM6IFNpZ25hbDxOZ3RBbnlSZWNvcmQ+LCBrZXk6IHN0cmluZywga2VlcFVuZGVmaW5lZCA9IGZhbHNlKSB7XG5cdHJldHVybiBjb21wdXRlZChcblx0XHQoKSA9PiB7XG5cdFx0XHRjb25zdCB2YWx1ZSA9IG9wdGlvbnMoKVtrZXldO1xuXHRcdFx0aWYgKGtlZXBVbmRlZmluZWQgJiYgdmFsdWUgPT0gdW5kZWZpbmVkKSByZXR1cm4gdW5kZWZpbmVkO1xuXHRcdFx0aWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHJldHVybiBuZXcgVmVjdG9yMih2YWx1ZSwgdmFsdWUpO1xuXHRcdFx0ZWxzZSBpZiAodmFsdWUpIHJldHVybiBuZXcgVmVjdG9yMiguLi4odmFsdWUgYXMgVmVjdG9yMlR1cGxlKSk7XG5cdFx0XHRlbHNlIHJldHVybiBuZXcgVmVjdG9yMigpO1xuXHRcdH0sXG5cdFx0eyBlcXVhbDogKGEsIGIpID0+ICEhYSAmJiAhIWIgJiYgYS5lcXVhbHMoYikgfSxcblx0KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiB2ZWN0b3IzPFRPYmplY3QgZXh0ZW5kcyBvYmplY3Q+KFxuXHRvcHRpb25zOiBTaWduYWw8VE9iamVjdD4sXG5cdGtleTogS2V5c09mVHlwZTxUT2JqZWN0LCBOZ3RWZWN0b3IzPixcbik6IFNpZ25hbDxWZWN0b3IzPjtcbmV4cG9ydCBmdW5jdGlvbiB2ZWN0b3IzPFRPYmplY3QgZXh0ZW5kcyBvYmplY3Q+KFxuXHRvcHRpb25zOiBTaWduYWw8VE9iamVjdD4sXG5cdGtleTogS2V5c09mVHlwZTxUT2JqZWN0LCBOZ3RWZWN0b3IzPixcblx0a2VlcFVuZGVmaW5lZDogdHJ1ZSxcbik6IFNpZ25hbDxWZWN0b3IzIHwgdW5kZWZpbmVkPjtcbmV4cG9ydCBmdW5jdGlvbiB2ZWN0b3IzKG9wdGlvbnM6IFNpZ25hbDxOZ3RBbnlSZWNvcmQ+LCBrZXk6IHN0cmluZywga2VlcFVuZGVmaW5lZCA9IGZhbHNlKSB7XG5cdHJldHVybiBjb21wdXRlZChcblx0XHQoKSA9PiB7XG5cdFx0XHRjb25zdCB2YWx1ZSA9IG9wdGlvbnMoKVtrZXldO1xuXHRcdFx0aWYgKGtlZXBVbmRlZmluZWQgJiYgdmFsdWUgPT0gdW5kZWZpbmVkKSByZXR1cm4gdW5kZWZpbmVkO1xuXHRcdFx0aWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHJldHVybiBuZXcgVmVjdG9yMyh2YWx1ZSwgdmFsdWUsIHZhbHVlKTtcblx0XHRcdGVsc2UgaWYgKHZhbHVlKSByZXR1cm4gbmV3IFZlY3RvcjMoLi4uKHZhbHVlIGFzIFZlY3RvcjNUdXBsZSkpO1xuXHRcdFx0ZWxzZSByZXR1cm4gbmV3IFZlY3RvcjMoKTtcblx0XHR9LFxuXHRcdHsgZXF1YWw6IChhLCBiKSA9PiAhIWEgJiYgISFiICYmIGEuZXF1YWxzKGIpIH0sXG5cdCk7XG59XG4iXX0=
@@ -0,0 +1,8 @@
1
+ import { is } from './is';
2
+ export function resolveRef(ref) {
3
+ if (is.ref(ref)) {
4
+ return ref.nativeElement;
5
+ }
6
+ return ref;
7
+ }
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb2x2ZS1yZWYuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi91dGlscy9yZXNvbHZlLXJlZi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTFCLE1BQU0sVUFBVSxVQUFVLENBQVUsR0FBMEQ7SUFDN0YsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDakIsT0FBTyxHQUFHLENBQUMsYUFBYSxDQUFDO0lBQzFCLENBQUM7SUFFRCxPQUFPLEdBQUcsQ0FBQztBQUNaLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpcyB9IGZyb20gJy4vaXMnO1xuXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZVJlZjxUT2JqZWN0PihyZWY6IEVsZW1lbnRSZWY8VE9iamVjdCB8IHVuZGVmaW5lZD4gfCBUT2JqZWN0IHwgdW5kZWZpbmVkKTogVE9iamVjdCB8IHVuZGVmaW5lZCB7XG5cdGlmIChpcy5yZWYocmVmKSkge1xuXHRcdHJldHVybiByZWYubmF0aXZlRWxlbWVudDtcblx0fVxuXG5cdHJldHVybiByZWY7XG59XG4iXX0=
@@ -1,7 +1,7 @@
1
1
  import { computed, signal, untracked, } from '@angular/core';
2
2
  const STORE_COMPUTED_KEY = '__ngt_signal_store_computed__';
3
- const setter = (_source) => (state) => {
4
- const updater = (previous) => {
3
+ function reducer(state) {
4
+ return (previous) => {
5
5
  const partial = typeof state === 'function' ? state(previous) : state;
6
6
  Object.keys(partial).forEach((key) => {
7
7
  const typedKey = key;
@@ -11,81 +11,80 @@ const setter = (_source) => (state) => {
11
11
  });
12
12
  return partial;
13
13
  };
14
- untracked(() => {
15
- _source.update((previous) => ({ ...previous, ...updater(previous) }));
16
- });
17
- };
18
- const patcher = (_source) => (state) => {
19
- const updater = (previous) => {
20
- Object.keys(state).forEach((key) => {
21
- const typedKey = key;
22
- if (state[typedKey] === undefined && previous[typedKey] != null) {
23
- state[typedKey] = previous[typedKey];
24
- }
14
+ }
15
+ function updater(_source) {
16
+ return (state) => {
17
+ const updater = reducer(state);
18
+ untracked(() => {
19
+ _source.update((previous) => ({ ...previous, ...updater(previous) }));
25
20
  });
26
- return state;
27
21
  };
28
- untracked(() => {
29
- _source.update((previous) => ({ ...updater(previous), ...previous }));
30
- });
31
- };
32
- const getter = (_source) => (...keys) => {
33
- const root = untracked(_source);
34
- if (keys.length === 0)
35
- return root;
36
- return keys.reduce((value, key) => value[key], root);
37
- };
38
- const selector = (_state, computedCache) => (...keysAndOptions) => {
39
- if (keysAndOptions.length === 0)
40
- return _state;
41
- if (keysAndOptions.length === 1 && typeof keysAndOptions[0] === 'object') {
42
- const cachedKey = STORE_COMPUTED_KEY.concat(JSON.stringify(keysAndOptions[0]));
43
- if (!computedCache.has(cachedKey)) {
44
- computedCache.set(cachedKey, computed(_state, keysAndOptions));
22
+ }
23
+ function getter(_source) {
24
+ return (...keys) => {
25
+ const root = untracked(_source);
26
+ if (keys.length === 0)
27
+ return root;
28
+ return keys.reduce((value, key) => value[key], root);
29
+ };
30
+ }
31
+ function selector(_state, computedCache) {
32
+ return (...keysAndOptions) => {
33
+ if (keysAndOptions.length === 0)
34
+ return _state;
35
+ if (keysAndOptions.length === 1 && typeof keysAndOptions[0] === 'object') {
36
+ const cachedKey = STORE_COMPUTED_KEY.concat(JSON.stringify(keysAndOptions[0]));
37
+ if (!computedCache.has(cachedKey)) {
38
+ computedCache.set(cachedKey, computed(_state, keysAndOptions));
39
+ }
40
+ return computedCache.get(cachedKey);
45
41
  }
46
- return computedCache.get(cachedKey);
47
- }
48
- const [keys, options] = parseStoreOptions(keysAndOptions);
49
- const joinedKeys = keys.join('-');
50
- const cachedKeys = joinedKeys.concat(options ? JSON.stringify(options) : '');
51
- if (!computedCache.has(cachedKeys)) {
52
- computedCache.set(cachedKeys, computed(() => keys.reduce((value, key) => value[key], _state()), options));
42
+ const [keys, options] = parseStoreOptions(keysAndOptions);
43
+ const joinedKeys = keys.join('-');
44
+ const cachedKeys = joinedKeys.concat(JSON.stringify(options));
45
+ if (!computedCache.has(cachedKeys)) {
46
+ computedCache.set(cachedKeys, computed(() => keys.reduce((value, key) => value[key], _state()), options));
47
+ }
48
+ return computedCache.get(cachedKeys);
49
+ };
50
+ }
51
+ function parseStoreOptions(keysAndOptions) {
52
+ if (typeof keysAndOptions.at(-1) === 'object') {
53
+ return [keysAndOptions.slice(0, -1), keysAndOptions.at(-1)];
53
54
  }
54
- return computedCache.get(cachedKeys);
55
- };
55
+ return [keysAndOptions, { equal: Object.is }];
56
+ }
56
57
  export function signalStore(initialState = {}, options) {
57
58
  let source;
58
- let set;
59
+ let update;
59
60
  let get;
60
- let patch;
61
+ let select;
62
+ let state;
63
+ const computedCache = new Map();
64
+ if (!options) {
65
+ options = { equal: Object.is };
66
+ }
61
67
  if (typeof initialState === 'function') {
62
68
  source = signal({}, options);
69
+ state = source.asReadonly();
63
70
  get = getter(source);
64
- set = setter(source);
65
- patch = patcher(source);
66
- source.set(initialState({ set, get, patch }));
71
+ update = updater(source);
72
+ select = selector(state, computedCache);
73
+ source.set(initialState({ update, get, select }));
67
74
  }
68
75
  else {
69
76
  source = signal(initialState, options);
77
+ state = source.asReadonly();
70
78
  get = getter(source);
71
- set = setter(source);
72
- patch = patcher(source);
79
+ update = updater(source);
80
+ select = selector(state, computedCache);
73
81
  }
74
- const state = source.asReadonly();
75
- const computedCache = new Map();
76
- const store = { select: selector(state, computedCache), get, set, patch, state };
77
- // NOTE: internal _snapshot to debug current state
78
- Object.defineProperty(store, '_snapshot', {
79
- get: state,
82
+ const store = { select, get, update, state };
83
+ Object.defineProperty(store, 'snapshot', {
84
+ get: untracked.bind({}, state),
80
85
  configurable: false,
81
86
  enumerable: false,
82
87
  });
83
88
  return store;
84
89
  }
85
- function parseStoreOptions(keysAndOptions) {
86
- if (typeof keysAndOptions.at(-1) === 'object') {
87
- return [keysAndOptions.slice(0, -1), keysAndOptions.at(-1)];
88
- }
89
- return [keysAndOptions];
90
- }
91
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmFsLXN0b3JlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvdXRpbHMvc2lnbmFsLXN0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTixRQUFRLEVBQ1IsTUFBTSxFQUNOLFNBQVMsR0FLVCxNQUFNLGVBQWUsQ0FBQztBQUd2QixNQUFNLGtCQUFrQixHQUFHLCtCQUErQixDQUFDO0FBdUQzRCxNQUFNLE1BQU0sR0FDWCxDQUF1QixPQUE4QixFQUFFLEVBQUUsQ0FDekQsQ0FBQyxLQUEyQyxFQUFFLEVBQUU7SUFDL0MsTUFBTSxPQUFPLEdBQUcsQ0FBQyxRQUFlLEVBQUUsRUFBRTtRQUNuQyxNQUFNLE9BQU8sR0FBRyxPQUFPLEtBQUssS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ3RFLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDcEMsTUFBTSxRQUFRLEdBQUcsR0FBa0IsQ0FBQztZQUNwQyxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxTQUFTLElBQUksUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLElBQUksRUFBRTtnQkFDbEUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUN2QztRQUNGLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxPQUFPLENBQUM7SUFDaEIsQ0FBQyxDQUFDO0lBQ0YsU0FBUyxDQUFDLEdBQUcsRUFBRTtRQUNkLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLFFBQVEsRUFBRSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMs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TSxLQUFLLEdBQUcsRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFDLEtBQUssRUFBRSxhQUFhLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQztJQUVqRixrREFBa0Q7SUFDbEQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsV0FBVyxFQUFFO1FBQ3pDLEdBQUcsRUFBRSxLQUFLO1FBQ1YsWUFBWSxFQUFFLEtBQUs7UUFDbkIsVUFBVSxFQUFFLEtBQUs7S0FDakIsQ0FBQyxDQUFDO0lBRUgsT0FBTyxLQUFLLENBQUM7QUFDZCxDQUFDO0FBRUQsU0FBUyxpQkFBaUIsQ0FBQyxjQUFxQjtJQUMvQyxJQUFJLE9BQU8sY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLFFBQVEsRUFBRTtRQUM5QyxPQUFPLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxjQUFjLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUM1RDtJQUVELE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztBQUN6QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0Y29tcHV0ZWQsXG5cdHNpZ25hbCxcblx0dW50cmFja2VkLFxuXHR0eXBlIENyZWF0ZUNvbXB1dGVkT3B0aW9ucyxcblx0dHlwZSBDcmVhdGVTaWduYWxPcHRpb25zLFxuXHR0eXBlIFNpZ25hbCxcblx0dHlwZSBXcml0YWJsZVNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgdHlwZSB7IE5ndEFueVJlY29yZCB9IGZyb20gJy4uL3R5cGVzJztcblxuY29uc3QgU1RPUkVfQ09NUFVURURfS0VZID0gJ19fbmd0X3NpZ25hbF9zdG9yZV9jb21wdXRlZF9fJztcblxuZXhwb3J0IHR5cGUgTmd0U2lnbmFsU3RvcmU8U3RhdGUgZXh0ZW5kcyBvYmplY3Q+ID0ge1xuXHRzZWxlY3Q8XG5cdFx0S2V5MSBleHRlbmRzIGtleW9mIFN0YXRlLFxuXHRcdEtleTIgZXh0ZW5kcyBrZXlvZiBTdGF0ZVtLZXkxXSxcblx0XHRLZXkzIGV4dGVuZHMga2V5b2YgU3RhdGVbS2V5MV1bS2V5Ml0sXG5cdFx0S2V5NCBleHRlbmRzIGtleW9mIFN0YXRlW0tleTFdW0tleTJdW0tleTNdLFxuXHQ+KFxuXHRcdGtleTE6IEtleTEsXG5cdFx0a2V5MjogS2V5Mixcblx0XHRrZXkzOiBLZXkzLFxuXHRcdGtleTQ6IEtleTQsXG5cdFx0b3B0aW9ucz86IENyZWF0ZUNvbXB1dGVkT3B0aW9uczxTdGF0ZVtLZXkxXVtLZXkyXVtLZXkzXVtLZXk0XT4sXG5cdCk6IFNpZ25hbDxTdGF0ZVtLZXkxXVtLZXkyXVtLZXkzXVtLZXk0XT47XG5cdHNlbGVjdDxLZXkxIGV4dGVuZHMga2V5b2YgU3RhdGUsIEtleTIgZXh0ZW5kcyBrZXlvZiBTdGF0ZVtLZXkxXSwgS2V5MyBleHRlbmRzIGtleW9mIFN0YXRlW0tleTFdW0tleTJdPihcblx0XHRrZXkxOiBLZXkxLFxuXHRcdGtleTI6IEtleTIsXG5cdFx0a2V5MzogS2V5Myxcblx0XHRvcHRpb25zPzogQ3JlYXRlQ29tcHV0ZWRPcHRpb25zPFN0YXRlW0tleTFdW0tleTJdW0tleTNdPixcblx0KTogU2lnbmFsPFN0YXRlW0tleTFdW0tleTJdW0tleTNdPjtcblx0c2VsZWN0PEtleTEgZXh0ZW5kcyBrZXlvZiBTdGF0ZSwgS2V5MiBleHRlbmRzIGtleW9mIFN0YXRlW0tleTFdPihcblx0XHRrZXkxOiBLZXkxLFxuXHRcdGtleTI6IEtleTIsXG5cdFx0b3B0aW9ucz86IENyZWF0ZUNvbXB1dGVkT3B0aW9uczxTdGF0ZVtLZXkxXVtLZXkyXT4sXG5cdCk6IFNpZ25hbDxTdGF0ZVtLZXkxXVtLZXkyXT47XG5cdHNlbGVjdDxLZXkgZXh0ZW5kcyBrZXlvZiBTdGF0ZT4oa2V5OiBLZXksIG9wdGlvbnM/OiBDcmVhdGVDb21wdXRlZE9wdGlvbnM8U3RhdGVbS2V5XT4pOiBTaWduYWw8U3RhdGVbS2V5XT47XG5cdHNlbGVjdChvcHRpb25zPzogQ3JlYXRlQ29tcHV0ZWRPcHRpb25zPFN0YXRlPik6IFNpZ25hbDxTdGF0ZT47XG5cblx0Z2V0PFxuXHRcdEtleTEgZXh0ZW5kcyBrZXlvZiBTdGF0ZSxcblx0XHRLZXkyIGV4dGVuZHMga2V5b2YgU3RhdGVbS2V5MV0sXG5cdFx0S2V5MyBleHRlbmRzIGtleW9mIFN0YXRlW0tleTFdW0tleTJdLFxuXHRcdEtleTQgZXh0ZW5kcyBrZXlvZiBTdGF0ZVtLZXkxXVtLZXkyXVtLZXkzXSxcblx0Pihcblx0XHRrZXkxOiBLZXkxLFxuXHRcdGtleTI6IEtleTIsXG5cdFx0a2V5MzogS2V5Myxcblx0XHRrZXk0OiBLZXk0LFxuXHQpOiBTdGF0ZVtLZXkxXVtLZXkyXVtLZXkzXVtLZXk0XTtcblx0Z2V0PEtleTEgZXh0ZW5kcyBrZXlvZiBTdGF0ZSwgS2V5MiBleHRlbmRzIGtleW9mIFN0YXRlW0tleTFdLCBLZXkzIGV4dGVuZHMga2V5b2YgU3RhdGVbS2V5MV1bS2V5Ml0+KFxuXHRcdGtleTE6IEtleTEsXG5cdFx0a2V5MjogS2V5Mixcblx0XHRrZXkzOiBLZXkzLFxuXHQpOiBTdGF0ZVtLZXkxXVtLZXkyXVtLZXkzXTtcblx0Z2V0PEtleTEgZXh0ZW5kcyBrZXlvZiBTdGF0ZSwgS2V5MiBleHRlbmRzIGtleW9mIFN0YXRlW0tleTFdPihrZXkxOiBLZXkxLCBrZXkyOiBLZXkyKTogU3RhdGVbS2V5MV1bS2V5Ml07XG5cdGdldDxLZXkgZXh0ZW5kcyBrZXlvZiBTdGF0ZT4oa2V5OiBLZXkpOiBTdGF0ZVtLZXldO1xuXHRnZXQoKTogU3RhdGU7XG5cblx0c2V0KHN0YXRlOiBQYXJ0aWFsPFN0YXRlPiB8ICgocHJldmlvdXM6IFN0YXRlKSA9PiBQYXJ0aWFsPFN0YXRlPikpOiB2b2lkO1xuXHRwYXRjaChzdGF0ZTogUGFydGlhbDxTdGF0ZT4pOiB2b2lkO1xuXG5cdHN0YXRlOiBTaWduYWw8U3RhdGU+O1xufTtcblxuY29uc3Qgc2V0dGVyID1cblx0PFN0YXRlIGV4dGVuZHMgb2JqZWN0Pihfc291cmNlOiBXcml0YWJsZVNpZ25hbDxTdGF0ZT4pID0+XG5cdChzdGF0ZTogU3RhdGUgfCAoKHByZXZpb3VzOiBTdGF0ZSkgPT4gU3RhdGUpKSA9PiB7XG5cdFx0Y29uc3QgdXBkYXRlciA9IChwcmV2aW91czogU3RhdGUpID0+IHtcblx0XHRcdGNvbnN0IHBhcnRpYWwgPSB0eXBlb2Ygc3RhdGUgPT09ICdmdW5jdGlvbicgPyBzdGF0ZShwcmV2aW91cykgOiBzdGF0ZTtcblx0XHRcdE9iamVjdC5rZXlzKHBhcnRpYWwpLmZvckVhY2goKGtleSkgPT4ge1xuXHRcdFx0XHRjb25zdCB0eXBlZEtleSA9IGtleSBhcyBrZXlvZiBTdGF0ZTtcblx0XHRcdFx0aWYgKHBhcnRpYWxbdHlwZWRLZXldID09PSB1bmRlZmluZWQgJiYgcHJldmlvdXNbdHlwZWRLZXldICE9IG51bGwpIHtcblx0XHRcdFx0XHRwYXJ0aWFsW3R5cGVkS2V5XSA9IHByZXZpb3VzW3R5cGVkS2V5XTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0XHRyZXR1cm4gcGFydGlhbDtcblx0XHR9O1xuXHRcdHVudHJhY2tlZCgoKSA9PiB7XG5cdFx0XHRfc291cmNlLnVwZGF0ZSgocHJldmlvdXMpID0+ICh7IC4uLnByZXZpb3VzLCAuLi51cGRhdGVyKHByZXZpb3VzKSB9KSk7XG5cdFx0fSk7XG5cdH07XG5cbmNvbnN0IHBhdGNoZXIgPVxuXHQ8U3RhdGUgZXh0ZW5kcyBvYmplY3Q+KF9zb3VyY2U6IFdyaXRhYmxlU2lnbmFsPFN0YXRlPikgPT5cblx0KHN0YXRlOiBTdGF0ZSkgPT4ge1xuXHRcdGNvbnN0IHVwZGF0ZXIgPSAocHJldmlvdXM6IFN0YXRlKSA9PiB7XG5cdFx0XHRPYmplY3Qua2V5cyhzdGF0ZSkuZm9yRWFjaCgoa2V5KSA9PiB7XG5cdFx0XHRcdGNvbnN0IHR5cGVkS2V5ID0ga2V5IGFzIGtleW9mIFN0YXRlO1xuXHRcdFx0XHRpZiAoc3RhdGVbdHlwZWRLZXldID09PSB1bmRlZmluZWQgJiYgcHJldmlvdXNbdHlwZWRLZXldICE9IG51bGwpIHtcblx0XHRcdFx0XHRzdGF0ZVt0eXBlZEtleV0gPSBwcmV2aW91c1t0eXBlZEtleV07XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdFx0cmV0dXJuIHN0YXRlO1xuXHRcdH07XG5cdFx0dW50cmFja2VkKCgpID0+IHtcblx0XHRcdF9zb3VyY2UudXBkYXRlKChwcmV2aW91cykgPT4gKHsgLi4udXBkYXRlcihwcmV2aW91cyksIC4uLnByZXZpb3VzIH0pKTtcblx0XHR9KTtcblx0fTtcblxuY29uc3QgZ2V0dGVyID1cblx0PFN0YXRlIGV4dGVuZHMgb2JqZWN0Pihfc291cmNlOiBXcml0YWJsZVNpZ25hbDxTdGF0ZT4pID0+XG5cdCguLi5rZXlzOiBzdHJpbmdbXSkgPT4ge1xuXHRcdGNvbnN0IHJvb3QgPSB1bnRyYWNrZWQoX3NvdXJjZSk7XG5cdFx0aWYgKGtleXMubGVuZ3RoID09PSAwKSByZXR1cm4gcm9vdDtcblx0XHRyZXR1cm4ga2V5cy5yZWR1Y2UoKHZhbHVlLCBrZXkpID0+ICh2YWx1ZSBhcyBOZ3RBbnlSZWNvcmQpW2tleV0sIHJvb3QpO1xuXHR9O1xuXG5jb25zdCBzZWxlY3RvciA9XG5cdDxTdGF0ZSBleHRlbmRzIG9iamVjdD4oX3N0YXRlOiBTaWduYWw8U3RhdGU+LCBjb21wdXRlZENhY2hlOiBNYXA8c3RyaW5nLCBTaWduYWw8YW55Pj4pID0+XG5cdCguLi5rZXlzQW5kT3B0aW9uczogYW55W10pID0+IHtcblx0XHRpZiAoa2V5c0FuZE9wdGlvbnMubGVuZ3RoID09PSAwKSByZXR1cm4gX3N0YXRlO1xuXHRcdGlmIChrZXlzQW5kT3B0aW9ucy5sZW5ndGggPT09IDEgJiYgdHlwZW9mIGtleXNBbmRPcHRpb25zWzBdID09PSAnb2JqZWN0Jykge1xuXHRcdFx0Y29uc3QgY2FjaGVkS2V5ID0gU1RPUkVfQ09NUFVURURfS0VZLmNvbmNhdChKU09OLnN0cmluZ2lmeShrZXlzQW5kT3B0aW9uc1swXSkpO1xuXHRcdFx0aWYgKCFjb21wdXRlZENhY2hlLmhhcyhjYWNoZWRLZXkpKSB7XG5cdFx0XHRcdGNvbXB1dGVkQ2FjaGUuc2V0KGNhY2hlZEtleSwgY29tcHV0ZWQoX3N0YXRlLCBrZXlzQW5kT3B0aW9ucyBhcyBDcmVhdGVDb21wdXRlZE9wdGlvbnM8b2JqZWN0PikpO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGNvbXB1dGVkQ2FjaGUuZ2V0KGNhY2hlZEtleSkhO1xuXHRcdH1cblx0XHRjb25zdCBba2V5cywgb3B0aW9uc10gPSBwYXJzZVN0b3JlT3B0aW9ucyhrZXlzQW5kT3B0aW9ucyk7XG5cdFx0Y29uc3Qgam9pbmVkS2V5cyA9IGtleXMuam9pbignLScpO1xuXHRcdGNvbnN0IGNhY2hlZEtleXMgPSBqb2luZWRLZXlzLmNvbmNhdChvcHRpb25zID8gSlNPTi5zdHJpbmdpZnkob3B0aW9ucykgOiAnJyk7XG5cblx0XHRpZiAoIWNvbXB1dGVkQ2FjaGUuaGFzKGNhY2hlZEtleXMpKSB7XG5cdFx0XHRjb21wdXRlZENhY2hlLnNldChcblx0XHRcdFx0Y2FjaGVkS2V5cyxcblx0XHRcdFx0Y29tcHV0ZWQoKCkgPT4ga2V5cy5yZWR1Y2UoKHZhbHVlLCBrZXkpID0+ICh2YWx1ZSBhcyBOZ3RBbnlSZWNvcmQpW2tleV0sIF9zdGF0ZSgpKSwgb3B0aW9ucyksXG5cdFx0XHQpO1xuXHRcdH1cblx0XHRyZXR1cm4gY29tcHV0ZWRDYWNoZS5nZXQoY2FjaGVkS2V5cykhO1xuXHR9O1xuXG5leHBvcnQgZnVuY3Rpb24gc2lnbmFsU3RvcmU8U3RhdGUgZXh0ZW5kcyBvYmplY3Q+KFxuXHRpbml0aWFsU3RhdGU6XG5cdFx0fCBQYXJ0aWFsPFN0YXRlPlxuXHRcdHwgKChzdG9yZUFwaTogUGljazxOZ3RTaWduYWxTdG9yZTxTdGF0ZT4sICdnZXQnIHwgJ3NldCcgfCAncGF0Y2gnPikgPT4gUGFydGlhbDxTdGF0ZT4pID0ge30sXG5cdG9wdGlvbnM/OiBDcmVhdGVTaWduYWxPcHRpb25zPFN0YXRlPixcbik6IE5ndFNpZ25hbFN0b3JlPFN0YXRlPiB7XG5cdGxldCBzb3VyY2U6IFdyaXRhYmxlU2lnbmFsPFN0YXRlPjtcblx0bGV0IHNldDogTmd0U2lnbmFsU3RvcmU8U3RhdGU+WydzZXQnXTtcblx0bGV0IGdldDogTmd0U2lnbmFsU3RvcmU8U3RhdGU+WydnZXQnXTtcblx0bGV0IHBhdGNoOiBOZ3RTaWduYWxTdG9yZTxTdGF0ZT5bJ3BhdGNoJ107XG5cblx0aWYgKHR5cGVvZiBpbml0aWFsU3RhdGUgPT09ICdmdW5jdGlvbicpIHtcblx0XHRzb3VyY2UgPSBzaWduYWwoe30gYXMgU3RhdGUsIG9wdGlvbnMpO1xuXHRcdGdldCA9IGdldHRlcihzb3VyY2UpO1xuXHRcdHNldCA9IHNldHRlcihzb3VyY2UpO1xuXHRcdHBhdGNoID0gcGF0Y2hlcihzb3VyY2UpO1xuXHRcdHNvdXJjZS5zZXQoaW5pdGlhbFN0YXRlKHsgc2V0LCBnZXQsIHBhdGNoIH0pIGFzIFN0YXRlKTtcblx0fSBlbHNlIHtcblx0XHRzb3VyY2UgPSBzaWduYWwoaW5pdGlhbFN0YXRlIGFzIFN0YXRlLCBvcHRpb25zKTtcblx0XHRnZXQgPSBnZXR0ZXIoc291cmNlKTtcblx0XHRzZXQgPSBzZXR0ZXIoc291cmNlKTtcblx0XHRwYXRjaCA9IHBhdGNoZXIoc291cmNlKTtcblx0fVxuXG5cdGNvbnN0IHN0YXRlID0gc291cmNlLmFzUmVhZG9ubHkoKTtcblx0Y29uc3QgY29tcHV0ZWRDYWNoZSA9IG5ldyBNYXAoKTtcblxuXHRjb25zdCBzdG9yZSA9IHsgc2VsZWN0OiBzZWxlY3RvcihzdGF0ZSwgY29tcHV0ZWRDYWNoZSksIGdldCwgc2V0LCBwYXRjaCwgc3RhdGUgfTtcblxuXHQvLyBOT1RFOiBpbnRlcm5hbCBfc25hcHNob3QgdG8gZGVidWcgY3VycmVudCBzdGF0ZVxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoc3RvcmUsICdfc25hcHNob3QnLCB7XG5cdFx0Z2V0OiBzdGF0ZSxcblx0XHRjb25maWd1cmFibGU6IGZhbHNlLFxuXHRcdGVudW1lcmFibGU6IGZhbHNlLFxuXHR9KTtcblxuXHRyZXR1cm4gc3RvcmU7XG59XG5cbmZ1bmN0aW9uIHBhcnNlU3RvcmVPcHRpb25zKGtleXNBbmRPcHRpb25zOiBhbnlbXSk6IFtzdHJpbmdbXSwgQ3JlYXRlQ29tcHV0ZWRPcHRpb25zPGFueT4/XSB7XG5cdGlmICh0eXBlb2Yga2V5c0FuZE9wdGlvbnMuYXQoLTEpID09PSAnb2JqZWN0Jykge1xuXHRcdHJldHVybiBba2V5c0FuZE9wdGlvbnMuc2xpY2UoMCwgLTEpLCBrZXlzQW5kT3B0aW9ucy5hdCgtMSldO1xuXHR9XG5cblx0cmV0dXJuIFtrZXlzQW5kT3B0aW9uc107XG59XG4iXX0=
90
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmFsLXN0b3JlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvdXRpbHMvc2lnbmFsLXN0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFLTixRQUFRLEVBQ1IsTUFBTSxFQUNOLFNBQVMsR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUd2QixNQUFNLGtCQUFrQixHQUFHLCtCQUErQixDQUFDO0FBZ0UzRCxTQUFTLE9BQU8sQ0FBdUIsS0FBMkM7SUFDakYsT0FBTyxDQUFDLFFBQWUsRUFBRSxFQUFFO1FBQzFCLE1BQU0sT0FBTyxHQUFHLE9BQU8sS0FBSyxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDdEUsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNwQyxNQUFNLFFBQVEsR0FBRyxHQUFrQixDQUFDO1lBQ3BDLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLFNBQVMsSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ25FLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDeEMsQ0FBQztRQUNGLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxPQUFPLENBQUM7SUFDaEIsQ0FBQyxDQUFDO0FBQ0gsQ0FBQztBQUVELFNBQVMsT0FBTyxDQUF1QixPQUE4QjtJQUNwRSxPQUFPLENBQUMsS0FBMkMsRUFBRSxFQUFFO1FBQ3RELE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMvQixTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2QsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsRUFBRSxF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LEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQztJQUU3QyxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUU7UUFDeEMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQztRQUM5QixZQUFZLEVBQUUsS0FBSztRQUNuQixVQUFVLEVBQUUsS0FBSztLQUNqQixDQUFDLENBQUM7SUFFSCxPQUFPLEtBQThCLENBQUM7QUFDdkMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG5cdENyZWF0ZUNvbXB1dGVkT3B0aW9ucyxcblx0Q3JlYXRlU2lnbmFsT3B0aW9ucyxcblx0U2lnbmFsLFxuXHRXcml0YWJsZVNpZ25hbCxcblx0Y29tcHV0ZWQsXG5cdHNpZ25hbCxcblx0dW50cmFja2VkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5ndEFueVJlY29yZCB9IGZyb20gJy4uL3R5cGVzJztcblxuY29uc3QgU1RPUkVfQ09NUFVURURfS0VZID0gJ19fbmd0X3NpZ25hbF9zdG9yZV9jb21wdXRlZF9fJztcblxuZXhwb3J0IHR5cGUgTmd0U2lnbmFsU3RvcmU8U3RhdGUgZXh0ZW5kcyBvYmplY3Q+ID0ge1xuXHRzZWxlY3Q8XG5cdFx0S2V5MSBleHRlbmRzIGtleW9mIFN0YXRlLFxuXHRcdEtleTIgZXh0ZW5kcyBrZXlvZiBTdGF0ZVtLZXkxXSxcblx0XHRLZXkzIGV4dGVuZHMga2V5b2YgU3RhdGVbS2V5MV1bS2V5Ml0sXG5cdFx0S2V5NCBleHRlbmRzIGtleW9mIFN0YXRlW0tleTFdW0tleTJdW0tleTNdLFxuXHQ+KFxuXHRcdGtleTE6IEtleTEsXG5cdFx0a2V5MjogS2V5Mixcblx0XHRrZXkzOiBLZXkzLFxuXHRcdGtleTQ6IEtleTQsXG5cdFx0b3B0aW9ucz86IENyZWF0ZUNvbXB1dGVkT3B0aW9uczxTdGF0ZVtLZXkxXVtLZXkyXVtLZXkzXVtLZXk0XT4sXG5cdCk6IFNpZ25hbDxTdGF0ZVtLZXkxXVtLZXkyXVtLZXkzXVtLZXk0XT47XG5cdHNlbGVjdDxLZXkxIGV4dGVuZHMga2V5b2YgU3RhdGUsIEtleTIgZXh0ZW5kcyBrZXlvZiBTdGF0ZVtLZXkxXSwgS2V5MyBleHRlbmRzIGtleW9mIFN0YXRlW0tleTFdW0tleTJdPihcblx0XHRrZXkxOiBLZXkxLFxuXHRcdGtleTI6IEtleTIsXG5cdFx0a2V5MzogS2V5Myxcblx0XHRvcHRpb25zPzogQ3JlYXRlQ29tcHV0ZWRPcHRpb25zPFN0YXRlW0tleTFdW0tleTJdW0tleTNdPixcblx0KTogU2lnbmFsPFN0YXRlW0tleTFdW0tleTJdW0tleTNdPjtcblx0c2VsZWN0PEtleTEgZXh0ZW5kcyBrZXlvZiBTdGF0ZSwgS2V5MiBleHRlbmRzIGtleW9mIFN0YXRlW0tleTFdPihcblx0XHRrZXkxOiBLZXkxLFxuXHRcdGtleTI6IEtleTIsXG5cdFx0b3B0aW9ucz86IENyZWF0ZUNvbXB1dGVkT3B0aW9uczxTdGF0ZVtLZXkxXVtLZXkyXT4sXG5cdCk6IFNpZ25hbDxTdGF0ZVtLZXkxXVtLZXkyXT47XG5cdHNlbGVjdDxLZXkgZXh0ZW5kcyBrZXlvZiBTdGF0ZT4oa2V5OiBLZXksIG9wdGlvbnM/OiBDcmVhdGVDb21wdXRlZE9wdGlvbnM8U3RhdGVbS2V5XT4pOiBTaWduYWw8U3RhdGVbS2V5XT47XG5cdHNlbGVjdChvcHRpb25zPzogQ3JlYXRlQ29tcHV0ZWRPcHRpb25zPFN0YXRlPik6IFNpZ25hbDxTdGF0ZT47XG5cblx0Z2V0PFxuXHRcdEtleTEgZXh0ZW5kcyBrZXlvZiBTdGF0ZSxcblx0XHRLZXkyIGV4dGVuZHMga2V5b2YgU3RhdGVbS2V5MV0sXG5cdFx0S2V5MyBleHRlbmRzIGtleW9mIFN0YXRlW0tleTFdW0tleTJdLFxuXHRcdEtleTQgZXh0ZW5kcyBrZXlvZiBTdGF0ZVtLZXkxXVtLZXkyXVtLZXkzXSxcblx0Pihcblx0XHRrZXkxOiBLZXkxLFxuXHRcdGtleTI6IEtleTIsXG5cdFx0a2V5MzogS2V5Myxcblx0XHRrZXk0OiBLZXk0LFxuXHQpOiBTdGF0ZVtLZXkxXVtLZXkyXVtLZXkzXVtLZXk0XTtcblx0Z2V0PEtleTEgZXh0ZW5kcyBrZXlvZiBTdGF0ZSwgS2V5MiBleHRlbmRzIGtleW9mIFN0YXRlW0tleTFdLCBLZXkzIGV4dGVuZHMga2V5b2YgU3RhdGVbS2V5MV1bS2V5Ml0+KFxuXHRcdGtleTE6IEtleTEsXG5cdFx0a2V5MjogS2V5Mixcblx0XHRrZXkzOiBLZXkzLFxuXHQpOiBTdGF0ZVtLZXkxXVtLZXkyXVtLZXkzXTtcblx0Z2V0PEtleTEgZXh0ZW5kcyBrZXlvZiBTdGF0ZSwgS2V5MiBleHRlbmRzIGtleW9mIFN0YXRlW0tleTFdPihrZXkxOiBLZXkxLCBrZXkyOiBLZXkyKTogU3RhdGVbS2V5MV1bS2V5Ml07XG5cdGdldDxLZXkgZXh0ZW5kcyBrZXlvZiBTdGF0ZT4oa2V5OiBLZXkpOiBTdGF0ZVtLZXldO1xuXHRnZXQoKTogU3RhdGU7XG5cblx0LyoqXG5cdCAqIE5ldyBzdGF0ZSB0YWtlcyBwcmVjZWRlbmNlXG5cdCAqL1xuXHR1cGRhdGUoc3RhdGU6IFBhcnRpYWw8U3RhdGU+IHwgKChwcmV2aW91czogU3RhdGUpID0+IFBhcnRpYWw8U3RhdGU+KSk6IHZvaWQ7XG5cblx0LyoqXG5cdCAqIEVxdWl2YWxlbmNlIHRvIHNlbGVjdCgpXG5cdCAqL1xuXHRzdGF0ZTogU2lnbmFsPFN0YXRlPjtcblx0LyoqXG5cdCAqIEVxdWl2YWxlbmNlIHRvIGdldCgpXG5cdCAqL1xuXHRnZXQgc25hcHNob3QoKTogU3RhdGU7XG59O1xuXG5mdW5jdGlvbiByZWR1Y2VyPFN0YXRlIGV4dGVuZHMgb2JqZWN0PihzdGF0ZTogU3RhdGUgfCAoKHByZXZpb3VzOiBTdGF0ZSkgPT4gU3RhdGUpKSB7XG5cdHJldHVybiAocHJldmlvdXM6IFN0YXRlKSA9PiB7XG5cdFx0Y29uc3QgcGFydGlhbCA9IHR5cGVvZiBzdGF0ZSA9PT0gJ2Z1bmN0aW9uJyA/IHN0YXRlKHByZXZpb3VzKSA6IHN0YXRlO1xuXHRcdE9iamVjdC5rZXlzKHBhcnRpYWwpLmZvckVhY2goKGtleSkgPT4ge1xuXHRcdFx0Y29uc3QgdHlwZWRLZXkgPSBrZXkgYXMga2V5b2YgU3RhdGU7XG5cdFx0XHRpZiAocGFydGlhbFt0eXBlZEtleV0gPT09IHVuZGVmaW5lZCAmJiBwcmV2aW91c1t0eXBlZEtleV0gIT0gbnVsbCkge1xuXHRcdFx0XHRwYXJ0aWFsW3R5cGVkS2V5XSA9IHByZXZpb3VzW3R5cGVkS2V5XTtcblx0XHRcdH1cblx0XHR9KTtcblx0XHRyZXR1cm4gcGFydGlhbDtcblx0fTtcbn1cblxuZnVuY3Rpb24gdXBkYXRlcjxTdGF0ZSBleHRlbmRzIG9iamVjdD4oX3NvdXJjZTogV3JpdGFibGVTaWduYWw8U3RhdGU+KSB7XG5cdHJldHVybiAoc3RhdGU6IFN0YXRlIHwgKChwcmV2aW91czogU3RhdGUpID0+IFN0YXRlKSkgPT4ge1xuXHRcdGNvbnN0IHVwZGF0ZXIgPSByZWR1Y2VyKHN0YXRlKTtcblx0XHR1bnRyYWNrZWQoKCkgPT4ge1xuXHRcdFx0X3NvdXJjZS51cGRhdGUoKHByZXZpb3VzKSA9PiAoeyAuLi5wcmV2aW91cywgLi4udXBkYXRlcihwcmV2aW91cykgfSkpO1xuXHRcdH0pO1xuXHR9O1xufVxuXG5mdW5jdGlvbiBnZXR0ZXI8U3RhdGUgZXh0ZW5kcyBvYmplY3Q+KF9zb3VyY2U6IFdyaXRhYmxlU2lnbmFsPFN0YXRlPikge1xuXHRyZXR1cm4gKC4uLmtleXM6IHN0cmluZ1tdKSA9PiB7XG5cdFx0Y29uc3Qgcm9vdCA9IHVudHJhY2tlZChfc291cmNlKTtcblx0XHRpZiAoa2V5cy5sZW5ndGggPT09IDApIHJldHVybiByb290O1xuXHRcdHJldHVybiBrZXlzLnJlZHVjZSgodmFsdWUsIGtleSkgPT4gKHZhbHVlIGFzIE5ndEFueVJlY29yZClba2V5XSwgcm9vdCk7XG5cdH07XG59XG5cbmZ1bmN0aW9uIHNlbGVjdG9yPFN0YXRlIGV4dGVuZHMgb2JqZWN0Pihfc3RhdGU6IFNpZ25hbDxTdGF0ZT4sIGNvbXB1dGVkQ2FjaGU6IE1hcDxzdHJpbmcsIFNpZ25hbDxhbnk+Pikge1xuXHRyZXR1cm4gKC4uLmtleXNBbmRPcHRpb25zOiBhbnlbXSkgPT4ge1xuXHRcdGlmIChrZXlzQW5kT3B0aW9ucy5sZW5ndGggPT09IDApIHJldHVybiBfc3RhdGU7XG5cdFx0aWYgKGtleXNBbmRPcHRpb25zLmxlbmd0aCA9PT0gMSAmJiB0eXBlb2Yga2V5c0FuZE9wdGlvbnNbMF0gPT09ICdvYmplY3QnKSB7XG5cdFx0XHRjb25zdCBjYWNoZWRLZXkgPSBTVE9SRV9DT01QVVRFRF9LRVkuY29uY2F0KEpTT04uc3RyaW5naWZ5KGtleXNBbmRPcHRpb25zWzBdKSk7XG5cdFx0XHRpZiAoIWNvbXB1dGVkQ2FjaGUuaGFzKGNhY2hlZEtleSkpIHtcblx0XHRcdFx0Y29tcHV0ZWRDYWNoZS5zZXQoY2FjaGVkS2V5LCBjb21wdXRlZChfc3RhdGUsIGtleXNBbmRPcHRpb25zIGFzIENyZWF0ZUNvbXB1dGVkT3B0aW9uczxvYmplY3Q+KSk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gY29tcHV0ZWRDYWNoZS5nZXQoY2FjaGVkS2V5KSE7XG5cdFx0fVxuXHRcdGNvbnN0IFtrZXlzLCBvcHRpb25zXSA9IHBhcnNlU3RvcmVPcHRpb25zKGtleXNBbmRPcHRpb25zKTtcblx0XHRjb25zdCBqb2luZWRLZXlzID0ga2V5cy5qb2luKCctJyk7XG5cdFx0Y29uc3QgY2FjaGVkS2V5cyA9IGpvaW5lZEtleXMuY29uY2F0KEpTT04uc3RyaW5naWZ5KG9wdGlvbnMpKTtcblxuXHRcdGlmICghY29tcHV0ZWRDYWNoZS5oYXMoY2FjaGVkS2V5cykpIHtcblx0XHRcdGNvbXB1dGVkQ2FjaGUuc2V0KFxuXHRcdFx0XHRjYWNoZWRLZXlzLFxuXHRcdFx0XHRjb21wdXRlZCgoKSA9PiBrZXlzLnJlZHVjZSgodmFsdWUsIGtleSkgPT4gKHZhbHVlIGFzIE5ndEFueVJlY29yZClba2V5XSwgX3N0YXRlKCkpLCBvcHRpb25zKSxcblx0XHRcdCk7XG5cdFx0fVxuXHRcdHJldHVybiBjb21wdXRlZENhY2hlLmdldChjYWNoZWRLZXlzKSE7XG5cdH07XG59XG5cbmZ1bmN0aW9uIHBhcnNlU3RvcmVPcHRpb25zKGtleXNBbmRPcHRpb25zOiBhbnlbXSk6IFtzdHJpbmdbXSwgQ3JlYXRlQ29tcHV0ZWRPcHRpb25zPGFueT4/XSB7XG5cdGlmICh0eXBlb2Yga2V5c0FuZE9wdGlvbnMuYXQoLTEpID09PSAnb2JqZWN0Jykge1xuXHRcdHJldHVybiBba2V5c0FuZE9wdGlvbnMuc2xpY2UoMCwgLTEpLCBrZXlzQW5kT3B0aW9ucy5hdCgtMSldO1xuXHR9XG5cblx0cmV0dXJuIFtrZXlzQW5kT3B0aW9ucywgeyBlcXVhbDogT2JqZWN0LmlzIH1dO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2lnbmFsU3RvcmU8U3RhdGUgZXh0ZW5kcyBvYmplY3Q+KFxuXHRpbml0aWFsU3RhdGU6XG5cdFx0fCBQYXJ0aWFsPFN0YXRlPlxuXHRcdHwgKChzdG9yZUFwaTogUGljazxOZ3RTaWduYWxTdG9yZTxTdGF0ZT4sICdnZXQnIHwgJ3VwZGF0ZScgfCAnc2VsZWN0Jz4pID0+IFBhcnRpYWw8U3RhdGU+KSA9IHt9LFxuXHRvcHRpb25zPzogQ3JlYXRlU2lnbmFsT3B0aW9uczxTdGF0ZT4sXG4pOiBOZ3RTaWduYWxTdG9yZTxTdGF0ZT4ge1xuXHRsZXQgc291cmNlOiBXcml0YWJsZVNpZ25hbDxTdGF0ZT47XG5cdGxldCB1cGRhdGU6IE5ndFNpZ25hbFN0b3JlPFN0YXRlPlsndXBkYXRlJ107XG5cdGxldCBnZXQ6IE5ndFNpZ25hbFN0b3JlPFN0YXRlPlsnZ2V0J107XG5cdGxldCBzZWxlY3Q6IE5ndFNpZ25hbFN0b3JlPFN0YXRlPlsnc2VsZWN0J107XG5cdGxldCBzdGF0ZTogU2lnbmFsPFN0YXRlPjtcblxuXHRjb25zdCBjb21wdXRlZENhY2hlID0gbmV3IE1hcCgpO1xuXG5cdGlmICghb3B0aW9ucykge1xuXHRcdG9wdGlvbnMgPSB7IGVxdWFsOiBPYmplY3QuaXMgfTtcblx0fVxuXG5cdGlmICh0eXBlb2YgaW5pdGlhbFN0YXRlID09PSAnZnVuY3Rpb24nKSB7XG5cdFx0c291cmNlID0gc2lnbmFsKHt9IGFzIFN0YXRlLCBvcHRpb25zKTtcblx0XHRzdGF0ZSA9IHNvdXJjZS5hc1JlYWRvbmx5KCk7XG5cdFx0Z2V0ID0gZ2V0dGVyKHNvdXJjZSk7XG5cdFx0dXBkYXRlID0gdXBkYXRlcihzb3VyY2UpO1xuXHRcdHNlbGVjdCA9IHNlbGVjdG9yKHN0YXRlLCBjb21wdXRlZENhY2hlKTtcblx0XHRzb3VyY2Uuc2V0KGluaXRpYWxTdGF0ZSh7IHVwZGF0ZSwgZ2V0LCBzZWxlY3QgfSkgYXMgU3RhdGUpO1xuXHR9IGVsc2Uge1xuXHRcdHNvdXJjZSA9IHNpZ25hbChpbml0aWFsU3RhdGUgYXMgU3RhdGUsIG9wdGlvbnMpO1xuXHRcdHN0YXRlID0gc291cmNlLmFzUmVhZG9ubHkoKTtcblx0XHRnZXQgPSBnZXR0ZXIoc291cmNlKTtcblx0XHR1cGRhdGUgPSB1cGRhdGVyKHNvdXJjZSk7XG5cdFx0c2VsZWN0ID0gc2VsZWN0b3Ioc3RhdGUsIGNvbXB1dGVkQ2FjaGUpO1xuXHR9XG5cblx0Y29uc3Qgc3RvcmUgPSB7IHNlbGVjdCwgZ2V0LCB1cGRhdGUsIHN0YXRlIH07XG5cblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KHN0b3JlLCAnc25hcHNob3QnLCB7XG5cdFx0Z2V0OiB1bnRyYWNrZWQuYmluZCh7fSwgc3RhdGUpLFxuXHRcdGNvbmZpZ3VyYWJsZTogZmFsc2UsXG5cdFx0ZW51bWVyYWJsZTogZmFsc2UsXG5cdH0pO1xuXG5cdHJldHVybiBzdG9yZSBhcyBOZ3RTaWduYWxTdG9yZTxTdGF0ZT47XG59XG4iXX0=
@@ -14,6 +14,9 @@ export function checkUpdate(value) {
14
14
  value.updateProjectionMatrix();
15
15
  value.updateMatrixWorld();
16
16
  }
17
+ // NOTE: skip checkNeedsUpdate for CubeTexture
18
+ if (value && value.isCubeTexture)
19
+ return;
17
20
  checkNeedsUpdate(value);
18
21
  }
19
22
  export function updateCamera(camera, size) {
@@ -24,10 +27,11 @@ export function updateCamera(camera, size) {
24
27
  camera.top = size.height / 2;
25
28
  camera.bottom = size.height / -2;
26
29
  }
27
- else
30
+ else {
28
31
  camera.aspect = size.width / size.height;
32
+ }
29
33
  camera.updateProjectionMatrix();
30
34
  camera.updateMatrixWorld();
31
35
  }
32
36
  }
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvdXRpbHMvdXBkYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFMUIsTUFBTSxVQUFVLGdCQUFnQixDQUFDLEtBQWM7SUFDOUMsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksYUFBYSxJQUFLLEtBQXNCLEVBQUU7UUFDL0UsS0FBc0IsQ0FBQyxhQUFhLENBQUMsR0FBRyxJQUFJLENBQUM7UUFDOUMsSUFBSSxvQkFBb0IsSUFBSyxLQUFzQjtZQUFHLEtBQXNCLENBQUMsb0JBQW9CLENBQUMsR0FBRyxJQUFJLENBQUM7S0FDMUc7QUFDRixDQUFDO0FBRUQsTUFBTSxVQUFVLFdBQVcsQ0FBQyxLQUFjO0lBQ3pDLElBQUksRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7UUFBRSxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUM7SUFFN0MsSUFBSSxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFO1FBQ3JCLElBQUksRUFBRSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUM7WUFBRSxLQUFLLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUNoRyxLQUFLLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztLQUMxQjtJQUVELGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3pCLENBQUM7QUFFRCxNQUFNLFVBQVUsWUFBWSxDQUFDLE1BQXVCLEVBQUUsSUFBYTtJQUNsRSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRTtRQUNuQixJQUFJLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNsQyxNQUFNLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDOUIsTUFBTSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztZQUM5QixNQUFNLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1lBQzdCLE1BQU0sQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztTQUNqQzs7WUFBTSxNQUFNLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUVoRCxNQUFNLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUNoQyxNQUFNLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztLQUMzQjtBQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IE5ndENhbWVyYU1hbnVhbCwgTmd0U2l6ZSB9IGZyb20gJy4uL3N0b3JlJztcbmltcG9ydCB0eXBlIHsgTmd0QW55UmVjb3JkIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgaXMgfSBmcm9tICcuL2lzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrTmVlZHNVcGRhdGUodmFsdWU6IHVua25vd24pIHtcblx0aWYgKHZhbHVlICE9PSBudWxsICYmIGlzLm9iaih2YWx1ZSkgJiYgJ25lZWRzVXBkYXRlJyBpbiAodmFsdWUgYXMgTmd0QW55UmVjb3JkKSkge1xuXHRcdCh2YWx1ZSBhcyBOZ3RBbnlSZWNvcmQpWyduZWVkc1VwZGF0ZSddID0gdHJ1ZTtcblx0XHRpZiAoJ3VuaWZvcm1zTmVlZFVwZGF0ZScgaW4gKHZhbHVlIGFzIE5ndEFueVJlY29yZCkpICh2YWx1ZSBhcyBOZ3RBbnlSZWNvcmQpWyd1bmlmb3Jtc05lZWRVcGRhdGUnXSA9IHRydWU7XG5cdH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrVXBkYXRlKHZhbHVlOiB1bmtub3duKSB7XG5cdGlmIChpcy5vYmplY3QzRCh2YWx1ZSkpIHZhbHVlLnVwZGF0ZU1hdHJpeCgpO1xuXG5cdGlmIChpcy5jYW1lcmEodmFsdWUpKSB7XG5cdFx0aWYgKGlzLnBlcnNwZWN0aXZlQ2FtZXJhKHZhbHVlKSB8fCBpcy5vcnRob2dyYXBoaWNDYW1lcmEodmFsdWUpKSB2YWx1ZS51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCk7XG5cdFx0dmFsdWUudXBkYXRlTWF0cml4V29ybGQoKTtcblx0fVxuXG5cdGNoZWNrTmVlZHNVcGRhdGUodmFsdWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdXBkYXRlQ2FtZXJhKGNhbWVyYTogTmd0Q2FtZXJhTWFudWFsLCBzaXplOiBOZ3RTaXplKSB7XG5cdGlmICghY2FtZXJhLm1hbnVhbCkge1xuXHRcdGlmIChpcy5vcnRob2dyYXBoaWNDYW1lcmEoY2FtZXJhKSkge1xuXHRcdFx0Y2FtZXJhLmxlZnQgPSBzaXplLndpZHRoIC8gLTI7XG5cdFx0XHRjYW1lcmEucmlnaHQgPSBzaXplLndpZHRoIC8gMjtcblx0XHRcdGNhbWVyYS50b3AgPSBzaXplLmhlaWdodCAvIDI7XG5cdFx0XHRjYW1lcmEuYm90dG9tID0gc2l6ZS5oZWlnaHQgLyAtMjtcblx0XHR9IGVsc2UgY2FtZXJhLmFzcGVjdCA9IHNpemUud2lkdGggLyBzaXplLmhlaWdodDtcblxuXHRcdGNhbWVyYS51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCk7XG5cdFx0Y2FtZXJhLnVwZGF0ZU1hdHJpeFdvcmxkKCk7XG5cdH1cbn1cbiJdfQ==
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvdXRpbHMvdXBkYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFMUIsTUFBTSxVQUFVLGdCQUFnQixDQUFDLEtBQWM7SUFDOUMsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksYUFBYSxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQy9ELEtBQUssQ0FBQyxhQUFhLENBQUMsR0FBRyxJQUFJLENBQUM7UUFDNUIsSUFBSSxvQkFBb0IsSUFBSSxLQUFLO1lBQUUsS0FBSyxDQUFDLG9CQUFvQixDQUFDLEdBQUcsSUFBSSxDQUFDO0lBQ3ZFLENBQUM7QUFDRixDQUFDO0FBRUQsTUFBTSxVQUFVLFdBQVcsQ0FBQyxLQUFjO0lBQ3pDLElBQUksRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7UUFBRSxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUM7SUFFN0MsSUFBSSxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDdEIsSUFBSSxFQUFFLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQztZQUFFLEtBQUssQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBQ2hHLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCw4Q0FBOEM7SUFDOUMsSUFBSSxLQUFLLElBQUssS0FBcUIsQ0FBQyxhQUFhO1FBQUUsT0FBTztJQUUxRCxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN6QixDQUFDO0FBRUQsTUFBTSxVQUFVLFlBQVksQ0FBQyxNQUF1QixFQUFFLElBQWE7SUFDbEUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNwQixJQUFJLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQ25DLE1BQU0sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztZQUM5QixNQUFNLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1lBQzlCLE1BQU0sQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7WUFDN0IsTUFBTSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ2xDLENBQUM7YUFBTSxDQUFDO1lBQ1AsTUFBTSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDMUMsQ0FBQztRQUVELE1BQU0sQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBQ2hDLE1BQU0sQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQzVCLENBQUM7QUFDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ3ViZVRleHR1cmUgfSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBOZ3RDYW1lcmFNYW51YWwsIE5ndFNpemUgfSBmcm9tICcuLi9zdG9yZSc7XG5pbXBvcnQgeyBpcyB9IGZyb20gJy4vaXMnO1xuXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tOZWVkc1VwZGF0ZSh2YWx1ZTogdW5rbm93bikge1xuXHRpZiAodmFsdWUgIT09IG51bGwgJiYgaXMub2JqKHZhbHVlKSAmJiAnbmVlZHNVcGRhdGUnIGluIHZhbHVlKSB7XG5cdFx0dmFsdWVbJ25lZWRzVXBkYXRlJ10gPSB0cnVlO1xuXHRcdGlmICgndW5pZm9ybXNOZWVkVXBkYXRlJyBpbiB2YWx1ZSkgdmFsdWVbJ3VuaWZvcm1zTmVlZFVwZGF0ZSddID0gdHJ1ZTtcblx0fVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tVcGRhdGUodmFsdWU6IHVua25vd24pIHtcblx0aWYgKGlzLm9iamVjdDNEKHZhbHVlKSkgdmFsdWUudXBkYXRlTWF0cml4KCk7XG5cblx0aWYgKGlzLmNhbWVyYSh2YWx1ZSkpIHtcblx0XHRpZiAoaXMucGVyc3BlY3RpdmVDYW1lcmEodmFsdWUpIHx8IGlzLm9ydGhvZ3JhcGhpY0NhbWVyYSh2YWx1ZSkpIHZhbHVlLnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKTtcblx0XHR2YWx1ZS51cGRhdGVNYXRyaXhXb3JsZCgpO1xuXHR9XG5cblx0Ly8gTk9URTogc2tpcCBjaGVja05lZWRzVXBkYXRlIGZvciBDdWJlVGV4dHVyZVxuXHRpZiAodmFsdWUgJiYgKHZhbHVlIGFzIEN1YmVUZXh0dXJlKS5pc0N1YmVUZXh0dXJlKSByZXR1cm47XG5cblx0Y2hlY2tOZWVkc1VwZGF0ZSh2YWx1ZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1cGRhdGVDYW1lcmEoY2FtZXJhOiBOZ3RDYW1lcmFNYW51YWwsIHNpemU6IE5ndFNpemUpIHtcblx0aWYgKCFjYW1lcmEubWFudWFsKSB7XG5cdFx0aWYgKGlzLm9ydGhvZ3JhcGhpY0NhbWVyYShjYW1lcmEpKSB7XG5cdFx0XHRjYW1lcmEubGVmdCA9IHNpemUud2lkdGggLyAtMjtcblx0XHRcdGNhbWVyYS5yaWdodCA9IHNpemUud2lkdGggLyAyO1xuXHRcdFx0Y2FtZXJhLnRvcCA9IHNpemUuaGVpZ2h0IC8gMjtcblx0XHRcdGNhbWVyYS5ib3R0b20gPSBzaXplLmhlaWdodCAvIC0yO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRjYW1lcmEuYXNwZWN0ID0gc2l6ZS53aWR0aCAvIHNpemUuaGVpZ2h0O1xuXHRcdH1cblxuXHRcdGNhbWVyYS51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCk7XG5cdFx0Y2FtZXJhLnVwZGF0ZU1hdHJpeFdvcmxkKCk7XG5cdH1cbn1cbiJdfQ==