@shopware-ag/dive 2.2.17 → 2.2.18
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.
- package/build/chunks/{AssetCache-CpKF1NzV.cjs → AssetCache-BElKTasn.cjs} +1 -1
- package/build/chunks/{AssetCache-Ba-m-7zA.mjs → AssetCache-DbUJFLZt.mjs} +1 -1
- package/build/chunks/{AssetLoader-B03j7xvX.cjs → AssetLoader-CT_t_ZfO.cjs} +1 -1
- package/build/chunks/{AssetLoader-C2NGPDLw.mjs → AssetLoader-D5zuGw5p.mjs} +2 -2
- package/build/chunks/FileTypes-Bq4uWglF.mjs +2105 -0
- package/build/chunks/FileTypes-Vbu3ti7s.cjs +33 -0
- package/build/chunks/{SelectTool-ClSKQ893.cjs → SelectTool-4zYuuCRL.cjs} +1 -1
- package/build/chunks/{SelectTool-D-StWurg.mjs → SelectTool-PaTy0iER.mjs} +1 -1
- package/build/dive.cjs +1 -1
- package/build/dive.mjs +50 -48
- package/build/engine/Dive.d.ts +6 -0
- package/build/engine/environment/Environment.d.ts +133 -0
- package/build/engine/index.d.ts +1 -0
- package/build/engine/renderer/Renderer.d.ts +3 -0
- package/build/plugins/ar/index.cjs +1 -1
- package/build/plugins/ar/index.mjs +1 -1
- package/build/plugins/assetcache/index.cjs +1 -1
- package/build/plugins/assetcache/index.mjs +1 -1
- package/build/plugins/assetloader/index.cjs +1 -1
- package/build/plugins/assetloader/index.mjs +1 -1
- package/build/plugins/orbitcontroller/index.cjs +1 -1
- package/build/plugins/orbitcontroller/index.mjs +1 -1
- package/build/plugins/orientationdisplay/index.cjs +1 -1
- package/build/plugins/orientationdisplay/index.mjs +1 -1
- package/build/plugins/quickview/index.cjs +1 -1
- package/build/plugins/quickview/index.mjs +16 -24
- package/build/plugins/quickview/src/QuickView.d.ts +1 -3
- package/build/plugins/quickview/types/QuickViewSettings.d.ts +0 -5
- package/build/plugins/state/index.cjs +1 -1
- package/build/plugins/state/index.mjs +2 -2
- package/build/plugins/toolbox/index.cjs +1 -1
- package/build/plugins/toolbox/index.mjs +2 -2
- package/package.json +6 -8
- package/build/chunks/FileTypes-D5A0_pG_.cjs +0 -29
- package/build/chunks/FileTypes-Djlx9wth.mjs +0 -1804
- package/build/chunks/HDREnvorinment-CP2Uvq4_.cjs +0 -5
- package/build/chunks/HDREnvorinment-DKzwfsKr.mjs +0 -257
- package/build/plugins/hdr/index.cjs +0 -1
- package/build/plugins/hdr/index.d.ts +0 -2
- package/build/plugins/hdr/index.mjs +0 -5
- package/build/plugins/hdr/src/HDREnvorinment.d.ts +0 -35
- package/build/plugins/hdr/src/index.d.ts +0 -1
- package/build/plugins/hdr/types/HDREnvironmentSettings.d.ts +0 -44
- package/build/plugins/hdr/types/index.d.ts +0 -1
|
@@ -0,0 +1,2105 @@
|
|
|
1
|
+
var HA = Object.defineProperty;
|
|
2
|
+
var qA = (h, g, A) => g in h ? HA(h, g, { enumerable: !0, configurable: !0, writable: !0, value: A }) : h[g] = A;
|
|
3
|
+
var e = (h, g, A) => qA(h, typeof g != "symbol" ? g + "" : g, A);
|
|
4
|
+
import { DataTextureLoader as dA, HalfFloatType as j, FloatType as U, DataUtils as k, LinearSRGBColorSpace as CA, LinearFilter as hA, PMREMGenerator as aA, Scene as wA, SphereGeometry as S, MeshBasicMaterial as iA, BackSide as YA, Mesh as Z, NoToneMapping as bA, WebGLCubeRenderTarget as yA, CubeCamera as OA, EquirectangularReflectionMapping as MA, WebGLRenderer as LA, PCFSoftShadowMap as FA, PCFShadowMap as XA, BasicShadowMap as jA, SRGBColorSpace as EA, ACESFilmicToneMapping as ZA, MathUtils as eA, Object3D as O, AmbientLight as QA, PointLight as WA, FrontSide as GA, HemisphereLight as NA, DirectionalLight as kA, Vector3 as w, Box3 as y, Box3Helper as xA, Sphere as TA, MeshStandardMaterial as gA, Raycaster as JA, CylinderGeometry as SA, BufferGeometry as uA, BufferAttribute as rA, BoxGeometry as $, ConeGeometry as _A, LineDashedMaterial as VA, Line as RA, PlaneGeometry as UA, Color as J, GridHelper as $A, TOUCH as l, MOUSE as K, EventDispatcher as Ai, Spherical as BA, Vector2 as u, Quaternion as cA } from "three";
|
|
5
|
+
import { P as v, U as ii, H as ei, a as gi, D as PA } from "./PerspectiveCamera-BFzE2TQU.mjs";
|
|
6
|
+
class ti {
|
|
7
|
+
constructor() {
|
|
8
|
+
e(this, "isDIVEClock", !0);
|
|
9
|
+
e(this, "_lastTime", 0);
|
|
10
|
+
e(this, "_isRunning", !1);
|
|
11
|
+
e(this, "_tickers", []);
|
|
12
|
+
}
|
|
13
|
+
start() {
|
|
14
|
+
this._isRunning || (this._isRunning = !0, this._lastTime = performance.now(), requestAnimationFrame(this._tick.bind(this)));
|
|
15
|
+
}
|
|
16
|
+
stop() {
|
|
17
|
+
this._isRunning = !1;
|
|
18
|
+
}
|
|
19
|
+
addTicker(g) {
|
|
20
|
+
this._tickers.find((A) => A.uuid === g.uuid) || this._tickers.push(g);
|
|
21
|
+
}
|
|
22
|
+
hasTicker(g) {
|
|
23
|
+
return this._tickers.find((A) => A.uuid === g.uuid) !== void 0;
|
|
24
|
+
}
|
|
25
|
+
removeTicker(g) {
|
|
26
|
+
const A = this._tickers.findIndex((i) => i.uuid === g.uuid);
|
|
27
|
+
A !== -1 && this._tickers.splice(A, 1);
|
|
28
|
+
}
|
|
29
|
+
dispose() {
|
|
30
|
+
this.stop(), this._tickers = [], this._isRunning = !1, this._lastTime = 0;
|
|
31
|
+
}
|
|
32
|
+
_tick(g) {
|
|
33
|
+
if (!this._isRunning) return;
|
|
34
|
+
const A = (g - this._lastTime) / 1e3;
|
|
35
|
+
this._lastTime = g, this._tickers.forEach((i) => i.tick(A)), requestAnimationFrame(this._tick.bind(this));
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
class oi extends dA {
|
|
39
|
+
constructor(g) {
|
|
40
|
+
super(g), this.type = j;
|
|
41
|
+
}
|
|
42
|
+
// adapted from http://www.graphics.cornell.edu/~bjw/rgbe.html
|
|
43
|
+
parse(g) {
|
|
44
|
+
const s = function(n, a) {
|
|
45
|
+
switch (n) {
|
|
46
|
+
case 1:
|
|
47
|
+
throw new Error("THREE.RGBELoader: Read Error: " + (a || ""));
|
|
48
|
+
case 2:
|
|
49
|
+
throw new Error("THREE.RGBELoader: Write Error: " + (a || ""));
|
|
50
|
+
case 3:
|
|
51
|
+
throw new Error("THREE.RGBELoader: Bad File Format: " + (a || ""));
|
|
52
|
+
default:
|
|
53
|
+
case 4:
|
|
54
|
+
throw new Error("THREE.RGBELoader: Memory Error: " + (a || ""));
|
|
55
|
+
}
|
|
56
|
+
}, Q = `
|
|
57
|
+
`, q = function(n, a, c) {
|
|
58
|
+
a = a || 1024;
|
|
59
|
+
let I = n.pos, z = -1, f = 0, C = "", r = String.fromCharCode.apply(null, new Uint16Array(n.subarray(I, I + 128)));
|
|
60
|
+
for (; 0 > (z = r.indexOf(Q)) && f < a && I < n.byteLength; )
|
|
61
|
+
C += r, f += r.length, I += 128, r += String.fromCharCode.apply(null, new Uint16Array(n.subarray(I, I + 128)));
|
|
62
|
+
return -1 < z ? (n.pos += f + z + 1, C + r.slice(0, z)) : !1;
|
|
63
|
+
}, M = function(n) {
|
|
64
|
+
const a = /^#\?(\S+)/, c = /^\s*GAMMA\s*=\s*(\d+(\.\d+)?)\s*$/, P = /^\s*EXPOSURE\s*=\s*(\d+(\.\d+)?)\s*$/, I = /^\s*FORMAT=(\S+)\s*$/, z = /^\s*\-Y\s+(\d+)\s+\+X\s+(\d+)\s*$/, f = {
|
|
65
|
+
valid: 0,
|
|
66
|
+
/* indicate which fields are valid */
|
|
67
|
+
string: "",
|
|
68
|
+
/* the actual header string */
|
|
69
|
+
comments: "",
|
|
70
|
+
/* comments found in header */
|
|
71
|
+
programtype: "RGBE",
|
|
72
|
+
/* listed at beginning of file to identify it after "#?". defaults to "RGBE" */
|
|
73
|
+
format: "",
|
|
74
|
+
/* RGBE format, default 32-bit_rle_rgbe */
|
|
75
|
+
gamma: 1,
|
|
76
|
+
/* image has already been gamma corrected with given gamma. defaults to 1.0 (no correction) */
|
|
77
|
+
exposure: 1,
|
|
78
|
+
/* a value of 1.0 in an image corresponds to <exposure> watts/steradian/m^2. defaults to 1.0 */
|
|
79
|
+
width: 0,
|
|
80
|
+
height: 0
|
|
81
|
+
/* image dimensions, width/height */
|
|
82
|
+
};
|
|
83
|
+
let C, r;
|
|
84
|
+
for ((n.pos >= n.byteLength || !(C = q(n))) && s(1, "no header found"), (r = C.match(a)) || s(3, "bad initial token"), f.valid |= 1, f.programtype = r[1], f.string += C + `
|
|
85
|
+
`; C = q(n), C !== !1; ) {
|
|
86
|
+
if (f.string += C + `
|
|
87
|
+
`, C.charAt(0) === "#") {
|
|
88
|
+
f.comments += C + `
|
|
89
|
+
`;
|
|
90
|
+
continue;
|
|
91
|
+
}
|
|
92
|
+
if ((r = C.match(c)) && (f.gamma = parseFloat(r[1])), (r = C.match(P)) && (f.exposure = parseFloat(r[1])), (r = C.match(I)) && (f.valid |= 2, f.format = r[1]), (r = C.match(z)) && (f.valid |= 4, f.height = parseInt(r[1], 10), f.width = parseInt(r[2], 10)), f.valid & 2 && f.valid & 4) break;
|
|
93
|
+
}
|
|
94
|
+
return f.valid & 2 || s(3, "missing format specifier"), f.valid & 4 || s(3, "missing image size specifier"), f;
|
|
95
|
+
}, d = function(n, a, c) {
|
|
96
|
+
const P = a;
|
|
97
|
+
if (
|
|
98
|
+
// run length encoding is not allowed so read flat
|
|
99
|
+
P < 8 || P > 32767 || // this file is not run length encoded
|
|
100
|
+
n[0] !== 2 || n[1] !== 2 || n[2] & 128
|
|
101
|
+
)
|
|
102
|
+
return new Uint8Array(n);
|
|
103
|
+
P !== (n[2] << 8 | n[3]) && s(3, "wrong scanline width");
|
|
104
|
+
const I = new Uint8Array(4 * a * c);
|
|
105
|
+
I.length || s(4, "unable to allocate buffer space");
|
|
106
|
+
let z = 0, f = 0;
|
|
107
|
+
const C = 4 * P, r = new Uint8Array(4), b = new Uint8Array(C);
|
|
108
|
+
let nA = c;
|
|
109
|
+
for (; nA > 0 && f < n.byteLength; ) {
|
|
110
|
+
f + 4 > n.byteLength && s(1), r[0] = n[f++], r[1] = n[f++], r[2] = n[f++], r[3] = n[f++], (r[0] != 2 || r[1] != 2 || (r[2] << 8 | r[3]) != P) && s(3, "bad rgbe scanline format");
|
|
111
|
+
let X = 0, D;
|
|
112
|
+
for (; X < C && f < n.byteLength; ) {
|
|
113
|
+
D = n[f++];
|
|
114
|
+
const m = D > 128;
|
|
115
|
+
if (m && (D -= 128), (D === 0 || X + D > C) && s(3, "bad scanline data"), m) {
|
|
116
|
+
const p = n[f++];
|
|
117
|
+
for (let fA = 0; fA < D; fA++)
|
|
118
|
+
b[X++] = p;
|
|
119
|
+
} else
|
|
120
|
+
b.set(n.subarray(f, f + D), X), X += D, f += D;
|
|
121
|
+
}
|
|
122
|
+
const vA = P;
|
|
123
|
+
for (let m = 0; m < vA; m++) {
|
|
124
|
+
let p = 0;
|
|
125
|
+
I[z] = b[m + p], p += P, I[z + 1] = b[m + p], p += P, I[z + 2] = b[m + p], p += P, I[z + 3] = b[m + p], z += 4;
|
|
126
|
+
}
|
|
127
|
+
nA--;
|
|
128
|
+
}
|
|
129
|
+
return I;
|
|
130
|
+
}, W = function(n, a, c, P) {
|
|
131
|
+
const I = n[a + 3], z = Math.pow(2, I - 128) / 255;
|
|
132
|
+
c[P + 0] = n[a + 0] * z, c[P + 1] = n[a + 1] * z, c[P + 2] = n[a + 2] * z, c[P + 3] = 1;
|
|
133
|
+
}, _ = function(n, a, c, P) {
|
|
134
|
+
const I = n[a + 3], z = Math.pow(2, I - 128) / 255;
|
|
135
|
+
c[P + 0] = k.toHalfFloat(Math.min(n[a + 0] * z, 65504)), c[P + 1] = k.toHalfFloat(Math.min(n[a + 1] * z, 65504)), c[P + 2] = k.toHalfFloat(Math.min(n[a + 2] * z, 65504)), c[P + 3] = k.toHalfFloat(1);
|
|
136
|
+
}, L = new Uint8Array(g);
|
|
137
|
+
L.pos = 0;
|
|
138
|
+
const F = M(L), oA = F.width, sA = F.height, N = d(L.subarray(L.pos), oA, sA);
|
|
139
|
+
let V, R, Y;
|
|
140
|
+
switch (this.type) {
|
|
141
|
+
case U:
|
|
142
|
+
Y = N.length / 4;
|
|
143
|
+
const n = new Float32Array(Y * 4);
|
|
144
|
+
for (let c = 0; c < Y; c++)
|
|
145
|
+
W(N, c * 4, n, c * 4);
|
|
146
|
+
V = n, R = U;
|
|
147
|
+
break;
|
|
148
|
+
case j:
|
|
149
|
+
Y = N.length / 4;
|
|
150
|
+
const a = new Uint16Array(Y * 4);
|
|
151
|
+
for (let c = 0; c < Y; c++)
|
|
152
|
+
_(N, c * 4, a, c * 4);
|
|
153
|
+
V = a, R = j;
|
|
154
|
+
break;
|
|
155
|
+
default:
|
|
156
|
+
throw new Error("THREE.RGBELoader: Unsupported type: " + this.type);
|
|
157
|
+
}
|
|
158
|
+
return {
|
|
159
|
+
width: oA,
|
|
160
|
+
height: sA,
|
|
161
|
+
data: V,
|
|
162
|
+
header: F.string,
|
|
163
|
+
gamma: F.gamma,
|
|
164
|
+
exposure: F.exposure,
|
|
165
|
+
type: R
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
setDataType(g) {
|
|
169
|
+
return this.type = g, this;
|
|
170
|
+
}
|
|
171
|
+
load(g, A, i, t) {
|
|
172
|
+
function o(s, B) {
|
|
173
|
+
switch (s.type) {
|
|
174
|
+
case U:
|
|
175
|
+
case j:
|
|
176
|
+
s.colorSpace = CA, s.minFilter = hA, s.magFilter = hA, s.generateMipmaps = !1, s.flipY = !0;
|
|
177
|
+
break;
|
|
178
|
+
}
|
|
179
|
+
A && A(s, B);
|
|
180
|
+
}
|
|
181
|
+
return super.load(g, o, i, t);
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
const DA = "data:application/octet-stream;base64,Iz9SQURJQU5DRQojIE1hZGUgd2l0aCBBZG9iZSBQaG90b3Nob3AKRk9STUFUPTMyLWJpdF9ybGVfcmdiZQoKLVkgNTEyICtYIDEwMjQKAgIEAP/c/9z/3P/c/9z/3P/c/9yI3P/c/9z/3P/c/9z/3P/c/9yI3P/c/9z/3P/c/9z/3P/c/9yI3P+B/4H/gf+B/4H/gf+B/4GIgQICBAD/3P/c/9z/3P/c/9z/3P/ciNz/3P/c/9z/3P/c/9z/3P/ciNz/3P/c/9z/3P/c/9z/3P/ciNz/gf+B/4H/gf+B/4H/gf+BiIECAgQA/9z/3P/c/9z/3P/c/9z/3Ijc/9z/3P/c/9z/3P/c/9z/3Ijc/9z/3P/c/9z/3P/c/9z/3Ijc/4H/gf+B/4H/gf+B/4H/gYiBAgIEAP/c/9z/3P/c/9z/3P/c/9yI3P/c/9z/3P/c/9z/3P/c/9yI3P/c/9z/3P/c/9z/3P/c/9yI3P+B/4H/gf+B/4H/gf+B/4GIgQICBAD/3P/c/9z/3P/c/9z/3P/ciNz/3P/c/9z/3P/c/9z/3P/ciNz/3P/c/9z/3P/c/9z/3P/ciNz/gf+B/4H/gf+B/4H/gf+BiIECAgQA/9z/3P/c/9z/3P/c/9z/3Ijc/9z/3P/c/9z/3P/c/9z/3Ijc/9z/3P/c/9z/3P/c/9z/3Ijc/4H/gf+B/4H/gf+B/4H/gYiBAgIEAP/c/9z/3P/c/9z/3P/c/9yI3P/c/9z/3P/c/9z/3P/c/9yI3P/c/9z/3P/c/9z/3P/c/9yI3P+B/4H/gf+B/4H/gf+B/4GIgQICBAD/3P/c/9z/3P/c/9z/3P/ciNz/3P/c/9z/3P/c/9z/3P/ciNz/3P/c/9z/3P/c/9z/3P/ciNz/gf+B/4H/gf+B/4H/gf+BiIECAgQA/9z/3P/c/9z/3P/c/9z/3Ijc/9z/3P/c/9z/3P/c/9z/3Ijc/9z/3P/c/9z/3P/c/9z/3Ijc/4H/gf+B/4H/gf+B/4H/gYiBAgIEAP/c/9z/3P/c/9z/3P/c/9yI3P/c/9z/3P/c/9z/3P/c/9yI3P/c/9z/3P/c/9z/3P/c/9yI3P+B/4H/gf+B/4H/gf+B/4GIgQICBAD/3P/c/9z/3P/c/9z/3P/ciNz/3P/c/9z/3P/c/9z/3P/ciNz/3P/c/9z/3P/c/9z/3P/ciNz/gf+B/4H/gf+B/4H/gf+BiIECAgQA/9z/3P/c/9z/3P/c/9z/3Ijc/9z/3P/c/9z/3P/c/9z/3Ijc/9z/3P/c/9z/3P/c/9z/3Ijc/4H/gf+B/4H/gf+B/4H/gYiBAgIEAP/c/9z/3P/c/9z/3P/c/9yI3P/c/9z/3P/c/9z/3P/c/9yI3P/c/9z/3P/c/9z/3P/c/9yI3P+B/4H/gf+B/4H/gf+B/4GIgQICBAD/3P/c/9z/3P/c/9z/3P/ciNz/3P/c/9z/3P/c/9z/3P/ciNz/3P/c/9z/3P/c/9z/3P/ciNz/gf+B/4H/gf+B/4H/gf+BiIECAgQA/9z/3P/c/9z/3P/c/9z/3Ijc/9z/3P/c/9z/3P/c/9z/3Ijc/9z/3P/c/9z/3P/c/9z/3Ijc/4H/gf+B/4H/gf+B/4H/gYiBAgIEAP/c/9z/3P/c/9z/3P/c/9yI3P/c/9z/3P/c/9z/3P/c/9yI3P/c/9z/3P/c/9z/3P/c/9yI3P+B/4H/gf+B/4H/gf+B/4GIgQICBAD/3P/c/9z/3P/c/9z/3P/ciNz/3P/c/9z/3P/c/9z/3P/ciNz/3P/c/9z/3P/c/9z/3P/ciNz/gf+B/4H/gf+B/4H/gf+BiIECAgQA/9z/3P/c/9z/3P/c/9z/3Ijc/9z/3P/c/9z/3P/c/9z/3Ijc/9z/3P/c/9z/3P/c/9z/3Ijc/4H/gf+B/4H/gf+B/4H/gYiBAgIEAP/c/9z/3P/c/9z/3P/c/9yI3P/c/9z/3P/c/9z/3P/c/9yI3P/c/9z/3P/c/9z/3P/c/9yI3P+B/4H/gf+B/4H/gf+B/4GIgQICBAD/3P/c/9z/3P/c/9z/3P/ciNz/3P/c/9z/3P/c/9z/3P/ciNz/3P/c/9z/3P/c/9z/3P/ciNz/gf+B/4H/gf+B/4H/gf+BiIECAgQA/9z/3P/c/9z/3P/c/9z/3Ijc/9z/3P/c/9z/3P/c/9z/3Ijc/9z/3P/c/9z/3P/c/9z/3Ijc/4H/gf+B/4H/gf+B/4H/gYiBAgIEAP/c/9z/3P/c/9z/3P/c/9yI3P/c/9z/3P/c/9z/3P/c/9yI3P/c/9z/3P/c/9z/3P/c/9yI3P+B/4H/gf+B/4H/gf+B/4GIgQICBAD/3P/c/9z/3P/c/9z/3P/ciNz/3P/c/9z/3P/c/9z/3P/ciNz/3P/c/9z/3P/c/9z/3P/ciNz/gf+B/4H/gf+B/4H/gf+BiIECAgQA/9z/3P/c/9z/3P/c/9z/3Ijc/9z/3P/c/9z/3P/c/9z/3Ijc/9z/3P/c/9z/3P/c/9z/3Ijc/4H/gf+B/4H/gf+B/4H/gYiBAgIEAP/c/9z/3P/c/9z/3P/c/9yI3P/c/9z/3P/c/9z/3P/c/9yI3P/c/9z/3P/c/9z/3P/c/9yI3P+B/4H/gf+B/4H/gf+B/4GIgQICBAD/3P/c/9z/3P/c/9z/3P/ciNz/3P/c/9z/3P/c/9z/3P/ciNz/3P/c/9z/3P/c/9z/3P/ciNz/gf+B/4H/gf+B/4H/gf+BiIECAgQA/9z/3P/c/9z/3P/c/9z/3Ijc/9z/3P/c/9z/3P/c/9z/3Ijc/9z/3P/c/9z/3P/c/9z/3Ijc/4H/gf+B/4H/gf+B/4H/gYiBAgIEAP/c/9z/3P/c/9z/3P/c/9yI3P/c/9z/3P/c/9z/3P/c/9yI3P/c/9z/3P/c/9z/3P/c/9yI3P+B/4H/gf+B/4H/gf+B/4GIgQICBAD/3P/c/9z/3P/c/9z/3P/ciNz/3P/c/9z/3P/c/9z/3P/ciNz/3P/c/9z/3P/c/9z/3P/ciNz/gf+B/4H/gf+B/4H/gf+BiIECAgQA/9z/3P/c/9z/3P/c/9z/3Ijc/9z/3P/c/9z/3P/c/9z/3Ijc/9z/3P/c/9z/3P/c/9z/3Ijc/4H/gf+B/4H/gf+B/4H/gYiBAgIEAP/c/9z/3P/c/9z/3P/c/9yI3P/c/9z/3P/c/9z/3P/c/9yI3P/c/9z/3P/c/9z/3P/c/9yI3P+B/4H/gf+B/4H/gf+B/4GIgQICBAD/3P/c/9z/3P/c/9z/3P/ciNz/3P/c/9z/3P/c/9z/3P/ciNz/3P/c/9z/3P/c/9z/3P/ciNz/gf+B/4H/gf+B/4H/gf+BiIECAgQA/9z/3P/c/9z/3P/c/9z/3Ijc/9z/3P/c/9z/3P/c/9z/3Ijc/9z/3P/c/9z/3P/c/9z/3Ijc/4H/gf+B/4H/gf+B/4H/gYiBAgIEAP/c/9z/3P/c/9z/3P/c/9yI3P/c/9z/3P/c/9z/3P/c/9yI3P/c/9z/3P/c/9z/3P/c/9yI3P+B/4H/gf+B/4H/gf+B/4GIgQICBAD/3P/c/9z/3P/c/9z/3P/ciNz/3P/c/9z/3P/c/9z/3P/ciNz/3P/c/9z/3P/c/9z/3P/ciNz/gf+B/4H/gf+B/4H/gf+BiIECAgQA/9z/3P/c/9z/3P/c/9z/3Ijc/9z/3P/c/9z/3P/c/9z/3Ijc/9z/3P/c/9z/3P/c/9z/3Ijc/4H/gf+B/4H/gf+B/4H/gYiBAgIEAP/c/9z/3P/c/9z/3P/c/9yI3P/c/9z/3P/c/9z/3P/c/9yI3P/c/9z/3P/c/9z/3P/c/9yI3P+B/4H/gf+B/4H/gf+B/4GIgQICBAD/3P/c/9z/3P/c/9z/3P/ciNz/3P/c/9z/3P/c/9z/3P/ciNz/3P/c/9z/3P/c/9z/3P/ciNz/gf+B/4H/gf+B/4H/gf+BiIECAgQA/9z/3P/c/9z/3P/c/9z/3Ijc/9z/3P/c/9z/3P/c/9z/3Ijc/9z/3P/c/9z/3P/c/9z/3Ijc/4H/gf+B/4H/gf+B/4H/gYiBAgIEAP/c/9z/3P/c/9z/3P/c/9yI3P/c/9z/3P/c/9z/3P/c/9yI3P/c/9z/3P/c/9z/3P/c/9yI3P+B/4H/gf+B/4H/gf+B/4GIgQICBAD/3P/c/9z/3P/c/9z/3P/ciNz/3P/c/9z/3P/c/9z/3P/ciNz/3P/c/9z/3P/c/9z/3P/ciNz/gf+B/4H/gf+B/4H/gf+BiIECAgQA/9z/3P/c/9z/3P/c/9z/3Ijc/9z/3P/c/9z/3P/c/9z/3Ijc/9z/3P/c/9z/3P/c/9z/3Ijc/4H/gf+B/4H/gf+B/4H/gYiBAgIEAP/c/9z/3P/c/9z/3P/c/9yI3P/c/9z/3P/c/9z/3P/c/9yI3P/c/9z/3P/c/9z/3P/c/9yI3P+B/4H/gf+B/4H/gf+B/4GIgQICBAD/3P/c/9z/3P/c/9z/3P/ciNz/3P/c/9z/3P/c/9z/3P/ciNz/3P/c/9z/3P/c/9z/3P/ciNz/gf+B/4H/gf+B/4H/gf+BiIECAgQA/9z/3P/c/9z/3P/c/9z/3Ijc/9z/3P/c/9z/3P/c/9z/3Ijc/9z/3P/c/9z/3P/c/9z/3Ijc/4H/gf+B/4H/gf+B/4H/gYiBAgIEAP/c/9z/3P/c/9z/3P/c/9yI3P/c/9z/3P/c/9z/3P/c/9yI3P/c/9z/3P/c/9z/3P/c/9yI3P+B/4H/gf+B/4H/gf+B/4GIgQICBAD/3P/c/9z/3P/c/9z/3P/ciNz/3P/c/9z/3P/c/9z/3P/ciNz/3P/c/9z/3P/c/9z/3P/ciNz/gf+B/4H/gf+B/4H/gf+BiIECAgQA/9z/3P/c/9z/3P/c/9z/3Ijc/9z/3P/c/9z/3P/c/9z/3Ijc/9z/3P/c/9z/3P/c/9z/3Ijc/4H/gf+B/4H/gf+B/4H/gYiBAgIEAP/c/9z/3P/c/9z/3P/c/9yI3P/c/9z/3P/c/9z/3P/c/9yI3P/c/9z/3P/c/9z/3P/c/9yI3P+B/4H/gf+B/4H/gf+B/4GIgQICBAD/3P/c/9z/3P/c/9z/3P/ciNz/3P/c/9z/3P/c/9z/3P/ciNz/3P/c/9z/3P/c/9z/3P/ciNz/gf+B/4H/gf+B/4H/gf+BiIECAgQA/9z/3P/c/9z/3P/c/9z/3Ijc/9z/3P/c/9z/3P/c/9z/3Ijc/9z/3P/c/9z/3P/c/9z/3Ijc/4H/gf+B/4H/gf+B/4H/gYiBAgIEAP/c/9z/3P/c/9z/3P/c/9yI3P/c/9z/3P/c/9z/3P/c/9yI3P/c/9z/3P/c/9z/3P/c/9yI3P+B/4H/gf+B/4H/gf+B/4GIgQICBAD/3P/c/9z/3P/c/9z/3P/ciNz/3P/c/9z/3P/c/9z/3P/ciNz/3P/c/9z/3P/c/9z/3P/ciNz/gf+B/4H/gf+B/4H/gf+BiIECAgQA/9z/3P/c/9z/3P/c/9z/3Ijc/9z/3P/c/9z/3P/c/9z/3Ijc/9z/3P/c/9z/3P/c/9z/3Ijc/4H/gf+B/4H/gf+B/4H/gYiBAgIEAP/c/9z/3P/c/9z/3P/c/9yI3P/c/9z/3P/c/9z/3P/c/9yI3P/c/9z/3P/c/9z/3P/c/9yI3P+B/4H/gf+B/4H/gf+B/4GIgQICBAD/3P/c/9z/3P/c/9z/3P/ciNz/3P/c/9z/3P/c/9z/3P/ciNz/3P/c/9z/3P/c/9z/3P/ciNz/gf+B/4H/gf+B/4H/gf+BiIECAgQA/9z/3P/c/9z/3P/c/9z/3Ijc/9z/3P/c/9z/3P/c/9z/3Ijc/9z/3P/c/9z/3P/c/9z/3Ijc/4H/gf+B/4H/gf+B/4H/gYiBAgIEAP/c/9z/3P/c/9z/3P/c/9yI3P/c/9z/3P/c/9z/3P/c/9yI3P/c/9z/3P/c/9z/3P/c/9yI3P+B/4H/gf+B/4H/gf+B/4GIgQICBAD/3P/c/9z/3P/c/9z/3P/ciNz/3P/c/9z/3P/c/9z/3P/ciNz/3P/c/9z/3P/c/9z/3P/ciNz/gf+B/4H/gf+B/4H/gf+BiIECAgQA/9z/3P/c/9z/3P/c/9z/3Ijc/9z/3P/c/9z/3P/c/9z/3Ijc/9z/3P/c/9z/3P/c/9z/3Ijc/4H/gf+B/4H/gf+B/4H/gYiBAgIEAP/c/9z/3P/c/9z/3P/c/9yI3P/c/9z/3P/c/9z/3P/c/9yI3P/c/9z/3P/c/9z/3P/c/9yI3P+B/4H/gf+B/4H/gf+B/4GIgQICBAD/3P/c/9z/3P/c/9z/3P/ciNz/3P/c/9z/3P/c/9z/3P/ciNz/3P/c/9z/3P/c/9z/3P/ciNz/gf+B/4H/gf+B/4H/gf+BiIECAgQA/9z/3P/c/9z/3P/c/9z/3Ijc/9z/3P/c/9z/3P/c/9z/3Ijc/9z/3P/c/9z/3P/c/9z/3Ijc/4H/gf+B/4H/gf+B/4H/gYiBAgIEAAHvhP0QhYWIjZSZnqKqrrO4vsXP2P/c/9z/3M3cF9fRysO9uLOxqqiinpuVk42KhYT9/f30hO8B6orgAeqE7xf0/f39g4WJjZOUm56ip6qwsri7wsnP1f/c0Nwa2dXOysa/u7i1sbCqqqSinpuZlJSNjYiFhYCE/YfvAeGK4AHnhu8Z8v39/YKFhYyNkJSZm6Gjqquxtbq/xsvR1v/cwdwB74T9EIWFiI2UmZ6iqq6zuL7Fz9j/3P/c/9zN3BfX0crDvbizsaqoop6blZONioWE/f399ITvAeqK4AHqhO8X9P39/YOFiY2TlJueoqeqsLK4u8LJz9X/3NDcGtnVzsrGv7u4tbGwqqqkop6bmZSUjY2IhYWAhP2H7wHhiuAB54bvGfL9/f2ChYWMjZCUmZuho6qrsbW6v8bL0db/3MHcAe+E/RCFhYiNlJmeoqqus7i+xc/Y/9z/3P/czdwX19HKw724s7GqqKKem5WTjYqFhP39/fSE7wHqiuAB6oTvF/T9/f2DhYmNk5SbnqKnqrCyuLvCyc/V/9zQ3BrZ1c7Kxr+7uLWxsKqqpKKem5mUlI2NiIWFgIT9h+8B4YrgAeeG7xny/f39goWFjI2QlJmboaOqq7G1ur/Gy9HW/9zB3IWA/4H/gf+B8IGcgP+B/YGhgP+B1oECAgQAld8L6PmFj5egqbTAzNn/3MLcFdXOx8G6t7GsqaKfm5WSjIiFgfz8+ITuAeWJ34TuFPT8/P6FiIySlZufoqmssbe9xc7W/9y43AzXzMK3raSakoqB8+PD3wzu/4ePl5+ptL3I0dv/3LPcENfPyMC4samim5WPiYP67uHR3w7s+IOLkpmhqK+3wcrT2//cstyV3wvo+YWPl6CptMDM2f/cwtwV1c7Hwbq3saypop+blZKMiIWB/Pz4hO4B5YnfhO4U9Pz8/oWIjJKVm5+iqayxt73Fztb/3LjcDNfMwretpJqSioHz48PfDO7/h4+Xn6m0vcjR2//cs9wQ18/IwLixqaKblY+Jg/ru4dHfDuz4g4uSmaGor7fBytPb/9yy3JXfC+j5hY+XoKm0wMzZ/9zC3BXVzsfBurexrKmin5uVkoyIhYH8/PiE7gHlid+E7hT0/Pz+hYiMkpWbn6KprLG3vcXO1v/cuNwM18zCt62kmpKKgfPjw98M7v+Hj5efqbS9yNHb/9yz3BDXz8jAuLGpopuVj4mD+u7h0d8O7PiDi5KZoaivt8HK09v/3LLcl4D/gd2BmYD/gdKBx4D/gcqB1oD/gb6BAgIEAKDeCPGEkZ6qt8bW/9yt3Aza0Me8s6mfl4+H/uy83gzh8oCIkJijrbnDz9r/3KTcCNXGtqeaj4Ls2t4J4fWIk5+su8rZ/9yg3AvWyr+0qJ+WjoP25e7eC+DxgYqUn6u1wcvX/9yo3KDeCPGEkZ6qt8bW/9yt3Aza0Me8s6mfl4+H/uy83gzh8oCIkJijrbnDz9r/3KTcCNXGtqeaj4Ls2t4J4fWIk5+su8rZ/9yg3AvWyr+0qJ+WjoP25e7eC+DxgYqUn6u1wcvX/9yo3KDeCPGEkZ6qt8bW/9yt3Aza0Me8s6mfl4+H/uy83gzh8oCIkJijrbnDz9r/3KTcCNXGtqeaj4Ls2t4J4fWIk5+su8rZ/9yg3AvWyr+0qJ+WjoP25e7eC+DxgYqUn6u1wcvX/9yo3KGA/4G+gcCA/4G1gd2A/4GwgfKA/4GxgQICBACo3Qfwh5ent8bW/9yd3Arbz8K0ppuPhPHe0t0I3/SHlKSzw9P/3JbcB9jGtKSVhu7q3Qje9YmYp7bH2f/ckNwJ0cK1q5+UiPzk/92F3QnngI2ap7TBzdr/3J/cqN0H8IeXp7fG1v/cndwK28/CtKabj4Tx3tLdCN/0h5Sks8PT/9yW3AfYxrSklYbu6t0I3vWJmKe2x9n/3JDcCdHCtauflIj85P/dhd0J54CNmqe0wc3a/9yf3KjdB/CHl6e3xtb/3J3cCtvPwrSmm4+E8d7S3Qjf9IeUpLPD0//cltwH2Ma0pJWG7urdCN71iZintsfZ/9yQ3AnRwrWrn5SI/OT/3YXdCeeAjZqntMHN2v/cn9ypgP+Bq4HWgP+BooHtgP+BnYH/gIiA/4GngQICBACv3Ab3jqG0x9n/3JDcCNPCs6WXivng49wH6IOTo7fK2v/citwGzrqnkv3e99wH34CTprnN2//cCtzc1se5qpyO/uP/3JbcCN/4i5qot8bW/9yY3K/cBveOobTH2f/ckNwI08KzpZeK+eDj3Afog5Ojt8ra/9yK3AbOuqeS/d733AffgJOmuc3b/9wK3NzWx7mqnI7+4//cltwI3/iLmqi3xtb/3Jjcr9wG946htMfZ/9yQ3AjTwrOll4r54OPcB+iDk6O3ytr/3IrcBs66p5L93vfcB9+Ak6a5zdv/3Arc3NbHuaqcjv7j/9yW3Ajf+IuaqLfG1v/cmNywgP+Bm4HmgP+BlIH6gP+BjoH/gJqA/4GegQICBAC02gbd/JGmu9H/3ITcB9fHt6aVhOjx2gbhgpWpvdP/3AXSuqOL6P/ahNoF5Yigt8/23AfbzbyqmYfs/9qm2gfviJmqu83b/9yR3LTaBt38kaa70f/chNwH18e3ppWE6PHaBuGClam90//cBdK6o4vo/9qE2gXliKC3z/bcB9vNvKqZh+z/2qbaB++Imaq7zdv/3JHctNoG3fyRprvR/9yE3AfXx7emlYTo8doG4YKVqb3T/9wF0rqji+j/2oTaBeWIoLfP9twH2828qpmH7P/aptoH74iZqrvN2//ckdy2gP+BjoHzgP+BiYH/gIaA/4EBgf+AqID/gZeBAgIEALrZBe6MorjO+NwG28u2oo71/tkF9ZKpwNb13AXbx6uT9f/ZjtkF7Y6lwNjs3AbOuaWSgeH/2bLZBuKDl6q90f/cjNy62QXujKK4zvjcBtvLtqKO9f7ZBfWSqcDW9dwF28erk/X/2Y7ZBe2OpcDY7NwGzrmlkoHh/9my2Qbig5eqvdH/3IzcutkF7oyiuM743Abby7aijvX+2QX1kqnA1vXcBdvHq5P1/9mO2QXtjqXA2OzcBs65pZKB4f/ZstkG4oOXqr3R/9yM3LuA/4GCgf+AAYD9gf+AkID1gf+AtID/gZGBAgIEAL/YBeuNpbzU7twG1MCsl4Ph/9iI2AXa/5myy+3cBdrEqY3m/9iW2AXehqK91uLcBtnFsJyH5v/YvtgG54earsHV/9yG3L/YBeuNpbzU7twG1MCsl4Ph/9iI2AXa/5myy+3cBdrEqY3m/9iW2AXehqK91uLcBtnFsJyH5v/YvtgG54earsHV/9yG3L/YBeuNpbzU7twG1MCsl4Ph/9iI2AXa/5myy+3cBdrEqY3m/9iW2AXehqK91uLcBtnFsJyH5v/YvtgG54earsHV/9yG3MCA94H/gIuA9IH/gJiA64H/gMCA/4GLgQICBADE1wX5lKzF2uPcBtrJtaCM8P/Xk9cF6o6pw9rl3ATJqo3i/9ee1wXahaPC2tncBtrGr5eA2//XydcF9pGnvtX/3AHcxNcF+ZSsxdrj3AbaybWgjPD/15PXBeqOqcPa5dwEyaqN4v/XntcF2oWjwtrZ3Abaxq+XgNv/18nXBfaRp77V/9wB3MTXBfmUrMXa49wG2sm1oIzw/9eT1wXqjqnD2uXcBMmqjeL/157XBduFo8La2dwG2savl4Db/9fJ1wX2kae+1f/cAdzFgOyB/4CVgOyB/4CggOKB/4DLgP+BhYECAgQAyNYF4Iehu9Ta3AbbybKbhN7/1pzWBd+Ho73W3dwEzrCS6v/WptYE4Y2sytLcBcyzm4Td/9bT1gX0kKe91PvcyNYF4Iehu9Ta3AbbybKbhN7/1pzWBd+Ho73W3dwEzrCS6v/WptYE4Y2sytLcBcyzm4Td/9bT1gX0kKe91PvcyNYF4Iehu9Ta3AbbybKbhN7/1pzWBd+Ho73W3dwEzrCS6v/WptYE4Y2sytLcBcyzm4Td/9bT1gX0kKe91PvcyYDjgf+AnoDkgf+AqIDZgf+A1YD/gQICBADM1QXW+ZawytLcBc21nobg/9Wl1QXYgZy30tXcBNO2mPT/1a7VBO6VtNLJ3AXVvqWM5v/V3dUF8pKqw9n23MzVBdb5lrDK0twFzbWehuD/1aXVBdiBnLfS1dwE07aY9P/VrtUE7pW00sncBdW+pYzm/9Xd1QXykqrD2fbczNUF1vmWsMrS3AXNtZ6G4P/VpdUF2IGct9LV3ATTtpj0/9Wu1QTulbTSydwF1b6ljOb/1d3VBfKSqsPZ9tzOgNmB/4CngNyB/4CwgNCB/4DfgPqBAgIEANHTBeSLpb7WyNwFz7igieP/06/TBfaUrcbazNwF0bSZ+tT/07TTBdT9nLrXwNwG28ivlfrV/9Pl0wXag5y1z/Lc0dMF5IulvtbI3AXPuKCJ4//Tr9MF9pStxtrM3AXRtJn61P/TtNMF1P2cutfA3AbbyK+V+tX/0+XTBdqDnLXP8tzR0wXki6W+1sjcBc+4oInj/9Ov0wX2lK3G2szcBdG0mfrU/9O00wXU/Zy618DcBtvIr5X61f/T5dMF2oOctc/y3NKA0IH/gLGA04H/gLiAx4H/gOiA9oECAgQA1dIF1f2Xscq/3AXSu6OL6f/SuNIG24SdtMnawtwF2cSslPT/0r3SBdaDn7rUuNwFzLWeht7/0u/SBeiNpsDY7dzV0gXV/Zexyr/cBdK7o4vp/9K40gbbhJ20ydrC3AXZxKyU9P/SvdIF1oOfutS43AXMtZ6G3v/S79IF6I2mwNjt3NXSBdX9l7HKv9wF0ruji+n/0rjSBtuEnbTJ2sLcBdnErJT0/9K90gXWg5+61LjcBcy1nobe/9Lv0gXojabA2O3c14DGgf+AuoDLgf+Av4DAgf+A8YDxgQICBADa0QXgiKC3z7XcBc+5o43r/9HC0QbYgJWrvtC43AbXxK+Zgdb/0cXRBtL4l7DH2q3cBtnGs56H4P/R+NEF1YGbt9Hp3NrRBeCIoLfPtdwFz7mjjev/0cLRBtiAlau+0LjcBtfEr5mB1v/RxdEG0viXsMfardwG2caznofg/9H40QXVgZu30enc2tEF4Iigt8+13AXPuaON6//RwtEG2ICVq77QuNwG18SvmYHW/9HF0QbS+Jewx9qt3AbZxrOeh+D/0fjRBdWBm7fR6dzbgL2B/4DEgMKB/4DIgLaB/4D6gO2BAgIEAN/QBuWKn7TI2qncBtfFsZ2H4//QzdAI3f+Pnq66x9Kp3AjWyLipmIfs0f/Qz9AH1/2Tp7jK2aHcB9LCsqCO8tL/0P/QCNDQ0O+SrMfb5Nzf0Ablip+0yNqp3AbXxbGdh+P/0M3QCN3/j56uusfSqdwI1si4qZiH7NH/0M/QB9f9k6e4ytmh3AfSwrKgjvLS/9D/0AjQ0NDvkqzH2+Tc39AG5YqftMjaqdwG18WxnYfj/9DN0Ajc/4+errrH0qncCNbIuKmYh+zR/9DP0AfX/ZOnuMrZodwH0sKyoI7y0v/Q/9AI0NDQ75Ksx9vk3OCAs4H/gNCAtYH/gNOAq4H/gP+AhoDogQICBAAIzs/Oz8/Ozs6GzwvOz8/Oz8/Pzs/OzobPBs7Pzs/OzobPEM7Pzs7Pzs/Oz8/Ozs/Pz86EzwXOz8/PzobPhM4Iz87Pzs/Ozs6JzwzOzs/PztT7kqS0xNSc3BTazL2unYntz8/Oz8/Oz8/Pzs7PzoTPC87Pz87Pzs7Pzs/Ohs8BzoTPBc7Pz8/OhM8Dzs/Oh88BzojPAc6FzwTOz87OhM8Ezs/PzorPB87Pz8/Ozs6IzwXOz87PzoTPhM6EzwbOz87Pz86Ezw7Oz87Pz8/Oz87Pzs/OzofPAc6EzxHOz87Oz87Ozs/Pz87Pz87PzoXPB87Ozs/Pzs6NzwfOzs/Oz8/PhM4Uz8/U6YGMlpyjqrG3vsXMzNHU1NmG3BLZ1NTQzMrEvLWtpZ6WjoTz2c6FzwHOhM8Fzs/Pz86FzyTOzs/Oz8/Oz87Ozs/Oz8/Pzs/Pzs/Oz8/Pzs/Pzs/Pz87Pzs6IzwXOzs/OzobPCM7Pz8/Ozs/Ohc8Ezs/PzpTPBM7Pz86EzwbOz87Pzs+EzoXPCc7Pz87Pz8/OzoTPHM7Pz8/Ozs/Oz8/Ozs/Pzs/Pzs/Pz87Oz8/Ozs6EzwXOzs7PzoTPhM4Dz8/Ohc8BzoXPG87Pz87Pz8/Oz8/PztDmgo6Yoaqzu8XMztTU24XcDtTUz8zFvrSropmRhvLXhM8Gzs7Pzs/OiM8BzoTPC87Oz8/Pzs7Pzs7Oh88Jzs7Pz87Pzs/Ohs8Nzs/Pzs/Pzs7Oz8/PzoXPEs7Pzs/Pzs/Pzs7Oz8/Ozs/OzobPB87Ozs/Pz86EzwTOz87PhM4az87Pzs/Oz8/Ozs/Pz87Pzs/Oz8/Oz87Pz86GzxDOz8/Oz87Oz87Oz87Pzs/OhM8Gzs/Oz8/OhM8Lzs/Pz87Pz87Pzs6EzybOz8/Ozs7Pz8/Ozs/Ozs7Pz87Pz87Ozs/Pzs/Oz87Oz87Pzs7PzoTPAc6Ez4XOhc8BzoTPAc6FzwvOz8/Oz8/ahqG71eDcAc+HzgXPzs/PzoTPFM7Oz87Oz8/Oz8/Pzs/Ozs7Pz8/Ohs8Hzs7Pz8/OzobPBM7Pz86EzxHOz87Pz87Pzs7Pz87Pz87PzoXPBc7Pzs7PhM4Mz8/Pzs/U+5KktMTUnNwQ2sy9rp2J7c/Ozs/Oz8/PzoXPB87Pz8/Ozs6Fzx7Oz87Oz87Pzs7Oz87Pz87Pzs/Pz87Pz8/Ozs/Ozs6GzxDOzs/Pz87Oz87Pzs/Pzs/OhM8BzoTPC87Pzs/Oz8/Oz87Ohs+FzgPPzs+FzgnPz87Pz8/Ozs+EzhfPzs/Oz87Pzs/Pzs/Ozs/Oz87Ozs/PzoTPDs7Pzs7Pzs7Oz87Pz8/OhM8Mzs/Oz8/Pzs7Oz8/OhM8Gzs7Pz87PhM4Ez8/PzofPGM7Pz87Pz9TpgYyWnKOqsbe+xczM0dTU2YbcF9nU1NDMysS8ta2lnpaOhPPZzs/Ozs7Phc4Sz8/Ozs/Oz87Ozs/Oz8/Pzs7Phs4Mz87Pzs/Pz87Pzs7Phc4Lz87Pzs7Oz8/Oz8+FzoLPh84Kz8/Pzs/Oz87OzoXPHs7Pz87Pzs/Ozs7Pz87Pzs/Ozs7Pzs/Pz87Ozs/PzoTPgs6EzxrOz8/Pzs7Oz87Ozs/Pzs/Pz87Oz87Oz8/OzoTPEc7Oz87Ozs/Pz87Pz8/Oz87PhM6Ezw3Ozs/Ozs/Pzs7Pz87Phc4ez87Oz87Oz8/Oz87Oz87P0OaCjpihqrO7xczO1NTbhdwb1NTPzMW+tKuimZGG8tfPzs7Pz8/Ozs/Ozs/PhM41z8/Oz87Pzs7Pzs/Pzs/Pzs/Pzs/Oz87Pz87Pz87Pz87Pzs/Pzs/Oz8/Ozs/Ozs7Pzs/Pzs+EzoLPhc6Cz4XOBs/Pzs7Pz4TOCM/Ozs/Ozs/Ohc+EzoPPhM4Hz8/Oz87OzoXPBc7Ozs/PhM4dz87Pz8/Oz8/Pzs/Oz87Ozs/Oz87Ozs/Oz87Pzs+FzgfPzs/Oz8/OhM8hzs7Pzs7Oz8/Oz87Oz87Oz87Ozs/Ozs/Ozs/Ozs7Pz87OiM+CzobPB87Pzs/Pz86EzxnOz87Ozs/Pz87Ozs/Pzs/Ozs/Oz9qGobvV4NwEz8/PzojPA87PzofPAc6IzwHOhc8Ezs/OzoTPBM7Pz86KzwHOhM+CzojPBc7Pzs/Ohc+DzoTPEM7Pzs/Pzs/Pz9T7kqS0xNSc3AnazL2unYntz86GzwbOzs/Pzs6Nz4LOhc+EzgrPz87Pzs7Pz87Ohc8Rzs/Pz87Oz87Pz87Pz8/Oz86EzwHOhM+DzoXPAc6EzwXOz8/PzoXPFs7Oz87Pz87Pzs7Oz87Pz8/Oz8/Oz86GzwjOz8/Pzs/PzonPBM7Pzs6GzwHOhs8BzoXPBM7Pz86SzwHOk88Yzs/Pz87P1OmBjJaco6qxt77FzMzR1NTZhtwc2dTU0MzKxLy1raWelo6E89nOz8/Oz87Pz87PzoXPgs6GzxPOz8/Pzs/Pz87Pz8/Ozs/Ozs/OhM8Hzs7Pz87PzofPhM4Hz8/Oz8/PzojPCc7Oz8/Oz87PzoXPBc7Pz8/OhM+CzoTPgs6FzwbOz87Pzs6FzwXOz87PzofPgs6Hz4POhc8Gzs7Pz87OhM8Rzs/Oz87Pzs/Oz87Oz87Pz86EzxXOz87Pz8/Oz8/Pzs/Oz8/Oz8/Pzs6Mzw/Q5oKOmKGqs7vFzM7U1NuF3BPU1M/Mxb60q6KZkYby18/Pz87OlM8Wzs7Pz87Oz8/Pzs7Pzs/Pzs/Oz8/PzoXPAc6Fzw3Oz8/Ozs7Pzs/Oz8/Ojc8Dzs/Oh8+CzoXPAc6FzwHOh88Izs/Pzs7Pz86EzwTOz87Oh88BzoTPB87Pzs/Pz86EzwHOjs8Bzo/PAc6EzwHOjs8Ezs/OzoTPA87Pz4TOBs/Oz87PzoXPB87Ozs/Pz86IzwLOz4XOCc/Oz8/Ozs7PzoXPBs7ahqG71eDc5oCngf+A3oClgf+A4YCegf+A/4CRgOSBAgIEAOvNHd7/i5ehq7fByc3U1tzc3NbU0MzKwrmvpZuRhevR/83/zf/N/83/zf/Nnc0Fz/aVsMvc3OvNHd7/i5ehq7fByc3U1tzc3NbU0MzKwrmvpZuRhevR/83/zf/N/83/zf/Nnc0Fz/aVsMvc3OvNHd7/i5ehq7fByc3U1tzc3NbU0MzKwrmvpZuRhevR/83/zf/N/83/zf/Nnc0Fz/aVsMvc3O2AmYH/gP+A/4D/gP+A/4ChgN+BAgIEAP/M/8z/zP/M/8z/zP/Mq8wF34miu9TX3P/M/8z/zP/M/8z/zP/Mq8wF34miu9TX3P/M/8z/zP/M/8z/zP/Mq8wF34miu9TX3P+A/4D/gP+A/4D/gP+ArIDbgQICBAD/y//L/8v/y//L/8v/y7DLBe2QqcHY0tz/y//L/8v/y//L/8v/y7DLBe2QqcHY0tz/y//L/8v/y//L/8v/y7DLBe2QqcHY0tz/gP+A/4D/gP+A/4D/gLGA1oECAgQA/8n/yf/J/8n/yf/J/8m0yQbO+ZOpv9XN3P/J/8n/yf/J/8n/yf/JtMkGzvmTqb/Vzdz/yf/J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AgQA/5n/mf+Z/5mlmQKRxIe+AoCG/4qpigL2pYe+Afa7mQHwhb4Bsf+KtYoBxYW+Acelmf+Z/5n/mf+ZpZkCkcSHvgKAhv+KqYoC9qWHvgH2u5kB8IW+AbH/irWKAcWFvgHHpZn/mf+Z/5n/maWZApHEh74CgIb/iqmKAvalh74B9ruZAfCFvgGx/4q1igHFhb4Bx6WZ/4D/gP+A/4CmgIh/AYH/gqqCAoGAiH+7gIZ/AYH/grWCAYGGf6WAAgIEAP+Y/5j/mP+YpZgB0oa8AsCp/4qsigKCyoe8Af26mAHdhbwB0v+KtYoCh/2FvAGJpJj/mP+Y/5j/mKWYAdKGvALAqf+KrIoCgsqHvAH9upgB3YW8AdL/irWKAof9hbwBiaSY/5j/mP+Y/5ilmAHShrwCwKn/iqyKAoLKh7wB/bqYAd2FvAHS/4q1igKH/YW8AYmkmP+A/4D/gP+ApYCIfwGB/4KtggGAiH+6gIZ/AYH/graChn+lgAICBAD/l/+X/5f/l6SXAeKGuwLGvP+KrooChtGHuwGCuZcB0YW7Aej/iraKAYmFuwHtpJf/l/+X/5f/l6SXAeKGuwLGvP+KrooChtGHuwGCuZcB0YW7Aej/iraKAYmFuwHtpJf/l/+X/5f/l6SXAeKGuwLGvP+KrooChtGHuwGCuZcB0YW7Aej/iraKAYmFuwHtpJf/gP+A/4D/gKSAiH8Bgf+Cr4IBgId/uoCGfwGB/4K2ggGBhn+kgAICBAD/lf+V/5X/laOVAfeGuQLExf+KsIoChcWGuQK/jriVAcSFuQH9/4q2igHOhbkB0aSV/5X/lf+V/5WjlQH3hrkCxMX/irCKAoXFhrkCv464lQHEhbkB/f+KtooBzoW5AdGklf+V/5X/lf+Vo5UB94a5AsTF/4qwigKFxYa5Ar+OuJUBxIW5Af3/iraKAc6FuQHRpJX/gP+A/4D/gKOAiH8Bgf+CsYIBgId/uYCGfwGB/4K2ggGBhn+kgAICBAD/lP+U/5T/lKKUAYCHuAG2/4qyigKDrYa4AeK4lAG7hbgBhv+KtooChtWFuAGSo5T/lP+U/5T/lKKUAYCHuAG2/4qyigKDrYa4AeK4lAG7hbgBhv+KtooChtWFuAGSo5T/lP+U/5T/lKKUAYCHuAG2/4qyigKDrYa4AeK4lAG7hbgBhv+KtooChtWFuAGSo5T/gP+A/4D/gKOAh38Bgf+Cs4IBgId/uICGf/+CuIKGf6SAAgIEAP+T/5P/k/+ToZMCjL2GtgGa/4q0igL7hoa2Afy3k4a2/4q4igHLhbYBhaOT/5P/k/+T/5OhkwKMvYa2AZr/irSKAvuGhrYB/LeThrb/iriKAcuFtgGFo5P/k/+T/5P/k6GTAoy9hrYBmv+KtIoC+4aGtgH8t5OGtv+KuIoBy4W2AYWjk/+A/4D/gP+AooCHfwGB/4K0ggKBgId/t4CGf/+CuIIBgIV/pIACAgQA/5L/kv+S/5KhkgHphrUB6v+KtooC3cOFtQK4ibWSAZCFtQHL/4q4igGchbUB7qOS/5L/kv+S/5KhkgHphrUB6v+KtooC3cOFtQK4ibWSAZCFtQHL/4q4igGchbUB7qOS/5L/kv+S/5KhkgHphrUB6v+KtooC3cOFtQK4ibWSAZCFtQHL/4q4igGchbUB7qOS/4D/gP+A/4ChgId/AYD/graCAYGHf7eAhn//griCAYGGf6OAAgIEAP+R/5H/kf+RoJEBhYazAoyB/4q3igGjhrMB3rWRAY2FswHq/4q4igHOhbMB1aOR/5H/kf+R/5GgkQGFhrMCjIH/ireKAaOGswHetZEBjYWzAer/iriKAc6FswHVo5H/kf+R/5H/kaCRAYWGswKMgf+Kt4oBo4azAd61kQGNhbMB6v+KuIoBzoWzAdWjkf+A/4D/gP+AoYCGfwGA/4K4ggGBh3+2gIZ//4K4ggGBhn+jgAICBAD/kP+Q/5D/kKCQAdeFsgK22/+KuIoCiLuGsgGCtJABj4ay/4q4igH3hbIBwKOQ/5D/kP+Q/5CgkAHXhbICttv/iriKAoi7hrIBgrSQAY+Gsv+KuIoB94WyAcCjkP+Q/5D/kP+QoJAB14WyArbb/4q4igKIu4ayAYK0kAGPhrL/iriKAfeFsgHAo5D/gP+A/4D/gKCAh38Bgf+CuYIBgIZ/toCGf/+CuIIBgYZ/o4ACAgQA/47/jv+O/46fjgGBhrEBhP+KuooC79GFsQHMtY6Gsf+KuYoB4IWxAYuijv+O/47/jv+On44BgYaxAYT/irqKAu/RhbEBzLWOhrH/irmKAeCFsQGLoo7/jv+O/47/jp+OAYGGsQGE/4q6igLv0YWxAcy1joax/4q5igHghbEBi6KO/4D/gP+A/4CggIZ/AYH/grqCAYGHf7WAhn//grmChn+jgAICBAD/jf+N/43/jZ+NAdaFrwLqgf+Ku4oBoIavAfy0jQG0ha8Bhf+KuIoBqoWvAYSijf+N/43/jf+Nn40B1oWvAuqB/4q7igGghq8B/LSNAbSFrwGF/4q4igGqha8BhKKN/43/jf+N/42fjQHWha8C6oH/iruKAaCGrwH8tI0BtIWvAYX/iriKAaqFrwGEoo3/gP+A/4D/gJ+Ah3//gryCAYGHf7SAhn//grmCAYCFf6OAAgIEAP+M/4z/jP+MnowBgIauAav/iryKAoaIha4BybSMAbqFrgH4/4q4igHgha4B+aKM/4z/jP+M/4yejAGAhq4Bq/+KvIoChoiFrgHJtIwBuoWuAfj/iriKAeCFrgH5ooz/jP+M/4z/jJ6MAYCGrgGr/4q8igKGiIWuAcm0jAG6ha4B+P+KuIoB4IWuAfmijP+A/4D/gP+An4CGfwGB/4K9ggGAhn+0gIZ/AYH/griCAYCGf6KAAgIEAP+L/4v/i/+LnosB24WsAvaF/4q9igG+hqwB+bOLAcCFrAHo/4q4igGIhawB66KL/4v/i/+L/4ueiwHbhawC9oX/ir2KAb6GrAH5s4sBwIWsAej/iriKAYiFrAHroov/i/+L/4v/i56LAduFrAL2hf+KvYoBvoasAfmziwHAhawB6P+KuIoBiIWsAeyii/+A/4D/gP+AnoCHf/+CvoIBgYd/s4CGfwGB/4K4ggGBhn+igAICBAD/iv+K/4r/ip6KAbqFqwGk/4q/igGihasBzbOKAceFqwHU/4q4igGbhasB4aKK/4r/iv+K/4qeigG6hasBpP+Kv4oBooWrAc2zigHHhasB1P+KuIoBm4WrAeGiiv+K/4r/iv+KnooBuoWrAaT/ir+KAaKFqwHNs4oBx4WrAdT/iriKAZuFqwHhoor/gP+A/4D/gJ6Ahn8Bgf+Cv4IBgIZ/s4CGfwGB/4K4ggGBhn+igAICBAD/if+J/4n/iZ2JCPWpqqqqqcOC/4q/igi+qqqpqqqq+7KJB9Gqqampqrv/iriKB6yqqaqpqdiiif+J/4n/if+JnYkI9aqpqaqqw4L/ir+KCL6qqqqpqan7sokH0amqqamqu/+KuIoHrKmqqqmp2KKJ/4n/if+J/4mdiQj1qqmqqqnDgv+Kv4oIvqqpqqqqqfuyiQfRqqmpqqm7/4q4igesqqmpqqrYoon/gP+A/4D/gJ2Ah3//gsCCAYGHf7KAhn8Bgf+CuIIBgYZ/ooACAgQA/4j/iP+I/4idiAHShagB7/+KwIoCiIuFqAHWsogB2oWoAaL/iriKAbSFqAHSooj/iP+I/4j/iJ2IAdKFqAHv/4rAigKIi4WoAdayiAHahagBov+KuIoBtIWoAdKiiP+I/4j/iP+InYgB0oWoAe//isCKAoiLhagB1rKIAduFqAGi/4q4igG0hagB0qKI/4D/gP+A/4CdgIZ/AYD/gsGCAYCGf7KAhn8Bgf+CuIIBgYZ/ooACAgQA/4b/hv+G/4adhgGzhacBz/+KwYoBrIWnAbWyhgHmhacBhP+KuIoBwoWnAcuihv+G/4b/hv+GnYYBs4WnAc//isGKAayFpwG1soYB5oWnAYT/iriKAcKFpwHLoob/hv+G/4b/hp2GAbOFpwHP/4rBigGshacBtbKGAeaFpwGE/4q4igHChacBy6KG/4D/gP+A/4CdgIZ/AYH/gsGCAYGGf7KAhn8Bgf+CuIIBgYZ/ooACAgQA/4X/hf+F/4WchQH6haUC6Ij/isGKAoG8haUB77GFAfKFpQHD/4q4igHChaUByaKF/4X/hf+F/4WchQH6haUC6Ij/isGKAoG8haUB77GFAfKFpQHD/4q4igHChaUByaKF/4X/hf+F/4WchQH6haUC6Ij/isGKAoG8haUB77GFAfKFpQHD/4q4igHChaUByaKF/4D/gP+A/4CcgId//4LDgod/sYCGfwGA/4K4ggGBhn+igAICBAD/hP+E/4T/hJyEAeGFpAH4/4rDigHthaQBzLGEAf6FpAGE/4q4igHBhaQBx6KE/4T/hP+E/4SchAHhhaQB+P+Kw4oB7YWkAcyxhAH+haQBhP+KuIoBwYWkAceihP+E/4T/hP+EnIQB4YWkAfj/isOKAe2FpAHMsYQB/oWkAYT/iriKAcGFpAHHooT/gP+A/4D/gJyAhn8BgP+Cw4IBgIZ/sYCGfwGA/4K4ggGBhn+igAICBAC+gwWArreExrgABcalt6+AkIMFiuymydj/3NPcBdXEpuqKj4MFgK63hMa4AAXGpbevgNuDAceFowG8/4rDigHPhaMBrbKDAaiFowGD/4q3igG+haMBx6KDvoMFgK63hMa4AAXGpbevgJCDBYrspsnY/9zT3AXVxKbqio+D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zADW1wGOhYUB+v+Kx4oB/YWFAY2z1wHNhYUB0f+Kr4oB9IWFAc2l17nXzACG1//c59yF18wA1tcBjoWFAfr/iseKAf2FhQGNs9cBzYWFAdH/iq+KAfSFhQHNpde5f8wAhn//geeBhX/MANx/AYH/gseCAYHAf/+Cr4KsfwICBAC51cwAhtX/3OfchdXMANbVAZyFhAHN/4rHigGDhYQBiLTVAZCFhAHs/4qtigH6hYQBjabVudXMAIbV/9zn3IXVzADW1QGchYQBzf+Kx4oBg4WEAYi01QGQhYQB7P+KrYoB+oWEAY2m1bnVzACG1f/c59yF1cwA1tUBnIWEAc3/iseKAYOFhAGItNUBkIWEAez/iq2KAfqFhAGNptW5f8wAhn//geeBhX/MANx/AYH/gsiCwH8Bgf+CrYIBgax/AgIEALnUzACG1P/c59yF1MwA1tQBqoWDAZ7/iseKhoMBh7TUAaOFgwGw/4qtigHDhYMBnabUudTMAIbU/9zn3IXUzADW1AGqhYMBnv+Kx4qGgwGHtNQBo4WDAbD/iq2KAcOFgwGdptS51MwAhtT/3OfchdTMANbUAaqFgwGe/4rHioaDAYe01AGjhYMBsP+KrYoBw4WDAZ2m1Ll/zACGf/+B54GFf8wA3H8Bgf+CyILAfwGB/4KtggGBrH8CAgQAudLMAIbS/9zn3IXSzADW0gG4hYIB3P+Kx4oBh4WCAYS00gG1hYIB6v+KrYoBiIWCAa+m0rnSzACG0v/c59yF0swA1tIBuIWCAdz/iseKAYeFggGEtNIBtYWCAer/iq2KAYiFggGvptK50swAhtL/3OfchdLMANbSAbiFggHc/4rHigGHhYIBhLTSAbWFggHq/4qtigGIhYIBr6bSuX/MAIZ//4HngYV/zADcfwGA/4LIgsB/AYD/gq2CAYGsfwICBAC50MwAhtD/3OfchdDMANbQAciFgQHl/4rIioaBtNABxoWBAeX/iq2KAZeFgQHBptC50MwAhtD/3OfchdDMANbQAciFgQHl/4rIioaBtNABxoWBAeX/iq2KAZeFgQHBptC50MwAhtD/3OfchdDMANbQAciFgQHl/4rIioaBtNABxoWBAeX/iq2KAZeFgQHBptC5f8wAhn//geeBhX/MAN1//4LIgsF//4KtggGArH8CAgQAuc/MAIbP/9zn3IXPzADXzwGI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hcAB0debAobGicACjcPpigOFqtuJwAHuwpu5m8wAhpv/3OfchZvMAOObAcqFwAHt/4qyigGrhcAB0debAobGicACjcPpigOFqtuJwAHuwpu5m8wAhpv/3OfchZvMAOObAcqFwAHt/4qyigGrhcAB0debAobGicACjcPpigOFqtuJwAHuwpu5f8wAhn//geeBhX/MAON/hn4Bgf+CsoIBgYZ+2H+KfgKAgeqCAoF/in7CfwICBAC5m8wAhpv/3OfchZvMAOObAemFwAGj/4qyigGThcAB9NibApPuisADh62E5IoD95azisABgMObuZvMAIab/9zn3IWbzADjmwHphcABo/+KsooBk4XAAfTYmwKT7orAA4ethOSKA/eWs4rAAYDDm7mbzACGm//c59yFm8wA45sB6YXAAaP/irKKAZOFwAH02JsCk+6KwAOHrYTkigP3lrOKwAGAw5u5f8wAhn//geeBhX/MAON/hn4Bgf+CsoIBgIZ+2X+LfgKAgeWCA4GBf4p+xH8CAgQAuZvMAIab/9zn3IWbzADjmwGFhcABsf+KsYoB3obAAY3amwKEworAA5eB4d+KBIW9v9CKwALHhsSbuZvMAIab/9zn3IWbzADjmwGFhcABsf+KsYoB3obAAY3amwKEworAA5eB4d+KBIW9v9CKwALHhsSbuZvMAIab/9zn3IWbzADjmwGFhcABsf+KsYoB3obAAY3amwKEworAA5eB4d+KBIW9v9CKwALHhsSbuX/MAIZ//4HngYV/zADkf4V+AYD/grGCAYGGftx/i34Df4GB4IICgYCMfsV/AgIEALmazACGmv/c59yFmswA45oBkoXAAueD/4qwigHqhcAB4NyaApHsjMAD447i2YoE9rHOh4zAAveTxZq5mswAhpr/3OfchZrMAOOaAZKFwALng/+KsIoB6oXAAeDcmgKR7IzAA+OO4tmKBPaxzoeMwAL3k8WauZrMAIaa/9zn3IWazADjmgGShcAC54P/irCKAeqFwAHg3JoCkeyMwAPjjuLZigT2sc6HjMAC95PFmrl/zACGf/+B54GFf8wA5H+Gfv+CsYIBgIZ+3X+NfgN/gYHZggSBgYB/jX7GfwICBAC5mswAhpr/3OfchZrMAOSaAdmFvwG9/4qvigL874W/AYjemgKL2I6/A+S3/NGKBO64/PKOvwLljseauZrM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xf/c59yFxcwA/8X/xf/F/8XCxbl/zACGf/+B54GFf8wA/3//f/9//3/CfwICBAC5x8wAhsf/3OfchcfMAP/H/8f/x//Hwse5x8wAhsf/3OfchcfMAP/H/8f/x//Hwse5x8wAhsf/3OfchcfMAP/H/8f/x//Hwse5f8wAhn//geeBhX/MAP9//3//f/9/wn8CAgQAucjMAIbI/9zn3IXIzAD/yP/I/8j/yMLIucjMAIbI/9zn3IXIzAD/yP/I/8j/yMLIucjMAIbI/9zn3IXIzAD/yP/I/8j/yMLIuX/MAIZ//4HngYV/zAD/f/9//3//f8J/AgIEALnKzACGyv/c59yFyswA/8r/yv/K/8rCyrnKzACGyv/c59yFyswA/8r/yv/K/8rCyrnKzACGyv/c59yFyswA/8r/yv/K/8rCyrl/zACGf/+B54GFf8wA/3//f/9//3/CfwICBAC5y8wAhsv/3OfchcvMAP/L/8v/y//Lwsu5y8wAhsv/3OfchcvMAP/L/8v/y//Lwsu5y8wAhsv/3OfchcvMAP/L/8v/y//Lwsu5f8wAhn//geeBhX/MAP9//3//f/9/wn8CAgQAuc3MAIbN/9zn3IXNzAD/zf/N/83/zcLNuc3MAIbN/9zn3IXNzAD/zf/N/83/zcLNuc3MAIbN/9zn3IXNzAD/zf/N/83/zcLNuX/MAIZ//4HngYV/zAD/f/9//3//f8J/AgIEALnPzACGz//c59yFz8wA/8//z//P/8/Cz7nPzACGz//c59yFz8wA/8//z//P/8/Cz7nPzACGz//c59yFz8wA/8//z//P/8/Cz7l/zACGf/+B54GFf8wA/3//f/9//3/CfwICBAC50MwAhtD/3OfchdDMAP/Q/9D/0P/QwtC50MwAhtD/3OfchdDMAP/Q/9D/0P/QwtC50MwAhtD/3OfchdDMAP/Q/9D/0P/QwtC5f8wAhn//geeBhX/MAP9//3//f/9/wn8CAgQAudLMAIbS/9zn3IXSzAD/0v/S/9L/0sLSudLMAIbS/9zn3IXSzAD/0v/S/9L/0sLSudLMAIbS/9zn3IXSzAD/0v/S/9L/0sLSuX/MAIZ//4HngYV/zAD/f/9//3//f8J/AgIEALnUzACG1P/c59yF1MwA/9T/1P/U/9TC1LnUzACG1P/c59yF1MwA/9T/1P/U/9TC1LnUzACG1P/c59yF1MwA/9T/1P/U/9TC1Ll/zACGf/+B54GFf8wA/3//f/9//3/CfwICBAC51cwAhtX/3OfchdXMAP/V/9X/1f/VwtW51cwAhtX/3OfchdXMAP/V/9X/1f/VwtW51cwAhtX/3OfchdXMAP/V/9X/1f/VwtW5f8wAhn//geeBhX/MAP9//3//f/9/wn8CAgQAudfMAIbX/9zn3IXXzAD/1//X/9f/18LXudfMAIbX/9zn3IXXzAD/1//X/9f/18LXudfMAIbX/9zn3IXXzAD/1//X/9f/18LXuX/MAIZ//4HngYV/zAD/f/9//3//f8J/AgIEALnZzACG2f/c59yF2cwA/9n/2f/Z/9nC2bnZzACG2f/c59yF2cwA/9n/2f/Z/9nC2bnZzACG2f/c59yF2cwA/9n/2f/Z/9nC2bl/zACGf/+B54GFf8wA/3//f/9//3/CfwICBAC528wAhtv/3OfchdvMAP/b/9v/2//bwtu528wAhtv/3OfchdvMAP/b/9v/2//bwtu528wAhtv/3OfchdvMAP/b/9v/2//bwtu5f8wAhn//geeBhX/MAP9//3//f/9/wn8CAgQAud3MAIbd/9zn3IXdzAD/3f/d/93/3cLdud3MAIbd/9zn3IXdzAD/3f/d/93/3cLdud3MAIbd/9zn3IXdzAD/3f/d/93/3cLduX/MAIZ//4HngYV/zAD/f/9//3//f8J/AgIEALnezACG3v/c59yF3swA/97/3v/e/97C3rnezACG3v/c59yF3swA/97/3v/e/97C3rnezACG3v/c59yF3swA/97/3v/e/97C3rl/zACGf/+B54GFf8wA/3//f/9//3/CfwICBAC54MwAhuD/3OfcheDMAP/g/+D/4P/gwuC54MwAhuD/3OfcheDMAP/g/+D/4P/gwuC54MwAhuD/3OfcheDMAP/g/+D/4P/gwuC5f8wAhn//geeBhX/MAP9//3//f/9/wn8CAgQAueLMAIbi/9zn3IXizAD/4v/i/+L/4sLiueLMAIbi/9zn3IXizAD/4v/i/+L/4sLiueLMAIbi/9zn3IXizAD/4v/i/+L/4sLiuX/MAIZ//4HngYV/zAD/f/9//3//f8J/AgIEALnkzACG5P/c59yF5MwA/+T/5P/k/+TC5LnkzACG5P/c59yF5MwA/+T/5P/k/+TC5LnkzACG5P/c59yF5MwA/+T/5P/k/+TC5Ll/zACGf/+B54GFf8wA/3//f/9//3/CfwICBAC55swAhub/3OfchebMAP/m/+b/5v/mwua55swAhub/3OfchebMAP/m/+b/5v/mwua55swAhub/3OfchebMAP/m/+b/5v/mwua5f8wAhn//geeBhX/MAP9//3//f/9/wn8CAgQAuejMAIbo/9zn3IXozAD/6P/o/+j/6MLouejMAIbo/9zn3IXozAD/6P/o/+j/6MLouejMAIbo/9zn3IXozAD/6P/o/+j/6MLouX/MAIZ//4HngYV/zAD/f/9//3//f8J/AgIEALnqzACG6v/c59yF6swA/+r/6v/q/+rC6rnqzACG6v/c59yF6swA/+r/6v/q/+rC6rnqzACG6v/c59yF6swA/+r/6v/q/+rC6rl/zACGf/+B54GFf8wA/3//f/9//3/CfwICBAC57MwAhuz/3OfchezMAP/s/+z/7P/swuy57MwAhuz/3OfchezMAP/s/+z/7P/swuy57MwAhuz/3OfchezMAP/s/+z/7P/swuy5f8wAhn//geeBhX/MAP9//3//f/9/wn8CAgQAue7MAIbu/9zn3IXuzAD/7v/u/+7/7sLuue7MAIbu/9zn3IXuzAD/7v/u/+7/7sLuue7MAIbu/9zn3IXuzAD/7v/u/+7/7sLuuX/MAIZ//4HngYV/zAD/f/9//3//f8J/AgIEALnwzACG8P/c59yF8MwA//D/8P/w//DC8LnwzACG8P/c59yF8MwA//D/8P/w//DC8LnwzACG8P/c59yF8MwA//D/8P/w//DC8Ll/zACGf/+B54GFf8wA/3//f/9//3/CfwICBAC58swAhvL/3OfchfLMAP/y//L/8v/ywvK58swAhvL/3OfchfLMAP/y//L/8v/ywvK58swAhvL/3OfchfLMAP/y//L/8v/ywvK5f8wAhn//geeBhX/MAP9//3//f/9/wn8CAgQAufTMAIb0/9zn3IX0zAD/9P/0//T/9ML0ufTMAIb0/9zn3IX0zAD/9P/0//T/9ML0ufTMAIb0/9zn3IX0zAD/9P/0//T/9ML0uX/MAIZ//4HngYV/zAD/f/9//3//f8J/AgIEALn2zACG9v/c59yF9swA//b/9v/2//bC9rn2zACG9v/c59yF9swA//b/9v/2//bC9rn2zACG9v/c59yF9swA//b/9v/2//bC9rl/zACGf/+B54GFf8wA/3//f/9//3/CfwICBAC5+MwAhvj/3OfchfjMAP/4//j/+P/4wvi5+MwAhvj/3OfchfjMAP/4//j/+P/4wvi5+MwAhvj/3OfchfjMAP/4//j/+P/4wvi5f8wAhn//geeBhX/MAP9//3//f/9/wn8CAgQAufrMAIb6/9zn3IX6zAD/+v/6//r/+sL6ufrMAIb6/9zn3IX6zAD/+v/6//r/+sL6ufrMAIb6/9zn3IX6zAD/+v/6//r/+sL6uX/MAIZ//4HngYV/zAD/f/9//3//f8J/AgIEALn8zACG/P/c59yF/MwA//z//P/8//zC/Ln8zACG/P/c59yF/MwA//z//P/8//zC/Ln8zACG/P/c59yF/MwA//z//P/8//zC/Ll/zACGf/+B54GFf8wA/3//f/9//3/CfwICBAC5/swAhv7/3Ofchf7MAP/+//7//v/+wv65/swAhv7/3Ofchf7MAP/+//7//v/+wv65/swAhv7/3Ofchf7MAP/+//7//v/+wv65f8wAhn//geeBhX/MAP9//3//f/9/wn8CAgQAuYDMAIaA/9zn3IWAzAD/gP+A/4D/gMKAuYDMAIaA/9zn3IWAzAD/gP+A/4D/gMKAuYDMAIaA/9zn3IWAzAD/gP+A/4D/gMKAuYDMAIaA/4HngYWAzAD/gP+A/4D/gMKAAgIEALmBzACGgf/c59yFgcwA/4H/gf+B/4HCgbmBzACGgf/c59yFgcwA/4H/gf+B/4HCgbmBzACGgf/c59yFgcwA/4H/gf+B/4HCgbmAzACGgP+B54GFgMwA/4D/gP+A/4DCgAICBAC5gswAhoL/3OfchYLMAP+C/4L/gv+CwoK5gswAhoL/3OfchYLMAP+C/4L/gv+CwoK5gswAhoL/3OfchYLMAP+C/4L/gv+CwoK5gMwAhoD/geeBhYDMAP+A/4D/gP+AwoACAgQAuYPMAIaD/9zn3IWDzAD/g/+D/4P/g8KDuYPMAIaD/9zn3IWDzAD/g/+D/4P/g8KDuYPMAIaD/9zn3IWDzAD/g/+D/4P/g8KDuYDMAIaA/4HngYWAzAD/gP+A/4D/gMKAAgIEALmEzACGhP/c59yFhMwA/4T/hP+E/4TChLmEzACGhP/c59yFhMwA/4T/hP+E/4TChLmEzACGhP/c59yFhMwA/4T/hP+E/4TChLmAzACGgP+B54GFgMwA/4D/gP+A/4DCgAICBAC5hswAhob/3OfchYbMAP+G/4b/hv+Gwoa5hswAhob/3OfchYbMAP+G/4b/hv+Gwoa5hswAhob/3OfchYbMAP+G/4b/hv+Gwoa5gMwAhoD/geeBhYDMAP+A/4D/gP+AwoACAgQAuYfMAIaH/9zn3IWHzAD/h/+H/4f/h8KHuYfMAIaH/9zn3IWHzAD/h/+H/4f/h8KHuYfMAIaH/9zn3IWHzAD/h/+H/4f/h8KHuYDMAIaA/4HngYWAzAD/gP+A/4D/gMKAAgIEALmIzACGiP/c59yFiMwA/4jniAfWld7P6Z7f84gI0I+v3uvNp+j/iNeIuYjMAIaI/9zn3IWIzAD/iOeIB9aV3s/pnt/ziAjQj6/e682n6P+I14i5iMwAhoj/3OfchYjMAP+I54gH1pXez+me3/OICNCPr97rzafo/4jXiLmAzACGgP+B54GFgMwA/4DngAd/f35+fn9/84AIf39+fX1+f3//gNeAAgIEALmJzACGif/c59yFicwA/4njiQTQh47PhwAG8Z+QuuCE6IkE+c6BgYkAA72wu/+J1Im5icwAhon/3OfchYnMAP+J44kE0IeOz4cABvGfkLrghOiJBPnOgYGJAAO9sLv/idSJuYnMAIaJ/9zn3IWJzAD/ieOJBNCHjs+HAAbxn5C64IToiQT5zoGBiQADvbC7/4nUibmAzACGgP+B54GFgMwA/4DjgAR/f356hwAFe35/f3/pgAR/f39+iQADfH5//4DUgAICBAC5iswAhor/3OfchYrMAP+K4YoC4veRAAjZgsiDosHkgdiKCIfvzKuJxeaCkAACu4D/itKKuYrMAIaK/9zn3IWKzAD/iuGKAuL3kQAI2YLIg6LB5IHYigiH78yricXmgpAAAruA/4rSirmKzACGiv/c59yFiswA/4rhigLi+JEACNmCyIOiweSB2IoIh+/Mq4nF5oKQAAK7gP+K0oq5gMwAhoD/geeBhYDMAP+A4YACf32RAAN8fn6Ef9qAhH8Dfn18kAABfv+A04ACAgQAuYvMAIaL/9zn3IWLzAD/i+CLAaSbAArBr4rF95qy0euDxYsJhu/TtZnzvIHsmQAC9cT/i9GLuYvMAIaL/9zn3IWLzAD/i+CLAaSbAArBr4rF95qy0euDxYsJhu/TtZnzvIHsmQAC9cT/i9GLuYvMAIaL/9zn3IWLzAD/i+CLAaSbAArBr4rF95qy0euDxYsJhu/TtZnzvIHsmQAC9cT/i9GLuYDMAIaA/4HngYWAzAD/gOCAAX+bAAV7fX5+foR/x4CEfwR+fn58mQACfH//gNGAAgIEALmNzACGjf/c59yFjcwA/43fjQHapgAN9+7dn835lq7F2u2AiqyNDIqA7de/o4zqtYSwhKQAAYT/jdCNuY3MAIaN/9zn3IWNzAD/jd+NAdqmAA337t2fzfmWrsXa7YCKrI0MioDt17+jjOq1hLCEpAABhP+N0I25jcwAho3/3OfchY3MAP+N340B2qYADffu3Z/N+ZauxdrtgIqsjQyKgO3Xv6OM6rWEsISkAAGE/43QjbmAzACGgP+B54GFgMwA/4DfgAF+pgAGenx9fn5+hX+wgIV/BX5+fn18pAABf/+A0IACAgQAuY7MAIaO/9zn3IWOzAD/jt6OAfC0ACzoitqVveGAjZmpusbT4vP19YOEhIqOjouEhIT29fXi1ci8qZ2Rg+O9k9aK6LEAAcf/js+OuY7MAIaO/9zn3IWOzAD/jt6OAfC0ACzoitqVveGAjZmpusbT4vP19YOEhIqOjouEhIT29fXi1ci8qZ2Rg+O9k9aK6LEAAcf/js+OuY7MAIaO/9zn3IWOzAD/jt6OAfC0ACzoitqVveGAjZmpusbT4vP19YOEhIqOjouEhIT29fXi1ci8qZ2Rg+O9k9aK6LEAAcf/js+OuYDMAIaA/4HngYWAzAD/gN6AAX60AAZ7fX1+fn6Lf4qAi38Gfn5+fX17sQABf/+Az4ACAgQAuY/MAIaP/9zn3IWPzAD/j92PAbz/AJMAAvyF/4/Oj7mPzACGj//c59yFj8wA/4/djwG8/wCTAAL8hf+Pzo+5j8wAho//3OfchY/MAP+P3Y8BvP8AkwAC/IX/j86PuYDMAIaA/4HngYWAzAD/gN2AAX//AJMAAXz/gM+AAgIEALmQAezKAAHahpAB1P/c5dwB2YWQAezKAAHa/5DckAL/kf8AlAAB1/+QzpC5kAHsygAB2oaQAdT/3OXcAdmFkAHsygAB2v+Q3JAC/5H/AJQAAdf/kM6QuZAB7MoAAdqGkAHU/9zl3AHZhZAB7MoAAdr/kNyQAv+R/wCUAAHX/5DOkLmAAXvKAAF6hoD/geeBhYABe8oAAXr/gNyAAn98/wCUAAF+/4DOgAICBAC5kQGuygABjYaRAcb/3OXcAcqFkQGuygABjf+R3JEBgf8AlgABy/+RzZG5kQGuygABjYaRAcb/3OXcAcqFkQGuygABjf+R3JEBgf8AlgABy/+RzZG5kQGuygABjYaRAcb/3OXcAcqFkQGuygABjf+R3JEBgf8AlgABy/+RzZG5gAF9ygABfYaA/4HngYWAAX3KAAF9/4DcgAF//wCWAAF//4DNgAICBAC5kwHBygABv4aTAaz/3OXcAayFkwHBygABv/+T3JMBgYoAB+SKtr6wgMfzAAfQkdD18b+gigAB1P+TzZO5kwHBygABv4aTAaz/3OXcAayFkwHBygABv/+T3JMBgYoAB+SKtr6wgMfzAAfQkdD18b+gigAB1P+TzZO5kwHBygABv4aTAaz/3OXcAayFkwHBygABv/+T3JMBgYoAB+SKtr6wgMfzAAfQkdD18b+gigAB1P+TzZO5gAF+ygABfoaA/4HngYWAAX7KAAF+/4DcgAF9igABf4WBAX/zAAF/hYEBgIoAAX3/gM2AAgIEALmUAb7KAAG9hpQB/P/c5dwB/oWUAb7KAAG9/5TblAGBiQAC6d6HmgaFx4/E38LoAAXfmf+9hYeaArvpiQAB4P+UzJS5lAG+ygABvYaUAfz/3OXcAf6FlAG+ygABvf+U25QBgYkAAuneh5oGhcePxN/C6AAF35n/vYWHmgK76YkAAeD/lMyUuZQBvsoAAb2GlAH8/9zl3AH+hZQBvsoAAb3/lNuUAYGJAALp3oeaBoXHj8TfwugABd+Z/72Fh5oCu+mJAAHg/5TMlLmAAX/KAAF/h4D/geWBhoABf8oAAX//gNyAiQACfoGIggWBgYB/fegABH6AgIGIggKBe4kAAX//gMyAAgIEALmVApKDyAAC/ZGGlQKczP/c49wCzZ2FlQKSg8gAAv2R/5XblQG/iAACkYSOmgiL68Sh/7jam9gACMKloOmbxfSRjZoBsIkAAY7/lcyVuZUCkoPIAAL9kYaVApzM/9zj3ALNnYWVApKDyAAC/ZH/lduVAb+IAAKRhI6aCIvrxKH/uNqb2AAIwqWg6ZvF9JGNmgGwiQABjv+VzJW5lQKSg8gAAv2RhpUCnMz/3OPcAs2dhZUCkoPIAAL9kf+V25UBv4gAApGEjpoIi+vEof+42pvYAAjCpaDpm8X0kY2aAbCJAAGO/5XMlbqAAX3IAAF8iID/geWBh4ABfcgAAXz/gNyAAX+IAAF+kIIHgYGBgIB/ftgAB3x/gICBgYGOggGBiQABf/+AzIACAgQAupYBycgAAcmIlgH3/9zj3AH3h5YBycgAAcn/ltyWAfOIAJiaCpOB6Merid2ZwojFAAqurpTYiq3M7ImZlZoBlogAAZD/lsyWupYBycgAAcmIlgH3/9zj3AH3h5YBycgAAcn/ltyWAfOIAJiaCpOB6Merid2ZwojFAAqurpTYiq3M7ImZlZoBlogAAZD/lsyWupYBycgAAcmIlgH3/9zj3AH3h5YBycgAAcn/ltyWAfOIAJiaCpOB6Merid2ZwojFAAqurpTYiq3M7ImZlZoBlogAAZD/lsyWuoABf8gAAX+JgP+B44GIgAF/yAABf/+A3IABfogAAYGZgoSBBICAf37FAAR9f4CAhIGXggGAiAABfv+AzIACAgQAu5gBi8YAAYuKmAGa/9zh3AGaiZgBi8YAAYv/mN2YAciIAAGAoZoNlon33cOrj+m2iL3M6awADJvVwpHEgJqz0OuCkZ+aAeuIAP+YzZi7mAGLxgABi4qYAZr/3OHcAZqJmAGLxgABi/+Y3ZgByIgAAYChmg2Wiffdw6uP6baIvczprAAMm9XCkcSAmrPQ64KRn5oB64gA/5jNmLuYAYvGAAGLipgBmv/c4dwBmomYAYvGAAGL/5jdmAHIiAABgKGaDZaJ993Dq4/ptoi9zOmsAAyb1cKRxICas9DrgpGfmgHriAD/mM2Yu4ABf8YAAX+KgP+B44GJgAF/xgABf/+A3YABfYgApIKFgQaAgIB/fnusAAV8fn+AgIWBoYIBgYgAAXj/gMyAAgIEALuZApeBxAACgJeKmQKcn//c39wCoJyJmQKXgcQAAoCX/5ndmQHAiAABl66aLJKH+ePNuaiajPfTuJv3rqWlwqWl6QAAm6WlpaClpfeZs873iZaluM3k+oeSrJoB5IgAAev/mcuZu5kCl4HEAAKAl4qZApyf/9zf3AKgnImZApeBxAACgJf/md2ZAcCIAAGXrposkof54825qJqM99O4m/eupaXCpaXpAACbpaWloKWl95mzzveJlqW4zeT6h5KsmgHkiAAB6/+Zy5m7mQKXgcQAAoCXipkCnJ//3N/cAqCciZkCl4HEAAKAl/+Z3ZkBwIgAAZeumiySh/njzbmomoz307ib966lpcKlpekAAJulpaWgpaX3mbPO94mWpbjN5PqHkqyaAeSIAAHr/5nLmbyAAX/EAAF/jID/geGBi4ABf8QAAX//gN6AAXqIALGCh4GEgIR/Cn5+fnwAAHx+fn6Ef4SAh4GuggF/iAABf/+Ay4ACAgQAvZoC0K7AAAKuz46aAvfI/9zb3ALI+Y2aAtCuwAACrs//mt6aAfyIAAGb/5qImgGQiAABo/+ay5q9mgLQrsAAAq7PjpoC98j/3NvcAsj5jZoC0K7AAAKuz/+a3poB/IgAAZv/moiaAZCIAAGj/5rLmr2aAtCuwAACrs+OmgL3yP/c29wCyPmNmgLQrsAAAq7P/5remgH8iAABm/+aiJoBkIgAAaP/msuavYACf33AAAJ9f4+A/4HdgY6AAn99wAACfX//gN6AAX+IAAF+/4KIggGBiAABf/+Ay4ACAgQAvpsFmMjLnMO4AAXDnMvImJCbBaKArsrZ/9zT3AXZyq6Aoo+bBZjIy5zDuAAFw5zLyJj/m9+bAY+IAAGF/5qImgG8iAAB8v+by5u+mwWYyMucw7gABcOcy8iYkJsFooCuytn/3NPcBdnKroCij5sFmMjLnMO4AAXDnMvImP+b35sBj4gAAYX/moiaAbyIAAHy/5vLm76bBZjIy5zDuAAFw5zLyJiQmwWigK7K2f/c09wF2cqugKKPmwWYyMucw7gABcOcy8iY/5vfmwGPiAABhf+aiJoBvIgAAfL/m8ubv4AEf359ergABHp9fn+SgP+B24GRgAR/fn16uAAEen1+f/+A4IABf4gAAYD/goiCAYGIAAF+/4DLgAICBAD/nf+d/53/nf+dn50CkruIAAGS/5qImgHTiAABh/+dy53/nf+d/53/nf+dn50CkruIAAGS/5qImgHTiAABh/+dy53/nf+d/53/nf+dn50CkruIAAGS/5qImgHTiAABh/+dy53/gP+A/4D/gP+AoIABfIgAAYH/goiCAYGIAAF+/4DLgAICBAD/nv+e/57/nv+en54Bz4kAAe//moiaAYCJAAH3/57Knv+e/57/nv+e/56fngHPiQAB7/+aiJoBgIkAAff/nsqe/57/nv+e/57/np+eAc+JAAHv/5qImgGAiQAB9/+eyp7/gP+A/4D/gP+An4ABf4kAAYH/gomCiQABf/+AyoACAgQA/5//n/+f/5//n5+fAZuIAAGb/5qJmgKZrogAAev/n8qf/5//n/+f/5//n5+fAZuIAAGb/5qJmgKZrogAAev/n8qf/5//n/+f/5//n5+fAZuIAAGb/5qJmgKZrogAAev/n8qf/4D/gP+A/4D/gJ+AAX6IAAF//4KKggF+iAABfv+AyoACAgQA/6H/of+h/6H/oZ6hAfqJAAGV/5qKmgHmiQABjv+hyaH/of+h/6H/of+hnqEB+okAAZX/moqaAeaJAAGO/6HJof+h/6H/of+h/6GeoQH6iQABlf+aipoB5okAAY7/ocmh/4D/gP+A/4D/gJ6AAX+JAAGB/4KKggGAiQD/gMqAAgIEAP+i/6L/ov+i/6KeogHTiAACm4b/moqaAeCJAAGk/6LJov+i/6L/ov+i/6KeogHTiAACm4b/moqaAeCJAAGk/6LJov+i/6L/ov+i/6KeogHTiAACm4b/moqaAeCJAAGk/6LJov+A/4D/gP+A/4CegAF+iAABe/+Ci4IBgYkAAX//gMmAAgIEAP+j/6P/o/+j/6OdowGJiQABsf+ajJoBx4gAAvaV/6PIo/+j/6P/o/+j/6OdowGJiQABsf+ajJoBx4gAAvaV/6PIo/+j/6P/o/+j/6OdowGJiQABsf+ajJoBx4gAAvaV/6PIo/+A/4D/gP+A/4CegIkAAYD/goyCAX+IAAF7/4DJgAICBAD/pP+k/6T/pP+knaQBg4kAAdj/moyaAbGJAAGu/6TIpP+k/6T/pP+k/6SdpAGDiQAB2P+ajJoBsYkAAa7/pMik/6T/pP+k/6T/pJ2kAYOJAAHY/5qMmgGxiQABrv+kyKT/gP+A/4D/gP+AnYABf4kAAYH/goyCAYGJAAF//4DIgAICBAD/pv+m/6b/pv+mnKYCkaaIAAHM/5qNmgKTiIgAArGY/6bHpv+m/6b/pv+m/6acpgKRpogAAcz/mo2aApOIiAACsZj/psem/6b/pv+m/6b/ppymApGmiAABzP+ajZoCk4iIAAKxmP+mx6b/gP+A/4D/gP+AnYABeIgAAX//go6CAX6IAAF8/4DIgAICBAD/p/+n/6f/p/+nnKcBookAAb7/mo6aAYaJAAGt/6fHp/+n/6f/p/+n/6ecpwGiiQABvv+ajpoBhokAAa3/p8en/6f/p/+n/6f/p5ynAaKJAAG+/5qOmgGGiQABrf+nx6f/gP+A/4D/gP+AnIABf4kAAYH/go6CAYGJAAF//4DHgAICBAD/qP+o/6j/qP+om6gCmL6IAALyl/+ajpoCioiIAALTmP+oxqj/qP+o/6j/qP+om6gCmL6IAALyl/+ajpoCioiIAALTmP+oxqj/qP+o/6j/qP+om6gCmL6IAALyl/+ajpoCioiIAALTmP+oxqj/gP+A/4D/gP+AnIABe4gAAX7/gpCCAX2IAAF7/4DHgAICBAD/qv+q/6r/qv+qm6oBqIkAAaf/mpCaAf+JAAGh/6rGqv+q/6r/qv+q/6qbqgGoiQABp/+akJoB/4kAAaH/qsaq/6r/qv+q/6r/qpuqAaiJAAGn/5qQmgH/iQABof+qxqr/gP+A/4D/gP+Am4ABf4kAAYH/gpCCAYCJAAF//4DGgAICBAD/q/+r/6v/q/+rmqsCmqyIAAKbkf+akJoCh+mIAAKBlf+rxav/q/+r/6v/q/+rmqsCmqyIAAKbkf+akJoCh+mIAAKBlf+rxav/q/+r/6v/q/+rmqsCmqyIAAKbkf+akJoCh+mIAAKBlf+rxav/gP+A/4D/gP+Am4ABe4gAAX7/gpKCAXyIAAF6/4DGgAICBAD/rP+s/6z/rP+smqwBp4kAAYz/mpKaAYOJAAGD/6zFrP+s/6z/rP+s/6yarAGniQABjP+akpoBg4kAAYP/rMWs/6z/rP+s/6z/rJqsAaeJAAGM/5qSmgGDiQABg/+sxaz/gP+A/4D/gP+AmoABf4kAAYH/gpKCAYGJAAF//4DFgAICBAD/rv+u/67/rv+uma4CnJiIAAKujP+akpoCi8KJAAGL/67Erv+u/67/rv+u/66ZrgKcmIgAAq6M/5qSmgKLwokAAYv/rsSu/67/rv+u/67/rpmuApyYiAACroz/mpKaAovCiQABi/+uxK7/gP+A/4D/gP+AmoABe4gAAX3/gpSCAX2JAP+AxYACAgQA/6//r/+v/6//r5mvAaeJAAGK/5qUmgGQiQABu/+vxK//r/+v/6//r/+vma8Bp4kAAYr/mpSaAZCJAAG7/6/Er/+v/6//r/+v/6+ZrwGniQABiv+alJoBkIkAAbv/r8Sv/4D/gP+A/4D/gJmAAX+JAAGB/4KUggGBiQABfv+AxIACAgQA/7D/sP+w/7D/sJiwAp2FiAACwoz/mpSaAo+uiQAB+v+ww7D/sP+w/7D/sP+wmLACnYWIAALCjP+alJoCj66JAAH6/7DDsP+w/7D/sP+w/7CYsAKdhYgAAsKM/5qUmgKProkAAfr/sMOw/4D/gP+A/4D/gJmAAXuIAAF9/4KWggF+iQABf/+Aw4ACAgQA/7H/sf+x/7H/sZixAaSJAAGM/5qWmgGtiQACp6b/scKx/7H/sf+x/7H/sZixAaSJAAGM/5qWmgGtiQACp6b/scKx/7H/sf+x/7H/sZixAaSJAAGM/5qWmgGtiQACp6b/scKx/4D/gP+A/4D/gJiAAX+JAAGB/4KWggGBiQABff+Aw4ACAgQA/7P/s/+z/7P/s5ezAZyJAALVjf+alpoCl66JAAHU/7PCs/+z/7P/s/+z/7OXswGciQAC1Y3/mpaaApeuiQAB1P+zwrP/s/+z/7P/s/+zl7MBnIkAAtWN/5qWmgKXrokAAdT/s8Kz/4D/gP+A/4D/gJiAiQABff+CmIIBf4kAAX//gMKAAgIEAP+0/7T/tP+0/7SXtAGQiQABj/+amJoB0IkAArWk/7TBtP+0/7T/tP+0/7SXtAGQiQABj/+amJoB0IkAArWk/7TBtP+0/7T/tP+0/7SXtAGQiQABj/+amJoB0IkAArWk/7TBtP+A/4D/gP+A/4CXgAF/iQABgf+CmIIBgYkAAXz/gMKAAgIEAP+1/7X/tf+1/7WWtQGXiQAC6Y7/mpmaAY+JAAGu/7XBtf+1/7X/tf+1/7WWtQGXiQAC6Y7/mpmaAY+JAAGu/7XBtf+1/7X/tf+1/7WWtQGXiQAC6Y7/mpmaAY+JAAGu/7XBtf+A/4D/gP+A/4CXgIkAAX3/gpqCAYCJAAF//4DBgAICBAD/t/+3/7f/t/+3lrcB8YkAAZT/mpqaAvSbiQABnf+3wLf/t/+3/7f/t/+3lrcB8YkAAZT/mpqaAvSbiQABnf+3wLf/t/+3/7f/t/+3lrcB8YkAAZT/mpqaAvSbiQABnf+3wLf/gP+A/4D/gP+AloABfokAAYH/gpqCAoF6iQD/gMGAAgIEAP+4/7j/uP+4/7iVuAGQiQACrpH/mpuaAdiJAAH2/7jAuP+4/7j/uP+4/7iVuAGQiQACrpH/mpuaAdiJAAH2/7jAuP+4/7j/uP+4/7iVuAGQiQACrpH/mpuaAdiJAAH2/7jAuP+A/4D/gP+A/4CWgIkAAX7/gpyCAYCJAAF+/4DAgAICBAD/uv+6/7r/uv+6lboByYkAAaf/mpyaAoibiQABhP+6v7r/uv+6/7r/uv+6lboByYkAAaf/mpyaAoibiQABhP+6v7r/uv+6/7r/uv+6lboByYkAAaf/mpyaAoibiQABhP+6v7r/gP+A/4D/gP+AlYABfokAAYH/gp2CAX2JAP+AwIACAgQA/7v/u/+7/7v/u5S7AYiJAAKIlf+anZoBj4kAArCv/7u+u/+7/7v/u/+7/7uUuwGIiQACiJX/mp2aAY+JAAKwr/+7vrv/u/+7/7v/u/+7lLsBiIkAAoiV/5qdmgGPiQACsK//u767/4D/gP+A/4D/gJWAiQABf/+CnoIBgYkAAX3/gL+AAgIEAP+8/7z/vP+8/7yUvAGOiQABvf+anpoCkcyJAAHd/7y+vP+8/7z/vP+8/7yUvAGOiQABvf+anpoCkcyJAAHd/7y+vP+8/7z/vP+8/7yUvAGOiQABvf+anpoCkcyJAAHd/7y+vP+A/4D/gP+A/4CUgAF+iQABgf+Cn4IBfokAAX//gL6AAgIEAP+9/73/vf+9/72TvQHviQACwpj/mp+aAbyJAAKOqf+9vb3/vf+9/73/vf+9k70B74kAAsKY/5qfmgG8iQACjqn/vb29/73/vf+9/73/vZO9Ae+JAALCmP+an5oBvIkAAo+p/729vf+A/4D/gP+A/4CTgAF/iQABf/+CoIIBgYkAAXz/gL6AAgIEAP+//7//v/+//7+SvwKwj4kAAc//mqCaApnpiQABoP+/vb//v/+//7//v/+/kr8CsI+JAAHP/5qgmgKZ6YkAAaD/v72//7//v/+//7//v5K/ArCPiQABz/+aoJoCmemJAAGg/7+9v/+A/4D/gP+A/4CTgAF9iQABgf+CoYIBf4kAAX//gL2AAgIEAP/A/8D/wP/A/8CSwAHHiQABg/+aopoC65uJAAGZ/8C8wP/A/8D/wP/A/8CSwAHHiQABg/+aopoC65uJAAGZ/8C8wP/A/8D/wP/A/8CSwAHHiQABg/+aopoC65uJAAGZ/8C8wP+A/4D/gP+A/4CSgAF/iQABgP+CooICgXqJAP+AvYACAgQA/8H/wf/B/8H/wZHBAquRiQAB6f+ao5oB2okAAbb/wbzB/8H/wf/B/8H/wZHBAquRiQAB6f+ao5oB2okAAbb/wbzB/8H/wf/B/8H/wZHBAquRiQAB6f+ao5oB2okAAbb/wbzB/4D/gP+A/4D/gJKAAXuJAAGB/4KjggGAiQABfv+AvIACAgQA/8P/w//D/8P/w5HDAZ+JAAG//5qkmgKK6YkAAfb/w7vD/8P/w//D/8P/w5HDAZ+JAAG//5qkmgKK6YkAAfb/w7vD/8P/w//D/8P/w5HDAZ+JAAG//5qkmgKK6YkAAfb/w7vD/4D/gP+A/4D/gJGAAX+JAAGA/4KlggF9iQABf/+Au4ACAgQA/8T/xP/E/8T/xJDEAaCJAAKbg/+apZoBoYkAAt2y/8S6xP/E/8T/xP/E/8SQxAGgiQACm4P/mqWaAaGJAALdsv/EusT/xP/E/8T/xP/EkMQBoIkAApuD/5qlmgGhiQAC3bL/xLrE/4D/gP+A/4D/gJGAiQABfP+CpoIBgYkAAXz/gLuAAgIEAP/F/8X/xf/F/8WQxQHliQABg/+appoClrOJAAGq/8W6xf/F/8X/xf/F/8WQxQHliQABg/+appoClrOJAAGq/8W6xf/F/8X/xf/F/8WQxQHliQABg/+appoClrOJAAGq/8W6xf+A/4D/gP+A/4CQgAF+iQABgf+Cp4IBf4kAAX//gLqAAgIEAP/H/8f/x//H/8ePxwGMiQACkY7/mqeaAdqKAAGg/8e5xwTHx8fGlMcBxo7HAcaUxwHGlccBxoXHAcanxwHGkMcBxoTHAcaMxwXGx8fHxoTHAcaJxwHGnccBxqzHAcaPxwHGh8cBxqTHAcaNx4LGjccBxo/HAcaExwHGhscBxofHBMbGx8aPxwHGlscBxrbHAcbIxwHGk8cBxpfHAcaMxwHGl8cBxo7HAsaMiQACkY7/mqeaAdqKAAGghccBxobHBcbHx8fGnMcBxonHAcaSxwHGtMcBxoTHgsaJxwHGpccDxsfH/8f/x//H/8f/x4/HAYyJAAKRjv+ap5oB2ooAAaD/x7nH/4D/gP+A/4D/gJCAiQABfv+CqIIBgYoA/4C6gAICBAD/yP/I/8j/yP/IjsgCuraJAAGl/5qpmgG/iQABvP/Iucj/yP/I/8j/yP/IjsgCuraJAAGl/5qpmgG/iQABvP/Iucj/yP/I/8j/yP/IjsgCuraJAAGl/5qpmgG/iQABvP/Iucj/gP+A/4D/gP+Aj4ABfYkAAYH/gqmCAYCJAAF+/4C5gAICBAD/yf/J/8n/yf/JjskB44kAgpb/mqmaAoabiQAB/v/JuMn/yf/J/8n/yf/JjskB44kAgpb/mqmaAoabiQAB/v/JuMn/yf/J/8n/yf/JjskB44kAgpb/mqmaAoabiQAB/v/JuMn/gP+A/4D/gP+AjoABf4kAAX//gquCAX2JAAF//4C4gAICBAD/yv/K/8r/yv/KjcoCs+WJAAHJ/5qrmgGdiQACpbT/yrfK/8r/yv/K/8r/yo3KArPliQAByf+aq5oBnYkAAqW0/8q3yv/K/8r/yv/K/8qNygKz5YkAAcn/mquaAZ2JAAKltP/Kt8r/gP+A/4D/gP+AjoABe4kAAYH/gquCAYGJAAF8/4C4gAICBAD/zP/M/8z/zP/MjcwBqIkAAYz/mqyaApaliQABlv/Mt8z/zP/M/8z/zP/MjcwBqIkAAYz/mqyaApaliQABlv/Mt8z/zP/M/8z/zP/MjcwBqIkAAYz/mqyaApaliQABlv/Mt8z/gP+A/4D/gP+AjYABf4kAAYD/gq2CAX+JAAF//4C3gAICBAD/zf/N/83/zf/NjM0BpIkAApv2/5qtmgHaigABj//Nts3/zf/N/83/zf/NjM0BpIkAApv2/5qtmgHaigABj//Nts3/zf/N/83/zf/NjM0BpIkAApv2/5qtmgHaigABj//Nts3/gP+A/4D/gP+AjYCJAAJ7gf+CrYIBgYoA/4C3gAICBAD/zv/O/87/zv/OjM4BzIkAAen/mq+aAb+JAAKuv//Otc7/zv/O/87/zv/OjM4BzIkAAen/mq+aAb+JAAKuv//Otc7/zv/O/87/zv/OjM4BzIkAAen/mq+aAb+JAAKuv//Otc7/gP+A/4D/gP+AjIABfokAAYD/gq+CAYCJAAF9/4C2gAICBAD/z//P/8//z//Pi88BhokAAoiM/5qvmgKJ/IkAAcb/z7XP/8//z//P/8//z4vPAYaJAAKIjP+ar5oCifyJAAHG/8+1z//P/8//z//P/8+LzwGGiQACiIz/mq+aAon8iQABxv/Ptc//gP+A/4D/gP+AjICJAAF+/4KxggF9iQABf/+AtYACAgQA/9D/0P/Q/9D/0IrQAr75iQABo/+asZoBsYoAAZT/0LTQ/9D/0P/Q/9D/0IrQAr75iQABo/+asZoBsYoAAZT/0LTQ/9D/0P/Q/9D/0IrQAr75iQABo/+asZoBsYoAAZT/0LTQ/4D/gP+A/4D/gIuAAXyJAAGB/4KxggGBigD/gLWAAgIEAP/S/9L/0v/S/9KK0gG7iQACrpb/mrGaApmDiQCCxf/Ss9L/0v/S/9L/0v/SitIBu4kAAq6W/5qxmgKZg4kAgsX/0rPS/9L/0v/S/9L/0orSAbuJAAKulv+asZoCmYOJAILF/9Kz0v+A/4D/gP+A/4CKgAF/iQABf/+Cs4IBgIkAAX3/gLSAAgIEAP/T/9P/0//T/9OJ0wGrigAB1/+as5oC/JuJAAHF/9Oz0//T/9P/0//T/9OJ0wGrigAB1/+as5oC/JuJAAHF/9Oz0//T/9P/0//T/9OJ0wGrigAB1/+as5oC/JuJAAHF/9Oz0/+A/4D/gP+A/4CKgIoAAYH/grOCAoF8iQABf/+As4ACAgQA/9T/1P/U/9T/1InUAcuJAAG2/5q1mgGPigABlP/UstT/1P/U/9T/1P/UidQBy4kAAbb/mrWaAY+KAAGU/9Sy1P/U/9T/1P/U/9SJ1AHLiQABtv+atZoBj4oAAZT/1LLU/4D/gP+A/4D/gImAAX6JAAGA/4K1ggGBigD/gLOAAgIEAP/V/9X/1f/V/9WI1QGCiQACm4b/mrWaApSliQACtcX/1bHV/9X/1f/V/9X/1YjVAYKJAAKbhv+atZoClKWJAAK1xf/VsdX/1f/V/9X/1f/ViNUBgokAApuG/5q1mgKUpYkAArXF/9Wx1f+A/4D/gP+A/4CJgIkAAX3/greCAX+JAAF9/4CygAICBAD/1v/W/9b/1v/Wh9YCt7yJAAGZ/5q3mgLjm4kAAcD/1rHW/9b/1v/W/9b/1ofWAre8iQABmf+at5oC45uJAAHA/9ax1v/W/9b/1v/W/9aH1gK3vIkAAZn/mreaAuObiQABwP/Wsdb/gP+A/4D/gP+AiIABe4kAAYH/greCAoF6iQABf/+AsYACAgQA/9j/2P/Y/9j/2IfYAeaJAAKglv+auJoBhIoAAZL/2LDY/9j/2P/Y/9j/2IfYAeaJAAKglv+auJoBhIoAAZL/2LDY/9j/2P/Y/9j/2IfYAeaJAAKglv+auJoBhIoAAZL/2LDY/4D/gP+A/4D/gIeAAX6JAAF//4K5ggGBigD/gLGAAgIEAP/Z/9n/2f/Z/9mG2QGtigAB2f+auZoClL2JAAKVxP/Zr9n/2f/Z/9n/2f/ZhtkBrYoAAdn/mrmaApS9iQAClcT/2a/Z/9n/2f/Z/9n/2YbZAa2KAAHZ/5q5mgKUvYkAApXE/9mv2f+A/4D/gP+A/4CGgAF/igABgf+CuoIBf4kAAX3/gLCAAgIEAP/a/9r/2v/a/9qF2gHIigABzP+au5oC9JuJAAGY/9qv2v/a/9r/2v/a/9qF2gHIigABzP+au5oC9JuJAAGY/9qv2v/a/9r/2v/a/9qF2gHIigABzP+au5oC9JuJAAGY/9qv2v+A/4D/gP+A/4CFgAF/igABgP+Cu4ICgXyJAAF//4CvgAICBAD/2//b/9v/2//bhNsB0ooAAtWN/5q8mgGXigAByf/brtv/2//b/9v/2//bhNsB0ooAAtWN/5q8mgGXigAByf/brtv/2//b/9v/2//bhNsB0ooAAtWN/5q8mgGXigAByf/brtv/gP+A/4D/gP+AhIABf4oAAX7/gr2CAYGKAAF//4CugAICBAD/3P/c/9z/3P/cBNzc3JyLAAHQ/5q9mgKX94oAAZj/3K3c/9z/3P/c/9z/3ATc3NyciwAB0P+avZoCl/eKAAGY/9yt3P/c/9z/3P/c/9wE3NzcnIsAAdD/mr2aApf3igABmP/crdz/gP+A/4D/gP+AhICLAAGB/4K+ggF/igD/gK6AAgIEAP/d/93/3f/d/90E3d3G+ooAAYH/mr+aAoGuiQACrcv/3azd/93/3f/d/93/3QTd3cb6igABgf+av5oCga6JAAKty//drN3/3f/d/93/3f/dBN3dxvqKAAGB/5q/mgKBrokAAq3L/92s3f+A/4D/gP+A/4AEgICAfIoAAYH/gsCCAX2JAAF9/4CtgAICBAD/3v/e/97/3v/eA97N7YoAAvyX/5rAmgG3igAB///erN7/3v/e/97/3v/eA97N7YoAAvyX/5rAmgG3igAB///erN7/3v/e/97/3v/eA97N7YoAAvyX/5rAmgG3igAB///erN7/gP+A/4D/gP+AA4CAfYoAAX//gsGCAYGKAAF+/4CsgAICBAAD4ODfh+AM3+Df4ODf4ODg3+DfhuBe3+Df4ODf4ODf4ODf4N/f3+Df4N/f4ODf3+Dg4N/g39/g4N/f4N/f4ODf4ODg3+Df4ODg39/f4ODf4N/g3+Df3+Df4ODf3+Df4N/g4ODf3+Df3+Dg4N/g4ODf3+Dg34XgAd+H4AHfh+AB34TgIN/f3+Df4ODg39/g3+Dg3+Df4ODf3+Dg39/g4ODf4N/fhuAX3+Df4N/g3+Dg39/g4N/f4N/g4ODf39+E4ATf4ODfheAN3+Df3+Df3+Df4ODf34TgGt/g39/g4N/g4N/g3+Df4ODg3+Df4ODf4N/fhOAG39/f4ODfhOAB34ngBd/f4ODfi+AF39/f4N+F4ILfheAY3+Dg4N/g4N/g4ODf4N/f3+Dg39/f4ODfhOCE34Tggt+E4ATf4ODfhOAF39/f4N+I4AHfhOAH3+Dg4N/g34bgiN8l4ODf4N/g3+Dg4N/f4ODg3+Df3+Dg39/g4N/g4N/g4N/g3+Dg34Tght+D4IXfCODg3+Dg4N/fhOAF39/g39+F4Arf4ODf3+Df4ODghN8b4N/f4ODf4ODf3+Dg39/f4N/g4ODf4ODg3+DfhuAE39/g34bgBd/f4ODfhOAN3+Df4ODf39/g3+Df4ITfEeDg3+Dg39/g4N/g4ODf4N/fheAm39/g3+Df3+Df3+Dg4N/g39/g39/f4ODf3+Dg4N/g4ODf3+Dg4N+E4ALPqIoAAsyH/5rCmgHMigAGs9/f4ODfhOAW3+Dg3+Df4N/f4N/f3+Dg4N/g39/g34XgB9/f3+Dg39+F4APf4N+F4Aff3+Df4N/ghN+C4ITfBODf39+E4B7f3+Dg39/f4N/f4N/g4ODf4N/g4ODf39/g4ODf39+E4ILfhOAF3+Dg4N+E4Cjf39/g3+Dg3+Df39/g3+Dg4N/g4N/g3+Dg4N/g4N/g4ODf4N/f4ODfC9/g4N/f4N/f3+Dght8j4N/f4ODg3+Dg3+Df4ODf4N/f4ODf3+Dg39/f4ODg3+Df4OCK3wjg39/f4N/f4ITfA+Df4ITfEODg39/f4N/g39/g39/f4N+E4Ajf39/g3+Dg4IXfJODf3+Df39/g39/g39/g4N/g39/g4N/g39/g39/g4N/f4N/g34TgBd/f3+Dghd+D4ITfN+Dg4N/g39/g3+Df4N/f3+Df4N/f3+Df4N/f3+Df39/g4N/g3+Dg4N/f4N/f4N/g4ODf4N/f3+CE3xDg39/f4ODf3+Df3+Df39/gid8N4N/g39/g3+Df39/g4IffCeDf4ODg39/g4I7fBeDf4N/fhOAI3+Df4ODf4OCI3xbg3+Dg4N/g3+Df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z//PiM//z//P/8//z//P/8//z//PiM//gP+A/4D/gP+A/4D/gP+AiIACAgQA/83/zf/N/83/zf/N/83/zYjN/83/zf/N/83/zf/N/83/zYjN/83/zf/N/83/zf/N/83/zYjN/4D/gP+A/4D/gP+A/4D/gIiAAgIEAP/L/8v/y//L/8v/y//L/8uIy//L/8v/y//L/8v/y//L/8uIy//L/8v/y//L/8v/y//L/8uIy/+A/4D/gP+A/4D/gP+A/4CIgAICBAD/yf/J/8n/yf/J/8n/yf/JiMn/yf/J/8n/yf/J/8n/yf/JiMn/yf/J/8n/yf/J/8n/yf/JiMn/gP+A/4D/gP+A/4D/gP+AiIACAgQA/8f/x//H/8f/x//H/8f/x4jH/8f/x//H/8f/x//H/8f/x4jH/8f/x//H/8f/x//H/8f/x4jH/4D/gP+A/4D/gP+A/4D/gIiAAgIEAP/F/8X/xf/F/8X/xf/F/8WIxf/F/8X/xf/F/8X/xf/F/8WIxf/F/8X/xf/F/8X/xf/F/8WIxf+A/4D/gP+A/4D/gP+A/4CIgAICBAD/w//D/8P/w//D/8P/w//DiMP/w//D/8P/w//D/8P/w//DiMP/w//D/8P/w//D/8P/w//DiMP/gP+A/4D/gP+A/4D/gP+AiIACAgQA/8H/wf/B/8H/wf/B/8H/wYjB/8H/wf/B/8H/wf/B/8H/wYjB/8H/wf/B/8H/wf/B/8H/wYjB/4D/gP+A/4D/gP+A/4D/gIiAAgIEAP+//7//v/+//7//v/+//7+Iv/+//7//v/+//7//v/+//7+Iv/+//7//v/+//7//v/+//7+Iv/+A/4D/gP+A/4D/gP+A/4CIgAICBAD/vf+9/73/vf+9/73/vf+9iL3/vf+9/73/vf+9/73/vf+9iL3/vf+9/73/vf+9/73/vf+9iL3/gP+A/4D/gP+A/4D/gP+AiIACAgQA/7v/u/+7/7v/u/+7/7v/u4i7/7v/u/+7/7v/u/+7/7v/u4i7/7v/u/+7/7v/u/+7/7v/u4i7/4D/gP+A/4D/gP+A/4D/gIiAAgIEAP+6/7r/uv+6/7r/uv+6/7qIuv+6/7r/uv+6/7r/uv+6/7qIuv+6/7r/uv+6/7r/uv+6/7qIuv+A/4D/gP+A/4D/gP+A/4CIgAICBAD/uP+4/7j/uP+4/7j/uP+4iLj/uP+4/7j/uP+4/7j/uP+4iLj/uP+4/7j/uP+4/7j/uP+4iLj/gP+A/4D/gP+A/4D/gP+AiIACAgQA/7b/tv+2/7b/tv+2/7b/toi2/7b/tv+2/7b/tv+2/7b/toi2/7b/tv+2/7b/tv+2/7b/toi2/4D/gP+A/4D/gP+A/4D/gIiAAgIEAP+0/7T/tP+0/7T/tP+0/7SItP+0/7T/tP+0/7T/tP+0/7SItP+0/7T/tP+0/7T/tP+0/7SItP+A/4D/gP+A/4D/gP+A/4CIgAICBAD/s/+z/7P/s/+z/7P/s/+ziLP/s/+z/7P/s/+z/7P/s/+ziLP/s/+z/7P/s/+z/7P/s/+ziLP/gP+A/4D/gP+A/4D/gP+AiIACAgQA/7H/sf+x/7H/sf+x/7H/sYix/7H/sf+x/7H/sf+x/7H/sYix/7H/sf+x/7H/sf+x/7H/sYix/4D/gP+A/4D/gP+A/4D/gIiAAgIEAP+v/6//r/+v/6//r/+v/6+Ir/+v/6//r/+v/6//r/+v/6+Ir/+v/6//r/+v/6//r/+v/6+Ir/+A/4D/gP+A/4D/gP+A/4CIgAICBAD/rv+u/67/rv+u/67/rv+uiK7/rv+u/67/rv+u/67/rv+uiK7/rv+u/67/rv+u/67/rv+uiK7/gP+A/4D/gP+A/4D/gP+AiIACAgQA/6z/rP+s/6z/rP+s/6z/rIis/6z/rP+s/6z/rP+s/6z/rIis/6z/rP+s/6z/rP+s/6z/rIis/4D/gP+A/4D/gP+A/4D/gIiAAgIEAP+q/6r/qv+q/6r/qv+q/6qIqv+q/6r/qv+q/6r/qv+q/6qIqv+q/6r/qv+q/6r/qv+q/6qIqv+A/4D/gP+A/4D/gP+A/4CIgAICBAD/qf+p/6n/qf+p/6n/qf+piKn/qf+p/6n/qf+p/6n/qf+piKn/qf+p/6n/qf+p/6n/qf+piKn/gP+A/4D/gP+A/4D/gP+AiIACAgQA/6f/p/+n/6f/p/+n/6f/p4in/6f/p/+n/6f/p/+n/6f/p4in/6f/p/+n/6f/p/+n/6f/p4in/4D/gP+A/4D/gP+A/4D/gIiAAgIEAP+m/6b/pv+m/6b/pv+m/6aIpv+m/6b/pv+m/6b/pv+m/6aIpv+m/6b/pv+m/6b/pv+m/6aIpv+A/4D/gP+A/4D/gP+A/4CIgAICBAD/pf+l/6X/pf+l/6X/pf+liKX/pf+l/6X/pf+l/6X/pf+liKX/pf+l/6X/pf+l/6X/pf+liKX/gP+A/4D/gP+A/4D/gP+AiIACAgQA/6P/o/+j/6P/o/+j/6P/o4ij/6P/o/+j/6P/o/+j/6P/o4ij/6P/o/+j/6P/o/+j/6P/o4ij/4D/gP+A/4D/gP+A/4D/gIiAAgIEAP+i/6L/ov+i/6L/ov+i/6KIov+i/6L/ov+i/6L/ov+i/6KIov+i/6L/ov+i/6L/ov+i/6KIov+A/4D/gP+A/4D/gP+A/4CIgAICBAD/of+h/6H/of+h/6H/of+hiKH/of+h/6H/of+h/6H/of+hiKH/of+h/6H/of+h/6H/of+hiKH/gP+A/4D/gP+A/4D/gP+AiIACAgQA/6D/oP+g/6D/oP+g/6D/oIig/6D/oP+g/6D/oP+g/6D/oIig/6D/oP+g/6D/oP+g/6D/oIig/4D/gP+A/4D/gP+A/4D/gIiAAgIEAAKfnoefBJ6fn56EnwGeiZ8Nnp+fnp+fnp+en56fnoafBJ6fn56EnwGehp8Enp+enoefB56enp+fn56HnwSen5+eiJ+CnoufAZ6OnwGehJ8BnoWfAZ6Hnwien5+fnp+fnpGfAZ6PnwWenp+enoafAZ6MnwGehJ8BnoafAZ6In4KekJ+CnpafAZ6MnwWen5+fnoSfAZ6UnwGeip8BnoSfg56UnwGejJ8BnoafB56en56fn56GnwGehZ8Hnp+fnp+fno+fAZ6KnwGehJ8BnomfAZ6FnwOen56HnwGekZ8BnoefBp6fnp+fnoafg56HnwGeip8BnoyfAZ6GnwWen5+fnoifCZ6fn5+enp+fnomfAZ6NnwGehp8Bnoyfgp6GnwGehJ8BnoafAZ6PnwGehJ8BnoqfAZ6Jnweenp+fnp+eiZ8Enp+fnoSfBJ6fn56GnwGehZ+CnoafAZ6Inwaen56en56Hn4KejZ8Jnp+fnp+fnp6ehJ8BnpGfAZ6EnwGeiZ8Fnp+fn56GnxSen5+fnp+fn56enp+fn56en5+fnoafgp6EnwGehZ+CnoifBZ6fn5+eip8BnpGfAZ6TnwGeip8BnqyfAZ6NnwSen5+ehJ8Mnp+fnp+fn56fn5+ehJ8BnomfAZ6Mn4Wfg56EnwWen5+fnoSfA56fnoefg56Jn4KehZ8Fnp+fn56FnwGelp8Gnp+enp+eh58Gnp+fn56ehJ8BnoWfCp6en56fnp+fn56FnwOen56Gnwmen56fn56fnp6GnwGehZ+CnoSfBp6fn56fnoifAZ6KnwGehZ8Bnomfgp6EnxSenp+fnp+fnp+fnp6fn56fnp+fnoqfE56enp+fnp6en5+fnp6fnp+fn56Gn4KehJ8BnoSfCp6fn5+en56fn56Enweenp+fnp+ehJ8Gnp+fn56ehZ8Gnp+en5+ehJ8Jnp6fn5+enp+ehp8Snp+fn56fnp6fn5+en5+en56fhJ4Ln5+fnp+fnp+en56Fnwyenp6fn5+en56fn5+EngOfn56En4KehZ8Fnp+en56FnwGeip8Nnp6fn56fn5+en56enoSfAZ6Enwqenp+fnp+en5+eiZ8BnoSfCZ6fn56fn56fnoifAZ6HnwGehJ8BnoWfCJ6enp+fnp+ekJ8Knp+fnp+fnp+fn4SeEZ+fn56fnp+enp6fn56fn5+ei58anp6fnp6fn5+en5+enp+fnp+en5+enp+fn56JnwSen56eh58BnoSfBZ6fn5+emZ8fnp+fn56fn56fn56fn56en56fnp+en5+fnp6en5+fnoafDp6fnp6fn5+en56fnp+ehJ8BnoSfBp6fnp+enoWfCZ6enp+en5+fnoWfEZ6fn56fn5+en56fnp6en5+ei5+CnoefCJ6fnp+fnp+ehJ8BnomfAZ6JnwGehp8Knp6fn56enp+fnoefBJ6fn56Fn4Keh58Fnp+fnp6Fnween5+en56fhJ4Cn56JnwGeiZ8Gnp+fnp+ehZ8Fnp6fnp6Gn4KehJ8BnoWfg56Gn4KehZ8BnoefAZ6EnwSen5+ehp8Hnp+fn56enoSfAZ6FnwWenp6fnoSfA56fnoWfCJ6enp+fnp+ejJ8Enp6fn4ifBZ6fn5+ek58BnoSfAZ6PnwGekp8BnpafAZ6MnwWen5+fnoSfAZ6fnwGehZ+CnqGfAZ6GnwGehZ8BnoafAZ6InwGesp8Dnp+emZ8BnoefBp6fnp+fnoafgp6WnwGejZ8BnpefAZ6OnwGehJ8BnoafAZ6Lnwaen5+fnp6HnwGehp8BnoyfBZ6en5+ehZ8Fnp6fn56ZnwGehJ8BnpCfAZ6LnwGeiJ8BnpSfBZ6en5+ejp8Fnp6fn56Onw6en56fnp+en5+fnp+fnp6fAZ6TnwGenJ8BnoqfAZ6qnwOen56On4KejJ8Enp+fnpGfAZ6TnwGehJ8BnpGfBp6fn5+enpOfAZ6OnwGehJ8BnoefAZ6GnwGeip8BnpGfAZ6Vn4KelJ8Bno2fA56fnqaf/4D/gP+A/4D/gP+A/4D/gIiAAgIEAP+d/53/nf+d/53/nf+d/52Inf+d/53/nf+d/53/nf+d/52Inf+d/53/nf+d/53/nf+d/52Inf+A/4D/gP+A/4D/gP+A/4CIgAICBAD/nP+c/5z/nP+c/5z/nP+ciJz/nP+c/5z/nP+c/5z/nP+ciJz/nP+c/5z/nP+c/5z/nP+ciJz/gP+A/4D/gP+A/4D/gP+AiIACAgQA/5z/nP+c/5z/nP+c/5z/nIic/5z/nP+c/5z/nP+c/5z/nIic/5z/nP+c/5z/nP+c/5z/nIic/4D/gP+A/4D/gP+A/4D/gIiAAgIEAP+b/5v/m/+b/5v/m/+b/5uIm/+b/5v/m/+b/5v/m/+b/5uIm/+b/5v/m/+b/5v/m/+b/5uIm/+A/4D/gP+A/4D/gP+A/4CIgAICBAD/mv+a/5r/mv+a/5r/mv+aiJr/mv+a/5r/mv+a/5r/mv+aiJr/mv+a/5r/mv+a/5r/mv+aiJr/gP+A/4D/gP+A/4D/gP+AiIACAgQA/5n/mf+Z/5n/mf+Z/5n/mYiZ/5n/mf+Z/5n/mf+Z/5n/mYiZ/5n/mf+Z/5n/mf+Z/5n/mYiZ/4D/gP+A/4D/gP+A/4D/gIiAAgIEAP+Y/5j/mP+Y/5j/mP+Y/5iImP+Y/5j/mP+Y/5j/mP+Y/5iImP+Y/5j/mP+Y/5j/mP+Y/5iImP+A/4D/gP+A/4D/gP+A/4CIgAICBAD/mP+Y/5j/mP+Y/5j/mP+YiJj/mP+Y/5j/mP+Y/5j/mP+YiJj/mP+Y/5j/mP+Y/5j/mP+YiJj/gP+A/4D/gP+A/4D/gP+AiIACAgQA/5f/l/+X/5f/l/+X/5f/l4iX/5f/l/+X/5f/l/+X/5f/l4iX/5f/l/+X/5f/l/+X/5f/l4iX/4D/gP+A/4D/gP+A/4D/gIiAAgIEAP+X/5f/l/+X/5f/l/+X/5eIl/+X/5f/l/+X/5f/l/+X/5eIl/+X/5f/l/+X/5f/l/+X/5eIl/+A/4D/gP+A/4D/gP+A/4CIgA==", si = {
|
|
185
|
+
enabled: !0,
|
|
186
|
+
imageUrl: DA,
|
|
187
|
+
useAsBackground: !1,
|
|
188
|
+
rotateY: 0,
|
|
189
|
+
globalEnvIntensity: 1,
|
|
190
|
+
// deprecated
|
|
191
|
+
exposure: 1,
|
|
192
|
+
// deprecated
|
|
193
|
+
replaceLights: !1
|
|
194
|
+
// deprecated
|
|
195
|
+
};
|
|
196
|
+
class ni {
|
|
197
|
+
constructor(g, A, i = {}) {
|
|
198
|
+
e(this, "originalBackground");
|
|
199
|
+
e(this, "renderer");
|
|
200
|
+
e(this, "scene");
|
|
201
|
+
e(this, "pmrem");
|
|
202
|
+
e(this, "currentEnvRT", null);
|
|
203
|
+
e(this, "currentBackgroundCube", null);
|
|
204
|
+
e(this, "sourceImage", null);
|
|
205
|
+
e(this, "options");
|
|
206
|
+
this.renderer = g, this.scene = A, this.originalBackground = this.scene.background, this.pmrem = new aA(g), this.options = {
|
|
207
|
+
...si,
|
|
208
|
+
...i
|
|
209
|
+
}, this.loadHDRImage(this.options.imageUrl).then((t) => {
|
|
210
|
+
this.sourceImage = t, this.update();
|
|
211
|
+
});
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Disposes the environment.
|
|
215
|
+
*/
|
|
216
|
+
dispose() {
|
|
217
|
+
var g;
|
|
218
|
+
this.pmrem.dispose(), (g = this.sourceImage) == null || g.dispose(), this.sourceImage = null, this.clearEnvironment();
|
|
219
|
+
}
|
|
220
|
+
clearEnvironment() {
|
|
221
|
+
this.scene.environment = null, this.scene.background = this.originalBackground, this.currentEnvRT && (this.currentEnvRT.texture.dispose(), this.currentEnvRT.dispose(), this.currentEnvRT = null), this.currentBackgroundCube && (this.currentBackgroundCube.texture.dispose(), this.currentBackgroundCube.dispose(), this.currentBackgroundCube = null);
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Updates the environment.
|
|
225
|
+
*
|
|
226
|
+
* - Creates a sky scene with a large inward-facing sphere with equirectangular mapping for correct UVs.
|
|
227
|
+
* - Renders the equirect HDR to a cubemap with CubeCamera.
|
|
228
|
+
* - Generates a PMREM from the cubemap.
|
|
229
|
+
* - Updates the scene environment with the PMREM.
|
|
230
|
+
* - Handles background image replacement logic.
|
|
231
|
+
* - Early-returns if the source image is not loaded.
|
|
232
|
+
*/
|
|
233
|
+
update() {
|
|
234
|
+
if (!this.sourceImage) {
|
|
235
|
+
this.clearEnvironment();
|
|
236
|
+
return;
|
|
237
|
+
}
|
|
238
|
+
const g = new wA(), A = new S(10, 60, 40), i = new iA({
|
|
239
|
+
map: this.sourceImage,
|
|
240
|
+
side: YA
|
|
241
|
+
}), t = new Z(A, i);
|
|
242
|
+
t.scale.set(1, 1, -1), t.rotation.y = this.options.rotateY ?? 0, g.add(t);
|
|
243
|
+
const o = this.renderer.toneMapping, s = this.renderer.outputColorSpace;
|
|
244
|
+
this.renderer.toneMapping = bA, this.renderer.outputColorSpace = CA;
|
|
245
|
+
const B = new yA(1024, {
|
|
246
|
+
type: j
|
|
247
|
+
});
|
|
248
|
+
new OA(0.1, 1e3, B).update(this.renderer, g), this.renderer.toneMapping = o, this.renderer.outputColorSpace = s;
|
|
249
|
+
const H = this.pmrem.fromCubemap(B.texture);
|
|
250
|
+
this.currentEnvRT && (this.currentEnvRT.texture.dispose(), this.currentEnvRT.dispose(), this.currentEnvRT = null), this.currentBackgroundCube && (this.currentBackgroundCube.texture.dispose(), this.currentBackgroundCube.dispose(), this.currentBackgroundCube = null), this.currentEnvRT = H, this.scene.environment = H.texture, this.options.useAsBackground ? (this.scene.background = B.texture, this.currentBackgroundCube = B) : (this.scene.background = this.originalBackground, B.texture.dispose(), B.dispose());
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* Sets the renderer and updates the environment. Use this only when rebuilding the webgl renderer.
|
|
254
|
+
*
|
|
255
|
+
* @param renderer - The webglrenderer.
|
|
256
|
+
*/
|
|
257
|
+
setRenderer(g) {
|
|
258
|
+
this.renderer = g, this.pmrem.dispose(), this.pmrem = new aA(g), this.update();
|
|
259
|
+
}
|
|
260
|
+
/**
|
|
261
|
+
* Sets the URL of the HDR image.
|
|
262
|
+
*
|
|
263
|
+
* @param url - The URL of the HDR image. If null, the default environment image will be used.
|
|
264
|
+
*/
|
|
265
|
+
async setImageUrl(g) {
|
|
266
|
+
var A;
|
|
267
|
+
this.options.imageUrl = g ?? DA, (A = this.sourceImage) == null || A.dispose(), this.sourceImage = null, this.sourceImage = await this.loadHDRImage(this.options.imageUrl), this.update();
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* Sets the rotation of the HDR image in radians.
|
|
271
|
+
*
|
|
272
|
+
* @param radians - The rotation of the HDR image in radians.
|
|
273
|
+
*/
|
|
274
|
+
setRotationY(g) {
|
|
275
|
+
this.options.rotateY = g, this.update();
|
|
276
|
+
}
|
|
277
|
+
/**
|
|
278
|
+
* Sets whether to use the HDR image as a background.
|
|
279
|
+
* @param useAsBackground - Whether to use the HDR image as a background.
|
|
280
|
+
*/
|
|
281
|
+
setUseAsBackground(g) {
|
|
282
|
+
this.options.useAsBackground = g, this.update();
|
|
283
|
+
}
|
|
284
|
+
/**
|
|
285
|
+
* Loads equirectangular HDR image from URL.
|
|
286
|
+
* Sets the mapping to EquirectangularReflectionMapping.
|
|
287
|
+
*
|
|
288
|
+
* @param url - The URL of the HDR image.
|
|
289
|
+
* @returns The loaded equirectangular HDR texture.
|
|
290
|
+
*/
|
|
291
|
+
async loadHDRImage(g) {
|
|
292
|
+
const A = await new oi().loadAsync(g);
|
|
293
|
+
return A.mapping = MA, A;
|
|
294
|
+
}
|
|
295
|
+
/**
|
|
296
|
+
* @deprecated setGlobalEnvIntensity does nothing.
|
|
297
|
+
*/
|
|
298
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
299
|
+
setGlobalEnvIntensity(g) {
|
|
300
|
+
console.warn("setGlobalEnvIntensity is deprecated and does nothing.");
|
|
301
|
+
}
|
|
302
|
+
/**
|
|
303
|
+
* @deprecated setExposure does nothing.
|
|
304
|
+
*/
|
|
305
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
306
|
+
setExposure(g) {
|
|
307
|
+
console.warn("setExposure is deprecated and does nothing.");
|
|
308
|
+
}
|
|
309
|
+
/**
|
|
310
|
+
* @deprecated disable does nothing. Environment is enabled by default.
|
|
311
|
+
*/
|
|
312
|
+
disable() {
|
|
313
|
+
console.warn(
|
|
314
|
+
"disable is deprecated and does nothing. Environment is enabled by default."
|
|
315
|
+
);
|
|
316
|
+
}
|
|
317
|
+
/**
|
|
318
|
+
* @deprecated Use update() instead.
|
|
319
|
+
*/
|
|
320
|
+
async enable() {
|
|
321
|
+
this.update();
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
const mA = {
|
|
325
|
+
canvas: void 0,
|
|
326
|
+
antialias: !0,
|
|
327
|
+
alpha: !0,
|
|
328
|
+
powerPreference: "high-performance",
|
|
329
|
+
precision: "highp",
|
|
330
|
+
stencil: !1,
|
|
331
|
+
depth: !0,
|
|
332
|
+
logarithmicDepthBuffer: !0,
|
|
333
|
+
shadows: !0,
|
|
334
|
+
shadowQuality: "high"
|
|
335
|
+
};
|
|
336
|
+
class pA {
|
|
337
|
+
constructor(g, A, i) {
|
|
338
|
+
e(this, "isDIVERenderer", !0);
|
|
339
|
+
e(this, "_webglrenderer");
|
|
340
|
+
e(this, "_environment");
|
|
341
|
+
e(this, "_settings");
|
|
342
|
+
this._scene = g, this._camera = A, this._settings = {
|
|
343
|
+
...mA,
|
|
344
|
+
...i ?? {}
|
|
345
|
+
}, this._webglrenderer = this._createWebGLRenderer(), this._environment = new ni(
|
|
346
|
+
this._webglrenderer,
|
|
347
|
+
this._scene
|
|
348
|
+
);
|
|
349
|
+
}
|
|
350
|
+
get webglrenderer() {
|
|
351
|
+
return this._webglrenderer;
|
|
352
|
+
}
|
|
353
|
+
get environment() {
|
|
354
|
+
return this._environment;
|
|
355
|
+
}
|
|
356
|
+
get canvas() {
|
|
357
|
+
return this._webglrenderer.domElement;
|
|
358
|
+
}
|
|
359
|
+
render() {
|
|
360
|
+
this._webglrenderer.render(this._scene, this._camera);
|
|
361
|
+
}
|
|
362
|
+
onResize(g, A) {
|
|
363
|
+
this._webglrenderer.setSize(g, A, !1);
|
|
364
|
+
}
|
|
365
|
+
dispose() {
|
|
366
|
+
this._environment.dispose(), this._webglrenderer.dispose();
|
|
367
|
+
}
|
|
368
|
+
setCanvas(g) {
|
|
369
|
+
this._webglrenderer.dispose(), this._settings.canvas = g, this._webglrenderer = this._createWebGLRenderer(), this._environment.setRenderer(this._webglrenderer);
|
|
370
|
+
}
|
|
371
|
+
_createWebGLRenderer() {
|
|
372
|
+
const g = new LA(this._settings);
|
|
373
|
+
return g.shadowMap.enabled = this._settings.shadows, g.shadowMap.type = this._settings.shadowQuality === "high" ? FA : this._settings.shadowQuality === "medium" ? XA : jA, g.setPixelRatio(window.devicePixelRatio), g.outputColorSpace = EA, g.toneMapping = ZA, g.toneMappingExposure = 1, g;
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
const Hi = pA;
|
|
377
|
+
class fi {
|
|
378
|
+
constructor(g, A) {
|
|
379
|
+
e(this, "isDIVEResizeManager", !0);
|
|
380
|
+
e(this, "_resizeObserver");
|
|
381
|
+
e(this, "_width", 0);
|
|
382
|
+
e(this, "_height", 0);
|
|
383
|
+
this._renderer = g, this._camera = A, this._resizeObserver = new ResizeObserver((i) => {
|
|
384
|
+
const t = i[0], { width: o, height: s } = t.contentRect;
|
|
385
|
+
o === this._width && s === this._height || (this._camera.onResize(o, s), this._renderer.onResize(o, s), this._width = o, this._height = s, this._renderer.render());
|
|
386
|
+
}), this._observeCanvas(this._renderer.canvas);
|
|
387
|
+
}
|
|
388
|
+
setCanvas(g) {
|
|
389
|
+
this._resizeObserver.disconnect(), this._observeCanvas(g);
|
|
390
|
+
const { width: A, height: i } = g.getBoundingClientRect();
|
|
391
|
+
this._camera.onResize(A, i), this._renderer.onResize(A, i), this._width = A, this._height = i, this._renderer.render();
|
|
392
|
+
}
|
|
393
|
+
dispose() {
|
|
394
|
+
this._resizeObserver.disconnect();
|
|
395
|
+
}
|
|
396
|
+
_observeCanvas(g) {
|
|
397
|
+
if (g.parentElement)
|
|
398
|
+
this._resizeObserver.observe(g.parentElement);
|
|
399
|
+
else {
|
|
400
|
+
const A = setInterval(() => {
|
|
401
|
+
g.parentElement && (this._resizeObserver.observe(g.parentElement), clearInterval(A));
|
|
402
|
+
}, 16);
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
class zA {
|
|
407
|
+
constructor(g, A, i) {
|
|
408
|
+
e(this, "isDIVEView", !0);
|
|
409
|
+
e(this, "uuid", eA.generateUUID());
|
|
410
|
+
e(this, "_paused", !1);
|
|
411
|
+
e(this, "_renderer");
|
|
412
|
+
e(this, "_resizeManager");
|
|
413
|
+
this._scene = g, this._camera = A, this._settings = i, this._renderer = new pA(
|
|
414
|
+
this._scene,
|
|
415
|
+
this._camera,
|
|
416
|
+
this._settings
|
|
417
|
+
), this._resizeManager = new fi(
|
|
418
|
+
this._renderer,
|
|
419
|
+
this._camera
|
|
420
|
+
);
|
|
421
|
+
}
|
|
422
|
+
get renderer() {
|
|
423
|
+
return this._renderer;
|
|
424
|
+
}
|
|
425
|
+
get camera() {
|
|
426
|
+
return this._camera;
|
|
427
|
+
}
|
|
428
|
+
get canvas() {
|
|
429
|
+
return this._renderer.canvas;
|
|
430
|
+
}
|
|
431
|
+
tick() {
|
|
432
|
+
this._paused || this._renderer.render();
|
|
433
|
+
}
|
|
434
|
+
dispose() {
|
|
435
|
+
this._resizeManager.dispose(), this._renderer.dispose();
|
|
436
|
+
}
|
|
437
|
+
onResize(g, A) {
|
|
438
|
+
this._renderer.onResize(g, A), this._camera.onResize(g, A);
|
|
439
|
+
}
|
|
440
|
+
setCanvas(g) {
|
|
441
|
+
this._renderer.setCanvas(g), this._resizeManager.setCanvas(g), this.onResize(
|
|
442
|
+
this._renderer.canvas.clientWidth,
|
|
443
|
+
this._renderer.canvas.clientHeight
|
|
444
|
+
);
|
|
445
|
+
}
|
|
446
|
+
// TODO: add methods to individually pause and resume the view
|
|
447
|
+
pause() {
|
|
448
|
+
this._paused = !0;
|
|
449
|
+
}
|
|
450
|
+
resume() {
|
|
451
|
+
this._paused = !1;
|
|
452
|
+
}
|
|
453
|
+
}
|
|
454
|
+
class hi extends O {
|
|
455
|
+
constructor() {
|
|
456
|
+
super();
|
|
457
|
+
e(this, "isDIVELight", !0);
|
|
458
|
+
e(this, "isDIVEAmbientLight", !0);
|
|
459
|
+
e(this, "isSelectable", !0);
|
|
460
|
+
e(this, "_light");
|
|
461
|
+
this.name = "DIVEAmbientLight", this._light = new QA(16777215, 1), this._light.layers.mask = v, this.add(this._light);
|
|
462
|
+
}
|
|
463
|
+
setColor(A) {
|
|
464
|
+
this._light.color = A;
|
|
465
|
+
}
|
|
466
|
+
setIntensity(A) {
|
|
467
|
+
this._light.intensity = A;
|
|
468
|
+
}
|
|
469
|
+
setEnabled(A) {
|
|
470
|
+
this._light.visible = A;
|
|
471
|
+
}
|
|
472
|
+
}
|
|
473
|
+
class ai extends O {
|
|
474
|
+
constructor() {
|
|
475
|
+
super();
|
|
476
|
+
e(this, "isDIVELight", !0);
|
|
477
|
+
e(this, "isDIVEPointLight", !0);
|
|
478
|
+
e(this, "isMovable", !0);
|
|
479
|
+
e(this, "isSelectable", !0);
|
|
480
|
+
e(this, "gizmo", null);
|
|
481
|
+
e(this, "light");
|
|
482
|
+
e(this, "mesh");
|
|
483
|
+
this.name = "DIVEPointLight", this.light = new WA(16777215, 1), this.light.layers.mask = v, this.light.castShadow = !0, this.light.shadow.mapSize.width = 512, this.light.shadow.mapSize.height = 512, this.add(this.light);
|
|
484
|
+
const A = 0.1, i = new S(
|
|
485
|
+
A,
|
|
486
|
+
A * 320,
|
|
487
|
+
A * 320
|
|
488
|
+
), t = new iA({
|
|
489
|
+
color: this.light.color,
|
|
490
|
+
transparent: !0,
|
|
491
|
+
opacity: 0.8,
|
|
492
|
+
side: GA
|
|
493
|
+
});
|
|
494
|
+
this.mesh = new Z(i, t), this.mesh.layers.mask = ii, this.add(this.mesh);
|
|
495
|
+
}
|
|
496
|
+
setColor(A) {
|
|
497
|
+
this.light.color = A, this.mesh.material.color = A;
|
|
498
|
+
}
|
|
499
|
+
setIntensity(A) {
|
|
500
|
+
this.light.intensity = A, this.mesh.material.opacity = A > 0.8 ? 0.8 : A * 0.8;
|
|
501
|
+
}
|
|
502
|
+
setEnabled(A) {
|
|
503
|
+
this.light.visible = A;
|
|
504
|
+
}
|
|
505
|
+
onMove() {
|
|
506
|
+
import("../plugins/state/index.mjs").then(({ State: A }) => {
|
|
507
|
+
var i;
|
|
508
|
+
(i = A.get(this.userData.id)) == null || i.performAction("UPDATE_OBJECT", {
|
|
509
|
+
id: this.userData.id,
|
|
510
|
+
position: this.position
|
|
511
|
+
});
|
|
512
|
+
});
|
|
513
|
+
}
|
|
514
|
+
onSelect() {
|
|
515
|
+
import("../plugins/state/index.mjs").then(({ State: A }) => {
|
|
516
|
+
var i;
|
|
517
|
+
(i = A.get(this.userData.id)) == null || i.performAction("SELECT_OBJECT", {
|
|
518
|
+
id: this.userData.id
|
|
519
|
+
});
|
|
520
|
+
});
|
|
521
|
+
}
|
|
522
|
+
onDeselect() {
|
|
523
|
+
import("../plugins/state/index.mjs").then(({ State: A }) => {
|
|
524
|
+
var i;
|
|
525
|
+
(i = A.get(this.userData.id)) == null || i.performAction("DESELECT_OBJECT", {
|
|
526
|
+
id: this.userData.id
|
|
527
|
+
});
|
|
528
|
+
});
|
|
529
|
+
}
|
|
530
|
+
}
|
|
531
|
+
class ri extends O {
|
|
532
|
+
constructor() {
|
|
533
|
+
super();
|
|
534
|
+
e(this, "isDIVELight", !0);
|
|
535
|
+
e(this, "isDIVESceneLight", !0);
|
|
536
|
+
e(this, "isSelectable", !0);
|
|
537
|
+
e(this, "_hemiLight");
|
|
538
|
+
e(this, "_dirLight");
|
|
539
|
+
this.name = "DIVESceneLight", this._hemiLight = new NA(16777215, 16777215, 2), this._hemiLight.layers.mask = v, this._hemiLight.position.set(0, 50, 0), this._hemiLight.visible = !0, this.add(this._hemiLight), this._dirLight = new kA(16777215, 3), this._dirLight.layers.mask = v, this._dirLight.position.set(1, 1.75, 1), this._dirLight.position.multiplyScalar(30), this._dirLight.castShadow = !0, this._dirLight.visible = !0, this._dirLight.shadow.mapSize.width = 2048, this._dirLight.shadow.mapSize.height = 2048;
|
|
540
|
+
const A = 5;
|
|
541
|
+
this._dirLight.shadow.camera.left = -5, this._dirLight.shadow.camera.right = A, this._dirLight.shadow.camera.top = A, this._dirLight.shadow.camera.bottom = -5, this._dirLight.shadow.camera.far = 3500, this.add(this._dirLight);
|
|
542
|
+
}
|
|
543
|
+
setColor(A) {
|
|
544
|
+
this._hemiLight.color = A, this._dirLight.color = A;
|
|
545
|
+
}
|
|
546
|
+
setIntensity(A) {
|
|
547
|
+
this._hemiLight.intensity = A * 2, this._dirLight.intensity = A * 3;
|
|
548
|
+
}
|
|
549
|
+
setEnabled(A) {
|
|
550
|
+
this._hemiLight.visible = A, this._dirLight.visible = A;
|
|
551
|
+
}
|
|
552
|
+
}
|
|
553
|
+
const KA = (h) => h.parent ? KA(h.parent) : h;
|
|
554
|
+
class tA extends O {
|
|
555
|
+
constructor() {
|
|
556
|
+
super();
|
|
557
|
+
e(this, "isSelectable", !0);
|
|
558
|
+
e(this, "isMovable", !0);
|
|
559
|
+
e(this, "isDIVENode", !0);
|
|
560
|
+
e(this, "gizmo", null);
|
|
561
|
+
e(this, "_positionWorldBuffer");
|
|
562
|
+
e(this, "_boundingBox");
|
|
563
|
+
this.layers.mask = v, this._positionWorldBuffer = new w(), this._boundingBox = new y();
|
|
564
|
+
}
|
|
565
|
+
setPosition(A) {
|
|
566
|
+
if (!this.parent) {
|
|
567
|
+
this.position.set(A.x, A.y, A.z);
|
|
568
|
+
return;
|
|
569
|
+
}
|
|
570
|
+
const i = new w(A.x, A.y, A.z);
|
|
571
|
+
this.position.copy(this.parent.worldToLocal(i)), "isDIVEGroup" in this.parent && this.parent.updateLineTo(this);
|
|
572
|
+
}
|
|
573
|
+
setRotation(A) {
|
|
574
|
+
this.rotation.set(A.x, A.y, A.z);
|
|
575
|
+
}
|
|
576
|
+
setScale(A) {
|
|
577
|
+
this.scale.set(A.x, A.y, A.z);
|
|
578
|
+
}
|
|
579
|
+
setVisibility(A) {
|
|
580
|
+
this.visible = A;
|
|
581
|
+
}
|
|
582
|
+
setToWorldOrigin() {
|
|
583
|
+
this.position.set(0, 0, 0), import("../plugins/state/index.mjs").then(({ State: A }) => {
|
|
584
|
+
var i;
|
|
585
|
+
(i = A.get(this.userData.id)) == null || i.performAction("UPDATE_OBJECT", {
|
|
586
|
+
id: this.userData.id,
|
|
587
|
+
position: this.getWorldPosition(this._positionWorldBuffer),
|
|
588
|
+
rotation: this.rotation,
|
|
589
|
+
scale: this.scale
|
|
590
|
+
});
|
|
591
|
+
});
|
|
592
|
+
}
|
|
593
|
+
/**
|
|
594
|
+
* Can be called when the object is moved from a foreign object (gizmo, parent, etc.) to update the object's position.
|
|
595
|
+
*/
|
|
596
|
+
onMove() {
|
|
597
|
+
import("../plugins/state/index.mjs").then(({ State: A }) => {
|
|
598
|
+
var i;
|
|
599
|
+
(i = A.get(this.userData.id)) == null || i.performAction("UPDATE_OBJECT", {
|
|
600
|
+
id: this.userData.id,
|
|
601
|
+
position: this.getWorldPosition(this._positionWorldBuffer),
|
|
602
|
+
rotation: this.rotation,
|
|
603
|
+
scale: this.scale
|
|
604
|
+
});
|
|
605
|
+
});
|
|
606
|
+
}
|
|
607
|
+
onSelect() {
|
|
608
|
+
import("../plugins/state/index.mjs").then(({ State: A }) => {
|
|
609
|
+
var i;
|
|
610
|
+
(i = A.get(this.userData.id)) == null || i.performAction("SELECT_OBJECT", {
|
|
611
|
+
id: this.userData.id
|
|
612
|
+
});
|
|
613
|
+
});
|
|
614
|
+
}
|
|
615
|
+
onDeselect() {
|
|
616
|
+
import("../plugins/state/index.mjs").then(({ State: A }) => {
|
|
617
|
+
var i;
|
|
618
|
+
(i = A.get(this.userData.id)) == null || i.performAction("DESELECT_OBJECT", {
|
|
619
|
+
id: this.userData.id
|
|
620
|
+
});
|
|
621
|
+
});
|
|
622
|
+
}
|
|
623
|
+
}
|
|
624
|
+
class AA extends tA {
|
|
625
|
+
/**
|
|
626
|
+
* Creates a new BoundingBox instance for the specified 3D object.
|
|
627
|
+
*
|
|
628
|
+
* The constructor computes both a bounding box and bounding sphere for the given object.
|
|
629
|
+
* It handles complex objects with multiple meshes and nested transformations.
|
|
630
|
+
*
|
|
631
|
+
* @param object - The 3D object to compute bounding volumes for
|
|
632
|
+
* @param axisAligned - Whether to create an axis-aligned bounding box (true) or oriented bounding box (false). Defaults to false.
|
|
633
|
+
* @param wireframeColor - The color for the wireframe helpers. Can be a hex number or ColorRepresentation. Defaults to green (0x00ff00).
|
|
634
|
+
*
|
|
635
|
+
* @example
|
|
636
|
+
* ```typescript
|
|
637
|
+
* // Create an oriented bounding box (aligned with object's rotation)
|
|
638
|
+
* const obb = new BoundingBox(mesh, false, 0x00ff00);
|
|
639
|
+
*
|
|
640
|
+
* // Create an axis-aligned bounding box (aligned with world coordinates)
|
|
641
|
+
* const aabb = new BoundingBox(mesh, true, 0xff0000);
|
|
642
|
+
*
|
|
643
|
+
* // Use default green color
|
|
644
|
+
* const defaultBox = new BoundingBox(mesh);
|
|
645
|
+
* ```
|
|
646
|
+
*/
|
|
647
|
+
constructor(A, i = !1, t = 65280) {
|
|
648
|
+
super();
|
|
649
|
+
/** The computed bounding box (Box3) */
|
|
650
|
+
e(this, "_box");
|
|
651
|
+
/** The computed bounding sphere (Sphere) */
|
|
652
|
+
e(this, "_sphere");
|
|
653
|
+
/** The center point of the bounding box */
|
|
654
|
+
e(this, "_center");
|
|
655
|
+
/** The radius of the bounding sphere */
|
|
656
|
+
e(this, "_radius");
|
|
657
|
+
/** Visual helper for the bounding box wireframe */
|
|
658
|
+
e(this, "_boxHelper");
|
|
659
|
+
/** Visual helper for the bounding sphere wireframe */
|
|
660
|
+
e(this, "_sphereHelper");
|
|
661
|
+
/** The dimensions (width, height, depth) of the bounding box */
|
|
662
|
+
e(this, "_size");
|
|
663
|
+
const o = new y();
|
|
664
|
+
i ? o.setFromObject(A) : (A.updateWorldMatrix(!0, !0), A.traverse((B) => {
|
|
665
|
+
if (!("isMesh" in B) || !B.isMesh) return;
|
|
666
|
+
const G = B;
|
|
667
|
+
G.geometry.computeBoundingBox(), G.geometry.boundingBox && o.union(
|
|
668
|
+
G.geometry.boundingBox.clone().applyMatrix4(G.matrixWorld)
|
|
669
|
+
);
|
|
670
|
+
})), this.rotation.copy(A.rotation), this._box = o, this._size = o.getSize(new w()), this._center = o.getCenter(new w()), this._boxHelper = new xA(this._box, t), this._boxHelper.visible = !1, this.add(this._boxHelper), this._sphere = o.getBoundingSphere(new TA()), this._radius = this._sphere.radius;
|
|
671
|
+
const s = new S(this._radius, 32, 32);
|
|
672
|
+
s.translate(this._center.x, this._center.y, this._center.z), this._sphereHelper = new Z(
|
|
673
|
+
s,
|
|
674
|
+
new iA({ color: t, wireframe: !0 })
|
|
675
|
+
), this._sphereHelper.visible = !1, this.add(this._sphereHelper);
|
|
676
|
+
}
|
|
677
|
+
/**
|
|
678
|
+
* Gets the computed bounding box.
|
|
679
|
+
* @returns The Box3 instance representing the bounding box
|
|
680
|
+
*/
|
|
681
|
+
get box() {
|
|
682
|
+
return this._box;
|
|
683
|
+
}
|
|
684
|
+
/**
|
|
685
|
+
* Gets the computed bounding sphere.
|
|
686
|
+
* @returns The Sphere instance representing the bounding sphere
|
|
687
|
+
*/
|
|
688
|
+
get sphere() {
|
|
689
|
+
return this._sphere;
|
|
690
|
+
}
|
|
691
|
+
/**
|
|
692
|
+
* Gets the center point of the bounding box.
|
|
693
|
+
* @returns A Vector3 representing the center coordinates
|
|
694
|
+
*/
|
|
695
|
+
get center() {
|
|
696
|
+
return this._center;
|
|
697
|
+
}
|
|
698
|
+
/**
|
|
699
|
+
* Gets the radius of the bounding sphere.
|
|
700
|
+
* @returns The radius as a number
|
|
701
|
+
*/
|
|
702
|
+
get radius() {
|
|
703
|
+
return this._radius;
|
|
704
|
+
}
|
|
705
|
+
/**
|
|
706
|
+
* Gets the dimensions of the bounding box.
|
|
707
|
+
* @returns A Vector3 representing width, height, and depth
|
|
708
|
+
*/
|
|
709
|
+
get size() {
|
|
710
|
+
return this._size;
|
|
711
|
+
}
|
|
712
|
+
/**
|
|
713
|
+
* Sets the visibility of the bounding box wireframe helper.
|
|
714
|
+
*
|
|
715
|
+
* @param visible - Whether the box helper should be visible
|
|
716
|
+
*
|
|
717
|
+
* @example
|
|
718
|
+
* ```typescript
|
|
719
|
+
* const boundingBox = new BoundingBox(mesh);
|
|
720
|
+
*
|
|
721
|
+
* // Show the bounding box wireframe
|
|
722
|
+
* boundingBox.setBoxHelperVisible(true);
|
|
723
|
+
*
|
|
724
|
+
* // Hide the bounding box wireframe
|
|
725
|
+
* boundingBox.setBoxHelperVisible(false);
|
|
726
|
+
* ```
|
|
727
|
+
*/
|
|
728
|
+
setBoxHelperVisible(A) {
|
|
729
|
+
this._boxHelper.visible = A;
|
|
730
|
+
}
|
|
731
|
+
/**
|
|
732
|
+
* Sets the visibility of the bounding sphere wireframe helper.
|
|
733
|
+
*
|
|
734
|
+
* @param visible - Whether the sphere helper should be visible
|
|
735
|
+
*
|
|
736
|
+
* @example
|
|
737
|
+
* ```typescript
|
|
738
|
+
* const boundingBox = new BoundingBox(mesh);
|
|
739
|
+
*
|
|
740
|
+
* // Show the bounding sphere wireframe
|
|
741
|
+
* boundingBox.setSphereHelperVisible(true);
|
|
742
|
+
*
|
|
743
|
+
* // Hide the bounding sphere wireframe
|
|
744
|
+
* boundingBox.setSphereHelperVisible(false);
|
|
745
|
+
* ```
|
|
746
|
+
*/
|
|
747
|
+
setSphereHelperVisible(A) {
|
|
748
|
+
this._sphereHelper.visible = A;
|
|
749
|
+
}
|
|
750
|
+
}
|
|
751
|
+
class lA extends tA {
|
|
752
|
+
constructor() {
|
|
753
|
+
super();
|
|
754
|
+
e(this, "isDIVEModel", !0);
|
|
755
|
+
e(this, "_gltf", null);
|
|
756
|
+
e(this, "_mesh", null);
|
|
757
|
+
e(this, "_material", null);
|
|
758
|
+
e(this, "_assetLoader", null);
|
|
759
|
+
this.name = "DIVEModel";
|
|
760
|
+
}
|
|
761
|
+
async _getAssetLoader() {
|
|
762
|
+
return this._assetLoader || (this._assetLoader = new (await import("../plugins/assetloader/index.mjs")).AssetLoader()), this._assetLoader;
|
|
763
|
+
}
|
|
764
|
+
async setFromURL(A) {
|
|
765
|
+
const t = await (await this._getAssetLoader()).load(A);
|
|
766
|
+
return this.setFromGLTF(t), import("../plugins/state/index.mjs").then(({ State: o }) => {
|
|
767
|
+
var s;
|
|
768
|
+
(s = o.get(this.userData.id)) == null || s.performAction("MODEL_LOADED", {
|
|
769
|
+
id: this.userData.id
|
|
770
|
+
});
|
|
771
|
+
}), this;
|
|
772
|
+
}
|
|
773
|
+
setFromGLTF(A) {
|
|
774
|
+
return this.clear(), this._boundingBox.makeEmpty(), this._gltf = A, this._gltf.name = "GLTF", this._gltf.traverse((i) => {
|
|
775
|
+
i.castShadow = !0, i.receiveShadow = !0, i.layers.mask = this.layers.mask, this._boundingBox.expandByObject(i), !this._mesh && "isMesh" in i && (this._mesh = i, this._material ? this._mesh.material = this._material : this._material = i.material);
|
|
776
|
+
}), this.add(this._gltf), this;
|
|
777
|
+
}
|
|
778
|
+
setMaterial(A) {
|
|
779
|
+
this._material || (this._material = new gA()), A.vertexColors !== void 0 && (this._material.vertexColors = A.vertexColors), A.color !== void 0 && this._material.color.set(A.color), A.map !== void 0 && (this._material.map = A.map), A.normalMap !== void 0 && (this._material.normalMap = A.normalMap), A.roughness !== void 0 && (this._material.roughness = A.roughness), A.roughnessMap !== void 0 && (this._material.roughnessMap = A.roughnessMap, this._material.roughnessMap && (this._material.roughness = 1)), A.metalness !== void 0 && (this._material.metalness = A.metalness), A.metalnessMap !== void 0 && (this._material.metalnessMap = A.metalnessMap, this._material.metalnessMap && (this._material.metalness = 1)), this._mesh && (this._mesh.material = this._material);
|
|
780
|
+
}
|
|
781
|
+
placeOnFloor() {
|
|
782
|
+
this.updateWorldMatrix(!0, !0);
|
|
783
|
+
const A = this.getWorldPosition(this._positionWorldBuffer), i = A.clone(), t = new y();
|
|
784
|
+
this.children.forEach((s) => {
|
|
785
|
+
s instanceof AA || t.expandByObject(s, !0);
|
|
786
|
+
});
|
|
787
|
+
const o = -t.min.y;
|
|
788
|
+
Math.abs(o) < 1e-9 || (A.y += o, A.y !== i.y && (this.setPosition(A), import("../plugins/state/index.mjs").then(({ State: s }) => {
|
|
789
|
+
var B;
|
|
790
|
+
(B = s.get(this.userData.id)) == null || B.performAction("UPDATE_OBJECT", {
|
|
791
|
+
id: this.userData.id,
|
|
792
|
+
position: A,
|
|
793
|
+
rotation: this.rotation,
|
|
794
|
+
scale: this.scale
|
|
795
|
+
});
|
|
796
|
+
}), this.onMove()));
|
|
797
|
+
}
|
|
798
|
+
dropIt() {
|
|
799
|
+
if (!this.parent) {
|
|
800
|
+
console.warn(
|
|
801
|
+
"DIVEModel: dropIt() called on a model that is not in the scene.",
|
|
802
|
+
this
|
|
803
|
+
);
|
|
804
|
+
return;
|
|
805
|
+
}
|
|
806
|
+
const A = this.getWorldPosition(this._positionWorldBuffer), i = A.clone(), t = new y();
|
|
807
|
+
this.children.forEach((G) => {
|
|
808
|
+
G instanceof AA || t.expandByObject(G, !0);
|
|
809
|
+
});
|
|
810
|
+
const o = t.getCenter(new w());
|
|
811
|
+
o.y = t.min.y;
|
|
812
|
+
const s = new JA(o, new w(0, -1, 0));
|
|
813
|
+
s.layers.mask = v;
|
|
814
|
+
const B = s.intersectObjects(
|
|
815
|
+
KA(this).root.children,
|
|
816
|
+
!0
|
|
817
|
+
);
|
|
818
|
+
if (B.length > 0) {
|
|
819
|
+
const G = B[0].object, q = new y().setFromObject(G).max.y - t.min.y;
|
|
820
|
+
if (Math.abs(q) < 1e-9 || (A.y += q, A.y === i.y)) return;
|
|
821
|
+
this.setPosition(A), import("../plugins/state/index.mjs").then(({ State: M }) => {
|
|
822
|
+
var d;
|
|
823
|
+
(d = M.get(this.userData.id)) == null || d.performAction("UPDATE_OBJECT", {
|
|
824
|
+
id: this.userData.id,
|
|
825
|
+
position: A,
|
|
826
|
+
rotation: this.rotation,
|
|
827
|
+
scale: this.scale
|
|
828
|
+
});
|
|
829
|
+
}), this.onMove();
|
|
830
|
+
} else
|
|
831
|
+
this.placeOnFloor();
|
|
832
|
+
}
|
|
833
|
+
}
|
|
834
|
+
class Bi extends lA {
|
|
835
|
+
constructor() {
|
|
836
|
+
super();
|
|
837
|
+
e(this, "isDIVEPrimitive", !0);
|
|
838
|
+
e(this, "_mesh");
|
|
839
|
+
e(this, "_material");
|
|
840
|
+
this._mesh = new Z(), this._mesh.name = "PrimitiveMesh", this._mesh.layers.mask = v, this._mesh.castShadow = !0, this._mesh.receiveShadow = !0, this.add(this._mesh), this._material = new gA(), this._mesh.material = this._material;
|
|
841
|
+
}
|
|
842
|
+
setGeometry(A) {
|
|
843
|
+
const i = this.assembleGeometry(A);
|
|
844
|
+
i && (i.computeVertexNormals(), i.computeBoundingBox(), i.computeBoundingSphere(), this._mesh.geometry = i, this._boundingBox.setFromObject(this._mesh));
|
|
845
|
+
}
|
|
846
|
+
assembleGeometry(A) {
|
|
847
|
+
switch (this._material.flatShading = !1, A.name.toLowerCase()) {
|
|
848
|
+
case "cylinder":
|
|
849
|
+
return this.createCylinderGeometry(A);
|
|
850
|
+
case "sphere":
|
|
851
|
+
return this.createSphereGeometry(A);
|
|
852
|
+
case "pyramid":
|
|
853
|
+
return this._material.flatShading = !0, this.createPyramidGeometry(A);
|
|
854
|
+
case "cube":
|
|
855
|
+
case "box":
|
|
856
|
+
return this.createBoxGeometry(A);
|
|
857
|
+
case "cone":
|
|
858
|
+
return this.createConeGeometry(A);
|
|
859
|
+
case "wall":
|
|
860
|
+
return this.createWallGeometry(A);
|
|
861
|
+
case "plane":
|
|
862
|
+
return this.createPlaneGeometry(A);
|
|
863
|
+
default:
|
|
864
|
+
return console.warn(
|
|
865
|
+
"DIVEPrimitive.assembleGeometry: Invalid geometry type:",
|
|
866
|
+
A.name.toLowerCase()
|
|
867
|
+
), null;
|
|
868
|
+
}
|
|
869
|
+
}
|
|
870
|
+
createCylinderGeometry(A) {
|
|
871
|
+
const i = new SA(
|
|
872
|
+
A.width / 2,
|
|
873
|
+
A.width / 2,
|
|
874
|
+
A.height,
|
|
875
|
+
64
|
|
876
|
+
);
|
|
877
|
+
return i.translate(0, A.height / 2, 0), i;
|
|
878
|
+
}
|
|
879
|
+
createSphereGeometry(A) {
|
|
880
|
+
return new S(A.width / 2, 256, 256);
|
|
881
|
+
}
|
|
882
|
+
createPyramidGeometry(A) {
|
|
883
|
+
const i = new Float32Array([
|
|
884
|
+
-A.width / 2,
|
|
885
|
+
0,
|
|
886
|
+
-A.depth / 2,
|
|
887
|
+
// 0
|
|
888
|
+
A.width / 2,
|
|
889
|
+
0,
|
|
890
|
+
-A.depth / 2,
|
|
891
|
+
// 1
|
|
892
|
+
A.width / 2,
|
|
893
|
+
0,
|
|
894
|
+
A.depth / 2,
|
|
895
|
+
// 2
|
|
896
|
+
-A.width / 2,
|
|
897
|
+
0,
|
|
898
|
+
A.depth / 2,
|
|
899
|
+
// 3
|
|
900
|
+
0,
|
|
901
|
+
A.height,
|
|
902
|
+
0
|
|
903
|
+
]), t = new Uint16Array([
|
|
904
|
+
0,
|
|
905
|
+
1,
|
|
906
|
+
2,
|
|
907
|
+
0,
|
|
908
|
+
2,
|
|
909
|
+
3,
|
|
910
|
+
0,
|
|
911
|
+
4,
|
|
912
|
+
1,
|
|
913
|
+
1,
|
|
914
|
+
4,
|
|
915
|
+
2,
|
|
916
|
+
2,
|
|
917
|
+
4,
|
|
918
|
+
3,
|
|
919
|
+
3,
|
|
920
|
+
4,
|
|
921
|
+
0
|
|
922
|
+
]), o = new uA();
|
|
923
|
+
return o.setAttribute(
|
|
924
|
+
"position",
|
|
925
|
+
new rA(i, 3)
|
|
926
|
+
), o.setIndex(new rA(t, 1)), o;
|
|
927
|
+
}
|
|
928
|
+
createBoxGeometry(A) {
|
|
929
|
+
const i = new $(
|
|
930
|
+
A.width,
|
|
931
|
+
A.height,
|
|
932
|
+
A.depth
|
|
933
|
+
);
|
|
934
|
+
return i.translate(0, A.height / 2, 0), i;
|
|
935
|
+
}
|
|
936
|
+
createConeGeometry(A) {
|
|
937
|
+
const i = new _A(A.width / 2, A.height, 256);
|
|
938
|
+
return i.translate(0, A.height / 2, 0), i;
|
|
939
|
+
}
|
|
940
|
+
createWallGeometry(A) {
|
|
941
|
+
const i = new $(
|
|
942
|
+
A.width,
|
|
943
|
+
A.height,
|
|
944
|
+
A.depth || 0.05,
|
|
945
|
+
16
|
|
946
|
+
);
|
|
947
|
+
return i.translate(0, A.height / 2, 0), i;
|
|
948
|
+
}
|
|
949
|
+
createPlaneGeometry(A) {
|
|
950
|
+
const i = new $(
|
|
951
|
+
A.width,
|
|
952
|
+
A.height,
|
|
953
|
+
A.depth
|
|
954
|
+
);
|
|
955
|
+
return i.translate(0, A.height / 2, 0), i;
|
|
956
|
+
}
|
|
957
|
+
}
|
|
958
|
+
class ci extends tA {
|
|
959
|
+
// lines to children
|
|
960
|
+
constructor() {
|
|
961
|
+
super();
|
|
962
|
+
e(this, "isDIVEGroup", !0);
|
|
963
|
+
e(this, "_members");
|
|
964
|
+
e(this, "_lines");
|
|
965
|
+
this.name = "DIVEGroup", this._members = [], this._lines = [];
|
|
966
|
+
}
|
|
967
|
+
// children objects
|
|
968
|
+
get members() {
|
|
969
|
+
return this._members;
|
|
970
|
+
}
|
|
971
|
+
setPosition(A) {
|
|
972
|
+
super.setPosition(A), this._members.forEach((i) => {
|
|
973
|
+
"isDIVENode" in i && i.onMove();
|
|
974
|
+
});
|
|
975
|
+
}
|
|
976
|
+
setLinesVisibility(A, i) {
|
|
977
|
+
if (!i) {
|
|
978
|
+
this._lines.forEach((o) => {
|
|
979
|
+
o.visible = A;
|
|
980
|
+
});
|
|
981
|
+
return;
|
|
982
|
+
}
|
|
983
|
+
const t = this._members.indexOf(i);
|
|
984
|
+
t !== -1 && (this._lines[t].visible = A);
|
|
985
|
+
}
|
|
986
|
+
attach(A) {
|
|
987
|
+
if (this._members.includes(A))
|
|
988
|
+
return this;
|
|
989
|
+
const i = this.createLine();
|
|
990
|
+
return this.add(i), this._lines.push(i), super.attach(A), this._members.push(A), this._updateLineTo(i, A), this.setLinesVisibility(!0, A), this;
|
|
991
|
+
}
|
|
992
|
+
/**
|
|
993
|
+
* Removes an object from the group.
|
|
994
|
+
* @param object - The object to remove.
|
|
995
|
+
* @returns The group instance.
|
|
996
|
+
*/
|
|
997
|
+
remove(A) {
|
|
998
|
+
const i = this._members.indexOf(A);
|
|
999
|
+
if (i === -1)
|
|
1000
|
+
return this;
|
|
1001
|
+
const t = this._lines[i];
|
|
1002
|
+
return super.remove(t), this._lines.splice(i, 1), super.remove(A), this._members.splice(i, 1), this;
|
|
1003
|
+
}
|
|
1004
|
+
updateLineTo(A) {
|
|
1005
|
+
const i = this._members.indexOf(A);
|
|
1006
|
+
i !== -1 && this._updateLineTo(this._lines[i], A);
|
|
1007
|
+
}
|
|
1008
|
+
/**
|
|
1009
|
+
* Creates a line for visualization.
|
|
1010
|
+
*/
|
|
1011
|
+
createLine() {
|
|
1012
|
+
const A = new uA(), i = new VA({
|
|
1013
|
+
color: 6710886,
|
|
1014
|
+
dashSize: 0.05,
|
|
1015
|
+
gapSize: 0.025
|
|
1016
|
+
}), t = new RA(A, i);
|
|
1017
|
+
return t.visible = !1, t;
|
|
1018
|
+
}
|
|
1019
|
+
/**
|
|
1020
|
+
* Updates a line to the object.
|
|
1021
|
+
*/
|
|
1022
|
+
_updateLineTo(A, i) {
|
|
1023
|
+
const t = [
|
|
1024
|
+
new w(0, 0, 0),
|
|
1025
|
+
i.position.clone()
|
|
1026
|
+
];
|
|
1027
|
+
A.geometry.setFromPoints(t), A.computeLineDistances();
|
|
1028
|
+
}
|
|
1029
|
+
// public setBoundingBoxVisibility(visible: boolean): void {
|
|
1030
|
+
// this._boxMesh.visible = visible;
|
|
1031
|
+
// }
|
|
1032
|
+
// /**
|
|
1033
|
+
// * Recalculates the position of the group based on it's bounding box.
|
|
1034
|
+
// * Children's world positions are kept.
|
|
1035
|
+
// */
|
|
1036
|
+
// private recalculatePosition(): void {
|
|
1037
|
+
// // store all children's world positions
|
|
1038
|
+
// const childrensWorldPositions: Vector3[] = this.children.map((child) => child.getWorldPosition(new Vector3()));
|
|
1039
|
+
// // calculate new center and set it as the group's position
|
|
1040
|
+
// const bbcenter = this.updateBB();
|
|
1041
|
+
// this.position.copy(bbcenter);
|
|
1042
|
+
// // set childrens's positions so their world positions are kept
|
|
1043
|
+
// this.children.forEach((child, i) => {
|
|
1044
|
+
// if (child.uuid === this._boxMesh.uuid) return;
|
|
1045
|
+
// child.position.copy(this.worldToLocal(childrensWorldPositions[i]));
|
|
1046
|
+
// });
|
|
1047
|
+
// DIVECommunication.get(this.userData.id)?.performAction('UPDATE_OBJECT', { id: this.userData.id, position: this.position });
|
|
1048
|
+
// }
|
|
1049
|
+
// /**
|
|
1050
|
+
// * Updates the bounding box of the group.
|
|
1051
|
+
// * @returns {Vector3} The new center of the bounding box.
|
|
1052
|
+
// */
|
|
1053
|
+
// private updateBB(): Vector3 {
|
|
1054
|
+
// this._boundingBox.makeEmpty();
|
|
1055
|
+
// if (this.children.length === 1) {
|
|
1056
|
+
// // because we always have the box mesh as 1 child
|
|
1057
|
+
// return this.position.clone();
|
|
1058
|
+
// }
|
|
1059
|
+
// this.children.forEach((child) => {
|
|
1060
|
+
// if (child.uuid === this._boxMesh.uuid) return;
|
|
1061
|
+
// this._boundingBox.expandByObject(child);
|
|
1062
|
+
// });
|
|
1063
|
+
// return this._boundingBox.getCenter(new Vector3());
|
|
1064
|
+
// }
|
|
1065
|
+
// private updateBoxMesh(): void {
|
|
1066
|
+
// if (this.children.length === 1) {
|
|
1067
|
+
// // because we always have the box mesh as 1 child
|
|
1068
|
+
// this._boxMesh.visible = false;
|
|
1069
|
+
// return;
|
|
1070
|
+
// }
|
|
1071
|
+
// this._boxMesh.quaternion.copy(this.quaternion.clone().invert());
|
|
1072
|
+
// this._boxMesh.scale.set(1 / this.scale.x, 1 / this.scale.y, 1 / this.scale.z);
|
|
1073
|
+
// this._boxMesh.geometry = new BoxGeometry(this._boundingBox.max.x - this._boundingBox.min.x, this._boundingBox.max.y - this._boundingBox.min.y, this._boundingBox.max.z - this._boundingBox.min.z);
|
|
1074
|
+
// this._boxMesh.visible = true;
|
|
1075
|
+
// }
|
|
1076
|
+
}
|
|
1077
|
+
class Pi extends Z {
|
|
1078
|
+
constructor() {
|
|
1079
|
+
const A = new UA(1, 1);
|
|
1080
|
+
A.scale(1e3, 1e3, 1), A.rotateX(-Math.PI / 2);
|
|
1081
|
+
const i = new gA({
|
|
1082
|
+
color: new J(16777215),
|
|
1083
|
+
side: GA
|
|
1084
|
+
});
|
|
1085
|
+
super(A, i);
|
|
1086
|
+
e(this, "isDIVEFloor", !0);
|
|
1087
|
+
this.name = "Floor", this.layers.mask = v, this.receiveShadow = !0;
|
|
1088
|
+
}
|
|
1089
|
+
setVisibility(A) {
|
|
1090
|
+
this.visible = A;
|
|
1091
|
+
}
|
|
1092
|
+
setColor(A) {
|
|
1093
|
+
this.material.color = new J(A);
|
|
1094
|
+
}
|
|
1095
|
+
}
|
|
1096
|
+
class zi extends O {
|
|
1097
|
+
constructor() {
|
|
1098
|
+
super();
|
|
1099
|
+
e(this, "isDIVERoot", !0);
|
|
1100
|
+
e(this, "_floor");
|
|
1101
|
+
this.name = "Root", this._floor = new Pi(), this.add(this._floor);
|
|
1102
|
+
}
|
|
1103
|
+
get floor() {
|
|
1104
|
+
return this._floor;
|
|
1105
|
+
}
|
|
1106
|
+
computeSceneBB() {
|
|
1107
|
+
const A = new y();
|
|
1108
|
+
return this.children.forEach((i) => {
|
|
1109
|
+
"isDIVEFloor" in i || i.traverse((t) => {
|
|
1110
|
+
"isObject3D" in t && A.expandByObject(t);
|
|
1111
|
+
});
|
|
1112
|
+
}), A;
|
|
1113
|
+
}
|
|
1114
|
+
getSceneObject(A) {
|
|
1115
|
+
let i;
|
|
1116
|
+
return this.traverse((t) => {
|
|
1117
|
+
i || t.userData.id === A.id && (i = t);
|
|
1118
|
+
}), i;
|
|
1119
|
+
}
|
|
1120
|
+
addSceneObject(A) {
|
|
1121
|
+
let i = this.getSceneObject(A);
|
|
1122
|
+
if (i)
|
|
1123
|
+
return console.warn(
|
|
1124
|
+
`DIVERoot.addSceneObject: Scene object with id ${A.id} already exists`
|
|
1125
|
+
), i;
|
|
1126
|
+
switch (A.entityType) {
|
|
1127
|
+
case "pov":
|
|
1128
|
+
break;
|
|
1129
|
+
case "light": {
|
|
1130
|
+
switch (A.type) {
|
|
1131
|
+
case "scene": {
|
|
1132
|
+
i = new ri();
|
|
1133
|
+
break;
|
|
1134
|
+
}
|
|
1135
|
+
case "ambient": {
|
|
1136
|
+
i = new hi();
|
|
1137
|
+
break;
|
|
1138
|
+
}
|
|
1139
|
+
case "point": {
|
|
1140
|
+
i = new ai();
|
|
1141
|
+
break;
|
|
1142
|
+
}
|
|
1143
|
+
default:
|
|
1144
|
+
throw new Error(
|
|
1145
|
+
`DIVERoot.addSceneObject: Unknown light type: ${A.type}`
|
|
1146
|
+
);
|
|
1147
|
+
}
|
|
1148
|
+
i.name = A.name, i.userData.id = A.id, this.add(i), this._updateLight(i, A);
|
|
1149
|
+
break;
|
|
1150
|
+
}
|
|
1151
|
+
case "model": {
|
|
1152
|
+
i = new lA(), i.name = A.name, i.userData.id = A.id, i.userData.uri = A.uri, this.add(i), this._updateModel(i, A);
|
|
1153
|
+
break;
|
|
1154
|
+
}
|
|
1155
|
+
case "primitive": {
|
|
1156
|
+
i = new Bi(), i.name = A.name, i.userData.id = A.id, this.add(i), this._updatePrimitive(i, A);
|
|
1157
|
+
break;
|
|
1158
|
+
}
|
|
1159
|
+
case "group": {
|
|
1160
|
+
i = new ci(), i.name = A.name, i.userData.id = A.id, this.add(i), this._updateGroup(i, A);
|
|
1161
|
+
break;
|
|
1162
|
+
}
|
|
1163
|
+
default:
|
|
1164
|
+
throw new Error(
|
|
1165
|
+
`DIVERoot.addSceneObject: Unknown entity type: ${A.entityType}`
|
|
1166
|
+
);
|
|
1167
|
+
}
|
|
1168
|
+
return i;
|
|
1169
|
+
}
|
|
1170
|
+
updateSceneObject(A) {
|
|
1171
|
+
const i = this.getSceneObject(A);
|
|
1172
|
+
if (!i) {
|
|
1173
|
+
console.warn(
|
|
1174
|
+
`DIVERoot.updateSceneObject: Scene object with id ${A.id} does not exist`
|
|
1175
|
+
);
|
|
1176
|
+
return;
|
|
1177
|
+
}
|
|
1178
|
+
switch (A.entityType) {
|
|
1179
|
+
case "pov":
|
|
1180
|
+
break;
|
|
1181
|
+
case "light": {
|
|
1182
|
+
this._updateLight(i, A);
|
|
1183
|
+
break;
|
|
1184
|
+
}
|
|
1185
|
+
case "model": {
|
|
1186
|
+
this._updateModel(i, A);
|
|
1187
|
+
break;
|
|
1188
|
+
}
|
|
1189
|
+
case "primitive": {
|
|
1190
|
+
this._updatePrimitive(i, A);
|
|
1191
|
+
break;
|
|
1192
|
+
}
|
|
1193
|
+
case "group": {
|
|
1194
|
+
this._updateGroup(i, A);
|
|
1195
|
+
break;
|
|
1196
|
+
}
|
|
1197
|
+
default:
|
|
1198
|
+
throw new Error(
|
|
1199
|
+
`DIVERoot.updateSceneObject: Unknown entity type: ${A.entityType}`
|
|
1200
|
+
);
|
|
1201
|
+
}
|
|
1202
|
+
}
|
|
1203
|
+
deleteSceneObject(A) {
|
|
1204
|
+
const i = this.getSceneObject(A);
|
|
1205
|
+
if (!i) {
|
|
1206
|
+
console.warn(
|
|
1207
|
+
`DIVERoot.deleteSceneObject: Object with id ${A.id} not found`
|
|
1208
|
+
);
|
|
1209
|
+
return;
|
|
1210
|
+
}
|
|
1211
|
+
switch (A.entityType) {
|
|
1212
|
+
case "pov":
|
|
1213
|
+
break;
|
|
1214
|
+
case "light": {
|
|
1215
|
+
this._deleteLight(i);
|
|
1216
|
+
break;
|
|
1217
|
+
}
|
|
1218
|
+
case "model": {
|
|
1219
|
+
this._deleteModel(i);
|
|
1220
|
+
break;
|
|
1221
|
+
}
|
|
1222
|
+
case "primitive": {
|
|
1223
|
+
this._deletePrimitive(i);
|
|
1224
|
+
break;
|
|
1225
|
+
}
|
|
1226
|
+
case "group": {
|
|
1227
|
+
this._deleteGroup(i);
|
|
1228
|
+
break;
|
|
1229
|
+
}
|
|
1230
|
+
default:
|
|
1231
|
+
throw new Error(
|
|
1232
|
+
`DIVERoot.deleteSceneObject: Unknown entity type: ${A.entityType}`
|
|
1233
|
+
);
|
|
1234
|
+
}
|
|
1235
|
+
}
|
|
1236
|
+
_updateLight(A, i) {
|
|
1237
|
+
i.name !== void 0 && i.name !== null && (A.name = i.name), i.position !== void 0 && i.position !== null && A.position.set(
|
|
1238
|
+
i.position.x,
|
|
1239
|
+
i.position.y,
|
|
1240
|
+
i.position.z
|
|
1241
|
+
), i.intensity !== void 0 && i.intensity !== null && A.setIntensity(i.intensity), i.enabled !== void 0 && i.enabled !== null && A.setEnabled(i.enabled), i.color !== void 0 && i.color !== null && A.setColor(new J(i.color)), i.visible !== void 0 && i.visible !== null && (A.visible = i.visible), i.parentId !== void 0 && this._setParent({ ...i, parentId: i.parentId });
|
|
1242
|
+
}
|
|
1243
|
+
_updateModel(A, i) {
|
|
1244
|
+
i.uri !== void 0 && A.setFromURL(i.uri), i.name !== void 0 && (A.name = i.name), i.position !== void 0 && A.setPosition(i.position), i.rotation !== void 0 && A.setRotation(i.rotation), i.scale !== void 0 && A.setScale(i.scale), i.visible !== void 0 && A.setVisibility(i.visible), i.material !== void 0 && A.setMaterial(i.material), i.parentId !== void 0 && this._setParent({ ...i, parentId: i.parentId });
|
|
1245
|
+
}
|
|
1246
|
+
_updatePrimitive(A, i) {
|
|
1247
|
+
i.name !== void 0 && (A.name = i.name), i.geometry !== void 0 && A.setGeometry(i.geometry), i.position !== void 0 && A.setPosition(i.position), i.rotation !== void 0 && A.setRotation(i.rotation), i.scale !== void 0 && A.setScale(i.scale), i.visible !== void 0 && A.setVisibility(i.visible), i.material !== void 0 && A.setMaterial(i.material), i.parentId !== void 0 && this._setParent({ ...i, parentId: i.parentId });
|
|
1248
|
+
}
|
|
1249
|
+
_updateGroup(A, i) {
|
|
1250
|
+
i.name !== void 0 && (A.name = i.name), i.position !== void 0 && A.setPosition(i.position), i.rotation !== void 0 && A.setRotation(i.rotation), i.scale !== void 0 && A.setScale(i.scale), i.visible !== void 0 && A.setVisibility(i.visible), i.bbVisible !== void 0 && A.setLinesVisibility(i.bbVisible), i.parentId !== void 0 && this._setParent({ ...i, parentId: i.parentId });
|
|
1251
|
+
}
|
|
1252
|
+
_deleteLight(A) {
|
|
1253
|
+
this._detachTransformControls(A), A.parent.remove(A);
|
|
1254
|
+
}
|
|
1255
|
+
_deleteModel(A) {
|
|
1256
|
+
this._detachTransformControls(A), A.parent.remove(A);
|
|
1257
|
+
}
|
|
1258
|
+
_deletePrimitive(A) {
|
|
1259
|
+
this._detachTransformControls(A), A.parent.remove(A);
|
|
1260
|
+
}
|
|
1261
|
+
_deleteGroup(A) {
|
|
1262
|
+
this._detachTransformControls(A);
|
|
1263
|
+
for (let i = A.members.length - 1; i >= 0; i--)
|
|
1264
|
+
this.attach(A.members[i]);
|
|
1265
|
+
A.parent.remove(A);
|
|
1266
|
+
}
|
|
1267
|
+
_setParent(A) {
|
|
1268
|
+
const i = this.getSceneObject(A);
|
|
1269
|
+
if (A.parentId !== null) {
|
|
1270
|
+
const t = this.getSceneObject({
|
|
1271
|
+
id: A.parentId,
|
|
1272
|
+
entityType: A.entityType
|
|
1273
|
+
});
|
|
1274
|
+
if (!t) return;
|
|
1275
|
+
t.attach(i);
|
|
1276
|
+
} else
|
|
1277
|
+
this.attach(i);
|
|
1278
|
+
}
|
|
1279
|
+
_detachTransformControls(A) {
|
|
1280
|
+
this._findScene(A).children.find((i) => {
|
|
1281
|
+
"isTransformControls" in i && i.detach();
|
|
1282
|
+
});
|
|
1283
|
+
}
|
|
1284
|
+
_findScene(A) {
|
|
1285
|
+
return A.parent !== null ? this._findScene(A.parent) : A;
|
|
1286
|
+
}
|
|
1287
|
+
}
|
|
1288
|
+
const Ii = "#888888", Ci = "#dddddd";
|
|
1289
|
+
class wi extends O {
|
|
1290
|
+
constructor() {
|
|
1291
|
+
super(), this.name = "Grid";
|
|
1292
|
+
const g = new $A(
|
|
1293
|
+
100,
|
|
1294
|
+
100,
|
|
1295
|
+
Ii,
|
|
1296
|
+
Ci
|
|
1297
|
+
);
|
|
1298
|
+
g.material.depthTest = !1, g.layers.mask = ei, this.add(g);
|
|
1299
|
+
}
|
|
1300
|
+
setVisibility(g) {
|
|
1301
|
+
this.visible = g;
|
|
1302
|
+
}
|
|
1303
|
+
}
|
|
1304
|
+
const T = {
|
|
1305
|
+
displayFloor: !1,
|
|
1306
|
+
displayGrid: !1,
|
|
1307
|
+
backgroundColor: "#ffffff"
|
|
1308
|
+
};
|
|
1309
|
+
class Gi extends wA {
|
|
1310
|
+
constructor(A) {
|
|
1311
|
+
super();
|
|
1312
|
+
e(this, "isDIVEScene", !0);
|
|
1313
|
+
e(this, "_root");
|
|
1314
|
+
e(this, "_grid");
|
|
1315
|
+
this.setBackground(
|
|
1316
|
+
(A == null ? void 0 : A.backgroundColor) ?? T.backgroundColor
|
|
1317
|
+
), this._root = new zi(), this._root.floor.setVisibility(
|
|
1318
|
+
(A == null ? void 0 : A.displayFloor) ?? T.displayFloor
|
|
1319
|
+
), this.add(this._root), this._grid = new wi(), this._grid.setVisibility(
|
|
1320
|
+
(A == null ? void 0 : A.displayGrid) ?? T.displayGrid
|
|
1321
|
+
), this.add(this._grid);
|
|
1322
|
+
}
|
|
1323
|
+
get root() {
|
|
1324
|
+
return this._root;
|
|
1325
|
+
}
|
|
1326
|
+
get grid() {
|
|
1327
|
+
return this._grid;
|
|
1328
|
+
}
|
|
1329
|
+
setBackground(A) {
|
|
1330
|
+
this.background = new J(A);
|
|
1331
|
+
}
|
|
1332
|
+
computeSceneBB() {
|
|
1333
|
+
return this._root.computeSceneBB();
|
|
1334
|
+
}
|
|
1335
|
+
dispose() {
|
|
1336
|
+
this.remove(this._root), this.remove(this._grid);
|
|
1337
|
+
}
|
|
1338
|
+
}
|
|
1339
|
+
const ui = {
|
|
1340
|
+
enableDamping: !0,
|
|
1341
|
+
dampingFactor: 0.05,
|
|
1342
|
+
enabled: !0,
|
|
1343
|
+
target: new w(),
|
|
1344
|
+
minDistance: 0,
|
|
1345
|
+
maxDistance: 1 / 0,
|
|
1346
|
+
minZoom: 0,
|
|
1347
|
+
maxZoom: 1 / 0,
|
|
1348
|
+
minPolarAngle: 0,
|
|
1349
|
+
maxPolarAngle: Math.PI,
|
|
1350
|
+
minAzimuthAngle: -1 / 0,
|
|
1351
|
+
maxAzimuthAngle: 1 / 0,
|
|
1352
|
+
enableZoom: !0,
|
|
1353
|
+
zoomSpeed: 1,
|
|
1354
|
+
enableRotate: !0,
|
|
1355
|
+
rotateSpeed: 1,
|
|
1356
|
+
enablePan: !0,
|
|
1357
|
+
panSpeed: 1,
|
|
1358
|
+
screenSpacePanning: !0,
|
|
1359
|
+
keyPanSpeed: 7,
|
|
1360
|
+
autoRotate: !1,
|
|
1361
|
+
autoRotateSpeed: 2,
|
|
1362
|
+
keys: {
|
|
1363
|
+
LEFT: "ArrowLeft",
|
|
1364
|
+
UP: "ArrowUp",
|
|
1365
|
+
RIGHT: "ArrowRight",
|
|
1366
|
+
BOTTOM: "ArrowDown"
|
|
1367
|
+
},
|
|
1368
|
+
mouseButtons: {
|
|
1369
|
+
LEFT: K.ROTATE,
|
|
1370
|
+
MIDDLE: K.DOLLY,
|
|
1371
|
+
RIGHT: K.PAN
|
|
1372
|
+
},
|
|
1373
|
+
touches: {
|
|
1374
|
+
ONE: l.ROTATE,
|
|
1375
|
+
TWO: l.DOLLY_PAN
|
|
1376
|
+
}
|
|
1377
|
+
}, E = class E extends Ai {
|
|
1378
|
+
constructor(A, i, t) {
|
|
1379
|
+
super();
|
|
1380
|
+
// public API
|
|
1381
|
+
e(this, "object");
|
|
1382
|
+
e(this, "domElements");
|
|
1383
|
+
e(this, "enabled", !0);
|
|
1384
|
+
e(this, "target", new w());
|
|
1385
|
+
e(this, "minDistance", 0);
|
|
1386
|
+
e(this, "maxDistance", 1 / 0);
|
|
1387
|
+
e(this, "minZoom", 0);
|
|
1388
|
+
e(this, "maxZoom", 1 / 0);
|
|
1389
|
+
e(this, "minPolarAngle", 0);
|
|
1390
|
+
// radians
|
|
1391
|
+
e(this, "maxPolarAngle", Math.PI);
|
|
1392
|
+
// radians
|
|
1393
|
+
e(this, "minAzimuthAngle", -1 / 0);
|
|
1394
|
+
// radians
|
|
1395
|
+
e(this, "maxAzimuthAngle", 1 / 0);
|
|
1396
|
+
// radians
|
|
1397
|
+
e(this, "enableDamping", !0);
|
|
1398
|
+
e(this, "dampingFactor", 0.05);
|
|
1399
|
+
e(this, "enableZoom", !0);
|
|
1400
|
+
e(this, "zoomSpeed", 1);
|
|
1401
|
+
e(this, "enableRotate", !0);
|
|
1402
|
+
e(this, "rotateSpeed", 1);
|
|
1403
|
+
e(this, "enablePan", !0);
|
|
1404
|
+
e(this, "panSpeed", 1);
|
|
1405
|
+
e(this, "screenSpacePanning", !0);
|
|
1406
|
+
e(this, "keyPanSpeed", 7);
|
|
1407
|
+
e(this, "autoRotate", !1);
|
|
1408
|
+
e(this, "autoRotateSpeed", 2);
|
|
1409
|
+
e(this, "keys", {
|
|
1410
|
+
LEFT: "ArrowLeft",
|
|
1411
|
+
UP: "ArrowUp",
|
|
1412
|
+
RIGHT: "ArrowRight",
|
|
1413
|
+
BOTTOM: "ArrowDown"
|
|
1414
|
+
});
|
|
1415
|
+
e(this, "mouseButtons", {
|
|
1416
|
+
LEFT: K.ROTATE,
|
|
1417
|
+
MIDDLE: K.DOLLY,
|
|
1418
|
+
RIGHT: K.PAN
|
|
1419
|
+
});
|
|
1420
|
+
e(this, "touches", { ONE: l.ROTATE, TWO: l.DOLLY_PAN });
|
|
1421
|
+
e(this, "target0");
|
|
1422
|
+
e(this, "position0");
|
|
1423
|
+
e(this, "zoom0");
|
|
1424
|
+
e(this, "uuid", eA.generateUUID());
|
|
1425
|
+
// private state
|
|
1426
|
+
e(this, "state", -1);
|
|
1427
|
+
e(this, "EPS", 1e-6);
|
|
1428
|
+
e(this, "spherical", new BA());
|
|
1429
|
+
e(this, "sphericalDelta", new BA());
|
|
1430
|
+
e(this, "scale", 1);
|
|
1431
|
+
e(this, "panOffset", new w());
|
|
1432
|
+
e(this, "zoomChanged", !1);
|
|
1433
|
+
e(this, "rotateStart", new u());
|
|
1434
|
+
e(this, "rotateEnd", new u());
|
|
1435
|
+
e(this, "rotateDelta", new u());
|
|
1436
|
+
e(this, "panStart", new u());
|
|
1437
|
+
e(this, "panEnd", new u());
|
|
1438
|
+
e(this, "panDelta", new u());
|
|
1439
|
+
e(this, "dollyStart", new u());
|
|
1440
|
+
e(this, "dollyEnd", new u());
|
|
1441
|
+
e(this, "dollyDelta", new u());
|
|
1442
|
+
e(this, "pointers", []);
|
|
1443
|
+
e(this, "pointerPositions", {});
|
|
1444
|
+
// for update() function
|
|
1445
|
+
e(this, "offset", new w());
|
|
1446
|
+
e(this, "quat");
|
|
1447
|
+
e(this, "quatInverse");
|
|
1448
|
+
e(this, "lastPosition", new w());
|
|
1449
|
+
e(this, "lastQuaternion", new cA());
|
|
1450
|
+
e(this, "lastTarget", new w());
|
|
1451
|
+
e(this, "panLeft", (() => {
|
|
1452
|
+
const A = new w();
|
|
1453
|
+
return (i, t) => {
|
|
1454
|
+
A.setFromMatrixColumn(t, 0), A.multiplyScalar(-i), this.panOffset.add(A);
|
|
1455
|
+
};
|
|
1456
|
+
})());
|
|
1457
|
+
e(this, "panUp", (() => {
|
|
1458
|
+
const A = new w();
|
|
1459
|
+
return (i, t) => {
|
|
1460
|
+
this.screenSpacePanning === !0 ? A.setFromMatrixColumn(t, 1) : (A.setFromMatrixColumn(t, 0), A.crossVectors(this.object.up, A)), A.multiplyScalar(i), this.panOffset.add(A);
|
|
1461
|
+
};
|
|
1462
|
+
})());
|
|
1463
|
+
e(this, "onMouseDown", (A) => {
|
|
1464
|
+
let i;
|
|
1465
|
+
switch (A.button) {
|
|
1466
|
+
case 0:
|
|
1467
|
+
i = this.mouseButtons.LEFT;
|
|
1468
|
+
break;
|
|
1469
|
+
case 1:
|
|
1470
|
+
i = this.mouseButtons.MIDDLE;
|
|
1471
|
+
break;
|
|
1472
|
+
case 2:
|
|
1473
|
+
i = this.mouseButtons.RIGHT;
|
|
1474
|
+
break;
|
|
1475
|
+
default:
|
|
1476
|
+
i = -1;
|
|
1477
|
+
}
|
|
1478
|
+
switch (i) {
|
|
1479
|
+
case K.DOLLY:
|
|
1480
|
+
if (this.enableZoom === !1) return;
|
|
1481
|
+
this.handleMouseDownDolly(A), this.state = 1;
|
|
1482
|
+
break;
|
|
1483
|
+
case K.ROTATE:
|
|
1484
|
+
if (A.ctrlKey || A.metaKey || A.shiftKey) {
|
|
1485
|
+
if (this.enablePan === !1) return;
|
|
1486
|
+
this.handleMouseDownPan(A), this.state = 2;
|
|
1487
|
+
} else {
|
|
1488
|
+
if (this.enableRotate === !1) return;
|
|
1489
|
+
this.handleMouseDownRotate(A), this.state = 0;
|
|
1490
|
+
}
|
|
1491
|
+
break;
|
|
1492
|
+
case K.PAN:
|
|
1493
|
+
if (A.ctrlKey || A.metaKey || A.shiftKey) {
|
|
1494
|
+
if (this.enableRotate === !1) return;
|
|
1495
|
+
this.handleMouseDownRotate(A), this.state = 0;
|
|
1496
|
+
} else {
|
|
1497
|
+
if (this.enablePan === !1) return;
|
|
1498
|
+
this.handleMouseDownPan(A), this.state = 2;
|
|
1499
|
+
}
|
|
1500
|
+
break;
|
|
1501
|
+
default:
|
|
1502
|
+
this.state = -1;
|
|
1503
|
+
}
|
|
1504
|
+
this.state !== -1 && this.dispatchEvent({ type: "start" });
|
|
1505
|
+
});
|
|
1506
|
+
e(this, "onMouseMove", (A) => {
|
|
1507
|
+
if (this.enabled !== !1)
|
|
1508
|
+
switch (this.state) {
|
|
1509
|
+
case 0:
|
|
1510
|
+
if (this.enableRotate === !1) return;
|
|
1511
|
+
this.handleMouseMoveRotate(A);
|
|
1512
|
+
break;
|
|
1513
|
+
case 1:
|
|
1514
|
+
if (this.enableZoom === !1) return;
|
|
1515
|
+
this.handleMouseMoveDolly(A);
|
|
1516
|
+
break;
|
|
1517
|
+
case 2:
|
|
1518
|
+
if (this.enablePan === !1) return;
|
|
1519
|
+
this.handleMouseMovePan(A);
|
|
1520
|
+
break;
|
|
1521
|
+
}
|
|
1522
|
+
});
|
|
1523
|
+
e(this, "onMouseWheel", (A) => {
|
|
1524
|
+
this.enabled === !1 || this.enableZoom === !1 || this.state !== -1 || (A.preventDefault(), this.dispatchEvent({ type: "start" }), this.handleMouseWheel(A), this.dispatchEvent({ type: "end" }));
|
|
1525
|
+
});
|
|
1526
|
+
e(this, "onKeyDown", (A) => {
|
|
1527
|
+
this.enabled === !1 || this.enablePan === !1 || this.handleKeyDown(A);
|
|
1528
|
+
});
|
|
1529
|
+
e(this, "onTouchStart", (A) => {
|
|
1530
|
+
switch (this.trackPointer(A), this.pointers.length) {
|
|
1531
|
+
case 1:
|
|
1532
|
+
switch (this.touches.ONE) {
|
|
1533
|
+
case l.ROTATE:
|
|
1534
|
+
if (this.enableRotate === !1) return;
|
|
1535
|
+
this.handleTouchStartRotate(A), this.state = 3;
|
|
1536
|
+
break;
|
|
1537
|
+
case l.PAN:
|
|
1538
|
+
if (this.enablePan === !1) return;
|
|
1539
|
+
this.handleTouchStartPan(A), this.state = 4;
|
|
1540
|
+
break;
|
|
1541
|
+
default:
|
|
1542
|
+
this.state = -1;
|
|
1543
|
+
}
|
|
1544
|
+
break;
|
|
1545
|
+
case 2:
|
|
1546
|
+
switch (this.touches.TWO) {
|
|
1547
|
+
case l.DOLLY_PAN:
|
|
1548
|
+
if (this.enableZoom === !1 && this.enablePan === !1)
|
|
1549
|
+
return;
|
|
1550
|
+
this.handleTouchStartDollyPan(A), this.state = 5;
|
|
1551
|
+
break;
|
|
1552
|
+
case l.DOLLY_ROTATE:
|
|
1553
|
+
if (this.enableZoom === !1 && this.enableRotate === !1)
|
|
1554
|
+
return;
|
|
1555
|
+
this.handleTouchStartDollyRotate(A), this.state = 6;
|
|
1556
|
+
break;
|
|
1557
|
+
default:
|
|
1558
|
+
this.state = -1;
|
|
1559
|
+
}
|
|
1560
|
+
break;
|
|
1561
|
+
default:
|
|
1562
|
+
this.state = -1;
|
|
1563
|
+
}
|
|
1564
|
+
this.state !== -1 && this.dispatchEvent({ type: "start" });
|
|
1565
|
+
});
|
|
1566
|
+
e(this, "onTouchMove", (A) => {
|
|
1567
|
+
switch (this.trackPointer(A), this.state) {
|
|
1568
|
+
case 3:
|
|
1569
|
+
if (this.enableRotate === !1) return;
|
|
1570
|
+
this.handleTouchMoveRotate(A), this.update();
|
|
1571
|
+
break;
|
|
1572
|
+
case 4:
|
|
1573
|
+
if (this.enablePan === !1) return;
|
|
1574
|
+
this.handleTouchMovePan(A), this.update();
|
|
1575
|
+
break;
|
|
1576
|
+
case 5:
|
|
1577
|
+
if (this.enableZoom === !1 && this.enablePan === !1)
|
|
1578
|
+
return;
|
|
1579
|
+
this.handleTouchMoveDollyPan(A), this.update();
|
|
1580
|
+
break;
|
|
1581
|
+
case 6:
|
|
1582
|
+
if (this.enableZoom === !1 && this.enableRotate === !1)
|
|
1583
|
+
return;
|
|
1584
|
+
this.handleTouchMoveDollyRotate(A), this.update();
|
|
1585
|
+
break;
|
|
1586
|
+
default:
|
|
1587
|
+
this.state = -1;
|
|
1588
|
+
}
|
|
1589
|
+
});
|
|
1590
|
+
e(this, "onPointerDown", (A) => {
|
|
1591
|
+
if (this.enabled !== !1) {
|
|
1592
|
+
if (this.pointers.length === 0) {
|
|
1593
|
+
const i = A.currentTarget;
|
|
1594
|
+
i.setPointerCapture(A.pointerId), i.addEventListener("pointermove", this.onPointerMove), i.addEventListener("pointerup", this.onPointerUp);
|
|
1595
|
+
}
|
|
1596
|
+
this.isTrackingPointer(A) || (this.addPointer(A), A.pointerType === "touch" ? this.onTouchStart(A) : this.onMouseDown(A));
|
|
1597
|
+
}
|
|
1598
|
+
});
|
|
1599
|
+
e(this, "onPointerMove", (A) => {
|
|
1600
|
+
this.enabled !== !1 && (A.pointerType === "touch" ? this.onTouchMove(A) : this.onMouseMove(A));
|
|
1601
|
+
});
|
|
1602
|
+
e(this, "onPointerUp", (A) => {
|
|
1603
|
+
if (this.removePointer(A), this.pointers.length === 0) {
|
|
1604
|
+
const i = A.currentTarget;
|
|
1605
|
+
i.releasePointerCapture(A.pointerId), i.removeEventListener("pointermove", this.onPointerMove), i.removeEventListener("pointerup", this.onPointerUp), this.dispatchEvent({ type: "end" }), this.state = -1;
|
|
1606
|
+
}
|
|
1607
|
+
});
|
|
1608
|
+
e(this, "onPointerCancel", (A) => {
|
|
1609
|
+
this.removePointer(A);
|
|
1610
|
+
});
|
|
1611
|
+
e(this, "onContextMenu", (A) => {
|
|
1612
|
+
this.enabled !== !1 && A.preventDefault();
|
|
1613
|
+
});
|
|
1614
|
+
this.object = A, this.domElements = Array.isArray(i) ? i : [i], Object.assign(this, t), this.target0 = this.target.clone(), this.position0 = this.object.position.clone(), this.zoom0 = this.object.zoom, this.quat = new cA().setFromUnitVectors(
|
|
1615
|
+
A.up,
|
|
1616
|
+
new w(0, 1, 0)
|
|
1617
|
+
), this.quatInverse = this.quat.clone().invert(), this.domElements.forEach((o) => this.addEventListeners(o)), this.update();
|
|
1618
|
+
}
|
|
1619
|
+
get domElement() {
|
|
1620
|
+
return this.domElements[0];
|
|
1621
|
+
}
|
|
1622
|
+
tick() {
|
|
1623
|
+
this.enabled && this.update();
|
|
1624
|
+
}
|
|
1625
|
+
getPolarAngle() {
|
|
1626
|
+
return this.spherical.phi;
|
|
1627
|
+
}
|
|
1628
|
+
getAzimuthalAngle() {
|
|
1629
|
+
return this.spherical.theta;
|
|
1630
|
+
}
|
|
1631
|
+
getDistance() {
|
|
1632
|
+
return this.object.position.distanceTo(this.target);
|
|
1633
|
+
}
|
|
1634
|
+
saveState() {
|
|
1635
|
+
this.target0.copy(this.target), this.position0.copy(this.object.position), this.zoom0 = this.object.zoom;
|
|
1636
|
+
}
|
|
1637
|
+
reset() {
|
|
1638
|
+
this.target.copy(this.target0), this.object.position.copy(this.position0), this.object.zoom = this.zoom0, this.object.updateProjectionMatrix(), this.dispatchEvent({ type: "change" }), this.update(), this.state = -1;
|
|
1639
|
+
}
|
|
1640
|
+
update() {
|
|
1641
|
+
return this.offset.copy(this.object.position).sub(this.target), this.offset.applyQuaternion(this.quat), this.spherical.setFromVector3(this.offset), this.autoRotate && this.state === -1 && this.rotateLeft(this.getAutoRotationAngle()), this.enableDamping ? (this.spherical.theta += this.sphericalDelta.theta * this.dampingFactor, this.spherical.phi += this.sphericalDelta.phi * this.dampingFactor) : (this.spherical.theta += this.sphericalDelta.theta, this.spherical.phi += this.sphericalDelta.phi), this.spherical.theta = Math.max(
|
|
1642
|
+
this.minAzimuthAngle,
|
|
1643
|
+
Math.min(this.maxAzimuthAngle, this.spherical.theta)
|
|
1644
|
+
), this.spherical.phi = Math.max(
|
|
1645
|
+
this.minPolarAngle,
|
|
1646
|
+
Math.min(this.maxPolarAngle, this.spherical.phi)
|
|
1647
|
+
), this.spherical.makeSafe(), this.spherical.radius *= this.scale, this.spherical.radius = Math.max(
|
|
1648
|
+
this.minDistance,
|
|
1649
|
+
Math.min(this.maxDistance, this.spherical.radius)
|
|
1650
|
+
), this.enableDamping === !0 ? this.target.addScaledVector(this.panOffset, this.dampingFactor) : this.target.add(this.panOffset), this.offset.setFromSpherical(this.spherical), this.offset.applyQuaternion(this.quatInverse), this.object.position.copy(this.target).add(this.offset), this.object.lookAt(this.target), this.enableDamping === !0 ? (this.sphericalDelta.theta *= 1 - this.dampingFactor, this.sphericalDelta.phi *= 1 - this.dampingFactor, this.panOffset.multiplyScalar(1 - this.dampingFactor)) : (this.sphericalDelta.set(0, 0, 0), this.panOffset.set(0, 0, 0)), this.scale = 1, this.zoomChanged || this.lastPosition.distanceToSquared(this.object.position) > this.EPS || 8 * (1 - this.lastQuaternion.dot(this.object.quaternion)) > this.EPS || this.lastTarget.distanceToSquared(this.target) > this.EPS ? (this.dispatchEvent({ type: "change" }), this.lastPosition.copy(this.object.position), this.lastQuaternion.copy(this.object.quaternion), this.lastTarget.copy(this.target), this.zoomChanged = !1, !0) : !1;
|
|
1651
|
+
}
|
|
1652
|
+
dispose() {
|
|
1653
|
+
this.domElements.forEach(
|
|
1654
|
+
(A) => this.removeEventListeners(A)
|
|
1655
|
+
), this.dispatchEvent({ type: "dispose" });
|
|
1656
|
+
}
|
|
1657
|
+
addDomElements(...A) {
|
|
1658
|
+
A.forEach((i) => {
|
|
1659
|
+
this.domElements.includes(i) || (this.domElements.push(i), this.addEventListeners(i));
|
|
1660
|
+
});
|
|
1661
|
+
}
|
|
1662
|
+
removeDomElements(...A) {
|
|
1663
|
+
A.forEach((i) => {
|
|
1664
|
+
const t = this.domElements.indexOf(i);
|
|
1665
|
+
t > -1 && (this.removeEventListeners(i), this.domElements.splice(t, 1));
|
|
1666
|
+
});
|
|
1667
|
+
}
|
|
1668
|
+
setDomElements(...A) {
|
|
1669
|
+
this.removeDomElements(...this.domElements), this.domElements = [], this.addDomElements(...A);
|
|
1670
|
+
}
|
|
1671
|
+
computeEncompassingView(A, i = 0) {
|
|
1672
|
+
const t = A.center, s = A.sphere.radius, B = this.object.fov * (Math.PI / 180), G = this.object.aspect, H = B / 2, Q = Math.atan(Math.tan(H) * G), q = s / Math.sin(H), M = s / Math.sin(Q), d = Math.max(q, M) * (1 + i), W = this.object.position.clone().sub(this.target).normalize(), _ = W.length() > 1e-3 ? W : new w(0, 0, 1);
|
|
1673
|
+
return {
|
|
1674
|
+
position: t.clone().add(_.multiplyScalar(d)),
|
|
1675
|
+
target: t
|
|
1676
|
+
};
|
|
1677
|
+
}
|
|
1678
|
+
focusObject(A, i = 0) {
|
|
1679
|
+
const t = new AA(A), o = this.computeEncompassingView(t, i);
|
|
1680
|
+
this.object.position.copy(o.position), this.target.copy(o.target), this.update();
|
|
1681
|
+
}
|
|
1682
|
+
zoomIn(A) {
|
|
1683
|
+
this.dollyIn(Math.pow(0.95, A ?? E.DEFAULT_ZOOM_FACTOR)), this.update();
|
|
1684
|
+
}
|
|
1685
|
+
zoomOut(A) {
|
|
1686
|
+
this.dollyOut(
|
|
1687
|
+
Math.pow(0.95, A ?? E.DEFAULT_ZOOM_FACTOR)
|
|
1688
|
+
), this.update();
|
|
1689
|
+
}
|
|
1690
|
+
getState() {
|
|
1691
|
+
return {
|
|
1692
|
+
target: this.target.clone(),
|
|
1693
|
+
azimuthalAngle: this.getAzimuthalAngle(),
|
|
1694
|
+
polarAngle: this.getPolarAngle(),
|
|
1695
|
+
distance: this.getDistance(),
|
|
1696
|
+
position: this.object.position.clone(),
|
|
1697
|
+
quaternion: this.object.quaternion.clone()
|
|
1698
|
+
};
|
|
1699
|
+
}
|
|
1700
|
+
setState(A) {
|
|
1701
|
+
this.target.copy(A.target), this.object.position.copy(A.position), this.object.quaternion.copy(A.quaternion), this.update();
|
|
1702
|
+
}
|
|
1703
|
+
//
|
|
1704
|
+
// Private methods
|
|
1705
|
+
//
|
|
1706
|
+
addEventListeners(A) {
|
|
1707
|
+
A.style.touchAction = "none", A.addEventListener("contextmenu", this.onContextMenu), A.addEventListener("pointerdown", this.onPointerDown), A.addEventListener("pointercancel", this.onPointerCancel), A.addEventListener("wheel", this.onMouseWheel, {
|
|
1708
|
+
passive: !1
|
|
1709
|
+
}), A.addEventListener("keydown", this.onKeyDown);
|
|
1710
|
+
}
|
|
1711
|
+
removeEventListeners(A) {
|
|
1712
|
+
A.removeEventListener("contextmenu", this.onContextMenu), A.removeEventListener("pointerdown", this.onPointerDown), A.removeEventListener("pointercancel", this.onPointerCancel), A.removeEventListener("wheel", this.onMouseWheel), A.removeEventListener("keydown", this.onKeyDown), A.removeEventListener("pointermove", this.onPointerMove), A.removeEventListener("pointerup", this.onPointerUp);
|
|
1713
|
+
}
|
|
1714
|
+
getAutoRotationAngle() {
|
|
1715
|
+
return 2 * Math.PI / 60 / 60 * this.autoRotateSpeed;
|
|
1716
|
+
}
|
|
1717
|
+
getZoomScale() {
|
|
1718
|
+
return Math.pow(0.95, this.zoomSpeed);
|
|
1719
|
+
}
|
|
1720
|
+
rotateLeft(A) {
|
|
1721
|
+
this.sphericalDelta.theta -= A;
|
|
1722
|
+
}
|
|
1723
|
+
rotateUp(A) {
|
|
1724
|
+
this.sphericalDelta.phi -= A;
|
|
1725
|
+
}
|
|
1726
|
+
pan(A, i, t) {
|
|
1727
|
+
const o = new w();
|
|
1728
|
+
if ("isPerspectiveCamera" in this.object) {
|
|
1729
|
+
const s = this.object.position;
|
|
1730
|
+
o.copy(s).sub(this.target);
|
|
1731
|
+
let B = o.length();
|
|
1732
|
+
B *= Math.tan(
|
|
1733
|
+
this.object.fov / 2 * Math.PI / 180
|
|
1734
|
+
), this.panLeft(
|
|
1735
|
+
2 * A * B / t.clientHeight,
|
|
1736
|
+
this.object.matrix
|
|
1737
|
+
), this.panUp(
|
|
1738
|
+
2 * i * B / t.clientHeight,
|
|
1739
|
+
this.object.matrix
|
|
1740
|
+
);
|
|
1741
|
+
} else "isOrthographicCamera" in this.object ? (this.panLeft(
|
|
1742
|
+
A * (this.object.right - this.object.left) / this.object.zoom / t.clientWidth,
|
|
1743
|
+
this.object.matrix
|
|
1744
|
+
), this.panUp(
|
|
1745
|
+
i * (this.object.top - this.object.bottom) / this.object.zoom / t.clientHeight,
|
|
1746
|
+
this.object.matrix
|
|
1747
|
+
)) : (console.warn(
|
|
1748
|
+
"WARNING: OrbitController encountered an unknown camera type - pan disabled."
|
|
1749
|
+
), this.enablePan = !1);
|
|
1750
|
+
}
|
|
1751
|
+
dollyIn(A) {
|
|
1752
|
+
"isPerspectiveCamera" in this.object || "isOrthographicCamera" in this.object ? this.scale *= A : (console.warn(
|
|
1753
|
+
"WARNING: OrbitController encountered an unknown camera type - dolly/zoom disabled."
|
|
1754
|
+
), this.enableZoom = !1);
|
|
1755
|
+
}
|
|
1756
|
+
dollyOut(A) {
|
|
1757
|
+
"isPerspectiveCamera" in this.object || "isOrthographicCamera" in this.object ? this.scale /= A : (console.warn(
|
|
1758
|
+
"WARNING: OrbitController encountered an unknown camera type - dolly/zoom disabled."
|
|
1759
|
+
), this.enableZoom = !1);
|
|
1760
|
+
}
|
|
1761
|
+
// event callbacks
|
|
1762
|
+
handleMouseDownRotate(A) {
|
|
1763
|
+
this.rotateStart.set(A.clientX, A.clientY);
|
|
1764
|
+
}
|
|
1765
|
+
handleMouseDownDolly(A) {
|
|
1766
|
+
this.dollyStart.set(A.clientX, A.clientY);
|
|
1767
|
+
}
|
|
1768
|
+
handleMouseDownPan(A) {
|
|
1769
|
+
this.panStart.set(A.clientX, A.clientY);
|
|
1770
|
+
}
|
|
1771
|
+
handleMouseMoveRotate(A) {
|
|
1772
|
+
this.rotateEnd.set(A.clientX, A.clientY), this.rotateDelta.subVectors(this.rotateEnd, this.rotateStart).multiplyScalar(this.rotateSpeed);
|
|
1773
|
+
const i = A.currentTarget;
|
|
1774
|
+
this.rotateLeft(
|
|
1775
|
+
2 * Math.PI * this.rotateDelta.x / i.clientHeight
|
|
1776
|
+
), this.rotateUp(
|
|
1777
|
+
2 * Math.PI * this.rotateDelta.y / i.clientHeight
|
|
1778
|
+
), this.rotateStart.copy(this.rotateEnd), this.update();
|
|
1779
|
+
}
|
|
1780
|
+
handleMouseMoveDolly(A) {
|
|
1781
|
+
this.dollyEnd.set(A.clientX, A.clientY), this.dollyDelta.subVectors(this.dollyEnd, this.dollyStart), this.dollyDelta.y > 0 ? this.dollyIn(this.getZoomScale()) : this.dollyDelta.y < 0 && this.dollyOut(this.getZoomScale()), this.dollyStart.copy(this.dollyEnd), this.update();
|
|
1782
|
+
}
|
|
1783
|
+
handleMouseMovePan(A) {
|
|
1784
|
+
const i = A.currentTarget;
|
|
1785
|
+
this.panEnd.set(A.clientX, A.clientY), this.panDelta.subVectors(this.panEnd, this.panStart).multiplyScalar(this.panSpeed), this.pan(this.panDelta.x, this.panDelta.y, i), this.panStart.copy(this.panEnd), this.update();
|
|
1786
|
+
}
|
|
1787
|
+
handleMouseWheel(A) {
|
|
1788
|
+
A.deltaY < 0 ? this.dollyIn(this.getZoomScale()) : A.deltaY > 0 && this.dollyOut(this.getZoomScale()), this.update();
|
|
1789
|
+
}
|
|
1790
|
+
handleKeyDown(A) {
|
|
1791
|
+
let i = !1;
|
|
1792
|
+
const t = A.currentTarget;
|
|
1793
|
+
switch (A.code) {
|
|
1794
|
+
case this.keys.UP:
|
|
1795
|
+
this.pan(0, this.keyPanSpeed, t), i = !0;
|
|
1796
|
+
break;
|
|
1797
|
+
case this.keys.BOTTOM:
|
|
1798
|
+
this.pan(0, -this.keyPanSpeed, t), i = !0;
|
|
1799
|
+
break;
|
|
1800
|
+
case this.keys.LEFT:
|
|
1801
|
+
this.pan(this.keyPanSpeed, 0, t), i = !0;
|
|
1802
|
+
break;
|
|
1803
|
+
case this.keys.RIGHT:
|
|
1804
|
+
this.pan(-this.keyPanSpeed, 0, t), i = !0;
|
|
1805
|
+
break;
|
|
1806
|
+
}
|
|
1807
|
+
i && (A.preventDefault(), this.update());
|
|
1808
|
+
}
|
|
1809
|
+
handleTouchStartRotate(A) {
|
|
1810
|
+
if (this.pointers.length === 1)
|
|
1811
|
+
this.rotateStart.set(A.pageX, A.pageY);
|
|
1812
|
+
else {
|
|
1813
|
+
const i = this.getSecondPointer(A), t = 0.5 * (A.pageX + i.pageX), o = 0.5 * (A.pageY + i.pageY);
|
|
1814
|
+
this.rotateStart.set(t, o);
|
|
1815
|
+
}
|
|
1816
|
+
}
|
|
1817
|
+
handleTouchStartPan(A) {
|
|
1818
|
+
if (this.pointers.length === 1)
|
|
1819
|
+
this.panStart.set(A.pageX, A.pageY);
|
|
1820
|
+
else {
|
|
1821
|
+
const i = this.getSecondPointer(A), t = 0.5 * (A.pageX + i.pageX), o = 0.5 * (A.pageY + i.pageY);
|
|
1822
|
+
this.panStart.set(t, o);
|
|
1823
|
+
}
|
|
1824
|
+
}
|
|
1825
|
+
handleTouchStartDolly(A) {
|
|
1826
|
+
const i = this.getSecondPointer(A), t = A.pageX - i.pageX, o = A.pageY - i.pageY, s = Math.sqrt(t * t + o * o);
|
|
1827
|
+
this.dollyStart.set(0, s);
|
|
1828
|
+
}
|
|
1829
|
+
handleTouchStartDollyPan(A) {
|
|
1830
|
+
this.enableZoom && this.handleTouchStartDolly(A), this.enablePan && this.handleTouchStartPan(A);
|
|
1831
|
+
}
|
|
1832
|
+
handleTouchStartDollyRotate(A) {
|
|
1833
|
+
this.enableZoom && this.handleTouchStartDolly(A), this.enableRotate && this.handleTouchStartRotate(A);
|
|
1834
|
+
}
|
|
1835
|
+
handleTouchMoveRotate(A) {
|
|
1836
|
+
if (this.pointers.length === 1)
|
|
1837
|
+
this.rotateEnd.set(A.pageX, A.pageY);
|
|
1838
|
+
else {
|
|
1839
|
+
const t = this.getSecondPointer(A), o = 0.5 * (A.pageX + t.pageX), s = 0.5 * (A.pageY + t.pageY);
|
|
1840
|
+
this.rotateEnd.set(o, s);
|
|
1841
|
+
}
|
|
1842
|
+
const i = A.currentTarget;
|
|
1843
|
+
this.rotateDelta.subVectors(this.rotateEnd, this.rotateStart).multiplyScalar(this.rotateSpeed), this.rotateLeft(
|
|
1844
|
+
2 * Math.PI * this.rotateDelta.x / i.clientHeight
|
|
1845
|
+
), this.rotateUp(
|
|
1846
|
+
2 * Math.PI * this.rotateDelta.y / i.clientHeight
|
|
1847
|
+
), this.rotateStart.copy(this.rotateEnd);
|
|
1848
|
+
}
|
|
1849
|
+
handleTouchMovePan(A) {
|
|
1850
|
+
if (this.pointers.length === 1)
|
|
1851
|
+
this.panEnd.set(A.pageX, A.pageY);
|
|
1852
|
+
else {
|
|
1853
|
+
const t = this.getSecondPointer(A), o = 0.5 * (A.pageX + t.pageX), s = 0.5 * (A.pageY + t.pageY);
|
|
1854
|
+
this.panEnd.set(o, s);
|
|
1855
|
+
}
|
|
1856
|
+
const i = A.currentTarget;
|
|
1857
|
+
this.panDelta.subVectors(this.panEnd, this.panStart).multiplyScalar(this.panSpeed), this.pan(this.panDelta.x, this.panDelta.y, i), this.panStart.copy(this.panEnd);
|
|
1858
|
+
}
|
|
1859
|
+
handleTouchMoveDolly(A) {
|
|
1860
|
+
const i = this.getSecondPointer(A), t = A.pageX - i.pageX, o = A.pageY - i.pageY, s = Math.sqrt(t * t + o * o);
|
|
1861
|
+
this.dollyEnd.set(0, s), this.dollyDelta.set(
|
|
1862
|
+
0,
|
|
1863
|
+
Math.pow(this.dollyEnd.y / this.dollyStart.y, this.zoomSpeed)
|
|
1864
|
+
), this.dollyOut(this.dollyDelta.y), this.dollyStart.copy(this.dollyEnd);
|
|
1865
|
+
}
|
|
1866
|
+
handleTouchMoveDollyPan(A) {
|
|
1867
|
+
this.enableZoom && this.handleTouchMoveDolly(A), this.enablePan && this.handleTouchMovePan(A);
|
|
1868
|
+
}
|
|
1869
|
+
handleTouchMoveDollyRotate(A) {
|
|
1870
|
+
this.enableZoom && this.handleTouchMoveDolly(A), this.enableRotate && this.handleTouchMoveRotate(A);
|
|
1871
|
+
}
|
|
1872
|
+
addPointer(A) {
|
|
1873
|
+
this.pointers.push(A);
|
|
1874
|
+
}
|
|
1875
|
+
removePointer(A) {
|
|
1876
|
+
delete this.pointerPositions[A.pointerId];
|
|
1877
|
+
for (let i = 0; i < this.pointers.length; i++)
|
|
1878
|
+
if (this.pointers[i].pointerId == A.pointerId) {
|
|
1879
|
+
this.pointers.splice(i, 1);
|
|
1880
|
+
return;
|
|
1881
|
+
}
|
|
1882
|
+
}
|
|
1883
|
+
trackPointer(A) {
|
|
1884
|
+
let i = this.pointerPositions[A.pointerId];
|
|
1885
|
+
i === void 0 && (i = new u(), this.pointerPositions[A.pointerId] = i), i.set(A.pageX, A.pageY);
|
|
1886
|
+
}
|
|
1887
|
+
getSecondPointer(A) {
|
|
1888
|
+
return this.pointers[0].pointerId === A.pointerId ? this.pointers[1] : this.pointers[0];
|
|
1889
|
+
}
|
|
1890
|
+
isTrackingPointer(A) {
|
|
1891
|
+
return this.pointers.some(
|
|
1892
|
+
(i) => i.pointerId === A.pointerId
|
|
1893
|
+
);
|
|
1894
|
+
}
|
|
1895
|
+
};
|
|
1896
|
+
e(E, "DEFAULT_ZOOM_FACTOR", 1);
|
|
1897
|
+
let IA = E;
|
|
1898
|
+
const Di = `
|
|
1899
|
+
@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@
|
|
1900
|
+
@@@@+-:::::::---------------------==------------------------------=#@@@@
|
|
1901
|
+
@@%=::::.......::---------------------------------------------------------+@@
|
|
1902
|
+
@@+:::...........::-----------------------------------------------------------#@@
|
|
1903
|
+
@@=:::.........::::::-------------------------------------------------------------%@
|
|
1904
|
+
@%:::.......:::::::-----------------------------------------------------------------#@
|
|
1905
|
+
@*:::.....:::::-----------------------------------------------------------------------*@
|
|
1906
|
+
@%::::::.::::---------------------------------------------------------------------------@@
|
|
1907
|
+
@@-:::::::::-----------------------------------------------------------------------------=@
|
|
1908
|
+
@%::::::::--------------------------------------------------------------------------------%@
|
|
1909
|
+
@+::::::::--------------------------------=@@@@@%-----------------------------------------%@
|
|
1910
|
+
@=:::::::--------------------------------*@@ @@+---------------------------------------#@
|
|
1911
|
+
@+:::::::-------------------------------*@ @*--------------------------------------%@
|
|
1912
|
+
@#::::::::-----------------------------=@@ @@=-------------------------------------%@
|
|
1913
|
+
@@-::::::::----------------------------@@ @@------------------------------------=@
|
|
1914
|
+
@%:::::::::--------------------------*@ @*-----------------------------------@@
|
|
1915
|
+
@*:::::::::-------------------------@@ @@----------------------------------%@
|
|
1916
|
+
@#::::::::::----------------------%@ @%--------------------------------%@
|
|
1917
|
+
@#:::::::::::-------------------=@@ @@=------------------------------%@
|
|
1918
|
+
@@-::::::::::::----------------%@ @%----------------------------=@@
|
|
1919
|
+
@@#::::::::::::::------------*@ @*--------------------------#@@
|
|
1920
|
+
@@+::::::::::::::::--------@@ @@------------------------+@@
|
|
1921
|
+
@@*:::::::::::::::::----@@ @@---------------------+@@
|
|
1922
|
+
@@@-:::::::::::::::--#@ @#-----------------=%@@
|
|
1923
|
+
@@%-::::::::::::-%@ @%-------------=%@@
|
|
1924
|
+
@@@@+:::::::#@@ @@*-------*@@@@
|
|
1925
|
+
@@@@@@@ @@@@@@
|
|
1926
|
+
`;
|
|
1927
|
+
window.DIVE = {
|
|
1928
|
+
instances: [],
|
|
1929
|
+
get instance() {
|
|
1930
|
+
return window.DIVE.instances[0];
|
|
1931
|
+
}
|
|
1932
|
+
};
|
|
1933
|
+
const x = {
|
|
1934
|
+
autoStart: !0,
|
|
1935
|
+
displayAxes: !1,
|
|
1936
|
+
...T,
|
|
1937
|
+
...gi,
|
|
1938
|
+
...mA,
|
|
1939
|
+
...ui
|
|
1940
|
+
};
|
|
1941
|
+
class mi {
|
|
1942
|
+
constructor(g) {
|
|
1943
|
+
// descriptive members
|
|
1944
|
+
e(this, "_instanceId", eA.generateUUID());
|
|
1945
|
+
e(this, "_settings");
|
|
1946
|
+
e(this, "_views");
|
|
1947
|
+
e(this, "_mainView");
|
|
1948
|
+
e(this, "_scene");
|
|
1949
|
+
e(this, "_clock");
|
|
1950
|
+
e(this, "_orientationDisplay", null);
|
|
1951
|
+
this._settings = {
|
|
1952
|
+
...x,
|
|
1953
|
+
...g ?? {}
|
|
1954
|
+
}, this._clock = new ti(), this._scene = new Gi({
|
|
1955
|
+
backgroundColor: (g == null ? void 0 : g.backgroundColor) ?? x.backgroundColor,
|
|
1956
|
+
displayGrid: (g == null ? void 0 : g.displayGrid) ?? x.displayGrid,
|
|
1957
|
+
displayFloor: (g == null ? void 0 : g.displayFloor) ?? x.displayFloor
|
|
1958
|
+
});
|
|
1959
|
+
const A = new zA(
|
|
1960
|
+
this._scene,
|
|
1961
|
+
new PA(),
|
|
1962
|
+
this._settings
|
|
1963
|
+
);
|
|
1964
|
+
this._clock.addTicker(A), this._views = [A], this._mainView = A, this._settings.displayAxes && import("../plugins/orientationdisplay/index.mjs").then(
|
|
1965
|
+
({ OrientationDisplay: i }) => {
|
|
1966
|
+
this._orientationDisplay = new i(
|
|
1967
|
+
this.mainView.renderer,
|
|
1968
|
+
this.scene,
|
|
1969
|
+
this.mainView.camera
|
|
1970
|
+
), this._clock.addTicker(this._orientationDisplay);
|
|
1971
|
+
}
|
|
1972
|
+
), this._settings.autoStart && this.start(), console.log("DIVE 2.2.18 initialized successfully!"), console.log(Di), window.DIVE.instances.push(this);
|
|
1973
|
+
}
|
|
1974
|
+
/**
|
|
1975
|
+
* @deprecated This static method will be removed in a future version. Please use `import { QuickView, QuickViewSettings, QuickViewDefaultSettings } from '@shopware-ag/dive/quickview'` instead.
|
|
1976
|
+
*/
|
|
1977
|
+
static async QuickView(g, A) {
|
|
1978
|
+
return import("../plugins/quickview/index.mjs").then(
|
|
1979
|
+
({ QuickView: i }) => i(g, A)
|
|
1980
|
+
);
|
|
1981
|
+
}
|
|
1982
|
+
/**
|
|
1983
|
+
* @deprecated This property will be removed in a future version. Please use properties on the DIVE instance and mainView directly.
|
|
1984
|
+
*/
|
|
1985
|
+
get engine() {
|
|
1986
|
+
return {
|
|
1987
|
+
scene: this.scene,
|
|
1988
|
+
camera: this.mainView.camera,
|
|
1989
|
+
renderer: this.mainView.renderer,
|
|
1990
|
+
setCanvas: (g) => {
|
|
1991
|
+
this.mainView.setCanvas(g);
|
|
1992
|
+
},
|
|
1993
|
+
clock: this.clock,
|
|
1994
|
+
start: () => {
|
|
1995
|
+
this.start();
|
|
1996
|
+
},
|
|
1997
|
+
stop: () => {
|
|
1998
|
+
this.stop();
|
|
1999
|
+
},
|
|
2000
|
+
dispose: () => {
|
|
2001
|
+
this.dispose();
|
|
2002
|
+
}
|
|
2003
|
+
};
|
|
2004
|
+
}
|
|
2005
|
+
get views() {
|
|
2006
|
+
return this._views;
|
|
2007
|
+
}
|
|
2008
|
+
get mainView() {
|
|
2009
|
+
return this._mainView;
|
|
2010
|
+
}
|
|
2011
|
+
get canvas() {
|
|
2012
|
+
return this.mainView.canvas;
|
|
2013
|
+
}
|
|
2014
|
+
get scene() {
|
|
2015
|
+
return this._scene;
|
|
2016
|
+
}
|
|
2017
|
+
get clock() {
|
|
2018
|
+
return this._clock;
|
|
2019
|
+
}
|
|
2020
|
+
start() {
|
|
2021
|
+
this._clock.start();
|
|
2022
|
+
}
|
|
2023
|
+
stop() {
|
|
2024
|
+
this._clock.stop();
|
|
2025
|
+
}
|
|
2026
|
+
async dispose() {
|
|
2027
|
+
return new Promise((g) => {
|
|
2028
|
+
this._views.forEach((A) => {
|
|
2029
|
+
A.dispose();
|
|
2030
|
+
}), this._views = [], this._orientationDisplay && (this._clock.removeTicker(this._orientationDisplay), this._orientationDisplay.dispose()), this.scene.dispose(), window.DIVE.instances = window.DIVE.instances.filter(
|
|
2031
|
+
(A) => A._instanceId !== this._instanceId
|
|
2032
|
+
), g();
|
|
2033
|
+
});
|
|
2034
|
+
}
|
|
2035
|
+
/**
|
|
2036
|
+
* @deprecated This method will be removed in a future version. To create a new view, use `QuickView` instead.
|
|
2037
|
+
*/
|
|
2038
|
+
createView(g) {
|
|
2039
|
+
const A = new zA(
|
|
2040
|
+
this._scene,
|
|
2041
|
+
g ?? new PA(),
|
|
2042
|
+
{
|
|
2043
|
+
...this._settings,
|
|
2044
|
+
canvas: void 0
|
|
2045
|
+
// instantiate new canvas for created view
|
|
2046
|
+
}
|
|
2047
|
+
);
|
|
2048
|
+
return this._views.push(A), this._clock.addTicker(A), this._views.length === 1 && (this._mainView = A), A;
|
|
2049
|
+
}
|
|
2050
|
+
/**
|
|
2051
|
+
* @deprecated This method will be removed in a future version.
|
|
2052
|
+
*/
|
|
2053
|
+
disposeView(g) {
|
|
2054
|
+
this._views = this._views.filter((A) => A !== g), this._clock.removeTicker(g), this._mainView === g && (this._mainView = this._views[0]), g.dispose();
|
|
2055
|
+
}
|
|
2056
|
+
}
|
|
2057
|
+
const qi = mi, pi = {
|
|
2058
|
+
glb: {
|
|
2059
|
+
key: "glb",
|
|
2060
|
+
extension: "glb"
|
|
2061
|
+
},
|
|
2062
|
+
gltf: {
|
|
2063
|
+
key: "gltf",
|
|
2064
|
+
extension: "gltf"
|
|
2065
|
+
},
|
|
2066
|
+
usdz: {
|
|
2067
|
+
key: "usdz",
|
|
2068
|
+
extension: "usdz"
|
|
2069
|
+
}
|
|
2070
|
+
}, di = Object.values(pi).map(
|
|
2071
|
+
(h) => h.extension
|
|
2072
|
+
);
|
|
2073
|
+
export {
|
|
2074
|
+
AA as B,
|
|
2075
|
+
x as D,
|
|
2076
|
+
pi as F,
|
|
2077
|
+
Ii as G,
|
|
2078
|
+
ui as O,
|
|
2079
|
+
di as S,
|
|
2080
|
+
IA as a,
|
|
2081
|
+
mi as b,
|
|
2082
|
+
lA as c,
|
|
2083
|
+
qi as d,
|
|
2084
|
+
ti as e,
|
|
2085
|
+
mA as f,
|
|
2086
|
+
pA as g,
|
|
2087
|
+
Hi as h,
|
|
2088
|
+
si as i,
|
|
2089
|
+
ni as j,
|
|
2090
|
+
fi as k,
|
|
2091
|
+
T as l,
|
|
2092
|
+
Gi as m,
|
|
2093
|
+
zA as n,
|
|
2094
|
+
Ci as o,
|
|
2095
|
+
Pi as p,
|
|
2096
|
+
wi as q,
|
|
2097
|
+
ci as r,
|
|
2098
|
+
hi as s,
|
|
2099
|
+
ai as t,
|
|
2100
|
+
ri as u,
|
|
2101
|
+
tA as v,
|
|
2102
|
+
Bi as w,
|
|
2103
|
+
zi as x,
|
|
2104
|
+
KA as y
|
|
2105
|
+
};
|